💾 Backup mit Synology
In diesem Abschnitt werden unsere Pterodactyl-Docker-Server automatisch auf einem Synology NAS gesichert. Pterodactyl kann per Cronjob Backups erstellen – wir nutzen diese Funktion, um die Backups regelmäßig auf unser NAS zu übertragen.
📋 Ablauf im Überblick
So funktioniert das Backup
- Um 0:00 Uhr erstellt Pterodactyl automatisch Backups für jeden Server
- ~5–10 Minuten später verbindet sich das NAS per SSH-Key mit dem Server
- Ein Script auf dem Server fasst die Backups als ZIP zusammen
- Das NAS lädt die ZIP-Datei per SCP herunter
- Lokal wird ein Ordner mit dem aktuellen Datum erstellt
- Die temporäre ZIP auf dem Server wird gelöscht
- Backups älter als 30 Tage werden lokal gelöscht
🔑 SSH-Login & Schlüssel erstellen (Server)
1. Neuen Benutzer anlegen
Auf dem Pterodactyl-Server per SSH einen neuen User erstellen:
adduser --shell /bin/bash username
Anschließend den User zur SSH-Gruppe hinzufügen. Auf Debian 12/13 heißt die Gruppe _ssh (mit Unterstrich) – --ingroup '_ssh' wird von adduser abgelehnt, daher separat via usermod:
# Debian 12 / 13:
usermod -aG _ssh username
# Debian 10 / 11 (alte Gruppe ohne Unterstrich):
# usermod -aG ssh username
Den neuen Benutzer in die SSH-Konfiguration eintragen:
nano /etc/ssh/sshd_config
AllowUsers username
2. SSH-Schlüssel generieren
Zum neuen Benutzer wechseln und einen 4096-Bit RSA-Schlüssel ohne Passwort generieren (für automatischen Ablauf):
su username
ssh-keygen -t rsa -b 4096
Dateinamen mit Enter bestätigen, Passphrase leer lassen.
3. Schlüssel autorisieren
Den SSH-Schlüssel als autorisierten Schlüssel einrichten (Benutzername anpassen!):
mv /home/username/.ssh/id_rsa.pub /home/username/.ssh/authorized_keys
chmod 700 /home/username/.ssh
chmod 600 /home/username/.ssh/authorized_keys
4. Private Key exportieren
Den privaten Schlüssel anzeigen und in eine Textdatei kopieren:
cat /home/username/.ssh/id_rsa
Die gesamte Ausgabe (von -----BEGIN OPENSSH PRIVATE KEY----- bis -----END OPENSSH PRIVATE KEY-----) in eine Datei namens „Syno-ServerKey" (ohne .txt!) speichern.
5. SSH-Key umwandeln (PuTTYgen)
- PuTTYgen öffnen und „Load" klicken
- Unter „Alle Dateien (*.*)" den gespeicherten Syno-ServerKey auswählen
- Conversions → Export OpenSSH key
- Speichern als „Syno-ServerKey.pem"
📜 Backup-Script auf dem Server
6. Script erstellen
Ordner und Script anlegen (Benutzernamen anpassen!):
mkdir /home/username/scripts
nano /home/username/scripts/backup.sh
Folgendes Script eintragen (nur SERVERUSER anpassen!):
#!/bin/bash
# Normal Filesystem Backup
# You can Change the variable of "SERVERUSER"
SERVERUSER="username"
# DONT EDIT HERE!
d=`date +%d-%m-%Y`
h=$(hostname -s)
# Change to directory of the backup folder from Pterodactyl
cd /var/lib/pterodactyl/backups/
# Pack all created backups as one ZIP with server name and date
zip -r "$h$d".zip *
# Move the created .ZIP file to the home backup folder
if [[ ! -e "/home/$SERVERUSER/backups" ]]; then
mkdir -p /home/$SERVERUSER/backups
fi
mv /var/lib/pterodactyl/backups/*.zip /home/$SERVERUSER/backups/
# Assign permissions to SERVERUSER for the download
chown -R $SERVERUSER /home/$SERVERUSER/backups
chmod 700 /home/$SERVERUSER/backups
echo "ZIP Done";
Rechte setzen:
chmod 700 /home/username/scripts/backup.sh
7. Sudo-Recht für das Script
Wieder als Root anmelden und Sudoers-Datei bearbeiten:
su -
visudo
Folgenden Eintrag hinzufügen (Benutzernamen anpassen!):
# User alias specification
username ALL=(ALL) NOPASSWD: /home/username/scripts/backup.sh
⏰ Pterodactyl Server Backups einstellen
8. Automatische Backups in Pterodactyl
Wichtig: Für jeden Server im Webinterface das Backup Limit auf 1 setzen!
Auf dem Game-/Voice-Server im Panel:
- Unter „Schedules" einen neuen Cronjob anlegen → z. B. „Auto-Backup"
- Jeden Sonntag um 0 Uhr:
0 0 * * 7 - „New Task" → Action: „Create Backup"
- Optional: Unter „Ignored files" Ordner/Dateien ausschließen (mit
/beginnen)
💡 Für andere Zeitpunkte: crontab.guru
🏠 Synology NAS konfigurieren
9. SSH auf der Synology aktivieren
- Systemsteuerung → Terminal & SNMP
- Haken bei „SSH-Dienst aktivieren"
- SSH-Port aus Sicherheitsgründen ändern (z. B.
40722) - Systemsteuerung → Benutzer & Gruppe → Erweitert → Benutzer-Home-Dienst aktivieren
10. SSH-Key auf NAS einrichten
Die Syno-ServerKey.pem in den .ssh-Ordner des Adminbenutzers auf dem NAS kopieren.
Per Putty auf das NAS verbinden und Rechte setzen:
chmod 700 /var/services/homes/AdminName/.ssh/Syno-ServerKey.pem
Einmalige manuelle Verbindung für den Fingerprint:
ssh -i /var/services/homes/AdminName/.ssh/Syno-ServerKey.pem -pSSHPort username@ServerIP
Den Fingerprint bestätigen. Danach Putty wieder schließen.
11. Aufgabenplanung auf der Synology
Systemsteuerung → Aufgabenplaner → Geplante Aufgabe → Benutzerdefiniertes Script
- Name: „Server-Backups"
- Benutzer: Adminuser (wichtig!)
- Zeitplan: Jeden Sonntag um 00:10 Uhr
Unter Aufgabeneinstellungen folgendes Script eintragen:
#!/bin/sh
# User editable Variables
NASUSER=""
VOLUME=""
SSHKEY=""
SERVERIP=""
SSHPORT=""
SERVERUSER=""
#-------------------------------------------------------------
# DONT EDIT HERE!
echo "connect to external server...";
ssh -i /"$VOLUME"/homes/"$NASUSER"/.ssh/"$SSHKEY" -p"$SSHPORT" "$SERVERUSER"@"$SERVERIP" "sudo ./scripts/backup.sh"
echo "waiting for zipping script on external server...";
wait
# Create a folder with the date of today
TODAY="$(date +'%d-%m-%Y')"
mkdir -p /"$VOLUME"/homes/"$NASUSER"/ServerBackups/"$TODAY"/
# Download the ZIP file via SCP (SFTP)
echo "Download Files...";
scp -i /"$VOLUME"/homes/"$NASUSER"/.ssh/"$SSHKEY" -P"$SSHPORT" "$SERVERUSER"@"$SERVERIP":/home/"$SERVERUSER"/backups/*.zip /"$VOLUME"/homes/"$NASUSER"/ServerBackups/"$TODAY"/
echo "Download done";
wait
# Delete ZIP file on server
echo "Remove temporary zip...";
ssh -i /"$VOLUME"/homes/"$NASUSER"/.ssh/"$SSHKEY" -p"$SSHPORT" "$SERVERUSER"@"$SERVERIP" "rm backups/*.zip"
# Find and delete backups that are older than 30 days locally
echo "Remove files older than 30 days";
find /"$VOLUME"/homes/"$NASUSER"/ServerBackups/ -mtime +30 -delete
echo "BACKUP FINISH!";
12. Variablen anpassen
Im oberen Abschnitt des NAS-Scripts die Werte eintragen:
| Variable | Beispiel |
|---|---|
NASUSER | Admin |
VOLUME | volume1 |
SSHKEY | Syno-ServerKey.pem |
SERVERIP | 192.168.0.555 |
SSHPORT | 40822 |
SERVERUSER | synology |
Übernehmen und mit Rechtsklick einen Testlauf starten.
💡 Unter Aufgabenplaner → Einstellungen können Ausgabeergebnisse gespeichert werden, um Fehler zu diagnostizieren.
✅ Jetzt solltet ihr jeden Sonntag ein neues Backup auf eurem NAS bekommen!
