Compare commits
2 Commits
6f3b3888a2
...
25b0a2fcfa
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
25b0a2fcfa | ||
|
|
e764d1dc3d |
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"
|
||||
4
Makefile
4
Makefile
@@ -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'
|
||||
|
||||
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