Nextcloud als Docker-Container

Eine Nextcloud kann auf mehrere Varianten installiert werden. Hier erfahren Sie, wie die Nextcloud als Docker-Container bereitgestellt wird.

Sie finden hierzu auch ein Howto-Video auf Youtube. Folgen Sie einfach diesem Link oder schauen Sie sich das Video direkt an.

Inhaltsverzeichnis

Installation Docker

Um die Nextcloud mittels eines Dockercontainers bereitzustellen, muss Docker selbst auf dem Zielsystem installiert werden.

sudo apt-get -y install docker docker-compose docker.io

Verzeichnisstruktur anlegen

Docker-Container speichern normalerweise die Daten nicht persistent, so dass bei einem Neustart des Containers die Daten verloren sind. Bei einer Cloud-Lösung wie der Nextcloud sollte dies vermieden werden, um die Daten auch nach einem Neustart behalten zu können.

Aus diesem Grund wird eine Verzeichnisstruktur angelegt, in der die persistenten Daten abgelegt werden.

Hier ein Beispiel, welches auch in dieser Anleitung genutzt wird. Sie können die Pfade auch nach Ihren eigenen Bedürfnissen anpassen.

Das Hauptverzeichniss mit den Konfigurationsdateien und der Datenbank legen wir unter /docker/nextcloud/ ab.

sudo mkdir -p /docker/nextcloud

Während der Bereitstellung des Docker-Containers (Befehl muss im Verzeichnis ausgeführt werden) werden alle weiteren Ordner automatisch angelegt.

Lediglich das Daten-Verzeichnis legen wir an einem anderen Ort ab, z.B. direkt unter /nextcloud-data.

sudo mkdir -p /nextcloud-data

Diese Art hat den Vorteil, dass Sie die Daten zum Beispiel auch von einem NAS-System einbinden können.

Docker-Compose

Die Bereitstellung der Nextcloud führen wir mittels Docker-Compose durch. Dies hat mehrere Vorteile.

  • Nutzung von Konfigurations-Dateien
  • Bereitstellung mehrerer Container zur gleichen Zeit
  • Einfache Update-Möglichkeit

Dazu wechseln wir in das Verzeichnis, aus dem wir die Container bereitstellen werden.

cd /docker/nextcloud/

In diesem Ordner legen wir nun eine Datei mit dem Namen docker-compose.yml an.

sudo vi docker-compose.yml

Wir füllen diese mit folgendem Inhalt.

version: '3'

volumes:
 data:
 config:
 db:

services:
 nextcloud-db:
  image: mariadb
  container_name: nextcloud-db
  restart: always
  volumes:
   - ./db:/var/lib/mysql
  environment:
   - MYSQL_ROOT_PASSWORD=
   - MYSQL_PASSWORD=
   - MYSQL_DATABASE=nextcloud
   - MYSQL_USER=nextcloud
 nextcloud:
  image: nextcloud
  container_name: nextcloud
  restart: always
  ports:
   - 8080:80
  depends_on:
   - nextcloud-db
  volumes:
   - ./config:/var/www/html/config
   - /nextcloud-data:/var/www/html/data
   - ./apps:/var/www/html/apps
   - ./custom_apps:/var/www/html/custom_apps

Um zu verstehen, wie das Dokument aufgebaut ist, folgt hier die Erklärung.

Am Beginn der Datei wird die Version der Konfigurationsdatei sowie die drei Platzhalter für die Volumen definiert.

version: '3'

volumes:
 data:
 config:
 db:

Es folgt die Definition der Dienste, die den eigentlichen Teil der Applikation ausmachen.

Hier wird mit dem Öffnungstag services: begonnen, gefolgt von den einzelnen Diensten.

Nextcloud benötigt für den Betrieb eine Datenbank, in der alle Metadaten gespeichert werden. Diese wird hier nextcloud-db genannt.

 nextcloud-db:
  image: mariadb
  container_name: nextcloud-db
  restart: always
  volumes:
   - ./db:/var/lib/mysql
  environment:
   - MYSQL_ROOT_PASSWORD=
   - MYSQL_PASSWORD=
   - MYSQL_DATABASE=nextcloud
   - MYSQL_USER=nextcloud

Es müssen lediglich die Umgebungsvariablen, speziell MYSQL_ROOT_PASSWORD und MYSQL_PASSWORD gesetzt werden.

Der Nextcloud-Container selbst wird als Service nextcloud beschrieben.

 nextcloud:
  image: nextcloud
  container_name: nextcloud
  restart: always
  ports:
   - 8080:80
  depends_on:
   - nextcloud-db
  volumes:
   - ./config:/var/www/html/config
   - /nextcloud-data:/var/www/html/data
   - ./apps:/var/www/html/apps
   - ./custom_apps:/var/www/html/custom_apps

Hier sind keine weiteren Umgebungsvariablen zu setzen.

Die einzelnen Tags innerhalb der Service-Definitionen haben folgende Bedeutung.

TagFunktion
imageDas Image, welches aus dem Docker-Hub heruntergeladen wird
container_nameFriendly-Name für den Docker-Container
restartNeustart-Policy, hier wird der Container „immer“ neu gestartet sollte er nicht laufen
portsFreigegebene Ports, damit der Container auch von außerhalb erreichbar ist, z.B. dem eigenen PC
depends_onAbhängigkeit von einem anderen Service, hier beispielhaft der zuvor definierten Datenbank. Der Container startet nur, wenn der andere Container vorhanden ist und läuft
volumesDefinition der persistenten Datenspeicher
environmentUmgebungvariablen, wie z.B. Passwörter oder Namen

Container starten

Das Starten der Container gestaltet sich sehr einfach, da nur 2 Befehle notwendig sind.

sudo docker-compose pull

Hiermit werden die Pakete auf das System heruntergeladen.

sudo docker-compose up -d

Hiermit werden die Container gestartet.

Die Nextcloud-Instanz ist nun unter http://[Docker-IP]:8080 erreichbar und kann über die Weboberfläche aufgerufen werden.

Wählen Sie hier noch die MySQL als Datenbank aus und geben Sie die Daten aus der Konfigurationsdatei ein.

Zu beachten ist, dass der Hostname der Datenbank hier nextcloud-db heißen muss, damit der Docker-Container auf die richtige Datenbank zeigt. Anderenfalls schlägt die Einrichtung fehl.

Fertig ist die eigene Nextcloud.

Nextcloud 20 Dashboard

Zu beachten ist, dass diese Art der Bereitstellung nur für den rein internen Gebrauch zu empfehlen ist, da keinerlei SSL-Verschlüsselung genutzt wird. Außerdem sollten die Kennwörter gegen sichere Kennwörter getauscht werden, diese hier dienen nur zur Demonstration.

Haben Sie Fragen? Gerne unterstützen wir Sie bei der Einrichtung. Kontaktieren Sie uns einfach! Besuchen Sie auch gerne unsere Nextcloud Seite für mehr Informationen!

Sascha Jelinek