Configuration Reference
Invito is configured entirely via environment variables. There are no configuration files.
Required Variables
INVITO_BASE_URL
The public base URL at which Invito is reachable, without a trailing slash.
Used to construct:
- OIDC redirect URI (
{INVITO_BASE_URL}/auth/callback) - Confirm/reject links in notification emails
INVITO_BASE_URL=https://invito.example.com
INVITO_SESSION_SECRET
A 32-byte value encoded as a 64-character hex string. Used for:
- Signing session cookies (HMAC-SHA256)
- Encrypting CalDAV passwords at rest (AES-256-GCM)
Generate a suitable value:
openssl rand -hex 32
Rotating this value invalidates all active sessions and renders stored CalDAV passwords unreadable. Users will need to reconnect their calendars.
INVITO_OIDC_ISSUER
The OIDC issuer URL. Invito performs discovery at {issuer}/.well-known/openid-configuration.
INVITO_OIDC_ISSUER=https://auth.example.com/realms/main
INVITO_OIDC_CLIENT_ID
The client ID registered with your OIDC provider.
INVITO_OIDC_CLIENT_SECRET
The client secret for the registered OIDC application.
INVITO_SMTP_HOST
Hostname of the SMTP server used to send notification emails.
INVITO_SMTP_USER
SMTP authentication username.
INVITO_SMTP_PASSWORD
SMTP authentication password.
INVITO_SMTP_FROM
The From address for outgoing emails.
INVITO_SMTP_FROM=invito@example.com
Optional Variables
INVITO_DB_PATH
Path to the SQLite database file.
- Default:
./invito.db - Invito creates the file on first run if it does not exist.
- Ensure the parent directory is writable.
INVITO_DB_PATH=/data/invito.db
INVITO_LISTEN_ADDR
TCP address and port for the HTTP server.
- Default:
:8080
INVITO_LISTEN_ADDR=:3000
INVITO_LISTEN_ADDR=127.0.0.1:8080
INVITO_SMTP_PORT
SMTP port number.
- Default:
587(STARTTLS) - Use
465for implicit TLS (SMTPS). - Use
25for unauthenticated relay (not recommended).
INVITO_SYNC_INTERVAL
How often Invito polls CalDAV servers for calendar updates. Accepts Go duration strings.
- Default:
15m - Minimum recommended:
5m
INVITO_SYNC_INTERVAL=30m
INVITO_BOOKING_TTL
How long a PENDING booking is held before being automatically cancelled. Accepts Go duration strings.
- Default:
24h
INVITO_BOOKING_TTL=48h
OIDC Provider Setup
Your OIDC provider must be configured with:
- Redirect URI:
{INVITO_BASE_URL}/auth/callback - Scopes:
openid email profile - Claims used:
sub,email,name,preferred_username
The preferred_username claim is used to generate the user's public booking URL slug. If your provider does not include this claim, configure it to do so, or users will receive a randomly-generated slug.
Example: Keycloak
- Create a new client with type OpenID Connect.
- Set Valid Redirect URIs to
{INVITO_BASE_URL}/auth/callback. - Enable Standard Flow.
- Under Client Scopes, ensure
profileis included (it containspreferred_username).
Example: GitHub (via Dex or Authentik)
Configure your bridge to map the GitHub username to the preferred_username claim.
Docker Environment File
A complete example .env file for Docker deployments:
INVITO_BASE_URL=https://invito.example.com
INVITO_DB_PATH=/data/invito.db
INVITO_SESSION_SECRET=<output of: openssl rand -hex 32>
INVITO_OIDC_ISSUER=https://auth.example.com/realms/main
INVITO_OIDC_CLIENT_ID=invito
INVITO_OIDC_CLIENT_SECRET=your-client-secret
INVITO_SMTP_HOST=smtp.example.com
INVITO_SMTP_PORT=587
INVITO_SMTP_USER=invito@example.com
INVITO_SMTP_PASSWORD=your-smtp-password
INVITO_SMTP_FROM=invito@example.com
INVITO_SYNC_INTERVAL=15m
INVITO_BOOKING_TTL=24h