> La lista completa de artículos está en [llms.txt](https://docs.f3cloud.com/llms.txt). Cada página tiene versión en Markdown, basta con añadir .md a su dirección. Esta página en Markdown: [https://docs.f3cloud.com/es/software-setup/n8n-installation.md](https://docs.f3cloud.com/es/software-setup/n8n-installation.md).

# Cómo instalar n8n en un VPS con Docker y HTTPS mediante Caddy

Cómo instalar n8n en un VPS con Docker, el proxy inverso Caddy y SSL automático. Preparación del servidor, Caddyfile y docker-compose, puesta en marcha y activación de la 2FA.

### Arquitectura de la solución

El stack se compone de dos **contenedores principales**:

* **Caddy** – servidor edge que se encarga de la terminación TLS y de redirigir el tráfico.
* **n8n** – el nodo principal de automatización _(plataforma low-code)_.

> **Nota.**
>
> El tráfico llega a los puertos **80/443** del host -> **Caddy** _(SSL automático)_ -> red interna de **Docker** -> **n8n** _(puerto **5678**)_.

#### Paso 1. Preparación del servidor y requisitos del sistema

Para que **n8n** funcione de forma **estable** y **sin interrupciones**, hay que desplegarlo en un servidor virtual privado **(VPS)**. Como infraestructura **fiable** te recomendamos nuestros servidores [**F3 Cloud**](https://f3cloud.com/es?ref=docs), porque **cumplen por completo los requisitos del sistema** del proyecto y son totalmente **compatibles con las instrucciones** que verás más abajo.

| Parámetro               | Requisitos mínimos                        |
| ----------------------- | ----------------------------------------- |
| vCPU (núcleo virtual)   | Mínimo 2 núcleos.                         |
| RAM                     | Desde 4 GB.                               |
| Almacenamiento          | Desde 40 GB SSD.                          |
| Sistema operativo       | Ubuntu 24.04 (recomendado).               |

> Para que n8n funcione con rapidez y comodidad, te aconsejamos la configuración **DE-RZ9-2** (2 vCPU, 4 GB de RAM, 60 GB NVMe). Este servidor funciona con un procesador AMD Ryzen 9 5950X, que se maneja muy bien con las tareas en segundo plano y cubre por completo los requisitos del sistema del proyecto.

#### Paso 2. Elige la configuración del servidor

Después de iniciar sesión o registrarte en el panel de [**F3 Cloud**](https://docs.f3cloud.com/es/client-area/registration), pulsa el botón <kbd>Order service</kbd> para pasar a la elección del servidor.

<figure><img src="https://docs.f3cloud.com/img/gb-2ae3a9dc-spaces-UZCon1KDFCWX5Lp410mU-uploads-LNFlMLsfjQxHaqKUEHVB-Group-22.png" alt=""><figcaption></figcaption></figure>

* En el menú <kbd>**Order service**</kbd> primero aparecen los planes principales. Para ver la lista completa, pulsa **View all**.

Cómo elegir el servidor:

* En la tarjeta **DE-RZ9-2**, pulsa el botón <kbd>**Order**</kbd>.
* En la configuración del servidor, elige el sistema operativo <kbd>**Ubuntu 24.04**</kbd>.
* Pulsa el botón <kbd>**Pay**</kbd> para completar el pedido.

<figure><img src="https://docs.f3cloud.com/img/gb-5a9675b8-spaces-UZCon1KDFCWX5Lp410mU-uploads-IMcgyDhlyuaQ7js3oE17-Group-23.png" alt=""><figcaption><p>La imagen es solo un ejemplo de cómo configurar el servidor. En tu caso tienes que elegir Ubuntu 24.04, no Debian.</p></figcaption></figure>

#### Paso 3. Activación del servidor

Después del pago, el pedido se procesa automáticamente. La activación del servidor no suele tardar más de **2 minutos**.

<figure><img src="https://docs.f3cloud.com/img/gb-10ec902d-spaces-UZCon1KDFCWX5Lp410mU-uploads-7LwPhaFG5AcF4PX7U8u2-image-17.png" alt=""><figcaption><p><em>El estado del servidor es "processing", solo hay que esperar un poco.</em></p></figcaption></figure>

Puedes seguir el estado actual en el **panel de control**. En cuanto el servidor esté listo para usarse, el estado cambiará a <kbd>**Active**</kbd>.

> **Nota.**
>
> A veces la activación puede tardar algo más por una carga elevada y la cola de pedidos en la ubicación elegida. Si el servidor no se ha activado en 10 minutos, escríbenos un ticket y revisaremos enseguida el estado del pedido.

#### Paso 4. Obtén los datos del servidor

1. Espera a que el servidor esté completamente activado.
2. En el área de cliente, marca la casilla junto al servidor que necesitas y pulsa el botón <kbd>**Instructions**</kbd> del menú superior.
3. <kbd>**Copia los datos de conexión**</kbd> que aparecen en las instrucciones:
   * <kbd>Server IP address</kbd>.
   * <kbd>Username</kbd>.
   * <kbd>Password</kbd>.

En la captura de abajo se ve exactamente dónde encontrar esta información.

<figure><img src="https://docs.f3cloud.com/img/gb-ff9ec2de-spaces-UZCon1KDFCWX5Lp410mU-uploads-WcFSueCBKPdJrovv4Ar8-Group-10.png" alt=""><figcaption></figcaption></figure>

<figure><img src="https://docs.f3cloud.com/img/gb-05e09083-spaces-UZCon1KDFCWX5Lp410mU-uploads-8VmoOz7sQnvGZAr0LfhW-Group-24.png" alt=""><figcaption><p>Los datos del servidor también se envían a tu correo.</p></figcaption></figure>

#### Paso 5. Prepara la estructura de archivos

Para montar los volúmenes correctamente, hay que **crear un directorio de trabajo** y los archivos de configuración.

```bash
apt update && apt upgrade -y
```

```bash
reboot ## Después del reinicio, continúa con el resto de la configuración.
```

```bash
mkdir -p /opt/n8n && cd /opt/n8n
```

```bash
touch Caddyfile docker-compose.yml
```

#### Paso 6. Configuración del proxy inverso (Caddyfile)

Es preferible usar un `Caddyfile` externo en lugar de **comandos inline** en **Compose**, porque así es más fácil depurar y mantener la configuración.

```bash
nano /opt/n8n/Caddyfile
```

Pega el siguiente contenido.

```nginx
tu-dominio.tld {
    reverse_proxy n8n:5678
}
```

> **Consejo.**
>
> Al arrancar, **Caddy** detectará automáticamente si hace falta emitir un certificado con **Let's Encrypt** o **ZeroSSL**.

#### Paso 7. Descripción de los servicios (Docker Compose)

El archivo de orquestación define los límites, las redes y las reglas de reinicio.

```text
/opt/n8n/docker-compose.yml
```

Pega el siguiente contenido y no olvides cambiarlo por tus propios valores.

```yaml
services:
  caddy:
    image: caddy:latest
    container_name: n8n-caddy
    restart: always
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile
      - caddy_data:/data
      - caddy_config:/config
    networks:
      - n8n_net

  n8n:
    image: n8nio/n8n:latest
    container_name: n8n-app
    restart: always
    environment:
      - N8N_HOST=tu-dominio.tld
      - N8N_PORT=5678
      - N8N_PROTOCOL=https
      - NODE_ENV=production
      - WEBHOOK_URL=https://tu-dominio.tld/
    volumes:
      - n8n_data:/home/node/.n8n
    networks:
      - n8n_net

networks:
  n8n_net:

volumes:
  caddy_data:
  caddy_config:
  n8n_data:
```

#### Paso 8. Despliegue y verificación

1. Arranque del stack en modo detach, es decir, en segundo plano.

```bash
docker compose up -d
```

2. Seguimiento de la emisión del certificado SSL.

```bash
docker compose logs -f caddy
```

3. Comprobación de que **n8n** está disponible. _La respuesta debe contener `HTTP/2 200`._

```bash
curl -I https://tu-dominio.tld
```

#### Paso 9. Registro en el panel de **n8n**

1. La primera vez que entres en la página verás un formulario de registro.

* **First and last name** – se usan para mostrar tu nombre dentro del panel.
* **Email** – es tu usuario para entrar. A esta dirección llegarán los avisos de errores críticos en los flujos de trabajo y las solicitudes para restablecer la contraseña.
* **Password** – al menos 8 caracteres. Como **n8n** tendrá acceso a tus **claves API**, servidores y **bots de Telegram**, usa **la combinación más compleja posible**.

2. Después de crear la cuenta, n8n te propondrá responder una breve encuesta.

* **Role** _(What is your role?)_ – elige `Engineer` o `DevOps`. **De esto depende** qué plantillas de flujos de trabajo **te sugerirá el sistema en la página de inicio.**
* **Usage Data** – el sistema te pedirá permiso para enviar estadísticas anónimas. **Como especialista en seguridad**, quizá prefieras **desactivar esta opción** para reducir al mínimo el tráfico saliente hacia servidores de terceros.

3. En cuanto entres en la interfaz principal, lo primero es proteger el acceso:

* Ve a **Settings** _(la rueda dentada abajo a la izquierda)_ -> **Personal**.
* Busca la sección **Multi-factor authentication**.
*   Pulsa **Enable 2FA** y escanea el código QR con cualquier aplicación de autenticación.

    > Es importante que guardes los códigos de recuperación. En un contenedor Docker, restablecer la 2FA a través de la base de datos será complicado si no tienes experiencia con SQLite.

#### Recomendaciones técnicas

* Los **datos de n8n** _(flujos de trabajo, cuentas)_ se guardan en el volumen con nombre `n8n_data`. Para hacer una copia de seguridad basta con copiar el contenido de `/var/lib/docker/volumes/n8n_n8n_data/`.
* Como **Caddy** funciona en los puertos **80/443**, asegúrate de que el **cortafuegos** externo _(ufw/iptables)_ **permite el tráfico entrante en esos puertos.**
