Instalación y primeros flujos
Despliegue de n8n en Docker y creación del primer workflow funcional.
Todo lo que voy montando (y rompiendo) en mi propio stack de IA, organizado como un manual: 8 capítulos, cada uno con sus temas. Descarga lo que ya está disponible; el resto se va publicando por orden.
Sin resultados para esa búsqueda o filtro.
Este capítulo no instala nada en tu servidor. Es, quizás, el paso más importante de todos: no vas a hacer este camino solo.
Este manual es un mapa. Un asistente de IA es quien te acompaña cuando te sales del mapa.
Yo he seguido este mismo proceso apoyándome todo el rato en Claude, el asistente de IA de Anthropic. No porque este manual esté incompleto, sino porque ningún manual, por bueno que sea, puede prever el error exacto que te va a salir a ti, en tu servidor, con tu configuración concreta.
Un manual te explica lo que pasó cuando yo lo hice. Un asistente de IA puede leer tu error, explicarte qué significa con otras palabras si la primera explicación no te ha quedado clara, y ayudarte a decidir el siguiente paso — a cualquier hora, sin esperar a que yo conteste un mensaje.
No sustituye a entender lo que haces. Pero sí quita esa sensación de estar solo delante de una pantalla negra que no te dice nada.
No hay uno "correcto" — esto va más de costumbre que de rendimiento.
Hay varias opciones conocidas y todas te van a servir para seguir este manual sin problema. Sin entrar en cuál es "mejor" — porque sinceramente no lo sé, y cambia con el tiempo — esto es, a grandes rasgos, lo que te vas a encontrar:
Yo uso Claude simplemente porque es con el que más cómodo me siento — es una cuestión de gustos, parecida a elegir un editor de código o un sistema operativo. No es una recomendación de que sea mejor que las otras opciones para este manual: cualquiera de ellas te va a poder ayudar a explicar comandos, revisar errores y acompañarte capítulo a capítulo.
Elige uno, créate una cuenta gratuita si no la tienes, y déjalo abierto en una pestaña mientras avanzas por el resto del manual.
Tres costumbres que marcan la diferencia entre usarlo bien o mal.
Un ejemplo de mensaje que puedes usar tal cual cuando algo falle:
Estoy siguiendo un manual para montar mi propio stack de IA en un VPS.
Acabo de ejecutar este comando:
[pega aquí el comando exacto]
Y me ha devuelto este resultado o error:
[pega aquí el mensaje completo, tal cual]
¿Puedes explicarme en términos sencillos qué ha pasado
y qué debería hacer a continuación?
La base de todo lo demás: un VPS propio, actualizado y accesible de forma segura.
Contratación del VPS, primer acceso por SSH y actualización del sistema.
VPS son las siglas de "Servidor Privado Virtual". Piénsalo como un ordenador que no está en tu casa, sino en un centro de datos, encendido las 24 horas, al que tú accedes por internet para instalar y hacer funcionar lo que necesites. No tiene pantalla ni teclado propios: todo se hace escribiendo comandos en una ventana de texto llamada terminal.
Yo uso IONOS porque es lo que ya conocía, pero esto funciona igual en Hetzner, DigitalOcean, Vultr, OVH o cualquier otro proveedor similar. Al contratarlo, elige:
SSH es el sistema que te permite abrir una terminal "dentro" de tu VPS desde tu propio ordenador, de forma segura. En Windows puedes usar la app Terminal o PowerShell; en Mac y Linux, la Terminal que ya viene instalada.
ssh root@tu-direccion-ip
Sustituye tu-direccion-ip por la IP real de tu VPS. La primera vez te pedirá confirmar la conexión (escribe yes) y después la contraseña que te dio tu proveedor.
Es lo primero que hago siempre en un VPS recién estrenado: ponerlo al día antes de instalar nada más.
sudo apt update && sudo apt upgrade -y
sudo significa "hazlo con permisos de administrador" — Ubuntu te lo pedirá para casi cualquier cambio importante en el sistema. Es normal y es lo esperado.
Firewall, usuarios sin privilegios y cierre de puertos innecesarios.
Cuando te conectas como root, tienes permiso para hacer literalmente cualquier cosa en el servidor — incluido borrar algo importante por error, sin que nadie te pregunte "¿seguro?". Por eso el primer paso de seguridad es crear un usuario normal para el día a día, y reservar los permisos de administrador solo para cuando de verdad los necesites.
adduser miusuario
usermod -aG sudo miusuario
El primer comando crea el usuario (te pedirá una contraseña). El segundo le da permiso para usar sudo, es decir, para poder pedir permisos de administrador puntualmente cuando haga falta.
Un firewall decide qué "puertas" de tu servidor están abiertas al exterior y cuáles cerradas. Ubuntu trae uno ya instalado, llamado UFW, que solo hay que activar con cuidado de no cerrarte tú mismo el acceso por SSH.
sudo ufw allow OpenSSH
sudo ufw enable
sudo ufw status
La primera línea deja abierta la puerta del SSH (para que no te quedes fuera de tu propio servidor). La segunda activa el firewall. La tercera te muestra qué reglas están activas.
sudo ufw status, mostrando el puerto SSH permitido.Estrategia sencilla de backups automáticos para no perder nada al romper algo.
El nombre de este proyecto es "Prueba y Error" por algo: vas a romper cosas. La diferencia entre que eso sea divertido o un disgusto serio está en tener una copia de seguridad reciente.
Un snapshot es una "foto" completa de tu servidor en un momento concreto — sistema, archivos, todo — que tu proveedor guarda por ti y te permite restaurar con un par de clics si algo sale mal. Casi todos los proveedores (IONOS, Hetzner, DigitalOcean, Vultr...) lo ofrecen desde su panel web, normalmente en una sección llamada "Snapshots" o "Backups".
Te recomiendo activar la copia automática (semanal, por ejemplo) y además hacer una manual justo antes de cualquier cambio grande que vayas a probar.
Además del snapshot completo, es buena costumbre guardar aparte las carpetas que más te importan (por ejemplo, esta misma web). El comando tar empaqueta y comprime una carpeta en un único archivo.
tar -czvf backup-$(date +%F).tar.gz /var/www
Esto crea un archivo con la fecha de hoy (por ejemplo backup-2026-07-20.tar.gz) con todo el contenido de /var/www. Puedes descargarlo a tu ordenador desde el propio panel de archivos de tu proveedor, o con un cliente SFTP.
Todo el stack corre en contenedores. Aquí, cómo instalarlos y gestionarlos sin perder la cabeza.
Puesta a punto de Docker en Ubuntu 24.04, listo para levantar servicios.
Imagina que cada programa que quieres instalar (n8n, ComfyUI, una base de datos...) viene dentro de su propia "caja cerrada" con absolutamente todo lo que necesita para funcionar: sus propias librerías, su propia configuración, sin pelearse con lo que ya tienes instalado en el servidor. Esa caja es un contenedor. Docker es el programa que crea, arranca y para esas cajas.
La ventaja práctica: si algo se rompe dentro de un contenedor, puedes borrarlo y volver a crearlo desde cero en segundos, sin que afecte a nada más de tu servidor.
Usamos el script oficial de instalación, que hace todo el trabajo por ti.
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
La primera línea descarga el instalador oficial; la segunda lo ejecuta. Tardará un par de minutos.
docker --version
docker compose version
Si ambos comandos responden con un número de versión (en vez de un error), Docker y Docker Compose están listos.
docker --version y docker compose version.Un detalle útil: si quieres usar docker sin escribir sudo delante cada vez, puedes añadir tu usuario al grupo docker:
sudo usermod -aG docker $USER
Después de esto, cierra sesión y vuelve a conectarte por SSH para que el cambio surta efecto.
Ver logs, reiniciar contenedores y gestionar volúmenes sin tocar la terminal.
Docker se controla normalmente escribiendo comandos, y eso puede resultar incómodo al principio. Portainer es un panel visual — una página web — desde el que ves todos tus contenedores, sus registros de actividad ("logs"), puedes reiniciarlos o pararlos con un clic, sin memorizar comandos.
Lo curioso es que Portainer se instala también como un contenedor Docker más.
docker volume create portainer_data
docker run -d \
-p 8000:8000 -p 9443:9443 \
--name portainer --restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
portainer/portainer-ce:lts
La primera línea crea un espacio donde Portainer guarda su propia configuración (un "volumen"). El bloque siguiente descarga Portainer y lo arranca, dejándolo accesible en el puerto 9443. Uso la etiqueta :lts en vez de :latest porque es lo que recomienda ahora mismo la documentación oficial de Portainer — una versión estable de soporte largo, en vez de la última versión sin más.
Abre en tu navegador: https://tu-direccion-ip:9443
El navegador probablemente avisará de que el certificado de seguridad no es de confianza — es normal en este primer acceso directo por IP, puedes continuar. Portainer te pedirá crear un usuario administrador y una contraseña la primera vez.
Cómo exponer todos los servicios del VPS bajo un mismo dominio, con SSL.
Bloque de servidor, certificados y renovación automática.
Cuando alguien visita tu dominio, esa visita llega a tu servidor "en bruto" — hay que decidir a qué servicio dirigirla (¿la web estática? ¿n8n? ¿otra cosa?) y, si usas HTTPS, quién gestiona el candado de seguridad. Ese trabajo de "recepcionista" lo hace Nginx: recibe todas las visitas al dominio y las reparte al sitio correcto dentro del servidor. A esto se le llama proxy inverso.
sudo apt install nginx -y
Nginx guarda una configuración distinta para cada dominio que gestiona, en archivos separados. Crea uno nuevo con un editor de texto sencillo en la terminal:
sudo nano /etc/nginx/sites-available/tudominio.com
Y pega este contenido básico, cambiando tudominio.com por el tuyo:
server {
listen 80;
server_name tudominio.com www.tudominio.com;
location / {
proxy_pass http://localhost:3000;
}
}
Guarda con Ctrl+O, luego Enter, y sal con Ctrl+X. El número 3000 es solo un ejemplo — más adelante lo cambiaremos según qué servicio quieras exponer.
sudo ln -s /etc/nginx/sites-available/tudominio.com /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
nginx -t comprueba que no hay errores de sintaxis antes de aplicar nada — consulta siempre este paso antes de recargar. Si todo va bien, verás syntax is ok y test is successful.
sudo nginx -t.Un certificado SSL es lo que hace que tu dominio se cargue con el candado de "conexión segura" (HTTPS). Certbot lo consigue gratis y lo renueva solo.
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d tudominio.com -d www.tudominio.com
Certbot te hará un par de preguntas (un email de contacto y aceptar los términos) y configurará Nginx automáticamente para usar HTTPS.
Servir páginas estáticas y proxys a contenedores desde el mismo servidor Nginx.
Esta misma página que estás leyendo es un buen ejemplo: es un simple archivo HTML (lo que llamamos "contenido estático" — no cambia según quién lo visita) que convive en el mismo servidor con aplicaciones como n8n, que sí corren dentro de un contenedor Docker. Nginx puede servir ambas cosas a la vez, cada una en su propia ruta, usando bloques location.
Sube tus archivos (como este index.html) a una carpeta del servidor, por ejemplo /var/www/pruebayerror, y añade esto dentro del bloque server { } de tu archivo de configuración de Nginx (el mismo que creaste en el tema 3.1):
location /pruebayerror {
alias /var/www/pruebayerror;
index index.html;
}
alias le dice a Nginx en qué carpeta real del servidor están los archivos que debe mostrar cuando alguien visite tudominio.com/pruebayerror.
Para una aplicación que corre en un contenedor (como n8n, que por defecto escucha en el puerto 5678 dentro del servidor), el bloque es distinto — en vez de apuntar a una carpeta, apunta a ese puerto:
location /n8n {
proxy_pass http://localhost:5678;
}
sudo nginx -t
sudo systemctl reload nginx
tudominio.com/pruebayerror y otra tudominio.com/n8n — para ver ambos tipos de contenido conviviendo en el mismo dominio.Conectar servicios y automatizar tareas repetitivas sin escribir mucho código.
Despliegue de n8n en Docker y creación del primer workflow funcional.
Flujo para preparar y programar publicaciones desde una hoja de cálculo.
Modelos de lenguaje corriendo en tu propio servidor, sin depender de terceros.
Qué modelos usar según la RAM disponible y cómo instalarlos con Ollama.
Subir documentos a OpenWebUI para consultarlos con tus propios modelos.
Imagen y vídeo generados con IA, con control total sobre el flujo de nodos.
Puesta en marcha de ComfyUI como proceso Python directo en el VPS.
El flujo que uso en mis propias pruebas, listo para importar.
Cómo encajan entre sí todas las piezas anteriores en un único sistema coherente.
Diagrama y explicación de cómo Nginx, Docker, n8n, Ollama y ComfyUI trabajan juntos.
Lo que hace falta para que el stack siga funcionando bien con el tiempo.
Cómo mantener el sistema al día sin que se rompa nada por sorpresa.
Ideas para ampliar el stack según vayan surgiendo nuevas necesidades.