Imagina tener el control total sobre tus aplicaciones, ejecutándolas en tu propio servidor, a tu manera. En este tutorial de Coolify vamos a ver paso a paso cómo desplegar una aplicación web en tu propio VPS, utilizando una herramienta que simplifica enormemente el proceso.
Si alguna vez te has preguntado cómo hacer self-hosting de aplicaciones web o cómo desplegar proyectos sin depender de plataformas externas, esta guía te ayudará a empezar.
¿Por qué no utilizar Vercel o similares?
Plataformas como Vercel o Netlify la verdad que están muy muy bien y ofrecen una experiencia de despliegue hasta demasiado sencilla. Sin embargo, a medida que tus proyectos vayan creciendo, puede que te plantees cambiar a una solución de self-hosting por varias razones:
- Control total: con el self-hosting, tú mandas, tu balón tus normas. Tienes acceso completo al servidor.
- Costos predecibles: en lugar de pagar por uso que le des, pagas una tarifa fija por tu servidor, lo que facilita la previsión de gastos.
- Aprendizaje profundo: al final, gestionar tu propia infraestructura es una de las mejores maneras de entender cómo funcionan realmente las aplicaciones web, desde el servidor hasta el navegador.
Si estás buscando una alternativa open source a Vercel, aquí es donde entra Coolify
Coolify: Tu asistente personal de DevOps
Aquí es donde entra Coolify. Es una alternativa de código abierto que te permite desplegar aplicaciones en tu propio servidor con una experiencia muy similar a la de plataformas como Vercel, pero en tu propia infraestructura. Coolify se encarga de la complejidad de Docker, la configuración del servidor, los proxies inversos… En otras palabras, simplifica muchísimo el deploy de aplicaciones en un VPS, permitiéndote centrarte en lo importante: construir tu aplicación.
Ahora que entiendes el «porqué», vamos a sumergirnos en el «cómo», cómo instalar Coolify en un VPS paso a paso, empezando por la base de todo: nuestro servidor.
Preparando el terreno: configuración del servidor
Para instalar Coolify necesitamos un sitio donde hacerlo. Un servidor VPS por ejemplo.
Requisitos mínimos
- CPU: 2 Cores
- RAM: 2 GB
- Almacenamiento: 30 GB
Requerimientos mínimos documentación Coolify
Yo opté por pillar este de Hetzner pero quizás el siguiente habría estado mejor, pero para hacer pruebas y configurar todo lo que vamos a hacer está muy bien

Configurando el servidor
Aunque este tutorial voy a utiliza Hetzner como proveedor, los principios se aplican a cualquier servicio de VPS como DigitalOcean o cualquier otro. Un paso muy importante es asegurar el acceso desde el principio. Para ello, usaremos dos herramientas clave: claves SSH para un acceso seguro sin contraseñas y un script de cloud-config para automatizar la configuración inicial.
Antes de crear el servidor, asegúrate de haber generado un par de claves SSH (pública y privada) en el equipo con el que te gustaría conactarte en breve. Solo necesitarás la clave pública para el siguiente paso (para generar la SSH podéis seguia esta guía de Github).
El script cloud-config realiza varias acciones críticas de seguridad en el servidor desde el primer momento. Resumen de lo más importante:
| Acción | Beneficio para ti |
|---|---|
Crear un usuario no-root (dbp en el ejemplo) con privilegios sudo | Evita que operes como usuario root, práctica de seguridad fundamental. |
| Añadir tu clave pública SSH a ese usuario | Te permite acceder al servidor de forma segura sin necesidad de contraseñas. |
Deshabilitar el login con contraseña (PasswordAuthentication no) | Elimina por completo la posibilidad de ataques de fuerza bruta contra contraseñas, forzando el uso de claves SSH mucho más seguras. |
Actualizar todos los paquetes del sistema (apt upgrade -y) | Asegura que tu servidor tiene los últimos parches de seguridad desde el primer arranque, cerrando vulnerabilidades conocidas. |
Te dejo el script, pero antes de usarlo, remplaza la clave ssh-ed25519 de ejemplo por tu propia clave pública SSH. También puedes cambiar el nombre de usuario (dbp) por el tuyo. Además, este script fue escrito para Ubuntu 24.04. Si usas otra versión es posible que necesites hacer ajustes.
# Escrito para for Ubuntu 24.04
#cloud-config
users:
- name: dbp
ssh_authorized_keys:
- "ssh-ed25519 [el resto de la clave SSH] dbp@example.com"
sudo: ALL=(ALL:ALL) ALL
groups: sudo
shell: /bin/bash
chpasswd:
expire: true
users:
- name: dbp
password: changeme
type: text
runcmd:
- sed -i '/PermitRootLogin/d' /etc/ssh/sshd_config
- echo "PermitRootLogin without-password" >> /etc/ssh/sshd_config
- sed -i '/PubkeyAuthentication/d' /etc/ssh/sshd_config
- echo "PubkeyAuthentication yes" >> /etc/ssh/sshd_config
- sed -i '/PasswordAuthentication/d' /etc/ssh/sshd_config
- echo "PasswordAuthentication no" >> /etc/ssh/sshd_config
- systemctl restart sshd
- echo "\$nrconf{kernelhints} = -1;" > /etc/needrestart/conf.d/99disable-prompt.conf
- apt update
- apt upgrade -y --allow-downgrades --allow-remove-essential --allow-change-held-packages
- rebootCon nuestro servidor listo y configurado de forma segura, es hora de instalar Coolify.
Instalando Coolify
La instalación es muy sencilla. Sigue estos pasos:
- Conéctate a tu servidor usando SSH con el usuario no-root que has creado desde el cloud-config (por ejemplo,
ssh dbp@IP_DE_TU_SERVIDOR). - El script de instalación de Coolify necesita privilegios de administrador para funcionar. Aunque hemos creado un usuario sin privilegios por seguridad, podemos ejecutar un solo comando como
rootusandosudo. - Ejecuta el script de instalación. Copia y pega el siguiente comando en tu terminal:curl -fsSL
https://cdn.coollabs.io/coolify/install.sh | sudo bash - Ya estaría en marcha, mientras tanto instalador te irá contando unos chistes para mantener que no se te haga tan largo, o sí, bueno, siempre puede ir a por una café mientras tanto.

- Una vez finalizada la instalación, abre tu navegador y accede al panel de control de Coolify usando la IP de tu servidor y el puerto
8000. Así:http://IP_DE_TU_SERVIDOR:8000. - Advertencia: La conexión inicial es a través de
http(no segura). Por lo tanto, crea una contraseña temporal y sencilla. La cambiaremos por una segura en cuanto configuremos HTTPS.

Ya tienes Coolify en marcha. Ahora vamos a configurarlo correctamente para empezar a desplegar proyectos.
Configuración esencial de tu instancia de Coolify
Antes de desplegar nada, vamos a asegurar y profesionalizar aunque sea un poco nuestra instalación de Coolify.
Servidor local vs. Remoto: Decisión clave
Al iniciar, Coolify te preguntará dónde quieres desplegar tus aplicaciones. Verás dos opciones: This machine (localhost) o un servidor remoto. localhost se refiere a la misma máquina donde acabas de instalar Coolify (el servidor de Hetzner en mi caso). Un servidor remoto sería otra máquina que Coolify gestionaría a distancia.


Para empezar y para la mayoría de proyectos pequeños y medianos, usar localhost («This machine») es la opción más sencilla.

La arquitectura remota está pensada para escenarios algo más complejos, y viene bien para un caso donde por ejemplo, teniendo una API de Node.js, esta tiene un pico de uso y empieza a consumir toda la CPU. Si Coolify está en el mismo servidor, su panel podría volverse inaccesible, impidiéndote gestionar la situación. Al ejecutar Coolify en una instancia separada, el panel permanece operativo sin importar lo que ocurra con tus aplicaciones.
Dominio, HTTPS y Firewall: Asegurando tu Instancia
Para que tu instancia de Coolify sea accesible de forma segura a través de un dominio:
1. Configurar el Dominio: Ve a la configuración de tu instancia de Coolify y establece el dominio que usarás para acceder a ella (ej. coolify.tudominio.com). Para simplificar, puedes deshabilitar la validación de DNS y las actualizaciones automáticas por ahora.

2. Cambiar a Caddy: Coolify utiliza un «proxy inverso» para gestionar el tráfico a tus aplicaciones y habilitar HTTPS automáticamente. Aunque el proxy por defecto (Traefik) está bien, cambiaremos a Caddy. Para este tutorial, Caddy simplifica mucho la gestión de HTTPS y la adición de configuraciones personalizadas. Lo veremos más adelante. Así que paramos el proxy, Switch Proxy seleccionamos Caddy esperamos un poco y estará en marcha.

3. Verificar el acceso: Asegúrate de que tu dominio (ej. coolify.tudominio.com) apunta a la IP de tu servidor en tu proveedor de DNS. Ahora deberías poder acceder a tu panel de Coolify a través de https://coolify.tudominio.com. y ya estaría con HTTPS.
4. Configurar el firewall: Ahora que accedes por el dominio, es vital cerrar el acceso no autorizado. Ve al panel de control de tu proveedor de servidor (Hetzner en nuestro ejemplo) y configura su firewall. Bloquea todos los puertos entrantes excepto el 80 (HTTP) y el 443 (HTTPS). Una vez aplicadas las reglas del firewall, intenta acceder a tu instancia a través de la IP y el puerto 8000 (ej. http://IP_DE_TU_SERVIDOR:8000).

Debería fallar la conexión. Esto es buena señal, tu instancia ahora solo es accesible a través de tu dominio HTTPS, https://coolify.tudominio.com.
Asegura tu cuenta
Ahora que tu conexión está cifrada con HTTPS, es el momento de reforzar la seguridad de tu cuenta.
- Ve a la configuración de tu perfil en Coolify y cambia la contraseña provisiona que pusimos antes por una fuerte y segura.
- Activa la Autenticación de Dos Factores (2FA) para añadir una capa extra.
Ahora Coolify ya es seguro. ¡Vamos desplegar nuestra primera aplicación!
Primer despliegue: Un sitio estático desde GitHub
Vamos a empezar con algo sencillo: desplegar un sitio web estático desde un repositorio público de GitHub.
- Crear un Proyecto: En el panel de Coolify, haz clic para crear
Projects > + Add - Añadir un Recurso: Dentro del proyecto, elige añadir un nuevo recurso (si bajas hacia abajo verás infinidad de opciones, pero de momento vamos despacio) y selecciona la opción «Public Repository (based on Git)».
- Configurar el Repositorio: Pega la URL de un repositorio de ejemplo. Puedes usar alguno que tengas, o incluso hacerte uno rápido, yo me he hecho una web estática súper rápido con ChatGPT :
https://github.com/DavitBoo/davidboo.xyz. - Elegir Build Pack: Coolify te preguntará de qué tipo es el proyecto. Selecciona «Static».
- Definir el Dominio: En la configuración del recurso, establece el dominio o subdominio donde quieres que tu sitio esté disponible (ej.
test.tudominio.com). - Desplegar: ¡Pulsa «Deploy» y observa la magia!
Puedes seguir como va el despliegue en la pestaña de logs. Una vez que veas el mensaje de «Rolling update completed», visita la URL que configuraste. Tu sitio debería estar online.
Redirecciones y configuración de Caddy
¡Tu aplicación ya está online y accesible por HTTPS! Pero casi siempre queremos que funcione perfectamente tanto en https://test.tudominio.com como en https://www.test.tudominio.com… y preferiblemente que uno redirija al otro de forma automática y limpia (sobre todo por SEO).
Coolify, cuando usamos Caddy como proxy inverso, delega gran parte de la magia a caddy-docker-proxy. Esta herramienta lee las etiquetas (labels) de Docker de cada contenedor y genera automáticamente la configuración de Caddy. ¡Por eso podemos personalizar redirecciones y reglas avanzadas sin tocar directamente el Caddyfile principal!
Redirección básica www → non-www
Vamos a hacer que www.test.tudominio.com redirija permanentemente (301) a test.tudominio.com.
Paso 1: Asegúrate de tener ambos dominios añadidos En la configuración del recurso (el sitio o app que desplegaste), en la sección de Domains, pon ambos:

Paso 2: Añade la regla de redirección con etiquetas personalizadas Ve a la sección Labels (etiquetas) del recurso.
Desactiva temporalmente la opción «Readonly labels» si es necesario para poder editar libremente (en algunas versiones de Coolify no permite modificarlo si no.

Añade o modifica estas etiquetas (las que empiezan por caddy_ son para crear un bloque de sitio separado):
- Key: caddy_1 Value: https://www.test.tudominio.com
- Key: caddy_1.redir Value: https://test.tudominio.com{uri} 301
Guarda los cambios y pulsa Redeploy.
Ahora, cuando alguien entre a www.test… debería ser redirigido automáticamente al non-www.
Desplegar una aplicación Next.js con Coolify
Nixpack
Nixpack es una herramienta que analiza el código fuente de tu proyecto y deduce automáticamente cómo instalar las dependencias, construir el proyecto y ejecutar la aplicación. Todo esto sin que tengas que escribir un solo Dockerfile. Permite los despliegues en un clic.
Por ejemplo, si detecta un archivo package.json, ejecutará automáticamente:
npm install
npm run build
npm start
Esto permite hacer deploy de aplicaciones Node.js en un VPS sin escribir Dockerfiles.
Despliegue de aplicación en Next.js
Desplegar una aplicación de Next.js es casi idéntico a desplegar un sitio estático. Simplemente, proporciona la URL del repositorio y selecciona Nixpacks en vez de Static. Nixpacks detectará el package.json y automáticamente ejecutará los scripts install, build y start que encuentre.
Advertencia sobre un error que yo mismo tuve: Durante el proceso de construcción (next build), si tu código intenta hacer una llamada fetch a su propia API (ej. fetch('/api/posts')), es probable que falle. Esto ocurre porque en el momento de la construcción, el servidor de la aplicación aún no está en funcionamiento. Es un detalle a tener en cuenta. Y no te olvides de establecer las variables de entorno.
Integrando una GitHub App para repositorios privados
Para trabajar con tus repositorios privados y activar despliegues automáticos cada vez que haces un push a tu repositorio, necesitas conectar Coolify con tu cuenta de GitHub.
1. En Coolify, ve a la sección «Sources» en el menú lateral y selecciona añadir una nueva «GitHub App».

2. Coolify te guiará en un proceso que te redirigirá a GitHub para autorizar y registrar la aplicación. Podrás elegir a qué repositorios (todos o solo algunos) le das acceso.
3. Una vez instalada la app en GitHub, vuelve a Coolify y verifica que la conexión se ha establecido correctamente.
4. ¡Listo! Ahora, al crear un nuevo recurso, podrás seleccionar tus repositorios privados directamente desde un desplegable y activar la opción de «Auto Deploy».
Ahora puedes desplegar tanto sitios públicos como privados con total automatización.
Conclusión y despedida
Montar tu propia infraestructura puede parecer algo complejo al principio, pero herramientas como Coolify hacen que el proceso sea muchísimo más accesible. Con unos pocos pasos puedes pasar de tener un VPS vacío a desplegar aplicaciones reales con HTTPS automático e integración con Git.
Además del ahorro potencial a largo plazo, el mayor valor está en el aprendizaje. Gestionar tu propio servidor te permite entender mejor cómo funcionan realmente las aplicaciones web: desde el sistema operativo y Docker hasta los proxies inversos, el DNS o los procesos de build.
Con esta base ya puedes desplegar sitios estáticos, aplicaciones en Next.js, conectar repositorios privados de GitHub y automatizar despliegues. A partir de aquí el siguiente paso suele ser añadir bases de datos, almacenamiento persistente o incluso separar servicios en varios servidores.
Lo importante es que ahora tienes el control total de tu stack.
