Skip to content

Configuration

calServer v2 configuration is primarily managed through environment variables in the .env file of the Laravel container.

Environment Variables

Database

Variable Description Example
DB_HOST MySQL hostname mysql
DB_PORT MySQL port 3306
DB_DATABASE Database name calserver
DB_USERNAME Database user calserver
DB_PASSWORD Database password <DB-PASSWORD>
DB_PREFIX Table prefix thermo_

Redis

Variable Description Example
REDIS_HOST Redis hostname redis
REDIS_PORT Redis port 6379
REDIS_PASSWORD Redis password null

Broadcasting / Pusher (Live Updates)

Live grid updates are off by default. New notifications and their counters are polled once a minute instead; that needs no permanent process and works behind reverse proxies that block WebSockets. Without a broadcaster, lists show other users' changes only after a reload.

Variable Description Default
BROADCAST_CONNECTION Broadcaster: null (off), log, redis or pusher null (container), log (Laravel default)
PUSHER_APP_ID Pusher Application ID —
PUSHER_APP_KEY Pusher App Key —
PUSHER_APP_SECRET Pusher App Secret —
PUSHER_APP_CLUSTER Pusher Cluster (e.g. eu) eu

Pusher needs a package that is not shipped

BROADCAST_CONNECTION=pusher only takes effect when all three credentials are set and pusher/pusher-php-server is installed. If anything is missing, calServer selects the null driver instead of queueing broadcast jobs that are certain to fail. When the credentials are there and only the package is missing, the reason is shown under Administration → Operations → Queue.

DMS (Document Management)

Variable Description Default
DMS_INBOX_ENABLED Automatic inbox processing. Stays off while calServer V1 runs alongside: both would empty the same folder false
DMS_INBOX_SCHEDULE How often the run is due (Laravel scheduler method, e.g. everyFiveMinutes, hourly) everyFiveMinutes
DMS_INBOX_ARCHIVE Move imported source files to {inbox}/_archive instead of deleting them. false is the V1 behaviour true
DMS_STORAGE_MODE Where the DMS store lives: own (its own tree under storage/app) or v1-tree (V2 keeps writing in the V1 file manager tree) own
DMS_PATH DMS store, overrides the mode. Path inside the container; leave empty to let the mode apply derived from the mode
DMS_INBOX_PATH Inbox, overrides the mode. A container path as well derived from the mode
DMS_CERT_IMPORT_PATH Staging area for certificate import, deliberately not a subfolder of the inbox storage/app/certificate-imports
FILE_MANAGER_PATH Host path of the file manager tree, i.e. the mount source. Not to be confused with the target inside the container (/app/storage/app/filemanager) none, must be set
FILEMANAGER_MOUNT_MODE How the file manager volume is mounted. Derived, do not set: deploy.sh writes the line into .env from DMS_STORAGE_MODE on every run ro or rw
FILEMANAGER_MOUNT_MODE_PIN Pins the mount mode deliberately against the storage mode. Stays put and wins over the derivation empty

Which mode fits when, and how the documents of an existing V1 are brought over, is covered under Operations → File storage.

General

Variable Description Default
APP_ENV Environment production
APP_DEBUG Debug mode false
APP_URL Base URL https://your-instance.example.com

Nginx Proxy Routing

URL routing is handled via the Nginx proxy:

# calServer v1 (default)
location / {
    proxy_pass http://calserver:8080;
}

# API v2
location /api/v2/ {
    proxy_pass http://calserver-api-v2:8081;
}

# Frontend v2
location /v2/ {
    proxy_pass http://calserver-frontend:3000;
}

Scheduler

The Laravel scheduler must be activated in the container:

* * * * * cd /var/www/html && php artisan schedule:run >> /dev/null 2>&1

In Docker, this is automatically managed via Supervisor.

Configuration changes

After changes to the .env file, the container must be restarted:

docker compose restart calserver-api-v2