For AI agents: a documentation index is available at /llms.txt. A markdown version of this page is available at /guide/community/install/configuration.md.
Configuration
Environment variables, mail, sessions and the settings to change before you expose an instance.
The application reads its settings from environment variables. In Docker these
live in docker-compose.yml; for a manual install, set them in the web server
or shell environment.
#Core variables
| Variable | Purpose | Docker default |
|---|---|---|
DB_HOST | PostgreSQL host | orangescrum-postgres |
DB_NAME | Database name | orangescrum |
DB_USERNAME | Database user | orangescrum |
DB_PASSWORD | Database password | orangescrum |
FULL_BASE_URL | Public URL of the instance | http://oss.localhost:8091 |
CACHE_ENGINE | Cache backend | file |
SESSION_COOKIE_SECURE | Require HTTPS for session cookies | false |
SESSION_COOKIE_NAME | Session cookie name | OSS_SESSID |
SESSION_COOKIE_DOMAIN | Cookie domain | oss.localhost |
CSRF_COOKIE_NAME | CSRF cookie name | oss_csrfToken |
#FULL_BASE_URL
Every generated link — invitations, password resets, notification emails — is built from this. It must match the address people actually type, including scheme and port.
FULL_BASE_URL: https://orangescrum.example.com
A mismatch breaks invitations silently
The app keeps working; only the links in emails point somewhere wrong. Set this correctly before inviting anyone.
#Before you go live
The shipped defaults are tuned for plain-HTTP localhost development. Four things must change:
Change the database password
orangescrumis published in the repository. Set a strong password in both theorangescrum-postgresservice and the app'sDB_PASSWORD, then recreate both containers.Turn on secure cookies
SESSION_COOKIE_SECURE: "true"This is
falseby default because the default deployment is plain HTTP. Once you are behind TLS, flip it — otherwise the session cookie can travel unencrypted.Set the real base URL and cookie domain
FULL_BASE_URL: https://orangescrum.example.com SESSION_COOKIE_DOMAIN: orangescrum.example.comTerminate TLS
Put Nginx, Caddy or a load balancer in front, or use Certbot directly on a manual install.
Do not skip these
Publishing the default compose file to the internet exposes a database with a known password and sends session cookies over plain HTTP.
Without SMTP, invitations, password resets and notifications are never delivered. Configure it early — a broken password reset is discovered at the worst possible moment.
| Variable | Example |
|---|---|
EMAIL_HOST | smtp.example.com |
EMAIL_PORT | 587 |
EMAIL_USERNAME | notifications@example.com |
EMAIL_PASSWORD | your SMTP password |
EMAIL_FROM | notifications@example.com |
Send a test by triggering a password reset for an account you control, then check the log:
docker compose exec orangescrum-app tail -50 logs/error.log
Use a real relay
Mail sent directly from a random VPS is usually filed as spam. Use a transactional provider or your organisation's relay, and set SPF and DKIM.
#Caching
file is the default and fine for a single server. Clear the cache after any
configuration change:
docker compose exec orangescrum-app php bin/cake.php cache clear_all
Tip
If a setting seems not to apply, clear the cache before assuming the change did not take.
#Attachment storage
Uploads go to webroot/files, backed by the orangescrum-app-files volume in
Docker. This grows without bound — it is the volume to watch, and the one your
backups must include.
#Applying changes
docker compose up -d --force-recreate orangescrum-app
docker compose exec orangescrum-app php bin/cake.php cache clear_all
Set this up before you have data worth losing.