Ubuntu: Owncloud/Nextcloud unter Docker in 15 Minuten einrichten

Warum OwnCloud?

Datenaustausch zwischen Computer wird immer wichtiger. Es kann vorkommen, dann man ‚mal schnell‘ eine Datei austauschen möchte.

Klar, das geht per E-Mail.

Wenn Diese Datei aber sehr groß ist (z.B. größer als 10 MB) klappt das nicht mehr, weil E-Mail-Provider eine Größenbeschränkung bei Datei-Anhängen haben.

Einfacher wäre es doch, sie einfach hochzuladen. Das (und vieles mehr) ermöglicht OwnCloud.

Grundsätzlich würde ich NextCloud bevorzugen, da sie schneller weiterentwickelt wird, als OwnCloud, das klappt aber (noch) nicht mit Docker.

Warum Docker?

OwnCloud ist praktisch. Kaum einer möchte sich jedoch durch die Konfigurationen und Abhängigkeiten kämpfen. Hinzu kommt die Ungewissheit, ob nach einem Systemupgrade vielleicht OwnCloud nicht mehr läuft.

Um diese Probleme zu umschiffen, virualisieren wir unsere OwnCloud. Man kann natürlich eine VM installieren, die ein anderes Linux enthält und darin Owncloud aufsetzen.

Der Nachteil ist, dass es wensendlich mehr Resourcen verbraucht. Außerdem kann es hierbei weiterhin zu Problemen mit Abhängigkeiten kommen. Daher scheitet diese Möglichkeit für mich aus.

Docker benötigt nur einen Bruchteil der Resourcen, da nicht das ganze Betriebssystem nachgebildet werden muss.

Also: Docker!

Die Idee dahinter ist folgende:

Ich starte OwnCloud, wenn ich es möchte, sie ist aber in einer Sandbox gefangen und verbraucht nur dann Resourcen, wenn ich sie brauche.

Also starten wir mit der Installation von Docker:

Docker installieren

sudo su -
echo 'deb https://apt.dockerproject.org/repo ubuntu-trusty main' >> /etc/apt/sources.list.d/docker.list
apt-get update
apt-get install -y docker-engine
service docker start
Was wurde gemacht?
  1. Um nicht ständig ’sudo‘ voranstellen zu müssen, loggen wir uns als root ein.
  2. Die PPA vom Dockerprojekt wird deinem Rechner hinzugefügt…
  3. … und mitgeteilt.
  4. Docker wird installiert.
  5. Docker wird als Service gestartet.

Wie jede moderne Weboberfläche benötigt auch die OwnCloud eine Datenbank. Die Zeiten in der Webseiten noch ohne Datenbanken auskamen ist lange vorbei.

Datenbank als eigenen Docker-Container installieren

Grundsätzlich ist es möglich, in einem Docker-Container sowhl die Datenbank als auch OwnCloud unterzubringen. Ich rate davon aber ab.

Grundsätzlich lässt sich nit nur OwnCloud so virtualisieren, sondern auch vieles mehr. Ein selbständiger Datenbank-Container könnte zum Beispiel zusätzlich eine WordPress-Installation verwalten. Docker oder andere Anwendungen lassen sich dann einfach ‚dazuschalten‘.

Also bauen wir uns einen Datenbank-Container.

mkdir docker && cd docker
mkdir docker_mysql 
docker run -d --name mysql-container -v ~/docker/docker_mysql/:/var/lib/mysql/ -e MYSQL_ROOT_PASSWORD=password mysql
Was wurde gemacht?
  1. Wir legen und in unserem Home-Verzeichnis ein Verzeichnis namens ‚docker‘ an, in dem alle Container gespeichert werden. (Achtung! Sollte das Home-Verzeichnis in einer eigenen Partition liegen, muss genug Patz vorhanden sein!) Und wechseln in das neue Verzeichnis.
  2. Docker wird veranlasst, einen Container mit einer SQL-Datenbank zu erstellen und runterzuladen. Dieser Container heißt dann ‚mysql-Container‘. Außerdem wird das Passwort ‚mysql‘ für die Datenbank gesetzt. (Das könnt Ihr natürlich ändern.)

OwnCloud installieren

So unser SQL-Docker-Container steht. Nun wird OwnCloud installiert.

docker run -d --name owncloud-container --link mysql-container:mysql -p 8080:80 owncloud
Was wurde gemacht?

Docker wird angewiesen, einen neuen Container zu erstellen. Hierbei stehen die Befahle für folgendes:

Befehl Bedeutung
run startet den Docker-Container, wenn alles fertig ist
–name owncloud-container benennt den neuen OwnCloud-Container ‚owncloud-container‘
–link msq-container:mysql verknüpft die Datenbank des eben erstellten SQL-Datenbank-Containers mit unserem OwnCloud-Container und übergibt das SQL-Passwort ‚mysql‘
-p 8080:80 Unser OwnCloud soll auf dem Port 8080 ‚lauschen‘ und von außen soll sie über den Port 80 reagieren. (Hierzu unten mehr.)
owncloud Lade und installiere owncloud

OwnCloud konfigurieren

Die nächsten Schritte sind wie immer. OwnCloud muss eingerichtet werden.

Auf unserem Computer erreichen wir die OwnCloud mit http://localhost:8080/owncloud von anderen Computern aus mittels http://[Rechnername]/owncloud.

Konfiguration des Routers am Beispiel einer Fritzbox

In unserem Beispiel gehen wir davon aus, dass eine Fritzbox als Router vorhanden ist.

Um unsere OwnCloud zu erreichen müssen wir einen DynDNS-Dienst in Anspruch nehmen. Bei Fritzboxes übernimmt das AVM (der Hersteller) selbst. Dieser Dienst heißt myFritz. Diese Einrichtung würde den Artikel spregen und wird von mir daher nicht behandelt.

Also zurück zu unserem Beispiel.

Unsere OwnCloud ist über unseren Computer nur dann von außen erreichbar, wenn wir der Fritzbox mitteilen, dass ein Anfrage von außen auch auf unseren Computer weitergeleitet wird.

Die Fritzbox erreicht man standmäßig über http://fritz.box oder http://http://192.168.178.1.

Unter Internet / Freigaben / Portfreigaben / Neue Portfreigabe lässt sich eine Weiterleitung einstellen (FRITZ!OS:06.51).

portfreigabe

Hierbei könnte man nur ‚HTTP-Server‘ und der Rechnernamen eingetragen werden, da unserer Rechner ja ‚von außen‘ auf dem Port 80 lauscht.

Ohne Verschlüsselung !!!

Um es vorweg zu sagen:

!

Dieses Beipiel veranschaulicht nur die Möglichkeit, wie eine OwnCloud in Docker aufgesetzt wird. Wie OwnCloud https ‚lernt‘ und wie man das umsetzt, kann hier nachgelesen werden und ist auch ausdrücklich nicht Teil des Artikels!

Natürlich müssen dann auch die Ports angepasst werden.

!

Grundsätzlich rate ich keinem eine Cloud ohne Verschlüsselung (außer zum Testen) in die freie Wildbahn zu lassen!

Was geht noch?

Wenn Docker und eine Datenbank sowieso schon steht kann man auch damit spielen.

Wie wäre es, noch ein WordPress zu starten?

Kein Problem:

docker run -d --name wordpress-container --link mysql-container:mysql -p 8081:81 wordpress
Was wurde gemacht?

Docker instlliert nun mit Hilfe unserer Datenbank noch ein WordPress.

Befehl Bedeutung
run startet den Docker-Container, wenn alles fertig ist
–name wordpress-container benennt den neuen WordPress-Container ‚wordpress-container‘
–link msq-container:mysql verknüpft die Datenbank des eben erstellten SQL-Datenbank-Containers mit unserem OwnCloud-Container und übergibt das SQL-Passwort ‚mysql‘
-p 8080:80 Unser OwnCloud soll auf dem Port 8081 ‚lauschen‘ und von außen soll sie über den Port 81 reagieren.
wordpress Lade und installiere wordpress

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Natürlich gilt auch hier:

  1. Alles ist unverschlüsselt!
  2. Die Routerfreigabe muss angepasst werden.

 

So, viel Spaß beim ausprobieren!