• Beitrags-Kategorie:Raspberry Pi
  • Beitrags-Kommentare:0 Kommentare
  • Lesedauer:16 min Lesezeit

Was ist Nextcloud?

Nextcloud ist eine freie Software für das Speichern und Verwalten von Dateien und ist bestens dafür geeignet, deine eigene (private) „Cloud“ aufzubauen. Du wirst unabhängig von Cloudanbietern wie z.B. Google, Apple oder Amazon und hast dabei die volle Kontrolle über deine Daten. Datenmissbrauch ist dadurch weitestgehend ausgeschlossen. Für Nextcloud gibt es zudem viele Apps, so dass du damit z.B. auch Kalender und Kontakte speichern und verwalten kannst. Hier kannst du dich über die vielen weiteren Vorzüge von Nextcloud informieren.

Ein weiterer Vorteil ist, dass du die von dir benötigten Services Zug um Zug in deine eigene Cloud “verschieben” kannst – also ohne Big Bang und die Angst etwas kaputt zu machen oder gar Daten zu verlieren. Genau so mache ich das auch und daher wächst dieser Blog nach und nach mit meinen Erfahrungen, die ich hier festhalte.

Voraussetzung für die Installation

Als Voraussetzung für die Installation von Nextcloud musst du deinen Raspberry Pi bereits mit IOTStack und Portainer (optional) aufgesetzt haben. Wie du das machen kannst habe ich in diesem Beitrag bereits ausführlich beschrieben.

Nextcloud ist Datenbank-basiert und benötigt MariaDB, MySQL, PostgreSQL oder Oracle. Ich habe mich für den Einsatz von MariaDB entschieden, da ich früher (vor der Übernahme durch Oracle) dessen „Vorgänger“ MySQL schon oft eingesetzt habe.

IOTStack Services auswählen

Dieser Abschnitt führt dich durch die Installation und Konfiguration von Nextcloud sowie MariaDB. Bitte beachte, dass das Menü von IOTStack auf einem Tablet ggf. nicht korrekt dargestellt wird. Am besten verwendest du z.B. PuTTY unter Windows.
Zuerst startest du das Menü von IOTStack mit

cd IOTStack
./menu.sh

Im Menü navigierst du auf den Eintrag Build Stack und betätigst die Enter Taste. Du erhältst eine Liste aller installierbaren Services. Mit den Pfeiltasten navigierst du zu Nextcloud sowie MariaDB und selektierst beide jeweils mit der Leertaste:

Jetzt betätigst du die Enter Taste, um zurück in das Hauptmenü zu gelangen. Du siehst nun auch die Infomeldung, dass die Datei docker-compose.yml erstellt wurde:

docker-compose.yml wurde erstellt

Diese Konfigurationsdatei enthält neben den Netzwerken einen Konfigurationsabschnitt für jeden Service, den du vorher unter Build Stack ausgewählt hast und sieht im vorliegenden Fall ungefähr wie folgt aus:

version: '3.6'
services:
  mariadb:
    image: linuxserver/mariadb
    container_name: mariadb
    environment:
    - TZ=Etc/UTC
    - PUID=1000
    - PGID=1000
    - MYSQL_ROOT_PASSWORD=IOtSt4ckToorMariaDb
    - MYSQL_DATABASE=default
    - MYSQL_USER=mariadbuser
    - MYSQL_PASSWORD=IOtSt4ckmariaDbPw
    volumes:
    - ./volumes/mariadb/config:/config
    ports:
    - "3306:3306"
    restart: unless-stopped
    networks:
    - iotstack_nw
  nextcloud:
    image: nextcloud
    container_name: nextcloud
    ports:
    - "9321:80"
    volumes:
    - ./volumes/nextcloud/html:/var/www/html:rw
    restart: unless-stopped
    depends_on:
    - nextcloud_db
    links:
    - nextcloud_db
    networks:
    - iotstack_nw
    - nextcloud_internal
    environment:
    - MYSQL_HOST=nextcloud_db
    - MYSQL_PASSWORD=IOtSt4ckmySqlDbPw
    - MYSQL_DATABASE=nextcloud
    - MYSQL_USER=nextcloud
  nextcloud_db:
    image: linuxserver/mariadb
    container_name: nextcloud_db
    volumes:
    - ./volumes/nextcloud/db:/config
    environment:
    - MYSQL_ROOT_PASSWORD=IOtSt4ckToorMySqlDb
    - MYSQL_PASSWORD=IOtSt4ckmySqlDbPw
    - MYSQL_DATABASE=nextcloud
    - MYSQL_USER=nextcloud
    restart: unless-stopped
    networks:
    - nextcloud_internal
networks:
   [...]

Beachte bitte, dass ich einige Teile der Datei mit […] gekürzt habe, da diese aktuell für die Installation von Nextcloud und MariaDB keine Relevanz haben. Wenn ich mich im weiteren Verlauf auf Zeilennummern beziehe, handelt es sich dabei immer um die Zeilennummern aus obiger Konfiguration. Die Zeilennummern in der docker-compose.yml weichen von dieser Nummerierung definitiv ab.

Nextcloud konfigurieren

Öffne nun das erzeugte YAML mit einem passenden Editor. Ich verwende unter Linux generell den Vi. Eine gute Kurzanleitung findest du u.a. hier. Du kannst natürlich einen beliebigen anderen Editor deiner Wahl verwenden.

vi docker-compose.yml

Ersetze in den Zeilen 38 und 50 in den Abschnitten nextcloud und nextcloud_db das jeweils vorbelegte Passwort für die Datenbank (MYSQL_PASSWORD) durch ein individuelles starkes Passwort. Es muss bei beiden Einträgen das gleiche sein.

Um die RAID1 Festplatte in Nextcloud einbinden zu können, musst du deren Gerätenamen kennen und diese in das bestehende Linux Dateisystem (hier unter /mnt/data) einhängen bzw. mounten mit

sudo mount /dev/sda /mnt/data

Sollte das Verzeichnis des Einhängepunkts noch nicht existieren, musst du dieses vorher erstellen mit

sudo mkdir /mnt/data

Jetzt musst du die eindeutige Kennzeichnung (UUID) des externen Laufwerks ermitteln mit

sudo blkid

Bei mir sieht die Ausgabe so aus

/dev/sda: UUID="dc5d4203-be23-443d-be38-55eb9fc13717" TYPE="ext4"
/dev/sdb1: LABEL_FATBOOT="boot" LABEL="boot" UUID="EBBA-157F" TYPE="vfat" PARTUUID="d0fcd390-01"
/dev/sdb2: LABEL="rootfs" UUID="b3ce35cd-ade9-4755-a4bb-1571e37fc1b9" TYPE="ext4" PARTUUID="d0fcd390-02"

Du musst die UUID des entsprechenden Laufwerks (bei mir ist es jene aus Zeile 1) kopieren, der Datei /etc/fstab eine neue Zeile wie die folgende am Ende hinzufügen und speichern. Die UUID musst du natürlich mit der deines Laufwerks ersetzen …

UUID=dc5d4203-be23-443d-be38-55eb9fc13717 /mnt/data ext4 defaults 0 2

In dieser Datei werden alle Laufwerke aufgeführt, die beim Booten eingebunden (gemounted) und wie diese konfuguriert werden sollen.

Nach einem Reboot öffnest du die Datei /home/pi/IOTStack/docker-compose.yml und fügst im Abschnitt nextcloud/volumes die folgende Zeile 3 ein (vor oder nach dem bereits vorhandenen Eintrag). Setze dabei den Pfad auf den, den du zuvor beim Einbinden des Laufwerks angegeben hast. Dieser lautet bei mir /mnt/data. Denk daran, zum Einrücken ausschliesslich Leerzeichen zu verwenden, da Tabs nicht erlaubt sind und deren Verwendung zu Fehlern führen werden.

  nextcloud:    
    volumes:
    - ./mnt/data:/mnt/data

Docker Container bauen lassen

Nach dem Speichern der YAML Datei und dem Verlassen des Editors führst du auf der Konsole den folgenden Befehl aus (zwingend ohne sudo)

docker-compose up -d

Die Aufgabe von docker-compose ist es, die von dir selektierten Images aus einem öffentlichen Repository herunterzuladen, zu entpacken und diese als Container innerhalb von Docker bereitzustellen und zu starten.

Auf der Konsole sieht dies währendessen ungefähr so aus:

Alle nachfolgenden Aufrufe von docker-compose aktualisieren nur noch die Konfiguration – solltest du diese verändert haben. Beachte aber, dass z.B. ein Passwortwechsel der Nextcloud Datenbank so nicht mehr möglich ist. Neue Images werden nur heruntergeladen, wenn du die zu verwendende Version eines Images in docker-compose.yml angepasst hast oder wenn du zuvor ein Image explizit z.B. via Portainer gelöscht hast. Durch das Löschen bzw. Aktualisieren von Images bleiben die eigentlichen Daten (z.B. Datenbanken oder Config Dateien), unter /volumes unberührt. Im Übrigen kannst du auch jederzeit Images manuell hinzufügen und von docker-compose installieren lassen.

Du kannst nun prüfen, ob deine Container korrekt erzeugt und gestartet wurden mit

docker ps

Die Ausgabe sieht dann ungefähr wie folgt aus (scrolle/ wische nach links, um alles zu sehen):

CONTAINER ID   IMAGE                    COMMAND                  CREATED        STATUS      PORTS                                                              NAMES
4675380aab5e   nextcloud                "/entrypoint.sh apac…"   6 days ago    Up 5 days   0.0.0.0:9321->80/tcp                                               nextcloud
8d8de9c7d4f3   linuxserver/mariadb      "/init"                  6 days ago   Up 5 days   3306/tcp                                                           nextcloud_db
379f0c616902   linuxserver/mariadb      "/init"                  6 days ago   Up 5 days   0.0.0.0:3306->3306/tcp                                             mariadb
2c3dfac8cca8   portainer/portainer-ce   "/portainer"             6 days ago   Up 5 days   0.0.0.0:8000->8000/tcp, 0.0.0.0:9002->9000/tcp                     portainer-ce

Nextcloud Einrichten

Dateiordner konfigurieren

Um die externe Festplatte einzubinden, hast du oben bereits alles vorbereitet. Nun musst du Nextcloud noch mitteilen, in welchem Verzeichnis es Dateien ablegen soll. Hierfür öffnest du die Nextcloud Konfigurationsdatei mit

sudo vi volumes/nextcloud/html/config/config.php

Dann suchst du nach dem Eintrag datadirectory und änderst dessen Wert auf /mnt/data
Die Zeile muss nun so aussehen

'datadirectory' => '/mnt/data',

Administratorkonto anlegen – erster Start

Nun kannst du dich an die Einrichtung von Nextcloud machen, indem du im Browser die Adresse z.B. http://192.168.2.82:9321 aufrufst:

Einrichtung von Nextcloud

Nun gibst du einen Benutzernamen (z.B. admin oder administrator) und ein Passwort für das Administrator Konto ein. Da es kein separates Eingabefeld für die Wiederholung des Passworts gibt, musst du darauf achten, dass es sich auch tatsächlich um das richtige Passwort handelt. Am besten lässt du es von einem Passwortmanager generieren und kopierst es von diesem dann in das Passwortfeld. Hast du das Passwort nicht notiert oder vergessen musst du es später mühsam über die Kommandozeile auf der Datenbank ändern.

Jetzt kannst du auf Installation abschliessen klicken, um die Initialisierung von Nextcloud zu starten. Dieser Vorgang dauert ca. 5 bis 10 Minuten. Sollte (wie es bei mir passiert ist) die anschliessende Weiterleitung nicht funktionieren rufst du die Adresse, mit der du die Einrichtung gestartet hast, einfach erneut auf – die Seite neu zu laden genügt ggf. nicht.

Du siehst nun die Login Seite und loggst dich mit den zuvor festgelegten Anmeldaten ein. Nach dem Login wird die folgende Startseite angezeigt – ggf. wird noch ein Slider mit Features angezeigt, den du oben rechts durch einen Klick auf das X verschwinden lassen kannst:

Nextcloud Einstiegsseite des Administrators

Apps für Kalender und Kontakte installieren

Wenn du neben Dateien auch deine Kontakte und Termine von Nextcloud verwalten lassen willst, musst du noch die entsprechenden Apps installieren. Öffne dafür das Admin Menü oben rechts durch einen Klick auf das runde Icon mit dem A und dort im Menü dann auf + Apps. Es öffnet sich die Übersicht der standardmässig installierten Apps

Vorinstallierte Nextcloud Apps

Klick dann auf Vorgestellte Apps. Es handelt sich dabei um die Liste aller Apps, die durch oder von der Nextcloud Community entwickelt wurden und die für einen produktiven Einsatz geeignet sind:

vorgestellte Nextcloud Apps

Du kannst die Apps Calendar und Contacts mittels Klick auf Herunterladen und aktivieren installieren. Nach der Installation siehts du oben in der Toolbar zwei neue Einträge für die beiden Apps:

Kontakte und Kalender nach der Installation im Nextcloud Toolbar

Benutzer hinzufügen

Nun kannst du auch die erforderlichen Benutzer z.B. für jedes deiner Familienmitglieder anlegen. Mach das auf jeden Fall auch dann, wenn du nur ein einzelnes Konto benötigen solltest. Klicke dafür wieder oben rechts auf das runde Icon mit dem A und dort im Menü dann auf Benutzer. Du gelangst so zur Benutzerverwaltung, über die du beliebig viele Benutzer anlegen kannst – jeder natürlich mit eigenem Kalender und Kontakten. Jeder Benutzer hat die Möglichkeit seinen Kalender mit einem anderen Benutzer zu teilen.

Wie weiter?

Das wars auch schon. Grundsätzlich kannst du Nextcloud nun verwenden – zumindest von Android und Windows aus. Apple Geräte verlangen z.B. für die Kalendersynchronisierung zwingend eine HTTPS Verbindung.
Im nächsten Beitrag zeige ich dir, wie du Nextcloud mit Traefik und einem selbst generierten Zertifikat ganz einfach mittels HTTPS verwenden kannst und wie du deine Kontakte und Termine von Nextcloud verwalten lassen kannst. Die Beiträge werde ich hier verlinken, sobald diese bereitstehen.

Schreibe einen Kommentar

You are currently viewing Nextcloud auf Raspberry Pi mit IOTStack installieren