1.9 KiB
Coolify deployment
Resource
Create a project and add this repository as a Docker Compose resource. Use the root compose.yaml. Assign the public domain to the web service on port 80.
Do not add custom Compose networks or Traefik labels. Coolify creates the deployment network and connects its proxy. The web service proxies /api and the SSE stream to api; api and db remain internal.
Required variables
Set these as production variables in Coolify:
PUBLIC_URL=https://mix.example.comPOSTGRES_DBPOSTGRES_USERPOSTGRES_PASSWORD— generate a unique valueDATABASE_URL=postgres://<user>:<password>@db:5432/<database>?sslmode=disableDISCORD_CLIENT_IDDISCORD_CLIENT_SECRETDISCORD_REDIRECT_URL=https://mix.example.com/api/auth/discord/callbackADMIN_DISCORD_IDS— comma-separated Discord user IDs
Do not copy production values into .env in the repository.
Discord
In the Discord Developer Portal:
- Create an application.
- Add the exact production callback URL.
- Use only the
identifyOAuth scope. - Store the client secret only in Coolify.
Storage and backups
PostgreSQL uses the postgres_data named volume. Confirm that Coolify recognizes it as persistent storage before accepting users.
Persistent storage is not a backup. Schedule an encrypted pg_dump to storage outside the VPS, define retention, and test restoration before launch. Back up before schema migrations.
Deployment verification
- Ensure
migrationsexits successfully. - Ensure
db,api, andwebbecome healthy. - Open
/healththrough the public domain. - Complete Discord login and verify the admin role.
- Create a test event and RSVP.
- Restart/redeploy and confirm the event remains.
- Verify SSE remains connected through the proxy.
Rollback application images only when the database migration is backward-compatible. Otherwise restore the matching database backup.