[{"data":1,"prerenderedAt":161},["ShallowReactive",2],{"seo-verification":3,"blog-deployer-plane-vps-fr":6},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"id":7,"slug":8,"slugs":9,"title":12,"excerpt":13,"readTime":14,"views":15,"isPinned":16,"publishedAt":17,"category":18,"categories":23,"featuredImage":25,"bgImage":26,"posterImage":27,"relatedSolution":28,"intro":31,"sections":32,"ctaTitle":95,"ctaBody":96,"ctaButton":97,"ctaUrl":98,"relatedPosts":99},252,"deployer-plane-vps",{"fr":8,"en":10,"ar":11},"deploy-plane-self-hosted-on-a-linux-vps","نشر-plane-كاستضافة-ذاتية-على-خادم-vps-لينكس","Déployer Plane sur VPS : guide et régressions post-2.3.7","Installez Plane AIO sur votre VPS avec Docker. Guide complet incluant les régressions 2.3.7–2.4.1, la procédure de mise à jour sûre et le dépannage.",12,0,false,"2026-08-13T00:00:00+00:00",{"id":19,"name":20,"slug":21,"color":22,"icon":21},2,"Automatisation","automatisation","bg-brand-action\u002F10 text-brand-action",[24],{"id":19,"name":20,"slug":21,"color":22,"icon":21},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fdeployer-plane-vps-poster.svg",{"categorySlug":29,"appSlug":30},"collaboration","plane","La facture Linear ou Jira grimpe avec chaque nouveau siège, et stocker vos tickets de projet chez un éditeur tiers n'est pas toujours acceptable. Plane est une alternative AGPL-3.0 avec plus de 54 000 étoiles sur GitHub, une image Docker AIO maintenue — `makeplane\u002Fplane-aio-community:stable` — et un seul conteneur qui regroupe tous les services internes sous supervisord. Ce guide vous montre comment le déployer sur un VPS Linux, le sécuriser derrière un reverse proxy HTTPS et l'ouvrir à votre équipe.",[33,37,49,52,80,83,86,89,92],{"type":34,"title":35,"body":36},"h2","Pourquoi héberger Plane vous-même plutôt que de payer par siège","L'objection la plus courante contre l'image AIO est que « supervisord-tout-en-un » cache plusieurs services internes, ce qui rend le débogage difficile en cas de problème. En pratique, l'image regroupe cinq composants — API Django, worker Celery, base PostgreSQL, Redis et serveur de fichiers — dans un seul processus supervisord, ce qui simplifie drastiquement le démarrage. Vous n'avez pas à composer une pile multi-conteneurs, à synchroniser les migrations ou à gérer cinq journaux Docker distincts. En cas d'erreur, `docker logs \u003Cconteneur>` et `docker exec \u003Cconteneur> supervisorctl status` suffisent dans la grande majorité des cas. Le blog officiel de Plane annonce plus de 100 000 déploiements Docker et plus de 44 000 déploiements Kubernetes, ce qui donne une mesure de la maturité opérationnelle de l'image. Le modèle économique est clair : vous payez le VPS, pas le siège.",{"type":38,"title":39,"items":40},"ul","Ce que vous gagnez en hébergeant Plane sur votre propre VPS",[41,42,43,44,45,46,47,48],"**Coût fixe, indépendant de la taille de l'équipe** — un VPS unique suffit pour 5 à 50 utilisateurs ; le tarif ne varie pas avec le nombre de sièges.","**Données sous votre contrôle** — tickets, commentaires, fichiers et membres d'équipe restent dans votre propre base PostgreSQL, sur votre propre disque.","**Licence AGPL-3.0** — usage commercial et auto-hébergement autorisés sans redevance ; le code source est auditable.","**Issues, cycles, modules, pages et inbox** — Plane couvre le suivi de tâches, les sprints, les regroupements fonctionnels, la documentation légère et la gestion des remontées entrantes, sans module séparé.","**Image stable et maintenue** — `makeplane\u002Fplane-aio-community:stable` est mise à jour par l'éditeur et testée comme unité cohérente avant chaque publication.","**Mises à jour maîtrisées** — vous tirez la nouvelle image quand vous choisissez de le faire ; aucun éditeur ne peut modifier votre environnement de production sans votre accord.","**Intégration possible avec votre chaîne d'outillage** — Plane expose une API REST documentée, utilisable pour synchroniser des issues depuis un pipeline CI ou depuis GitHub.","**Résolution simple en cas d'incident** — un seul conteneur, un seul journal, un seul point de redémarrage ; pas de stack multi-services à orchestrer manuellement.",{"type":34,"title":50,"body":51},"Prérequis chiffrés pour un déploiement stable","L'image AIO regroupe plusieurs services dans un seul conteneur : comptez **2 vCPU et 4 Go de RAM** au minimum pour un usage équipe. En dessous, le worker Celery et la base PostgreSQL se partagent trop peu de mémoire et les requêtes d'indexation mettent plusieurs secondes. Pour une équipe de plus de dix personnes ou un usage intensif des pages et des cycles, passez à 8 Go. Vous avez besoin de Docker installé sur l'hôte (version 20 ou supérieure), d'un nom de domaine ou d'un sous-domaine pointant vers votre VPS, des ports 80 et 443 ouverts dans votre pare-feu, et d'environ 10 Go d'espace disque pour les volumes de données et les images Docker. Un certificat TLS est indispensable : Plane définit des cookies de session avec `Secure`, ce qui les rend inutilisables sur HTTP.",{"type":53,"title":54,"steps":55},"steps","Déployer Plane AIO en huit étapes",[56,59,62,65,68,71,74,77],{"title":57,"body":58},"Préparer l'hôte et installer Docker","Sur un VPS Debian ou Ubuntu fraîchement installé, mettez à jour les paquets, puis installez Docker via le script officiel ou les dépôts APT de Docker :\n\n```bash\ncurl -fsSL https:\u002F\u002Fget.docker.com | sh\nsystemctl enable --now docker\n```\n\nVérifiez que Docker fonctionne : `docker version`.",{"title":60,"body":61},"Créer le répertoire de travail et le fichier d'environnement","Créez un dossier dédié et préparez-y le fichier `.env` minimal :\n\n```bash\nmkdir -p \u002Fopt\u002Fplane && cd \u002Fopt\u002Fplane\n```\n\nCréez ensuite `\u002Fopt\u002Fplane\u002F.env` avec les variables requises :\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` doit être une chaîne aléatoire longue ; `WEB_URL` est l'URL publique finale de votre instance — c'est la valeur la plus critique. Si elle est incorrecte, les redirections après connexion et le chargement des assets échouent.",{"title":63,"body":64},"Lancer le conteneur AIO","Démarrez Plane avec la commande suivante, en précisant le chemin vers votre fichier `.env` et en montant un volume pour les données persistantes :\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\nLe port `8080` n'est exposé qu'en loopback : seul le reverse proxy local pourra l'atteindre. Lors du premier démarrage, supervisord lance les migrations Django ; l'interface n'est disponible qu'après une à deux minutes.",{"title":66,"body":67},"Vérifier l'état des services internes","Avant de configurer le reverse proxy, vérifiez que tous les sous-processus sont actifs :\n\n```bash\ndocker exec plane supervisorctl status\n```\n\nVous devez voir les services `api`, `worker`, `beat`, `web` et `nginx` en état `RUNNING`. Si l'un d'eux est en `FATAL`, lisez les journaux avec `docker logs plane` pour identifier l'erreur.",{"title":69,"body":70},"Obtenir un certificat TLS avec Certbot","Installez Certbot et le plugin Nginx, puis demandez un certificat pour votre sous-domaine :\n\n```bash\napt install -y certbot python3-certbot-nginx\ncertbot certonly --nginx -d plane.votre-domaine.com\n```\n\nCertbot placera les fichiers de certificat dans `\u002Fetc\u002Fletsencrypt\u002Flive\u002Fplane.votre-domaine.com\u002F`.",{"title":72,"body":73},"Configurer Nginx comme reverse proxy HTTPS","Créez `\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\nActivez le site et rechargez Nginx :\n\n```bash\nln -s \u002Fetc\u002Fnginx\u002Fsites-available\u002Fplane.conf \u002Fetc\u002Fnginx\u002Fsites-enabled\u002F\nnginx -t && systemctl reload nginx\n```",{"title":75,"body":76},"Créer le premier compte administrateur","Ouvrez `https:\u002F\u002Fplane.votre-domaine.com` dans un navigateur. Plane affiche une page d'inscription au premier accès. Créez un compte administrateur, puis depuis le panneau d'administration — accessible à `\u002Fgod-mode\u002F` — activez les inscriptions par e-mail ou configurez une allowlist de domaines pour limiter l'accès à votre organisation.",{"title":78,"body":79},"Inviter l'équipe et créer le premier projet","Dans Plane, un projet regroupe des issues, des cycles (sprints), des modules (fonctionnalités) et des pages (wiki léger). Créez un projet depuis l'interface, puis invitez vos collaborateurs par e-mail depuis les réglages du projet. Les invitations sont envoyées par le serveur de mail configuré dans votre `.env` via `EMAIL_HOST` et `EMAIL_PORT`.",{"type":34,"title":81,"body":82},"Configuration post-installation : variables d'environnement clés","Les variables les plus importantes après le démarrage initial sont :\n\n— `WEB_URL` — l'URL publique complète de l'instance, sans slash final. Une URL mal renseignée cause des redirections cassées après connexion et des assets non chargés (images, CSS, JS). C'est l'erreur la plus courante au premier démarrage.\n\n— `SECRET_KEY` — chaîne secrète pour la signature des sessions Django. Ne la changez pas après le premier démarrage sans invalider toutes les sessions actives.\n\n— `EMAIL_HOST`, `EMAIL_PORT`, `EMAIL_HOST_USER`, `EMAIL_HOST_PASSWORD` — nécessaires pour les invitations et les notifications. Sans ces variables, les invitations par e-mail ne partent pas.\n\n— `ENABLE_SIGNUP` — `1` pour autoriser les inscriptions ouvertes, `0` pour les désactiver (seul l'admin peut créer des comptes).\n\nAprès toute modification du fichier `.env`, redémarrez le conteneur : `docker restart plane`.",{"type":84,"body":85},"tip","Pour les mises à jour, tirez la nouvelle image puis recréez le conteneur en conservant le volume de données :\n\n```bash\ndocker pull makeplane\u002Fplane-aio-community:stable\ndocker stop plane && docker rm plane\n```\n\nRelancez ensuite la commande `docker run` de l'étape 3 avec les mêmes arguments. Les migrations de base de données sont appliquées automatiquement au démarrage. Si une mise à jour casse l'environnement, retournez à la version précédente en remplaçant `stable` par le tag exact de l'image précédente — `docker images` liste les images disponibles localement.",{"type":34,"title":87,"body":88},"Régressions post-2.3.7 et procédure de mise à jour sûre","Les versions Plane AIO 2.3.7 à 2.4.1 ont introduit plusieurs régressions documentées. Perte des notifications en temps réel lors de la mise à jour du serveur Python entre ces versions. Erreur 500 sur les webhooks sortants si la colonne `webhook_trigger` est absente dans la migration PostgreSQL — symptôme : `django.db.utils.ProgrammingError: column webhook_trigger does not exist` dans les logs du conteneur `plane-backend`. Ralentissement des requêtes de filtre sur les espaces de travail de plus de 5 000 issues (régression d'index corrigée en 2.4.2).\n\nAvant toute mise à jour depuis une version antérieure à 2.4.2, sauvegardez votre base PostgreSQL : `docker compose exec -T db pg_dump -U plane plane > plane-backup-$(date +%F).sql`. Puis mettez à jour : `docker compose pull && docker compose up -d`. Si le backend ne démarre pas après la mise à jour, forcez les migrations manuellement : `docker compose exec plane-backend python manage.py migrate --run-syncdb`. Pour les instances en 2.3.6 ou antérieur, une mise à jour directe vers 2.4.2+ est recommandée pour sauter les versions intermédiaires défectueuses.",{"type":34,"title":90,"body":91},"Dépannage : erreurs fréquentes et leurs remèdes","**Redirections cassées ou assets non chargés après connexion.** Message type : l'interface redirige vers `http:\u002F\u002Flocalhost` ou les images et scripts ne se chargent pas. Cause : `WEB_URL` dans le fichier `.env` ne correspond pas à l'URL publique réelle. Corrigez la valeur puis redémarrez le conteneur.\n\n**Échec de démarrage d'un service interne.** Message type dans `docker logs plane` : `FATAL: api: exited too quickly`. Vérifiez `DATABASE_URL` — une URL de connexion incorrecte ou un nom de base inexistant empêche les migrations de s'exécuter et provoque ce type de sortie en erreur fatale.\n\n**Le panneau `\u002Fgod-mode\u002F` est inaccessible.** L'accès à l'interface d'administration nécessite d'avoir créé le premier compte via l'interface principale, puis d'y accéder avec les identifiants de ce compte. Si vous avez désactivé les inscriptions avant de créer le premier compte, rétablissez temporairement `ENABLE_SIGNUP=1`, créez le compte, puis repassez à `0`.\n\n**Les e-mails d'invitation ne partent pas.** Vérifiez que `EMAIL_HOST` et `EMAIL_HOST_USER` sont renseignés dans `.env` et que le port SMTP (souvent `587` avec STARTTLS ou `465` avec SSL) est accessible depuis votre VPS. Testez avec `docker exec plane python manage.py sendtestemail votre@email.com`.\n\n**Performance dégradée avec de nombreux utilisateurs simultanés.** Si plusieurs workers Celery peinent à traiter les tâches, augmentez la RAM du VPS avant d'ajuster la concurrence interne. L'image AIO est paramétrée pour un usage équipe standard ; une configuration à très haute charge nécessite de basculer vers une installation multi-conteneurs avec ressources dédiées par composant.",{"type":34,"title":93,"body":94},"Garder le contrôle de votre infrastructure sans maintenir la couche système","Héberger Plane vous-même montre que la dépendance aux abonnements SaaS n'est pas une fatalité : une image stable, un VPS dimensionné correctement et un reverse proxy TLS suffisent pour une équipe de taille professionnelle. ServOrbit propose des VPS root avec IPv4 dédiée, prêts en quelques minutes, sur lesquels vous avez un accès `root` complet pour installer Docker et gérer vos propres outils. Si vous souhaitez déléguer la couche système — mises à jour du noyau, durcissement SSH, sauvegardes — l'option administration VPS vous permet de garder le contrôle de vos données tout en externalisant la maintenance de l'hôte. Pour aller plus loin dans votre pratique DevOps, consultez le guide sur l'automatisation de vos serveurs avec Ansible et le guide Docker Compose pour la production.","Déployer Plane depuis le Marketplace ServOrbit","ServOrbit propose Plane pré-configuré sur VPS : PostgreSQL 16, Redis 7, RabbitMQ et MinIO montés automatiquement. Domaine requis inclus dans la recette — premier accès en quelques minutes, données sous votre contrôle.","Déployer Plane","\u002Fmarketplace\u002Fcollaboration\u002Fplane",[100,115,132,146],{"id":101,"slug":102,"slugs":103,"title":106,"excerpt":107,"readTime":108,"views":109,"isPinned":16,"publishedAt":110,"category":111,"categories":112,"featuredImage":25,"bgImage":26,"posterImage":114,"relatedSolution":25},221,"huly-gestion-projet-self-hosted-vps",{"fr":102,"en":104,"ar":105},"huly-replace-linear-notion-and-slack-on-your-vps","huly-استبدل-linear-وnotion-وslack-على-خادمك-الافتراضي","Huly : remplacer Linear, Notion et Slack sur votre VPS","Déployez Huly sur votre VPS pour centraliser issues, docs et chat en un seul outil open source — sans abonnement par siège.",3,1,"2026-08-04T00:00:00+00:00",{"id":19,"name":20,"slug":21,"color":22,"icon":21},[113],{"id":19,"name":20,"slug":21,"color":22,"icon":21},"\u002Fblog\u002Fcovers\u002Fhuly-gestion-projet-self-hosted-vps-poster.svg",{"id":116,"slug":117,"slugs":118,"title":121,"excerpt":122,"readTime":123,"views":15,"isPinned":16,"publishedAt":124,"category":125,"categories":129,"featuredImage":25,"bgImage":26,"posterImage":131,"relatedSolution":25},229,"docker-compose-production-checklist",{"fr":117,"en":119,"ar":120},"docker-compose-in-production-10-point-checklist","docker-compose-في-الإنتاج-قائمة-التحقق-من-10-نقاط","Docker Compose en production : checklist des 10 points","Checklist Docker Compose en production : 10 paramètres essentiels, gestion des secrets sans downtime, sauvegarde volumes sans corruption, CVE-2026-17106.",14,"2026-08-06T00:00:00+00:00",{"id":108,"name":126,"slug":127,"color":128,"icon":127},"Déploiement","deploiement","bg-success\u002F10 text-success",[130],{"id":108,"name":126,"slug":127,"color":128,"icon":127},"\u002Fblog\u002Fcovers\u002Fdocker-compose-production-checklist-poster.svg",{"id":133,"slug":134,"slugs":135,"title":138,"excerpt":139,"readTime":140,"views":109,"isPinned":16,"publishedAt":141,"category":142,"categories":143,"featuredImage":25,"bgImage":26,"posterImage":145,"relatedSolution":25},236,"ansible-automatiser-serveurs-vps",{"fr":134,"en":136,"ar":137},"automating-vps-server-management-with-ansible","أتمتة-إدارة-خوادم-vps-باستخدام-ansible","Automatiser la gestion de ses serveurs VPS avec Ansible","Automatisez la gestion d'une flotte de serveurs VPS avec Ansible : inventaire, playbooks, rôles et Vault pour une infrastructure reproductible.",11,"2026-08-08T00:00:00+00:00",{"id":19,"name":20,"slug":21,"color":22,"icon":21},[144],{"id":19,"name":20,"slug":21,"color":22,"icon":21},"\u002Fblog\u002Fcovers\u002Fansible-automatiser-serveurs-vps-poster.svg",{"id":147,"slug":148,"slugs":149,"title":152,"excerpt":153,"readTime":154,"views":109,"isPinned":16,"publishedAt":155,"category":156,"categories":157,"featuredImage":25,"bgImage":26,"posterImage":159,"relatedSolution":160},270,"migrer-jira-openproject-plane-vps-2026",{"fr":148,"en":150,"ar":151},"migrating-from-jira-data-center-to-openproject-or-plane-on-vps","هجرة-jira-data-center-إلى-openproject-أو-plane-على-vps","Migrer de Jira Data Center vers OpenProject ou Plane sur VPS","Jira Data Center ne vend plus de nouvelles licences depuis mars 2026 et passe en lecture seule le 28 mars 2029. Migrez vers OpenProject ou Plane sur VPS en une journée.",13,"2026-08-16T00:00:00+00:00",{"id":108,"name":126,"slug":127,"color":128,"icon":127},[158],{"id":108,"name":126,"slug":127,"color":128,"icon":127},"\u002Fblog\u002Fcovers\u002Fmigrer-jira-openproject-plane-vps-2026-poster.svg",{"categorySlug":29,"appSlug":30},1787580971240]