Compare commits

..

2 Commits

Author SHA1 Message Date
BeauTroll
25b0a2fcfa Add Gitea Actions for automatic deployment
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>
2025-12-16 09:13:58 +01:00
BeauTroll
e764d1dc3d Remove useless aliases 2025-12-16 09:12:40 +01:00
5 changed files with 291 additions and 5 deletions

View 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"

View File

@@ -129,7 +129,3 @@ quick-setup: ## Configuration rapide (copie .env.example vers .env)
echo "$(YELLOW)Le fichier .env existe déjà$(NC)"; \
fi
# Alias pratiques
backup-now: backup ## Alias pour 'backup'
ls: list ## Alias pour 'list'
check-health: healthcheck ## Alias pour 'healthcheck'

View File

@@ -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)

View File

@@ -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
View 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)