Plane es una herramienta open source de gestión de proyectos - incidencias, ciclos, módulos y páginas, en el mismo terreno que Jira y Linear - y una de las aplicaciones auto-hospedadas más pesadas que puedes poner en un VPS pequeño. La Community Edition trae una pila de trece contenedores, así que la parte interesante de esta guía es dimensionar bien el servidor, no teclear docker compose up.
¿Por qué auto-hospedar Plane?
El plan alojado factura por usuario. El auto-hospedaje elimina ese coste y mantiene el historial de incidencias, los adjuntos y los datos de proyecto en una infraestructura que controlas tú, algo que importa cuando el gestor de incidencias contiene nombres de clientes, hallazgos de seguridad o puntos de hoja de ruta sin publicar. La Community Edition tiene licencia AGPL-3.0, de modo que puedes usarla en un equipo comercial sin pagar licencia.
La contrapartida es real: las actualizaciones, las copias de seguridad y la instancia de Postgres son cosa tuya. Si nadie del equipo quiere ese trabajo, la versión alojada es la respuesta honesta.
Requisitos previos
La documentación de Plane expone los requisitos con claridad:
- 2 núcleos de CPU, x64/AMD64 o AArch64/ARM64
- 4 GB de RAM como mínimo, 8 GB recomendados para producción
- Ubuntu, Debian, CentOS o Amazon Linux 2/2023
- Docker Engine 20.10+ y Docker Compose v2
- Puertos 80 y 443 accesibles, más un dominio apuntando al servidor
Ese suelo de 4 GB no es holgura. La pila levanta web, admin, space, api, worker, beat-worker, migrator, live, un proxy, además de postgres:15.7-alpine, valkey/valkey:7.2.11-alpine, rabbitmq:3.13.6-management-alpine y minio/minio. Trece contenedores en reposo consumen la mayor parte de 4 GB antes de que se conecte el primer usuario.
Si todavía necesitas servidor, Contabo, Hetzner Cloud y DigitalOcean tienen planes que superan el listón; mira la tabla siguiente y nuestra comparativa completa de VPS.
Paso 1: Elegir un plan que supere los 4 GB
Aquí es donde falla la mayoría de instalaciones de Plane. El plan más barato de casi cualquier proveedor tiene 1 GB de RAM, una cuarta parte del mínimo documentado.
| Plan | vCPU / RAM / Disco | Precio | Veredicto para Plane |
|---|---|---|---|
| Contabo Cloud VPS 4 | 4 / 8 GB / 100 GB SSD | 5.50 EUR/mes sin IVA | Cumple los 8 GB recomendados |
| Hetzner CX33 | 4 / 8 GB / 80 GB NVMe | 8.49 EUR/mes sin IVA | Cumple los 8 GB recomendados |
| Hetzner CX23 | 2 / 4 GB / 40 GB NVMe | 5.49 EUR/mes sin IVA | Justo el mínimo; suficiente para un equipo pequeño |
| DigitalOcean, droplet de entrada | 1 / 1 GB / 25 GB | 6 USD/mes | Demasiado pequeño: Plane no arrancará |
Despliega Ubuntu 24.04 LTS, crea un usuario sin privilegios de root y activa el cortafuegos:
sudo apt update && sudo apt upgrade -y
sudo adduser plane
sudo usermod -aG sudo plane
sudo ufw allow OpenSSH && sudo ufw allow 80 && sudo ufw allow 443
sudo ufw enable
Paso 2: Instalar Docker
Plane necesita Compose v2. Instala desde el repositorio propio de Docker para obtener docker-compose-plugin en lugar del script v1 ya descatalogado:
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo usermod -aG docker $USER
Cierra sesión, vuelve a entrar y comprueba la versión:
docker compose version
Paso 3: Apuntar el DNS al servidor antes que nada
Hazlo antes de lanzar el instalador. Este pide tu dominio durante la configuración y lo escribe en WEB_URL y CORS_ALLOWED_ORIGINS; si el DNS aún no resuelve, la emisión del certificado falla y acabarás editando ficheros de entorno después.
Crea un registro A para plane.example.com apuntando a la IP del VPS y espera a que resuelva:
dig +short plane.example.com
Paso 4: Ejecutar el instalador oficial
Plane distribuye un único script de instalación que descarga imágenes ya compiladas y escribe un docker-compose.yaml gestionado:
curl -fsSL https://prime.plane.so/install/ | sh -
El script pregunta por tu dominio y luego ofrece Express (valores por defecto) o Advanced (permite fijar variables una a una). Express es lo adecuado para una primera instalación. Al terminar, Plane responde en los puertos 80 y 443, controlados por LISTEN_HTTP_PORT y LISTEN_HTTPS_PORT.
Una advertencia sobre el repositorio: el docker-compose.yml de GitHub compila cada servicio desde el código fuente en lugar de descargar imágenes. Ese es un flujo pensado para quienes contribuyen al proyecto: una compilación necesita bastante más RAM que la ejecución, y fallará o dejará el VPS de 4 GB en swap. Usa el instalador.
Abre https://plane.example.com y crea la primera cuenta. Esa cuenta pasa a ser administradora de la instancia; el panel de administración está en /god-mode/, donde configuras SMTP, restricciones de registro y autenticación.
Paso 5: Copiar lo que de verdad importa
Dos elementos guardan tus datos: el volumen de PostgreSQL y el volumen de MinIO, donde vive cada archivo adjunto. Una instantánea del VPS cubre ambos, pero un volcado de base de datos que puedas restaurar de forma selectiva vale mucho:
docker exec plane-db pg_dump -U plane plane | gzip > plane-$(date +%F).sql.gz
Copia el volcado fuera del servidor. Una copia de seguridad guardada en el disco que estás respaldando no es una copia de seguridad.
Comparativa de VPS para auto-hospedar Plane
| Proveedor | Plan de entrada desde 4 GB | Precio (al mes) | Notas | Enlace |
|---|---|---|---|---|
| Contabo | Cloud VPS 4 - 4 vCPU, 8 GB, 100 GB SSD | 5.50 EUR sin IVA | La vía más barata hasta los 8 GB recomendados | Contabo |
| Hetzner Cloud | CX23 - 2 vCPU, 4 GB, 40 GB NVMe | 5.49 EUR sin IVA | Cumple el mínimo; CX33 a 8.49 con 8 GB | Hetzner |
| DigitalOcean | 2 vCPU, 4 GB, 80 GB SSD | 24 USD | Más caro, pero la documentación y las instantáneas son las mejores | DigitalOcean |
| Vultr | 2 vCPU, 4 GB, 80 GB SSD | 20 USD | El más barato de los tres; amplia elección de regiones | Vultr |
| Linode (Akamai) | 2 vCPU, 4 GB, 80 GB SSD | 24 USD | Rendimiento predecible, API sólida | Linode |
El patrón es difícil de pasar por alto: los proveedores estadounidenses cobran entre 20 y 24 USD por el escalón de 4 GB, aproximadamente entre tres y cuatro veces el equivalente europeo. Para un gestor de incidencias auto-hospedado que atiende una oficina en una sola región, esa diferencia cuesta de justificar.
Para ver todo el panorama, consulta nuestra comparativa completa de VPS.
Dónde se atascan los equipos
Dimensionar según la página de producto en vez de la documentación. Plane parece una aplicación web; se comporta como una plataforma pequeña. Cuatro GB son el suelo, no el objetivo.
Saltarse el SMTP. Sin correo configurado en /god-mode/, las invitaciones no llegan nunca y no puedes añadir a nadie al espacio de trabajo. Déjalo listo antes de incorporar al equipo.
Olvidar MinIO en la copia de seguridad. Volcar solo Postgres te devuelve todas las incidencias y comentarios sin un solo adjunto.
Plane compensa el trabajo de instalación si tu equipo ya vive en un gestor de incidencias y prefiere no pagar por usuario. Dimensiona bien la máquina, guarda las copias en otro sitio y el servicio funcionará sin dar guerra.
Para más proyectos y consejos de auto-hospedaje, recorre la lista awesome-selfhosted o la comunidad r/selfhosted.
Frequently asked questions
¿Puedo auto-hospedar Plane en un VPS con 1 GB o 2 GB de RAM?
No. La documentación de Plane fija el suelo en 2 núcleos de CPU y 4 GB de RAM, y la pila Compose de la Community Edition arranca trece contenedores, entre ellos PostgreSQL, Valkey, RabbitMQ y MinIO. En una máquina de 2 GB el instalador termina, pero los contenedores mueren por falta de memoria en cuanto hay uso real. 4 GB son el mínimo viable y la documentación recomienda 8 GB para producción.
¿Cómo actualizo Plane a una versión más reciente?
Vuelve a ejecutar el script de gestión que el instalador dejó en el servidor y elige la opción de actualización. Como alternativa, desde el directorio de instalación ejecuta docker compose pull y después docker compose up -d. El contenedor migrator aplica las migraciones de base de datos al arrancar, así que haz un volcado de PostgreSQL y una instantánea antes. Lee primero las notas de la versión, porque las versiones mayores cambian variables de entorno de vez en cuando.
¿Necesito un dominio propio para ejecutar Plane?
En la práctica sí. El instalador pide el dominio durante la configuración y lo escribe en WEB_URL y CORS_ALLOWED_ORIGINS, que el frontend y la API usan para comunicarse. Una dirección IP suelta sirve para una prueba local pero rompe la configuración CORS en cuanto cambia la dirección, y sin dominio no se puede emitir un certificado de Let's Encrypt.