**n8n** conecta APIs, correo, hojas de cálculo, bases de datos y modelos de IA con flujos visuales. Puedes pagar su nube, pero autoalojarlo en un VPS tiene dos ventajas claras: **tus datos y credenciales se quedan en tu servidor**, y el precio no depende del número de ejecuciones.

Aquí lo instalamos con Docker y lo publicamos con HTTPS, listo para producción.

## Lo que necesitas

- Un [VPS](https://ginernet.com/es/vps/) con **Ubuntu 24.04** (o Debian). Para empezar sobra con 1-2 vCores y 2 GB de RAM; podrás ampliar después sin reinstalar.
- Un **subdominio** apuntando a la IP del VPS (por ejemplo `n8n.tudominio.com`, registro DNS tipo A).
- Acceso SSH como root.

## Paso 1: instala Docker

```
apt update && apt install -y docker.io
systemctl enable --now docker
```

## Paso 2: arranca n8n

```
docker volume create n8n_data
docker run -d --name n8n --restart unless-stopped \
  -p 127.0.0.1:5678:5678 \
  -v n8n_data:/home/node/.n8n \
  -e N8N_HOST=n8n.tudominio.com \
  -e WEBHOOK_URL=https://n8n.tudominio.com/ \
  -e GENERIC_TIMEZONE=Europe/Madrid \
  docker.n8n.io/n8nio/n8n
```

Fíjate en el detalle de `127.0.0.1:5678`: n8n solo escucha en la propia máquina. Nunca lo expongas directamente a internet sin HTTPS delante.

## Paso 3: HTTPS con Caddy

Caddy es el proxy inverso más simple: obtiene y renueva el certificado SSL solo.

```
apt install -y caddy
```

Edita `/etc/caddy/Caddyfile` y déjalo así:

```
n8n.tudominio.com {
    reverse_proxy 127.0.0.1:5678
}
```

Recarga y listo:

```
systemctl reload caddy
```

Recuerda tener abiertos los puertos **80 y 443** en el firewall del servidor (en un VPS de GINERNET, desde la sección Firewall del Manager).

## Paso 4: primer acceso

Abre `https://n8n.tudominio.com`, crea la cuenta de administrador y empieza a montar flujos. Los **webhooks** (la razón de que n8n necesite un servidor siempre encendido con IP pública) ya funcionan: cualquier servicio externo puede llamar a `https://n8n.tudominio.com/webhook/...` a cualquier hora.

## Actualizar n8n

n8n publica versiones constantemente. Para actualizar sin perder nada (los datos viven en el volumen `n8n_data`):

```
docker pull docker.n8n.io/n8nio/n8n
docker stop n8n && docker rm n8n
```

…y vuelve a lanzar el `docker run` del paso 2.

## Copias de seguridad

Todo el estado (flujos, credenciales cifradas, histórico) está en el volumen de Docker. Un backup sencillo:

```
docker run --rm -v n8n_data:/data -v /root/backups:/backup alpine \
  tar czf /backup/n8n-$(date +%F).tar.gz -C /data .
```

Prográmalo en un cron semanal y guarda una copia fuera del servidor.

:::tip
Si tus flujos crecen (muchos nodos de IA, scraping, colas…), amplía la RAM del VPS en caliente desde el Manager: Con 4 GB de RAM n8n va más holgado.
:::