Skip to content

Instantly share code, notes, and snippets.

@galer7
Created September 5, 2024 17:23
Show Gist options
  • Save galer7/777e8399713fa7f6b5e7cef9f53dca52 to your computer and use it in GitHub Desktop.
Save galer7/777e8399713fa7f6b5e7cef9f53dca52 to your computer and use it in GitHub Desktop.
x-postgres-env: &postgres-env
POSTGRES_USER: $SERVICE_USER_POSTGRES
POSTGRES_PASSWORD: $SERVICE_PASSWORD_POSTGRES
POSTGRES_DB: "${POSTGRES_DB:-trigger}"
POSTGRES_HOST: postgres
x-webapp-env: &webapp-env
LOGIN_ORIGIN: $SERVICE_FQDN_WEBAPP
APP_ORIGIN: $SERVICE_FQDN_WEBAPP
DEV_OTEL_EXPORTER_OTLP_ENDPOINT: "${SERVICE_FQDN_WEBAPP}/otel"
MAGIC_LINK_SECRET: $SERVICE_PASSWORD_32_MAGIC
SESSION_SECRET: $SERVICE_PASSWORD_32_SESSION
ENCRYPTION_KEY: $SERVICE_PASSWORD_32_ENCRYPTION
DATABASE_URL: "postgres://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@postgres:5432/${POSTGRES_DB}"
DIRECT_URL: "postgres://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@postgres:5432/${POSTGRES_DB}"
RESEND_API_KEY: "${RESEND_API_KEY}"
FROM_EMAIL: "${FROM_EMAIL}"
RUNTIME_PLATFORM: docker-compose
NODE_ENV: production
PORT: 3000
V3_ENABLED: true
x-worker-env: &worker-env
PLATFORM_HOST: webapsp
PLATFORM_WS_PORT: 3000
SECURE_CONNECTION: "false"
OTEL_EXPORTER_OTLP_ENDPOINT: "${SERVICE_FQDN_WEBAPP}/otel"
x-redis-env: &redis-env
REDIS_HOST: redis
REDIS_PORT: 6379
REDIS_TLS_DISABLED: true
x-registry-env: &registry-env
DEPLOY_REGISTRY_HOST: docker.io
DEPLOY_REGISTRY_NAMESPACE: <update-me>
services:
webapp:
image: "ghcr.io/triggerdotdev/trigger.dev:self-host-rc.3"
restart: unless-stopped
environment:
<<: *webapp-env
<<: *postgres-env
<<: *redis-env
depends_on:
- postgres
- redis
postgres:
image: "postgres:16"
restart: unless-stopped
volumes:
- "postgres-data:/var/lib/postgresql/data/"
environment:
<<: *postgres-env
healthcheck:
test:
- CMD-SHELL
- "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"
interval: 5s
timeout: 20s
retries: 10
redis:
image: "redis:7"
restart: unless-stopped
volumes:
- "redis-data:/data"
environment:
REDIS_HOST: redis
REDIS_PORT: 6379
REDIS_TLS_DISABLED: true
docker-provider:
image: "ghcr.io/triggerdotdev/provider/docker:self-host-rc.3"
restart: unless-stopped
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
user: root
depends_on:
- webapp
environment:
<<: *worker-env
<<: *registry-env
PLATFORM_SECRET: $SERVICE_PASSWORD_64_PROVIDER
coordinator:
image: "ghcr.io/triggerdotdev/coordinator:self-host-rc.3"
restart: unless-stopped
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
user: root
depends_on:
- webapp
environment:
<<: *worker-env
<<: *registry-env
PLATFORM_SECRET: $SERVICE_PASSWORD_64_COORDINATOR
#!/bin/bash
generate_random_string() {
length=$1
openssl rand -base64 $((length * 2)) | tr -dc 'A-Za-z0-9!#$%&()*+,-./:;<=>?@[]^_`{|}~' | head -c $length
}
# Generate secrets
POSTGRES_PASSWORD=$(generate_random_string 32)
MAGIC_LINK_SECRET=$(generate_random_string 32)
SESSION_SECRET=$(generate_random_string 32)
ENCRYPTION_KEY=$(generate_random_string 32)
PROVIDER_PASSWORD=$(generate_random_string 64)
COORDINATOR_PASSWORD=$(generate_random_string 64)
# Set other variables
SERVICE_USER_POSTGRES=postgres
POSTGRES_DB=trigger
POSTGRES_HOST=postgres
SERVICE_FQDN_WEBAPP=https://...
WHITELISTED_EMAILS=...
ADMIN_EMAILS=...
AUTH_GITHUB_ID=...
AUTH_GITHUB_SECRET=...
RUNTIME_PLATFORM=docker-compose
NODE_ENV=production
V3_ENABLED=true
# Evaluate DATABASE_URL and DIRECT_URL
DATABASE_URL="postgresql://${SERVICE_USER_POSTGRES}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:5432/${POSTGRES_DB}"
DIRECT_URL="${DATABASE_URL}"
# Create .env content with evaluated values
cat << EOF
# PostgreSQL settings
SERVICE_USER_POSTGRES=$SERVICE_USER_POSTGRES
SERVICE_PASSWORD_POSTGRES=$POSTGRES_PASSWORD
POSTGRES_DB=$POSTGRES_DB
POSTGRES_HOST=$POSTGRES_HOST
DATABASE_URL='$DATABASE_URL'
DIRECT_URL='$DIRECT_URL'
# Webapp settings
SERVICE_FQDN_WEBAPP=$SERVICE_FQDN_WEBAPP
SERVICE_PASSWORD_32_MAGIC=$MAGIC_LINK_SECRET
SERVICE_PASSWORD_32_SESSION=$SESSION_SECRET
SERVICE_PASSWORD_32_ENCRYPTION=$ENCRYPTION_KEY
RESEND_API_KEY=
FROM_EMAIL=
# Admin
WHITELISTED_EMAILS="$WHITELISTED_EMAILS"
ADMIN_EMAILS="$ADMIN_EMAILS"
# GitHub settings
AUTH_GITHUB_ID=$AUTH_GITHUB_ID
AUTH_GITHUB_SECRET=$AUTH_GITHUB_SECRET
# Worker settings
SERVICE_PASSWORD_64_PROVIDER=$PROVIDER_PASSWORD
SERVICE_PASSWORD_64_COORDINATOR=$COORDINATOR_PASSWORD
# Registry settings
DEPLOY_REGISTRY_NAMESPACE=
# Other settings
RUNTIME_PLATFORM=$RUNTIME_PLATFORM
NODE_ENV=$NODE_ENV
V3_ENABLED=$V3_ENABLED
EOF
@galer7
Copy link
Author

galer7 commented Sep 5, 2024

If someone ever encounters this, I updated coolify to v4.0.0-beta.329 shortly after creating this gist and the simple trigger template from the resource catalog just works ™️!

@AkaCoder404
Copy link

what is the resource catalog?

@galer7
Copy link
Author

galer7 commented Mar 19, 2025

Hey @AkaCoder404 , that would be the page you see when you go to your project > Resources > New, and you should see a big list with databases and other OSS services. You should see something like this in the list:

image

Let me know if you have any more questions!

@AkaCoder404
Copy link

Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment