Skip to main content

Self-hosting

Deploy Certo in your own environment

The project is designed to be self-hostable. The main production concerns are environment configuration, persistence, secrets handling, and reverse proxy setup.

Environment essentials

  • Set NUXT_PUBLIC_API_URL for the frontend app
  • Set HOST, PORT, APP_KEYS, JWT_SECRET, and DATABASE settings for Strapi
  • Configure FRONTEND_URL and any email provider variables used in credential actions

Deployment options

  • Docker Compose is the easiest path for local or lightweight self-hosting
  • Helm values are available under helm/certo for Kubernetes deployments
  • Use a reverse proxy in front of the app for TLS termination and production hardening

Operational checklist

  • Protect keys and secrets with a real secret manager or environment injection layer
  • Persist uploads and database storage across restarts
  • Review the monitoring and backup docs before exposing the stack publicly

Required environment variables

Frontend

NUXT_PUBLIC_API_URL=http://localhost:1337
NUXT_PUBLIC_WEBSITE_URL=http://localhost:3000

Backend

HOST=0.0.0.0
PORT=1337
APP_KEYS=your-app-keys
JWT_SECRET=your-jwt-secret
ADMIN_JWT_SECRET=your-admin-jwt-secret
DATABASE_CLIENT=postgres
DATABASE_HOST=localhost

Production deployment notes

For production, prefer a managed secret layer, durable storage for uploads and the database, and reverse proxy termination for TLS. The repository includes Docker Compose and Helm examples, as well as docs for reverse proxy and Kubernetes deployment patterns.