[{"data":1,"prerenderedAt":210},["ShallowReactive",2],{"seo-verification":3,"blog-deployer-plane-vps-ma-fr":6,"promo-bar-likely":209},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"key":7,"data":8},"blog-deployer-plane-vps-ma-fr",{"id":9,"slug":10,"slugs":11,"title":15,"excerpt":16,"readTime":17,"views":18,"isPinned":19,"noindex":19,"publishedAt":20,"updatedAt":21,"category":22,"categories":27,"featuredImage":29,"bgImage":30,"posterImage":31,"relatedSolution":32,"intro":35,"sections":36,"ctaTitle":137,"ctaBody":138,"ctaButton":139,"ctaUrl":140,"relatedPosts":141},252,"deployer-plane-vps",{"fr":10,"en":12,"ar":13,"es":14},"deploy-plane-self-hosted-on-a-linux-vps","نشر-plane-كاستضافة-ذاتية-على-خادم-vps-لينكس","desplegar-plane-en-un-vps-linux","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.",13,1,false,"2026-08-13T00:00:00+00:00","2026-11-04T16:30:26+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":25},2,"Automatisation","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},"collaboration","plane","La facture Linear ou Jira grimpe avec chaque nouveau siège, et confier vos tickets de projet à un éditeur tiers n'est pas toujours acceptable. Plane est une alternative sous licence AGPL-3.0, distribuée en édition Community auto-hébergeable avec un installateur Docker Compose officiel. Ce guide montre comment la déployer sur un VPS Linux, la placer derrière un reverse proxy HTTPS, comprendre ce que l'image AIO exige réellement, et diagnostiquer les pannes qui reviennent dans les tickets publics : image MinIO introuvable, boucle de redirection sur la page de profil, problèmes après une montée de version.",[37,41,53,56,84,87,90,93,96,128,131,134],{"type":38,"title":39,"body":40},"h2","Pourquoi héberger Plane vous-même plutôt que de payer par siège","Un outil de suivi de tickets concentre ce qu'une équipe a de plus bavard : décisions, pièces jointes, noms de clients, échéances. L'héberger sur votre VPS déplace le coût du nombre de sièges vers la capacité du serveur : vous payez des ressources, pas des utilisateurs. Plane dépasse 61 000 étoiles sur GitHub, son code est publié sous AGPL-3.0 et l'éditeur annonce sur son blog plus de 100 000 déploiements Docker et plus de 44 000 déploiements Kubernetes, ce qui donne une idée de la base installée et de la quantité de retours d'expérience publics disponibles.\n\nIl y a une contrepartie, à connaître avant de commencer. La pile Community comprend plusieurs services : interface web, API, workers, serveur temps réel, base PostgreSQL, cache Valkey, file de messages RabbitMQ, stockage objet compatible S3 et reverse proxy. L'installateur officiel les orchestre avec Docker Compose, mais c'est vous qui répondez des sauvegardes, des mises à jour et de l'état du stockage objet. Les sections qui suivent détaillent chaque point en distinguant ce que les mainteneurs ont confirmé de ce que seuls des utilisateurs ont rapporté.",{"type":42,"title":43,"items":44},"ul","Ce que vous gagnez en hébergeant Plane sur votre propre VPS",[45,46,47,48,49,50,51,52],"**Un coût lié à la machine, pas aux sièges** — le tarif du VPS ne varie pas avec le nombre de comptes ; ce qui borne l'équipe, ce sont la mémoire et le disque.","**Des données sous votre contrôle** — tickets, commentaires, fichiers et membres restent dans votre base PostgreSQL et votre stockage objet, sur votre disque.","**Une licence AGPL-3.0** — le code est auditable ; la licence impose de publier vos modifications si vous exposez une version modifiée à des utilisateurs.","**Issues, cycles, modules, pages et inbox** — suivi de tâches, sprints, regroupements fonctionnels, documentation légère et remontées entrantes, sans module séparé.","**Un installateur officiel** — le script `setup.sh` récupère un `docker-compose.yaml` et un `plane.env` publiés avec la release, puis pilote démarrage, arrêt, mise à jour et sauvegarde.","**Des mises à jour à votre rythme** — vous choisissez le moment de la montée de version, après sauvegarde, et le script archive l'ancien fichier Compose avant de le remplacer.","**Un stockage déportable** — base PostgreSQL et stockage S3 peuvent vivre hors du VPS ; la documentation de Plane le recommande pour la production.","**Une API REST documentée** — utile pour synchroniser des issues depuis un pipeline CI ou depuis GitHub.",{"type":38,"title":54,"body":55},"Prérequis chiffrés pour un déploiement stable","La documentation de Plane indique 2 cœurs et 4 Go de RAM au minimum, avec 8 Go recommandés en production. Comptez 2 vCPU et 8 Go de RAM si l'équipe dépasse une dizaine de personnes ou si vous utilisez beaucoup les pages et les cycles : PostgreSQL, RabbitMQ, les workers et l'API partagent la même machine. Prévoyez 20 Go de disque ou davantage : les images Docker et la base pèsent peu au départ, ce sont les fichiers téléversés qui font grossir le volume `uploads`.\n\nIl vous faut un Docker récent avec le plugin Compose (le script appelle `docker compose`), un nom de domaine ou un sous-domaine dont l'enregistrement A pointe vers le VPS, et les ports 80 et 443 ouverts. Un certificat TLS est indispensable en production : sans HTTPS, mots de passe et sessions circulent en clair.",{"type":57,"title":58,"steps":59},"steps","Déployer Plane Community en huit étapes",[60,63,66,69,72,75,78,81],{"title":61,"body":62},"Préparer l'hôte et installer Docker","Sur un VPS Debian ou Ubuntu à jour, installez Docker avec le script officiel : `curl -fsSL https:\u002F\u002Fget.docker.com | sh`. Activez le service avec `systemctl enable --now docker`, puis vérifiez `docker version` et `docker compose version`. Ouvrez les ports 80 et 443 dans le pare-feu et limitez le port 22 à vos adresses.",{"title":64,"body":65},"Télécharger l'installateur officiel","Créez un dossier dédié avec `mkdir -p \u002Fopt\u002Fplane-selfhost && cd \u002Fopt\u002Fplane-selfhost`, puis téléchargez le script de la dernière release : `curl -fsSL -o setup.sh https:\u002F\u002Fgithub.com\u002Fmakeplane\u002Fplane\u002Freleases\u002Flatest\u002Fdownload\u002Fsetup.sh` et `chmod +x setup.sh`. Le script travaille dans le dossier courant : il y crée le sous-dossier `plane-app`.",{"title":67,"body":68},"Lancer l'installation","Exécutez `.\u002Fsetup.sh` en root ou avec un utilisateur du groupe docker, puis choisissez l'option 1 (Install). Le script télécharge `docker-compose.yaml` et `plane.env` dans `plane-app\u002F` et, dans les versions récentes, génère des identifiants pour le stockage objet embarqué. Quittez le menu avec l'option 8 avant de configurer : la documentation demande d'arrêter la pile avant toute édition de `plane.env`.",{"title":70,"body":71},"Renseigner plane.env","Ouvrez `plane-app\u002Fplane.env` et fixez au minimum `APP_DOMAIN=plane.votre-domaine.com`, `WEB_URL=https:\u002F\u002Fplane.votre-domaine.com` et `CORS_ALLOWED_ORIGINS=https:\u002F\u002Fplane.votre-domaine.com`. Pour laisser Nginx tenir les ports 80 et 443, ajoutez `LISTEN_HTTP_PORT=8080`. Vérifiez que `SECRET_KEY` et `LIVE_SERVER_SECRET_KEY` portent des valeurs uniques, jamais des exemples : `openssl rand -hex 32` en produit une.",{"title":73,"body":74},"Démarrer la pile et contrôler les conteneurs","Relancez `.\u002Fsetup.sh` et choisissez l'option 2 (Start). Le premier démarrage télécharge les images, puis le conteneur `migrator` prépare la base et s'arrête. Contrôlez l'état avec `docker compose -f plane-app\u002Fdocker-compose.yaml --env-file plane-app\u002Fplane.env ps` : tous les autres conteneurs doivent être en cours d'exécution. L'option 6 du menu affiche les journaux.",{"title":76,"body":77},"Obtenir un certificat TLS avec Certbot","Installez Nginx et Certbot avec `apt install -y nginx certbot python3-certbot-nginx`, puis demandez le certificat : `certbot certonly --nginx -d plane.votre-domaine.com`. Les fichiers sont déposés dans `\u002Fetc\u002Fletsencrypt\u002Flive\u002Fplane.votre-domaine.com\u002F`. Le nom de domaine doit déjà pointer vers le VPS.",{"title":79,"body":80},"Configurer Nginx comme reverse proxy HTTPS","Créez un site Nginx qui écoute sur le port 443 avec le certificat obtenu et transmet tout vers `http:\u002F\u002F127.0.0.1:8080`. Ajoutez les en-têtes `Host`, `X-Real-IP`, `X-Forwarded-For` et `X-Forwarded-Proto`, ainsi que `Upgrade` et `Connection` pour les WebSocket du serveur temps réel. Un second bloc `server` redirige le port 80 vers HTTPS avec `return 301 https:\u002F\u002F$host$request_uri;`. Activez le site, puis `nginx -t && systemctl reload nginx`. Docker publie le port 8080 sans passer par UFW : fermez-le depuis l'extérieur avec le pare-feu de votre fournisseur.",{"title":82,"body":83},"Créer l'administrateur de l'instance et l'équipe","Ouvrez `https:\u002F\u002Fplane.votre-domaine.com\u002Fgod-mode\u002F` pour créer le compte administrateur de l'instance. Gardez la barre oblique finale : un utilisateur rapporte qu'une adresse sans elle restait bloquée, point que les mainteneurs n'ont pas confirmé. Ouvrez ensuite l'application, créez l'espace de travail et le premier projet, puis invitez vos collaborateurs.",{"type":38,"title":85,"body":86},"Configuration post-installation : les variables qui comptent","`WEB_URL` et `CORS_ALLOWED_ORIGINS` : la documentation demande de fixer les deux à l'adresse réellement utilisée par le navigateur. C'est la première vérification en cas de comportement étrange après la connexion.\n\n`LISTEN_HTTP_PORT` et `LISTEN_HTTPS_PORT` : ports publiés par le proxy embarqué, 80 et 443 par défaut. Changez-les si Nginx occupe déjà les ports standards.\n\n`TRUSTED_PROXIES` et `NUM_PROXIES` : ils déterminent l'adresse IP du client vue par l'API, donc la limitation de débit. Derrière votre propre reverse proxy, le README de l'installateur demande d'augmenter `NUM_PROXIES` d'une unité par saut supplémentaire ; laissé vide, le comportement par défaut s'applique.\n\n`UNSPLASH_ACCESS_KEY` : optionnelle, elle alimente le sélecteur d'images de couverture. Laissez-la vide si vous n'utilisez pas Unsplash ; c'est le premier réglage à relire en cas de boucle de redirection, décrite plus bas.\n\n`APP_RELEASE` : la release suivie, `stable` au départ. Le script la résout en numéro de version lors de l'installation et à chaque mise à jour.\n\nArrêtez la pile avec l'option 3 avant de modifier `plane.env`, puis redémarrez avec l'option 4.",{"type":88,"body":89},"tip","Avant toute mise à jour, sauvegardez : l'option 7 du script, plus un dump PostgreSQL avec `docker compose -f plane-app\u002Fdocker-compose.yaml --env-file plane-app\u002Fplane.env exec -T plane-db pg_dump -U plane plane > plane-backup-$(date +%F).sql`. Lancez ensuite l'option 5 (Upgrade) : le script compare la release installée à la dernière, demande confirmation, archive l'ancien `docker-compose.yaml` dans `plane-app\u002Farchive\u002F` et garde une copie `plane.env.bak`. Relisez `plane.env` après coup pour repérer les nouvelles variables. Ne mettez jamais à jour par `docker compose down -v` : l'option `-v` supprime le volume `uploads`, donc vos pièces jointes. Les notes de la release v1.4.3, publiée en octobre 2026, corrigent plusieurs failles de contrôle d'accès et demandent aux instances auto-hébergées de mettre à jour.",{"type":38,"title":91,"body":92},"Stockage objet : l'image MinIO introuvable et la correction de la release 1.4.3","Symptôme. Sur une installation neuve ou une mise à jour, le téléchargement des images échoue sur le service de stockage avec le message `pull access denied for minio\u002Fminio, repository does not exist or may require 'docker login'`. Le registre répond 401 plutôt que 404 à un client anonyme, d'où un message qui ressemble à un problème d'identifiants : aucun `docker login` n'y change rien.\n\nConfirmé par l'équipe Plane. L'organisation `minio` a disparu de Docker Hub. La PR #9829, fusionnée en septembre 2026, le constate et bascule les images vers quay.io. Les notes de la release v1.4.3 précisent ensuite que le stockage objet embarqué utilise l'image `pgsty\u002Fsilo`, épinglée sur un tag de release plutôt que sur `latest`. Un contributeur du dépôt a aussi indiqué dans le ticket #9834, ouvert en septembre 2026, que la release avait été mise à jour avec une autre image.\n\nRapporté par des utilisateurs seulement. Le contournement par `quay.io\u002Fminio\u002Fminio` a fonctionné pour certains, puis plusieurs participants ont signalé des erreurs 401 sur ce registre à partir du 24 septembre 2026. Ces retours datent d'avant la correction de la release ; ne les appliquez pas à une installation récente.\n\nQue faire. Sur une installation neuve, utilisez le script de la dernière release, puis vérifiez avec `grep -n 'image:' plane-app\u002Fdocker-compose.yaml` qu'aucune ligne ne cite `minio\u002Fminio`. Sur une installation existante qui la cite encore, sauvegardez puis lancez l'option 5 du script. Pour la production, la PR #9829 recommande elle-même de privilégier un stockage S3 externe plutôt que le MinIO embarqué, dont la branche communautaire est gelée en amont selon son auteur : c'est une orientation de l'équipe Plane, pas une garantie.",{"type":38,"title":94,"body":95},"Après une montée de version : ce que le ticket 8708 établit, et ce qu'il n'établit pas","En mars 2026, un utilisateur a ouvert le ticket #8708 pour décrire une installation difficile. Après le passage de la version 2.3.3 à la 2.3.7, les permissions des fichiers téléversés étaient cassées ; un volume déclaré avec des guillemets simples dans un fichier de l'image AIO était mal interprété ; et le premier bouton proposé à l'administrateur menait à `\u002Fgod-mode` sans barre oblique finale, page qui restait bloquée.\n\nCe que les mainteneurs ont confirmé tient en une phrase : la version 2.3.7 n'est pas une release officielle, elle avait été produite pour un client précis, et la 2.4.0 règle le problème. Ils n'ont confirmé aucune des trois anomalies. L'auteur a répondu que le défaut de guillemets persistait dans le Dockerfile, et le ticket a été clos sans correctif associé.\n\nRetenez trois consignes. Installez uniquement des releases publiées sur la page Releases du dépôt, dont la dernière est v1.4.3 ; ne tirez pas une version intermédiaire. Sauvegardez avant chaque montée de version. Après la mise à jour, ouvrez une pièce jointe ancienne et une récente : si l'ouverture échoue, inspectez les droits du volume d'uploads avec `docker volume inspect` avant de modifier quoi que ce soit, en gardant la sauvegarde à portée de main.",{"type":97,"title":98,"headers":99,"rows":103},"comparison","Installateur Compose ou image AIO : ce que chacun exige",[100,101,102],"Critère","Installateur Compose (Community)","Image AIO Community",[104,108,112,116,120,124],[105,106,107],"Services inclus","PostgreSQL, Valkey, RabbitMQ, stockage objet et proxy dans la pile Compose","Applications, API, workers et proxy Caddy dans un seul conteneur",[109,110,111],"Services externes","Aucun obligatoire ; recommandés en production","PostgreSQL, Redis, RabbitMQ et stockage S3 à fournir vous-même",[113,114,115],"Point d'entrée","`.\u002Fsetup.sh` et le fichier `plane.env`","`docker run` avec `DOMAIN_NAME`, `DATABASE_URL`, `REDIS_URL`, `AMQP_URL` et les variables S3",[117,118,119],"Secrets","Valeurs à vérifier dans `plane.env`","`SECRET_KEY` et `LIVE_SERVER_SECRET_KEY` obligatoires : le conteneur s'arrête s'ils sont vides",[121,122,123],"Mise à jour","Option 5 du script, avec archive de l'ancien fichier Compose","Tirer la nouvelle image et recréer le conteneur",[125,126,127],"Usage décrit","Serveur unique, avec stockage externe conseillé en production","Déploiement simple et tests, selon son README",{"type":38,"title":129,"body":130},"Dépannage : boucle de redirection entre \u002Fprofile\u002F et \u002F?next_path=\u002Fprofile\u002F","Symptôme (ticket #6694, ouvert en mars 2025, encore ouvert le 24 octobre 2026). Derrière un nom de domaine, l'ouverture de `https:\u002F\u002Fvotre-domaine.com\u002Fprofile\u002F` renvoie vers `https:\u002F\u002Fvotre-domaine.com\u002F?next_path=\u002Fprofile\u002F`, puis la page repart en boucle. Dans le journal de l'API de l'auteur, presque toutes les requêtes répondent 200, sauf une qui revient à chaque tour : `GET \u002Fapi\u002Funsplash\u002F?query= HTTP\u002F1.1\" 401`, suivie de `Unauthorized: \u002Fapi\u002Funsplash\u002F`.\n\nÉtabli. L'auteur utilisait Docker Compose avec un Nginx externe devant Plane. Les mainteneurs ont demandé le mode de déploiement, puis la présence d'un reverse proxy, et ont répondu en mars 2025 qu'ils enquêtaient. Ils n'ont publié aucune cause.\n\nRapporté. En juillet 2026, un participant a retrouvé le même symptôme : il avait saisi la clé secrète d'Unsplash à la place de la clé d'accès dans `UNSPLASH_ACCESS_KEY`. Une PR proposée par un contributeur externe, la #10108, encore ouverte le 31 octobre 2026, avance l'explication : l'API renvoie tel quel le 401 d'Unsplash et l'application web traite tout 401 comme une session expirée, d'où la redirection ; elle propose de répondre 502 à la place. C'est une hypothèse de contributeur, appuyée par un seul témoignage, pas un constat des mainteneurs, et elle ne couvre pas forcément toutes les boucles de redirection.\n\nQue faire, dans l'ordre. D'abord, cherchez la ligne dans le journal : `docker compose -f plane-app\u002Fdocker-compose.yaml --env-file plane-app\u002Fplane.env logs api | grep unsplash`. Si elle n'apparaît pas, votre boucle a une autre cause : relisez `WEB_URL` et `CORS_ALLOWED_ORIGINS`. Si elle apparaît avec un 401, relisez `UNSPLASH_ACCESS_KEY` dans `plane.env` et dans la section Images du panneau `\u002Fgod-mode\u002F` : il faut la clé d'accès (Access Key), pas la clé secrète. Si vous n'utilisez pas Unsplash, videz la valeur et redémarrez la pile ; selon la PR, une clé absente renvoie une liste vide sans erreur.",{"type":38,"title":132,"body":133},"Dépannage : autres erreurs fréquentes et leurs remèdes","**Redirections vers `http:\u002F\u002Flocalhost` ou ressources qui ne se chargent pas.** `WEB_URL` et `CORS_ALLOWED_ORIGINS` ne correspondent pas à l'adresse publique. Corrigez les deux, puis arrêtez et redémarrez la pile.\n\n**`pull access denied for minio\u002Fminio`.** Voir la section sur le stockage objet : passez à une release récente avec l'option 5 du script.\n\n**502 Bad Gateway renvoyé par Nginx.** Le proxy embarqué n'écoute pas sur le port visé. Comparez `LISTEN_HTTP_PORT` dans `plane.env` avec la cible de `proxy_pass`, puis testez `curl -I http:\u002F\u002F127.0.0.1:8080` depuis le VPS. Si la réponse tarde, `docker compose -f plane-app\u002Fdocker-compose.yaml --env-file plane-app\u002Fplane.env ps` montre quel conteneur redémarre en boucle.\n\n**Les invitations par e-mail ne partent pas.** Renseignez le serveur SMTP dans les paramètres e-mail de l'instance, depuis `\u002Fgod-mode\u002F`, puis envoyez une invitation de test. Vérifiez aussi que l'hébergeur ne filtre pas le port SMTP sortant.\n\n**Lenteur avec beaucoup d'utilisateurs.** Observez `docker stats` : si la mémoire est saturée, augmentez la RAM avant tout autre réglage, puis envisagez de déporter PostgreSQL et le stockage objet hors du VPS.",{"type":38,"title":135,"body":136},"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é : l'installateur officiel, 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","\u002Fapplications\u002Fcollaboration\u002Fplane",[142,158,178,194],{"id":143,"slug":144,"slugs":145,"title":149,"excerpt":150,"readTime":151,"views":23,"isPinned":19,"noindex":19,"publishedAt":152,"updatedAt":153,"category":154,"categories":155,"featuredImage":29,"bgImage":30,"posterImage":157,"relatedSolution":29},221,"huly-gestion-projet-self-hosted-vps",{"fr":144,"en":146,"ar":147,"es":148},"huly-replace-linear-notion-and-slack-on-your-vps","huly-استبدل-linear-وnotion-وslack-على-خادمك-الافتراضي","huly-gestion-proyectos-self-hosted-vps","Huly : remplacer Linear, Notion et Slack sur votre VPS","Déployez Huly sur votre VPS pour centraliser issues, docs et chat — prérequis, installation, backup MongoDB, dépannage et mise à jour de version.",7,"2026-08-04T00:00:00+00:00","2026-10-20T23:18:05+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":25},[156],{"id":23,"name":24,"slug":25,"color":26,"icon":25},"\u002Fblog\u002Fcovers\u002Fhuly-gestion-projet-self-hosted-vps-poster.svg",{"id":159,"slug":160,"slugs":161,"title":165,"excerpt":166,"readTime":167,"views":18,"isPinned":19,"noindex":19,"publishedAt":168,"updatedAt":169,"category":170,"categories":175,"featuredImage":29,"bgImage":30,"posterImage":177,"relatedSolution":29},229,"docker-compose-production-checklist",{"fr":160,"en":162,"ar":163,"es":164},"docker-compose-in-production-10-point-checklist","docker-compose-في-الإنتاج-قائمة-التحقق-من-10-نقاط","checklist-docker-compose-en-produccion","Docker Compose en production : checklist des 10 points","Docker Compose en production : 10 réglages, health checks, secrets, rollback, dépannage et passage de docker-compose v1 à docker compose sur Ubuntu 26.04.",12,"2026-08-06T00:00:00+00:00","2026-10-23T13:27:09+00:00",{"id":171,"name":172,"slug":173,"color":174,"icon":173},3,"Déploiement","deploiement","bg-success\u002F10 text-success",[176],{"id":171,"name":172,"slug":173,"color":174,"icon":173},"\u002Fblog\u002Fcovers\u002Fdocker-compose-production-checklist-poster.svg",{"id":179,"slug":180,"slugs":181,"title":185,"excerpt":186,"readTime":187,"views":23,"isPinned":19,"noindex":19,"publishedAt":188,"updatedAt":189,"category":190,"categories":191,"featuredImage":29,"bgImage":30,"posterImage":193,"relatedSolution":29},236,"ansible-automatiser-serveurs-vps",{"fr":180,"en":182,"ar":183,"es":184},"automating-vps-server-management-with-ansible","أتمتة-إدارة-خوادم-vps-باستخدام-ansible","automatizar-servidores-vps-con-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.",10,"2026-08-08T00:00:00+00:00","2026-09-07T11:26:10+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":25},[192],{"id":23,"name":24,"slug":25,"color":26,"icon":25},"\u002Fblog\u002Fcovers\u002Fansible-automatiser-serveurs-vps-poster.svg",{"id":195,"slug":196,"slugs":197,"title":201,"excerpt":202,"readTime":17,"views":18,"isPinned":19,"noindex":19,"publishedAt":203,"updatedAt":21,"category":204,"categories":205,"featuredImage":29,"bgImage":30,"posterImage":207,"relatedSolution":208},270,"migrer-jira-openproject-plane-vps-2026",{"fr":196,"en":198,"ar":199,"es":200},"migrating-from-jira-data-center-to-openproject-or-plane-on-vps","هجرة-jira-data-center-إلى-openproject-أو-plane-على-vps","migrar-de-jira-a-openproject-o-plane-en-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.","2026-08-16T00:00:00+00:00",{"id":171,"name":172,"slug":173,"color":174,"icon":173},[206],{"id":171,"name":172,"slug":173,"color":174,"icon":173},"\u002Fblog\u002Fcovers\u002Fmigrer-jira-openproject-plane-vps-2026-poster.svg",{"categorySlug":33,"appSlug":34},true,1794270698582]