Netzwerk

ownCloud-Server im Heimnetz einsetzen

Ein ownCloud-Server ist an sich nicht ganz trivial, per Container wird es aber recht simpel

ownCloud werden viele Nutzer wohl nur als Desktop-Client einsetzen, den Server-Betrieb übernehmen meist Webhoster oder spezielle Dienstleister. Aber freilich könnt Ihr auch Eure ganz persönliche ownCloud-Instanz betreiben, schließlich ist es Open-Source-Software. So könnt Ihr ganz auf Dritte verzichten und die Dateien bleiben komplett unter Eurer Obhut. Wie das Ganze mit einem Docker-Container geht, seht Ihr hier.

ownCloud im Docker-Container

Natürlich könnt Ihr den ownCloud-Server auch ganz regulär in den meisten Linux-Distributionen installieren, allerdings ist das mit einigem Aufwand verbunden. Einfacher geht es per Container, allerdings bleibt dabei ein ganz wichtiger Punkt offen: Der Speicherort der Daten.

Standardmäßig speichert der ownCloud-Container Daten im Verzeichnis /var/lib/docker/volumes – wo sie vermutlich absolut niemand haben will. Stattdessen kommt das Verzeichnis auf eine externe USB-Festplatte – ein eigentlich simples Unterfangen, das aber allerlei Problemquellen parat hält ;) Bei Bedarf: Wir haben auch eine Docker-Einführung.

Hier läuft ownCloud auf dem MSI Cubi mit Ubuntu Server, der hier vor einiger Zeit den Dienst als Eigenbau-NAS angetreten hat. Grundsätzlich könnt Ihr ownCloud-Container aber auf jedem Rechner mit (fast) jedem Betriebssystem aufsetzen.

1. USB-Festplatte vorbereiten

Vorab-Vorsicht: Vielleicht habt Ihr noch einen Speicher herumliegen, ein Wechselmedium vom Windows-Rechner zum Beispiel. Und vermutlich ist das mit dem Dateisystem exFAT oder auch NTFS formatiert. Das ist beispielsweise für Netzwerkfreigaben auch durchaus okay. Aber der ownCloud-Docker-Container scheint damit nicht zurecht zu kommen, es scheint an Rechteproblemen zu scheitern, vermutlich, da sich Ordnern auf diesen Dateisystemen keine Besitzer zuordnen lassen, irgendwie so … Im Detail ist das aber egal, die einfache Lösung: Formatiert das Teil einfach mit EXT4.

Wenn Ihr schon einen Ordner auf einem bestehenden System habt, könnt Ihr diesen Punkt komplett überspringen, achtet aber darauf, dass der Ordner für ownCloud beschreibbar ist, was über den Nutzer www-data erledigt wird, siehe unten.

Hängt die Platte an den Rechner und schaut zunächst, als welches Gerät sie im System hängt:

blkid

Ihr bekommt dann eine Liste mit Partitionen, in der Art:

/dev/sdc1: LABEL="IRGENDEIN KRYPTISCHES ZEUGS" UUID="F022-CD20..." TYPE="exfat" PARTUUID="872933-01"

Zur Info: In der Regel ist die erste Festplatte sda und die zweite sdb und so weiter – und die Partitionen hängen dann einfach als Ziffern dahinter, so dass sda1 dann meist die Systempartition ist (muss aber nicht). (Die UUID ist übrigens die eindeutige Identifikationsnummer des Datenträgers – wird später noch wichtig.)

In diesem Fall war es eine externe USB-Festplatte, die vorher an einem Fernseher hing (daher das kryptische Label), mit exFAT formatiert war und hier als sdc1 im System lag.

Formatiert diese Partition, hier eben scd1, nun mit EXT4 – und checkt doppelt und dreifach, dass es sich auch um die richtige Platte handelt!

sudo mkfs.ext4 /dev/sdc1

Nun könnt Ihr die Partition erstmal zum Testen mounten, etwa in /media/ocfiles:

mkdir /media/ocfiles
sudo mount /dev/sdc1 /media/ocfiles

Wenn das funktioniert, bindet die Partition in die Datei /etc/fstab ein, damit das Mounten beim nächsten Startvorgang automatisch abläuft – über die UUID, die Ihr oben schon über den Befehl blkid gesehen habt:

UUID=F022-CD20... /media/ocfiles auto nosuid,nodev,nofail 0 0

Etwas ausführlicher zeigen wir das Prozedere hier. Ändert jetzt noch den Besitzer des Ordners nach www-data (zumindest hier hakt es sonst):

sudo chown www-data /media/ocfiles

www-data ist der Standardnutzer, den Webserver unter zum Beispiel Ubuntu verwenden, chown steht für Change Owner.

Am Ende ist nur Eines wichtig: Ihr braucht einen Ordner, auf den ownCloud zugreifen kann – danach geht es mit der eigentlichen ownCloud-Einrichtung weiter.

2. Docker Compose installieren

Zunächst benötigt Ihr natürlich Docker selbst, genauer gesagt Docker Compose, unter Ubuntu geht das mit

sudo apt-get install docker-compose

Hinweis: Die offizielle Anleitung für die Installation ist deutlich umfangreicher, aber hier hat auf mehreren Ubuntus genau diese Anweisung genügt, um alles Nötige zu installieren. Wenn Ihr es offiziell haben wollt oder etwas nicht funktioniert, müsst Ihr Euch durch die Anleitung für Euer System hangeln.

Testen könnt Ihr Docker und Docker Compose mit

sudo docker version
sudo docker-compose version

docker-compose kann Container über vorgegebene Konfigurationsdateien im YAML-Format (.yml-Dateiendung) erstellen – und eine solche bekommt Ihr eben von ownCloud.

3. ownCloud installieren

Wenn nun Speicherordner und Docker Compose funktionieren, könnt Ihr endlich ownCloud installieren. Erstellt Euch dazu zunächst einen Arbeitsordner und wechselt dorthin, beispielsweise in Eurem Nutzerverzeichnis:

mkdir owncloud-docker-server
cd owncloud-docker-server

Nun benötigt Ihr zwei Dateien: Die YAML-Konfigurationsdatei und eine Datei namens .env für Eure persönlichen Umgebungsvariablen. Zunächst die env-Datei:

cat << EOF > .env
OWNCLOUD_VERSION=10.8
OWNCLOUD_DOMAIN=localhost:8080
ADMIN_USERNAME=admin
ADMIN_PASSWORD=admin
HTTP_PORT=8080
EOF

Dieses cat-EOF-Konstrukt schreibt einfach nur den folgenden Text bis EOF (End of File) in die Datei .env – nur ein hübscher Weg, damit das auch per Cut&Paste funktioniert ;) Nutzername und Passwort könnt/solltet Ihr freilich ändern.

Die YAML-Datei docker-compose.yml bekommt Ihr über:

wget https://raw.githubusercontent.com/owncloud/docs/master/modules/admin_manual/examples/installation/docker/docker-compose.yml

In dieser Datei müsst Ihr nun eine Zeile ändern. Im Bereich services wird ganz oben owncloud definiert und dort ganz unten das genutzte Volume (Docker-eigener Speicherort):

volumes:
- files:/mnt/data

files ist ein Named Volume, also ein Volume mit Namen – das immer unter var/lib/docker/volumes abgelegt wird. /mnt/data ist das Zielverzeichnis, also der Ort, an dem das Volume im Container eingehängt wird (niemals ändern!). Ändert diese Zeile einfach wie folgt, um das oben erstellte Verzeichnis auf der USB-Festplatte zu nutzen:

volumes:
- /media/ocfiles:/mnt/data

Nun handelt es sich um einen Bind Mount, also einen Speicher, der nicht an einen Namen gebunden ist (im Original eben das Volume „files“), sondern an ein Verzeichnis auf dem Gastgebersystem/Host. So existieren die Daten auch ganz unabhängig vom ownCloud-Container im Dateisystem.

Das war es auch schon, startet nun die YAML-Konfigurationsdatei mit docker-compose – wobei Ihr natürlich immer noch in Eurem Projektordner (owncloud-docker-server) mit den beiden Dateien .env und docker-compose.yml sein müsst:

sudo docker-compose up -d

up startet die Konfiguration im aktuellen Ordner, -d steht für Detached (entkoppelt) und meint, dass es im Hintergrund läuft, so dass der Terminal weiter genutzt werden kann.

Wenn Ihr Euch nun den laufenden Container anschauen wollt, geht das mit

sudo docker-compose ps

Ihr seht dann drei Container:

      Name                    Command                  State                        Ports
-----------------------------------------------------------------------------------------------------------
owncloud_mariadb   docker-entrypoint.sh --max ...   Up (healthy)   3306/tcp
owncloud_redis     docker-entrypoint.sh --dat ...   Up (healthy)   6379/tcp
owncloud_server    /usr/bin/entrypoint /usr/b ...   Up (healthy)   0.0.0.0:8080->8080/tcp,:::8080->8080/tcp

mariadb und redis sind interne Datenbanken für die Verwaltung, wichtig ist owncloud_server: Hier seht Ihr nämlich die Portweiterleitung 8080->8080. Und darüber greift Ihr auf ownCloud zu: Wenn Ihr im Browser nun localhost:8080 aufruft, wird der Port 8080 aus dem Container auf Port 8080 auf dem Host geleitet – das ist der Standardport der ownCloud-Weboberfläche. Das funktioniert natürlich überall im Heimnetz mit der IP des Docker-Computers, also beispielsweise 192.168.178.100:8080.

4. ownCloud einrichten

Der Rest ist jetzt einfach nur noch ownCloud. Ruft die Weboberfläche auf, meldet Euch mit den oben vergebenen Login-Daten an und beginnt mit der ownCloud-Administration. Als Schnelleinstieg:

  1. Deaktiviert die Mail-Benachrichtigungen unter Settings (oder richtet einen Mailserver ein).
  2. Legt einen neuen Nutzer an und vergebt für diesen ein Passwort.
  3. Installiert den ownCloud-Client.
  4. Legt ein neues Konto mit dem Nutzernamen und der Adresse https://192.168.178.100:8080 an.
  5. Startet die Synchronisierung.

Wichtig: Ihr müsst http mit eingeben, da der Zugriff nicht via HTTPS funktioniert, was ownCloud standardmäßig ergänzen würde! Da schon einige Demodateien im ownCloud-Ordner liegen, solltet Ihr sofort einen Sync-Vorgang sehen und anschließend die Dateien lokal vorfinden.

Auf dem Server seht Ihr die Dateien mit

sudo -u www-data ls /media/ocfiles/files/NUTZERNAME/files
oder
sudo ls /media/ocfiles/files/NUTZERNAME/files

Damit steht das Grundgerüst und Ihr könnt Euch um weitere Einstellungen kümmern – ownCloud hat jede Menge davon! Insbesondere das Thema Sicherheit müsst Ihr Euch anschauen, sofern Ihr nicht allen Teilnehmern im Netzwerk traut – im privaten Heimnetz sollte das aber nicht das Problem sein ;)

Es gibt sicherlich einige Dinge, die man besser machen und ergänzen könnte (Rechteangelegenheiten, offizieller Installationsweg, Backups der Volumes), aber dies dürfte die einfachste Variante sein, um ein erstmal funktionierendes System zu bekommen – hier nochmal als TLDR-Version:

  1. docker-compose installieren.
  2. Für www-data beschreibbaren Ordner erstellen.
  3. .env und docker-compose.yml erstellen.
  4. In docker-compose.yml das Bind Mount setzen (/media/ocfiles:/mnt/data).
  5. Starten mit docker-compose up -d
  6. Zugreifen per localhost:8080

Aber wie gesagt, Ihr könnt auch alles manuell aufsetzen, wenn Ihr Container nicht mögt. Falls doch: Hier mehr zu Docker und Containern.

Troubleshooting

Probleme können sich hier an vielen Stellen einschleichen. Mit Glück ist es nur eines der folgenden:

Restarting Loop: Wenn „docker-compose ps“ beim ownCloud-Server ständig starting oder restarting anzeigt, könnte das zum Beispiel an einem nicht beschreibbaren Datenverzeichnis liegen. Versucht es testweise mit der Original-YML-Datei – wenn es damit funktioniert, dürfte es an Eurer einzigen Änderung liegen, dem Datenverzeichnis.

Weboberfläche geht nicht: Schaut, ob die Portweiterleitung bei „docker-compose ps“ angezeigt wird. Es kann schon mal passieren, dass das nicht klappt, weil zum Beispiel irgendwelche anderen Dinge noch laufen. Versucht es mit einem Neustart mit „docker-compose restart“.

Irgendwas geht nicht: Zu den schönen Dingen an Containern gehört, dass man sie fix löschen und wiederherstellen kann – das Stoppen und Löschen von Images und Volumes erledigt:

sudo docker-compose down --rmi all --volumes

Hilfe zu docker-compose und dessen Kommandos bekommt Ihr über

docker-compose --help
docker-compose down --help

und so weiter.

Fehlermeldungen könnt Ihr unter Umständen in den Log-Dateien finden:

docker-compose logs --follow owncloud

Viel Spaß beim Stöbern …

Und last but not least: Auch unsere hauseigene Linux-Hilfe für den Terminal, cli.help, bietet etwas Docker-Unterstützung:

curl cli.help/docker

Und hier nochmal der Shopping-Tipp für passende Heimserver-Hardware – aber wir freuen uns auch, wenn Ihr über den Link Pesto kauft … aus Gründen ;)

(* = Affiliate-Link / Bildquelle: Amazon-Partnerprogramm)

Mirco Lang

Freier Journalist, Exil-Sauerländer, (ziemlich alter) Skateboarder, Dipl.-Inf.-Wirt, Einzelhandelskaufmann, Open-Source-Nerd, Checkmk-Handbuchschreiber. Ex-Saturn'ler, Ex-Data-Becker'ler, Ex-BSI'ler. Computer-Erstkontakt: ca. 1982 - der C64 des großen Bruders eines Freunds. Wenn Ihr hier mehr über Open Source, Linux und Bastelkram lesen und Tutonaut unterstützen möchtet: Über Kaffeesponsoring via Paypal.freue ich mich immer. Schon mal im Voraus: Danke! Nicht verpassen: cli.help und VoltAmpereWatt.de. Neu: Mastodon

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.

Schaltfläche "Zurück zum Anfang"
Schließen

Ooopsi!

Bitte deaktiviere Deinen Adblocker.