Situatie
Backup la configurările Docker pe Raspberry Pi folosind GitHub prin SSH
Dacă rulezi mai multe containere pe un Raspberry Pi, fișierele de configurare (în special docker-compose.yml) sunt cele mai importante de salvat.
Ce salvăm (și ce NU salvăm)
- Salvăm: fișierele
docker-compose.yml, scripturile, fișierele de configurare statice. - NU salvăm: volumele cu date (baze de date, fișiere mari) și secretele din
.env(parole, token-uri). Acestea se exclud prin.gitignore.
Solutie
1. Generăm o cheie SSH pe Raspberry Pi
ssh-keygen -t ed25519 -C "raspberrypi-backup"
Apasă Enter pentru locația implicită. Apoi afișează cheia publică:
cat ~/.ssh/id_ed25519.pub
2. Adăugăm cheia în GitHub
Copiază tot ce a afișat comanda de mai sus și mergi în GitHub la Settings → SSH and GPG keys → New SSH key. Lipește cheia și salvează.
Testează conexiunea de pe Pi:
ssh -T git@github.com
Ar trebui să primești un mesaj de tip „Hi username! You’ve successfully authenticated”.
3. Creăm un repository privat pe GitHub
Creează un repo nou (de exemplu docker-backup) și bifează Private. Nu adăuga README, ca să eviți conflictele la primul push.
4. Inițializăm git în folderul cu configurări
cd ~/docker
git init
git branch -M main
git remote add origin git@github.com:USERNAME/docker-backup.git
5. Excludem fișierele sensibile
Creează un fișier .gitignore:
.env
**/data/
**/db/
*.log
6. Primul commit și push
git add .
git commit -m "Backup initial configurari docker"
git push -u origin main
7. Automatizare cu un script + cron
Creează scriptul backup.sh:
#!/bin/bash
cd ~/docker || exit 1
git add .
git commit -m "Backup automat $(date +%F_%T)" || exit 0
git push
Fă-l executabil:
chmod +x ~/docker/backup.sh
Adaugă-l în crontab (rulare zilnică la ora 3 dimineața):
crontab -e
0 3 * * * /home/pi/docker/backup.sh
Observație despre secrete
Dacă vrei totuși să salvezi și fișierele .env, nu le urca în clar. Folosește o soluție de criptare precum git-crypt sau SOPS, ca parolele să fie criptate în repo. Așa ai mereu o copie versionată a configurărilor, iar dacă reinstalezi sistemul faci doar un git clone și pornești containerele din nou.
Leave A Comment?