"PostgreSQL Database directory appears to contain a database"

Hi all, After having WSL issues preventing Docker Desktop from running, I switched the docker from WSL to Hyper-V and updated it to the lastest version, which then got the docker engine running but started this strange boot-looping like error with postgres. in the docker log for immich_postgres, I'm getting this repeated over and over:
PostgreSQL Database directory appears to contain a database; Skipping initialization


2025-06-03 19:49:33.893 UTC [1] FATAL: data directory "/var/lib/postgresql/data" has invalid permissions

2025-06-03 19:49:33.893 UTC [1] DETAIL: Permissions should be u=rwx (0700) or u=rwx,g=rx (0750).
PostgreSQL Database directory appears to contain a database; Skipping initialization


2025-06-03 19:49:33.893 UTC [1] FATAL: data directory "/var/lib/postgresql/data" has invalid permissions

2025-06-03 19:49:33.893 UTC [1] DETAIL: Permissions should be u=rwx (0700) or u=rwx,g=rx (0750).
I haven't messed with any of the db configuration, and tried to look for some obvious place to force permissions but had no luck. Any ideas? Thanks!
5 Replies
Immich
Immich4mo ago
:wave: Hey @Billy Joel’s Nightmare Explosion, Thanks for reaching out to us. Please carefully read this message and follow the recommended actions. This will help us be more effective in our support effort and leave more time for building Immich :immich:. References - Container Logs: docker compose logs docs - Container Status: docker ps -a docs - Reverse Proxy: https://immich.app/docs/administration/reverse-proxy - Code Formatting https://support.discord.com/hc/en-us/articles/210298617-Markdown-Text-101-Chat-Formatting-Bold-Italic-Underline#h_01GY0DAKGXDEHE263BCAYEGFJA Checklist I have... 1. :ballot_box_with_check: verified I'm on the latest release(note that mobile app releases may take some time). 2. :ballot_box_with_check: read applicable release notes. 3. :ballot_box_with_check: reviewed the FAQs for known issues. 4. :ballot_box_with_check: reviewed Github for known issues. 5. :ballot_box_with_check: tried accessing Immich via local ip (without a custom reverse proxy). 6. :ballot_box_with_check: uploaded the relevant information (see below). 7. :ballot_box_with_check: tried an incognito window, disabled extensions, cleared mobile app cache, logged out and back in, different browsers, etc. as applicable (an item can be marked as "complete" by reacting with the appropriate number) Information In order to be able to effectively help you, we need you to provide clear information to show what the problem is. The exact details needed vary per case, but here is a list of things to consider: - Your docker-compose.yml and .env files. - Logs from all the containers and their status (see above). - All the troubleshooting steps you've tried so far. - Any recent changes you've made to Immich or your system. - Details about your system (both software/OS and hardware). - Details about your storage (filesystems, type of disks, output of commands like fdisk -l and df -h). - The version of the Immich server, mobile app, and other relevant pieces. - Any other information that you think might be relevant. Please paste files and logs with proper code formatting, and especially avoid blurry screenshots. Without the right information we can't work out what the problem is. Help us help you ;) If this ticket can be closed you can use the /close command, and re-open it later if needed. Successfully submitted, a tag has been added to inform contributors. :white_check_mark:
Billy Joel’s Nightmare Explosion
for completeness, the docker compose logs basically show the looping DB error, and the webserver failing to start as a result of that, attached is a snippet: and, obviously, the container status is all ok other than the constantly restarting DB, and thus the server looping with it:
4a0328c31fe1 ghcr.io/immich-app/immich-server:release "tini -- /bin/bash s…" 39 minutes ago Restarting (1) 31 seconds ago immich_server
6601a585fdff tensorchord/pgvecto-rs:pg14-v0.2.0 "docker-entrypoint.s…" 40 minutes ago Restarting (1) 53 seconds ago immich_postgres
c6bb01ee0efc redis:6.2-alpine "docker-entrypoint.s…" 40 minutes ago Up 32 minutes (healthy) 6379/tcp immich_redis
94976385c8e1 ghcr.io/immich-app/immich-machine-learning:release "tini -- python -m i…" 40 minutes ago Up 32 minutes (healthy) immich_machine_learning
4a0328c31fe1 ghcr.io/immich-app/immich-server:release "tini -- /bin/bash s…" 39 minutes ago Restarting (1) 31 seconds ago immich_server
6601a585fdff tensorchord/pgvecto-rs:pg14-v0.2.0 "docker-entrypoint.s…" 40 minutes ago Restarting (1) 53 seconds ago immich_postgres
c6bb01ee0efc redis:6.2-alpine "docker-entrypoint.s…" 40 minutes ago Up 32 minutes (healthy) 6379/tcp immich_redis
94976385c8e1 ghcr.io/immich-app/immich-machine-learning:release "tini -- python -m i…" 40 minutes ago Up 32 minutes (healthy) immich_machine_learning
Billy Joel’s Nightmare Explosion
okay thank you - I'm away from my machine right now, so I have to look at it later - is this a recent change? immich has been working for me for about 6 months a year actually. switching back to the WSL engine it's up and working again, uploading new assets and viewing them in the web view on the server machine, albeit throwing with docker throwing an error that implies it won't work... but it does?
retrieving homedir for UbuntuWSL distro: getting home folder for UbuntuWSL distro: running echo $HOME in UbuntuWSL: sending to distro: write |1: The pipe is being closed.
retrieving homedir for UbuntuWSL distro: getting home folder for UbuntuWSL distro: running echo $HOME in UbuntuWSL: sending to distro: write |1: The pipe is being closed.
and sometimes:
configuring docker in UbuntuWSL: docker cli config: failed to write file: exit status 2
configuring docker in UbuntuWSL: docker cli config: failed to write file: exit status 2
so basically did I just break it by turning off WSL and then unbreak it by turning WSL back on? I tried a bunch of debugging steps with WSL that whatever was wrong with it before I must have fixed somehow.
Mraedis
Mraedis4mo ago
Postgres is somewhat sensitive like that, it's not a matter of if it will break but when. So you've been lucky for a year 🙂 It's not a recent change, but I believe the documentation is more clear on it since maybe half a year

Did you find this page helpful?