Both installers (bash + PS1) now support pulling images from a custom Docker registry. Writes *_IMAGE env vars to .env so compose templates use the configured registry. Runs docker login before pull when credentials are provided. Persisted in cameleer.conf for upgrades/reconfigure. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
3.5 KiB
Installer
Deployment Modes
The installer (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 installer/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
Both installers (install.sh and install.ps1) prompt for SMTP settings in SaaS mode when the user opts in ("Configure SMTP for email verification?"). SMTP is required for self-service sign-up — without it, only admin-created users can sign in.
Env vars: SMTP_HOST, SMTP_PORT (default 587), SMTP_USER, SMTP_PASS, SMTP_FROM_EMAIL (default noreply@<PUBLIC_HOST>). Passed to the cameleer-logto container. The bootstrap script (Phase 8b) discovers the SMTP connector factory and creates the connector with Cameleer-branded email templates.
CLI args: --smtp-host, --smtp-port, --smtp-user, --smtp-pass, --smtp-from-email (bash) / -SmtpHost, -SmtpPort, -SmtpUser, -SmtpPass, -SmtpFromEmail (PS1). Persisted in cameleer.conf for upgrades/reconfigure.
Registry configuration
Both installers support pulling images from a custom Docker registry via --registry (bash) / -Registry (PS1). 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 (bash) or -RegistryUser / -RegistryToken (PS1). 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"SMTP_*— email delivery config for Logto (consumed by bootstrap, SaaS mode only)- No prefix (e.g.
POSTGRES_PASSWORD,PUBLIC_HOST) — shared infrastructure, consumed by multiple components