Nextcloud – Mehr als nur Dateispeicher
Nach der finanziellen Souveränität folgt die digitale Souveränität: das eigenständige Verwalten digitaler Daten wie Bilder, Dokumente, Notizen, Kalender, Adressbuch usw. Nachdem ich auf GrapheneOS umgestiegen bin, habe ich schnell festgestellt, dass das „Entgoogeln“ gar nicht so einfach ist – zumindest nicht, wenn man auf einen gewissen Komfort nicht verzichten möchte. Fotos, E-Mails, Kontakte, Kalender und Notizen alles bei einem einzigen Anbieter zu speichern, ist ein verlockendes Ziel für gesichtslose Organisationen, die Menschen schaden oder in ihrer Freiheit einschränken wollen. Da hoste ich meine Daten lieber selbst. So bleibe ich frei und behalte die Kontrolle über meine Informationen.
Auf der Suche nach einer geeigneten Lösung für ein Free-and-Open-Source-Cloudsystem und dessen Implementierung auf einem VPS bin ich auf den Blogbeitrag von deployn.de und das dazugehörige Video gestoßen. Mit Docker konnte ich mich bisher nie wirklich anfreunden, aber die Erklärung war äußerst gelungen. Besonders hilfreich fand ich die Anleitung zur direkten Verbindung mit dem Server über VSCode – das macht die Bearbeitung erheblich komfortabler. Im Video nutzt der Autor zwei Befehle: nc-remove
und nc-init
, um die Docker-Container neu aufzusetzen. Gerade zu Beginn ergibt das Sinn, da man so verschiedene Ansätze ausprobieren und die Container bei Bedarf einfach neu erstellen kann.
Dieses Tutorial bietet daher weder eine grundlegende Installationsanleitung für Nextcloud noch eine Anleitung zum sicheren Aufsetzen eines VPS. Solche Grundlagen könnt ihr aber ganz einfach vom Kapitel 3 des Blitz⚡Bank Tutorials übernehmen, es ist identisch.
Kommen wir direkt zu den Fakten:
Hier erkläre ich, wie ich einen Nextcloud-Server aufsetze, wie ich ihn optimiere und welche Dienste ich verwende.
1. Voraussetzungen und Server einrichten
1.1 Virtual Private Server
Das Betriebssystem ist einfach, Ubuntu 24.04 LTS oder das neuere Ubuntu 22.04 LTS (empfohlen). Die hardwaretechnischen Mindestvoraussetzungen sind hier natürlich sehr unterschiedlich, da es davon abhängt, welche Optionen man installiert und wie die Cloud später verwendet werden soll. Das untere Minimum um Nextcloud mal zu testen, ist vermutlich 2 CPU, 2 GB RAM und 40 GB Festplatte. Ich würde aber eher 4 GB RAM und 100 GB Festplatte empfehlen. Für eine leistungsstarke Cloud, die ihr vielleicht auch noch mit anderen teilt, ist das vermutlich immer noch viel zu wenig, gerade die Festplatte wird schnell an ihre Grenzen stoßen.
KVM-/nicht virtualisierte VPS empfohlen
.2 Eine Domain / Subdomain
asdf
1.3 Server einrichten und härten
Hinweis: Bei der Installation kann es sein, dass ihr mal ENTER
drücken müsst oder einen Hinweis bekommt, dass der Kernel geupdatet werden muss.pfohlen, den Server einmal mit sudo systemctl reboot
neu starten.
Diesen und andere Hinweise einfach mit ENTER
bestätigen, und wie em
1. Docker mit Pakete installieren
Die Docker Installation ist Dank eines Skripts wirklich sehr einfach:
sudo curl -fsSL https://get.docker.com | sudo sh
Docker Installation ✅
Info: Die installieren Docker Versionen könnt ihr mit diesen Befehlen prüfen:
docker --version docker compose version
2. Caddy Webserver installieren
Damit der Nextcloud Server aus dem Internet aufgerufen werden kann, benötigen wir einen Webserver die Anfragen weiterleitet und die Verschlüsselungszertifikate verwaltet. Das könnte auch der mit Nextcloud mitgelieferte Apache Webserver erledigen, ich bevorzuge aber die separate Variante, damit ich noch weitere Services auf meinem VPS installieren kann. Entweder habt ihr auch schon einen Caddy Server für einen vorhandene Services schon am laufen, dann braucht ihr den caddyfile
nur um die paar Zeilen erweitern. Falls nicht, hier die Anleitung zum Einrichten.
Wichtig: Stellt sicher, dass ihr bereits eine Domain / Subdomain habt und bei eurem Domainanbieter die DNS-Adressen (A und ggf. AAAA) eurer Domain auf die IP-Adresse eures Virtual Private Servers verweist, damit Anfragen an die Domain zum VPS weitergeleitet werden. Falls ihr noch keine Domain habt, könnt ihr z.B. bei duckdns.org eine kostenlose Subdomain bekommen. Dazu habe ich hier unter Punkt 7.11 mal was geschrieben. Ob die Weiterleitung auch wirklich funktioniert, könnte ihr zum Beispiel mit whatsmydns.net.
Caddy installieren:
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list sudo apt update sudo apt install caddy
-> Ihr könnten jetzt den Webserver im Browser testen: http://yourIPaddress
. Achtet auf das http, nicht https!
Bild: Caddy Server Startseite, der Server funktioniert.
Den CaddyFile aufrufen:
sudo nano /etc/caddy/Caddyfile
Den CaddyFile befüllen / erweitern mit:
# Configuration for Nextcloud Mainpage https://nextcloud.yourdomain.com:443 # Forwarding for CalDAV or CardDAV redir /.well-known/carddav /remote.php/dav/ 301 redir /.well-known/caldav /remote.php/dav/ 301 # Warning header Strict-Transport-Security max-age=31536000; # Reverse Proxy reverse_proxy localhost:11000 } # Configuration for Nextcloud AIO interface https://nextcloud.yourdomain.com:8443 { reverse_proxy https://localhost:8080 { transport http { tls_insecure_skip_verify } } }
-> Dann das Fenster Speichern und Schließen: STRG+X -> Y -> Enter
Hinweis: Das Blanko-Template nach Erstinstallation könnt ihr komplett löschen. Die nextcloud.yourdomain.com
müsst ihr an beiden Stellen anpassen.
Info: Der Port 443 ist der Standardport für verschlüsselte Verbindungen, die über https gekennzeichnet sind. Beim einfachen Aufruf einer Domain ohne Portangabe wird automatisch Port 443 verwendet, was in diesem Fall zum Nextcloud-Docker-Server führt, der auf dem localhost (VPS) hinter Port 11000 läuft. Die spezielle AIO-Schnittstellenseite, mit der die Docker-Container verwaltet werden können, ohne ein Terminal nutzen zu müssen, ist ebenfalls auf dem localhost verfügbar, jedoch hinter Port 8080 des Dockers. Zur AIO-Schnittstelle gelangt man entweder über einen Link auf der Hauptseite (sofern man als Admin eingeloggt ist) oder durch Angabe von Port 8443 hinter der Domain in der Adressleiste.
Caddy einmal neu laden:
sudo systemctl reload caddy
Damit habt ihr den Caddy Webserver fertig eingerichtet. ✅
Hinweis: Den Status und die Logs könnte ihr überprüfen mit:
sudo systemctl status caddy sudo journalctl -u caddy -f --since "2 hour ago"
-> Um aus der Ansicht wieder raus zu kommen, erst q
und dann STRG+C
drücken.
Info: Das Zertifikat selbst, könnt ihr zum Beispiel über ssllabs.com prüfen lassen.
3. Nextcloud „All-in-One“ installieren
Nextcloud bietet ein All-in-One (AIO) Docker Lösung, bei dem alle notwendigen Packet als Container installiert werden. Die offizielle Github Seite ist sehr umfänglich, da Nextcloud so viel Optionen hat. Das Installieren und Einrichte, ist dagegen sehr einfach. Man muss nur ein Docker Container gestartet werden. Die Einrichtung und alles Weiteres erfolgt dann über das AIO-Interface. Aber zuvor müsst ihr noch, falls noch nicht geschehen, den Port 8443 und 3478 in der Firewall freigeben. 8443 ist für AIO-Schnittstelle damit ihr vor Anfang einen verschlüsselten Zugang bekommt. 3478 ist für Anwendung Nextcloud Talk. Die wird optional vorgewählt mit installiert. Wenn ihr sie nicht braucht, könnte ihr den Port auch weglassen.
sudo ufw allow 3478 comment 'Nextcloud Talk' sudo ufw allow 8443 comment 'Nextcloud AIO interface' sudo ufw status
Und jetzt geht’s auch schon los. Den nachfolgenden Block als ganzes kopieren und im Terminal einfügen, um Docker Container starten.
sudo docker run \ --init \ --sig-proxy=false \ --name nextcloud-aio-mastercontainer \ --restart always \ --publish 8080:8080 \ --env APACHE_PORT=11000 \ --env APACHE_IP_BINDING=127.0.0.1 \ --volume nextcloud_aio_mastercontainer:/mnt/docker-aio-config \ --volume /var/run/docker.sock:/var/run/docker.sock:ro \ nextcloud/all-in-one:latest
-> Ihr sollte jetzt die Meldung Initial startup of Nextcloud All-in-One complete!
angezeigt bekommen. Der Prozess könnt ihr mit STRG+C
anschließend beenden.
Info: Man beachte beim docker run
Befehl den Parameter: APACHE_PORT=11000
. Das ist der Port, auf dem der interne Apache Webserver lauscht. Durch die Festlegung APACHE_IP_BINDING=127.0.0.1
, hat der Docker Container keine direkt Verbindung zur Außenwelt und benötigt übergeordneten einen Webserver, der die Anfragen weiterleitet, einen Proxy-Server. Hier kommt unser Caddy Server zum Einsatz, der im vorhergehenden Kapitel eingerichtet wurde und bereitgestellt wurde. Das hat den großen Vorteil, dass wir mehrere Services auf dem gleichen VPS laufen lassen können.
Einrichtung über das AIO-Interface
Ruf das AIO-Interface jetzt über die URL https://nextcloud.yourdomain.com:8443
auf. Achtet auf die Port-Angabe „:8443“. Sonst bekommt ihr beim Aufruf eine Fehlermeldung (HTTP ERROR 502). Nachfolgenden Schritte sind in den angehängten Bilder dokumentiert.
- Sichert euch die angezeigt Passphrase gut weg. Damit habt ihr einen Notfall-Zugriffsmöglichkeit auf die AIO-Schnittstelle.
- Bestätigt den Login mit eurer zuvor gesicherten Passphrase und wählt nochmal „Login in“.
- Auf der Nächsten Seite eure Domain hinterlegen, die verwendet wird, um eine eine AIO Instanz anzulegen.
- Mit dem AIO-Interface bekommt ihr die Wahl optionale Container an- oder abzuwählen.
- Die Installation dauert eine Weile und evlt. müsst ihr mal Reload drücken.
- Wenn sie aber fertig ist, wird euch der Initial Nextcloud username und password angezeigt. Das Passwort kopiert in eure Zwischenablage. Geht dann auf „Open your Nextcloud.
- Es wurde ein zweite Browser Fenster eröffnet und ihr könnte euch mit dem Benutzer „admin“ und dem Passwort in der Zwischenablage anmelden.
- Willkommen in eurer eigenen Nextloud. ✅
4. Erste Schritte
Hier ein Tipps für den Einstieg in euer neuen Cloud:
- Dann legt ihr einen neuen Admin-Benutzer an und löscht das initiale Konto. Geht dazu oben rechts auf „Icon > Konten > Neues Konto“. Vergebt mindestens: Kontoname (für den Login), das Passwort, die E-Mail-Adresse und wählt bei „Mitglied der folgenden Gruppen“ den „admin“ aus. Jetzt loggt euch aus, testet den Login, geht wieder zu Konten und wählt für das Konto „admin“ dann „Konto löschen“.
- Jetzt könnt ihr euch auch vom AIO-Interface abmelden. Wechselt dazu das Browser Fenster und loggt euch oben rechts aus. Das AIO-Interface benötigt ihr nur, wenn Container verwaltet wollt.
- Neue Benutzerkonten, könnte ihr unter „Icon > Konten“ anlegen. Fügt am besten erst die Gruppen „Benutzer“ hinzu und legt dann einen zusätzlichen Benutzer für euch an, damit ihr den Unterschied seht. Für den neue Benutzer solltet ihr ebenfalls wieder die drei Daten vergeben und ihn zu der Gruppe „Benutzer“ hinzufügen. Logt euch aus und mit dem neuen Benutzer wieder ein. Jetzt einen anderen Browser oder den Inkognito-Modus eures Browsers auf, um euch parallel mit dem Admin-Benutzer anzumelden. Ich empfehle den Admin-Benutzer immer mit dem Inkognito-Modus zu öffnen.
- Ein persönliches Profil könnte ihr Anlegen unter „Icon > Persönliche Einstellungen“. Empfehlen würde ich zusätzlich Sprache, Gebietsschema, und vielleicht ein Profilbild. Die E-Mail-Adresse wird für wichtige Meldungen eures Server / Admins und für ein Rücksetzen des Passworts benötigt. Dazu muss aber der E-Mail-Server eingerichtet werden. Dazu komme ich gleich bei den Meldungen.
- Unter „Verwaltungseinstellungen > Übersicht > Sicherheits- & Einrichtungswarnungen“ findet ihr wahrscheinlich noch Warnungen und Hinweise. Nextcloud bietet euch oft gleich Lösungen dazu. So steht bei mir z.B. die Warnung: „One or more mimetype migrations are available.“, mit dem Hinweis, dass man den Befehl
occ maintenance:repair --include-expensive
ausführen soll. Da wir unsere Nextcloud aber im Docker gehostet haben, müssen wir den Befehl noch noch etwas ergänzen:sudo docker exec --user www-data -it nextcloud-aio-nextcloud php
. Das ist die Grundvoraussetzungmzum Ausführen des Befehls und muss immer ganz am Anfang stehen. Der komplette Befehl lautet dann:sudo docker exec --user www-data -it nextcloud-aio-nextcloud php occ maintenance:repair --include-expensive
Führt den kompletten Befehl in eurem Terminal Fenster aus und aktualisiert danach eure Webseiten, dann sollte die Warnung weg sein.
Bild: Warnungen und Hinweise
- Die zwei Meldung ist der Hinweis: „Für Ihre Installation ist keine Standard-Telefonregion festgelegt.“. Den könnt ihr mit folgenden Befehl beheben:
sudo docker exec --user www-data -it nextcloud-aio-nextcloud php occ config:system:set default_phone_region --value="DE"
- Den nächsten Hinweis: „Du hast deine E-Mail-Serverkonfiguration noch nicht festgelegt oder überprüft.“ behebt ihr, in dem ihr unter „Verwaltungseinstellungen > Grundeinstellungen > E-Mail-Server“ eine E-Mail eintragt. Damit kann der Server Nachrichten verschicken und den Benutzer ein Link für eine neue Passwortvergabe schicken. Der E-Email-Server muss das SMTP-Protokoll unterstützen. Für GMX funktioniert z.B.: SMTP, STARTTLS, mail.gmx.net als Server mit Port 587. Die Authentifizierung muss angewählt und die Zugangsdaten E-Mail / Passwort vergeben werden. Anschließend ein E-Mail senden zum Testen.
- Im Bereich „Verwaltungseinstellungen > Übersicht“ findet ihr übrigens unter Meldungen noch zwei Interessante Links. Protokolle und Sicherheitsscanner der Nextcloud GmbH. Letzter führt zur der Nextcloud Security Scan, wo ihr Sicherheitskonfiguration eures Servers testen könnt.
4. Einstellungen und Tipps
4.1 Server herunterfahren und neu starten.
Möchtet ihr den Server herunterfahren um ihn ggf. neu zu starten oder Systemupdates durchzuführen, ist es empfohlen vorher unter „Verwaltungseinstellungen“ das AIO-Interface aufzurufen und alle Container zu stoppen. Jetzt könnte ihr den eigentlichen VPS neu starten. Nach dem der VPS hochgefahren ist, loggt ihr euch mit URL https://nextcloud.yourdomain.com:8443
auf das AIO-Interface ein und könnte dort die Docker Container wieder starten. Erst dann ist die Nextcloud Hauptseite wieder erreichbar.
5. Anhang
5.1 Android FOSS Apps
Etar Calendar: GitHub / F-Droid
DAVx⁵ – CalDAV/CardDAV-Synchronisierung und -Client: GitHub / F-Droid
ICSx⁵ – Webcal (.ics)-Kalender abonnieren: GitHub / F-Droid
Tipps zu Kontakte:
Die Kontakte am besten einmal exportieren und sichern was man hat, hat man. Gibt es mehrere Konten die gleiche heißen bitte synchronisieren und bereinigen. Auch auf dem Gerät alle Kontakte, inkl. Kontakte im Systemspeicher, löschen. Dazu unter Apps rechts oben die drei Punkte klicken und „System-Apps anzeigen“ wählen, dann wird in der Liste zusätzlich zu Kontakte auch Kontakte-Speicher angezeigt. Um die Kontakte im Systemspeicher zu löschen, öffne die App-Einstellungen, klicke oben rechts auf die drei Punkte und wähle „System-Apps anzeigen“. Dadurch erscheinen in der Liste neben Kontakte auch Kontakte-Speicher, wo die entsprechenden Einträge ebenfalls gelöscht werden können.
Zuerst sollten alle Kontakte exportiert und gesichert werden. Wenn mehrere Konten vorhanden sind, empfiehlt es sich, die Kontakte auf ein Konto zu synchronisieren und dort zu bereinigen. Anschließend können alle Kontakte in allen Konten gelöscht werden. Auf dem Gerät sollten ebenfalls alle Kontakte gelöscht werden, einschließlich der Kontakte im Systemspeicher.
Um die Kontakte im Systemspeicher zu löschen, öffnet man die App-Einstellungen, klickt oben rechts auf die drei Punkte und wählt „System-Apps anzeigen“. Dadurch erscheint in der Liste neben Kontakte auch Kontakte-Speicher, wo die entsprechenden Einträge ebenfalls gelöscht werden können.
Beim Kalender ähnlich verfahrensweiße wie bei Kontakten. Erste einmal die Kalender exportieren und sichern. Auf der Nextcloud unter Kalender Persönlich die Kalender importieren. Unter Kalender-Einstellungen „Geburtstagskalender aktiveren“ und unter Kalender + „Feiertagskalender hinzufügen“. DAVx⁵ zeigt später alle drei Kalender an, damit man sie zur Synchronisierung auswählen kann. Die ersten zwei sind unter CalDAV und der „Feiertage in Germany“ kann unter Webcal „Subscribe“ werden. Dafür benötigt man dann noch ICSx⁵ im Hintergrund.
Persönlicher Hinweis: Fossify Contacts war auch sehr gut, hatte aber beim Test einen entscheidenden Nachteil. Fossify hat einen neue Kalender als Standard hinzugefügt. Ich konnte meine Nextcloud Kontakte sehen, aber nicht erweitern oder editieren. Auch konnte ich neuen Kalender nicht mit Nextcloud synchronisieren. Den Standard Kalender konnte man leider nicht löschen oder auf den Nextcloud Kalender umstellen. Daher habe ich mich für Etar Calendar entschieden. Fossify etwas schöner im Aufbau, aber Etar ist funktionaler.
Empfehlung zu Notes. Erst auf dem Server die App Notes installieren und
Auf dem Nextcloud Server aktivieren: Notes
Weiter Empfehlungen: Login notes
5.2 Interessantes für Caddy
5.3 Ich möchte..
In der Android App
Die App immer laufen lassen: App > App-Info > Berechtigung > App-Verhalten bei Nichtnutzung verwalten => „deaktivieren“
Auf Fossify: Einstellungen > Anzuzeigende Kontakte (Alle Kontakte oder Anpassen) -> Jedes Konto hat anscheinend eigenen Kontakte
Ein Standard Konto für neue Kontakte einstellen: Kontakte App > Einstellungen > Standard Gerät für neue Kontakte
Meine Konten sehen: Einstellungen > Passwörter, Passkeys & Konten > 2x DAVx5 ist normal, einmal explizit für Kontakte
Ordner synchronisieren: Nextcloud App > Einstellungen > Synchronisieren
Auf dem Nextcloud Server
Nach Apps suchen: Profilbild > Apps > Ihre Apps > Oben rechts auf „Suche“ > Dort den Begriff eingeben und nicht auf „Überall Suchen“ oder „Einheitliche Suche“ gehen.
temp
5.3 Referenzen
Nextcloud auf VPS installieren: Anleitung mit Docker
Docker Nextcloud Setup auf einem VPS: So wird’s ENDLICH schnell! 🚀
Reste – später löschen
Deine Remote-Adresse wurde als „79.208.59.31“ erkannt und wird derzeit durch die Brute-Force-Erkennung gedrosselt, was die Leistung verschiedener Anfragen verlangsamt. Wenn die Remote-Adresse nicht deine Adresse ist, kann dies ein Hinweis darauf sein, dass ein Proxy nicht richtig konfiguriert ist.
Es wurden mehrere ungültige Anmeldeversuche von deiner IP-Adresse festgestellt. Daher wird die nächste Anmeldung um 30 Sekunden verzögert.
One or more mimetype migrations are available.
Erstellt mit Liebe 🧡 – Block 866520 / 878660
– Lightning ⚡ (er)leben –
Value 4 Value
axelhamburch@ereignishorizont.xyz