Ente Photos on Portainer

I'm having some weird problems on Portainer after recently migrating from doing everything in the Docker CLI. First I couldn't figure out where some of my config files were (like museum.yaml) so I just set up new volumes and manually created the files. But now I keep getting CORS errors and my socat container won't consistently start unless I re-pull and redeploy the whole stack each time (and even if I do that, I still get CORS errors). I've already run the alias set and admin config set commands in the minio shell and they executed successfully. What am I doing wrong? Did I miss a step or something?
6 Replies
Ducky
Ducky5mo ago
Remember to use /solved to mark your thread as solved once your question is answered.
ggpepp
ggpepp5mo ago
@Ria in the documentation there is a troubleshooting guide for local minio. https://help.ente.io/self-hosting/troubleshooting/bucket-cors#for-self-hosted-minio-instance If this doesn't work for you, send over a copy of your docker compose.
Bucket CORS | Ente Help
Troubleshooting CORS issues with S3 Buckets
Ria
RiaOP5mo ago
that didn't seem to resolve the issue, so here we go compose.yaml (part 1)
services:
museum:
image: ghcr.io/ente-io/server
ports:
- 8080:8080 # API
restart: unless-stopped
depends_on:
postgres:
condition: service_healthy
volumes:
- /mnt/Media4/ente/museum.yaml:/museum.yaml:ro
- /mnt/Media4/ente/data:/data:ro

socat:
image: alpine/socat
restart: unless-stopped
network_mode: service:museum
depends_on: [museum]
command: "TCP-LISTEN:3200,fork,reuseaddr TCP:minio:3200"

web:
image: ghcr.io/ente-io/web
# Uncomment what you need to tweak.
ports:
- 3000:3000 # Photos web app
# - 3001:3001 # Accounts
- 3002:3002 # Public albums
# - 3003:3003 # Auth
# - 3004:3004 # Cast
environment:
ENTE_API_ORIGIN: http://ente.home
# ENTE_ALBUMS_ORIGIN: https://localhost:3002

postgres:
image: postgres:15
restart: unless-stopped
environment:
POSTGRES_USER: pguser
POSTGRES_PASSWORD: <pg_password>
POSTGRES_DB: ente_db
healthcheck:
test: pg_isready -q -d ente_db -U pguser
start_period: 40s
start_interval: 1s
volumes:
- postgres-data:/mnt/Media4/ente/postgres
services:
museum:
image: ghcr.io/ente-io/server
ports:
- 8080:8080 # API
restart: unless-stopped
depends_on:
postgres:
condition: service_healthy
volumes:
- /mnt/Media4/ente/museum.yaml:/museum.yaml:ro
- /mnt/Media4/ente/data:/data:ro

socat:
image: alpine/socat
restart: unless-stopped
network_mode: service:museum
depends_on: [museum]
command: "TCP-LISTEN:3200,fork,reuseaddr TCP:minio:3200"

web:
image: ghcr.io/ente-io/web
# Uncomment what you need to tweak.
ports:
- 3000:3000 # Photos web app
# - 3001:3001 # Accounts
- 3002:3002 # Public albums
# - 3003:3003 # Auth
# - 3004:3004 # Cast
environment:
ENTE_API_ORIGIN: http://ente.home
# ENTE_ALBUMS_ORIGIN: https://localhost:3002

postgres:
image: postgres:15
restart: unless-stopped
environment:
POSTGRES_USER: pguser
POSTGRES_PASSWORD: <pg_password>
POSTGRES_DB: ente_db
healthcheck:
test: pg_isready -q -d ente_db -U pguser
start_period: 40s
start_interval: 1s
volumes:
- postgres-data:/mnt/Media4/ente/postgres
compose.yaml (part 2)
minio:
image: minio/minio
ports:
- 3200:3200 # MinIO API
restart: unless-stopped
environment:
MINIO_ROOT_USER: <minio_user>
MINIO_ROOT_PASSWORD: <minio_password>
# command: server /data --address ":3200" --console-address ":3201"
command: server /mnt/Media4/ente/minio-data --address ":3200" --console-address ":3201"
volumes:
# - minio-data:/data
- minio-data:/mnt/Media4/ente/minio-data
post_start:
- command: |
sh -c '
#!/bin/sh

while ! mc config host add h0 http://minio:3200 minio-user-iQ0dnAqb 3wseDF9GScW0kS/pjwAKJalxmc3y 2>/dev/null
do
echo "Waiting for minio..."
sleep 0.5
done

cd /mnt/Media4/ente/minio-data

mc mb -p b2-eu-cen
mc mb -p wasabi-eu-central-2-v3
mc mb -p scw-eu-fr-v3
'

volumes:
postgres-data:
minio-data:
minio:
image: minio/minio
ports:
- 3200:3200 # MinIO API
restart: unless-stopped
environment:
MINIO_ROOT_USER: <minio_user>
MINIO_ROOT_PASSWORD: <minio_password>
# command: server /data --address ":3200" --console-address ":3201"
command: server /mnt/Media4/ente/minio-data --address ":3200" --console-address ":3201"
volumes:
# - minio-data:/data
- minio-data:/mnt/Media4/ente/minio-data
post_start:
- command: |
sh -c '
#!/bin/sh

while ! mc config host add h0 http://minio:3200 minio-user-iQ0dnAqb 3wseDF9GScW0kS/pjwAKJalxmc3y 2>/dev/null
do
echo "Waiting for minio..."
sleep 0.5
done

cd /mnt/Media4/ente/minio-data

mc mb -p b2-eu-cen
mc mb -p wasabi-eu-central-2-v3
mc mb -p scw-eu-fr-v3
'

volumes:
postgres-data:
minio-data:
museum.yaml
key:
encryption: <key>
hash: <hash>

jwt:
secret: <secret>

db:
host: postgres
port: 5432
name: ente_db
user: pguser
password: <password>

s3:
are_local_buckets: true
b2-eu-cen:
key: <minio_user>
secret: <minio_password>
endpoint: http://minio-api.ente.home
region: eu-central-2
bucket: b2-eu-cen
wasabi-eu-central-2-v3:
key: <minio_user>
secret: <minio_password>
endpoint: http://minio-api.ente.home
region: eu-central-2
bucket: wasabi-eu-central-2-v3
compliance: false
scw-eu-fr-v3:
key: <minio_user>
secret: <minio_password>
endpoint: http://minio-api.ente.home
region: eu-central-2
bucket: scw-eu-fr-v3

internal:
admins:
- <user_id>
key:
encryption: <key>
hash: <hash>

jwt:
secret: <secret>

db:
host: postgres
port: 5432
name: ente_db
user: pguser
password: <password>

s3:
are_local_buckets: true
b2-eu-cen:
key: <minio_user>
secret: <minio_password>
endpoint: http://minio-api.ente.home
region: eu-central-2
bucket: b2-eu-cen
wasabi-eu-central-2-v3:
key: <minio_user>
secret: <minio_password>
endpoint: http://minio-api.ente.home
region: eu-central-2
bucket: wasabi-eu-central-2-v3
compliance: false
scw-eu-fr-v3:
key: <minio_user>
secret: <minio_password>
endpoint: http://minio-api.ente.home
region: eu-central-2
bucket: scw-eu-fr-v3

internal:
admins:
- <user_id>
Keerthana
Keerthana5mo ago
I think it's because of address resolution that it's happening. And looking through the endpoint config, some are http and some are https. And are you sure it's the correct endpoint for minio?
Ria
RiaOP5mo ago
The only https I see is commented out, unless I'm missing something. I just took the same files I had when I was running via Docker CLI and put them into Portainer I'll probably just blast it all away and start over again and see if I keep running into the same issues I can't seem to get this working in Portainer for some reason, and I'm tired of trying to troubleshoot it
Ducky
Ducky5mo ago
Thread marked as solved. It will be closed in <t:1750875526:R>. This thread is now closed.

Did you find this page helpful?