Backup-Server
Achtung veraltet! Backups laufen jetzt verschlüsselt zu Moritz' privatem Homeserver. Der Wiki-Artikel muss entsprechend angepasst werden.
Der Borg Backup-Server ist eine Schnittstelle zwischen dem Internet sowie dem - nur intern erreichbaren - Backup-Speicher bei Scaleway (als Block Storage).
Einrichtung
Erstellung in Scaleway
Der Server wurde mit folgender Konfiguration erstellt:
scw instance server create \
type=STARDUST1-S \
zone=nl-ams-1 \
image=rockylinux_8 \
root-volume=l:10G \
additional-volumes.0=b:25G \
name=backup.s.softwerke.md \
ip=none \
project-id=869d0909-f443-424a-8a6d-08c21ed750a8
Durch diese Konfiguration ist der Server nicht per IPv4 sondern nur per IPv6 erreichbar (das spart etwas über 1 € im Monat).
In der zugehörigen Security Group (namens Backup
) wird dann ausschließlich SSH-Verkehr aus dem Internet zugelassen und alle anderen eingehenden TCP- und UDP-Verbindungen verworfen.
Aktuell hängt noch eine IP am Server da IPv6 auf unserem Hauptserver noch nicht wirklich funktioniert.
Einrichtung per Ansible
Zu beachten ist, dass (Stand Oktober 2021) bei Rocky Linux 8.4 nur OpenSSH 8.0 verfügbar ist, also noch keine Hardware-Schlüssel unterstützt werden.
Der Server kann über Ansible mithilfe des Playbooks im Ordner backup-server
des Infrastruktur-Repos eingerichtet werden - dies erfolgt mit dem folgenden Befehl:
ansible-playbook playbook.yml
Vergrößerung des Speicherplatzes
Wenn der Block Storage vergrößert wird, kann die Partitionstabelle sowie das Dateisystem mit folgendem Befehl vergrößert werden:
{ printf 'w\nY\nY\n' | gdisk /dev/sda; } && \
{ printf "d\nn\n$(cat /sys/block/sda/sda1/partition)\n$(cat /sys/block/sda/sda1/start)\n\n8300\nw\nY\n" | gdisk /dev/sda; } && \
partprobe && \
resize2fs /dev/sda1
Backups & Borg-Repositories
Repository erstellen
Ein verschlüsseltes Backup-Repository wird (auf dem jeweiligen Quellserver) wiefolgt erstellt:
borg init \
--encryption authenticated-blake2 \
--append-only \
backup@backup.s.softwerke.md:/mnt/REPONAME
Backup manuell erstellen
Ein Backup kann dann folgendermaßen durchgeführt werden:
BORG_PASSPHRASE='...' \
borg create \
--progress \
"backup@backup.s.softwerke.md:/mnt/REPONAME::{now:%Y-%m-%d--%H-%M-%S}" \
/var/lib/docker/volumes
Automatische Backups per systemd-Timer
/etc/systemd/system/backup.service
[Unit]
Description=Backup
After=syslog.target network.target
[Service]
Type=oneshot
ExecStart=/usr/bin/borg create --progress "backup@backup.s.softwerke.md:/mnt/REPONAME::{now:%%Y-%%m-%%d--%%H-%%M-%%S}" /var/lib/docker/volumes
Environment=BORG_PASSPHRASE=...
/etc/systemd/system/backup.timer
[Unit]
Description=Run backup every 3 hours
[Timer]
OnCalendar=*-*-* 00,03,06,09,12,15,18,21:00:00
[Install]
WantedBy=timers.target
Monitoring
TODO: wir sollten (jeweils mit Benachrichtigung) prüfen ob einerseits im Repo die Backups ankommen, und andererseits der "borg create"-Befehl mit erfolgreichem Exit-Code abschließt.
No Comments