This table is the source of truth. server/.env.template and client/.env.template are copies to start from; scripts/check-docs.sh fails when a variable used in the code is missing here. For the reasoning behind each group of settings, read Server configuration.
The server loads server/.env with dotenv at startup (server/src/env.ts). There is no schema validation: a missing variable takes its default, or throws when first used if it has none.
| Variable |
Default |
Purpose |
APP_NAME |
Damvia - Open Source Digital Asset Management |
Returned by the public env query; the client uses it as the document title. |
APP_URL |
http://localhost:5173 |
Public URL of the client. Every link in an email is built from it, and expired download links redirect to APP_URL/link-expired. |
API_URL |
http://localhost:3000 |
Public URL of this server. Download links are API_URL/v1/downloads/{id}. |
APP_SECRET |
Damvia App Secret |
Secret used to sign JWT auth tokens (180-day lifetime). Change it: with the default, anyone can forge a token. Changing it later logs every user out. |
PORT |
3000 |
HTTP port the server listens on (0.0.0.0). |
NODE_ENV |
unset |
production in deployments. npm start sets it. |
ENABLE_WORKER |
unset (worker off) |
true starts the pg-boss worker inside this process. npm run dev sets it. See Worker and scaling. |
ENABLE_PASSWORD_LESS_AUTH |
false |
true disables passwords entirely: sign-up stores none and login always emails a magic link. |
| Variable |
Default |
Purpose |
DATABASE_URL |
postgresql://dam:dam@localhost/dam |
Postgres connection string, used by TypeORM and by pg-boss (which creates a pgboss schema in the same database). |
| Variable |
Default |
Purpose |
MAIN_S3_URL |
none, required |
http(s)://ACCESS_KEY:SECRET_KEY@host:port/bucket. Bucket for collection and page thumbnails, page images and the login background. |
ASSETS_S3_URL |
none, required |
Same syntax. Bucket for asset originals (asset-file/{id}), asset thumbnails and download archives (downloads/{id}). |
The scheme sets useSSL; the port defaults to 443 for https and 80 for http. Details in Object storage.
| Variable |
Default |
Purpose |
SMTP_HOST |
localhost |
SMTP server. |
SMTP_PORT |
1025 |
SMTP port. The defaults match MailHog from docker-compose.yml. |
SMTP_USER |
unset |
SMTP login. Authentication is only enabled when both SMTP_USER and SMTP_PASS are set. |
SMTP_PASS |
unset |
SMTP password. |
MAILCONFIG |
unset |
Base64-encoded JSON of the mail templates. When unset, the server reads server/mailconfig.json and exits with an error if the file is unreadable. See Email templates. |
| Variable |
Default |
Purpose |
ASSET_UPDATER |
none, required |
dropbox or onedrive. Any other value stops the server at startup with Provide a valid asset updater. |
DROPBOX_APP_KEY |
unset |
Dropbox app key (Dropbox only). |
DROPBOX_APP_SECRET |
unset |
Dropbox app secret. |
DROPBOX_REFRESH_TOKEN |
unset |
Long-lived refresh token obtained once through the OAuth flow. See Dropbox. |
DROPBOX_USE_TEAM_ROOT |
false |
true lists the Dropbox Business team space instead of the member’s home folder. |
ONEDRIVE_TENANT_ID |
unset |
Azure AD tenant (OneDrive only). |
ONEDRIVE_CLIENT_ID |
unset |
Azure app registration client id. |
ONEDRIVE_CLIENT_SECRET |
unset |
Azure app client secret. |
ONEDRIVE_USER |
unset |
User principal name whose drive is synced, for example [email protected]. |
ONEDRIVE_DRIVE |
unset |
Path inside that drive, Graph syntax, for example root:/DAM. See OneDrive. |
| Variable |
Default |
Purpose |
PRODUCT_MATCHING_REGEX |
unset (job logs an error and skips) |
Regex applied to each asset file name every 5 minutes. Capture group 1 is the product key, optional group 2 the product view. Example: ^(.{6}-\d{3})(?:\.(\d{2}))?. |
PIM_PRODUCT_VIEW |
unset |
The product view code (group 2 above) whose thumbnail represents the product in the admin product list, for example 00. |
See Products and PIM.
Client variables are read by Vite at build time and baked into the bundle. Changing one means restarting npm run dev or rebuilding.
| Variable |
Default |
Purpose |
VITE_API_ENDPOINT |
http://localhost:3000/trpc |
Full URL of the server’s tRPC endpoint, that is API_URL plus /trpc. |
VITE_BRAND_COLOR |
sky-400 |
Accent colour. A Tailwind colour name (red-500) or any CSS colour (#e11d48). |
VITE_BRAND_COLOR_HOVER |
sky-500 |
Hover shade of the accent. |
VITE_BRAND_COLOR_STRONG |
sky-600 |
Strong shade of the accent, used for emphasis text. |
The brand colours are resolved in client/tailwind.config.js, which loads client/.env itself. See Client configuration.