Add Gitea Actions for automatic deployment
Some checks failed
Deploy Borgmatic Configuration / Deploy to Production Server (push) Has been cancelled
Some checks failed
Deploy Borgmatic Configuration / Deploy to Production Server (push) Has been cancelled
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>
This commit is contained in:
27
.gitea/workflows/deploy.yml
Normal file
27
.gitea/workflows/deploy.yml
Normal file
@@ -0,0 +1,27 @@
|
||||
name: Deploy Borgmatic Configuration
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
|
||||
jobs:
|
||||
deploy:
|
||||
runs-on: ubuntu-latest
|
||||
name: Deploy to Production Server
|
||||
|
||||
steps:
|
||||
- name: Deploy via SSH
|
||||
uses: appleboy/ssh-action@v1.0.3
|
||||
with:
|
||||
host: ${{ secrets.SERVER_HOST }}
|
||||
username: ${{ secrets.SERVER_USER }}
|
||||
key: ${{ secrets.SSH_PRIVATE_KEY }}
|
||||
port: ${{ secrets.SSH_PORT || 22 }}
|
||||
script: |
|
||||
cd /opt/borgmatic
|
||||
echo "📥 Pulling latest changes from Git..."
|
||||
git pull origin main
|
||||
echo "🔧 Installing configuration..."
|
||||
make install
|
||||
echo "✅ Deployment completed successfully"
|
||||
44
README.md
44
README.md
@@ -16,6 +16,7 @@ Ce dépôt contient la configuration complète pour effectuer des backups automa
|
||||
- **Notifications** via ntfy pour succès/échec
|
||||
- **Compatible** avec les backups Borg existants
|
||||
- **Sécurisé** : chiffrement, exclusions de fichiers sensibles
|
||||
- **Déploiement automatique** via Gitea Actions lors d'un push Git
|
||||
|
||||
## Dossiers sauvegardés
|
||||
|
||||
@@ -88,6 +89,49 @@ sudo systemctl enable borgmatic.timer
|
||||
sudo systemctl start borgmatic.timer
|
||||
```
|
||||
|
||||
## Déploiement Automatique
|
||||
|
||||
Ce repository inclut un workflow Gitea Actions pour déployer automatiquement les modifications sur le serveur lors d'un push Git.
|
||||
|
||||
### Configuration du déploiement automatique
|
||||
|
||||
1. **Générer une clé SSH de déploiement**
|
||||
```bash
|
||||
ssh-keygen -t ed25519 -C "gitea-deploy-borgmatic" -f ~/.ssh/gitea-deploy-borgmatic
|
||||
```
|
||||
|
||||
2. **Installer la clé publique sur le serveur**
|
||||
```bash
|
||||
ssh-copy-id -i ~/.ssh/gitea-deploy-borgmatic.pub user@server
|
||||
```
|
||||
|
||||
3. **Configurer les secrets dans Gitea**
|
||||
|
||||
Allez dans **Settings → Secrets** de votre repository et ajoutez :
|
||||
- `SERVER_HOST` : adresse du serveur
|
||||
- `SERVER_USER` : utilisateur SSH
|
||||
- `SSH_PRIVATE_KEY` : contenu de `~/.ssh/gitea-deploy-borgmatic` (clé privée complète)
|
||||
- `SSH_PORT` : port SSH (optionnel, 22 par défaut)
|
||||
|
||||
4. **Activer Gitea Actions**
|
||||
|
||||
Vérifiez que Gitea Actions est activé dans votre instance Gitea (`app.ini` : `[actions] ENABLED = true`)
|
||||
|
||||
### Utilisation
|
||||
|
||||
Une fois configuré, chaque push sur `main` déclenche automatiquement :
|
||||
```bash
|
||||
cd /opt/borgmatic
|
||||
git pull origin main
|
||||
make install
|
||||
```
|
||||
|
||||
Consultez l'onglet **Actions** dans votre repository Gitea pour voir le statut du déploiement.
|
||||
|
||||
### Documentation détaillée
|
||||
|
||||
Pour plus d'informations sur la configuration du déploiement automatique, consultez [docs/GITEA-ACTIONS.md](docs/GITEA-ACTIONS.md).
|
||||
|
||||
## Configuration
|
||||
|
||||
### Variables d'environnement (.env)
|
||||
|
||||
5
TODO.md
5
TODO.md
@@ -5,6 +5,8 @@
|
||||
- [ ] Tester le premier backup complet
|
||||
- [ ] Vérifier que les notifications ntfy fonctionnent
|
||||
- [ ] Documenter la passphrase et sauvegarder la clé Borg
|
||||
- [ ] Configurer les secrets Gitea Actions pour le déploiement automatique
|
||||
- [ ] Tester le déploiement automatique via Git push
|
||||
|
||||
## Priorité moyenne
|
||||
|
||||
@@ -62,7 +64,8 @@
|
||||
- [ ] Tests automatisés de la configuration
|
||||
- [ ] Simulation d'échec et vérification des alertes
|
||||
- [ ] Test de restauration automatisé
|
||||
- [ ] CI/CD pour valider les modifications de config
|
||||
- [x] CI/CD pour déploiement automatique (Gitea Actions)
|
||||
- [ ] Ajouter validation de config dans le workflow CI/CD
|
||||
|
||||
## Notes
|
||||
|
||||
|
||||
216
docs/GITEA-ACTIONS.md
Normal file
216
docs/GITEA-ACTIONS.md
Normal file
@@ -0,0 +1,216 @@
|
||||
# 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 :
|
||||
1. Se connecter au serveur de production via SSH
|
||||
2. Faire un `git pull` pour récupérer les derniers changements
|
||||
3. Exécuter `make install` pour 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 :
|
||||
|
||||
```bash
|
||||
# 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 :
|
||||
|
||||
```bash
|
||||
# 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` :
|
||||
|
||||
```bash
|
||||
# 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 :
|
||||
|
||||
```bash
|
||||
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 :
|
||||
|
||||
1. Dans le fichier de configuration de Gitea (`app.ini`), vérifiez :
|
||||
```ini
|
||||
[actions]
|
||||
ENABLED = true
|
||||
```
|
||||
|
||||
2. Redémarrez Gitea si nécessaire
|
||||
|
||||
3. 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** :
|
||||
|
||||
1. Faites vos modifications localement
|
||||
2. Committez et poussez :
|
||||
```bash
|
||||
git add .
|
||||
git commit -m "Update configuration"
|
||||
git push origin main
|
||||
```
|
||||
3. Gitea Actions se déclenche automatiquement
|
||||
4. 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 :
|
||||
|
||||
```bash
|
||||
# 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 :
|
||||
|
||||
```bash
|
||||
# Sur le serveur
|
||||
cd /opt/borgmatic
|
||||
git pull origin main
|
||||
make install
|
||||
```
|
||||
|
||||
Ou utilisez le script dédié :
|
||||
|
||||
```bash
|
||||
sudo /opt/borgmatic/scripts/deploy.sh
|
||||
```
|
||||
|
||||
## Sécurité
|
||||
|
||||
### Bonnes Pratiques
|
||||
|
||||
1. **Clé SSH dédiée** : Utilisez une clé SSH spécifique pour le déploiement (ne réutilisez pas votre clé personnelle)
|
||||
2. **Permissions minimales** : L'utilisateur de déploiement ne devrait avoir accès qu'au dossier `/opt/borgmatic`
|
||||
3. **Secrets protégés** : Les secrets Gitea sont chiffrés et ne sont jamais exposés dans les logs
|
||||
4. **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 :
|
||||
|
||||
```bash
|
||||
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_keys` sur le serveur
|
||||
- Vérifiez les permissions : `~/.ssh` doit être 700, `authorized_keys` doit ê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/borgmatic` sur le serveur
|
||||
- Vérifiez le chemin dans le workflow `.gitea/workflows/deploy.yml`
|
||||
|
||||
### Permission denied lors de make install
|
||||
|
||||
- Le script nécessite `sudo` pour installer les fichiers dans `/etc/borgmatic`
|
||||
- Assurez-vous que l'utilisateur de déploiement peut exécuter `make install` avec sudo
|
||||
- Ou ajoutez `sudo` dans le workflow (nécessite configuration sudoers)
|
||||
|
||||
## Logs et Monitoring
|
||||
|
||||
- **Logs Gitea Actions** : Consultez l'onglet "Actions" dans votre repository Gitea
|
||||
- **Logs serveur** : `journalctl -xe` pour voir les logs système
|
||||
- **Logs Git** : `cd /opt/borgmatic && git log` pour voir l'historique
|
||||
|
||||
## Alternative : Déploiement Manuel
|
||||
|
||||
Si vous préférez ne pas utiliser Gitea Actions, vous pouvez :
|
||||
|
||||
1. Désactiver le workflow en renommant `.gitea/workflows/deploy.yml` en `.gitea/workflows/deploy.yml.disabled`
|
||||
2. Déployer manuellement avec : `ssh server 'cd /opt/borgmatic && git pull && make install'`
|
||||
3. Ou utiliser un simple cron job pour vérifier les mises à jour
|
||||
|
||||
## Références
|
||||
|
||||
- [Documentation Gitea Actions](https://docs.gitea.io/en-us/actions/)
|
||||
- [SSH Action GitHub](https://github.com/appleboy/ssh-action)
|
||||
Reference in New Issue
Block a user