Déployer Devolutions Server avec Docker

Cet article montre comment déployer Devolutions Server en utilisant Docker.

Pour simplifier, la version de l'image Docker de Devolutions Server est écrite 20XX.X dans les blocs de code de cet article. Changer cette variable à la version que vous souhaitez utiliser.

Prérequis

  • Version de Docker 20.10.X ou supérieure. Sur macOS ARM64, utiliser --platform linux/amd64 durant la phase d'initialisation en raison de la compatibilité d'assemblage. Le mode runtime fonctionne nativement sur ARM64.

  • Une instance SQL Server correctement configurée pour Devolutions Server.

  • Les exigences minimales du système pour exécuter Devolutions Server.

Première configuration de Devolutions Server

  1. Créer une connexion et une base de données dédiée en utilisant un compte d'administration (par exemple, sa ou un administrateur Azure SQL). Octroyer l'accès de moindre privilège à Devolutions Server.

  2. Tirer la dernière image Docker de Devolutions Server:

    docker pull devolutions/devolutions-server:release-20XX.X
    
  3. Exécuter Devolutions Server en mode d'initialisation pour créer le schéma de la base de données et son premier administrateur, générer des clés de chiffrement, et configurer HTTPS avec un certificat auto-signé. Sauvegarder App_Data pour que la configuration du chiffrement soit récupérable pour l'étape suivante.

    Sur macOS, c'est ici qu'il faut ajouter --platform linux/amd64.

    docker volume create dvls-init-data
    
    docker run --rm `
      -e DATABASE_HOST=your-sql-server.database.windows.net `
      -e DATABASE_NAME=dvls `
      -e DATABASE_USERNAME=dvls_user `
      -e DATABASE_PASSWORD='YourSecurePassword!' `
      -e HOSTNAME=localhost `
      -e WEB_SCHEME=https `
      -e PORT=5000 `
      -e DVLS_INIT=true `
      -v dvls-init-data:/opt/devolutions/dvls/App_Data `
      -p 5000:5000 `
      devolutions/devolutions-server:release-20XX.X
    
  4. Extraire encryption.config du volume d'initialisation:

    docker run --rm `
      -v dvls-init-data:/data `
      alpine `
      cat /data/encryption.config
    
  5. Convertir le fichier extrait en base64 et le stocker de manière sécurisée car il sera nécessaire pour chaque démarrage runtime :

    docker run --rm `
      -v dvls-init-data:/data `
      alpine `
      cat /data/encryption.config > $env:TEMP\encryption.config
    
    $content = Get-Content -Path "$env:TEMP\encryption.config" -Raw
    $bytes = [System.Text.Encoding]::UTF8.GetBytes($content)
    $base64 = [System.Convert]::ToBase64String($bytes)
    $base64 | Out-File -FilePath "$env:TEMP\encryption.config.b64" -NoNewline -Encoding ASCII
    
  6. Démarrer Devolutions Server en utilisant la configuration de chiffrement base64. Une fois cela fait, utiliser les commandes docker ps et docker logs dvls-server pour vous assurer que tout fonctionne correctement.

    $encryptionConfig = Get-Content "$env:TEMP\encryption.config.b64" -Raw
    
    docker run -d --name dvls-server `
      -e DATABASE_HOST=your-sql-server.database.windows.net `
      -e DATABASE_NAME=dvls `
      -e DATABASE_USERNAME=dvls_user `
      -e DATABASE_PASSWORD='YourSecurePassword!' `
      -e HOSTNAME=localhost `
      -e WEB_SCHEME=https `
      -e PORT=5000 `
      -e DVLS_ENCRYPTION_CONFIG_B64="$encryptionConfig" `
      -p 5000:5000 `
      devolutions/devolutions-server:release-20XX.X
    
  7. Accéder à l'interface web en ouvrant https://localhost:5000 dans votre navigateur. Passer outre l'avertissement de sécurité du certificat auto-signé en cliquant sur AvancéContinuer. Vous pouvez installer un certificat TSL personnalisé plus tard.

  8. Se connecter en utilisant dvls-admin pour le nom d'utilisateur et le mot de passe.

    Immédiatement après la connexion, changer le mot de passe par défaut en allant sur AdministrationUtilisateurs, en cliquant sur le bouton d'ellipsis vertical de l'utilisateur dvls-admin, et en sélectionnant Changer le mot de passe.

  9. S'assurer que Devolutions Server fonctionne avec DVLS_ENCRYPTION_CONFIG_B64, que son interface web est accessible, et que encryption.config.b64 est enregistré dans un emplacement sécurisé (il est nécessaire pour chaque redémarrage et redéploiement). Une fois cela fait, le volume d'initialisation temporaire peut être supprimé en toute sécurité:

    docker volume rm dvls-init-data
    

Première configuration de Devolutions Server

  1. Créer une connexion et une base de données dédiée en utilisant un compte d'administration (par exemple, sa ou un administrateur Azure SQL). Octroyer l'accès de moindre privilège à Devolutions Server.

  2. Tirer la dernière image Docker de Devolutions Server:

    docker pull devolutions/devolutions-server:release-20XX.X
    
  3. Exécuter Devolutions Server en mode d'initialisation pour créer le schéma de la base de données et son premier administrateur, générer des clés de chiffrement, et configurer HTTPS avec un certificat auto-signé. Sauvegarder App_Data pour que la configuration du chiffrement soit récupérable pour l'étape suivante.

    Sur macOS, c'est ici qu'il faut ajouter --platform linux/amd64.

    docker volume create dvls-init-data
    
    docker run --rm `
      -e DATABASE_HOST=your-sql-server.database.windows.net \
      -e DATABASE_NAME=dvls \
      -e DATABASE_USERNAME=dvls_user \
      -e DATABASE_PASSWORD='YourSecurePassword!' \
      -e HOSTNAME=localhost \
      -e WEB_SCHEME=https \
      -e PORT=5000 \
      -e DVLS_INIT=true \
      -v dvls-init-data:/opt/devolutions/dvls/App_Data \
      -p 5000:5000 \
      devolutions/devolutions-server:release-20XX.X
    
  4. Extraire encryption.config du volume d'initialisation:

    docker run --rm \
      -v dvls-init-data:/data \
      alpine \
      cat /data/encryption.config
    
  5. Convertir le fichier extrait en base64 et le stocker de manière sécurisée car il sera nécessaire pour chaque démarrage runtime :

    docker run --rm \
      -v dvls-init-data:/data \
      alpine \
      cat /data/encryption.config > /tmp/encryption.config
    
    base64 -i /tmp/encryption.config -o /tmp/encryption.config.b64
    
  6. Démarrer Devolutions Server en utilisant la configuration de chiffrement base64. Une fois cela fait, utiliser les commandes docker ps et docker logs dvls-server pour s'assurer que tout fonctionne correctement :

    docker run -d --name dvls-server \
      -e DATABASE_HOST=your-sql-server.database.windows.net \
      -e DATABASE_NAME=dvls \
      -e DATABASE_USERNAME=dvls_user \
      -e DATABASE_PASSWORD='YourSecurePassword!' \
      -e HOSTNAME=localhost \
      -e WEB_SCHEME=https \
      -e PORT=5000 \
      -e DVLS_ENCRYPTION_CONFIG_B64="$(cat /tmp/encryption.config.b64)" \
      -p 5000:5000 \
      devolutions/devolutions-server:release-20XX.X
    
  7. Accéder à l'interface web en ouvrant https://localhost:5000 dans votre navigateur. Passer outre l'avertissement de sécurité du certificat auto-signé en cliquant sur AvancéContinuer. Vous pouvez installer un certificat TSL personnalisé plus tard.

  8. Se connecter en utilisant dvls-admin pour le nom d'utilisateur et le mot de passe.

    Immédiatement après la connexion, changer le mot de passe par défaut en allant sur AdministrationUtilisateurs, en cliquant sur le bouton d'ellipsis vertical de l'utilisateur dvls-admin, et en sélectionnant Changer le mot de passe.

  9. S'assurer que Devolutions Server fonctionne avec DVLS_ENCRYPTION_CONFIG_B64, que son interface web est accessible, et que encryption.config.b64 est enregistré dans un emplacement sécurisé (il est nécessaire pour chaque redémarrage et redéploiement). Une fois cela fait, le volume d'initialisation temporaire peut être supprimé en toute sécurité:

    docker volume rm dvls-init-data
    

Première configuration de Devolutions Server

  1. Créer une connexion et une base de données dédiée en utilisant un compte d'administration (par exemple, sa ou un administrateur Azure SQL). Octroyer l'accès de moindre privilège à Devolutions Server.

  2. Tirer la dernière image Docker de Devolutions Server:

    docker pull devolutions/devolutions-server:release-20XX.X
    
  3. Exécuter Devolutions Server en mode d'initialisation pour créer le schéma de la base de données et son premier administrateur, générer des clés de chiffrement, et configurer HTTPS avec un certificat auto-signé. Sauvegarder App_Data pour que la configuration du chiffrement soit récupérable pour l'étape suivante.

    Sur macOS, c'est ici qu'il faut ajouter --platform linux/amd64.

    docker volume create dvls-init-data
    
    docker run --rm `
      -e DATABASE_HOST=your-sql-server.database.windows.net \
      -e DATABASE_NAME=dvls \
      -e DATABASE_USERNAME=dvls_user \
      -e DATABASE_PASSWORD='YourSecurePassword!' \
      -e HOSTNAME=localhost \
      -e WEB_SCHEME=https \
      -e PORT=5000 \
      -e DVLS_INIT=true \
      -v dvls-init-data:/opt/devolutions/dvls/App_Data \
      -p 5000:5000 \
      devolutions/devolutions-server:release-20XX.X
    
  4. Extraire encryption.config du volume d'initialisation:

    docker run --rm \
      -v dvls-init-data:/data \
      alpine \
      cat /data/encryption.config
    
  5. Convertir le fichier extrait en base64 et le stocker de manière sécurisée car il sera nécessaire pour chaque démarrage runtime :

    docker run --rm \
      -v dvls-init-data:/data \
      alpine \
      cat /data/encryption.config > /tmp/encryption.config
    
    base64 -w 0 /tmp/encryption.config > /tmp/encryption.config.b64
    
  6. Démarrer Devolutions Server en utilisant la configuration de chiffrement base64. Une fois cela fait, utiliser les commandes docker ps et docker logs dvls-server pour s'assurer que tout fonctionne correctement :

    docker run -d --name dvls-server \
      -e DATABASE_HOST=your-sql-server.database.windows.net \
      -e DATABASE_NAME=dvls \
      -e DATABASE_USERNAME=dvls_user \
      -e DATABASE_PASSWORD='YourSecurePassword!' \
      -e HOSTNAME=localhost \
      -e WEB_SCHEME=https \
      -e PORT=5000 \
      -e DVLS_ENCRYPTION_CONFIG_B64="$(cat /tmp/encryption.config.b64)" \
      -p 5000:5000 \
      devolutions/devolutions-server:release-20XX.X
    
  7. Accéder à l'interface web en ouvrant https://localhost:5000 dans votre navigateur. Passer outre l'avertissement de sécurité du certificat auto-signé en cliquant sur AvancéContinuer. Vous pouvez installer un certificat TSL personnalisé plus tard.

  8. Se connecter en utilisant dvls-admin pour le nom d'utilisateur et le mot de passe.

    Immédiatement après la connexion, changer le mot de passe par défaut en allant sur AdministrationUtilisateurs, en cliquant sur le bouton d'ellipsis vertical de l'utilisateur dvls-admin, et en sélectionnant Changer le mot de passe.

  9. S'assurer que Devolutions Server fonctionne avec DVLS_ENCRYPTION_CONFIG_B64, que son interface web est accessible, et que encryption.config.b64 est enregistré dans un emplacement sécurisé (il est nécessaire pour chaque redémarrage et redéploiement). Une fois cela fait, le volume d'initialisation temporaire peut être supprimé en toute sécurité:

    docker volume rm dvls-init-data
    

Operating modes

Le conteneur Docker de DVLS fonctionne en trois modes distincts :

Mode Variable d'environnement Objectif Comportement
Runtime (par défaut) Pas de variables spéciales Fonctionnement normal Démarrer le serveur web et le faire fonctionner en continu.
Initialisation DVLS_INIT=true Configuration initiale Créer le schéma de base de données, l'utilisateur administrateur, puis quitter.
Mise à jour DVLS_UPDATE_MODE=true Mise à niveau de la base de données Sauvegarder les fichiers de configuration, migrer la base de données, puis quitter.

Initialisation et les modes de Mise à jour sont mutuellement exclusifs.

Port personnalisé

Changer le port sur lequel Devolutions Server écoute en définissant la variable d'environnement PORT, par exemple, avec le port 8080 comme dans l'exemple ci-dessous :

docker run -d --name dvls-server `
  -e DATABASE_HOST=your-sql-server.database.windows.net `
  -e DATABASE_NAME=dvls `
  -e DATABASE_USERNAME=dvls_user `
  -e DATABASE_PASSWORD='YourSecurePassword!' `
  -e HOSTNAME=localhost `
  -e WEB_SCHEME=https `
  -e PORT=8080 `
  -p 8080:8080 `
  devolutions/devolutions-server:release-20XX.X
docker run -d --name dvls-server \
  -e DATABASE_HOST=your-sql-server.database.windows.net \
  -e DATABASE_NAME=dvls \
  -e DATABASE_USERNAME=dvls_user \
  -e DATABASE_PASSWORD='YourSecurePassword!' \
  -e HOSTNAME=localhost \
  -e WEB_SCHEME=https \
  -e PORT=8080 \
  -p 8080:8080 \
  devolutions/devolutions-server:release-20XX.X
docker run -d --name dvls-server \
  -e DATABASE_HOST=your-sql-server.database.windows.net \
  -e DATABASE_NAME=dvls \
  -e DATABASE_USERNAME=dvls_user \
  -e DATABASE_PASSWORD='YourSecurePassword!' \
  -e HOSTNAME=localhost \
  -e WEB_SCHEME=https \
  -e PORT=8080 \
  -p 8080:8080 \
  devolutions/devolutions-server:release-20XX.X

Monter un certificat TSL personnalisé

Monter vos propres fichiers de certificat au lieu d'utiliser le certificat auto-généré auto-signé:

mkdir -p /host/path/certs
cp /path/to/server.pem /host/path/certs/
cp /path/to/server.key /host/path/certs/

docker run -d --name dvls-server `
  -e DATABASE_HOST=your-sql-server.database.windows.net \
  -e DATABASE_NAME=dvls `
  -e DATABASE_USERNAME=dvls_user `
  -e DATABASE_PASSWORD='YourSecurePassword!' `
  -e HOSTNAME=dvls.company.com `
  -e WEB_SCHEME=https `
  -e PORT=5000 `
  -e TLS_CERTIFICATE_FILE=/opt/devolutions/dvls/certs/server.pem `
  -e TLS_PRIVATE_KEY_FILE=/opt/devolutions/dvls/certs/server.key `
  -p 5000:5000 `
  -v /host/path/certs:/opt/devolutions/dvls/certs:ro `
  devolutions/devolutions-server:release-20XX.X
mkdir -p /host/path/certs
cp /path/to/server.pem /host/path/certs/
cp /path/to/server.key /host/path/certs/

docker run -d --name dvls-server \
  -e DATABASE_HOST=your-sql-server.database.windows.net \
  -e DATABASE_NAME=dvls \
  -e DATABASE_USERNAME=dvls_user \
  -e DATABASE_PASSWORD='YourSecurePassword!' \
  -e HOSTNAME=dvls.company.com \
  -e WEB_SCHEME=https \
  -e PORT=5000 \
  -e TLS_CERTIFICATE_FILE=/opt/devolutions/dvls/certs/server.pem \
  -e TLS_PRIVATE_KEY_FILE=/opt/devolutions/dvls/certs/server.key \
  -p 5000:5000 \
  -v /host/path/certs:/opt/devolutions/dvls/certs:ro \
  devolutions/devolutions-server:release-20XX.X
mkdir -p /host/path/certs
cp /path/to/server.pem /host/path/certs/
cp /path/to/server.key /host/path/certs/

docker run -d --name dvls-server \
  -e DATABASE_HOST=your-sql-server.database.windows.net \
  -e DATABASE_NAME=dvls \
  -e DATABASE_USERNAME=dvls_user \
  -e DATABASE_PASSWORD='YourSecurePassword!' \
  -e HOSTNAME=dvls.company.com \
  -e WEB_SCHEME=https \
  -e PORT=5000 \
  -e TLS_CERTIFICATE_FILE=/opt/devolutions/dvls/certs/server.pem \
  -e TLS_PRIVATE_KEY_FILE=/opt/devolutions/dvls/certs/server.key \
  -p 5000:5000 \
  -v /host/path/certs:/opt/devolutions/dvls/certs:ro \
  devolutions/devolutions-server:release-20XX.X

Gestion des conteneurs

Commandes Fonctions
docker start dvls-server Démarrer le conteneur.
docker stop dvls-server Arrêter le conteneur.
docker rm dvls-server Supprimer le conteneur.

Supprimer le conteneur est sûr tant que vous avez le fichier encryption.config.b64, accédez à votre base de données SQL Server, et vos variables d'environnement documentées.

Voir aussi

Devolutions Forum logo Partagez vos commentaires