Héberger Plane : la gestion de projet open source (alternative à Jira et Linear)
Gérer projets, tâches et sprints sans le coût de Jira. Plane est l'alternative open source moderne. Voici comment l'héberger, en connaissant sa stack multi-conteneurs.
Plane permet de gérer projets, tâches, backlog et sprints sans dépendre d’une plateforme propriétaire coûteuse comme Jira, Linear ou Asana. Son interface moderne s’adresse aussi bien aux équipes produit qu’aux développeurs, chefs de projet et PME qui cherchent un outil collaboratif plus simple à maîtriser.
Open source et auto-hébergeable, Plane conserve les données de travail dans votre propre infrastructure. Ce choix améliore la maîtrise des accès, des sauvegardes et de la localisation des données. Il exige toutefois une administration sérieuse, car Plane repose sur plusieurs services et ne se résume pas à un conteneur unique.
Pourquoi choisir Plane pour gérer ses projets ?
Plane organise le travail autour d’espaces de travail, de projets et d’issues. Une issue peut représenter une tâche, un bug, une amélioration ou une demande produit. Elle reçoit un état, une priorité, des responsables, des labels, des dates et une description détaillée.
Les cycles correspondent aux sprints. Ils permettent de sélectionner les issues à traiter pendant une période donnée, puis de suivre leur progression. Le backlog accueille les éléments qui ne sont pas encore planifiés. Cette séparation aide les équipes agiles à préparer les prochaines itérations sans surcharger le sprint courant.
Les modules regroupent les issues par fonctionnalité, objectif ou chantier transverse. Une équipe peut, par exemple, créer un module pour une refonte d’interface, un autre pour la facturation et un troisième pour la conformité RGPD.
Plane propose plusieurs représentations des mêmes données :
- une liste pour consulter rapidement de nombreuses issues ;
- un tableau kanban pour suivre les changements d’état ;
- un calendrier pour visualiser les échéances ;
- une vue Gantt pour observer la planification dans le temps.
Les états personnalisés, priorités, labels et filtres rendent l’outil adaptable aux méthodes de chaque équipe. Plane constitue ainsi une alternative crédible à Jira ou Linear lorsque la maîtrise de l’hébergement est prioritaire.
Comprendre l’architecture avant l’installation
Plane est une stack multi-conteneurs assez conséquente. La Community Edition s’appuie notamment sur un frontend web, une API Django, un worker pour les traitements asynchrones, PostgreSQL, Redis et un stockage MinIO compatible avec l’API S3. Un proxy interne complète généralement le déploiement officiel.
Cette architecture apporte de la souplesse, mais elle consomme davantage de mémoire qu’une application monolithique légère. Une petite instance peut fonctionner pour une équipe réduite, mais il faut conserver une marge pour PostgreSQL, Redis, les workers, les mises à jour et les sauvegardes. Une machine trop limitée risque de ralentir ou de terminer certains conteneurs lorsque la mémoire manque.
Le déploiement manuel de chaque composant est complexe et multiplie les risques d’incompatibilité. Il est préférable d’utiliser le setup Docker Compose officiel de la Community Edition, puis de conserver une version précise de Plane. Le projet évolue rapidement et ses variables, images ou procédures peuvent changer entre deux versions.
Prérequis pour auto-héberger Plane
Préparez les éléments suivants :
- un serveur avec plusieurs gigaoctets de RAM et du stockage rapide ;
- une distribution Linux maintenue ;
- Docker Engine et le plugin Docker Compose (voir installer Docker sur un VPS) ;
- un nom de domaine ou sous-domaine dédié, comme
plane.exemple.fr; - un enregistrement DNS pointant vers l’adresse IP du serveur ;
- les ports nécessaires pour le proxy HTTP et HTTPS ;
- une solution de sauvegarde indépendante du serveur.
Un hébergement français facilite la maîtrise de la localisation des données. TalCloud propose des serveurs en France, du stockage NVMe, une protection Anti-DDoS Netrix et un support humain. Les offres VPS démarrent à 4,99 € par mois : sélectionnez le dimensionnement selon le nombre d’utilisateurs, le volume de pièces jointes et l’activité des workers.
Installer Plane avec le setup officiel
Connectez-vous au serveur avec un utilisateur autorisé à lancer Docker. Récupérez ensuite le script officiel depuis le dépôt makeplane/plane, rendez-le exécutable et lancez-le. L’emplacement exact du script peut évoluer selon la version du dépôt : consultez les instructions incluses dans la version Community Edition que vous avez choisie.
Une procédure courante ressemble à ceci :
curl -fsSL -o setup.sh https://raw.githubusercontent.com/makeplane/plane/master/deploy/selfhost/install.sh
chmod +x setup.sh
./setup.sh
Le script récupère les fichiers nécessaires au déploiement, notamment le fichier Docker Compose et le fichier .env. Placez-vous dans le répertoire créé, puis ouvrez .env avant de démarrer les services.
cd plane-app
nano .env
Configurez au minimum l’URL publique, le domaine et les secrets. Selon la version, les noms exacts des variables peuvent varier. Vérifiez notamment les paramètres correspondant à WEB_URL, PostgreSQL, Redis et MinIO.
WEB_URL=https://plane.exemple.fr
CORS_ALLOWED_ORIGINS=https://plane.exemple.fr
DB_SETTINGS=postgresql://plane_user:mot_de_passe@plane-db/plane
REDIS_URL=redis://plane-redis:6379/
AWS_ACCESS_KEY_ID=plane-storage
AWS_SECRET_ACCESS_KEY=secret_long_et_aleatoire
Ne copiez pas ces valeurs telles quelles en production. Générez des mots de passe longs et uniques, puis utilisez les noms de services définis dans le fichier Compose officiel. Certaines versions construisent automatiquement les URL internes à partir de variables séparées.
Démarrez ensuite la stack :
docker compose pull
docker compose up -d
docker compose ps
Consultez les journaux si un service ne devient pas opérationnel :
docker compose logs --tail=100
docker compose logs -f api worker
Configurer le premier espace de travail
Ouvrez l’URL publique de Plane dans un navigateur. Lors du premier accès, créez le compte administrateur, puis un workspace pour votre organisation ou votre équipe.
Invitez ensuite les collaborateurs depuis les paramètres de l’espace de travail. Attribuez uniquement les droits nécessaires, notamment pour les comptes invités ou les intervenants externes.
Créez un premier projet avec des états adaptés à votre flux, par exemple « Backlog », « À faire », « En cours », « En revue » et « Terminé ». Ajoutez quelques issues, définissez leurs priorités et affectez-les aux membres concernés.
Créez enfin un cycle avec une date de début et de fin. Déplacez les issues retenues du backlog vers ce cycle. La vue kanban facilite le suivi quotidien, tandis que la vue Gantt donne une lecture plus globale des échéances et de la planification.
Publier Plane en HTTPS
Placez un reverse proxy public devant Plane afin de terminer la connexion TLS et de fournir un certificat HTTPS valide. Le domaine présenté par le proxy doit correspondre exactement à celui configuré dans Plane.
Plane possède son propre proxy interne dans le déploiement officiel. Le reverse proxy externe doit donc transmettre les requêtes vers le port publié par la stack, sans contourner directement le frontend ou l’API. Transmettez également les en-têtes indiquant le protocole et l’hôte d’origine.
Exemple de configuration Nginx :
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
}
Adaptez le port à celui publié dans votre fichier Compose. Une incohérence entre le domaine, WEB_URL, les origines autorisées et les en-têtes du proxy peut provoquer des redirections incorrectes ou des erreurs de connexion. Nginx Proxy Manager ou Traefik conviennent également.
Sécuriser l’instance
Plane contient des informations sensibles : feuilles de route, incidents, commentaires, documents et parfois données personnelles. Activez systématiquement HTTPS et limitez les accès administratifs.
N’exposez jamais PostgreSQL, Redis ou MinIO directement sur Internet. Ces services doivent rester sur le réseau Docker interne, protégés par le pare-feu. Seul le proxy applicatif doit publier un port accessible depuis l’extérieur.
Utilisez des secrets distincts pour la base de données, MinIO et l’application. Protégez le compte administrateur, supprimez rapidement les accès inutilisés et appliquez régulièrement les correctifs du système, de Docker et de Plane.
Mettre à jour sans casser la production
Avant toute mise à jour, consultez les notes de version et sauvegardez les données. Le dépôt officiel fournit fréquemment un script ou une action de mise à jour. Utilisez la procédure correspondant exactement à votre installation.
Évitez de suivre aveuglément une branche mouvante. Notez la version déployée, archivez les fichiers .env et Compose, puis testez les mises à jour importantes sur une instance distincte. Après l’opération, contrôlez l’état des conteneurs, les migrations et les journaux.
Sauvegarder PostgreSQL et MinIO
Une sauvegarde Plane doit inclure PostgreSQL et les objets MinIO. Sauvegarder uniquement la base ferait perdre les pièces jointes et autres fichiers stockés dans le service S3 compatible.
Pour exporter PostgreSQL depuis son conteneur :
docker compose exec -T plane-db pg_dump -U plane_user -d plane -Fc > plane-postgres.dump
Adaptez le nom du service, l’utilisateur et la base aux valeurs du Compose officiel. Sauvegardez également le volume ou le bucket MinIO avec un outil compatible S3. Conservez enfin une copie protégée du fichier .env, car ses secrets sont nécessaires à la restauration.
Automatisez les sauvegardes vers un emplacement distinct, chiffrez-les et testez régulièrement une restauration complète. Notre guide sur les sauvegardes chiffrées avec restic détaille cette approche. Avec un dimensionnement réaliste, HTTPS, des services internes non exposés et une stratégie de sauvegarde vérifiée, Plane fournit aux équipes produit et développement un environnement moderne pour gérer projets, backlog et sprints sur une infrastructure maîtrisée.