À 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
-
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.
-
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.
-
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
-
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
utiliseDNS:.
Pour répondre uniquement sur une IP, utiliserIP:
à la place.
Notez que le certificat généré .pfx n'a pas de mot de passe.
-
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
-
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