owncloud 10 in selbstständigem Docker

Hallo zusammen,


ich bin aktuell noch auf der Suche nach einer einfachen Möglichkeit, abseits von Dropbox und co. Files zu sharen... Mit den eingebauten Tools möchte ich das nicht machen, weil ohne aufwändigen Reverse Proxy sonst ein Zugang zur Admin-Oberfläche da wäre... VPN scheidet aus, weils wirklich um externen Zugriff geht. Da ich wenig Features brauche und ich beim ersten Docker-Einsatz von NextCloud kläglich gescheitert bin, habe ich einfach mal auf den Install-Button von OwnCloud 10 im Marktplatz gedrückt :/


Im Rahmen dieses Tutorials will ich Euch zeigen, wie Ihr mit echt wenig Aufwand Eure eigene Owncloud im Container hochziehen und backupen könnt. Mit dem riesen Vorteil, dass Ihr in einer zentralen Config-File alles eintragen und ggf. auch ändern könnt und nicht, übers Webinterface jedesmal alle Umgebungsvariablen neu eingeben müsst. Außerdem würde ich aktuell nicht zuviel auf die Backup-Funktion der fertigen Owncloud-qpkg geben...


Aber zuerst mal zu meiner Infrastruktur:


Das Ganze wird auf einem TS-251 (also intel) laufen. Dieses ist aktuell noch mit einem Bein im LAN angebunden, über das auch die Freigaben erfolgen. Da es mein einziges extern erreichbares NAS ist und auch hier nix wichtiges liegt, ist mir das als Übergangslösung sicher genug.

Der zweite LAN Port soll demnächst an einem Raspi mit einer Firewall Distri, die vor allem das Subnetz 172.0.0.0 vom Internet herroutet und auch ein eingebautes IDS besitzt angeschlossen werden. Sobald ich damit durch bin, gibts auch nen Guide dazu, da es mmn. nicht verkehrt ist, bei extern erreichbaren Systemen da noch eine Schicht dazwischen zu schalten und vor allem auch sicher zu stellen, dass aus dem von Außen erreichbaren Subnetz kein Zugriff ins LAN und auf dem NAS außerhalb des Container-VSwitches möglich ist.


Wie oben schon geschrieben, habe ich einfach auf den Install Button im Appstore geklickt und mich dann gefreut, dass er mir sagte, dass ich meine Container-Station updaten muss für das Image. Also Update gemacht und installiert... Beim Öffnen der Container Station war ich dann ein bisschen verwirrt, dass der Owncloud Container da nicht angezeigt wird. Nach ein bisschen Suchen bin ich dann im .qpkg Ordner fündig geworden und habe kurzerhand beschlossen, den Container zu kapern und eine eigene, für meine Infrastruktur viel besser passende Installation draus zu machen.


Die Vorbereitung

Ich gehe davon aus, dass Ihr die Container-Station schon installiert habt, wenn nicht, solltet Ihr das natürlich als erstes tun!


Als Tools brauchen wir WinSCP und Putty (siehe mein erster Blogpost). Solltet Ihr mit Linux oder Mac unterwegs sein, müsst Ihr leider mal schaun, mit welchen Tools Ihr Filezugriff direkt ab dem root-Verzeichnis habt. Wenn jemand nen guten Vorschlag hat, mit welchem Tool SCP unter linux klappt, nur her damit, dann passe ich das an.Mavalok hatte Filezilla vorgeschlagen, damit kann man zumindest per FTP zugreifen...


Zu allererst müsst Ihr am Besten mit WinSCP auf Euer NAS und eine Ordner-Struktur aufbauen, die Euch passt. Ich habe mir angewöhnt, im Ordner "Container" direkt für jeden Container (oder Dienst) einen Unterordner an zu legen, und da dann die entsprechenden Ordner rein zu packen


Ich mache sowas gerne auch mit einem Script in einer File namens install.sh, die ich für jeden meiner Container mit anlege-

Die install.sh hat folgenden Inhalt:

Code
  1. mkdir config
  2. chmod 777 config
  3. mkdir data
  4. chmod 777 data
  5. mkdir mysql
  6. chmod 777 mysql

Ist ansich eine nutzlose file, aber man spart sich damit das Anlegen der Ordner und im Fall eines Restores nach drei Jahren geht das von selber :-D Theoretisch kann man da auch den Docker-Compose befehl mit rein tun (der kommt gleich), ich mag das aber irgendwie persönlich nicht...


Wenn Ihr die Ordner dann angelegt habt (egal ob Händisch oder mit dem Script) sollte das Ganze dann so aussehen:



Die Berechtigungen könnte man sicher noch besser machen, mir ist es hier aber wichtig, dass es funktioniert, ein 755 sollte aber auch reichen. Im Zweifel aber lieber mit 777 starten und später die Rechter runter schrauben, da spart man sich viel Troubleshooting

Als Ordner brauchen wir für Owncloud 3 Stück: Einmal config, einmal data, einmal mysql. Hier ist zu beachten, dass die Files später im Data Ordner landen. Wenn Euch der hier also nicht passt, aus Platz oder anderen Gründen, müsst Ihr Euch überlegen, wo ihr ihn hinpackt oder ob Ihr hier vielleicht nur einen Link wo anders hin haben wollt. Grade auch im Bezug auf Backup (Ende des Guides) solltet Ihr Euch überlegen, welche Mengen später hier liegen und ob er Euch hier passt, oder Ihr lieber extern verlinkt. In meinem Fall isses egal, aber evtl. muss ich später mal noch mein Backup Script anpassen, wenn zu viele User-Daten da rein wandern.


Das Ganze sollte dann so aussehen:



Zwei Dateien erstellen wir noch im Lauf des Tutorials, aber schonmal vorweg:


- docker-compose.yml: Damit erstellen, starten, stoppen und löschen wir unseren Container. Außerdem passen wir damit Umgebungsvariablen an.

- owncloudbackup.sh: Mein Backupscript, das per Cronjob gestartet wird und das Ganze sichert. Dazu später mehr.


Ich bin einfach ein Fan davon, diese Files direkt beim Container ab zu legen und ins Backup zu integrieren, so ist das Ganze superschnell umgezogen bzw. wieder hergestellt und man muss nichts suchen.

Das Docker-Compose File:


Als nächstes müssen wir die docker-compose.yml anlegen:


db: Das sind die Informationen, für die integrierte Mariadb. Es handelt sich hier um Std. Passwörter, die owncloud der DB mitgibt. Das könnt Ihr natürlich nach Belieben ändern, Ihr müsst dann nur im Owncloud-Setup unter "Speicher und Datenbank" Eure Werte eingeben. Der mysql Ordner enthält später die Datenbank. Ansonsten legt MariaDB die Datenbank im Container ab und es wird etwas schwierig mit dem backup... (Danke an janste, ohne den ich da nie drauf gekommen wäre)


Die Shares müsst Ihr ggf. noch anpassen, wichtig ist, dass die Ordner existieren und schreibrechte da sind (wie gesagt, ich mach hier am liebsten 777)

Genauso den Port auf dem NAS (4490) könnt Ihr natürlich frei wählen.


Sobald diese Datei erstellt ist und in den owncloud-Ordner kopiert wurde connecten wir uns mit Putty auf das NAS und rufen mit:

Code
  1. docker-compose -f /share/Container/owncloud/docker-compose.yml up -d

den eigentlichen Build-Process auf und warten ab, dass er sich alle Files zieht und die Container erstellt. Wenn dieser "pull" irgendwann schonmal gemacht wurde, geht das innerhalb von Sekunden, wenn nicht, sollte das bei Euch etwa so aussehen:



Tja Jungs... Das wars dann eigentlich schon :mcup:


jetzt könnt Ihr ja mal in der Container-Station nach Eurem neuen Baby schaun (calibreweb und ecoDMS Tuts folgen auch noch):



Was Euch vielleicht gleich auffällt und ein kleiner Nachteil bei QNAP ist, wenn man die Container so einbindet: Man kann sie in der Container Station nur anschaun, anhalten und löschen. Aber die coolen Sachen machen wir eh über die Kommandozeile...


So, jetzt bitte nochmal testen, ob das mit der Owncloud auch hinhaut:



Einfacher, als man denkt, wenn mans vorher noch nie gemacht hat...


Ab hier könnt Ihr ganz normal alles konfigurieren wie bei jeder anderen owncloud-Installation auch... Eure oben eingegeben DB Creds. müsst Ihr wie gewohnt unter "Speicher & Datenbank" eingeben.

Die IP vom Datenbank-Container findet ihr hier:



Alterntiv könntet Ihr natürlich auch einfach SQLITE nehmen, dann kann man sich aber auch den MariaDB Container sparen... Bei wenigen Usern mit wenig Files vielleicht eine Überlegung wert, verschlankt das Setup...



Backup & Restore:

Ich hatte Eingangs ja schon erwähnt, dass ich zusätzlich noch zeigen möchte, wie man das Ganze sichern kann. Dazu ist aber eine Sache wichtig: Owncloud merkt sich im initialen Setup so Sachen wie Domain etc. auf die sie installiert ist, inkl. den IPs der Container. Das liegt im Config Ordner. Solltet Ihr vorhaben, die Installation auf einer anderen Hardware, andere IP etc. zu restoren müsst Ihr Euch damit auseinandersetzen, wie das bei Owncloud geht, das ist weder Container noch QNAP Spezifisch...


Ich mache für mein Backup eigentlich nichts anderes als den Container an zu halten, mittels targz einen gezippten tarball weg zu schreiben und danach den Container wieder zu starten. Außerdem versioniere ich auf sehr unelegante Weise manuell. Wenn hier ein Linuxcrack das irgendwie cooler kann, gerne her mit dem Input, dann übernehme ich das gerne: )die #Erklärungszeilen könnt Ihr natürlich auch rauslöschen...


Dann das Script ausführbar machen mit:


Code
  1. chmod +x owncloudbackup.sh


Danach das Script einmal testen mit:


Code
  1. ./owncloudbackup.sh

Dann solltet Ihr diesen Output bekommen:



Die Fehlermeldungen sind völlig normal und liegen daran, dass Ihr natürlich noch keine Files habt, die verschoben werden können. Und dann sollte die tar.bz2 File auch auftauchen:


ist natürlich noch winzig, da jungfräulich...


Jetzt fehlt nur noch der Eintrag in die Crontab, um die Backups regelmäßig zu machen, dann seid Ihr auch schon fertig...


Dazu die Datei: /etc/config/crontab öffnen und einen entsprechenden Eintrag vornehmen:


Code
  1. 0 2 * * * /share/Container/owncloud/owncloudbackup.sh

Ich sichere z.B. täglich um 2 Uhr... Für die Einstellung, wann gesichert werden soll, bitte einfach mal unter: Crontab - Linuxwiki nachlesen, das würde hier den Rahmen sprengen... Auf der Seite ist das aber super erklärt...

Jetzt nur noch den Crontab aktualisieren:

Code
  1. crontab /etc/config/crontab && /etc/init.d/crond.sh restart

Damit startet Ihr den Cron Dienst durch...


Für ein recovery einfach das Backup an den alten Ordner kopieren. Vorher evtl. noch mit docker-compose down im Verzeichnis den Container löschen... Danach einfach mit der Anleitung von oben beginnend den Container neu bauen.


Bei einem Update der Container-Images, zuerst ein Backup (:beer:)


Danach mit docker-compose down die beiden Container löschen, in der docker-compose.yml den Namen des Images anpassen (findet man auf den offiziellen Docker Seiten) und dann einfach mit einem docker-compose up -d die Container neu erstellen lassen...


Soooooo, jetzt wisst Ihr, wie man einen OwnCloud Container ohne viel Aufwand baut... Ist sicher der minimal-Ansatz, aber grade wenns darum geht ein paar files unabhängig von Dropbox und co. zu sharen mmn. der bessere Weg als über den eingebauten, der gleichzeitig das Admin-Interface der Welt zur Verfügung stellt...


Frohes Dockern!

Daniel

Kommentare 3

  • Alright, Dank Janste bin ich auch drauf gekommen, dass in meinem ersten Wurf die Datenbank nicht mit gesichert wird, weil ich vergessen hatte, die in ein Verzeichnis um zu biegen... Hab zusätzlich noch einen Vorschlag für ein Install Script mit aufgenommen, das die Verzeichnisse automatisch erstellt.


    Ist jetzt erfolgt.


    Leider müsst Ihr, falls Ihr das Ganze schon durchgekaut habt nochmal von Vorne anfangen. Aber nur mit dem Container und der Einrichtung... Das ist mal ne schöne Überung, wie man Container zerstört und wieder aufbaut:


    - putty aufs NAS

    - in das Verzeichnis /share/Container/owncloud wechseln

    - docker-compose down ausführen

    - die beiden Verzeichnisse data und config löschen (oder leeren)

    - fals gelöscht neu anlegen (siehe install.sh im Blogpost oben)

    - ggf. den Ordner mysql noch mit anlegen

    - Berechtigungen nicht vergessen!

    - den zusätzlichen Pfad für das DB-Share im docker-compose.yml einfügen

    - docker-compose up -d ausführen

    - kurz warten (bis der Container ordenlich oben ist)

    - mit dem Browser auf Owncloud neu connecten und einrichten (siehe oben)


    Sorry sorry sorry ncohmal, falls jetzt irgendjemand von vorne anfangen muss, aber wir üben ja alle noch ein bisschen :-D

    • Folgt da auch ein Artikel über Nextcloud?

      Ich sehe in dem Projekt die bessere Alternative.

    • jap, hab ich vor.