[{"data":1,"prerenderedAt":170},["ShallowReactive",2],{"seo-verification":3,"blog-heberger-onedev-vps-fr":6},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"id":7,"slug":8,"slugs":9,"title":13,"excerpt":14,"readTime":15,"views":16,"isPinned":17,"publishedAt":18,"category":19,"categories":25,"featuredImage":27,"bgImage":28,"posterImage":29,"relatedSolution":30,"intro":33,"sections":34,"ctaTitle":27,"ctaBody":27,"ctaButton":111,"ctaUrl":112,"relatedPosts":113},311,"heberger-onedev-vps",{"fr":8,"en":10,"ar":11,"es":12},"self-host-onedev-git-cicd-and-kanban-in-one-container","onedev-على-vps-git-وcicd-وkanban-في-حاوية-واحدة","onedev-en-vps-git-cicd-y-kanban-autoalojados","OneDev sur VPS : Git, CI\u002FCD et Kanban self-hostés","Hébergez OneDev sur votre VPS : forge Git privée, pipelines CI\u002FCD visuels et Kanban intégrés. Un seul conteneur, sans abonnement par développeur.",8,0,false,"2026-08-28T00:00:00+00:00",{"id":20,"name":21,"slug":22,"color":23,"icon":24},7,"Self-hosting","self-hosting","bg-indigo-500\u002F10 text-indigo-400","cloud",[26],{"id":20,"name":21,"slug":22,"color":23,"icon":24},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fheberger-onedev-vps-poster.svg",{"categorySlug":31,"appSlug":32},"developpement","onedev","Vous cherchez un équivalent self-hosted de GitHub avec CI\u002FCD intégré, sans installer un runner séparé ni payer par développeur ? OneDev réunit forge Git, moteur CI\u002FCD, tableaux Kanban et registre de paquets dans un seul conteneur Docker — sur un VPS de 2 Go de RAM.",[35,39,50,53,69,72,105,108],{"type":36,"title":37,"body":38},"h2","Pourquoi OneDev plutôt que Gitea seul ?","Gitea est excellent pour héberger du code : il est léger, rapide et couvre tous les besoins d'une forge Git classique. Mais dès qu'on veut du CI\u002FCD, il faut installer un runner séparé (`gitea\u002Fact_runner`), le configurer, surveiller ses jobs et l'exposer au réseau. OneDev fait tout ça par défaut : quand vous poussez un `.onedev-buildspec.yml`, un pipeline se met en file d'attente et s'exécute dans un conteneur Docker sur le même VPS — aucun service supplémentaire à configurer.\n\nCette intégration s'étend aux issues et aux tableaux Kanban : au lieu de gérer un projet dans une troisième application, les cartes Kanban d'OneDev se déplacent automatiquement quand une branche est créée, une pull request ouverte ou un commit mergé. Le résultat est un poste de développement cohérent, sans jonglage entre onglets.",{"type":40,"title":41,"items":42},"ul","Ce qu'on obtient avec OneDev",[43,44,45,46,47,48,49],"Forge Git complète : dépôts, branches, tags, pull requests, revues de code, wikis et releases","CI\u002FCD intégré avec concepteur visuel de pipelines — aucun runner séparé à installer","Tableaux Kanban avec transitions automatiques déclenchées par les événements du dépôt","Registre de paquets Docker\u002FOCI, npm, Maven, NuGet et Helm hébergé sur la même URL","Recherche symbolique dans le code et navigation dans le diff alimentées par l'analyse statique","Authentification via LDAP, OAuth2 (GitHub, GitLab, Google) ou comptes locaux","Import depuis GitHub, GitLab ou Gitea avec historique, issues et pull requests",{"type":36,"title":51,"body":52},"Architecture : deux conteneurs, une URL","OneDev tourne comme deux conteneurs Docker : `1dev\u002Fserver` (l'application Java) et `postgres:14` (la base de données). L'application écoute sur le port 6610 ; ServOrbit place un vhost nginx devant elle et gère le TLS. Tout passe par le même domaine : l'interface web, les clones Git en HTTPS, les webhooks CI et le registre de paquets.\n\nL'image `1dev\u002Fserver` embarque également un agent de build local. Quand un pipeline démarre, il lance un conteneur Docker pour chaque étape de build — c'est pourquoi la socket Docker (`\u002Fvar\u002Frun\u002Fdocker.sock`) est montée dans le conteneur OneDev. Cette conception est standard pour les plateformes CI auto-hébergées (Jenkins, Drone, Woodpecker l'utilisent aussi) et permet de configurer des runners distants si vous avez besoin de parallélisme ou d'isolation matérielle.\n\nLa base de données PostgreSQL stocke les dépôts (sous forme de dépôts Git bare dans `\u002Fopt\u002Fonedev`), les issues, les membres, les jobs CI et la configuration. Un seul volume Docker suffit pour tout sauvegarder.\n\nLa RAM consommée au démarrage est d'environ 512 Mo pour un VPS sans utilisateurs actifs. La JVM HotSpot optimise la mémoire au fil des exécutions, mais il est prudent de commencer avec 2 Go pour laisser de la marge aux builds Docker concurrents. Un VPS de 4 Go de RAM est suffisant pour une équipe de dix développeurs avec deux ou trois jobs CI parallèles.",{"type":54,"title":55,"steps":56},"steps","Déployer OneDev en 4 étapes",[57,60,63,66],{"title":58,"body":59},"Commander un VPS avec un domaine","Choisissez un VPS avec au moins 2 Go de RAM — OneDev est une application Java qui a besoin d'un peu d'espace au démarrage. Un domaine est requis : OneDev intègre l'URL du serveur dans les liens de clonage, les webhooks et les redirections OAuth. Pointez un sous-domaine (`git.monentreprise.com`) vers votre VPS, ou utilisez le sous-domaine gratuit ServOrbit (`{app}.{dns_slug}.servorbit-dns.com`) qui inclut HTTPS automatiquement.",{"title":61,"body":62},"Déploiement automatique depuis le marketplace","Dans votre espace ServOrbit, allez sur Marketplace → Développement → OneDev → Déployer. ServOrbit génère les identifiants de base de données, démarre les deux conteneurs et configure le vhost nginx. L'interface web est disponible en HTTPS sous deux minutes.",{"title":64,"body":65},"Assistant de configuration initiale","Ouvrez votre domaine dans un navigateur. OneDev affiche un assistant de première connexion qui vous demande de créer le compte administrateur et, point clé, de saisir l'URL du serveur — entrez votre domaine HTTPS complet (`https:\u002F\u002Fgit.monentreprise.com`). OneDev stocke cette URL et l'intègre dans tous les liens générés : liens de clone, notifications par e-mail, badges de statut CI. Prenez le temps de la renseigner correctement dès le départ.",{"title":67,"body":68},"Premier dépôt et premier pipeline","Créez un dépôt depuis l'interface, clonez-le en HTTPS (`git clone https:\u002F\u002Fgit.monentreprise.com\u002Fvous\u002Fmonprojet`), ajoutez un fichier `.onedev-buildspec.yml` à la racine et poussez. OneDev détecte la spécification, met le pipeline en file d'attente et l'exécute dans un conteneur Docker sur votre VPS — sans configuration supplémentaire.",{"type":36,"title":70,"body":71},"Le pipeline OneDev : .onedev-buildspec.yml","OneDev utilise son propre format YAML de pipeline, différent de GitHub Actions ou GitLab CI. La structure de base comprend des `jobs` avec des `steps`. Chaque step peut utiliser une image Docker, exécuter un script, publier un artefact ou envoyer une notification.\n\nExemple minimal pour un projet Node.js :\n\n```\nversion: 36\njobs:\n- name: Build\n  steps:\n  - !CheckoutStep\n    name: checkout\n    cloneCredential: !DefaultCredential {}\n  - !CommandStep\n    name: install and test\n    image: node:20-alpine\n    commands:\n    - npm ci\n    - npm test\n  triggers:\n  - !BranchUpdateTrigger {}\n```\n\nLe concepteur visuel de pipelines génère ce YAML graphiquement : vous ajoutez des étapes depuis l'interface, configurez les images Docker, les variables d'environnement et les déclencheurs, et OneDev écrit le fichier pour vous. C'est utile pour démarrer, même si la plupart des équipes finissent par éditer le YAML directement pour un contrôle plus fin.\n\nLes `!CommandStep` prennent en charge les matrices de build (`matrix`), les artifacts entre étapes (`artifactRequirements`), et les conditions de déclenchement (`branchUpdateTrigger`, `pullRequestTrigger`, `tagCreateTrigger`). Les pipelines peuvent aussi être planifiés via `scheduleTrigger` pour des tâches nocturnes — migrations de base de données, génération de rapports, nettoyage de branches. Un tableau de bord dédié affiche l'état de tous les jobs en temps réel et conserve l'historique complet des exécutions avec les logs horodatés.",{"type":73,"title":74,"headers":75,"rows":79},"comparison","OneDev vs Gitea vs GitLab CE",[5,76,77,78],"OneDev","Gitea","GitLab CE",[80,85,89,92,97,101],[81,82,83,84],"CI\u002FCD intégré","Oui (agent inclus)","Via runner séparé","Oui (runner GitLab)",[86,87,88,87],"Kanban intégré","Oui","Non (plugins tiers)",[90,91,91,91],"Registre de paquets","Docker, npm, Maven…",[93,94,95,96],"RAM typique (1 dev)","~512 Mo au repos","~200 Mo","2 Go minimum",[98,99,99,100],"Licence","MIT","MIT (EE propriétaire)",[102,103,104,87],"Import GitHub\u002FGitLab","Oui (issues + PRs)","Oui (code uniquement)",{"type":36,"title":106,"body":107},"Sauvegarder OneDev","OneDev stocke tout dans deux volumes Docker : `onedev_data` (dépôts Git, config, jobs) et `onedev_db` (base PostgreSQL). Une sauvegarde complète consiste à archiver ces deux volumes.\n\n```\ndocker run --rm \\\n  -v onedev_data:\u002Fdata \\\n  -v \u002Fbackup:\u002Fbackup \\\n  alpine tar czf \u002Fbackup\u002Fonedev-data.tar.gz \u002Fdata\n\ndocker run --rm \\\n  -v onedev_db:\u002Fpgdata \\\n  -v \u002Fbackup:\u002Fbackup \\\n  alpine tar czf \u002Fbackup\u002Fonedev-db.tar.gz \u002Fpgdata\n```\n\nAlternativement, la commande `pg_dump` depuis l'intérieur du conteneur PostgreSQL produit un dump SQL plus portable. Les dépôts Git dans `onedev_data` sont des dépôts bare standard : un `git clone --mirror` vers un stockage externe est une autre stratégie valide pour les dépôts seuls.\n\nOneDev peut aussi configurer des sauvegardes automatiques vers un stockage objet compatible S3 depuis Site Administration → Settings → Backup Settings. Le volume `onedev_data` contient à la fois les dépôts Git et les fichiers de configuration d'OneDev — il est donc plus volumineux que le volume d'une base SQL seule. Estimez 1 Go par dépôt actif pour la fenêtre de rétention de builds CI (logs, artefacts) et prévoyez un stockage objet si vous accumulez beaucoup d'artefacts de build.",{"type":109,"body":110},"tip","Pour accéder à l'interface d'administration de la socket Docker depuis l'extérieur (par exemple pour ajouter des runners distants), ouvrez le port 6610 uniquement sur l'interface loopback — ServOrbit le fait par défaut. N'exposez jamais la socket Docker directement sur une interface publique : elle donne un accès root à la machine hôte.","Voir les VPS Cloud","\u002Fmarketplace\u002Fdeveloppement\u002Fonedev",[114,130,150],{"id":115,"slug":116,"slugs":117,"title":121,"excerpt":122,"readTime":15,"views":16,"isPinned":17,"publishedAt":123,"category":124,"categories":125,"featuredImage":27,"bgImage":28,"posterImage":127,"relatedSolution":128},74,"heberger-gitea",{"fr":116,"en":118,"ar":119,"es":120},"host-gitea-on-your-own-vps","استضافة-gitea-على-خادم-vps-الخاص-بك","alojar-gitea-en-un-vps","Héberger Gitea sur votre propre VPS en 2026","Déployez Gitea sur un VPS avec Docker et SSL. Guide complet : installation, migration vers Forgejo v16 et comparatif gouvernance.","2026-04-07T00:00:00+00:00",{"id":20,"name":21,"slug":22,"color":23,"icon":24},[126],{"id":20,"name":21,"slug":22,"color":23,"icon":24},"\u002Fblog\u002Fcovers\u002Fheberger-gitea-poster.svg",{"categorySlug":31,"appSlug":129},"gitea",{"id":131,"slug":132,"slugs":133,"title":137,"excerpt":138,"readTime":139,"views":16,"isPinned":17,"publishedAt":140,"category":141,"categories":146,"featuredImage":27,"bgImage":28,"posterImage":148,"relatedSolution":149},273,"github-actions-payant-migrer-ci-cd-gitea-forgejo-vps",{"fr":132,"en":134,"ar":135,"es":136},"migrate-cicd-to-gitea-or-forgejo-leave-github-actions","gitea-وforgejo-بديل-github-actions-المدفوع-على-vps","migrar-cicd-a-gitea-o-forgejo-sin-github-actions","Migrer sa CI\u002FCD vers Gitea ou Forgejo : hors GitHub Actions","Depuis mars 2026, GitHub facture les minutes CI sur les dépôts privés. Migrez vers Gitea Actions ou Forgejo sur VPS : mêmes fichiers YAML, coût fixe.",11,"2026-08-16T00:00:00+00:00",{"id":142,"name":143,"slug":144,"color":145,"icon":144},2,"Automatisation","automatisation","bg-brand-action\u002F10 text-brand-action",[147],{"id":142,"name":143,"slug":144,"color":145,"icon":144},"\u002Fblog\u002Fcovers\u002Fgithub-actions-payant-migrer-ci-cd-gitea-forgejo-vps-poster.svg",{"categorySlug":31,"appSlug":129},{"id":151,"slug":152,"slugs":153,"title":157,"excerpt":158,"readTime":159,"views":16,"isPinned":17,"publishedAt":160,"category":161,"categories":166,"featuredImage":27,"bgImage":28,"posterImage":168,"relatedSolution":169},279,"migrer-depots-github-vers-gitea-vps",{"fr":152,"en":154,"ar":155,"es":156},"migrate-your-github-repos-to-self-hosted-gitea-on-a-vps","نقل-مستودعات-github-إلى-gitea-على-خادم-vps-خاص","migrar-repositorios-github-a-gitea-en-un-vps","Migrer ses dépôts GitHub vers Gitea sur VPS","Exportez vos dépôts, issues et labels via l'API GitHub, importez-les dans Gitea en moins d'une heure, redirigez vos remotes — sans perte d'historique.",9,"2026-08-18T00:00:00+00:00",{"id":162,"name":163,"slug":164,"color":165,"icon":164},3,"Déploiement","deploiement","bg-success\u002F10 text-success",[167],{"id":162,"name":163,"slug":164,"color":165,"icon":164},"\u002Fblog\u002Fcovers\u002Fmigrer-depots-github-vers-gitea-vps-poster.svg",{"categorySlug":31,"appSlug":129},1787974966939]