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.

CommunityInstall

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

VariablePurposeDocker default
DB_HOSTPostgreSQL hostorangescrum-postgres
DB_NAMEDatabase nameorangescrum
DB_USERNAMEDatabase userorangescrum
DB_PASSWORDDatabase passwordorangescrum
FULL_BASE_URLPublic URL of the instancehttp://oss.localhost:8091
CACHE_ENGINECache backendfile
SESSION_COOKIE_SECURERequire HTTPS for session cookiesfalse
SESSION_COOKIE_NAMESession cookie nameOSS_SESSID
SESSION_COOKIE_DOMAINCookie domainoss.localhost
CSRF_COOKIE_NAMECSRF cookie nameoss_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.

yaml
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:

  1. Change the database password

    orangescrum is published in the repository. Set a strong password in both the orangescrum-postgres service and the app's DB_PASSWORD, then recreate both containers.

  2. Turn on secure cookies

    yaml
    SESSION_COOKIE_SECURE: "true"
    

    This is false by default because the default deployment is plain HTTP. Once you are behind TLS, flip it — otherwise the session cookie can travel unencrypted.

  3. Set the real base URL and cookie domain

    yaml
    FULL_BASE_URL: https://orangescrum.example.com
    SESSION_COOKIE_DOMAIN: orangescrum.example.com
    
  4. Terminate 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.

#Email

Without SMTP, invitations, password resets and notifications are never delivered. Configure it early — a broken password reset is discovered at the worst possible moment.

VariableExample
EMAIL_HOSTsmtp.example.com
EMAIL_PORT587
EMAIL_USERNAMEnotifications@example.com
EMAIL_PASSWORDyour SMTP password
EMAIL_FROMnotifications@example.com

Send a test by triggering a password reset for an account you control, then check the log:

bash
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:

bash
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

bash
docker compose up -d --force-recreate orangescrum-app
docker compose exec orangescrum-app php bin/cake.php cache clear_all
💾Backup and restore

Set this up before you have data worth losing.