> For the complete documentation index, see [llms.txt](https://docs.devolutions.net/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.devolutions.net/server/it/knowledge-base/how-to-articles/devolutions-server-docker-deployment.md).

# Distribuire Devolutions Server con Docker

Questo articolo mostra come distribuire Devolutions Server utilizzando Docker.

{% hint style="info" %}
Per semplicità, la versione dell'immagine Docker di Devolutions Server è indicata come `20XX.X` nei blocchi di codice di questo articolo. Modifichi questa variabile con la versione che desidera utilizzare.
{% endhint %}

### Prerequisiti

* Docker versione `20.10.X` o successiva. Su macOS ARM64, utilizzi `--platform linux/amd64` durante la fase di inizializzazione a causa della compatibilità degli assembly. La modalità runtime viene eseguita in modo nativo su ARM64.
* Un'istanza SQL Server correttamente [configurata per Devolutions Server](/server/it/getting-started/installation/database-setup.md).
* I [requisiti di sistema](/server/it/readme/system-requirements.md) minimi per eseguire Devolutions Server.

{% tabs %}
{% tab title="Windows" %}

### Configurazione iniziale di Devolutions Server

1. Crei un login e un database dedicati utilizzando un account amministratore (ad esempio, `sa` o un amministratore Azure SQL). Conceda l'[accesso con privilegi minimi](/server/it/knowledge-base/knowledge-base-articles/pre-deployment-account-survey.md#windows-sql-accounts) a Devolutions Server.
2. Scarichi l'ultima [immagine Docker di Devolutions Server](https://hub.docker.com/r/devolutions/devolutions-server):

   ```powershell
   docker pull devolutions/devolutions-server:release-20XX.X
   ```
3. Esegua Devolutions Server in modalità di inizializzazione per creare lo schema del database e il suo primo amministratore, generare le chiavi di crittografia e configurare HTTPS con un certificato autofirmato. Salvi `App_Data` in modo che la configurazione della crittografia sia recuperabile per il passaggio successivo.

```powershell
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. Estragga `encryption.config` dal volume di inizializzazione:

   ```powershell
   docker run --rm `
     -v dvls-init-data:/data `
     alpine `
     cat /data/encryption.config
   ```
5. Converta il file estratto in base64 e lo conservi in modo sicuro, poiché sarà necessario a ogni avvio del runtime:

   ```powershell
   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. Avvii Devolutions Server utilizzando la configurazione di crittografia in base64. Una volta fatto ciò, utilizzi i comandi `docker ps` e `docker logs dvls-server` per assicurarsi che tutto funzioni correttamente.

   ```powershell
   $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. Acceda all'interfaccia web aprendo `https://localhost:5000` nel suo browser. Superi l'avviso di sicurezza relativo al certificato autofirmato facendo clic su ***Avanzate*** – ***Procedi***. Potrà montare un certificato TSL personalizzato in seguito.
8. Effettui l'accesso utilizzando `dvls-admin` sia come nome utente sia come password.

{% hint style="danger" %}
Subito dopo l'accesso, modifichi la password predefinita andando su ***Amministrazione*** – ***Utenti***, facendo clic sul pulsante con i puntini di sospensione verticali dell'utente `dvls-admin` e selezionando ***Modifica password***.
{% endhint %}

9. Si assicuri che Devolutions Server sia in esecuzione con `DVLS_ENCRYPTION_CONFIG_B64`, che la sua interfaccia web sia accessibile e che `encryption.config.b64` sia salvato in una posizione sicura (è necessario a ogni riavvio e ridistribuzione). Una volta fatto ciò, il volume temporaneo di inizializzazione può essere rimosso in modo sicuro:

   ```powershell
   docker volume rm dvls-init-data
   ```

### Modalità operative

Il container Docker di DVLS funziona in tre modalità distinte:

| Modalità                      | Variabile d'ambiente       | Scopo                      | Comportamento                                                                |
| ----------------------------- | -------------------------- | -------------------------- | ---------------------------------------------------------------------------- |
| **Runtime** **(predefinita)** | Nessuna variabile speciale | Funzionamento normale      | Avvia il server web e rimane in esecuzione.                                  |
| **Inizializzazione**          | `DVLS_INIT=true`           | Configurazione iniziale    | Crea lo schema del database e l'utente amministratore, quindi esce.          |
| **Aggiornamento**             | `DVLS_UPDATE_MODE=true`    | Aggiornamento del database | Esegue il backup dei file di configurazione, migra il database, quindi esce. |

{% hint style="info" %}
Le modalità **Inizializzazione** e **Aggiornamento** si escludono a vicenda.
{% endhint %}

### Porta personalizzata

Modifichi la porta su cui Devolutions Server è in ascolto impostando la variabile d'ambiente `PORT`, ad esempio con la porta `8080` come nell'esempio seguente:

```powershell
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
```

### Montare un certificato TSL personalizzato

Monti i propri file di certificato invece di utilizzare il certificato autofirmato generato automaticamente:

```powershell
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=devolutions-server.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
```

### Gestione del container

| Comandi                    | Funzioni              |
| -------------------------- | --------------------- |
| `docker start dvls-server` | Avvia il container.   |
| `docker stop dvls-server`  | Arresta il container. |
| `docker rm dvls-server`    | Rimuove il container. |

{% hint style="info" %}
La rimozione del container è sicura purché disponga del file `encryption.config.b64`, dell'accesso al suo database SQL Server e delle sue variabili d'ambiente documentate.
{% endhint %}
{% endtab %}

{% tab title="macOS" %}

### Configurazione iniziale di Devolutions Server

1. Crei un login e un database dedicati utilizzando un account amministratore (ad esempio, `sa` o un amministratore Azure SQL). Conceda l'[accesso con privilegi minimi](/server/it/knowledge-base/knowledge-base-articles/pre-deployment-account-survey.md#windows-sql-accounts) a Devolutions Server.
2. Scarichi l'ultima [immagine Docker di Devolutions Server](https://hub.docker.com/r/devolutions/devolutions-server):

   ```bash
   docker pull devolutions/devolutions-server:release-20XX.X
   ```
3. Esegua Devolutions Server in modalità di inizializzazione per creare lo schema del database e il suo primo amministratore, generare le chiavi di crittografia e configurare HTTPS con un certificato autofirmato. Salvi `App_Data` in modo che la configurazione della crittografia sia recuperabile per il passaggio successivo.

Su macOS, è qui che occorre aggiungere `--platform linux/amd64`.

```bash
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. Estragga `encryption.config` dal volume di inizializzazione:

   ```bash
   docker run --rm \
     -v dvls-init-data:/data \
     alpine \
     cat /data/encryption.config
   ```
5. Converta il file estratto in base64 e lo conservi in modo sicuro, poiché sarà necessario a ogni avvio del runtime:

   ```bash
   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. Avvii Devolutions Server utilizzando la configurazione di crittografia in base64. Una volta fatto ciò, utilizzi i comandi `docker ps` e `docker logs dvls-server` per assicurarsi che tutto funzioni correttamente:

   ```bash
   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. Acceda all'interfaccia web aprendo `https://localhost:5000` nel suo browser. Superi l'avviso di sicurezza relativo al certificato autofirmato facendo clic su ***Avanzate*** – ***Procedi***. Potrà montare un certificato TSL personalizzato in seguito.
8. Effettui l'accesso utilizzando `dvls-admin` sia come nome utente sia come password.

{% hint style="danger" %}
Subito dopo l'accesso, modifichi la password predefinita andando su ***Amministrazione*** – ***Utenti***, facendo clic sul pulsante con i puntini di sospensione verticali dell'utente `dvls-admin` e selezionando ***Modifica password***.
{% endhint %}

9. Si assicuri che Devolutions Server sia in esecuzione con `DVLS_ENCRYPTION_CONFIG_B64`, che la sua interfaccia web sia accessibile e che `encryption.config.b64` sia salvato in una posizione sicura (è necessario a ogni riavvio e ridistribuzione). Una volta fatto ciò, il volume temporaneo di inizializzazione può essere rimosso in modo sicuro:

   ```bash
   docker volume rm dvls-init-data
   ```

### Modalità operative

Il container Docker di DVLS funziona in tre modalità distinte:

| Modalità                      | Variabile d'ambiente       | Scopo                      | Comportamento                                                                |
| ----------------------------- | -------------------------- | -------------------------- | ---------------------------------------------------------------------------- |
| **Runtime** **(predefinita)** | Nessuna variabile speciale | Funzionamento normale      | Avvia il server web e rimane in esecuzione.                                  |
| **Inizializzazione**          | `DVLS_INIT=true`           | Configurazione iniziale    | Crea lo schema del database e l'utente amministratore, quindi esce.          |
| **Aggiornamento**             | `DVLS_UPDATE_MODE=true`    | Aggiornamento del database | Esegue il backup dei file di configurazione, migra il database, quindi esce. |

{% hint style="info" %}
Le modalità **Inizializzazione** e **Aggiornamento** si escludono a vicenda.
{% endhint %}

### Porta personalizzata

Modifichi la porta su cui Devolutions Server è in ascolto impostando la variabile d'ambiente `PORT`, ad esempio con la porta `8080` come nell'esempio seguente:

```bash
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
```

### Montare un certificato TSL personalizzato

Monti i propri file di certificato invece di utilizzare il certificato autofirmato generato automaticamente:

```bash
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=devolutions-server.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
```

### Gestione del container

| Comandi                    | Funzioni              |
| -------------------------- | --------------------- |
| `docker start dvls-server` | Avvia il container.   |
| `docker stop dvls-server`  | Arresta il container. |
| `docker rm dvls-server`    | Rimuove il container. |

{% hint style="info" %}
La rimozione del container è sicura purché disponga del file `encryption.config.b64`, dell'accesso al suo database SQL Server e delle sue variabili d'ambiente documentate.
{% endhint %}
{% endtab %}

{% tab title="Linux" %}

### Configurazione iniziale di Devolutions Server

1. Crei un login e un database dedicati utilizzando un account amministratore (ad esempio, `sa` o un amministratore Azure SQL). Conceda l'[accesso con privilegi minimi](/server/it/knowledge-base/knowledge-base-articles/pre-deployment-account-survey.md#windows-sql-accounts) a Devolutions Server.
2. Scarichi l'ultima [immagine Docker di Devolutions Server](https://hub.docker.com/r/devolutions/devolutions-server):

   ```bash
   docker pull devolutions/devolutions-server:release-20XX.X
   ```
3. Esegua Devolutions Server in modalità di inizializzazione per creare lo schema del database e il suo primo amministratore, generare le chiavi di crittografia e configurare HTTPS con un certificato autofirmato. Salvi `App_Data` in modo che la configurazione della crittografia sia recuperabile per il passaggio successivo.

```bash
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. Estragga `encryption.config` dal volume di inizializzazione:

   ```bash
   docker run --rm \
     -v dvls-init-data:/data \
     alpine \
     cat /data/encryption.config
   ```
5. Converta il file estratto in base64 e lo conservi in modo sicuro, poiché sarà necessario a ogni avvio del runtime:

   ```bash
   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. Avvii Devolutions Server utilizzando la configurazione di crittografia in base64. Una volta fatto ciò, utilizzi i comandi `docker ps` e `docker logs dvls-server` per assicurarsi che tutto funzioni correttamente:

   ```bash
   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. Acceda all'interfaccia web aprendo `https://localhost:5000` nel suo browser. Superi l'avviso di sicurezza relativo al certificato autofirmato facendo clic su ***Avanzate*** – ***Procedi***. Potrà montare un certificato TSL personalizzato in seguito.
8. Effettui l'accesso utilizzando `dvls-admin` sia come nome utente sia come password.

{% hint style="danger" %}
Subito dopo l'accesso, modifichi la password predefinita andando su ***Amministrazione*** – ***Utenti***, facendo clic sul pulsante con i puntini di sospensione verticali dell'utente `dvls-admin` e selezionando ***Modifica password***.
{% endhint %}

9. Si assicuri che Devolutions Server sia in esecuzione con `DVLS_ENCRYPTION_CONFIG_B64`, che la sua interfaccia web sia accessibile e che `encryption.config.b64` sia salvato in una posizione sicura (è necessario a ogni riavvio e ridistribuzione). Una volta fatto ciò, il volume temporaneo di inizializzazione può essere rimosso in modo sicuro:

   ```bash
   docker volume rm dvls-init-data
   ```

### Modalità operative

Il container Docker di DVLS funziona in tre modalità distinte:

| Modalità                      | Variabile d'ambiente       | Scopo                      | Comportamento                                                                |
| ----------------------------- | -------------------------- | -------------------------- | ---------------------------------------------------------------------------- |
| **Runtime** **(predefinita)** | Nessuna variabile speciale | Funzionamento normale      | Avvia il server web e rimane in esecuzione.                                  |
| **Inizializzazione**          | `DVLS_INIT=true`           | Configurazione iniziale    | Crea lo schema del database e l'utente amministratore, quindi esce.          |
| **Aggiornamento**             | `DVLS_UPDATE_MODE=true`    | Aggiornamento del database | Esegue il backup dei file di configurazione, migra il database, quindi esce. |

{% hint style="info" %}
Le modalità **Inizializzazione** e **Aggiornamento** si escludono a vicenda.
{% endhint %}

### Porta personalizzata

Modifichi la porta su cui Devolutions Server è in ascolto impostando la variabile d'ambiente `PORT`, ad esempio con la porta `8080` come nell'esempio seguente:

```bash
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
```

### Montare un certificato TSL personalizzato

Monti i propri file di certificato invece di utilizzare il certificato autofirmato generato automaticamente:

```bash
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=devolutions-server.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
```

### Gestione dei container

| Comandi                    | Funzioni              |
| -------------------------- | --------------------- |
| `docker start dvls-server` | Avvia il container.   |
| `docker stop dvls-server`  | Arresta il container. |
| `docker rm dvls-server`    | Rimuove il container. |

{% hint style="info" %}
La rimozione del container è sicura a condizione che disponga del file `encryption.config.b64`, dell'accesso al database SQL Server e delle proprie variabili d'ambiente documentate.
{% endhint %}
{% endtab %}
{% endtabs %}

#### Vedere anche

* [Checklist di sicurezza](/server/it/getting-started/security-checklist.md)
* [Distribuzione di Devolutions Server in Azure App Service tramite un container](/server/it/knowledge-base/how-to-articles/devolutions-server-docker-deployment/devolutions-server-deployment-to-azure-app-service-using-a-container.md)
* [Configurazione Docker avanzata per Devolutions Server](/server/it/knowledge-base/how-to-articles/devolutions-server-docker-deployment/advanced-docker-configuration-for-devolutions-server.md)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.devolutions.net/server/it/knowledge-base/how-to-articles/devolutions-server-docker-deployment.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
