Overviewالعربية
DEPLOYMENT

Independent Coolify services with MySQL and S3

Deploy the backend first, run migrations once, confirm readiness, then deploy the frontend against the backend's internal or public URL.

01

Coolify services

Four explicit units in one project.

  • pentascope-be from GitLab/Dockerfile on port 3000
  • pentascope-fe from GitLab/Dockerfile on port 3000
  • MySQL 8 with persistent volume and backups
  • Private MinIO/S3 bucket with volume/retention
  • HTTPS frontend domain and internal/public backend endpoint
02

Backend environment

Required values never enter the UI.

  • DATABASE_URL and DB pool/timeout limits
  • FRONTEND_URL
  • S3_ENDPOINT/REGION/BUCKET/ACCESS_KEY_ID/SECRET_ACCESS_KEY
  • QA_CREDENTIAL_MASTER_KEY: base64 32-byte key
  • FILE_SIGNING_SECRET and TOKEN_HASH_SECRET
  • WEBHOOK_ALLOWED_HOSTS
  • Optional OPENAI_API_KEY or OPENROUTER_API_KEY
03

Frontend environment

The frontend has no direct database or S3 connection.

  • BACKEND_URL=https://backend.example.com
  • Never copy DATABASE_URL or S3 secrets to frontend
  • Redeploy when BACKEND_URL changes
  • Probe /api/health from the platform and /api/ready from internal monitoring
04

Release order

Promote the same tested commit through environments.

  • feature → dev → testing → staging → main
  • npm ci then typecheck/lint/test/build/audit
  • Back up before irreversible migration
  • npm run db:migrate before the new backend
  • Enable webhook:retry and schedule:dispatch as Coolify scheduled tasks
  • Confirm /api/ready, then smoke-test business routes