Kategorien
Anleitungen

Nextcloud on Raspberry Pi

In dieser Anleitung werden wir auf einem Raspberry Pi mit dem Betriebssystem Raspberry Pi OS (früher Raspbian) Nextcloud installieren. Dazu nutzen wir die Virtualisierungssoftware Docker und eigene Container für den Webserver nginx und das Datenbankmanagementsystem PostgreSQL.

Nextcloud ist ein Fork von ownCloud und hat sich in den letzten Jahren zu einem starken Open Source-Kontrahenten für Dropbox, OneDrive oder Google Drive entwickelt. Es bietet unter allen gängigen Computer- und Handybetriebssystemen die Möglichkeit, Dateien, Kalender und Kontakte zu synchronisieren, mit anderen Nutzern auszutauschen und zu chatten.

Lass dich nicht von dem vielen Text erschlagen. Im Grunde sind es nur ein paar Schritte, Docker installieren, zwei Dateien anlegen und eine leicht modifizieren. Dann gilt — Feuer frei! Du hast eine Cloud.

Mit Docker ist es sehr leicht möglich, eine komplette Nextcloud-Installation mit Webserver, Datenbank und allem was dazugehört zu installieren. Alles, was benötigt wird, ist die Containersoftware und eine passende Konfigurationsdatei.

Die Installation von Raspberry Pi OS wird in einer anderen Anleitung gezeigt. Wir starten hier direkt mit der Installation der Containersoftware Docker. Falls du tiefer in die Materie Docker einsteigen möchtest, findest du unter https://docs.docker.com/ die Dokumentation und im Internet Tutorials für viele weitere Projekte — oder komme einfach in die unixAG, dort arbeiten wir unter anderem mit dieser Technologie.

Zur Installation von Docker auf dem Raspberry Pi nutzen wir dessen Installationsskript. Damit ist die Grundinstallation in zwei Schritten getan. Docker selbst kennzeichnet das Skript jedoch als nicht für den Produktiveinsatz geeignet, auch wenn es im Grunde alle Schritte abarbeitet, die bei einer manuellen Installation getan werden. Es fehlt das Absichern des Systems, falls es vom Internet aus erreichbar sein soll.

Da wir davon ausgehen, dass die Container nur in den eigenen vier Wänden, in einem lokalen Netzwerk erreichbar sein sollen, wird uns das Installationsskript genügen. Wenn sie über das Internet direkt erreichbar ist, müssen entweder einige Einstellungen vorgenommen werden, damit der Webserver sicher ist, oder ein VPN-Server installiert werden. Diese Optionen werden hier aber nicht weiter besprochen.

Die Installationsanleitung für Docker findet ihr hier:

https://docs.docker.com/engine/install/debian/#install-using-the-convenience-script
sudo curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh ./get-docker.sh

Diese zwei Zeilen sind nacheinander im Terminal auszuführen. Mit der ersten Zeile wird mit dem Programm curl das Script von der folgenden Adresse heruntergeladen und in eine Datei mit dem Namen get-docker.sh geschrieben. In der zweiten Zeile wird das Script mit dem Kommandozeilenprogramm Shell gestartet.

Die erste Zeile markieren und mit folgendem Befehl kopieren.

Strg + Shift + C

Die markierte Zeile kann mit folgendem Befehl in die Shell kopiert werden.

Strg + Shift + V

Nach dem Kopieren sollte es wie in Abbildung 2 aussehen. Nun kann mit Enter die Installation gestartet werden. Dies kann je nach Internetverbindung und verwendete Version des Raspberry Pi unterschiedlich lange dauern.

Enter

Zeit zum Kaffee holen.

Nun müssen wir noch einen Ordner anlegen, indem wir die Docker Compose-Datei ablegen können. In der Docker-Compose Datei ist die Konfiguration gespeichert, in der die verschiedenen Dienste, die Nextcloud benötigt, beschrieben sind. In unserem Fall benötigen wir Nextcloud, eine Datenbank und einen Webserver hier nginx.

Wir legen eine Datei im Verzeichnis /opt an. Das Verzeichnis /opt wird überlicherweise bei linuxartigen System verwendet, um Drittanbietersoftware zu installieren, wie in unserem Fall.

mkdir /opt/nextcloud
cd /opt/nextcloud

Mit dem ersten Befehl mkdir (make directory) legen wir im Verzeichnis /opt einen Ordner mit dem Namen nextcloud an.

Mit dem zweiten Befehl ch (Change Directory) wechseln wir in das gerade angelegte Verzeichnis.

Danach erstellen wir mit dem Programm Nano (Texteditor auf der Kommandozeile) eine Datei namens docker-compose.yml. In zukünftigen Version von Docker kann diese Datei auch nur noch compose.yml lauten.

sudo nano docker-compose.yml

Wie oben beschrieb, kann mit

Strg + Shift + C

der folgende Code kopiert werden und danach mit

Strg + Shift + V

in den Editor Nano eingefügt werden.

Für den Offenen Campus an der Hochschule Kaiserslautern wird die Datei nicht weiter modifiziert. Falls du zu Hause eine Nextcloud hosten willst, dann ändere bitte noch die zwei Passwörter und den Benutzernamen. Das aktuelle Passwort hat den Standardwert ChangeMe.

services:
  db:
    image: postgres
    ports:
      - 5432:5432
    volumes:
      - ./db:/var/lib/postgresql/data
    environment:
      - POSTGRES_DB=nextcloud
      - POSTGRES_USER=nextcloud
      - POSTGRES_PASSWORD=ChangeMe
    restart: always

  app:
    image: nextcloud:fpm
    links:
      - db
    volumes:
      - ./cloud:/var/www/html
    environment:
      - POSTGRES_HOST=db
      - POSTGRES_DB=nextcloud
      - POSTGRES_USER=nextcloud
      - POSTGRES_PASSWORD=ChangeMe
    restart: always

  web:
    image: nginx
    ports:
      - 8080:80
    links:
      - app
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf
    volumes_from:
      - app
    restart: always

Mit Strg + X schließt du das Programm. Der Editor wird dich fragen, ob er die Datei überschreiben soll. Wir bestätigen mit Y für Yes und bestätigen die Eingabe noch einmal mit Enter.

Zusätzlich benötigen wir für den Webserver hier nginx eine Konfigurationsdatei. Es gibt nun zwei Möglichkeiten, diese Datei zu bekommen. Beide haben wir bereits kennengelernt. Die eine, wir kopieren den Inhalt und fügen diese in die entsprechende Datei ein oder wir nutzen wie bei der Docker Installation den Befehl curl, um Dateien aus dem Internet herunterzuladen und in eine Datei zuschreiben.

Wähle eine Möglichkeit nach deiner Wahl. Du hast die Qual der Wahl. Beide Möglichkeiten sind hier beschrieben.

Nun legen wir mit der gleichen Methode wie oben eine neue Datei namens nginx.conf an und speichern in dieser Datei den Inhalt der unten aufgeführten Adresse zu findenden Inhalt ab.

Mit Strg + Xschließt du das Programm. Der Editor wird dich fragen, ob er die Datei überschreiben soll. Wir bestätigen mit Y für Yes und bestätigen die Eingabe noch einmal mit Enter.

https://blog-unixag.stud.unixag.net//shares/nginx.conf

Oder wir nutzen den Befehl curl.

curl -fsSL https://blog-unixag.stud.unixag.net//shares/nginx.conf -o nginx.conf


Danach können wir im Terminal mit folgendem Befehl

sudo docker compose up -d

die Services starten. Dies könnte je nach Internetverbindung einige Zeit dauern. Docker sucht als erstes lokal, ob er die benötigten Images findet, falls nicht, werden diese auf hub.docker.com heruntergeladen. Das -d in dem Befehl bedeutet, dass er die Anwendung nach dem Erstellen detached, das im Grunde bedeutet, dass Linux diesen Prozess als Hintergrundprozess startet (auch unter Linux als Daemonmode bezeichnet).

Nun können wir im Webbrowser deiner Wahl unter

localhost:8080

die Nextcloud Instanz erreichen.

Nextcloud wird dich im Folgenden bitten, einen Hauptnutzer anzulegen.

Und fertig. Du hast jetzt eine funktionierende Cloud.


Um die Seite noch im kompletten Netzwerk zu erreichen, muss noch der erlaubte Netzwerkbereich in der Nextcloud in der config.php angepasst werden. Die Konfigurationsdatei findest du in einem Unterverzeichnis, in dem die docker-compose.yml gestartet wurde. Wenn du dich in dem Verzeichnis befindest in dem die Docker-Compose.yml liegt, kannst du mit dem Befehl sudo nano config/config.php, die Datei wieder mit Nano öffnen. Der Inhalt der Datei könnte wie folgt aussehen. Lass dich nicht beirren. Wir müssen nur eine Zeile ändern, die grün umrandete ist zu ergänzen. Für unseren Fall nutzen wir die IP Adressbereich 10.21.5.*. Das Symbol * ist ein Platzhalter für alle Geräte in diesem Netz. Für gewöhnlich ist der IP Bereich bei dir zu Hause eher in der Form 192.168.X.X. Das kannst du in deinem Router herausfinden.

Mit Strg + Xschließt du das Programm. Der Editor wird dich fragen, ob er die Datei überschreiben soll. Wir bestätigen mit Y für Yes und bestätigen die Eingabe noch einmal mit Enter .