Nextcloud

Nachdem der Raspberry Pi 5 mit allen Komponenten zufriedenstellend läuft,möchte ich ihn für Nextcloud nutzen.

Nextcloud Logo
Nextcloud Logo

Nextcloud

Dank Nextcloud ist eine freie, selbst gehostete Cloud-Lösung, die dir die volle Kontrolle über deine Daten gibt. Sie entstand 2016 als Abspaltung (Fork) von ownCloud, initiiert vom OwnCloud-Mitgründer Frank Karlitschek, nachdem es Differenzen über die zukünftige Ausrichtung des Projekts gab. Ziel war es, eine offenere und stärker community-getriebene Alternative zu schaffen. Nextcloud wird unter der Open-Source-Lizenz AGPLv3 entwickelt und ist somit frei nutzbar, veränderbar und weiter verteilbar – auch im kommerziellen Umfeld. Die Software ist überwiegend in PHP geschrieben und nutzt moderne Webtechnologien sowie eine relationale Datenbank wie Maria DB oder PostgreSQL im Backend. Dank einer modularen Architektur mit zahlreichen Apps lässt sich Nextcloud leicht erweitern – vom Datei-Hosting über Kalender und Kontakte bis hin zu Videokonferenzen oder kollaborativer Dokumentbearbeitung.

Hardware

Nextcloud benötigt in meinem Umfeld keine große Serverhardware. Ich nutze

16GB Hauptspeicher sind für Nextcloud nicht zwingend erforderlich, aber mit der 2TB SSD ist er für Nextcloud einfach perfekt geeignet.

Installation

Ich installiere Nextcloud im Dockercontainer. Maria DB läuft bereits auf meinem Datenbank Raspi, so dass ich den auch nutze. Alternativ wäre es möglich, die Datenbank auch direkt mit Nextcloud zu installieren.

Datenbank einrichten

Zunächst richte ich die Datenbank und den User ein.

create user 'nextcloud'@'%' IDENTIFIED BY '<db_user_passwort>';
create database nextcloud CHARACTER SET utf8mb4;
GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextcloud'@'%';
FLUSH PRIVILEGES;

Die benötigten Tabellen legt Der Nextcloud Container später automatisch an.

Verzeichnisse anlegen

Meine Daten-SSD ist unter /mnt/nextcloud gemounted. Dort müssen jetzt einige Verzeichnisse für den Container angelegt werden.

#!/usr/bin/bash

BASEDIR=/mnt/nextcloud/nextcloud
mkdir -pv ${BASEDIR}/apps
mkdir -pv ${BASEDIR}/html
mkdir -pv ${BASEDIR}/data
mkdir -pv ${BASEDIR}/config

Danach sollten unter /mnt/nextcloud/nextcloud diese Verzeichnisse existieren.

Die Verzeichnisse für die Docker Volumes

Container erzeugen

Für den Container dient dieses docker-compose.yml

version: "3.8"

services:
  nextcloud:
    image: nextcloud:latest
    container_name: nextcloud
    restart: always
    ports:
      - "9000:80"  # Nur intern, nginx übernimmt externen Zugang
    environment:
      - MYSQL_PASSWORD=<db_user_passwort>
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
      - MYSQL_HOST=database
    volumes:
      - /mnt/nextcloud/nextcloud/html:/var/www/html
      - /mnt/nextcloud/nextcloud/apps:/var/www/html/custom_apps
      - /mnt/nextcloud/nextcloud/config:/var/www/html/config
      - /mnt/nextcloud/nextcloud/data:/var/www/html/data
    networks:
      - nextcloudnet

networks:
  nextcloudnet:
    driver: bridge

Achte darauf, dass Datenbank Passwort für den User so wie oben zu setzen. Wenn du Maria DB auf dem gleichen Raspberry Pi laufen lassen willst, findest du genügend Beispiele im Netz. In dem Fall musst du die Variable MSQL_HOST anders setzen oder weglassen.

mit docker-compose up -d erzeugst du den Container.

Nextcloud installation

Der Container ist jetzt fertig und der Nextcloud Webserver kann über TCP Port 9000 aufgerufen werden. Dies ist aber nur im internen Netz möglich. Den Zugriff von außen lassen wir später von nginx regeln.

Im Browser rufe ich den URL http://<hostname_oder_ip>:9000 auf.

Anlegen des Admin Accounts.
Anlegen des Admin Accounts.

Als erstes müssen wir das Konto des Administrators anlegen. Gib dafür unbedingt ein starkes Passwort ein, damit der Zugang von außen abgesichert ist. Klicke dann auf Installieren.

Jetzt müssen wir uns ein paar Minuten gedulden, in der Zeit installiert Nextcloud die notwendigen Dateien und initialisiert die Datenbanktabellen.

Danach fragt Nextcloud dich, welche Apps installiert werden sollen.

Ich klicke einfach auf Empfohlene Apps installieren.

Sobald dieser Prozess beendet ist, erscheint der Hauptbildschirm von Nextcloud.

Der Hauptbildschirm nach erfolgreichen Setup.
Der Hauptbildschirm nach erfolgreichen Setup.

Damit ist Nextcloud prinzipiell einsatzbereit.

Remotezugriff

Um z.B. meine Fotos vom Smartphone mit der Nextcloud zu synchronisieren, benötigst zu zunächst mal einen DynDNS Dienst, der eine Domain auf die dynamisch vergebene IP-Adresse deines Internetproviders mapped.

nginx Konfiguration

In nginx müssen wir zunächst einen neuen Proxy Host erzeugen.

nginx Dialog zum Anlegen eines neuen Proxy Host

Unter Domain Names trägst du die Domain ein, die du bei deinem DynDNS ausgewählt hast.

Bei Forward Hostname / IP gibst du die IP-Adresse deines Nextcloud Raspis ein, bei Forward Port die 9000, die wir im docker-compose.yml eingetragen haben.

Danach forderst du in der Registerseite SSL noch ein neues SSL Zertifikat an, um eine verschlüsselte Verbindung mit https:// zu ermöglichen.

Registerseite SSL im New Proxy Dialog
Registerseite SSL im New Proxy Dialog

Dazu wählst du einfach „Request a new SSL Certificate“ aus, trägst deine eMail-Adresse ein und akzeptierst die Nutzungsbedingungen.

Jetzt kannst du mit Save den neuen Proxy Host anlegen. nginx wird automatisch ein Let’s Encrypt Zertifikat erstellen und dies auch automatisch erneuern, sobald es notwendig sein sollte.

trusted_domains

In der Konfiguration von Nextcloud müssen wir jetzt noch die trusted_domains eintragen, da sonst das Forwarding von nginx nicht akzeptiert wird. Dazu öffnest du die Datei config.php

Dort müssen einige Optionen wie folgt gesetzt sein.

 'trusted_domains' => 
  array (
    0 => 'duncan:9000',
    1 => 'localhost',
    2 => '192.168.178.70',         // Nextcloud selbst
    3 => 'database',                // Reverse Proxy Hostname
    4 => 'nextcloud.domain',    // Domain, die nginx weiterleitet
  ),
  'overwrite.cli.url' => 'https://nextcloud.domain',
  'overwritehost' => 'nextcloud.domain',
  'overwriteprotocol' => 'https',

Überall dort, wo nextcloud.domain steht, trägst du deinen DynDNS Domainnamen ein.

Nun noch einmal den Container neu starten docker restart nextcloud.

Jetzt solltest du mit https://nexcloud.domain auf deine neue Nextcloudinstanz zugreifen können und Desktop-PC, Laptop und Smartphone damit verbinden.

Die Synchronisation meines bereits bestehenden nextcloud Verzeichnisses hat bei ca. 42GB Umfang etwa 2h gebraucht.

Fazit

Durch dieses Setup habe ich jetzt eine Cloudlösung, die unabhängig von kommerziellen und politischen Interessen innerhalb meines eignen Kontrollbereichs liegt.

Schreibe einen Kommentar

Insert math as
Block
Inline
Additional settings
Formula color
Text color
#333333
Type math using LaTeX
Preview
\({}\)
Nothing to preview
Insert
Creative Commons License
Except where otherwise noted, the content on this site is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
Olli Graf - raspithek.de
WordPress Cookie Hinweis von Real Cookie Banner