From 42e99079600d24c1bd6156474fc83e1bee663db1 Mon Sep 17 00:00:00 2001 From: Jens Beckmann Date: Sun, 31 May 2026 12:19:44 +0000 Subject: [PATCH] =?UTF-8?q?setup.sh=20hinzugef=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- setup.sh | 102 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100644 setup.sh diff --git a/setup.sh b/setup.sh new file mode 100644 index 0000000..bc374d1 --- /dev/null +++ b/setup.sh @@ -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 ""