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
mkdir config
chmod 777 config
mkdir data
chmod 777 data
mkdir mysql
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:


pasted-from-clipboard.png


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:


pasted-from-clipboard.png


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
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:


pasted-from-clipboard.png


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):


pasted-from-clipboard.png


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:


pasted-from-clipboard.png


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:


pasted-from-clipboard.png


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
chmod +x owncloudbackup.sh


Danach das Script einmal testen mit:


Code
./owncloudbackup.sh

Dann solltet Ihr diesen Output bekommen:


pasted-from-clipboard.png


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:

pasted-from-clipboard.png


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
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
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 12

  • Hallo,


    danke für die Anleitung. Aktuell macht mir ein owncloud-Problem zu schaffen, dass immer wieder versucht, eine bereits nicht mehr vorhandene Datei zu löschen. Gem. Owncloud müsste ich jetzt in der DB eine Korrektur durchführen. Ich bekomme aber wg. des Dockers einfach keine Verbindung zur Maria-DB. Wie komme ich mit einem externen Tool an die MariaDB ?


    Danke für einen kurzen Hinweis
    M

  • Ergänzung: Es handelt sich um folgenden Fehler:

    Code
    Failed to connect to the database: An exception occurred in driver: SQLSTATE[HY000] [2002] Connection refused


    Ich weiß aber nicht, wie ich die MariaDB restarten soll bzw. wie ich überhaupt an die Concole der MariaDB kommen soll? Das ContainerStationTerminal hilft mir da nicht wirklich werden.

    • Nach einem mehrfachen Start des COntainers hat sich die DB gefangen. Ich kann leider nicht sagen, woran es letzlich gelegen hat, aber plötzlich konnte sich der OwnCloudContainer wieder verbinden. Änderungen an der Config etc. hatte ich zu diesem Zeitpunkt noch nicht vorgenommen.

  • Hallo @Mangoon2008


    danke für die Anleitung. Nach dem letzten QNAP-Update habe ich die COntainer wieder angestartet bekommen. Leider startet der Owncloudserver nicht mehr und ist auch nicht mehr über den Webservice erreichbar. Die DesktopApp meldet nur, dass die Verbindung broken (599) ist.


    Kannst Du mir einen Tipp geben, wie ich auf den OwnCloud-Docker-Container nahschauen kann, was da schief läuft ?


    Danke

  • Hi@Mangoon2008

    danke dir schon einmal für die Top Anleitung! Hat soweit alles geklappt.

    Kurze Frage, was meinst du mit "- den zusätzlichen Pfad für das DB-Share im docker-compose.yml einfügen".

    Hier denke ich habe ich noch einen kleinen Fehler in meiner OC Installation

  • 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.

      Gefällt mir 1
    • Danke für die Installationseinleitung. Die hat mir sehr geholfen und der DockerContainer läuft grundsätzlich - auch wenn es das Update auf 10.3 gerade fehlerhaft beendet hat.


      Wo finde ich denn jetzt auf der QNAP den Apps-Ordner um weiter Apps für OwnCloud einzuspielen (die ich unter OwnCloud 9 hatte). In den konfigurierten Ordnern hat OwnCloud keine Unterordner mit Apps etc. angelegt ? Habe ich doch noch etwas falsch konfiguriert ?


      Wäre um eine kurze Hilfe dankbar....


      Ergänzung: Mit ein wenig Nachdenken hat es dann geklappt - natürlich hattest Du im Script nur die Data und Config-Verzeichnisse "umgebogen". Alle weiteren Verzeichnisse bleiben im Containerverzeichnis der Installation unter /share/CE_CACHEDEV1_DATA/Container/container-station-data/lib/docker/volumes/2bc37632c22d6xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/..... stehen. Dort wäre das AppVerzeichnis vorhanden, aber -->


      Da die AppInstall mittlerweile über den Marktplatz passiert, reicht dies auch vollkommen aus. Ein Hineinkopieren der Apps ist gar nicht mehr notwendig.


      Danke

    • Super...dank Deiner Anleitung hat alles geklappt und Owncloud ist nun auf meinem neuen TS-877 eingerichtet.


      Gibt es evtl. auch noch ein HoTo wie ich dan per HTTPS auf den Docker (Owncloud) zugreifen kann??? Ein LetsEncrupt


      und ein QNAP SSL (gekauft) wären vorhanden...


      Herzlichen Dank

    • Hi daniel.duese


      Wenn du mit https von ausserhalb deines Netzerks zu deine owncloud zugreifen willst, wird das leider etwas aufwendig. Mir war das zu mühsam und ich verwende darum Owncloud X (die aus dem Qnap App Center - läuft auch als docker container - siehst du aber nicht in der container station) einfach mit ner VPN Verbindung.

      Da die oben beschriebene Anleitung owncloud schon mit container station aufsetzt mit docker-compose, sollte es aber mit trial & error machbar sein, hoffe ich zumindest.

      Folgende Schritte sollten in etwa zum Ziel führen:

      • Du musst in der Container Station noch einen Reverse-Proxy Container laufen lassen (traefik, nginx oder so). Am einfachsten gleich in dein bestehendes docker-compose.yaml integriert
      • Wenn du Traefik als Reverse-Proxy verwendest, dürfte dir dieser Artikel helfen: https://owncloud.org/news/dock…e-proxy-lets-encrypt-ssl/ (evtl. weitere Infos auch hier https://medium.com/@joshuaaval…step-by-step-406792afe9b2)
      • Der Clou daran ist, dass der ownCloud-Container überhaupt nicht mit der Außenwelt kommuniziert. Das unterstützt der owncloud docker container nämlich gar nicht mehr (You should use a reverse proxy for the SSL termination. Since this is pretty common for Docker setups we have dropped the whole SSL parts from this Docker image.)
      • Traefik braucht den Verkehr zum ownCloud-Container nicht zu verschlüsseln und umgekehrt, sie befinden sich ohnehin auf der gleichen Maschine. Da Traefik die SSL-Verschlüsselung handhabt, muss ownCloud nicht einmal wissen, dass die Benutzer verschlüsselt darauf zugreifen.

      Wie gesagt - ich hab es nicht probiert, da für meinen Verwendungszweck VPN sowieso die bessere Alternative war.

      Wenn du dich aber schon etwas auskennst mit docker / docker-compose, weisst wie ein yaml File zu schreiben ist, dann sollte es klappen.


      Toi toi toi :)