services: n8n: image: n8nio/n8n:latest pull_policy: always container_name: n8n restart: unless-stopped environment: DB_TYPE: ${N8N_DB_TYPE} DB_POSTGRESDB_HOST: ${N8N_DB_HOST} DB_POSTGRESDB_PORT: ${N8N_DB_PORT} DB_POSTGRESDB_DATABASE: ${N8N_DB_NAME} DB_POSTGRESDB_USER: ${N8N_DB_USER} DB_POSTGRESDB_PASSWORD: ${N8N_DB_PASSWORD} N8N_HOST: ${SERVICE_FQDN_N8N} N8N_PORT: ${N8N_PORT} N8N_PROTOCOL: ${N8N_PROTOCOL} WEBHOOK_URL: https://${SERVICE_FQDN_N8N}/ GENERIC_TIMEZONE: ${N8N_TIMEZONE} N8N_ENCRYPTION_KEY: ${N8N_ENCRYPTION_KEY} NODE_ENV: ${N8N_NODE_ENV} N8N_DIAGNOSTICS_ENABLED: ${N8N_DIAGNOSTICS_ENABLED} N8N_EMAIL_MODE: ${N8N_EMAIL_MODE} N8N_SMTP_HOST: ${N8N_SMTP_HOST} N8N_SMTP_PORT: ${N8N_SMTP_PORT} N8N_SMTP_USER: ${N8N_SMTP_USER} N8N_SMTP_PASS: ${N8N_SMTP_PASS} N8N_SMTP_SENDER: ${N8N_SMTP_SENDER} N8N_SMTP_SSL: ${N8N_SMTP_SSL} N8N_SMTP_STARTTLS: ${N8N_SMTP_STARTTLS} volumes: - /opt/n8n/data:/home/node/.n8n:Z networks: - n8n - proxy labels: traefik.http.services.n8n.loadbalancer.server.port: "5678" n8n-db: image: postgres:16 pull_policy: always container_name: n8n-pg restart: unless-stopped environment: POSTGRES_USER: ${POSTGRES_USER} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} POSTGRES_DB: ${POSTGRES_DB} volumes: - /opt/n8n/postgres:/var/lib/postgresql/data:Z networks: - n8n networks: n8n: driver: bridge proxy: external: true