Coolify
Deploy Greenlight as a Docker Compose app in Coolify .
Steps
- Create a Docker Compose resource in Coolify pointing at this repository.
- Set the compose file to
docker-compose.self-host.yml. - Generate secrets locally with
npm run env:ensure -- --profile self-host, then paste variables into Coolify’s Environment Variables tab (or start from.env.self-host.exampleand set secrets yourself). Coolify detects${VAR}references from the compose file and shows them in the UI. - Confirm strong secrets are set:
POSTGRES_PASSWORDAUTH_SECRETCALLBACK_SIGNING_SECRETWEBHOOK_SECRETGREENLIGHT_API_KEY(bootstraps admin key whenUSE_AUTH=trueandapi_keysis empty)
- Set
PUBLIC_WEBHOOK_URLto your public HTTPS API host (no trailing slash). - Assign domains in Coolify (services use
expose, not host ports):greenlight→ API + platform webhooks (container port8100)greenlight-ui→ Admin UI (container port3000)
- If NextAuth redirects fail after assigning the UI domain, set
AUTH_URLto the Admin UI public HTTPS URL. - Deploy, then register channels via API or the Admin UI.
Docs site only (build on server): use compose file docker-compose.docs.build.yml
with .env.docs — see Docker.
Webhook URLs
Each channel uses:
{PUBLIC_WEBHOOK_URL}/webhooks/{organization_id}/{platform}/{channel_id}Configure that URL in Slack Event Subscriptions, Azure Bot messaging endpoint, Discord Interactions, Meta Callback URL, Google Chat App URL, etc.
After deploy
- Open the Admin UI
/setuponce to create the super admin - Register at least one
PROMPTchannel - Send a test prompt from the UI or
POST /v1/prompts/new
See Platforms for per-platform webhook details.