name: twenty services: server: image: twentycrm/twenty:${TAG:-latest} volumes: - server-local-data:/app/packages/twenty-server/.local-storage ports: - "3000:3000" environment: NODE_PORT: 3000 PG_DATABASE_URL: postgres://${PG_DATABASE_USER:-postgres}:${PG_DATABASE_PASSWORD:-postgres}@${PG_DATABASE_HOST:-db}:${PG_DATABASE_PORT:-5432}/default SERVER_URL: ${SERVER_URL} REDIS_URL: ${REDIS_URL:-redis://redis:6379} STORAGE_TYPE: ${STORAGE_TYPE} STORAGE_S3_REGION: ${STORAGE_S3_REGION} STORAGE_S3_NAME: ${STORAGE_S3_NAME} STORAGE_S3_ENDPOINT: ${STORAGE_S3_ENDPOINT} APP_SECRET: ${APP_SECRET:-replace_me_with_a_random_string} # MESSAGING_PROVIDER_GMAIL_ENABLED: ${MESSAGING_PROVIDER_GMAIL_ENABLED} # CALENDAR_PROVIDER_GOOGLE_ENABLED: ${CALENDAR_PROVIDER_GOOGLE_ENABLED} # AUTH_GOOGLE_CLIENT_ID: ${AUTH_GOOGLE_CLIENT_ID} # AUTH_GOOGLE_CLIENT_SECRET: ${AUTH_GOOGLE_CLIENT_SECRET} # AUTH_GOOGLE_CALLBACK_URL: ${AUTH_GOOGLE_CALLBACK_URL} # AUTH_GOOGLE_APIS_CALLBACK_URL: ${AUTH_GOOGLE_APIS_CALLBACK_URL} # CALENDAR_PROVIDER_MICROSOFT_ENABLED: ${CALENDAR_PROVIDER_MICROSOFT_ENABLED} # MESSAGING_PROVIDER_MICROSOFT_ENABLED: ${MESSAGING_PROVIDER_MICROSOFT_ENABLED} # AUTH_MICROSOFT_ENABLED: ${AUTH_MICROSOFT_ENABLED} # AUTH_MICROSOFT_CLIENT_ID: ${AUTH_MICROSOFT_CLIENT_ID} # AUTH_MICROSOFT_CLIENT_SECRET: ${AUTH_MICROSOFT_CLIENT_SECRET} # AUTH_MICROSOFT_CALLBACK_URL: ${AUTH_MICROSOFT_CALLBACK_URL} # AUTH_MICROSOFT_APIS_CALLBACK_URL: ${AUTH_MICROSOFT_APIS_CALLBACK_URL} # EMAIL_FROM_ADDRESS: ${EMAIL_FROM_ADDRESS:-contact@yourdomain.com} # EMAIL_FROM_NAME: ${EMAIL_FROM_NAME:-"John from YourDomain"} # EMAIL_SYSTEM_ADDRESS: ${EMAIL_SYSTEM_ADDRESS:-system@yourdomain.com} # EMAIL_DRIVER: ${EMAIL_DRIVER:-smtp} # EMAIL_SMTP_HOST: ${EMAIL_SMTP_HOST:-smtp.gmail.com} # EMAIL_SMTP_PORT: ${EMAIL_SMTP_PORT:-465} # EMAIL_SMTP_USER: ${EMAIL_SMTP_USER:-} # EMAIL_SMTP_PASSWORD: ${EMAIL_SMTP_PASSWORD:-} depends_on: db: condition: service_healthy healthcheck: test: curl --fail http://localhost:3000/healthz interval: 5s timeout: 5s retries: 20 restart: always worker: image: twentycrm/twenty:${TAG:-latest} volumes: - server-local-data:/app/packages/twenty-server/${STORAGE_LOCAL_PATH:-.local-storage} command: ["yarn", "worker:prod"] environment: PG_DATABASE_URL: postgres://${PG_DATABASE_USER:-postgres}:${PG_DATABASE_PASSWORD:-postgres}@${PG_DATABASE_HOST:-db}:${PG_DATABASE_PORT:-5432}/default SERVER_URL: ${SERVER_URL} REDIS_URL: ${REDIS_URL:-redis://redis:6379} DISABLE_DB_MIGRATIONS: "true" # it already runs on the server STORAGE_TYPE: ${STORAGE_TYPE} STORAGE_S3_REGION: ${STORAGE_S3_REGION} STORAGE_S3_NAME: ${STORAGE_S3_NAME} STORAGE_S3_ENDPOINT: ${STORAGE_S3_ENDPOINT} APP_SECRET: ${APP_SECRET:-replace_me_with_a_random_string} # MESSAGING_PROVIDER_GMAIL_ENABLED: ${MESSAGING_PROVIDER_GMAIL_ENABLED} # CALENDAR_PROVIDER_GOOGLE_ENABLED: ${CALENDAR_PROVIDER_GOOGLE_ENABLED} # AUTH_GOOGLE_CLIENT_ID: ${AUTH_GOOGLE_CLIENT_ID} # AUTH_GOOGLE_CLIENT_SECRET: ${AUTH_GOOGLE_CLIENT_SECRET} # AUTH_GOOGLE_CALLBACK_URL: ${AUTH_GOOGLE_CALLBACK_URL} # AUTH_GOOGLE_APIS_CALLBACK_URL: ${AUTH_GOOGLE_APIS_CALLBACK_URL} # CALENDAR_PROVIDER_MICROSOFT_ENABLED: ${CALENDAR_PROVIDER_MICROSOFT_ENABLED} # MESSAGING_PROVIDER_MICROSOFT_ENABLED: ${MESSAGING_PROVIDER_MICROSOFT_ENABLED} # AUTH_MICROSOFT_ENABLED: ${AUTH_MICROSOFT_ENABLED} # AUTH_MICROSOFT_CLIENT_ID: ${AUTH_MICROSOFT_CLIENT_ID} # AUTH_MICROSOFT_CLIENT_SECRET: ${AUTH_MICROSOFT_CLIENT_SECRET} # AUTH_MICROSOFT_CALLBACK_URL: ${AUTH_MICROSOFT_CALLBACK_URL} # AUTH_MICROSOFT_APIS_CALLBACK_URL: ${AUTH_MICROSOFT_APIS_CALLBACK_URL} # EMAIL_FROM_ADDRESS: ${EMAIL_FROM_ADDRESS:-contact@yourdomain.com} # EMAIL_FROM_NAME: ${EMAIL_FROM_NAME:-"John from YourDomain"} # EMAIL_SYSTEM_ADDRESS: ${EMAIL_SYSTEM_ADDRESS:-system@yourdomain.com} # EMAIL_DRIVER: ${EMAIL_DRIVER:-smtp} # EMAIL_SMTP_HOST: ${EMAIL_SMTP_HOST:-smtp.gmail.com} # EMAIL_SMTP_PORT: ${EMAIL_SMTP_PORT:-465} # EMAIL_SMTP_USER: ${EMAIL_SMTP_USER:-} # EMAIL_SMTP_PASSWORD: ${EMAIL_SMTP_PASSWORD:-} depends_on: db: condition: service_healthy server: condition: service_healthy restart: always db: image: postgres:16 volumes: - db-data:/var/lib/postgresql/data environment: POSTGRES_USER: ${PG_DATABASE_USER:-postgres} POSTGRES_PASSWORD: ${PG_DATABASE_PASSWORD:-postgres} healthcheck: test: pg_isready -U ${PG_DATABASE_USER:-postgres} -h localhost -d postgres interval: 5s timeout: 5s retries: 10 restart: always redis: image: redis restart: always command: ["--maxmemory-policy", "noeviction"] volumes: db-data: server-local-data: