[{"data":1,"prerenderedAt":171},["ShallowReactive",2],{"seo-verification":3,"blog-desplegar-plane-en-un-vps-linux-es":6},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"key":7,"data":8},"blog-desplegar-plane-en-un-vps-linux-es",{"id":9,"slug":10,"slugs":11,"title":15,"excerpt":16,"readTime":17,"views":18,"isPinned":19,"publishedAt":20,"updatedAt":21,"category":22,"categories":27,"featuredImage":29,"bgImage":30,"posterImage":31,"relatedSolution":32,"intro":35,"sections":36,"ctaTitle":99,"ctaBody":100,"ctaButton":101,"ctaUrl":102,"relatedPosts":103},252,"desplegar-plane-en-un-vps-linux",{"fr":12,"en":13,"ar":14,"es":10},"deployer-plane-vps","deploy-plane-self-hosted-on-a-linux-vps","نشر-plane-كاستضافة-ذاتية-على-خادم-vps-لينكس","Desplegar Plane en VPS: guía y regresiones post-2.3.7","Instale Plane AIO en su VPS con Docker. Guía completa con las regresiones 2.3.7–2.4.1, el procedimiento de actualización seguro y la resolución de fallos.",9,0,false,"2026-08-13T00:00:00+00:00","2026-09-07T11:26:10+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":25},2,"Automatización","automatisation","bg-brand-action\u002F10 text-brand-action",[28],{"id":23,"name":24,"slug":25,"color":26,"icon":25},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fdeployer-plane-vps-poster.svg",{"categorySlug":33,"appSlug":34},"colaboracion-productividad","plane","La factura de Linear o Jira sube con cada nuevo puesto, y almacenar los tickets de sus proyectos en casa de un editor externo no siempre es aceptable. Plane es una alternativa AGPL-3.0 con más de 54 000 estrellas en GitHub, una imagen Docker AIO mantenida — `makeplane\u002Fplane-aio-community:stable` — y un solo contenedor que reúne todos los servicios internos bajo supervisord. Esta guía le muestra cómo desplegarlo en un VPS Linux, protegerlo tras un reverse proxy HTTPS y abrirlo a su equipo.",[37,41,53,56,84,87,90,93,96],{"type":38,"title":39,"body":40},"h2","Por qué alojar Plane usted mismo en lugar de pagar por puesto","La objeción más habitual contra la imagen AIO es que el «supervisord todo en uno» oculta varios servicios internos, lo que dificulta la depuración cuando algo falla. En la práctica, la imagen agrupa cinco componentes — API Django, worker Celery, base PostgreSQL, Redis y servidor de archivos — en un único proceso supervisord, lo que simplifica drásticamente el arranque. No tiene que componer una pila multicontenedor, sincronizar las migraciones ni gestionar cinco registros Docker distintos. Ante un error, `docker logs \u003Cconteneur>` y `docker exec \u003Cconteneur> supervisorctl status` bastan en la gran mayoría de los casos. El blog oficial de Plane anuncia más de 100 000 despliegues Docker y más de 44 000 despliegues Kubernetes, lo que da una medida de la madurez operativa de la imagen. El modelo económico es claro: usted paga el VPS, no el puesto.",{"type":42,"title":43,"items":44},"ul","Lo que gana al alojar Plane en su propio VPS",[45,46,47,48,49,50,51,52],"**Coste fijo, independiente del tamaño del equipo** — un único VPS basta para 5 a 50 usuarios; la tarifa no varía con el número de puestos.","**Datos bajo su control** — tickets, comentarios, archivos y miembros del equipo permanecen en su propia base PostgreSQL, en su propio disco.","**Licencia AGPL-3.0** — uso comercial y autoalojamiento autorizados sin regalías; el código fuente es auditable.","**Issues, cycles, modules, pages e inbox** — Plane cubre el seguimiento de tareas, los sprints, las agrupaciones funcionales, la documentación ligera y la gestión de las solicitudes entrantes, sin módulo aparte.","**Imagen estable y mantenida** — `makeplane\u002Fplane-aio-community:stable` la actualiza el editor y se prueba como unidad coherente antes de cada publicación.","**Actualizaciones controladas** — usted descarga la nueva imagen cuando decide hacerlo; ningún editor puede modificar su entorno de producción sin su consentimiento.","**Integración posible con su cadena de herramientas** — Plane expone una API REST documentada, utilizable para sincronizar issues desde un pipeline CI o desde GitHub.","**Resolución sencilla en caso de incidente** — un solo contenedor, un solo registro, un solo punto de reinicio; ninguna pila multiservicio que orquestar manualmente.",{"type":38,"title":54,"body":55},"Requisitos concretos para un despliegue estable","La imagen AIO agrupa varios servicios en un único contenedor: cuente con **2 vCPU y 4 GB de RAM** como mínimo para un uso en equipo. Por debajo, el worker Celery y la base PostgreSQL se reparten demasiada poca memoria y las consultas de indexación tardan varios segundos. Para un equipo de más de diez personas o un uso intensivo de las páginas y los ciclos, pase a 8 GB. Necesita Docker instalado en el host (versión 20 o superior), un nombre de dominio o un subdominio que apunte a su VPS, los puertos 80 y 443 abiertos en su cortafuegos, y unos 10 GB de espacio en disco para los volúmenes de datos y las imágenes Docker. Un certificado TLS es imprescindible: Plane define cookies de sesión con `Secure`, lo que las hace inutilizables sobre HTTP.",{"type":57,"title":58,"steps":59},"steps","Desplegar Plane AIO en ocho pasos",[60,63,66,69,72,75,78,81],{"title":61,"body":62},"Preparar el host e instalar Docker","En un VPS Debian o Ubuntu recién instalado, actualice los paquetes y luego instale Docker mediante el script oficial o los repositorios APT de Docker:\n\n```bash\ncurl -fsSL https:\u002F\u002Fget.docker.com | sh\nsystemctl enable --now docker\n```\n\nCompruebe que Docker funciona: `docker version`.",{"title":64,"body":65},"Crear el directorio de trabajo y el archivo de entorno","Cree una carpeta dedicada y prepare en ella el archivo `.env` mínimo:\n\n```bash\nmkdir -p \u002Fopt\u002Fplane && cd \u002Fopt\u002Fplane\n```\n\nCree después `\u002Fopt\u002Fplane\u002F.env` con las variables requeridas:\n\n```bash\nSECRET_KEY=$(openssl rand -hex 32)\nWEB_URL=https:\u002F\u002Fplane.votre-domaine.com\nDATABASE_URL=postgresql:\u002F\u002Fplane:plane@127.0.0.1:5432\u002Fplane\n```\n\n`SECRET_KEY` debe ser una cadena aleatoria larga; `WEB_URL` es la URL pública final de su instancia — es el valor más crítico. Si es incorrecta, las redirecciones tras el inicio de sesión y la carga de los assets fallan.",{"title":67,"body":68},"Iniciar el contenedor AIO","Arranque Plane con el siguiente comando, indicando la ruta a su archivo `.env` y montando un volumen para los datos persistentes:\n\n```bash\ndocker run -d \\\n  --name plane \\\n  --restart unless-stopped \\\n  --env-file \u002Fopt\u002Fplane\u002F.env \\\n  -v plane-data:\u002Fapp\u002Fplane-data \\\n  -p 127.0.0.1:8080:8080 \\\n  makeplane\u002Fplane-aio-community:stable\n```\n\nEl puerto `8080` solo está expuesto en loopback: únicamente el reverse proxy local podrá alcanzarlo. En el primer arranque, supervisord ejecuta las migraciones Django; la interfaz no está disponible hasta pasados uno o dos minutos.",{"title":70,"body":71},"Comprobar el estado de los servicios internos","Antes de configurar el reverse proxy, compruebe que todos los subprocesos están activos:\n\n```bash\ndocker exec plane supervisorctl status\n```\n\nDebe ver los servicios `api`, `worker`, `beat`, `web` y `nginx` en estado `RUNNING`. Si alguno está en `FATAL`, lea los registros con `docker logs plane` para identificar el error.",{"title":73,"body":74},"Obtener un certificado TLS con Certbot","Instale Certbot y el plugin Nginx, y solicite después un certificado para su subdominio:\n\n```bash\napt install -y certbot python3-certbot-nginx\ncertbot certonly --nginx -d plane.votre-domaine.com\n```\n\nCertbot colocará los archivos del certificado en `\u002Fetc\u002Fletsencrypt\u002Flive\u002Fplane.votre-domaine.com\u002F`.",{"title":76,"body":77},"Configurar Nginx como reverse proxy HTTPS","Cree `\u002Fetc\u002Fnginx\u002Fsites-available\u002Fplane.conf`:\n\n```bash\nserver {\n    listen 80;\n    server_name plane.votre-domaine.com;\n    return 301 https:\u002F\u002F$host$request_uri;\n}\n\nserver {\n    listen 443 ssl;\n    server_name plane.votre-domaine.com;\n    ssl_certificate \u002Fetc\u002Fletsencrypt\u002Flive\u002Fplane.votre-domaine.com\u002Ffullchain.pem;\n    ssl_certificate_key \u002Fetc\u002Fletsencrypt\u002Flive\u002Fplane.votre-domaine.com\u002Fprivkey.pem;\n\n    location \u002F {\n        proxy_pass http:\u002F\u002F127.0.0.1:8080;\n        proxy_set_header Host $host;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Forwarded-Proto $scheme;\n    }\n}\n```\n\nActive el sitio y recargue Nginx:\n\n```bash\nln -s \u002Fetc\u002Fnginx\u002Fsites-available\u002Fplane.conf \u002Fetc\u002Fnginx\u002Fsites-enabled\u002F\nnginx -t && systemctl reload nginx\n```",{"title":79,"body":80},"Crear la primera cuenta de administrador","Abra `https:\u002F\u002Fplane.votre-domaine.com` en un navegador. Plane muestra una página de registro en el primer acceso. Cree una cuenta de administrador y, después, desde el panel de administración — accesible en `\u002Fgod-mode\u002F` — active los registros por correo electrónico o configure una allowlist de dominios para limitar el acceso a su organización.",{"title":82,"body":83},"Invitar al equipo y crear el primer proyecto","En Plane, un proyecto agrupa issues, cycles (sprints), modules (funcionalidades) y pages (wiki ligero). Cree un proyecto desde la interfaz e invite después a sus colaboradores por correo electrónico desde los ajustes del proyecto. Las invitaciones las envía el servidor de correo configurado en su `.env` mediante `EMAIL_HOST` y `EMAIL_PORT`.",{"type":38,"title":85,"body":86},"Configuración posinstalación: variables de entorno clave","Las variables más importantes tras el arranque inicial son:\n\n— `WEB_URL` — la URL pública completa de la instancia, sin barra final. Una URL mal indicada provoca redirecciones rotas tras el inicio de sesión y assets que no se cargan (imágenes, CSS, JS). Es el error más frecuente en el primer arranque.\n\n— `SECRET_KEY` — cadena secreta para la firma de las sesiones Django. No la cambie después del primer arranque sin invalidar todas las sesiones activas.\n\n— `EMAIL_HOST`, `EMAIL_PORT`, `EMAIL_HOST_USER`, `EMAIL_HOST_PASSWORD` — necesarias para las invitaciones y las notificaciones. Sin estas variables, las invitaciones por correo electrónico no se envían.\n\n— `ENABLE_SIGNUP` — `1` para permitir los registros abiertos, `0` para desactivarlos (solo el administrador puede crear cuentas).\n\nDespués de cualquier modificación del archivo `.env`, reinicie el contenedor: `docker restart plane`.",{"type":88,"body":89},"tip","Para las actualizaciones, descargue la nueva imagen y recree después el contenedor conservando el volumen de datos:\n\n```bash\ndocker pull makeplane\u002Fplane-aio-community:stable\ndocker stop plane && docker rm plane\n```\n\nVuelva a ejecutar después el comando `docker run` del paso 3 con los mismos argumentos. Las migraciones de base de datos se aplican automáticamente en el arranque. Si una actualización rompe el entorno, vuelva a la versión anterior sustituyendo `stable` por el tag exacto de la imagen anterior — `docker images` lista las imágenes disponibles localmente.",{"type":38,"title":91,"body":92},"Regresiones posteriores a 2.3.7 y actualización segura","Las versiones Plane AIO 2.3.7 a 2.4.1 introdujeron varias regresiones documentadas. Pérdida de las notificaciones en tiempo real al actualizar el servidor Python entre esas versiones. Error 500 en los webhooks salientes si la columna `webhook_trigger` falta en la migración PostgreSQL — síntoma: `django.db.utils.ProgrammingError: column webhook_trigger does not exist` en los logs del contenedor `plane-backend`. Ralentización de las consultas de filtro en los espacios de trabajo de más de 5000 issues (regresión de índice corregida en 2.4.2).\n\nAntes de cualquier actualización desde una versión anterior a 2.4.2, haga una copia de seguridad de su base PostgreSQL: `docker compose exec -T db pg_dump -U plane plane > plane-backup-$(date +%F).sql`. Después actualice: `docker compose pull && docker compose up -d`. Si el backend no arranca tras la actualización, fuerce las migraciones manualmente: `docker compose exec plane-backend python manage.py migrate --run-syncdb`. Para las instancias en 2.3.6 o anterior, se recomienda una actualización directa a 2.4.2+ para saltar las versiones intermedias defectuosas.",{"type":38,"title":94,"body":95},"Solución de problemas: errores frecuentes y sus remedios","**Redirecciones rotas o assets que no se cargan tras el inicio de sesión.** Mensaje tipo: la interfaz redirige a `http:\u002F\u002Flocalhost` o las imágenes y los scripts no se cargan. Causa: `WEB_URL` en el archivo `.env` no coincide con la URL pública real. Corrija el valor y reinicie después el contenedor.\n\n**Fallo de arranque de un servicio interno.** Mensaje tipo en `docker logs plane`: `FATAL: api: exited too quickly`. Compruebe `DATABASE_URL` — una URL de conexión incorrecta o un nombre de base inexistente impide que las migraciones se ejecuten y provoca este tipo de salida con error fatal.\n\n**El panel `\u002Fgod-mode\u002F` está inaccesible.** El acceso a la interfaz de administración exige haber creado la primera cuenta a través de la interfaz principal y entrar después con las credenciales de esa cuenta. Si desactivó los registros antes de crear la primera cuenta, restablezca temporalmente `ENABLE_SIGNUP=1`, cree la cuenta y vuelva después a `0`.\n\n**Los correos de invitación no se envían.** Compruebe que `EMAIL_HOST` y `EMAIL_HOST_USER` están indicados en `.env` y que el puerto SMTP (a menudo `587` con STARTTLS o `465` con SSL) es accesible desde su VPS. Pruebe con `docker exec plane python manage.py sendtestemail votre@email.com`.\n\n**Rendimiento degradado con muchos usuarios simultáneos.** Si varios workers Celery tienen dificultades para procesar las tareas, aumente la RAM del VPS antes de ajustar la concurrencia interna. La imagen AIO está configurada para un uso en equipo estándar; una configuración de carga muy alta exige pasar a una instalación multicontenedor con recursos dedicados por componente.",{"type":38,"title":97,"body":98},"Mantener el control de su infraestructura sin mantener la capa de sistema","Alojar Plane usted mismo demuestra que la dependencia de las suscripciones SaaS no es una fatalidad: una imagen estable, un VPS bien dimensionado y un reverse proxy TLS bastan para un equipo de tamaño profesional. ServOrbit ofrece VPS root con IPv4 dedicada, listos en unos minutos, en los que dispone de un acceso `root` completo para instalar Docker y gestionar sus propias herramientas. Si desea delegar la capa de sistema — actualizaciones del kernel, endurecimiento SSH, copias de seguridad — la opción de administración VPS le permite conservar el control de sus datos externalizando el mantenimiento del host. Para ir más lejos en su práctica DevOps, consulte la guía sobre la automatización de sus servidores con Ansible y la guía Docker Compose para producción.","Desplegar Plane desde el Marketplace de ServOrbit","ServOrbit ofrece Plane preconfigurado en VPS: PostgreSQL 16, Redis 7, RabbitMQ y MinIO montados automáticamente. Dominio requerido incluido en la receta — primer acceso en unos minutos, datos bajo su control.","Desplegar Plane","\u002Fmarketplace\u002Fcolaboracion-productividad\u002Fplane",[104,121,140,155],{"id":105,"slug":106,"slugs":107,"title":111,"excerpt":112,"readTime":113,"views":114,"isPinned":19,"publishedAt":115,"updatedAt":116,"category":117,"categories":118,"featuredImage":29,"bgImage":30,"posterImage":120,"relatedSolution":29},221,"huly-gestion-proyectos-self-hosted-vps",{"fr":108,"en":109,"ar":110,"es":106},"huly-gestion-projet-self-hosted-vps","huly-replace-linear-notion-and-slack-on-your-vps","huly-استبدل-linear-وnotion-وslack-على-خادمك-الافتراضي","Huly: sustituir Linear, Notion y Slack en su VPS","Despliegue Huly en su VPS para centralizar incidencias, documentación y chat — requisitos, instalación, backup, resolución de errores y actualización de versión.",7,1,"2026-08-04T00:00:00+00:00","2026-09-17T14:09:38+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":25},[119],{"id":23,"name":24,"slug":25,"color":26,"icon":25},"\u002Fblog\u002Fcovers\u002Fhuly-gestion-projet-self-hosted-vps-poster.svg",{"id":122,"slug":123,"slugs":124,"title":128,"excerpt":129,"readTime":130,"views":18,"isPinned":19,"publishedAt":131,"updatedAt":21,"category":132,"categories":137,"featuredImage":29,"bgImage":30,"posterImage":139,"relatedSolution":29},229,"checklist-docker-compose-en-produccion",{"fr":125,"en":126,"ar":127,"es":123},"docker-compose-production-checklist","docker-compose-in-production-10-point-checklist","docker-compose-في-الإنتاج-قائمة-التحقق-من-10-نقاط","Docker Compose en producción: checklist de 10 puntos","Checklist de Docker Compose en producción: 10 ajustes esenciales, gestión de secretos sin downtime, copias de volúmenes sin corrupción, CVE-2026-17106.",8,"2026-08-06T00:00:00+00:00",{"id":133,"name":134,"slug":135,"color":136,"icon":135},3,"Despliegue","deploiement","bg-success\u002F10 text-success",[138],{"id":133,"name":134,"slug":135,"color":136,"icon":135},"\u002Fblog\u002Fcovers\u002Fdocker-compose-production-checklist-poster.svg",{"id":141,"slug":142,"slugs":143,"title":147,"excerpt":148,"readTime":149,"views":114,"isPinned":19,"publishedAt":150,"updatedAt":21,"category":151,"categories":152,"featuredImage":29,"bgImage":30,"posterImage":154,"relatedSolution":29},236,"automatizar-servidores-vps-con-ansible",{"fr":144,"en":145,"ar":146,"es":142},"ansible-automatiser-serveurs-vps","automating-vps-server-management-with-ansible","أتمتة-إدارة-خوادم-vps-باستخدام-ansible","Automatizar la gestión de servidores VPS con Ansible","Automatice la gestión de una flota de servidores VPS con Ansible: inventario, playbooks, roles y Vault para una infraestructura reproducible.",10,"2026-08-08T00:00:00+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":25},[153],{"id":23,"name":24,"slug":25,"color":26,"icon":25},"\u002Fblog\u002Fcovers\u002Fansible-automatiser-serveurs-vps-poster.svg",{"id":156,"slug":157,"slugs":158,"title":162,"excerpt":163,"readTime":164,"views":114,"isPinned":19,"publishedAt":165,"updatedAt":21,"category":166,"categories":167,"featuredImage":29,"bgImage":30,"posterImage":169,"relatedSolution":170},270,"migrar-de-jira-a-openproject-o-plane-en-vps",{"fr":159,"en":160,"ar":161,"es":157},"migrer-jira-openproject-plane-vps-2026","migrating-from-jira-data-center-to-openproject-or-plane-on-vps","هجرة-jira-data-center-إلى-openproject-أو-plane-على-vps","Migrar de Jira Data Center a OpenProject o Plane en VPS","Jira Data Center ya no vende licencias nuevas desde marzo de 2026 y pasará a solo lectura el 28 de marzo de 2029. Migre a OpenProject o Plane en VPS en un día.",13,"2026-08-16T00:00:00+00:00",{"id":133,"name":134,"slug":135,"color":136,"icon":135},[168],{"id":133,"name":134,"slug":135,"color":136,"icon":135},"\u002Fblog\u002Fcovers\u002Fmigrer-jira-openproject-plane-vps-2026-poster.svg",{"categorySlug":33,"appSlug":34},1789665016492]