Troubleshooting Docker-related errors
Restart after changes
Remember to restart your cluster to ensure changes that you make in the compose.yaml and museum.yaml get picked up.
docker compose down
docker compose uppost_start
The Docker compose file used if relying on quickstart script or installation using Docker Compose uses the "post_start" lifecycle hook to provision the MinIO instance.
The lifecycle hook requires Docker Compose version 2.30.0+, and if you're using an older version of Docker Compose you will see an error like this:
validating compose.yaml: services.minio Additional property post_start is not allowedThe easiest way to resolve this is to upgrade your Docker Compose.
If you cannot update your Docker Compose version, then alternatively you can perform the same configuration by removing the "post_start" hook, and adding a new service definition:
minio-provision:
image: minio/mc
depends_on:
- minio
volumes:
- minio-data:/data
networks:
- internal
entrypoint: |
sh -c '
#!/bin/sh
while ! mc alias set h0 http://minio:3200 your_minio_user your_minio_pass
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
'start_interval
Similar to the post_start case above, if you are seeing an error like
services.postgres.healthcheck Additional property start_interval is not allowedYou will need to upgrade your Docker compose version to a newer version that supports the start_interval property on the health check.
Postgres authentication failed
If you are getting Postgres password authentication failures when starting your cluster, then you might be using a stale Docker volume.
If you are getting an error of the following form (pasting a full example for easier greppability):
museum-1 | panic: pq: password authentication failed for user "pguser"
museum-1 |
museum-1 | goroutine 1 [running]:
museum-1 | main.setupDatabase()
museum-1 | /etc/ente/cmd/museum/main.go:846 +0x338
museum-1 | main.main()
museum-1 | /etc/ente/cmd/museum/main.go:124 +0x44c
museum-1 exited with code 2Then the issue is that the password you're using is not the password PostgreSQL is expecting.
There are 2 possibilities:
If you are using Docker Compose for running Ente from source, you might not have set the same credentials in
.envandmuseum.yamlinsideserver/configdirectory. Edit the values to make sure the correct credentials are being used.When you have created a cluster in
my-entedirectory on runningquickstart.shand later deleted it, only to create another cluster with samemy-entedirectory.However, by deleting the directory, the Docker volumes are not deleted.
Thus the older volumes with previous cluster's credentials are used for new cluster and the error arises.
Deletion of the stale Docker volume can solve this. Be careful, this will delete all data in those volumes (any thing you uploaded etc). Do this if you are sure this is the exact problem.
shelldocker volume lsto list them, and then delete the ones that begin with
my-enteusingdocker volume rm. You can delete all stale volumes by usingdocker system prunewith the--volumesflag, but be really careful, that'll delete all volumes (Ente or otherwise) on your machine that are not currently in use by a running Docker container.An alternative way is to delete the volumes along with removal of cluster's containers using
docker composeinsidemy-entedirectory.shdocker compose down --volumesIf you're unsure about removing volumes, another alternative is to rename your
my-entefolder. Docker uses the folder name to determine the volume name prefix, so giving it a different name will cause Docker to create a volume afresh for it.
MinIO provisioning error
If you encounter similar logs while starting your Docker Compose cluster
my-ente-minio-1 -> | Waiting for minio...
my-ente-minio-1 -> | Waiting for minio...
my-ente-minio-1 -> | Waiting for minio...This could be due to usage of deprecated MinIO mc config command. Changing mc config host h0 add to mc alias set h0 resolves this.
Thus the updated post_start will look as follows for minio service:
minio:
...
post_start:
- command: |
sh -c '
#!/bin/sh
while ! mc alias set h0 http://minio:3200 your_minio_user your_minio_pass 2>/dev/null
...
'