Added workflow to automatically deploy configuration changes when pushing to main branch. Includes comprehensive documentation for setting up SSH keys, configuring secrets, and troubleshooting deployments. đ€ Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
6.6 KiB
Déploiement Automatique avec Gitea Actions
Ce document explique comment configurer le déploiement automatique de la configuration Borgmatic via Gitea Actions.
Fonctionnement
Lorsque vous poussez des modifications sur la branche main, Gitea Actions va automatiquement :
- Se connecter au serveur de production via SSH
- Faire un
git pullpour récupérer les derniers changements - Exécuter
make installpour installer la nouvelle configuration
Configuration Initiale
1. Préparer une Clé SSH de Déploiement
Sur votre machine locale (pas sur le serveur), créez une paire de clés SSH dédiée au déploiement :
# Générer une clé Ed25519 pour le déploiement
ssh-keygen -t ed25519 -C "gitea-deploy-borgmatic" -f ~/.ssh/gitea-deploy-borgmatic
# Afficher la clé publique
cat ~/.ssh/gitea-deploy-borgmatic.pub
# Afficher la clé privée (à copier dans les secrets Gitea)
cat ~/.ssh/gitea-deploy-borgmatic
2. Installer la Clé Publique sur le Serveur
Connectez-vous au serveur et ajoutez la clé publique :
# Sur le serveur
mkdir -p ~/.ssh
chmod 700 ~/.ssh
# Ajouter la clé publique aux clés autorisées
echo "VOTRE_CLE_PUBLIQUE" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
Ou utilisez ssh-copy-id :
# Depuis votre machine locale
ssh-copy-id -i ~/.ssh/gitea-deploy-borgmatic.pub user@server
3. Tester la Connexion SSH
Vérifiez que la connexion fonctionne sans mot de passe :
ssh -i ~/.ssh/gitea-deploy-borgmatic user@server
Si cela fonctionne, vous pouvez continuer.
4. Configurer les Secrets dans Gitea
Dans votre repository Gitea, allez dans Settings â Secrets et ajoutez les secrets suivants :
| Nom du Secret | Valeur | Description |
|---|---|---|
SERVER_HOST |
votre-serveur.example.com ou IP |
Adresse du serveur |
SERVER_USER |
root ou votre utilisateur |
Nom d'utilisateur SSH |
SSH_PRIVATE_KEY |
Contenu de ~/.ssh/gitea-deploy-borgmatic |
Clé privée SSH (tout le fichier) |
SSH_PORT |
22 |
Port SSH (optionnel, 22 par défaut) |
Important : Pour SSH_PRIVATE_KEY, copiez TOUT le contenu du fichier, y compris les lignes -----BEGIN OPENSSH PRIVATE KEY----- et -----END OPENSSH PRIVATE KEY-----.
5. Activer Gitea Actions
Assurez-vous que Gitea Actions est activé sur votre instance Gitea :
-
Dans le fichier de configuration de Gitea (
app.ini), vérifiez :[actions] ENABLED = true -
Redémarrez Gitea si nécessaire
-
Vérifiez qu'un runner Gitea Actions est configuré et en cours d'exécution
Structure du Workflow
Le fichier .gitea/workflows/deploy.yml se trouve dans ce repository (pas dans Gitea) :
agence66-borgmatic/
âââ .gitea/
â âââ workflows/
â âââ deploy.yml â Workflow de dĂ©ploiement
âââ config.yaml
âââ Makefile
âââ ...
C'est similaire Ă GitHub Actions qui utilise .github/workflows/.
Utilisation
Une fois configuré, le déploiement est automatique :
- Faites vos modifications localement
- Committez et poussez :
git add . git commit -m "Update configuration" git push origin main - Gitea Actions se déclenche automatiquement
- Consultez l'onglet Actions dans votre repository Gitea pour voir le statut
Vérification du Déploiement
AprÚs chaque déploiement, vous pouvez vérifier :
# Sur le serveur
cd /opt/borgmatic
git log -1 # Voir le dernier commit
sudo borgmatic config validate # Valider la configuration
Déploiement Manuel (si besoin)
Si vous devez déployer manuellement sans passer par Gitea Actions :
# Sur le serveur
cd /opt/borgmatic
git pull origin main
make install
Ou utilisez le script dédié :
sudo /opt/borgmatic/scripts/deploy.sh
Sécurité
Bonnes Pratiques
- Clé SSH dédiée : Utilisez une clé SSH spécifique pour le déploiement (ne réutilisez pas votre clé personnelle)
- Permissions minimales : L'utilisateur de déploiement ne devrait avoir accÚs qu'au dossier
/opt/borgmatic - Secrets protégés : Les secrets Gitea sont chiffrés et ne sont jamais exposés dans les logs
- Restriction de commandes : Vous pouvez limiter les commandes SSH autorisées dans
~/.ssh/authorized_keys
Restreindre les Commandes SSH (Optionnel)
Pour plus de sécurité, vous pouvez restreindre la clé de déploiement à exécuter uniquement le script de déploiement :
Ăditez ~/.ssh/authorized_keys sur le serveur :
command="/opt/borgmatic/scripts/deploy.sh",no-port-forwarding,no-X11-forwarding,no-agent-forwarding ssh-ed25519 AAAAC3... gitea-deploy-borgmatic
Puis modifiez le workflow pour simplement se connecter (le script s'exécutera automatiquement).
Dépannage
Le workflow ne se déclenche pas
- Vérifiez que Gitea Actions est activé dans
app.ini - Vérifiez qu'un runner est en cours d'exécution
- Consultez les logs de Gitea
Erreur d'authentification SSH
Permission denied (publickey)
- Vérifiez que la clé publique est bien dans
~/.ssh/authorized_keyssur le serveur - Vérifiez les permissions :
~/.sshdoit ĂȘtre 700,authorized_keysdoit ĂȘtre 600 - VĂ©rifiez que vous avez copiĂ© toute la clĂ© privĂ©e dans le secret
SSH_PRIVATE_KEY
Le script ne trouve pas le repository
cd: /opt/borgmatic: No such file or directory
- Assurez-vous que le repository est cloné dans
/opt/borgmaticsur le serveur - Vérifiez le chemin dans le workflow
.gitea/workflows/deploy.yml
Permission denied lors de make install
- Le script nécessite
sudopour installer les fichiers dans/etc/borgmatic - Assurez-vous que l'utilisateur de déploiement peut exécuter
make installavec sudo - Ou ajoutez
sudodans le workflow (nécessite configuration sudoers)
Logs et Monitoring
- Logs Gitea Actions : Consultez l'onglet "Actions" dans votre repository Gitea
- Logs serveur :
journalctl -xepour voir les logs systĂšme - Logs Git :
cd /opt/borgmatic && git logpour voir l'historique
Alternative : Déploiement Manuel
Si vous préférez ne pas utiliser Gitea Actions, vous pouvez :
- Désactiver le workflow en renommant
.gitea/workflows/deploy.ymlen.gitea/workflows/deploy.yml.disabled - Déployer manuellement avec :
ssh server 'cd /opt/borgmatic && git pull && make install' - Ou utiliser un simple cron job pour vérifier les mises à jour