> 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/es/knowledge-base/how-to-articles/devolutions-server-docker-deployment.md).

# Implementar Devolutions Server con Docker

Este artículo muestra cómo desplegar Devolutions Server utilizando Docker.

{% hint style="info" %}
Por simplicidad, la versión de la imagen Docker de Devolutions Server se escribe `20XX.X` en los bloques de código de este artículo. Cambie esta variable por la versión que desee utilizar.
{% endhint %}

### Requisitos previos

* Versión de Docker `20.10.X` o posterior. En macOS ARM64, use `--platform linux/amd64` durante la fase de inicialización debido a la compatibilidad de los ensamblados. El modo de tiempo de ejecución se ejecuta de forma nativa en ARM64.
* Una instancia de SQL Server correctamente [configurada para Devolutions Server](/server/es/getting-started/installation/database-setup.md).
* Los [requisitos del sistema](/server/es/readme/system-requirements.md) mínimos para ejecutar Devolutions Server.

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

### Configuración inicial de Devolutions Server

1. Cree un inicio de sesión y una base de datos dedicados utilizando una cuenta de administrador (por ejemplo, `sa` o un administrador de Azure SQL). Conceda [acceso con privilegios mínimos](/server/es/knowledge-base/knowledge-base-articles/pre-deployment-account-survey.md#windows-sql-accounts) a Devolutions Server.
2. Descargue la última [imagen Docker de Devolutions Server](https://hub.docker.com/r/devolutions/devolutions-server):

   ```powershell
   docker pull devolutions/devolutions-server:release-20XX.X
   ```
3. Ejecute Devolutions Server en modo de inicialización para crear el esquema de la base de datos y su primer administrador, generar las claves de cifrado y configurar HTTPS con un certificado autofirmado. Guarde `App_Data` para que la configuración de cifrado se pueda recuperar en el paso siguiente.

```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. Extraiga `encryption.config` del volumen de inicialización:

   ```powershell
   docker run --rm `
     -v dvls-init-data:/data `
     alpine `
     cat /data/encryption.config
   ```
5. Convierta el fichero extraído a base64 y guárdelo de forma segura, ya que será necesario en cada arranque en tiempo de ejecución:

   ```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. Inicie Devolutions Server utilizando la configuración de cifrado en base64. Una vez hecho esto, utilice los comandos `docker ps` y `docker logs dvls-server` para asegurarse de que todo funciona correctamente.

   ```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 a la interfaz web abriendo `https://localhost:5000` en su navegador. Sáltese la advertencia de seguridad del certificado autofirmado haciendo clic en ***Avanzado*** – ***Continuar***. Puede montar un certificado TSL personalizado más adelante.
8. Inicie sesión utilizando `dvls-admin` tanto como nombre de usuario como contraseña.

{% hint style="danger" %}
Inmediatamente después de iniciar sesión, cambie la contraseña predeterminada dirigiéndose a ***Administración*** – ***Usuarios***, haciendo clic en el botón de puntos suspensivos verticales del usuario `dvls-admin` y seleccionando ***Cambiar contraseña***.
{% endhint %}

9. Asegúrese de que Devolutions Server se está ejecutando con `DVLS_ENCRYPTION_CONFIG_B64`, de que su interfaz web es accesible y de que `encryption.config.b64` está guardado en una ubicación segura (es necesario en cada reinicio y redespliegue). Una vez hecho esto, el volumen de inicialización temporal se puede eliminar de forma segura:

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

### Modos de funcionamiento

El contenedor Docker de DVLS funciona en tres modos distintos:

| Modo                                         | Variable de entorno      | Propósito                         | Comportamiento                                                                                                       |
| -------------------------------------------- | ------------------------ | --------------------------------- | -------------------------------------------------------------------------------------------------------------------- |
| **Tiempo de ejecución** **(predeterminado)** | Sin variables especiales | Funcionamiento normal             | Inicia el servidor web y se mantiene en ejecución.                                                                   |
| **Inicialización**                           | `DVLS_INIT=true`         | Configuración inicial             | Crea el esquema de la base de datos y el usuario administrador y, a continuación, finaliza.                          |
| **Actualización**                            | `DVLS_UPDATE_MODE=true`  | Actualización de la base de datos | Realiza una copia de seguridad de los ficheros de configuración, migra la base de datos y, a continuación, finaliza. |

{% hint style="info" %}
Los modos **Inicialización** y **Actualización** son mutuamente excluyentes.
{% endhint %}

### Puerto personalizado

Cambie el puerto en el que escucha Devolutions Server estableciendo la variable de entorno `PORT`; por ejemplo, con el puerto `8080` como en el ejemplo siguiente:

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

### Montar un certificado TSL personalizado

Monte sus propios ficheros de certificado en lugar de utilizar el certificado autofirmado generado automáticamente:

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

### Gestión de contenedores

| Comandos                   | Funciones               |
| -------------------------- | ----------------------- |
| `docker start dvls-server` | Inicia el contenedor.   |
| `docker stop dvls-server`  | Detiene el contenedor.  |
| `docker rm dvls-server`    | Eliminar el contenedor. |

{% hint style="info" %}
Eliminar el contenedor es seguro siempre que tenga el fichero `encryption.config.b64`, acceso a su base de datos de SQL Server y sus variables de entorno documentadas.
{% endhint %}
{% endtab %}

{% tab title="macOS" %}

### Configuración inicial de Devolutions Server

1. Cree un inicio de sesión y una base de datos dedicados utilizando una cuenta de administrador (por ejemplo, `sa` o un administrador de Azure SQL). Conceda [acceso con privilegios mínimos](/server/es/knowledge-base/knowledge-base-articles/pre-deployment-account-survey.md#windows-sql-accounts) a Devolutions Server.
2. Descargue la última [imagen Docker de Devolutions Server](https://hub.docker.com/r/devolutions/devolutions-server):

   ```bash
   docker pull devolutions/devolutions-server:release-20XX.X
   ```
3. Ejecute Devolutions Server en modo de inicialización para crear el esquema de la base de datos y su primer administrador, generar las claves de cifrado y configurar HTTPS con un certificado autofirmado. Guarde `App_Data` para que la configuración de cifrado se pueda recuperar en el paso siguiente.

En macOS, aquí es donde debe añadir `--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. Extraiga `encryption.config` del volumen de inicialización:

   ```bash
   docker run --rm \
     -v dvls-init-data:/data \
     alpine \
     cat /data/encryption.config
   ```
5. Convierta el fichero extraído a base64 y guárdelo de forma segura, ya que será necesario en cada arranque en tiempo de ejecución:

   ```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. Inicie Devolutions Server utilizando la configuración de cifrado en base64. Una vez hecho esto, utilice los comandos `docker ps` y `docker logs dvls-server` para asegurarse de que todo funciona correctamente:

   ```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 a la interfaz web abriendo `https://localhost:5000` en su navegador. Sáltese la advertencia de seguridad del certificado autofirmado haciendo clic en ***Avanzado*** – ***Continuar***. Puede montar un certificado TSL personalizado más adelante.
8. Inicie sesión utilizando `dvls-admin` tanto como nombre de usuario como contraseña.

{% hint style="danger" %}
Inmediatamente después de iniciar sesión, cambie la contraseña predeterminada dirigiéndose a ***Administración*** – ***Usuarios***, haciendo clic en el botón de puntos suspensivos verticales del usuario `dvls-admin` y seleccionando ***Cambiar contraseña***.
{% endhint %}

9. Asegúrese de que Devolutions Server se está ejecutando con `DVLS_ENCRYPTION_CONFIG_B64`, de que su interfaz web es accesible y de que `encryption.config.b64` está guardado en una ubicación segura (es necesario en cada reinicio y redespliegue). Una vez hecho esto, el volumen de inicialización temporal se puede eliminar de forma segura:

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

### Modos de funcionamiento

El contenedor Docker de DVLS funciona en tres modos distintos:

| Modo                                         | Variable de entorno      | Propósito                         | Comportamiento                                                                                                       |
| -------------------------------------------- | ------------------------ | --------------------------------- | -------------------------------------------------------------------------------------------------------------------- |
| **Tiempo de ejecución** **(predeterminado)** | Sin variables especiales | Funcionamiento normal             | Inicia el servidor web y se mantiene en ejecución.                                                                   |
| **Inicialización**                           | `DVLS_INIT=true`         | Configuración inicial             | Crea el esquema de la base de datos y el usuario administrador y, a continuación, finaliza.                          |
| **Actualización**                            | `DVLS_UPDATE_MODE=true`  | Actualización de la base de datos | Realiza una copia de seguridad de los ficheros de configuración, migra la base de datos y, a continuación, finaliza. |

{% hint style="info" %}
Los modos **Inicialización** y **Actualización** son mutuamente excluyentes.
{% endhint %}

### Puerto personalizado

Cambie el puerto en el que escucha Devolutions Server estableciendo la variable de entorno `PORT`; por ejemplo, con el puerto `8080` como en el ejemplo siguiente:

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

### Montar un certificado TSL personalizado

Monte sus propios ficheros de certificado en lugar de utilizar el certificado autofirmado generado automáticamente:

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

### Gestión de contenedores

| Comandos                   | Funciones               |
| -------------------------- | ----------------------- |
| `docker start dvls-server` | Inicia el contenedor.   |
| `docker stop dvls-server`  | Detiene el contenedor.  |
| `docker rm dvls-server`    | Eliminar el contenedor. |

{% hint style="info" %}
Eliminar el contenedor es seguro siempre que tenga el fichero `encryption.config.b64`, acceso a su base de datos de SQL Server y sus variables de entorno documentadas.
{% endhint %}
{% endtab %}

{% tab title="Linux" %}

### Configuración inicial de Devolutions Server

1. Cree un inicio de sesión y una base de datos dedicados utilizando una cuenta de administrador (por ejemplo, `sa` o un administrador de Azure SQL). Conceda [acceso con privilegios mínimos](/server/es/knowledge-base/knowledge-base-articles/pre-deployment-account-survey.md#windows-sql-accounts) a Devolutions Server.
2. Descargue la última [imagen Docker de Devolutions Server](https://hub.docker.com/r/devolutions/devolutions-server):

   ```bash
   docker pull devolutions/devolutions-server:release-20XX.X
   ```
3. Ejecute Devolutions Server en modo de inicialización para crear el esquema de la base de datos y su primer administrador, generar las claves de cifrado y configurar HTTPS con un certificado autofirmado. Guarde `App_Data` para que la configuración de cifrado se pueda recuperar en el paso siguiente.

```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. Extraiga `encryption.config` del volumen de inicialización:

   ```bash
   docker run --rm \
     -v dvls-init-data:/data \
     alpine \
     cat /data/encryption.config
   ```
5. Convierta el fichero extraído a base64 y guárdelo de forma segura, ya que será necesario en cada arranque en tiempo de ejecución:

   ```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. Inicie Devolutions Server utilizando la configuración de cifrado en base64. Una vez hecho esto, utilice los comandos `docker ps` y `docker logs dvls-server` para asegurarse de que todo funciona correctamente:

   ```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 a la interfaz web abriendo `https://localhost:5000` en su navegador. Sáltese la advertencia de seguridad del certificado autofirmado haciendo clic en ***Avanzado*** – ***Continuar***. Puede montar un certificado TSL personalizado más adelante.
8. Inicie sesión utilizando `dvls-admin` tanto como nombre de usuario como contraseña.

{% hint style="danger" %}
Inmediatamente después de iniciar sesión, cambie la contraseña predeterminada dirigiéndose a ***Administración*** – ***Usuarios***, haciendo clic en el botón de puntos suspensivos verticales del usuario `dvls-admin` y seleccionando ***Cambiar contraseña***.
{% endhint %}

9. Asegúrese de que Devolutions Server se está ejecutando con `DVLS_ENCRYPTION_CONFIG_B64`, de que su interfaz web es accesible y de que `encryption.config.b64` está guardado en una ubicación segura (es necesario en cada reinicio y redespliegue). Una vez hecho esto, el volumen de inicialización temporal se puede eliminar de forma segura:

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

### Modos de funcionamiento

El contenedor Docker de DVLS funciona en tres modos distintos:

| Modo                                         | Variable de entorno      | Propósito                         | Comportamiento                                                                                                       |
| -------------------------------------------- | ------------------------ | --------------------------------- | -------------------------------------------------------------------------------------------------------------------- |
| **Tiempo de ejecución** **(predeterminado)** | Sin variables especiales | Funcionamiento normal             | Inicia el servidor web y se mantiene en ejecución.                                                                   |
| **Inicialización**                           | `DVLS_INIT=true`         | Configuración inicial             | Crea el esquema de la base de datos y el usuario administrador y, a continuación, finaliza.                          |
| **Actualización**                            | `DVLS_UPDATE_MODE=true`  | Actualización de la base de datos | Realiza una copia de seguridad de los ficheros de configuración, migra la base de datos y, a continuación, finaliza. |

{% hint style="info" %}
Los modos **Inicialización** y **Actualización** son mutuamente excluyentes.
{% endhint %}

### Puerto personalizado

Cambie el puerto en el que escucha Devolutions Server estableciendo la variable de entorno `PORT`, por ejemplo, con el puerto `8080` como en el ejemplo siguiente:

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

### Montar un certificado TSL personalizado

Monte sus propios ficheros de certificado en lugar de usar el certificado autofirmado generado automáticamente:

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

### Gestión de contenedores

| Comandos                   | Funciones              |
| -------------------------- | ---------------------- |
| `docker start dvls-server` | Inicia el contenedor.  |
| `docker stop dvls-server`  | Detiene el contenedor. |
| `docker rm dvls-server`    | Elimina el contenedor. |

{% hint style="info" %}
Eliminar el contenedor es seguro siempre que disponga del fichero `encryption.config.b64`, tenga acceso a su base de datos de SQL Server y tenga documentadas sus variables de entorno.
{% endhint %}
{% endtab %}
{% endtabs %}

#### Véase también

* [Lista de verificación de seguridad](/server/es/getting-started/security-checklist.md)
* [Despliegue de Devolutions Server en Azure App Service mediante un contenedor](/server/es/knowledge-base/how-to-articles/devolutions-server-docker-deployment/devolutions-server-deployment-to-azure-app-service-using-a-container.md)
* [Configuración avanzada de Docker para Devolutions Server](/server/es/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/es/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.
