Ir al contenido
angel.library

OpenShip: un PaaS autoalojado con CI/CD, correo y backups

Publicado por oblien con licencia Apache-2.0. Unas 14.700 estrellas. Documentación en openship.io/docs.

OpenShip es una plataforma de despliegue autoalojada con CI/CD integrado. Le señalas un repositorio y se encarga del resto: detecta el stack, construye la aplicación, la ejecuta, le pone dominio con HTTPS y la vuelve a desplegar cada vez que haces push.

Un PaaS (Platform as a Service) es la capa que hay entre tu código y el servidor: tú subes el código y la plataforma resuelve la construcción, el proceso, el proxy, los certificados y los logs. Heroku, Vercel o Render son PaaS gestionados: cómodos, pero pagas por uso y tus apps viven en su infraestructura.

Un PaaS autoalojado te da la misma experiencia sobre un VPS de 5 € al mes, un servidor dedicado o una máquina de casa. A cambio, el mantenimiento del servidor pasa a ser tuyo.

Para cada despliegue, OpenShip recorre el mismo flujo:

  1. Detecta. Lee package.json, la configuración del framework, los lockfiles y cualquier docker-compose.yml u openship.json para deducir el stack, el gestor de paquetes, los comandos de build y arranque, y el puerto. No exige archivos de configuración; openship.json sirve para sobrescribir lo que deduce.
  2. Construye. En el servidor destino o en local, como imagen de Docker o como release sin contenedor. La configuración resuelta se congela en una instantánea, así que un redespliegue o un rollback repite exactamente lo que se publicó.
  3. Ejecuta. Como contenedor publicado solo en loopback (nunca en un puerto público) o como proceso supervisado del host.
  4. Enruta y protege. Un edge de OpenResty (nginx con Lua) crea el virtual host del dominio y emite un certificado de Let’s Encrypt. Como esto ocurre después de que la app arranque, un fallo de DNS o de certificado aparece como «acción requerida» y no tumba el despliegue.
  5. Redespliega en push. Un webhook de GitHub relanza el flujo en cada push a la rama seguida. En un monorepo solo reconstruye los servicios que cambiaron.
ÁreaQué ofrece según el README
CI/CDPush-to-deploy, entornos de preview, staging/producción, rollbacks
StacksNode, Python, Go, Rust, PHP, Ruby, Java, .NET, Docker y monorepos
BackendPostgres, MySQL, MongoDB, Redis, workers, WebSockets, almacenamiento
DominiosLet’s Encrypt automático, comodines, renovación
CDNCaché en el edge, HTTP/3, Brotli, purgado
CorreoServidor SMTP propio con DKIM, SPF y DMARC
BackupsProgramados, de bases de datos y volúmenes, restauración en un clic
MonitorizaciónLogs de build en vivo, métricas de contenedores, geografía de visitas
Docker ComposeDespliega archivos compose existentes tal cual

Además expone una API REST, un SDK de JavaScript/TypeScript (npm install openship) y un endpoint MCP para agentes de IA, en el que solo se publican las rutas que lo permiten explícitamente.

Lo primero es decidir dónde vive el plano de control (el panel que orquesta), que no tiene por qué ser donde corren tus apps:

Si eres…Ejecuta OpenShip comoTus apps corren en
Una persona, una máquina, sin opsApp de escritorioUn servidor conectado por SSH, u OpenShip Cloud
Un equipo, o quieres push-to-deployServidor autoalojadoEse mismo servidor, u otro por SSH
Alguien que no quiere mantener nadaOpenShip CloudSandboxes gestionados

La app de escritorio (macOS, Windows y Linux, en las releases) ejecuta el plano de control solo mientras está abierta y gestiona tus servidores por SSH, sin exponer nada públicamente.

El servidor autoalojado se instala con la CLI, que incluye la API y el panel:

Ventana de terminal
curl -fsSL https://get.openship.io | sh
openship

El segundo comando abre un asistente que crea el administrador, configura el dominio e instala OpenShip como servicio de arranque. También se puede instalar con npm i -g openship (necesita Node 22 o superior). Para servidores sin interfaz:

Ventana de terminal
openship up
openship up --public-url https://openship.example.com

openship up elige el modo según la máquina:

  • Linux con Docker → modo Compose. Levanta Postgres, Redis, la API, el panel y el edge de OpenResty en los puertos 80 y 443. Es el modo que aloja tus apps en la misma máquina.
  • El resto (macOS, Windows o Linux sin Docker) → modo bare. Un único proceso con base de datos embebida que despliega hacia otros servidores por SSH.

Desplegar un proyecto desde su carpeta:

Ventana de terminal
cd tu-proyecto
openship init
openship deploy

Si prefieres no usar la CLI, el repositorio trae docker/docker-compose.yml, que descarga las imágenes publicadas en ghcr.io/oblien/*. Solo funciona en Linux (usa red del host) y hay operaciones del host, como el correo, que necesitan pasos manuales.

Si vienes de otros PaaS autoalojados, Coolify es la referencia más conocida del sector.

AspectoOpenShipCoolifyDokployCapRoverVercel
ModeloAutoalojado (y nube opcional)Autoalojado (y nube opcional)Autoalojado (y nube opcional)AutoalojadoGestionado
InterfacesEscritorio, web, CLI, SDK, MCPWeb y APIWeb, CLI y APIWeb y CLIWeb, CLI y API
ProxyOpenRestyTraefik o CaddyTraefiknginxSu propia red edge
Servidor de correoIncluidoNoNoNoNo
Detección sin configSíSí (Nixpacks y otros)Sí (Nixpacks y otros)Necesita captain-definition o DockerfileSí, centrado en frontend
Punto fuerteTodo en uno, app de escritorioMadurez y catálogo de serviciosSimplicidad, Docker SwarmVeterano y estableDX y funciones serverless

Cuándo elegir OpenShip. Si quieres una sola herramienta que cubra también correo, CDN y backups, o te atrae gestionar varios VPS desde una app de escritorio sin dejar un panel expuesto. Si necesitas algo probado durante años por mucha gente, Coolify o CapRover tienen más recorrido. Si tu proyecto es sobre todo frontend y prefieres no administrar servidores, Vercel sigue siendo más cómodo.

  • El propio README avisa de que la documentación todavía se está completando. Funciones como clústeres multinodo, balanceo de carga visual o redes privadas aparecen como «próximamente».
  • Lo que añadas al servidor (base de datos, correo, backups) depende de ese servidor: un PaaS no sustituye a una copia fuera de la máquina.
  • Las licencias de terceros cambian el panorama: revisa el inventario de licencias si piensas redistribuirlo.