Solidtime configuration reference¶
Configuration lives in dp-infra/solidtime/config.yaml (non-secret).
It is rendered into a solidtime-env ConfigMap plus per-container secret environment variables.
Secrets come from External Secrets Operator (ESO).
config.yaml¶
Key |
Example |
Notes |
|---|---|---|
|
|
Target namespace |
|
|
Ingress host and |
|
|
Pinned image tag; never |
|
|
CNPG image major version |
|
|
Gotenberg image tag |
|
|
CNPG volume size |
|
|
Web replicas; scheduler and worker are always 1 |
|
hel1, |
Hot app-file bucket |
|
fsn1, |
Cold database-backup bucket |
|
|
Must be a Mailjet-verified sender domain |
|
|
Comma-separated; granted admin on registration |
|
|
|
|
|
CNPG cron; the seconds field comes first |
Environment variables¶
Warning
Solidtime’s environment variable names are not all Laravel defaults.
The S3 disk uses S3_*, not AWS_*.
The names below are validated against the official configuration docs and the image’s config/*.php files.
App and auth¶
The app secrets come from solidtime-app-secrets.
APP_KEYLaravel key in the form
base64:<32 bytes>.PASSPORT_PRIVATE_KEY,PASSPORT_PUBLIC_KEYPassport OAuth RSA keypair. Both are required.
APP_URLhttps://time.kup.tirol.APP_ENABLE_REGISTRATIONfalsefor invite-only.SUPER_ADMINSComma-separated admin emails.
LOG_CHANNELstderr, so logs appear inkubectl logs.
You must never rotate APP_KEY or the Passport keys.
Rotating them invalidates all encrypted data, sessions, and OAuth tokens.
scripts/bootstrap-secrets.sh reuses the existing keys when the source secret already exists.
Database¶
The host comes from the ConfigMap and the credentials from the CNPG-generated solidtime-postgres-app secret.
Set DB_CONNECTION=pgsql, DB_HOST=solidtime-postgres-rw, DB_PORT=5432, DB_DATABASE=solidtime.
DB_USERNAME and DB_PASSWORD come from the secret.
Cache, queue, and sessions¶
Set CACHE_STORE=database, QUEUE_CONNECTION=database, SESSION_DRIVER=database.
The worker runs WORKER_COMMAND (php artisan queue:work --tries=3 --sleep=3 --max-time=3600).
The scheduler runs migrations on start through AUTO_DB_MIGRATE=true.
Mail¶
The credentials come from solidtime-smtp-secrets (the Mailjet API key and secret).
Set MAIL_MAILER=smtp, MAIL_HOST=in-v3.mailjet.com, MAIL_PORT=587, MAIL_ENCRYPTION=tls, MAIL_FROM_ADDRESS=noreply@kleinundpartner.at.
File storage¶
The app stores files on the hel1 S3 bucket; the credentials come from solidtime-s3-credentials.
Set FILESYSTEM_DISK=s3, S3_REGION=hel1, S3_BUCKET=solidtime-files-kup6s, S3_ENDPOINT=https://hel1.your-objectstorage.com, S3_USE_PATH_STYLE_ENDPOINT=true.
Hetzner Object Storage requires path-style addressing.
S3_ACCESS_KEY_ID and S3_SECRET_ACCESS_KEY come from the secret.
PDF export¶
Set GOTENBERG_URL=http://solidtime-gotenberg:3000.
Secrets bootstrap¶
The source secrets live in application-secrets and ESO projects them into the solidtime namespace.
Create them with scripts/bootstrap-secrets.sh.
dp-infra/solidtime/scripts/bootstrap-secrets.sh
The script auto-generates APP_KEY and the Passport keypair, and prompts for the Mailjet credentials.
The S3 credentials are not bootstrapped here.
They reuse the cluster-wide hetzner-s3-creds-standard through the hetzner-s3-cluster-store ClusterSecretStore.