[GH-ISSUE #816] Supabase template fails with invalid_password after updating POSTGRES_PASSWORD in .env (Volumes not recreating via UI) #10243

Open
opened 2026-06-07 20:45:42 -05:00 by GiteaMirror · 1 comment
Owner

Originally created by @rossanodr on GitHub (Apr 23, 2026).
Original GitHub issue: https://github.com/Dokploy/templates/issues/816

Template Name

Supabase

Relevant Logs of the Error

[error] Postgrex.Protocol (#PID<0.5529.0>) failed to connect: ** (Postgrex.Error) FATAL 28P01 (invalid_password) password authentication failed for user "supabase_admin"

(Note: This error loops continuously in the Logflare/Analytics container, preventing other dependent containers from transitioning from "created" to "running").

Steps to Reproduce the Error

  1. Deploy the Supabase template normally.
  2. Wait for the initial deployment to finish successfully.
  3. Stop the project in the Dokploy dashboard.
  4. Go to Environment settings and update the POSTGRES_PASSWORD (and other related secrets).
  5. Start/Deploy the project again.
  6. Error occurs: The analytics container (and others) crash with invalid_password because the Postgres database retained the initial password from the first boot.
  7. Attempted Workaround: Stop the project and delete the database volume via the "Advanced/Volumes" tab in the Dokploy UI to force a fresh Postgres initialization.
  8. Deploy again.
  9. Error persists: The volume is not properly recreated, or the underlying data persists on the host.

Expected behavior: > Updating .env variables and redeploying should either gracefully update the services, OR if a user manually deletes a volume via the UI to start fresh, the underlying physical folders should be wiped so the next deploy can initialize a clean database with the new passwords.

Actual behavior: > The database retains the initial password regardless of .env changes. Deleting the volume via the Dokploy UI does not actually wipe the physical data directory on the host, making it impossible to update passwords or do a clean reset without SSH-ing into the server to run rm -rf on the hidden bind mount folders.

Question for maintainers: How are we supposed to securely update database passwords or reset the database if updating the .env fails and the UI volume deletion doesn't clear the host directory?

Environment Information

Operating System: Linux (Ubuntu/Debian)
Dokploy version: v0.29.1
VPS Provider: Hostinger
Template Version: Supabase 1.25.04
Browser: Chrome

When does this error occur?

After successful deployment

Additional Context

No response

Will you send a PR to fix it?

Yes

Originally created by @rossanodr on GitHub (Apr 23, 2026). Original GitHub issue: https://github.com/Dokploy/templates/issues/816 ### Template Name Supabase ### Relevant Logs of the Error `[error] Postgrex.Protocol (#PID<0.5529.0>) failed to connect: ** (Postgrex.Error) FATAL 28P01 (invalid_password) password authentication failed for user "supabase_admin"` (Note: This error loops continuously in the Logflare/Analytics container, preventing other dependent containers from transitioning from "created" to "running"). ### Steps to Reproduce the Error 1. Deploy the Supabase template normally. 2. Wait for the initial deployment to finish successfully. 3. Stop the project in the Dokploy dashboard. 4. Go to Environment settings and update the POSTGRES_PASSWORD (and other related secrets). 5. Start/Deploy the project again. 6. Error occurs: The analytics container (and others) crash with invalid_password because the Postgres database retained the initial password from the first boot. 7. Attempted Workaround: Stop the project and delete the database volume via the "Advanced/Volumes" tab in the Dokploy UI to force a fresh Postgres initialization. 8. Deploy again. 9. Error persists: The volume is not properly recreated, or the underlying data persists on the host. **Expected behavior:** > Updating .env variables and redeploying should either gracefully update the services, OR if a user manually deletes a volume via the UI to start fresh, the underlying physical folders should be wiped so the next deploy can initialize a clean database with the new passwords. **Actual behavior:** > The database retains the initial password regardless of .env changes. Deleting the volume via the Dokploy UI does not actually wipe the physical data directory on the host, making it impossible to update passwords or do a clean reset without SSH-ing into the server to run rm -rf on the hidden bind mount folders. Question for maintainers: How are we supposed to securely update database passwords or reset the database if updating the .env fails and the UI volume deletion doesn't clear the host directory? ### Environment Information ```bash Operating System: Linux (Ubuntu/Debian) Dokploy version: v0.29.1 VPS Provider: Hostinger Template Version: Supabase 1.25.04 Browser: Chrome ``` ### When does this error occur? After successful deployment ### Additional Context _No response_ ### Will you send a PR to fix it? Yes
GiteaMirror added the bug label 2026-06-07 20:45:42 -05:00
Author
Owner

@dosubot[bot] commented on GitHub (Apr 23, 2026):

Hi @rossanodr! I'm Dosu and I’m helping the templates team.

This is a well-documented issue that affects all PostgreSQL-based compose templates in Dokploy, not just Supabase. There are two separate problems at play here:

1. POSTGRES_PASSWORD only applies on first initialization. This is standard PostgreSQL Docker behavior — the password environment variable is only used when the data directory is empty and the database is being created for the first time. Changing it in .env after the database already exists has no effect on the actual PostgreSQL user credentials [1].

2. Bind mount directories are not cleared by UI volume deletion. The Supabase template stores PostgreSQL data in a relative bind mount at ../files/volumes/db/data/ [2]. Dokploy's docker compose down --volumes only removes named volumes (like db-config), not bind mount directories on the host [3] [4]. This is why deleting the volume via the UI doesn't actually wipe the database.

Workaround — Option A (update password in-place):

# Exec into the running Postgres container and update the password
docker exec -it $(docker ps -q -f name=db) \
  psql -U supabase_admin -c "ALTER USER supabase_admin WITH PASSWORD '<your_new_password>';"

Then restart the project so all dependent services reconnect with the new credential [1] [5].

Workaround — Option B (full reset via SSH):
SSH into the server and manually remove the bind mount data directory. The path will be inside the compose project directory, something like:

# Find and remove the PostgreSQL data directory
rm -rf /path/to/compose/project/files/volumes/db/data

Then redeploy — PostgreSQL will re-initialize from scratch using the new POSTGRES_PASSWORD value.

Both of these require CLI access, as there's currently no UI mechanism to rotate database credentials or clean up bind mount directories after deployment [6].

To reply, just mention @dosu.


Docs are dead. Just use Dosu.

Leave Feedback Ask Dosu about templates Share Dosu with your team

<!-- gh-comment-id:4308119532 --> @dosubot[bot] commented on GitHub (Apr 23, 2026): <!-- Greeting --> Hi @rossanodr! I'm [Dosu](https://go.dosu.dev/dosubot) and I’m helping the templates team. <!-- Answer --> This is a well-documented issue that affects all PostgreSQL-based compose templates in Dokploy, not just Supabase. There are two separate problems at play here: **1. `POSTGRES_PASSWORD` only applies on first initialization.** This is standard PostgreSQL Docker behavior — the password environment variable is only used when the data directory is empty and the database is being created for the first time. Changing it in `.env` after the database already exists has no effect on the actual PostgreSQL user credentials [[1]](https://github.com/Dokploy/dokploy/issues/4002). **2. Bind mount directories are not cleared by UI volume deletion.** The Supabase template stores PostgreSQL data in a relative bind mount at `../files/volumes/db/data/` [[2]](https://github.com/Dokploy/templates/blob/d157cef3c357550aff801c336b99611813b522ae/blueprints/supabase/docker-compose.yml#L408). Dokploy's `docker compose down --volumes` only removes **named volumes** (like `db-config`), not bind mount directories on the host [[3]](https://github.com/Dokploy/dokploy/blob/d7af82731c30f522b0318d6d65808847ff5eb08a/packages/server/src/services/compose.ts#L444-L446) [[4]](https://github.com/Dokploy/dokploy/issues/3725#issuecomment-3921768007). This is why deleting the volume via the UI doesn't actually wipe the database. **Workaround — Option A (update password in-place):** ```bash # Exec into the running Postgres container and update the password docker exec -it $(docker ps -q -f name=db) \ psql -U supabase_admin -c "ALTER USER supabase_admin WITH PASSWORD '<your_new_password>';" ``` Then restart the project so all dependent services reconnect with the new credential [[1]](https://github.com/Dokploy/dokploy/issues/4002) [[5]](https://github.com/Dokploy/website/issues/128). **Workaround — Option B (full reset via SSH):** SSH into the server and manually remove the bind mount data directory. The path will be inside the compose project directory, something like: ```bash # Find and remove the PostgreSQL data directory rm -rf /path/to/compose/project/files/volumes/db/data ``` Then redeploy — PostgreSQL will re-initialize from scratch using the new `POSTGRES_PASSWORD` value. Both of these require CLI access, as there's currently no UI mechanism to rotate database credentials or clean up bind mount directories after deployment [[6]](https://github.com/Dokploy/dokploy/issues/4041#issuecomment-4127976426). <!-- Dosu Comment Footer --> *To reply, just mention [@dosu](https://go.dosu.dev/dosubot?utm_source=github&utm_medium=bot-comment&utm_campaign=github-comment-footer-20260415&utm_content=reply-with-mention&utm_term=Dokploy%2Ftemplates).* --- Docs are dead. Just use [Dosu](https://dosu.dev?utm_source=github&utm_medium=bot-comment&utm_campaign=github-comment-footer-20260415&utm_content=static-docs-tagline&utm_term=Dokploy%2Ftemplates). [![Leave Feedback](https://img.shields.io/badge/Leave%20Feedback-555555?style=flat)](https://app.dosu.dev/response-feedback?utm_source=github&utm_medium=bot-comment&utm_campaign=github-comment-footer-20260415&utm_content=static-docs-feedback&utm_term=Dokploy%2Ftemplates#message_id=e9bf1709-fddc-4cae-941b-2a4d0557f863) [![Ask Dosu about templates](https://img.shields.io/badge/Ask%20Dosu%20about%20templates-2f7b3f?style=flat&logo=data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPHN2ZyB3aWR0aD0iODYiIGhlaWdodD0iODkiIHZpZXdCb3g9IjAgMCA4NiA4OSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNNS4yOTIzNiAxMi43OTI4TDE3Ljc1OTMgNi42ODE4OFY3Mi41NjY3TDUuMjkyMzYgODQuMDYxOFYxMi43OTI4WiIgZmlsbD0iI0I0QkI5MSIvPjxwYXRoIGQ9Ik0xOC4yNTc1IDczLjExOTZMNTkuMTMyOSA3Mi43NDhMNTEuNzAxMSA4Mi40MDk1TDI5LjAzMzggODYuMjkxTDYuMjM5NjIgODUuMTU1NEwxOC4yNTc1IDczLjExOTZaIiBmaWxsPSIjNzc4NTYxIi8%2BPHBhdGggZD0iTTE3LjQ5MTYgMy43MzYzM0wzLjU4NTU3IDEyLjcwOTlWODMuNTc5MkMzLjU4NTU3IDg0Ljc1NDIgNC45ODU2MyA4NS4zNjUyIDUuODQ3MDUgODQuNTY2TDE5LjYyOTYgNzEuNzgwMSIgc3Ryb2tlPSJibGFjayIgc3Ryb2tlLXdpZHRoPSI2LjQyODQ0IiBzdHJva2UtbGluZWNhcD0icm91bmQiLz48bWFzayBpZD0iZG9zdS1kLWN1dG91dCIgZmlsbD0id2hpdGUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNNDAuNzA0IDAuNTE4MDY2SDE3LjA0MzlWNzYuMjIyMUg0MC43MDRINDIuNTgwNUg0Ny44MDEzQzY4LjcwNjQgNzYuMjIyMSA4NS42NTMzIDU5LjI3NTIgODUuNjUzMyAzOC4zNzAxQzg1LjY1MzMgMTcuNDY1IDY4LjcwNjMgMC41MTgwNjYgNDcuODAxMyAwLjUxODA2Nkg0Mi41ODA1SDQwLjcwNFoiLz48L21hc2s%2BPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00MC43MDQgMC41MTgwNjZIMTcuMDQzOVY3Ni4yMjIxSDQwLjcwNEg0Mi41ODA1SDQ3LjgwMTNDNjguNzA2NCA3Ni4yMjIxIDg1LjY1MzMgNTkuMjc1MiA4NS42NTMzIDM4LjM3MDFDODUuNjUzMyAxNy40NjUgNjguNzA2MyAwLjUxODA2NiA0Ny44MDEzIDAuNTE4MDY2SDQyLjU4MDVINDAuNzA0WiIgZmlsbD0iI0YzRjZGMSIvPjxwYXRoIGQ9Ik0xNy4wNDM5IDAuNTE4MDY2Vi02LjU3OTE5SDkuOTQ2NjlWMC41MTgwNjZIMTcuMDQzOVpNMTcuMDQzOSA3Ni4yMjIxSDkuOTQ2NjlWODMuMzE5NEgxNy4wNDM5Vjc2LjIyMjFaTTE3LjA0MzkgNy42MTUzMkg0MC43MDRWLTYuNTc5MTlIMTcuMDQzOVY3LjYxNTMyWk0yNC4xNDEyIDc2LjIyMjFWMC41MTgwNjZIOS45NDY2OVY3Ni4yMjIxSDI0LjE0MTJaTTQwLjcwNCA2OS4xMjQ5SDE3LjA0MzlWODMuMzE5NEg0MC43MDRWNjkuMTI0OVpNNDIuNTgwNSA2OS4xMjQ5SDQwLjcwNFY4My4zMTk0SDQyLjU4MDVWNjkuMTI0OVpNNDcuODAxMyA2OS4xMjQ5SDQyLjU4MDVWODMuMzE5NEg0Ny44MDEzVjY5LjEyNDlaTTc4LjU1NiAzOC4zNzAxQzc4LjU1NiA1NS4zNTU1IDY0Ljc4NjcgNjkuMTI0OSA0Ny44MDEzIDY5LjEyNDlWODMuMzE5NEM3Mi42MjYxIDgzLjMxOTQgOTIuNzUwNSA2My4xOTQ5IDkyLjc1MDUgMzguMzcwMUg3OC41NTZaTTQ3LjgwMTMgNy42MTUzMkM2NC43ODY2IDcuNjE1MzIgNzguNTU2IDIxLjM4NDcgNzguNTU2IDM4LjM3MDFIOTIuNzUwNUM5Mi43NTA1IDEzLjU0NTMgNzIuNjI2IC02LjU3OTE5IDQ3LjgwMTMgLTYuNTc5MTlWNy42MTUzMlpNNDIuNTgwNSA3LjYxNTMySDQ3LjgwMTNWLTYuNTc5MTlINDIuNTgwNVY3LjYxNTMyWk00MC43MDQgNy42MTUzMkg0Mi41ODA1Vi02LjU3OTE5SDQwLjcwNFY3LjYxNTMyWiIgZmlsbD0iYmxhY2siIG1hc2s9InVybCgjZG9zdS1kLWN1dG91dCkiLz48cGF0aCBkPSJNNjguOTIxNSAzNi4wMTM1QzY4LjkyMTUgMzYuMDEzNSA2NS43MzY5IDQ5LjQ3MzggNTEuNDIzMSA0OS40NzM4QzM3LjEwOTMgNDkuNDczOCAzMi41Nzg3IDM3LjM1OTYgMzIuNTc4NyAzNi4wMTM1IiBzdHJva2U9ImJsYWNrIiBzdHJva2Utd2lkdGg9IjcuNjkxNjEiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPjxwYXRoIGQ9Ik0wLjM0ODYzMyA4NS40OTQ2QzAuMzQ4NjMzIDg1LjQ5NDYgMjkuNDg1NiA4NS44MzA5IDM0LjgwOSA4NS42OThDNDQuODMzNyA4NS40NDc3IDUxLjI4NzIgODQuNDAyIDU3LjUyNjkgNzguOTcyNEM2Mi44MTI5IDc0LjM3MjcgNzUuMTM0MiA1OS42ODM2IDc1LjEzNDIgNTkuNjgzNiIgc3Ryb2tlPSJibGFjayIgc3Ryb2tlLXdpZHRoPSI2LjE2NDgyIi8%2BPC9zdmc%2B)](https://github.dosu.com/Dokploy/templates?utm_source=github&utm_medium=bot-comment&utm_campaign=github-comment-footer-20260415&utm_content=static-docs-ask-repo&utm_term=Dokploy%2Ftemplates) [![Share Dosu with your team](https://img.shields.io/badge/Share%20Dosu%20with%20your%20team-1f6feb?style=flat)](https://app.dosu.dev/signup?referrer=openSource&source=github-footer&utm_source=github&utm_medium=bot-comment&utm_campaign=github-comment-footer-20260415&utm_content=static-docs-share-team&utm_term=Dokploy%2Ftemplates)
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/templates#10243