Openship: la alternativa open source a Coolify y Vercel que despliega en tu propio servidor

Openship es una plataforma de despliegue open source (Apache 2.0) que hace lo mismo que Vercel o Coolify en un servidor que tú controlas: construye tu app, la despliega, le asigna un dominio y emite el certificado HTTPS.

El 27 de septiembre de 2026, el proyecto publicó la v0.8.0, su release más grande hasta ahora. Las apps y las bases de datos ya pueden escalar en varios de tus propios servidores, y el servidor MCP creció para que un agente de programación como Claude Code opere tus despliegues dentro de los límites que tú definas. Al 28 de septiembre de 2026, el repositorio suma 13 300 estrellas y 1200 forks en GitHub, unos tres meses después de su primera release candidate.

¿Qué es Openship?

Openship es un PaaS self-hosted: un plano de control (control plane) que toma un origen y recorre todo el camino hasta producción. Ese origen puede ser un repo de GitHub, una carpeta local o un artefacto ya compilado. El pipeline tiene cinco pasos:

  1. Detecta. Lee tu package.json, la configuración del framework, los lockfiles y cualquier docker-compose.yml. Con eso deduce el stack, el gestor de paquetes, los comandos de build y arranque, y el puerto. No necesitas ningún archivo de configuración; un openship.json sobrescribe lo que deduzca cuando quieras control.
  2. Construye. Genera una imagen Docker o una release sin contenedor (bare). La configuración resuelta queda congelada en un snapshot, así que los redeploys y los rollbacks ejecutan exactamente lo que se desplegó.
  3. Ejecuta. La app corre como contenedor publicado solo en loopback, nunca en un puerto público, o como proceso supervisado del host.
  4. Enruta y asegura. Un edge de OpenResty escribe la ruta de reverse proxy hacia tu dominio y emite un certificado de Let’s Encrypt. Esto ocurre después de que la app ya está arriba. Por eso un problema de DNS o de certificado aparece como “acción requerida” en lugar de romper el despliegue.
  5. Push-to-deploy. Un webhook de GitHub vuelve a ejecutar el pipeline en cada push a la rama que sigues. En un monorepo, reconstruye solo los servicios que tocó ese push.

Alrededor de ese pipeline, Openship gestiona varias cosas que normalmente son servicios separados:

  • Bases de datos: Postgres, MySQL, MongoDB y Redis.
  • Dominios: Let’s Encrypt automático, incluidos wildcards.
  • CDN.
  • Correo: un servidor SMTP integrado con DKIM, SPF y DMARC.
  • Backups: programados, con restauración en un clic.
  • Monitoreo: logs en vivo, métricas de contenedores y geografía de visitantes.

El proyecto afirma que su monitoreo añade unos 1,4 µs por request y cero escrituras a la base de datos por request. Es una cifra del propio proyecto.

Soporta Node, Python, Go, Rust, PHP, Ruby, Java, .NET, Docker y monorepos. También puedes desplegar tus archivos de Docker Compose tal como están.

¿Qué trae Openship 0.8?

La v0.8.0 agrega clústeres. Conectas servidores, incluso de proveedores distintos, mediante una red privada que ya tengas o una red WireGuard que Openship configura por ti. Después, Openship instala k3s por debajo y une esos servidores en un clúster. Sobre ese clúster puedes:

  • Correr una app o un worker con entre 1 y 100 réplicas. Cambiar el número de réplicas reutiliza la imagen activa sin reconstruir. Kubernetes reemplaza las instancias caídas y envía el tráfico a las que siguen sanas.
  • Correr PostgreSQL standalone o en clúster, con réplicas, recuperación del primario y endpoints separados de lectura/escritura y de solo lectura.
  • Correr Redis standalone o como clúster con shards.
  • Montar volúmenes compartidos que instancias en servidores distintos pueden leer y escribir.

La release también suma un SDK para Node.js (el paquete openship, Node 22 o superior) y releaseCommands. Son comandos, por ejemplo migraciones de base de datos, que se ejecutan después del build y antes de activar la nueva versión. Si uno falla, la nueva versión no se activa.

Las notas de la release son explícitas sobre lo que todavía no incluye:

  • Autoescalado basado en CPU o tráfico.
  • Escalado de apps de Compose.
  • Aprovisionamiento automático de servidores.
  • Agregar servidores a un clúster en marcha.

Las réplicas se definen a mano.

¿Openship es gratis?

Sí, el self-hosting es gratis y el README indica que no hay facturación. El código es Apache 2.0, así que puedes usarlo, modificarlo y redistribuirlo, incluso dentro de productos comerciales y de código cerrado. La opción de pago es Openship Cloud, un servicio gestionado con sandboxes y autoescalado para quien no quiere operar nada.

¿Openship, Coolify o Dokploy?

Los tres resuelven el mismo problema: un PaaS self-hosted en tu propio VPS. Si ya usas uno de los otros, probar Openship no te obliga a empezar de cero. Su asistente de migración puede adoptar stacks de Docker que ya corren bajo Coolify, Dokploy o Dokku. Trae las variables de entorno y las rutas, y desde la v0.8.0 también hace el traspaso de dominios, reutilizando los certificados existentes.

Lo que Openship pone sobre la mesa:

  • Cinco formas de manejar el mismo backend: app de escritorio, dashboard web, CLI, REST API y un endpoint MCP para agentes de IA.
  • Un plano de control que no tiene que estar siempre encendido: en modo escritorio, Openship corre en tu máquina solo mientras la app está abierta y opera tus servidores por SSH.
  • Correo propio: un servidor SMTP integrado, sin depender de Mailgun o SES.
  • Clústeres desde la v0.8.0: réplicas, además de Postgres y Redis en clúster, sobre tus propios servidores.

Nada de esto es necesariamente exclusivo. Compáralo con la versión de Coolify o Dokploy que ya tienes en producción antes de migrar.

¿Y frente a Vercel?

La diferencia principal es quién opera la infraestructura. Vercel es una plataforma gestionada. Openship corre en tu VPS, en bare metal o en un homelab; la documentación menciona Hetzner, DigitalOcean, Linode y OVH. Tus apps son contenedores Docker estándar, así que puedes moverlas entre proveedores.

Si vienes de Vercel, la documentación describe openship.json como el equivalente de vercel.json o railway.toml. Además, las reglas de enrutamiento de un vercel.json existente (clean URLs, redirecciones y headers) se conservan al desplegar.

¿Openship funciona en Windows o macOS?

En parte. La app de escritorio funciona en macOS (Apple Silicon e Intel), Windows y Linux, pero es solo un plano de control. Opera servidores remotos por SSH, u Openship Cloud, y no aloja apps públicas en tu laptop. En la v0.6.5 el proyecto marcó el despliegue en el propio escritorio como “próximamente”, y las notas de la v0.8.0 no lo mencionan.

Para un servidor self-hosted, depende del sistema operativo:

  • Linux con Docker usa el “modo Compose”: el stack completo, que aloja tus apps en la misma máquina.
  • macOS, Windows o Linux sin Docker usan el “modo bare”: un plano de control liviano y siempre activo que despliega hacia otros servidores o hacia Openship Cloud.

¿Cómo instalar Openship?

Lo primero es decidir dónde corre el plano de control. Después, todo lo demás funciona igual.

Uso individual: la app de escritorio

Descarga el build para tu plataforma desde la última release en GitHub: .dmg para macOS, .zip para Windows, .AppImage para Linux. Ábrelo, conecta un servidor por SSH u Openship Cloud, y despliega. No requiere login ni expone nada públicamente, porque el plano de control solo corre mientras la app está abierta.

En Linux:

chmod +x Openship.AppImage && ./Openship.AppImage

Equipos o servidor siempre activo: self-hosted

Necesitas un servidor siempre activo para push-to-deploy, para dar acceso a un equipo o para alojar apps en la misma máquina. Instala la CLI, que incluye la API y el dashboard, y ejecuta el asistente interactivo:

curl -fsSL https://get.openship.io | sh   # o: npm i -g openship (requiere Node 22+)
openship                                   # configuración guiada, luego el panel de control

El asistente crea el primer administrador, conecta tu dominio e instala Openship como servicio de arranque. En máquinas headless o de CI, sáltate el asistente:

openship up
openship up --public-url https://openship.example.com

Una instancia self-hosted siempre requiere login.

Desplegar un proyecto

cd tu-proyecto
openship init
openship deploy

¿Cómo conectar Openship a Claude Code por MCP?

Openship expone un endpoint MCP en /api/mcp de tu instancia, con la misma ruta en self-hosted y en Openship Cloud. Funciona con Claude Code, Codex, Cursor, VS Code, Claude Desktop, Windsurf y Zed. Es un endpoint stateless de Streamable HTTP que solo acepta POST. Si quieres entender qué implica un servidor MCP sin estado, lo explicamos en MCP se vuelve stateless.

En Claude Code, conectarlo es un solo comando:

claude mcp add --transport http openship https://<tu-host>/api/mcp

Se abre una ventana del navegador donde eliges qué puede hacer el agente. Las opciones son solo lectura o control total, sobre todos los recursos o solo sobre proyectos, servidores y repositorios concretos. A partir de ahí, el agente puede listar proyectos, lanzar despliegues, leer logs y agregar dominios, siempre dentro de ese alcance.

Lo interesante es el modelo de seguridad. Cada llamada a una herramienta pasa por las mismas comprobaciones de autorización y de permisos por recurso que una request normal a la API, así que MCP no es una puerta lateral más laxa. Las rutas de tokens, autenticación y gestión de MCP nunca pueden convertirse en herramientas, de modo que un agente no puede emitirse credenciales nuevas. Además, cada herramienta lleva indicadores que la marcan como de solo lectura o destructiva, para que el cliente te avise antes de ejecutar una llamada destructiva.

Si te interesa el lado de seguridad de darle herramientas a un agente, lo tratamos en MCP Gateway: la próxima gran categoría de seguridad para agentes.

¿Qué revisar antes de usarlo en producción?

  • Ritmo de cambios. Al 28 de septiembre de 2026, el proyecto lleva 14 releases en unos tres meses. Eso indica desarrollo activo, y también que detalles de esta nota pueden cambiar pronto.
  • Actualizar a la 0.8.0. La release ejecuta migraciones de base de datos. Antes de actualizar, haz un backup de la base y conserva la clave de cifrado de la instancia (BETTER_AUTH_SECRET).
  • Instalación manual con Docker Compose. Monta el socket de Docker del host dentro del contenedor de la API, lo que le da privilegios a nivel de host. Úsala solo en un host de confianza; la CLI y la app de escritorio son las rutas recomendadas.
  • Historial de seguridad. El proyecto tiene un proceso de advisories privados con política de safe harbor, y varias releases han incluido correcciones de problemas reportados externamente. Mantén tu instancia actualizada.