Skip to content
Annuva
Documentation · Configuration

Getting started

Configuration

All environment variables of Annuva with their defaults. Every variable is optional.

Annuva is configured with environment variables – in compose.yaml, with docker run -e or in a .env file during development. Every variable is optional: without any configuration Annuva starts as a single-tenant instance with SQLite in the data folder.

Invalid values stop the server at start with a message that names the variable.

Application

Variable Default Description
APP_MODE single single: self-hosted with setup wizard. multi: several tenants with self-registration (prepared).
APP_NAME Annuva Name shown in the UI and in e-mails.
APP_URL – Public URL. Only needed for links in e-mails sent without a request; otherwise it is taken from the request.
HOSTNAME 0.0.0.0 Listen address.
PORT 40100 Listen port.
DATA_DIR ./data Database (SQLite), uploaded files, invoice PDFs and generated secrets. In the image: /var/www/data.
DEFAULT_LOCALE en Language for new users when the browser language is not supported (de, en).
DEFAULT_TIMEZONE Europe/Berlin Time zone for new users.
UPLOAD_MAX_SIZE 20MB Maximum upload size (B, KB, MB, GB).
GRAVATAR_ENABLED true Use Gravatar when a user has no profile picture.
LOG_LEVEL info debug, info, warn or error.

Database

Variable Default Description
DB_DRIVER sqlite sqlite, mysql or postgres.
DB_SQLITE_FILE annuva.sqlite SQLite file, relative to DATA_DIR.
DB_HOST localhost MySQL/Postgres host.
DB_PORT 3306 / 5432 MySQL/Postgres port.
DB_NAME annuva Database name.
DB_USER annuva Database user.
DB_PASSWORD – Database password.
DATABASE_URL – Alternative to the DB_* values, e.g. postgres://user:pass@host/db.

Security

Variable Default Description
AUTH_SECRET generated Secret for session and token hashes. Generated into DATA_DIR/.auth-secret when empty.
SETUP_TOKEN generated Protects the setup wizard. Generated and printed to the log when empty.
SESSION_MAX_AGE_DAYS 30 Lifetime of a login session.

If you set AUTH_SECRET yourself, keep it stable: changing it signs everyone out and invalidates all API tokens.

E-mail

Without SMTP_HOST no e-mails are sent – password reset, sending invoices and reminders are disabled in the UI.

Variable Default Description
SMTP_HOST – SMTP server.
SMTP_PORT 587 SMTP port.
SMTP_SECURE false true for implicit TLS (port 465).
SMTP_USER – SMTP user.
SMTP_PASSWORD – SMTP password.
MAIL_FROM – Sender address. Mails go out as "<Company> via Annuva" <MAIL_FROM> with the company e-mail as Reply-To.

Example

yaml
environment:
    TZ: Europe/Berlin
    DEFAULT_LOCALE: de
    SMTP_HOST: smtp.example.com
    SMTP_PORT: 587
    SMTP_USER: annuva@example.com
    SMTP_PASSWORD: secret
    MAIL_FROM: annuva@example.com
Edit this page on GitHub