Installer Devolutions Server pour Linux

À partir de la version 2024.3.2.0, une version bêta de Devolutions Server est disponible pour Linux avec Microsoft Kestrel comme serveur web intégré et Microsoft PowerShell 7 pour l'installation en ligne de commande. Le présent sujet montre comment installer manuellement Devolutions Server pour Linux en utilisant des invites Bash et des scripts PowerShell, ainsi que comment y accéder et le supprimer.

Alternativement, Devolutions Server peut être installé automatiquement en utilisant les scripts trouvés sur le répertoire Devolutions GitHub ScriptLibrary.

Installer 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 modifié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 ne prend actuellement en charge que 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 a lieu dans un répertoire accessible pour l'utilisateur actuel car la ligne de commande wget télécharge un paquet .deb dans ce 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 fiable. 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, il est fortement recommandé de provisionner des utilisateurs et des groupes séparés pour Devolutions Server. 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
    # optionnel, ajouter l'utilisateur actuel au groupe dvls
    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 dans 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 généré .pfx n'a pas de mot de passe.

  1. En utilisant le module Devolutions.PowerShell, exécuter l'installation pour 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"
    # Modifier le $DVLSURI pour utiliser 'https' si SSL est utilisé
    $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 # Modifier selon les besoins
        "TrustServerCertificate" = $False # Modifier selon les besoins
        "EnableTelemetry"        = $True # Modifier selon les besoins
        "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 une exécution 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
    
    # Voir le statut
    sudo systemctl status dvls
    

Accéder à Devolutions Server pour Linux

Par défaut, Devolutions Server pour Linux écoute sur le port 5000 sur l'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 survenir lors du premier lancement lorsque vous essayez d'accéder à Devolutions Server à partir d'une URL non configurée. Si tel est le cas, ajouter des URI supplémentaires pour écouter, 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 de pare-feu requis 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 PowerShell DbaTools pour faciliter la suppression de la base de données MSSQL. Il suppose que localhost est l'installation MSSQL et dvls le nom de la base de données.

# Supprimer DVLS sur Linux, ajuster si nécessaire
& 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