Installer Devolutions Server pour Linux

Depuis la version 2024.3.2.0, une version bêta de Devolutions Server est disponible pour Linux avec Microsoft Kestrel en tant que serveur Web intégré et Microsoft PowerShell 7 pour l'installation en ligne de commande. Ce sujet montre comment installer manuellement Devolutions Server pour Linux à l'aide de invites Bash et scripts PowerShell, ainsi que comment y accéder et le supprimer.

Alternativement, Devolutions Server peut être installé automatiquement à l'aide des scripts trouvés sur le dépôt ScriptLibrary de Devolutions sur GitHub.

Configurer les prérequis

  1. Si Microsoft SQL Server n'est pas déjà installé, exécuter l'invite Bash suivante avec la variable MSSQL_SA_PASSWORD changée pour un mot de passe fort :

    source /etc/os-release
    curl -fsSL https://packages.microsoft.com/keys/microsoft.asc | sudo gpg --dearmor --batch --yes -o /usr/share/keyrings/microsoft-prod.gpg
    curl -fsSL https://packages.microsoft.com/config/ubuntu/$VERSION_ID/mssql-server-2022.list | sudo tee /etc/apt/sources.list.d/mssql-server-2022.list
    sudo apt-get update
    sudo apt-get install -y mssql-server
    sudo MSSQL_SA_PASSWORD="mystrongpassword" MSSQL_PID="evaluation" /opt/mssql/bin/mssql-conf -n setup accept-eula
    sudo /opt/mssql/bin/mssql-conf set sqlagent.enabled true
    sudo systemctl restart mssql-server
    

    MSSQL_PID est défini sur evaluation dans cet exemple, mais une clé de produit peut être entrée ici à la place.

Microsoft supporte actuellement uniquement jusqu'à Ubuntu 22.04 pour Microsoft SQL Server 2022.

  1. Exécuter cette invite Bash pour installer PowerShell 7 :

    sudo apt-get update
    sudo apt-get install -y wget apt-transport-https software-properties-common
    source /etc/os-release
    wget -q https://packages.microsoft.com/config/ubuntu/$VERSION_ID/packages-microsoft-prod.deb
    sudo dpkg -i packages-microsoft-prod.deb
    rm packages-microsoft-prod.deb
    sudo apt-get update
    sudo apt-get install -y powershell
    

S'assurer que l'installation se déroule dans un répertoire accessible pour l'utilisateur actuel car la ligne de commande wget télécharge un paquet .deb dans ledit répertoire.

  1. Choisir d'installer ou non le module Devolutions.PowerShell pour l'utilisateur actuel ou pour tous les utilisateurs.

    • Pour l'utilisateur actuel (emplacement : ~/.local/share/powershell/Modules), exécuter :

      Install-Module -Name 'Devolutions.PowerShell' -Confirm:$False
      
    • Pour tous les utilisateurs (emplacement : /opt/microsoft/powershell/7/Modules), exécuter :

      & sudo pwsh -Command { Install-Module -Name 'Devolutions.PowerShell' -Confirm:$False -Scope 'AllUsers' -Force }
      

    Un avertissement est susceptible d'apparaître indiquant que l'installation provient d'un dépôt non sécurisé. Le module est hébergé sur PowerShell Gallery, l'emplacement officiel pour héberger des modules PowerShell gérés par Microsoft. Pour éviter de voir cet avertissement à l'avenir, exécuter :

    Set-PSRepository -Name PSGallery -InstallationPolicy Trusted
    

    Bien que non requis, provisionner des utilisateurs et groupes séparés pour Devolutions Server est fortement recommandé. Voici une invite Bash pour créer un utilisateur et un groupe tous deux nommés dvls avec le répertoire d'installation défini sur /opt/devolutions/dvls :

    sudo useradd -N dvls
    sudo groupadd dvls
    sudo usermod -a -G dvls dvls
    # optional, add current user to dvls group
    sudo usermod -a -G dvls $(id -un)
    sudo mkdir -p /opt/devolutions/dvls
    sudo chown -R dvls:dvls /opt/devolutions/dvls
    sudo chmod 550 /opt/devolutions/dvls
    

Télécharger et installer Devolutions Server pour Linux

  1. Exécuter le script PowerShell ci-dessous pour télécharger la dernière version de Devolutions Server pour Linux et extraire le fichier .tar.gz à l'emplacement /opt/devolutions/dvls :

    $DVLSPath = "/opt/devolutions/dvls"
    $DVLSProductURL = "https://devolutions.net/productinfo.htm"
    
    $Result = (Invoke-RestMethod -Method 'GET' -Uri $DVLSProductURL) -Split "`r"
    
    $DVLSLinux = [PSCustomObject]@{
        "Version" = (($Result | Select-String DPSLinuxX64bin.Version) -Split "=")[-1].Trim()
        "URL"     = (($Result | Select-String DPSLinuxX64bin.Url) -Split "=")[-1].Trim()
        "Hash"    = (($Result | Select-String DPSLinuxX64bin.hash) -Split "=")[-1].Trim()
    }
    
    $DVLSDownloadPath = Join-Path -Path "/tmp" -ChildPath (([URI]$DVLSLinux.URL).Segments)[-1]
    
    Invoke-RestMethod -Method 'GET' -Uri $DVLSLinux.URL -OutFile $DVLSDownloadPath
    
    & tar -xzf $DVLSDownloadPath -C $DVLSPath --strip-components=1
    
    Remove-Item -Path $DVLSDownloadPath
    
    & sudo pwsh -Command {
      Param(
          $DVLSPath
      )
    
      chown -R dvls:dvls $DVLSPath
      chmod -R o-rwx $DVLSPath
      chmod 660 (Join-Path -Path $DVLSPath -ChildPath 'appsettings.json')
      chmod 770 (Join-Path -Path $DVLSPath -ChildPath 'App_Data')
      chown -R dvls:dvls $DVLSPath
    } -Args $DVLSPath
    
    Set-Location -Path $DVLSPath
    

    Il est préférable que Devolutions Server puisse répondre via TLS. Si un certificat n'existe pas déjà, il peut être rapidement généré en utilisant cette invite Bash :

    cd /opt/devolutions/dvls
    
    openssl req -x509 -newkey rsa:4096 -sha256 -days 3650 -nodes -keyout cert.key -out cert.crt -subj "/CN=MYHOST" -addext "subjectAltName=DNS:MYHOST"
    openssl pkcs12 -export -out cert.pfx -inkey cert.key -in cert.crt -passout pass:
    

    Dans l'exemple ci-dessus, le subjectAltName utilise DNS:. Pour répondre uniquement sur une IP, utiliser IP: à la place.

Notez que le certificat .pfx généré n'a pas de mot de passe.

  1. À l'aide du module Devolutions.PowerShell, exécuter l'installation de Devolutions Server via PowerShell. Assurez-vous de personnaliser les valeurs listées ici :

    • MYHOST
    • MSSQLHOST
    • DBUSERNAME
    • YOURSTRONGPASSWORD
    • MYEMAIL
    Import-Module -Name 'Devolutions.PowerShell'
    
    $DVLSPath = "/opt/devolutions/dvls"
    # Modify the $DVLSURI to use 'https' if using SSL
    $DVLSURI  = "http://MYHOST:5000/"
    
    $DVLSAdminUsername = 'dvls-admin'
    $DVLSAdminPassword = 'dvls-admin'
    $DVLSAdminEmail    = 'MYEMAIL'
    
    $Params = @{
        "DatabaseHost"           = "MSSQLHOST"
        "DatabaseName"           = "dvls"
        "DatabaseUserName"       = "DBUSERNAME"
        "DatabasePassword"       = "YOURSTRONGPASSWORD"
        "ServerName"             = "dvls"
        "AccessUri"              = $DVLSURI
        "HttpListenerUri"        = $DVLSURI
        "DPSPath"                = $DVLSPath
        "UseEncryptedconnection" = $False # Modify as needed
        "TrustServerCertificate" = $False # Modify as needed
        "EnableTelemetry"        = $True # Modify as needed
        "DisableEncryptConfig"   = $True
    }
    
    $Configuration = New-DPSInstallConfiguration @Params
    New-DPSAppsettings -Configuration $Configuration
    
    $Settings = Get-DPSAppSettings -ApplicationPath $DVLSPath
    
    New-DPSDatabase -ConnectionString $Settings.ConnectionStrings.LocalSqlServer
    Update-DPSDatabase -ConnectionString $Settings.ConnectionStrings.LocalSqlServer -InstallationPath $DVLSPath
    New-DPSDataSourceSettings -ConnectionString $Settings.ConnectionStrings.LocalSqlServer
    
    New-DPSEncryptConfiguration -ApplicationPath $DVLSPath
    New-DPSDatabaseAppSettings -Configuration $Configuration
    
    New-DPSAdministrator -ConnectionString $Settings.ConnectionStrings.LocalSqlServer -Name $DVLSAdminUsername -Password $DVLSAdminPassword -Email $DVLSAdminEmail
    

    Si un certificat a déjà été généré, procéder à la modification du fichier appsettings.json pour permettre à Kestrel de répondre via TLS en utilisant ce script PowerShell :

    Import-Module -Name 'Devolutions.PowerShell'
    
    $DVLSPath = '/opt/devolutions/dvls'
    
    $JSON = Get-Content -Path (Join-Path -Path $DVLSPath -ChildPath 'appsettings.json') | ConvertFrom-JSON -Depth 100
    
    $JSON.Kestrel.Endpoints.Http | Add-Member -MemberType NoteProperty -Name 'Certificate' -Value @{
        'Path'     = (Join-Path -Path $DVLSPath -ChildPath 'cert.pfx')
        'Password' = ''
    }
    
    $JSON | ConvertTo-JSON -Depth 100 | Set-Content -Path (Join-Path -Path $DVLSPath -ChildPath 'appsettings.json')
    
    $Settings = Get-DPSAppSettings -ApplicationPath $DVLSPath
    
    $AccessUri = (Get-DPSAccessUri -ConnectionString $Settings.ConnectionStrings.LocalSqlServer).AccessUri
    Set-DPSAccessUri -ApplicationPath $DVLSPath -ConnectionString $Settings.ConnectionStrings.LocalSqlServer -AccessURI ($AccessUri -Replace "http","https")
    
    & sudo pwsh -Command {
      Param(
          $DVLSPath
      )
    
      & chown dvls:dvls (Join-Path -Path $DVLSPath -ChildPath 'cert.pfx')
    } -Args $DVLSPath
    

    Pour offrir un fonctionnement en arrière-plan de Devolutions Server pour Linux, il est recommandé de créer un fichier d'unité pour systemd via cette invite Bash :

    sudo tee /etc/systemd/system/dvls.service > /dev/null <<EOT
    [Unit]
    Description=DVLS
    
    [Service]
    Type=simple
    Restart=always
    RestartSec=10
    User=dvls
    ExecStart=/opt/devolutions/dvls/Devolutions.Server
    WorkingDirectory=/opt/devolutions/dvls
    KillSignal=SIGINT
    SyslogIdentifier=dvls
    Environment="SCHEDULER_EMBEDDED=true"
    
    [Install]
    WantedBy=multi-user.target
    Alias=dvls.service
    EOT
    
    sudo systemctl daemon-reload
    
  2. Pour démarrer Devolutions Server, exécuter :

    sudo systemctl start dvls
    
    # View status
    sudo systemctl status dvls
    

Accéder à Devolutions Server pour Linux

Par défaut, Devolutions Server pour Linux écoute sur le port 5000 sur l'adresse IP ou le nom d'hôte du système d'installation, qui ressemble le plus souvent à : http://MYHOST:5000. Soyez conscient que des erreurs OAuth peuvent se produire lors du premier lancement en essayant d'accéder à Devolutions Server depuis une URL non configurée. Si c'est le cas, ajouter des URI supplémentaires pour écouter dessus, ou modifier l'URI principal en exécutant le script suivant dans PowerShell:

Import-Module -Name 'Devolutions.PowerShell'

$DVLSPath = "/opt/devolutions/dvls"

$Settings = Get-DPSAppSettings -ApplicationPath $DVLSPath
$ConnectionString = $Settings.ConnectionStrings.LocalSqlServer

Get-DPSAccessUri -ConnectionString $ConnectionString

Set-DPSAccessUri -ConnectionString $ConnectionString -ApplicationPath $DVLSPath -AccessURI 'http://10.10.0.20:5000/' -AdditionalAccessURIs @('http://ubuntu-2204:5000/')

Si Devolutions Server reste inaccessible en dehors du système installé, vérifier si les ports requis du pare-feu sont ouverts, en ajoutant Uncomplicated Firewall à l'invite, par exemple : sudo ufw allow 5000.

Supprimer Devolutions Server

Pour supprimer Devolutions Server, exécuter l'invite Bash ci-dessous et la personnaliser pour le système. Ce script repose sur le module DbaTools PowerShell pour faciliter la suppression de la base de données MSSQL. Il suppose que localhost est l'installation de MSSQL et dvls le nom de la base de données.

# Remove DVLS on Linux, adjust as necessary
& sudo systemctl stop dvls.service
& sudo rm /etc/systemd/system/dvls.service
& sudo rm -rf /opt/devolutions/dvls
& sudo userdel -r dvls
& sudo groupdel dvls

Import-Module dbatools
$Credential = Get-Credential

Set-DbaToolsInsecureConnection

Remove-DbaDatabase -SqlInstance localhost -SqlCredential $Credential -Database 'dvls' -Confirm:$False

 

Devolutions Forum logo Donnez-nous vos commentaires