3.4 KiB
Installer
Deployment Modes
The installer (install.sh) supports two deployment modes:
Multi-tenant SaaS (DEPLOYMENT_MODE=saas) |
Standalone (DEPLOYMENT_MODE=standalone) |
|
|---|---|---|
| Containers | traefik, postgres, clickhouse, logto, cameleer-saas | traefik, postgres, clickhouse, server, server-ui |
| Auth | Logto OIDC (SaaS admin + tenant users) | Local auth (built-in admin, no identity provider) |
| Tenant management | SaaS admin creates/manages tenants via UI | Single server instance, no fleet management |
| PostgreSQL | cameleer-postgres image (multi-DB init) |
Stock postgres:16-alpine (server creates schema via Flyway) |
| Use case | Platform vendor managing multiple customers | Single customer running the product directly |
Standalone mode generates a simpler compose with the server running directly. No Logto, no SaaS management plane, no bootstrap. The admin logs in with local credentials at /.
Compose templates
The installer uses static docker-compose templates in templates/. Templates are copied to the install directory and composed via COMPOSE_FILE in .env:
docker-compose.yml— shared infrastructure (traefik, postgres, clickhouse)docker-compose.saas.yml— SaaS mode (logto, cameleer-saas)docker-compose.server.yml— standalone mode (server, server-ui)docker-compose.tls.yml— overlay: custom TLS cert volumedocker-compose.monitoring.yml— overlay: external monitoring network
SMTP configuration
SMTP / email connector configuration has been moved from the installer to the SaaS vendor admin UI (Email Connector page at /vendor/email). The installer no longer prompts for or persists SMTP settings.
Previously, SMTP env vars (SMTP_HOST, SMTP_PORT, SMTP_USER, SMTP_PASS, SMTP_FROM_EMAIL) were passed to the cameleer-logto container and configured via the bootstrap script. This one-shot approach was fragile — email delivery is now configured at runtime through the Logto Management API.
Registry configuration
The installer supports pulling images from a custom Docker registry via --registry. Default: gitea.siegeln.net/cameleer.
When a registry is configured, the installer writes *_IMAGE env vars to .env (e.g. TRAEFIK_IMAGE, POSTGRES_IMAGE, CAMELEER_IMAGE) which override the defaults baked into the compose templates. In SaaS mode, provisioning image refs (CAMELEER_SAAS_PROVISIONING_*IMAGE) are also set from the registry.
For private registries, pass --registry-user / --registry-token. The installer runs docker login before pulling images. Credentials are persisted in cameleer.conf for upgrades/reconfigure.
Env var naming convention
CAMELEER_AGENT_*— agent config (consumed by the Java agent)CAMELEER_SERVER_*— server config (consumed by cameleer-server)CAMELEER_SAAS_*— SaaS management plane configCAMELEER_SAAS_PROVISIONING_*— "SaaS forwards this to provisioned tenant servers"- No prefix (e.g.
POSTGRES_PASSWORD,PUBLIC_HOST) — shared infrastructure, consumed by multiple components
Development
This repo is used as a git submodule in cameleer-saas at installer/. The dev compose in cameleer-saas chains the production templates from this repo via COMPOSE_FILE — no duplication.
Fixes to compose templates go here, then git submodule update --remote installer in cameleer-saas propagates them to dev.