For the complete documentation index, see llms.txt. This page is also available as Markdown.

Advanced Docker configuration for Devolutions Server

This article covers advanced configuration options for Devolutions Server's Docker deployment, including complete environment variable reference, certificate management, performance tuning, and security hardening.

Environment variables reference

Database connection variables

Variable
Required
Default
Description

DATABASE_HOST

Yes

SQL Server hostname. For non-standard ports, use host,port format (e.g., sql.example.com,1433).

AZURE_SQL_HOST

Yes*

Alias for DATABASE_HOST (Azure-specific naming).

DATABASE_NAME

Yes

Devolutions Server database name.

AZURE_SQL_DATABASE

Yes*

Alias for DATABASE_NAME.

DATABASE_USERNAME

Yes

SQL authentication username (use least-privilege account with db_owner on Devolutions Server database).

AZURE_SQL_USERNAME

Yes*

Alias for DATABASE_USERNAME.

DATABASE_PASSWORD

Yes

SQL authentication password (treat as secret, use Docker secrets or Azure Key Vault).

AZURE_SQL_PASSWORD

Yes*

Alias for DATABASE_PASSWORD.

DATABASE_PORT

No

1433

SQL Server port (appended to host if not already specified in DATABASE_HOST).

AZURE_SQL_PORT

No

1433

Alias for DATABASE_PORT.

DATABASE_ENCRYPT

No

false

Set to true to encrypt the SQL Server connection (TLS). Required when the SQL Server enforces encryption. Read on every container start — pass it on every docker run.

DATABASE_TRUST_SERVER_CERTIFICATE

No

false

Set to true to trust the SQL Server's certificate without validation. Use with DATABASE_ENCRYPT=true when the server presents a self-signed certificate (e.g. SQL Server 2022 in a container).

Variables marked with * are aliases. Use either the standard or Azure-specific naming, not both.

Web server configuration

Variable
Required
Default
Description

HOSTNAME

No

localhost

Server hostname (overridden by WEBSITE_HOSTNAME on Azure).

WEB_SCHEME

No

http

Protocol: http or https. Set to https to enable TLS.

WEB_PORT / PORT

No

5000

Port the container listens on.

EXTERNAL_WEB_SCHEME

No

Mirrors WEB_SCHEME

External protocol when behind reverse proxy (e.g., https when proxy handles TLS).

EXTERNAL_WEB_PORT

No

Mirrors WEB_PORT

External port when behind reverse proxy (e.g., 443 for standard HTTPS).

TLS certificate configuration

Variable
Required
Default
Description

TLS_CERTIFICATE_FILE

No*

Path to mounted PEM certificate file (e.g., /opt/devolutions/dvls/certs/server.pem)

TLS_PRIVATE_KEY_FILE

No*

Path to mounted PEM private key file (e.g., /opt/devolutions/dvls/certs/server.key)

TLS_CERTIFICATE_B64

No*

Base64-encoded certificate content (written to App_Data/server.pem)

TLS_PRIVATE_KEY_B64

No*

Base64-encoded private key content (written to App_Data/server.key)

If WEB_SCHEME=https and no certificate is provided, a self-signed certificate is auto-generated (valid ~5 years, 2048-bit RSA). Use file mounts or base64 variables for production certificates.

Operating mode configuration

DVLS_INIT and DVLS_UPDATE_MODE are mutually exclusive. Setting both to true will cause an error.

Variable
Required
Default
Description

DVLS_INIT

No

false

Set to true to run initialization mode (creates schema, admin user, then exits).

DVLS_UPDATE_MODE

No

false

Set to true to run update mode (backs up, migrates database, then exits).

DVLS_BACKUP_PATH

No

/tmp/dvls-backup

Backup location during updates (mount volume to persist backups).

Initialization mode variables

These variables are only used during initialization (DVLS_INIT=true):

Variable
Required
Default
Description

DVLS_ADMIN_USERNAME

No

dvls-admin

Admin account username created during initialization.

DVLS_ADMIN_PASSWORD

No

dvls-admin

Admin account password. MUST be changed in production!

DVLS_ADMIN_EMAIL

No

admin@<HOSTNAME>

Admin account email address

System configuration

Variable
Required
Default
Description

DVLS_PATH

No

/opt/devolutions/dvls

Installation root path (appsettings and App_Data location).

DVLS_EXECUTABLE_PATH

No

/opt/devolutions/dvls/Devolutions.Server

Devolutions Server executable path in runtime mode.

DVLS_TELEMETRY

No

true

Enable/disable telemetry collection.

DVLS_ENCRYPTION_CONFIG_B64

No

Base64-encoded encryption configuration (required for consistent encryption across scaled instances).

SSH Access Configuration

Variable
Required
Default
Description

SSH_ENABLED

No

false

Enable SSH daemon for debugging (auto-enabled on Azure unless explicitly disabled),

SSH_PORT

No

2222

SSH listen port (publish with -p 2222:2222),

SSH_PASSWORD

Yes*

Docker!

Root password for SSH (REQUIRED if SSH_ENABLED=true, MUST be changed in production!

If SSH_ENABLED=true without SSH_PASSWORD, the container will refuse to start for security reasons.

Azure Web App variables

These variables are automatically set by Azure App Service:

Variable
Set By
Description

WEBSITE_HOSTNAME

Azure

Overrides HOSTNAME (e.g., dvls-prod.azurewebsites.net)

WEBSITE_INSTANCE_ID

Azure

Presence forces EXTERNAL_WEB_SCHEME=https and EXTERNAL_WEB_PORT=443, auto-enables SSH

TLS certificate configuration

Auto-generated self-signed certificate

When WEB_SCHEME=https without certificate variables, Devolutions Server generates a self-signed certificate (valid ~5 years, 2048-bit RSA, CN=hostname):

Certificate files via volume mount

Mount certificate files from the host:

Certificate format requirements:

  • Certificate: PEM format (.pem, .crt)

  • Private key: PEM format (.key, .pem)

  • Chain: Include intermediate certificates in the certificate file

Example certificate file with chain:

Base64-encoded certificates

Use base64-encoded certificates when working with secrets management systems (Azure Key Vault, Kubernetes Secrets):

Certificate and private key are written to /opt/devolutions/dvls/App_Data/ and referenced in Devolutions Server configuration.

Database Configuration

Connection string format

Devolutions Server constructs the SQL Server connection string from environment variables:

Standard port (1433)

Or omit DATABASE_PORT (defaults to 1433):

Non-standard port

Option 1: Include port in hostname:

Option 2: Separate port variable:

Azure SQL database

Encrypted database connection (TLS)

By default, Devolutions Server connects to SQL Server without TLS. If your SQL Server enforces encryption (for example SQL Server 2022, which requires TLS by default, or any instance with "Force Encryption" enabled), the connection will fail unless you enable encryption on the client side.

Scenario
Required variables

SQL Server with a CA-trusted certificate

DATABASE_ENCRYPT=true

SQL Server with a self-signed certificate (e.g. containerized SQL Server 2022)

DATABASE_ENCRYPT=true and DATABASE_TRUST_SERVER_CERTIFICATE=true

SQL Server Authentication vs Windows Authentication

Devolutions Server Docker containers only support SQL Server Authentication (username/password). Windows Authentication (Integrated Security) is not supported in Linux containers.

Reverse proxy configuration

When Devolutions Server runs behind a reverse proxy, nginx ingress, or Azure App Service, configure external URL settings:

Key settings:

  • WEB_SCHEME=http - Container uses HTTP

  • EXTERNAL_WEB_SCHEME=https - Public URL is HTTPS

  • EXTERNAL_WEB_PORT=443 - Standard HTTPS port (omitted in URLs)

  • HOSTNAME=devolutions-server.company.com - Public hostname

Devolutions Server generates URLs like https://devolutions-server.company.com/ in the UI and API responses.

Security hardening

Secrets management

Docker Secrets (Swarm mode)

Environment files

Azure Key Vault

Use Managed Identity to retrieve secrets from Key Vault at runtime. See Devolutions Server deployment to Azure App Service using a container for more details.

Network isolation

Use Docker networks to isolate Devolutions Server:

SSH access

Disable SSH in production unless required for debugging:

If SSH is enabled:

  • Use strong passwords.

  • Change default password.

  • Restrict access with firewall rules.

  • Consider SSH key authentication (requires custom image).

Version updates

Version tagging

  • Images are tagged by release version (e.g., release-2025.3, release-2026.1) and by specific build (e.g., 2025.3.1.0, 2025.3.2.0).

  • No latest tag exists - always specify a version.

  • Minor/patch updates within the same release version are automatically included when pulling the release tag.

  • Database update mode is only required when changing major versions (e.g., release-2025.3release-2026.1).

Version 2026.1 is used for illustration; replace with the actual latest major version when updating.

Major version update

Minor/patch update (e.g., 2025.3.1 to 2025.3.2)

Security checklist

Consult Devolutions Server security hardening for:

  • Administration accounts settings

  • Password policies

  • Multifactor authentication

  • IP restrictions

  • Audit logging

  • Encryption settings

See also

Last updated

Was this helpful?