Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

App Submission: Ente Photos #1922

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
132 changes: 132 additions & 0 deletions ente-photos/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,132 @@
# Ente Photos 📸
Safe Home for Your Photos

## Steps to Set Up Ente Photos

### 1. Install Ente Photos 🛠️
First, install the Ente Photos application on your Umbrel device. Navigate to the Umbrel App Store and select Ente Photos to complete the installation.

*Note: After installation, open the following URL to ensure the service is running and responding correctly. You should receive a "pong" response. Which shows all services are up and running.*

**URL**: `http://172.17.0.2:8080/ping`

**Expected Response**:
```json
{
"id": "b0674cd5f37cebda0f446db7ce1e87a3e6d8b9fc", # id can be anything
"message": "pong"
}
```

### 2. Update Configuration 🖥️
Next, update the IP/Host and other configurations in the `/home/umbrel/umbrel/app-data/ente-photos/exports.sh` file. Make sure the details are accurate for your setup.

Example configuration in `/home/umbrel/umbrel/app-data/ente-photos/exports.sh`:
```bash
# Replace with your Umbrel's IP or host name
export APP_HOST="umbrel.local"

# Default DB Configs
export DB_HOST="postgres"
export DB_PORT="5432"
export DB_NAME="ente_db"
export DB_USER="pguser"
export DB_PASSWORD="pgpass"

# Default MinIO Configs
export MINIO_API_PORT="3200"
export MINIO_CONSOLE_PORT="3201"
export MINIO_ROOT_USER="test"
export MINIO_ROOT_PASSWORD="testtest"
export MINIO_REGION="eu-central-2"

# SMTP Configs to send OTP emails
export SMTP_HOST="smtp.gmail.com"
export SMTP_PORT="465"
export SMTP_USERNAME="[email protected]"
export SMTP_PASSWORD="changeme"
# The email address from which to send the email.
export SMTP_EMAIL="[email protected]"

# Uncomment and set these to your email ID or domain to avoid checking server logs for OTPs.
# export INTERNAL_HARDCODED_OTT_EMAILS="[email protected],123456"

# Hardcode the verification code to 123456 for email addresses ending with @example.org
export INTERNAL_HARDCODED_OTT_LOCAL_DOMAIN_SUFFIX="@example.com"
export INTERNAL_HARDCODED_OTT_LOCAL_DOMAIN_VALUE="123456"

# List of user IDs that can use the admin API endpoints.
# e.g. export INTERNAL_ADMINS="1580559962386439,1580559962386440"
export INTERNAL_ADMINS=""
```

### 3. Create the First Account and Obtain the User ID 🔑

Download and install the Ente Desktop or Mobile [App](https://ente.io). To configure the connection endpoint, tap the onboarding screen 7 times to reveal a configuration page. Detailed instructions can be found in the Ente documentation [here](https://help.ente.io/self-hosting/guides/custom-server/).

Once configured, create your first account in the app. This will generate a user ID for the newly created account. Next, open the UmbrelOS [Terminal](http://umbrel.local/settings/terminal/umbrelos) and run the CLI, providing the required information as prompted.

**Command**:
```shell
# Follow the prompts to log into the account created by the Ente Photos Desktop or Mobile app.
sudo docker exec -it ente-photos_cli_1 ./ente-cli account add
```

**Output**:
```shell
[sudo] password for umbrel:
Enter app type (default: photos):
Use default app type: photos
Enter export directory: /var/tmp
Enter email address: [email protected]
Enter password:
Please wait authenticating...
Account added successfully
run `ente export` to initiate export of your account data
```

Retrieve the user ID of the newly created account:

**Command**:
```shell
sudo docker exec -it ente-photos_cli_1 ./ente-cli account list
```

**Output**:
```shell
Configured accounts: 1
====================================
Email: [email protected]
ID: 1580559962386438
App: photos
ExportDir: /var/tmp
====================================
```

### 4. Make the User an Admin 👨‍💼
Make the user an admin by updating the `INTERNAL_ADMINS` variable in the `/home/umbrel/umbrel/app-data/ente-photos/exports.sh` file.

Example:
```bash
...
# List of user IDs that can use the admin API endpoints.
# e.g. export INTERNAL_ADMINS="1580559962386439,1580559962386440"
export INTERNAL_ADMINS="1580559962386438"
...
```

Run `/home/umbrel/umbrel/app-data/ente-photos/update_admins.sh` to create a `museum.yaml` with all admin IDs.

### 5. Restart Ente Photos 🔄
Restart the Ente Photos application from the UmbrelOS dashboard.

### 6. Update Storage Provision 💾
Update the storage provision to ensure you have allocated sufficient storage for your Ente Photos application.

Example:
```bash
sudo docker exec -it ente-photos_cli_1 ./ente-cli admin update-subscription -a [email protected] -u [email protected] --no-limit true
```

### Final Steps 🎉
By following these steps, you should have successfully set up Ente Photos on your Umbrel device. If you encounter any issues, refer to the [official self-hosting documentation](https://help.ente.io/self-hosting) or reach out to support.
Empty file added ente-photos/data/.gitkeep
Empty file.
152 changes: 152 additions & 0 deletions ente-photos/docker-compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,152 @@
version: "3.7"

Check notice on line 1 in ente-photos/docker-compose.yml

View workflow job for this annotation

GitHub Actions / Lint apps

Potentially using unsafe user in service "museum"

The default container user "root" can lead to security vulnerabilities. If you are using the root user, please try to specify a different user (e.g. "1000:1000") in the compose file or try to set the UID/PUID and GID/PGID environment variables to 1000.

x-environment: &env
# Umbrel's IP or host name
APP_HOST: "${APP_HOST}"

# DB Configs
ENTE_DB_HOST: "${DB_HOST}"
ENTE_DB_PORT: "${DB_PORT}"
ENTE_DB_NAME: "${DB_NAME}"
ENTE_DB_USER: "${DB_USER}"
ENTE_DB_PASSWORD: "${DB_PASSWORD}"

# MinIO Configs
MINIO_API_PORT: "${MINIO_API_PORT}"
MINIO_CONSOLE_PORT: "${MINIO_CONSOLE_PORT}"
MINIO_URL: &minio_url "${APP_HOST}:${MINIO_API_PORT}"
MINIO_ROOT_USER: &minio_user "${MINIO_ROOT_USER}"
MINIO_ROOT_PASSWORD: &minio_password "${MINIO_ROOT_PASSWORD}"
MINIO_REGION: &minio_region "${MINIO_REGION}"

# SMTP Configs to send OTP emails
ENTE_SMTP_HOST: "${SMTP_HOST}"
ENTE_SMTP_PORT: "${SMTP_PORT}"
ENTE_SMTP_USERNAME: "${SMTP_USERNAME}"
ENTE_SMTP_PASSWORD: "${SMTP_PASSWORD}"
# The email address from which to send the email. Set this to an email
# address whose credentials you're providing.
ENTE_SMTP_EMAIL: "${SMTP_EMAIL}"

# Set these to your email ID or domain so that you don't
# need to peek into the server logs for obtaining the OTP when trying to log
# into an instance you're developing on.
# export INTERNAL_HARDCODED_OTT_EMAILS="[email protected],123456"
ENTE_INTERNAL_HARDCODED-OTT_EMAILS: "${INTERNAL_HARDCODED_OTT_EMAILS}"
# When running in a local environment, hardcode the verification code to
# 123456 for email addresses ending with @example.org
ENTE_INTERNAL_HARDCODED-OTT_LOCAL-DOMAIN-SUFFIX: "${INTERNAL_HARDCODED_OTT_LOCAL_DOMAIN_SUFFIX}"
ENTE_INTERNAL_HARDCODED-OTT_LOCAL-DOMAIN-VALUE: "${INTERNAL_HARDCODED_OTT_LOCAL_DOMAIN_VALUE}"

services:
app_proxy:
depends_on:
- museum
environment:
APP_HOST: ente-photos_museum_1
APP_PORT: 8080
PROXY_AUTH_ADD: "false"

museum:
# https://github.com/ente-io/ente/pkgs/container/server
image: ghcr.io/ente-io/server:b0674cd5f37cebda0f446db7ce1e87a3e6d8b9fc@sha256:d44049492bb62a3c0c64126ade1b2c0294683422e5a1b7d656d128186919b5e9

Check failure on line 52 in ente-photos/docker-compose.yml

View workflow job for this annotation

GitHub Actions / Lint apps

Invalid image name "ghcr.io/ente-io/server:b0674cd5f37cebda0f446db7ce1e87a3e6d8b9fc@sha256:d44049492bb62a3c0c64126ade1b2c0294683422e5a1b7d656d128186919b5e9"

Error: HTTP 404 for ghcr.io/ente-io/server:b0674cd5f37cebda0f446db7ce1e87a3e6d8b9fc@sha256:d44049492bb62a3c0c64126ade1b2c0294683422e5a1b7d656d128186919b5e9: <!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>404 : Docker</title> <meta name="viewport" content="width=device-width, initial-scale=1"> <style> * { line-height: 1.2; margin: 0; } html { color: #71859d; display: table; height: 100%; text-align: center; width: 100%; } body { background: #fff; display: table-cell; font-family: "HelveticaNeue-Light", "Helvetica Neue Light", "Helvetica Neue", Helvetica, Arial, "Lucida Grande", sans-serif; font-weight: 300; margin: 2em auto; vertical-align: middle; } a { color: #22b8eb; text-decoration: none; } @media only screen and (max-width: 280px) { body, p { width: 95%; } } #message { font-size: 21px; text-align: center; animation: fadein 2s; -moz-animation: fadein 2s; /* Firefox */ -webkit-animation: fadein 2s; /* Safari and Chrome */ -o-animation: fadein 2s; /* Opera */ } @Keyframes fadein { from { opacity: 0; } to { opacity: 1; } } @-moz-keyframes fadein { /* Firefox */ from { opacity: 0; } to { opacity: 1; } } @-webkit-keyframes fadein { /* Safari and Chrome */ from { opacity: 0; } to { opacity: 1; } } @-o-keyframes fadein { /* Opera */ from { opacity: 0; } to { opacity: 1; } } </style> </head> <body> <div id="message"> <img src=" data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAkYAAAJGCAYAAAC+3UpsAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMDY3IDc5LjE1Nzc0NywgMjAxNS8wMy8zMC0yMzo0MDo0MiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6Nzg1NjVCQzREMzZFMTFFNTlCRTg4MzY3QzAxNzVDRUUiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6Nzg1NjVCQzVEMzZFMTFFNTlCRTg4MzY3QzAxNzVDRUUiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo3ODU2NUJDMkQzNkUxMUU1OUJFODgzNjdDMDE3NUNFRSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo3ODU2NUJDM0QzNkUxMUU1OUJFODgzNjdDMDE3NUNFRSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pn5rcOoAAFy2SURBVHja7N0HfBzlnf/xn8qutFpZcu8YjA3YxvQeSoAECAGOS4OE9F4vyT/ln7vc5VLvcrnk7tKTCyl3/yRcEtI4TAuhBEjoxjQ33HGXm2StVta2/+83O2OvVitpV9o6+3m/eBhZ2jLzzOw8333mmZkGAYBR9ESijTqZ5pbJWiZmlElZ/w5oadfSpiWY8btwxkt25vnW3Rk/R7TEtBzQMqClT0tvxu+8sj/r3/u0dFnpCIeSrE0AI2mgCoC6DzwztczTcpQ7na1llpap7nS6+3NjjS+uhaI9WnZr2eH+bNPtWrZoedGd7iRAAQQjAP4NP1N0cpyWBVoWuuUYNwjN0dJMLQ0S17LNDUqbtKxzy3otL2ho2ksVAQQjANUdfprdwLNEy1Iti7Ucr+VYSR/KQvHY4bkNWtZqWaXlOS0rLTxpaIpTPQDBCEB5Q9BcnZyu5RQtJ7phaJGkx/Ggcmys02o3JD2v5WktyzUsbaVqAIIRgPEHIPt8nqDlVC2nuWHIfp5K7dQUG8u0wkKSlqfcn9doYEpRNQDBCMDwQcjGAp2t5Vy32M8cBvMnOxz3mJZH3PIYY5cAghFQ70HIDn9d6BYLQsdRK3XtBTckPWhFg9JqqgQgGAF+DUF2qruNBbpYy0VumUHNYAS7tDzglvu1rOQyAgDBCKjlMDRfJ5e55WWSvhAiMFZ24cp7tNxtRUPSRqoEIBgB1RyE7GrOl2aEoYXUCkponReStNyrQambKgEIRkClw5CNE7pGy1VaLtDSRK2gAhJaHtJym5ZbGZ8EEIyAcgUhu/eXjQ+62g1Ex1IrqEJ2AcpbtSzT8oAGpQGqBCAYAcUKQyGdvFLLq91A1EGtoJY2YTcg/VbL7RqSolQJQDACCg1DEyR9eOx1Wq6QwXeGB2pVRMtdWm7Wcpu
depends_on:
postgres:
condition: service_healthy
environment:
<<: *env
# S3 Configs
ENTE_S3_ARE_LOCAL_BUCKETS: "true"
ENTE_S3_B2-EU-CEN_KEY: *minio_user
ENTE_S3_B2-EU-CEN_SECRET: *minio_password
ENTE_S3_B2-EU-CEN_ENDPOINT: *minio_url
ENTE_S3_B2-EU-CEN_REGION: *minio_region
ENTE_S3_B2-EU-CEN_BUCKET: b2-eu-cen
ENTE_S3_WASABI-EU-CENTRAL-2-V3_KEY: *minio_user
ENTE_S3_WASABI-EU-CENTRAL-2-V3_SECRET: *minio_password
ENTE_S3_WASABI-EU-CENTRAL-2-V3_ENDPOINT: *minio_url
ENTE_S3_WASABI-EU-CENTRAL-2-V3_REGION: *minio_region
ENTE_S3_WASABI-EU-CENTRAL-2-V3_BUCKET: wasabi-eu-central-2-v3
ENTE_S3_WASABI-EU-CENTRAL-2-V3_COMPIANCE: "false"
ENTE_S3_SCW-EU-FR-V3_KEY: *minio_user
ENTE_S3_SCW-EU-FR-V3_SECRET: *minio_password
ENTE_S3_SCW-EU-FR-V3_ENDPOINT: *minio_url
ENTE_S3_SCW-EU-FR-V3_REGION: *minio_region
ENTE_S3_SCW-EU-FR-V3_BUCKET: scw-eu-fr-v3

# More Configs can be found below
# https://github.com/ente-io/ente/blob/main/server/configurations/local.yaml

volumes:

Check notice on line 80 in ente-photos/docker-compose.yml

View workflow job for this annotation

GitHub Actions / Lint apps

Mounted file/directory "/ente-photos/data/custom-logs" doesn't exist

The volume "${APP_DATA_DIR}/data/custom-logs:/var/logs" tries to mount the file/directory "/ente-photos/data/custom-logs", but it is not present. This can lead to permission errors!

Check notice on line 80 in ente-photos/docker-compose.yml

View workflow job for this annotation

GitHub Actions / Lint apps

Mounted file/directory "/ente-photos/museum.yaml" doesn't exist

The volume "${APP_DATA_DIR}/museum.yaml:/museum.yaml:ro" tries to mount the file/directory "/ente-photos/museum.yaml", but it is not present. This can lead to permission errors!
- ${APP_DATA_DIR}/data/custom-logs:/var/logs
- ${APP_DATA_DIR}/museum.yaml:/museum.yaml:ro
- ${APP_DATA_DIR}/data:/data:ro
restart: on-failure

cli:
image: vasuratanpara/ente-cli:v0.2.2@sha256:027abc99f012a910a28289034266ce4a63aeb1484c65d56b3743056f0795a3af
depends_on:
- museum
environment:
<<: *env
volumes:

Check notice on line 92 in ente-photos/docker-compose.yml

View workflow job for this annotation

GitHub Actions / Lint apps

Mounted file/directory "/ente-photos/data/cli-data" doesn't exist

The volume "${APP_DATA_DIR}/data/cli-data:/cli-data" tries to mount the file/directory "/ente-photos/data/cli-data", but it is not present. This can lead to permission errors!
- ${APP_DATA_DIR}/data/cli-data:/cli-data
command: ["sh", "-c", "echo -e 'endpoint:\\n api: http://${APP_HOST}:8080' > config.yaml && sleep infinity"]
restart: on-failure

socat:
image: alpine/socat:1.8.0.0@sha256:a6be4c0262b339c53ddad723cdd178a1a13271e1137c65e27f90a08c16de02b8
network_mode: service:museum
depends_on:
- museum
command: "TCP-LISTEN:${MINIO_API_PORT},fork,reuseaddr TCP:minio:${MINIO_API_PORT}"

postgres:
image: postgres:15@sha256:6cbdd616ae7ea61fa88873fdab529b3fd141b8a8311bfe4e6e62575f643f88fe
ports:

Check notice on line 106 in ente-photos/docker-compose.yml

View workflow job for this annotation

GitHub Actions / Lint apps

External port mapping "${DB_PORT}:${DB_PORT}"

Port mappings may be unnecessary for the app to function correctly. Docker's internal DNS resolves container names to IP addresses within the same network. External access to the web interface is handled by the app_proxy container. Port mappings are only needed if external access is required to a port not proxied by the app_proxy, or if an app needs to expose multiple ports for its functionality (e.g., DHCP, DNS, P2P, etc.).
- "${DB_PORT}:${DB_PORT}"
environment:
<<: *env
POSTGRES_USER: "${DB_USER}"
POSTGRES_PASSWORD: "${DB_PASSWORD}"
POSTGRES_DB: "${DB_NAME}"
# Wait for postgres to accept connections before starting museum.
healthcheck:
test:
["CMD", "pg_isready", "-q", "-d", "${DB_NAME}", "-U", "${DB_USER}"]
start_period: 40s
start_interval: 1s
volumes:

Check notice on line 119 in ente-photos/docker-compose.yml

View workflow job for this annotation

GitHub Actions / Lint apps

Mounted file/directory "/ente-photos/data/postgres-data" doesn't exist

The volume "${APP_DATA_DIR}/data/postgres-data:/var/lib/postgresql/data" tries to mount the file/directory "/ente-photos/data/postgres-data", but it is not present. This can lead to permission errors!
- ${APP_DATA_DIR}/data/postgres-data:/var/lib/postgresql/data
restart: on-failure

minio:
image: minio/minio:RELEASE.2024-11-07T00-52-20Z@sha256:ac591851803a79aee64bc37f66d77c56b0a4b6e12d9e5356380f4105510f2332
# Use different ports than the minio defaults to avoid conflicting
# with the ports used by Prometheus.
ports:

Check notice on line 127 in ente-photos/docker-compose.yml

View workflow job for this annotation

GitHub Actions / Lint apps

External port mapping "${MINIO_API_PORT}:${MINIO_API_PORT}"

Port mappings may be unnecessary for the app to function correctly. Docker's internal DNS resolves container names to IP addresses within the same network. External access to the web interface is handled by the app_proxy container. Port mappings are only needed if external access is required to a port not proxied by the app_proxy, or if an app needs to expose multiple ports for its functionality (e.g., DHCP, DNS, P2P, etc.).

Check notice on line 127 in ente-photos/docker-compose.yml

View workflow job for this annotation

GitHub Actions / Lint apps

External port mapping "${MINIO_CONSOLE_PORT}:${MINIO_CONSOLE_PORT}"

Port mappings may be unnecessary for the app to function correctly. Docker's internal DNS resolves container names to IP addresses within the same network. External access to the web interface is handled by the app_proxy container. Port mappings are only needed if external access is required to a port not proxied by the app_proxy, or if an app needs to expose multiple ports for its functionality (e.g., DHCP, DNS, P2P, etc.).
- "${MINIO_API_PORT}:${MINIO_API_PORT}" # API
- "${MINIO_CONSOLE_PORT}:${MINIO_CONSOLE_PORT}" # Console
environment:
<<: *env
command: server /data --address ":${MINIO_API_PORT}" --console-address ":${MINIO_CONSOLE_PORT}"
volumes:

Check notice on line 133 in ente-photos/docker-compose.yml

View workflow job for this annotation

GitHub Actions / Lint apps

Mounted file/directory "/ente-photos/data/minio-data" doesn't exist

The volume "${APP_DATA_DIR}/data/minio-data:/data" tries to mount the file/directory "/ente-photos/data/minio-data", but it is not present. This can lead to permission errors!
- ${APP_DATA_DIR}/data/minio-data:/data
restart: on-failure

minio-provision:
image: minio/mc:RELEASE.2024-11-17T19-35-25Z@sha256:8f94d208188dcd04bbaa51b54578bb43ea2a663626ca59889c07d4fb8ae9546d
depends_on:
- minio
environment:
<<: *env
volumes:

Check notice on line 143 in ente-photos/docker-compose.yml

View workflow job for this annotation

GitHub Actions / Lint apps

Mounted file/directory "/ente-photos/data/minio-data" doesn't exist

The volume "${APP_DATA_DIR}/data/minio-data:/data" tries to mount the file/directory "/ente-photos/data/minio-data", but it is not present. This can lead to permission errors!
- ${APP_DATA_DIR}/scripts/compose/minio-provision.sh:/provision.sh:ro
- ${APP_DATA_DIR}/data/minio-data:/data
entrypoint: sh /provision.sh

volumes:
cli-data:
custom-logs:
minio-data:
postgres-data:
41 changes: 41 additions & 0 deletions ente-photos/exports.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# Replace with your Umbrel's IP or host name
export APP_HOST="umbrel.local"

# Default DB Configs
export DB_HOST="postgres"
export DB_PORT="5432"
export DB_NAME="ente_db"
export DB_USER="pguser"
export DB_PASSWORD="pgpass"

# Default MinIO Configs
export MINIO_API_PORT="3200"
export MINIO_CONSOLE_PORT="3201"
export MINIO_ROOT_USER="test"
export MINIO_ROOT_PASSWORD="testtest"
export MINIO_REGION="eu-central-2"

# SMTP Configs to send OTP emails
# Notes:
# - Make sure they are correct since the program will stuck at signup if there is any issue
# - Gmail SMTP hast might fail due to timeout errors, check your latency via ping
# export SMTP_HOST="smtp.gmail.com"
# export SMTP_PORT="465"
# export SMTP_USERNAME="[email protected]"
# export SMTP_PASSWORD="changeme"
# The email address from which to send the email.
# export SMTP_EMAIL="[email protected]"

# Uncomment and set these to your email ID or domain to avoid checking server logs for OTPs.
# export INTERNAL_HARDCODED_OTT_EMAILS="[email protected],123456"

# Hardcode the verification code to 123456 for email addresses ending with @example.org
export INTERNAL_HARDCODED_OTT_LOCAL_DOMAIN_SUFFIX="@example.com"
export INTERNAL_HARDCODED_OTT_LOCAL_DOMAIN_VALUE="123456"

# List of user IDs that can use the admin API endpoints.
# e.g. export INTERNAL_ADMINS="1580559962386439,1580559962386440"
export INTERNAL_ADMINS=""

alias ente="sudo docker exec -it ente-photos_cli_1 ./ente-cli"
chmod +x /home/umbrel/umbrel/app-data/ente-photos/update_admins.sh
15 changes: 15 additions & 0 deletions ente-photos/scripts/compose/minio-provision.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
#!/bin/sh

# Script used to prepare the minio instance that runs as part of the development
# Docker compose cluster.
while ! mc config host add h0 http://minio:${MINIO_API_PORT} $MINIO_ROOT_USER $MINIO_ROOT_PASSWORD
do
echo "waiting for minio..."
sleep 0.5
done

cd /data

mc mb -p b2-eu-cen
mc mb -p wasabi-eu-central-2-v3
mc mb -p scw-eu-fr-v3
40 changes: 40 additions & 0 deletions ente-photos/umbrel-app.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
manifestVersion: 1
id: ente-photos
category: files
name: Ente Photos
version: "b0674cd"
tagline: Safe Home for your photos
description: >-
Ente Photos is an end-to-end encrypted alternative to Google Photos and Apple Photos.


You can use it to safely and securely store your photos on your personal cloud.


Full release notes are found at https://github.com/ente-io/ente/releases


Version: https://github.com/ente-io/ente/commit/b0674cd5f37cebda0f446db7ce1e87a3e6d8b9fc


⚠️ Important Notes:

- Setup Steps: https://github.com/getumbrel/umbrel-apps/tree/master/ente-photos/README.md

- Self Hosting Docs https://help.ente.io/self-hosting/guides/selfhost-cli

developer: Ente
website: https://ente.io
repo: https://github.com/ente-io/ente
support: https://ente.io/community
port: 8080
gallery:

Check warning on line 31 in ente-photos/umbrel-app.yml

View workflow job for this annotation

GitHub Actions / Lint apps

"icon" and "gallery" needs to be empty for new app submissions

The "icon" and "gallery" fields must be empty for new app submissions as it is being created by the Umbrel team.
- 1.jpg
- 2.jpg
- 3.jpg
releaseNotes: ""
path: ""
defaultUsername: ""
defaultPassword: ""
submitter: Starfreck
submission: https://github.com/getumbrel/umbrel-apps/pull/1922
Loading
Loading