Skip to content

Configuration

All configuration is done through the .env file in the root of the selfhosted repo. Sensitive values (passwords, API keys) are stored as Docker secrets in ./secrets/ — see Docker Secrets for details.

VariableDescriptionDefault
PROJECT_NAMEDocker Compose project namesolyto
SOLYTO_VERSIONVersion tag for solyto imageslatest

These are the domain names pointing to your server. Each service gets its own (sub)domain.

VariableDescriptionExample
API_DOMAINDomain for the APIapi.example.com
APP_DOMAINDomain for the frontendapp.example.com
DAV_DOMAINDomain for CalDAV/CardDAVdav.example.com
ACME_EMAILEmail for Let’s Encrypt certificate notificationsadmin@example.com
VariableDescriptionDefault
APP_NAMEApplication display namesolyto
APP_URLFull URL to the APIhttps://${API_DOMAIN}
FRONTEND_URLFull URL to the frontendhttps://${APP_DOMAIN}
APP_ENVApplication environmentproduction
APP_DEBUGEnable debug modefalse
APP_TIMEZONEDefault application timezoneUTC
VariableDescriptionDefault
NODE_ENVNode.js environmentproduction
PUBLIC_API_URLURL the frontend uses to reach the APIhttps://${API_DOMAIN}
PUBLIC_DISABLE_DEV_REQUESTSHide the Dev Requests sectiontrue
PUBLIC_REDIRECT_AFTER_LOGOUTURL to redirect to after logout${APP_URL}
PUBLIC_LEGAL_NOTICE_URLLink for the legal notice button(empty)
PUBLIC_PRIVACY_URLLink for the privacy policy button(empty)
PUBLIC_TERMS_URLLink for the terms of service button(empty)

Set PUBLIC_DISABLE_DEV_REQUESTS=true to hide the Dev Requests link and disable the route entirely (the default on self-hosted instances, since requests wouldn’t reach the solyto team). Set any of the PUBLIC_*_URL variables to show a legal-notice button linking to your own imprint, privacy policy, or terms.

VariableDescriptionDefault
MARIADB_VERSIONMariaDB image version12
POSTGRES_VERSIONPostgreSQL image version17
REDIS_VERSIONRedis image version7.4.1
VariableDescriptionDefault
DB_CONNECTIONDatabase drivermariadb
DB_HOSTMariaDB hostnamemariadb
DB_PORTMariaDB port3306
DB_DATABASEDatabase nameapi

Credentials (DB_USER, DB_PASSWORD) are read from Docker secrets (db_user, db_password). The MariaDB root password is read from mariadb_root_password.

VariableDescriptionDefault
DAV_DB_HOSTPostgreSQL hostnamepostgres
DAV_DB_PORTPostgreSQL port5432
DAV_DB_DATABASEDAV database namedav

Credentials are read from Docker secrets (dav_db_user, dav_db_password). The PostgreSQL root password is read from postgres_root_password.

VariableDescriptionDefault
REDIS_CLIENTRedis client libraryphpredis
REDIS_HOSTRedis hostnameredis
REDIS_PORTRedis port6379
REDIS_PASSWORDRedis password(from Docker secret)
REDIS_PREFIXKey prefix for this instancesolyto_
VariableDescriptionDefault
TRUSTED_PROXIESTrusted proxy IPs (needed when using an external reverse proxy)(empty)
VariableDescriptionDefault
TIMEZONEServer timezoneUTC

This affects PHP and queue worker timezone settings.

VariableDescriptionDefault
AI_BASE_URLOpenAI-compatible API base URL(empty — OpenAI default)
AI_MODELDefault AI modelgpt-4o-mini

The API key is stored in the ai_api_key Docker secret. This is only needed if you want to use library recommendations.

VariableDescriptionDefault
MAILGUN_DOMAINMailgun domain for sending email(empty)
MAIL_FROM_ADDRESSSender email addressnoreply@example.com
MAIL_FROM_NAMESender display namesolyto

The Mailgun secret is stored in the mailgun_secret Docker secret.

VariableDescriptionDefault
IMAGE_DRIVERImage processing backendintervention

Options:

  • intervention — uses the Intervention Image PHP library (default, no extra service needed)
  • imgproxy — uses the standalone imgproxy service for better performance with large images

When IMAGE_DRIVER=imgproxy, the imgproxy container is started and credentials are read from the imgproxy_key and imgproxy_salt Docker secrets.

VariableDescriptionDefault
TELEGRAM_DEBUG_CHAT_IDChat ID for debug notifications(empty)

Telegram bot credentials are stored in Docker secrets (solyto_bot_telegram_token, solyto_bot_webhook_token). See Telegram Bot for setup instructions.

After editing .env, restart the affected services:

Terminal window
docker compose up -d

Docker Compose detects changes in .env and recreates containers with the new values.