nc-backup 2.0 · Ubuntu 26.04 LTS · AGPL-3.0

Installationsanleitung

Aktuell 2.1.1 für Ubuntu 26.04 LTS (Resolute) und Ubuntu 24.04 – Raspberry Pi (ARM64) und Intel/AMD. Ein Paket für alle Architekturen. Inkrementelle Sicherungen mit restic.

Versionen

2.1.1 (aktuell): für Ubuntu 26.04 LTS (auch 24.04). Enthält Einzeldatei-Wiederherstellung (seit 2.1.0) und korrigierte Versionsanzeige nach Upgrades. Abhängigkeit: polkitd + pkexec.

Version 1.8.3 läuft nur unter Ubuntu 24.04 LTS, nicht unter Ubuntu 26.04. Download: nc-backup_1.8.3-1_all.deb · Quellcode 1.8.3.

Was nach der Installation läuft

1. Installation

sudo dpkg -i nc-backup_2.1.1-1_all.deb
sudo apt -f install
systemctl status nc-backup-web

Erwartung: active (running) und enabled.

Aus dem Quellcode-Archiv bzw. Git-Clone:

sudo ./scripts/install-ubuntu.sh

Browser: http://SERVER-IP:42173

1b. Aktualisieren

Einstellungen in /etc/nc-backup/ bleiben erhalten. Web-UI und Desktop-GUI zeigen einen Update-Hinweis, wenn auf GitHub eine neuere Version liegt – es gibt kein Auto-Install.

sudo dpkg -i nc-backup_2.1.1-1_all.deb
sudo apt -f install
sudo systemctl restart nc-backup-web

Oder bei Installation per Quellcode:

cd ~/nc-backup
sudo ./scripts/install-ubuntu.sh

Prüfen: Paketversion z. B. mit dpkg -l nc-backup.

2. Port – Standard und ändern

Standard-Port: 42173 · Host: 0.0.0.0 (LAN) · HTTP

Port ändern – ja, per systemd-Drop-in (die Unit setzt NC_BACKUP_WEB_PORT / NC_BACKUP_WEB_BIND):

sudo systemctl edit nc-backup-web
# [Service]
# Environment=NC_BACKUP_WEB_PORT=8443
sudo systemctl daemon-reload
sudo systemctl restart nc-backup-web

Firewall (UFW): Der Installer setzt allow 42173/tcp, falls UFW installiert ist. UFW wird nicht automatisch aktiviert.

sudo ufw allow 42173/tcp comment "nc-backup-web"
# oder nur Heimnetz:
sudo ufw allow from 192.168.0.0/16 to any port 42173 proto tcp

Nur lokal: im Drop-in Environment=NC_BACKUP_WEB_BIND=127.0.0.1 und Zugriff per SSH-Tunnel.

3. systemd-Dienst

Web: nc-backup-web.service · ExecStart=/usr/bin/python3 -m nc_backup_web

Backup-Lauf: nc-backup.service (Type=oneshot, oft disabled) · ExecStart=/usr/bin/python3 -m nc_backup run · Zeitplan: nc-backup.timer (enabled, wenn in der Oberfläche aktiviert)

systemctl status nc-backup-web
sudo systemctl restart nc-backup-web
journalctl -u nc-backup-web -f
systemctl status nc-backup.timer
journalctl -u nc-backup.service -e

4. Ersteinrichtung

  1. Zugangsschlüssel festlegen (Pflicht, stark: Groß-/Kleinbuchstaben, Ziffer und Sonderzeichen). Liegt unter /etc/nc-backup/web-token.
  2. restic-Passwort ebenso stark setzen (Verlust = Snapshots nicht mehr lesbar). Liegt unter /etc/nc-backup/restic-password.
  3. Modus (nativ / Docker / AIO) – Nextcloud und extra DB-Container werden erkannt; datadirectory kommt aus config.php.
  4. Backup-Ziel (muss gemountet sein!)
  5. restic sichert Dump + config.php + Datenverzeichnis (inkrementell)
  6. Optional Zeitplan über den Timer, dann Backup starten

findmnt /mnt/dein-ziel muss SMB/NFS zeigen, nicht die Systemplatte.

5. Nextcloud-App installieren (optional, nicht im App Store)

Die App ist optional – die Web-UI reicht für Backup und Restore. Sie liegt nicht im Nextcloud-App-Store. Nextcloud akzeptiert fremde Apps nur, wenn der Ordner im richtigen apps/-Verzeichnis liegt, www-data gehört und per occ aktiviert wird. Nur Backup starten – Wiederherstellung bleibt in der Web-UI (Port 42173).

Getrennt:

Ab nc-backup 2.0.3 / App 1.3.3: leerer Backup-Start-Body als {} bzw. akzeptiertes [] (kein 400 „JSON-Objekt erwartet“). API unverändert: /api/backup, /api/status, /api/targets mit Authorization: Bearer … – eine vorhandene Nextcloud-App kann weiterreden.

5a. Voraussetzungen

  1. nc-backup-Web-UI läuft (systemctl status nc-backup-web).
  2. Du bist Nextcloud-Administrator.
  3. SSH auf den Nextcloud-Server (Pi).

App-Quellordner holen (Beispiel von GitHub):

cd /tmp
git clone --depth 1 https://github.com/MarkusFroendhoff/nc-backup.git
# Der App-Ordner MUSS ncbackup heißen (so steht es in info.xml):
ls /tmp/nc-backup/nextcloud-app/ncbackup/appinfo/info.xml

Nach der Paketinstallation liegt eine Kopie oft unter /usr/share/nc-backup/nextcloud-app/ncbackup.

5b. Nextcloud-Pfad finden

Falscher apps/-Ordner ist der häufigste Fehler. occ suchen:

sudo find /var/www /opt /srv -name occ 2>/dev/null | head

Häufig nativ: /var/www/nextcloud/occ → Apps nach /var/www/nextcloud/apps/ncbackup.

Snap/Docker: occ liegt im Container. App in das gemountete apps/-Volume kopieren, dann docker exec -u www-data … php occ ….

5c. Kopieren, Rechte, aktivieren (nativ)

Der Zielordner muss exakt ncbackup heißen – nicht nc-backup und nicht in apps-external, außer deine Instanz nutzt das extra.

NC=/var/www/nextcloud
SRC=/tmp/nc-backup/nextcloud-app/ncbackup
# falls das Paket schon kopiert hat:
# SRC=/usr/share/nc-backup/nextcloud-app/ncbackup

sudo rm -rf "$NC/apps/ncbackup"
sudo cp -a "$SRC" "$NC/apps/ncbackup"
sudo chown -R www-data:www-data "$NC/apps/ncbackup"
sudo chmod -R u=rwX,g=rX,o=rX "$NC/apps/ncbackup"

sudo -u www-data php "$NC/occ" app:enable ncbackup
# Wenn Nextcloud „nicht kompatibel“ sagt (Server neuer als in info.xml):
sudo -u www-data php "$NC/occ" app:enable --force ncbackup

sudo -u www-data php "$NC/occ" app:list | grep ncbackup

Erwartung: ncbackup unter enabled. In der Cloud unter „Apps“ erscheint sie dann als aktiviert – nicht über „Herunterladen“.

5d. Docker-Nextcloud

127.0.0.1 im Container ist nicht der Pi. App in das Host-Volume von apps/ kopieren, dann:

docker exec -u www-data KONTAINER php occ app:enable --force ncbackup

In den App-Einstellungen als URL z. B. http://172.17.0.1:42173 oder die LAN-IP des Hosts, nicht 127.0.0.1.

5e. Token und URL

  1. Zugangsschlüssel aus der Web-UI oder sudo cat /etc/nc-backup/web-token (liegt nach der Installation bereit).
  2. Nextcloud: Einstellungen → Verwaltung → NC Backup (nicht „Persönlich“).
  3. URL nativ, gleicher Rechner: http://127.0.0.1:42173
  4. Token einfügen → speichern.
  5. Oben auf das Wolken-Symbol NC Backup → Ziel wählen → starten.

Blockiert Nextcloud lokale URLs:

sudo -u www-data php /var/www/nextcloud/occ config:system:set allow_local_remote_servers --value=true --type=boolean

Danach Nextcloud hart neu laden (Strg+F5).

5f. Typische Fehler

Meldung / SymptomUrsache / Lösung
App nicht im Store / nicht unter „Herunterladen“ Normal. Manuell nach apps/ncbackup kopieren und occ app:enable.
„nicht kompatibel“ / Server-Version zu neu occ app:enable --force ncbackup (private App, nicht aus dem Store).
Zugriff verboten / CSRF check failed Aktuelle App-Version von GitHub verwenden (Startseite braucht NoCSRFRequired).
nc-backup nicht erreichbar Dienst läuft? URL falsch (Docker ≠ 127.0.0.1)? allow_local_remote_servers?
API-Token ungültig Zugangsschlüssel aus /etc/nc-backup/web-token bzw. der Web-UI in den Nextcloud-Einstellungen speichern.
Kein Symbol oben Nur Admins sehen es. App enabled? Seite neu laden.

Ältere Version 1.8.3

Version 1.8.3 läuft nur unter Ubuntu 24.04 LTS, nicht unter Ubuntu 26.04.

Paket: nc-backup_1.8.3-1_all.deb · Quellcode: nc-backup-1.8.3-source.tar.gz

6. Deinstallation

sudo systemctl disable --now nc-backup-web nc-backup.timer
sudo dpkg -r nc-backup
# optional: sudo rm -rf /etc/nc-backup /var/log/nc-backup

Lizenz

AGPL-3.0-or-later · kostenlos · freiwillige Spende via PayPal