Git Deploy
Reliez votre serveur à un dépôt GitHub, GitLab, Gitea ou Forgejo et déployez automatiquement à chaque push, release ou tag, avec chemins protégés, redémarrages, vérifications CI et retour arrière en un clic.
L'onglet Git Deploy du Portail relie votre serveur à un dépôt Git sur GitHub, GitLab, Gitea ou Forgejo. Ses fichiers sont copiés sur votre serveur automatiquement — à chaque push, lorsque vous publiez une release, lorsque vous poussez un tag, ou d'un simple clic. Si vous le souhaitez, votre serveur est arrêté proprement avant le déploiement, puis redémarré ensuite.
En bref : poussez votre code, et quelques secondes plus tard il tourne sur votre serveur. Plus besoin de téléverser via SFTP, de décompresser des fichiers ZIP dans le gestionnaire de fichiers, ni d'oublier de redémarrer.
Ce que vous allez apprendre
- Comment connecter un dépôt, avec l'app GitHub Daki Git Deploy ou avec un token d'accès
- Quand un déploiement a lieu et comment en lancer un vous-même
- Comment protéger mondes, bases de données et fichiers
.envgrâce aux chemins protégés - Comment fonctionnent les redémarrages, l'historique des déploiements, les retours arrière et le statut dans votre dépôt
- Comment donner les bonnes permissions à votre équipe
Pour qui
- Développeurs de bots Discord et d'apps Node.js, Python ou Java dont le code est déjà sur GitHub ou GitLab.
- Réseaux Minecraft et équipes de serveurs de jeu qui gardent plugins, configurations ou datapacks dans un dépôt et veulent que les changements se déploient de façon traçable.
- Équipes : plusieurs personnes travaillent sur le dépôt, le serveur est toujours à jour, et les permissions des sous-utilisateurs décident précisément qui peut déployer.
- Projets basés sur les releases : seules les versions publiées (par exemple un
.jarfinalisé issu d'une release) arrivent sur le serveur, et non chaque travail en cours.
Avant de commencer
- Un serveur dans le Portail qui affiche l'onglet Git Deploy. Il se trouve dans la navigation du serveur, sous Essentials, juste après Files par défaut.
- Un dépôt sur GitHub (github.com), GitLab (gitlab.com ou votre propre instance, sous-groupes comme
group/subgroup/projectinclus), Gitea ou Forgejo (par exemple Codeberg ou votre propre instance). Les dépôts publics comme privés fonctionnent.
Daki détermine selon le type de serveur (egg) si l'onglet est affiché. Si vous ne voyez pas Git Deploy, il n'est pas activé pour le type de votre serveur.
Ce guide utilise les libellés anglais de l'onglet Git Deploy. L'onglet est disponible en 19 langues et suit la langue choisie dans le Portail — les boutons se trouvent au même endroit dans chaque langue.
Démarrage rapide avec GitHub (recommandé)
La méthode la plus rapide : connectez-vous avec Daki Git Deploy, l'app GitHub officielle de Daki Hosting. Vous vous connectez sur GitHub et choisissez vos dépôts — aucun token ni aucun webhook n'est nécessaire.
Ouvrir l'onglet Git Deploy
Dans le Portail, ouvrez votre serveur et rendez-vous dans l'onglet Git Deploy. Sous Git service, choisissez GitHub.
Connecter votre compte GitHub
Dans l'encadré GitHub access, cliquez sur Connect with GitHub. Connectez-vous sur GitHub et autorisez l'app.
La première fois, GitHub vous amène ensuite directement au choix des dépôts auxquels l'app peut accéder (All repositories ou uniquement les dépôts sélectionnés) — en une seule étape au lieu de deux. Ensuite, vous revenez dans le Portail, et l'encadré GitHub access affiche Connected via Daki Git Deploy as suivi de votre nom GitHub. L'encadré Webhook confirme qu'il n'y a rien à configurer : les push et les releases arrivent par l'app toutes seules.
Choisir votre dépôt et votre branche
Cliquez sur Choose from my repositories et sélectionnez votre dépôt, ou collez son URL web ou de clonage, ou saisissez le chemin. Cliquez sur Load branches et choisissez la branche à déployer. Laissez le champ de branche vide pour utiliser la branche par défaut du dépôt.
Choisir quand et comment déployer
Sous When to deploy, choisissez un mode (par exemple Every push). Définissez ensuite le dossier cible, vos chemins protégés et le comportement au redémarrage.
Enregistrer
Cliquez sur Save settings dans la barre en bas. C'est tout : l'en-tête de l'onglet affiche Automatic deploys on, et votre prochain push sera déployé automatiquement. Pour déployer tout de suite, cliquez sur Deploy now en haut à droite.
- Autoriser un autre dépôt : Choose repositories on GitHub rouvre la sélection des dépôts sur GitHub, où vous choisissez les dépôts auxquels Daki Git Deploy peut accéder.
- Supprimer la connexion : cliquez sur Disconnect. Le serveur ne déploie alors plus depuis les dépôts privés.
Vous n'avez jamais rien à renouveler. Pour chaque déploiement, le Portail récupère auprès de GitHub une clé fraîche et à courte durée de vie (valide 1 heure), qui n'atteint que le dépôt de votre serveur. Cela se fait en arrière-plan.
Démarrage rapide avec un token d'accès
Pour GitLab, Gitea et Forgejo — et pour GitHub si vous le préférez — vous enregistrez un token d'accès personnel. Les dépôts publics fonctionnent sans aucun token.
Choisir le service Git
Ouvrez votre serveur → Git Deploy et choisissez le Git service. Pour votre propre instance GitLab, Gitea ou Forgejo, saisissez l'URL du serveur (par exemple
https://codeberg.orgouhttps://git.example.com). Pour gitlab.com, laissez ce champ vide.Saisir le dépôt
Saisissez le dépôt sous forme de chemin (
owner/name) ou collez simplement son URL web ou de clonage. Pour un dépôt public, c'est tout ce qu'il faut — sans token, la zone d'accès affiche No token – public repositories only.Enregistrer un token pour les dépôts privés
Avec GitHub, cliquez d'abord sur Use an own access token instead dans la zone GitHub access. Puis créez un token chez votre fournisseur Git — le lien Create a token on … du Portail vous mène directement à la bonne page — et enregistrez-le sous Personal access token. Le Portail vérifie le token immédiatement. Voir Permissions du token pour les droits nécessaires.
Choisir vos paramètres et enregistrer
Choisissez quand déployer, le dossier cible, les chemins protégés et le comportement au redémarrage, puis cliquez sur Save settings.
Ajouter le webhook
L'encadré Webhook affiche la Payload URL et le Secret, chacun avec un bouton de copie. Ajoutez-les à votre dépôt comme décrit dans Configurer le webhook. Sous l'encadré, Last delivery indique ensuite si le webhook arrive.
Activer les déploiements automatiques
Activez Automatic deploys active.
Permissions du token
| Fournisseur | Type de token | Droits pour les déploiements | Également nécessaire pour le statut dans votre dépôt |
|---|---|---|---|
| GitHub | Token à permissions fines, uniquement pour ce dépôt | Contents: Read-only (pour Wait for CI checks, également Actions: Read-only) | Commit statuses et Deployments : Read and write |
| GitLab | Token d'accès personnel, de projet ou de groupe | read_api + read_repository | api à la place de read_api, rôle Developer |
| Gitea / Forgejo | Settings → Applications | repository: Read, user: Read | repository: Read and Write |
Si seule l'autorisation d'écriture pour le statut manque, votre serveur est tout de même déployé — le journal de déploiement affiche une remarque.
Configurer le webhook
Dans votre dépôt, allez dans Settings → Webhooks → Add webhook :
- Collez la Payload URL et le Secret depuis le Portail.
- Définissez le content type sur
application/json. - Dans les événements, choisissez Just the push event. En mode release, choisissez plutôt Releases.
Dans votre projet, allez dans Settings → Webhooks :
- Collez la Payload URL comme URL et le Secret sous Secret token.
- Dans les déclencheurs, sélectionnez Push events. En mode tag, sélectionnez Tag push events ; en mode release, Releases events.
Dans votre dépôt, allez dans Settings → Webhooks → Add webhook et choisissez Gitea ou Forgejo :
- Collez la Payload URL, définissez le content type sur
application/jsonet saisissez le Secret. - Choisissez Push events, ou en mode release Custom events → Release.
Votre fournisseur Git ne peut pas joindre le Portail, par exemple parce que votre instance Gitea tourne sur votre réseau domestique ? Choisissez plutôt un intervalle sous Also check … for updates (par exemple Also check Gitea for updates). La première vérification déploie une fois l'état actuel.
Quand un déploiement a lieu
Sous When to deploy, choisissez l'un des quatre modes :
| Mode | Ce qui est déployé |
|---|---|
| Manual | Uniquement lorsqu'une personne clique sur Deploy now. |
| Every push | Chaque push vers la branche choisie. |
| Releases | Uniquement lorsqu'une release est publiée. Déployez soit le source code de la release, soit un release file (par exemple *.jar) — éventuellement enregistré sous un nom fixe (par exemple server.jar) et éventuellement extrait s'il s'agit d'un .zip. Les pré-releases peuvent être incluses ou exclues. |
| Tags | Lorsqu'un tag correspondant à un motif est poussé, par exemple v*. |
Déclencheurs
- Webhook : votre fournisseur Git signale les changements immédiatement, et le déploiement démarre en quelques secondes. Avec l'app GitHub, cela se fait automatiquement, sans webhook de votre part.
- Vérifications de mises à jour (polling) : facultatives, pour les cas où votre fournisseur Git ne peut pas joindre le Portail. Intervalles de 5 minutes à 1 jour.
- Deploy now : à tout moment, d'un simple clic. En mode release, vous pouvez choisir une release précise.
- Ignorer un push : mettez
[skip deploy]dans le message de commit et ce push n'est pas déployé.[deploy skip]et[no deploy]fonctionnent aussi.
Attendre les vérifications CI
Lorsque Wait for CI checks est activé (uniquement en mode Every push), un commit n'est déployé qu'une fois que sa CI est au vert — GitHub Actions, GitLab CI et Gitea/Forgejo Actions sont pris en charge. Si la CI échoue, le déploiement est ignoré.
Tous les paramètres expliqués
| Section | Paramètre | Ce qu'il fait |
|---|---|---|
| Dépôt | Git service | GitHub, GitLab, Gitea ou Forgejo |
| Dépôt | Server URL | Uniquement pour les instances auto-hébergées ; doit être accessible depuis Internet |
| Dépôt | Repository | owner/name ou une URL ; Choose from my repositories affiche une liste |
| Dépôt | Branch | Vide = branche par défaut ; Load branches affiche une liste |
| Quand déployer | Manual / Every push / Releases / Tags | Voir Quand un déploiement a lieu |
| Quand déployer | Wait for CI checks | Uniquement avec Every push |
| Quand déployer | Include pre-releases, What to deploy (Source code / Release file), Save as, Extract .zip files instead of uploading them | Uniquement avec Releases |
| Quand déployer | Tag pattern | Uniquement avec Tags, par exemple v* ; vide = chaque tag |
| Quand déployer | Also check … for updates (selon le nom de votre service Git, par exemple Also check GitHub for updates) | Polling : Never (webhook only), 5/10/15/30 min, 1/3/6/12/24 h |
| Quand déployer | Automatic deploys active | Désactivé, met en pause le webhook et le polling ; Deploy now continue de fonctionner |
| Quand déployer | Show deploys in the repository | Statut sur le commit, voir Statut dans votre dépôt |
| Fichiers | Folder in the repository | Ne déployer qu'un sous-dossier, par exemple dist ; vide = tout |
| Fichiers | Target folder on the server | Destination des fichiers ; / = le dossier principal de votre serveur |
| Fichiers | Protected paths | Une règle par ligne, voir Chemins protégés |
| Fichiers | Remove files that were deleted from the repository | Nettoyage facultatif, voir ci-dessous |
| Redémarrage | Restart if running / Always start / Do not restart | Voir Comportement au redémarrage |
| Redémarrage | If the server does not stop | Arrêt immédiat, ou après 5 s, 10 s (par défaut : Kill after 10 seconds), 15 s, 30 s, 1 min, 2 min ou 5 min |
Les modifications ne prennent effet qu'après un clic sur Save settings. Tant que quelque chose n'est pas enregistré, une barre en bas affiche Discard et Save settings, et Deploy now est verrouillé.
Remove files that were deleted from the repository ne supprime que les fichiers qu'un déploiement précédent a écrits lui-même — jamais les chemins protégés, ni les fichiers que vous avez créés vous-même. Les dossiers vides restent en place.
Chemins protégés
Les fichiers et dossiers listés sous Protected paths ne sont jamais écrasés ni supprimés par un déploiement. S'ils n'existent pas encore, ils sont créés une seule fois. Idéal pour les mondes de jeu, les bases de données et les mots de passe.
Écrivez une règle par ligne, par rapport au dossier cible. Les lignes vides et les lignes commençant par # sont ignorées. * ne correspond jamais au-delà d'un /.
| Règle | Protège |
|---|---|
world/ | Chaque dossier nommé world, à n'importe quelle profondeur |
/world/ | Uniquement world directement dans le dossier cible |
*.db | Chaque fichier se terminant par .db, partout |
.env | Chaque fichier nommé .env, partout |
/config.yml | Uniquement config.yml directement dans le dossier cible |
plugins/*/config.yml | config.yml dans chaque sous-dossier direct de plugins |
Exemples typiques :
world/
world_nether/
world_the_end/
plugins/*/config.yml
whitelist.json
ops.json
banned-*.json.env
*.db
*.sqlite
node_modules/
data/.env
*.db
venv/Comportement au redémarrage
| Option | Ce qui se passe |
|---|---|
| Restart if running | Le serveur est arrêté avant l'écriture des fichiers et redémarré ensuite. Un serveur éteint reste éteint. |
| Always start | Comme ci-dessus, et un serveur éteint est démarré après le déploiement. |
| Do not restart | Les fichiers sont remplacés pendant que le serveur continue de tourner. |
If the server does not stop: certains programmes, en particulier les apps Node.js, ignorent le signal d'arrêt. Le serveur est alors arrêté de force après le délai choisi (immédiatement, de 5 secondes à 5 minutes ; Kill after 10 seconds par défaut) pour que le déploiement ne reste pas bloqué. L'arrêt forcé immédiat est le plus rapide, mais ne laisse aucun délai au serveur pour enregistrer ses données.
Deux filets de sécurité : si le serveur ne s'éteint pas du tout, aucun fichier n'est modifié. Si le déploiement échoue après l'arrêt du serveur, le serveur est redémarré.
Déroulement d'un déploiement
- Un déclencheur (push, release, tag, vérification de mise à jour ou bouton) crée un déploiement.
- Si Wait for CI checks est activé, il attend que les vérifications CI soient au vert (Waiting).
- Le Portail télécharge l'archive depuis votre fournisseur Git. Vos identifiants ne quittent jamais le Portail et n'arrivent jamais sur votre serveur.
- L'archive est préparée : seul le dossier choisi est conservé, les chemins protégés sont filtrés et les contenus non sûrs, comme les liens symboliques, sont écartés.
- Selon vos paramètres, le serveur est arrêté (et arrêté de force après le délai choisi si nécessaire).
- Les fichiers sont écrits dans le dossier cible ; éventuellement, les fichiers supprimés sont retirés.
- Selon vos paramètres, le serveur est redémarré.
- Le résultat et le journal complet apparaissent dans l'historique — et, si c'est activé, sous forme de statut sur le commit.
Un déploiement prend généralement 10 à 40 secondes, auquel s'ajoute le temps nécessaire à l'arrêt de votre serveur.
Historique, journaux et rollback
La liste Deployments en bas de l'onglet affiche chaque déploiement avec son statut, sa branche et son commit (par exemple main @ 75cd0a1), son numéro, son déclencheur, la personne qui l'a lancé, l'heure et le message du commit. L'en-tête de l'onglet indique quand le serveur a été déployé pour la dernière fois.
| Statut | Signification |
|---|---|
| Waiting | Attente des vérifications CI |
| Scheduled | En file d'attente, démarre sous peu |
| Running | Le déploiement est en cours |
| Deployed | Terminé avec succès |
| Failed | Une erreur s'est produite — le journal indique laquelle |
| Skipped | Non déployé, par exemple parce que la CI a échoué ou que le commit contient [skip deploy] |
| Cancelled | Annulé avant son démarrage |
- Journal : chaque déploiement dispose d'un journal en direct, qui se met à jour pendant son exécution. Hide log le referme.
- Rollback en un clic : cliquez sur Deploy again sur un déploiement antérieur pour redéployer cet état une fois de plus.
- Annuler : les déploiements en attente ou planifiés peuvent être annulés.
Plusieurs serveurs peuvent déployer en même temps, mais chaque serveur n'exécute qu'un seul déploiement à la fois. Un nouveau déclencheur remplace un déploiement plus ancien encore en attente.
Statut dans votre dépôt
Lorsque Show deploys in the repository est activé, votre commit affiche un statut Daki Hosting / le nom de votre serveur : jaune pendant le déploiement, puis une coche verte ou une croix rouge, avec un lien vers l'onglet Git Deploy.
- Sur GitHub, un déploiement apparaît aussi sous Deployments, avec le nom de votre serveur comme environnement.
- Avec l'app GitHub, le statut est écrit par Daki Git Deploy et affiche son logo ; rien d'autre à configurer. Avec un token, il affiche l'image du compte auquel appartient le token, et le token a besoin des permissions d'écriture (voir Permissions du token).
- Vous pouvez le désactiver serveur par serveur. Seuls le statut et le lien sont publics — aucun journal ni détail d'erreur.
Équipes et permissions des sous-utilisateurs
Les sous-utilisateurs disposent de leur propre groupe de permissions Git Deploy :
| Permission | Autorise |
|---|---|
view (github.read) | Voir les paramètres, l'adresse du webhook et l'historique avec les journaux |
deploy (github.deploy) | Deploy now, Deploy again et l'annulation des déploiements |
change settings (github.update) | Dépôt, accès, webhook et tous les paramètres |
Les sous-utilisateurs n'ont aucun accès à Git Deploy par défaut — c'est vous qui décidez qui obtient quelle permission. Le propriétaire du serveur peut toujours tout faire.
Sécurité
- Les tokens et secrets sont stockés chiffrés et ne sont jamais envoyés à votre navigateur.
- Avec l'app GitHub, aucun token de longue durée à vous n'est utilisé pour les déploiements : chaque déploiement utilise une clé à courte durée de vie (1 heure) qui n'atteint que le dépôt de votre serveur.
- Vos propres accès GitHub déterminent les dépôts que vous pouvez connecter. Personne ne peut faire venir sur son serveur les dépôts d'une autre personne.
- Les webhooks sont signés avec un secret propre à chaque serveur. Les envois avec un mauvais secret ou pour un autre dépôt sont rejetés.
- Seule la personne qui a enregistré le token peut modifier le dépôt, ainsi les sous-utilisateurs ne peuvent pas utiliser le token du propriétaire pour charger d'autres dépôts privés.
- Si vous changez le Git service ou l'URL du serveur, le token enregistré est supprimé automatiquement à l'enregistrement.
- Les chemins protégés ne sont jamais écrasés, et Remove files that were deleted from the repository ne supprime que ce qu'Git Deploy a écrit lui-même.
- Le statut public dans votre dépôt ne contient ni journal ni détail d'erreur.
Limites connues
- Un dépôt et un accès par serveur.
- Chaque serveur n'exécute qu'un déploiement à la fois.
- Le statut dans votre dépôt n'apparaît qu'une fois le déploiement réellement démarré, et non pendant l'attente de la CI.
- Les fichiers de release ne sont extraits que s'il s'agit de fichiers
.zip; un.tar.gzest téléversé comme fichier. - Les dossiers vides restent en place après Remove files that were deleted from the repository.
- Les liens symboliques du dépôt ne sont pas déployés.
- GitLab n'a pas de pré-releases ; une release datée dans le futur compte comme pré-release.
- GitLab : les fichiers de release téléversés dans le projet (
/uploads/…) ne peuvent pas être téléchargés avec un token depuis des projets privés ; les liens vers le registre de paquets fonctionnent. - Connect with GitHub n'est disponible que pour GitHub ; GitLab, Gitea et Forgejo utilisent un token.
FAQ et dépannage
Dois-je renouveler mon token régulièrement ?
Pas avec l'app GitHub : le Portail récupère automatiquement une clé fraîche pour chaque déploiement. Un token personnel reste valide aussi longtemps que vous l'avez défini lors de sa création chez votre fournisseur Git ; à expiration, enregistrez simplement un nouveau token.
Mon dépôt n'apparaît pas dans la liste (app GitHub)
Cliquez sur Choose repositories on GitHub et autorisez l'app à accéder au dépôt.
Le déploiement reste sur Scheduled
Patientez un instant. Si la situation persiste plus de quelques minutes, veuillez contacter le support.
Le webhook n'arrive pas, ou GitHub affiche l'erreur 401
Le secret ne correspond pas. Copiez le secret depuis le Portail et saisissez-le à nouveau dans le webhook. New secret en crée un nouveau — modifiez-le ensuite aussi chez votre fournisseur Git.
Pourquoi mon déploiement a-t-il été ignoré ?
Raisons possibles : les vérifications CI ont échoué, le message de commit contient [skip deploy], ou un déclencheur plus récent a remplacé un déploiement encore en attente. La raison est affichée dans la ligne du déploiement.
Je ne vois aucun statut sur mon commit
Show deploys in the repository doit être activé. Avec un token, celui-ci a aussi besoin des permissions d'écriture (voir Permissions du token) — le journal de déploiement indique la raison.
Le déploiement échoue avec « The node rejected the request »
Le type de votre serveur n'autorise pas certains fichiers, ou le disque est plein. Le journal affiche les détails.
L'URL de mon instance Gitea est refusée
Les instances auto-hébergées doivent être accessibles depuis Internet. Les adresses d'un réseau domestique, comme 192.168.x.x, ne fonctionnent pas.
Comment faire un rollback ?
Dans l'historique, cliquez sur Deploy again sur le déploiement antérieur auquel vous voulez revenir.
Mon monde de jeu ou ma base de données seront-ils écrasés ?
Non, s'ils sont listés sous Protected paths (par exemple world/ ou *.db).
Qui dans mon équipe peut déployer ?
Seules les personnes disposant de la permission deploy dans le groupe Git Deploy des paramètres de sous-utilisateurs du serveur. Le propriétaire du serveur peut toujours tout faire.
Étapes suivantes
- Subusers — Donnez accès à votre équipe et décidez qui peut déployer.
- Variables d'environnement — Gardez tokens et mots de passe hors de votre dépôt.
- Paramètres de démarrage — Définissez la commande de démarrage avec laquelle tourne votre code déployé.
- Sauvegardes — Enregistrez des sauvegardes automatiques de votre serveur sur Google Drive.