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
- Web-UI (
nc-backup-web) – ja, Autostart per systemd, Port 42173, Bind0.0.0.0 - Desktop-GUI (GTK4/Libadwaita) – gleiche helle Seitenleisten-Struktur wie die Web-UI
- Geplante Backups: Timer
nc-backup.timer(aktivieren in der Oberfläche). Der Servicenc-backup.serviceist oneshot und oft disabled – der Timer wird enabled. - Kein nginx/Apache – HTTP-Server der Python-Standardbibliothek (
ExecStart=/usr/bin/python3 -m nc_backup_web) - Optional: Nextcloud-App zum Starten einer Sicherung (kein Restore – Restore bleibt in der Web-UI)
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
- Zugangsschlüssel festlegen (Pflicht, stark: Groß-/Kleinbuchstaben, Ziffer und Sonderzeichen). Liegt unter
/etc/nc-backup/web-token. - restic-Passwort ebenso stark setzen (Verlust = Snapshots nicht mehr lesbar). Liegt unter
/etc/nc-backup/restic-password. - Modus (nativ / Docker / AIO) – Nextcloud und extra DB-Container werden erkannt;
datadirectorykommt ausconfig.php. - Backup-Ziel (muss gemountet sein!)
- restic sichert Dump +
config.php+ Datenverzeichnis (inkrementell) - 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:
- Einstellungen → Verwaltung → NC Backup: nur URL + Zugangsschlüssel (Token aus
/etc/nc-backup/web-tokenbzw. der Web-UI) - Symbol „NC Backup“ oben (wie Kalender): Ziel wählen und starten
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
- nc-backup-Web-UI läuft (
systemctl status nc-backup-web). - Du bist Nextcloud-Administrator.
- 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
- Zugangsschlüssel aus der Web-UI oder
sudo cat /etc/nc-backup/web-token(liegt nach der Installation bereit). - Nextcloud: Einstellungen → Verwaltung → NC Backup (nicht „Persönlich“).
- URL nativ, gleicher Rechner:
http://127.0.0.1:42173 - Token einfügen → speichern.
- 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 / Symptom | Ursache / 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