setup.sh hinzugefügt

This commit is contained in:
2026-05-31 12:19:44 +00:00
commit 42e9907960
+102
View File
@@ -0,0 +1,102 @@
#!/bin/bash
# =============================================================================
# Einmaliges Setup-Skript läuft auf dem Raspberry Pi als root
# =============================================================================
set -euo pipefail
REMOTE_HOST="${1:-docker-host}" # IP oder Hostname als Argument übergeben
REMOTE_USER="borgbackup"
SSH_KEY="/home/pi/.ssh/borg_pull"
MOUNT_BASE="/mnt/borg-pull"
BORG_REPO_BASE="/media/backup/borg"
BACKUP_SCRIPT="/usr/local/bin/borg-pull-backup.sh"
echo "=== BorgBackup Pull-Setup für ${REMOTE_HOST} ==="
# --- Pakete installieren ---
echo "[1/6] Installiere Pakete..."
apt-get update -qq
apt-get install -y borgbackup sshfs fuse
# /etc/fuse.conf: user_allow_other aktivieren
if ! grep -q "^user_allow_other" /etc/fuse.conf; then
echo "user_allow_other" >> /etc/fuse.conf
echo " user_allow_other in /etc/fuse.conf aktiviert."
fi
# --- SSH-Key erzeugen ---
echo "[2/6] Erzeuge SSH-Key..."
if [ ! -f "${SSH_KEY}" ]; then
sudo -u pi ssh-keygen -t ed25519 -f "${SSH_KEY}" -N "" \
-C "borg-pull-backup@$(hostname)"
echo " Key erzeugt: ${SSH_KEY}"
else
echo " Key existiert bereits: ${SSH_KEY}"
fi
echo ""
echo ">>> Öffentlichen Key auf den Docker-Host kopieren:"
echo " Führe das jetzt manuell aus:"
echo ""
echo " ssh-copy-id -i ${SSH_KEY}.pub ${REMOTE_USER}@${REMOTE_HOST}"
echo ""
echo " ODER manuell in ~/.ssh/authorized_keys auf dem Docker-Host einfügen."
echo ""
read -rp " Drücke ENTER wenn erledigt..."
# --- Verbindung testen ---
echo "[3/6] Teste SSH-Verbindung..."
if ssh -i "${SSH_KEY}" -o BatchMode=yes \
-o StrictHostKeyChecking=no \
"${REMOTE_USER}@${REMOTE_HOST}" "echo OK" &>/dev/null; then
echo " Verbindung erfolgreich!"
else
echo " FEHLER: SSH-Verbindung fehlgeschlagen. Key korrekt kopiert?"
exit 1
fi
# --- Verzeichnisse anlegen ---
echo "[4/6] Lege Verzeichnisse an..."
mkdir -p "${MOUNT_BASE}/${REMOTE_HOST}"
mkdir -p "${BORG_REPO_BASE}"
chown pi:pi "${MOUNT_BASE}" "${BORG_REPO_BASE}"
# --- Borg-Repo initialisieren ---
echo "[5/6] Initialisiere Borg-Repository..."
REPO="${BORG_REPO_BASE}/${REMOTE_HOST}"
if [ ! -d "${REPO}/data" ]; then
echo ""
echo " Repository wird unter ${REPO} erstellt."
echo " Du wirst nach einem Passwort gefragt SICHER AUFBEWAHREN!"
echo ""
sudo -u pi borg init --encryption=repokey "${REPO}"
echo ""
echo " >>> Exportiere den Repokey als Backup:"
echo " borg key export ${REPO} /media/backup/borg-key-${REMOTE_HOST}.txt"
echo ""
else
echo " Repository existiert bereits: ${REPO}"
fi
# --- Backup-Skript installieren ---
echo "[6/6] Installiere Backup-Skript..."
cp "$(dirname "$0")/borg-pull-backup.sh" "${BACKUP_SCRIPT}"
chmod +x "${BACKUP_SCRIPT}"
# Passwort im Skript eintragen
echo ""
read -rsp " Borg-Passwort für das Skript eingeben: " BORG_PASS
echo ""
sed -i "s|HIER-DEIN-PASSWORT|${BORG_PASS}|g" "${BACKUP_SCRIPT}"
sed -i "s|REMOTE_HOST=\"docker-host\"|REMOTE_HOST=\"${REMOTE_HOST}\"|g" "${BACKUP_SCRIPT}"
echo ""
echo "=== Setup abgeschlossen! ==="
echo ""
echo "Nächste Schritte:"
echo " 1. Passe BACKUP_PATHS in ${BACKUP_SCRIPT} an"
echo " 2. Systemd-Timer aktivieren: sudo systemctl enable --now borg-pull-backup.timer"
echo " 3. Testlauf: sudo ${BACKUP_SCRIPT}"
echo ""