Require user@domain.tld format (must contain @ and dot in domain).
Interactive mode loops until valid; silent mode exits with error.
Default changed from 'admin' to 'admin@<PUBLIC_HOST>' in SaaS mode.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Move deployment mode question before admin credentials so the installer
can validate email format in SaaS mode. Remove separate SAAS_ADMIN_EMAIL
— the admin user value IS the email address. In standalone mode, any
username is still accepted.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Derive admin email from <ADMIN_USER>@<PUBLIC_HOST> by default.
Supports override via --admin-email CLI flag, SAAS_ADMIN_EMAIL env var,
or admin_email in cameleer.conf. Written to .env for bootstrap.
Passwords with $, &, ;, [, etc. were written unquoted to .env and
cameleer.conf, causing Docker Compose to mangle them. Now all password
and secret fields are written as KEY='value' with embedded single
quotes escaped as '\''.
Also removes inline DB_URL from docker-compose.saas.yml — the Logto
entrypoint now builds it from PG_USER/PG_PASSWORD/PG_HOST using
node's encodeURIComponent for URL-safe encoding.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Installer scripts and compose templates for deploying the Cameleer
SaaS platform. Supports multi-tenant SaaS and standalone modes.
Bootstrap:
curl -fsSL https://registry.cameleer.io/.../get-cameleer.sh | bash
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>