{"id":807,"date":"2016-10-14T23:00:07","date_gmt":"2016-10-14T21:00:07","guid":{"rendered":"https:\/\/www.torstenzimmermann.de\/wp\/?p=807"},"modified":"2021-07-09T22:20:36","modified_gmt":"2021-07-09T20:20:36","slug":"ubuntu-owncloud-unter-docker-in-15-minuten-benutzen","status":"publish","type":"post","link":"https:\/\/torstenzimmermann.de\/wordpress\/ubuntu-owncloud-unter-docker-in-15-minuten-benutzen\/","title":{"rendered":"Ubuntu: Owncloud\/Nextcloud unter Docker in 15 Minuten einrichten"},"content":{"rendered":"<h2>Warum OwnCloud?<\/h2>\n<p>Datenaustausch zwischen Computer wird immer wichtiger. Es kann vorkommen, dann man &#8218;mal schnell&#8216; eine Datei austauschen m\u00f6chte.<\/p>\n<p>Klar, das geht per E-Mail.<\/p>\n<p>Wenn Diese Datei aber sehr gro\u00df ist (z.B. gr\u00f6\u00dfer als 10 MB) klappt das nicht mehr, weil E-Mail-Provider eine Gr\u00f6\u00dfenbeschr\u00e4nkung bei Datei-Anh\u00e4ngen haben.<\/p>\n<p>Einfacher w\u00e4re es doch, sie einfach hochzuladen. Das (und vieles mehr) erm\u00f6glicht OwnCloud.<\/p>\n<p>Grunds\u00e4tzlich w\u00fcrde ich <a href=\"https:\/\/en.wikipedia.org\/wiki\/Nextcloud\">NextCloud<\/a> bevorzugen, da sie schneller weiterentwickelt wird, als OwnCloud, das klappt aber (noch) nicht mit Docker.<\/p>\n<h2>Warum Docker?<\/h2>\n<p>OwnCloud ist praktisch. Kaum einer m\u00f6chte sich jedoch durch die Konfigurationen und Abh\u00e4ngigkeiten k\u00e4mpfen. Hinzu kommt die Ungewissheit, ob nach einem Systemupgrade vielleicht OwnCloud nicht mehr l\u00e4uft.<\/p>\n<p>Um diese Probleme zu umschiffen, virualisieren wir unsere OwnCloud. Man kann nat\u00fcrlich eine VM installieren, die ein anderes Linux enth\u00e4lt und darin Owncloud aufsetzen.<\/p>\n<p>Der Nachteil ist, dass es wensendlich mehr Resourcen verbraucht. Au\u00dferdem kann es hierbei weiterhin zu Problemen mit Abh\u00e4ngigkeiten kommen. Daher scheitet diese M\u00f6glichkeit f\u00fcr mich aus.<\/p>\n<p><a href=\"https:\/\/de.wikipedia.org\/wiki\/Docker_(Software)\">Docker<\/a> ben\u00f6tigt nur einen Bruchteil der Resourcen, da nicht das ganze Betriebssystem nachgebildet werden muss.<\/p>\n<p>Also: <a href=\"https:\/\/de.wikipedia.org\/wiki\/Docker_(Software)\">Docker<\/a>!<\/p>\n<p>Die Idee dahinter ist folgende:<\/p>\n<p>Ich starte <a href=\"http:\/\/ownCloud\">OwnCloud<\/a>, wenn ich es m\u00f6chte, sie ist aber in einer Sandbox gefangen und verbraucht nur dann Resourcen, wenn ich sie brauche.<\/p>\n<p>Also starten wir mit der Installation von Docker:<\/p>\n<h2>Docker installieren<\/h2>\n<pre>sudo su -\necho 'deb <a href=\"https:\/\/apt.dockerproject.org\/repo\">https:\/\/apt.dockerproject.org\/repo<\/a> ubuntu-trusty main' &gt;&gt; \/etc\/apt\/sources.list.d\/docker.list\napt-get update\napt-get install -y docker-engine\nservice docker start<\/pre>\n<h5>Was wurde gemacht?<\/h5>\n<ol>\n<li>Um nicht st\u00e4ndig &#8217;sudo&#8216; voranstellen zu m\u00fcssen, loggen wir uns als root ein.<\/li>\n<li>Die <a href=\"https:\/\/en.wikipedia.org\/wiki\/Personal_Package_Archive\">PPA<\/a> vom Dockerprojekt wird deinem Rechner hinzugef\u00fcgt&#8230;<\/li>\n<li>&#8230; und mitgeteilt.<\/li>\n<li>Docker wird installiert.<\/li>\n<li>Docker wird als Service gestartet.<\/li>\n<\/ol>\n<p>Wie jede moderne Weboberfl\u00e4che ben\u00f6tigt auch die OwnCloud eine Datenbank. Die Zeiten in der Webseiten noch ohne Datenbanken auskamen ist lange vorbei.<\/p>\n<h2>Datenbank als eigenen Docker-Container installieren<\/h2>\n<p>Grunds\u00e4tzlich ist es m\u00f6glich, in einem Docker-Container sowhl die Datenbank als auch OwnCloud unterzubringen. Ich rate davon aber ab.<\/p>\n<p>Grunds\u00e4tzlich l\u00e4sst sich nit nur OwnCloud so virtualisieren, sondern auch vieles mehr. Ein selbst\u00e4ndiger Datenbank-Container k\u00f6nnte zum Beispiel zus\u00e4tzlich eine WordPress-Installation verwalten. Docker oder andere Anwendungen lassen sich dann einfach &#8218;dazuschalten&#8216;.<\/p>\n<p>Also bauen wir uns einen Datenbank-Container.<\/p>\n<pre>mkdir docker &amp;&amp; cd docker\nmkdir docker_mysql \ndocker run -d --name mysql-container -v ~\/docker\/docker_mysql\/:\/var\/lib\/mysql\/ -e MYSQL_ROOT_PASSWORD=password mysql<\/pre>\n<h5>Was wurde gemacht?<\/h5>\n<ol>\n<li>Wir legen und in unserem Home-Verzeichnis ein Verzeichnis namens &#8218;docker&#8216; 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.<\/li>\n<li><\/li>\n<li>Docker wird veranlasst, einen Container mit einer SQL-Datenbank zu erstellen und runterzuladen. Dieser Container hei\u00dft dann &#8218;mysql-Container&#8216;. Au\u00dferdem wird das Passwort &#8218;mysql&#8216; f\u00fcr die Datenbank gesetzt. (Das k\u00f6nnt Ihr nat\u00fcrlich \u00e4ndern.)<\/li>\n<\/ol>\n<h2>OwnCloud installieren<\/h2>\n<p>So unser SQL-Docker-Container steht. Nun wird OwnCloud installiert.<\/p>\n<pre>docker run -d --name owncloud-container --link mysql-container:mysql -p 8080:80 owncloud<\/pre>\n<h5>Was wurde gemacht?<\/h5>\n<p style=\"text-align: left;\">Docker wird angewiesen, einen neuen Container zu erstellen. Hierbei stehen die Befahle f\u00fcr folgendes:<\/p>\n<table class=\" alignleft\" style=\"width: 593.133px; border-color: #ada8a8;\">\n<tbody>\n<tr style=\"height: 14.65px;\">\n<td style=\"width: 216px; height: 14.65px; border-color: #610f0f; text-align: left;\"><strong>Befehl<\/strong><\/td>\n<td style=\"width: 331.133px; height: 14.65px; border-color: #610f0f; text-align: left;\"><strong>Bedeutung<\/strong><\/td>\n<\/tr>\n<tr style=\"height: 37px;\">\n<td style=\"width: 216px; height: 37px;\">run<\/td>\n<td style=\"width: 331.133px; height: 37px;\">startet den Docker-Container, wenn alles fertig ist<\/td>\n<\/tr>\n<tr style=\"height: 37px;\">\n<td style=\"width: 216px; height: 37px;\">&#8211;name owncloud-container<\/td>\n<td style=\"width: 331.133px; height: 37px;\">benennt den neuen OwnCloud-Container &#8218;owncloud-container&#8216;<\/td>\n<\/tr>\n<tr style=\"height: 37px;\">\n<td style=\"width: 216px; height: 37px;\">&#8211;link msq-container:mysql<\/td>\n<td style=\"width: 331.133px; height: 37px;\">verkn\u00fcpft die Datenbank des eben erstellten SQL-Datenbank-Containers mit unserem OwnCloud-Container und \u00fcbergibt das SQL-Passwort &#8218;mysql&#8216;<\/td>\n<\/tr>\n<tr style=\"height: 37px;\">\n<td style=\"width: 216px; height: 37px;\">-p 8080:80<\/td>\n<td style=\"width: 331.133px; height: 37px;\">Unser OwnCloud soll auf dem Port 8080 &#8218;lauschen&#8216; und von au\u00dfen soll sie \u00fcber den Port 80 reagieren. (Hierzu unten mehr.)<\/td>\n<\/tr>\n<tr style=\"height: 37px;\">\n<td style=\"width: 216px; height: 37px;\">owncloud<\/td>\n<td style=\"width: 331.133px; height: 37px;\">Lade und installiere owncloud<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2><\/h2>\n<h2><\/h2>\n<h2><\/h2>\n<h2><\/h2>\n<h2><\/h2>\n<h2><\/h2>\n<h2><\/h2>\n<h2><\/h2>\n<h2><\/h2>\n<h2>OwnCloud konfigurieren<\/h2>\n<p><a href=\"https:\/\/wiki.ubuntuusers.de\/ownCloud\/#Konfiguration\">Die n\u00e4chsten Schritte sind wie immer.<\/a> OwnCloud muss eingerichtet werden.<\/p>\n<p>Auf unserem Computer erreichen wir die OwnCloud mit http:\/\/localhost:8080\/owncloud von anderen Computern aus mittels http:\/\/[<em>Rechnername<\/em>]\/owncloud.<\/p>\n<h2>Konfiguration des Routers am Beispiel einer Fritzbox<\/h2>\n<p>In unserem Beispiel gehen wir davon aus, dass eine Fritzbox als Router vorhanden ist.<\/p>\n<p>Um unsere OwnCloud zu erreichen m\u00fcssen wir einen <a href=\"https:\/\/de.wikipedia.org\/wiki\/Dynamisches_DNS\">DynDNS<\/a>-Dienst in Anspruch nehmen. Bei Fritzboxes \u00fcbernimmt das AVM (der Hersteller) selbst. Dieser Dienst hei\u00dft <a href=\"https:\/\/avm.de\/service\/fritzbox\/fritzbox-7390\/wissensdatenbank\/publication\/show\/966_MyFRITZ-Konto-registrieren-und-in-FRITZ-Box-einrichten\/\">myFritz<\/a>. Diese Einrichtung w\u00fcrde den Artikel spregen und wird von mir daher nicht behandelt.<\/p>\n<p>Also zur\u00fcck zu unserem Beispiel.<\/p>\n<p>Unsere OwnCloud ist \u00fcber unseren Computer nur dann <strong>von au\u00dfen<\/strong> erreichbar, wenn wir der Fritzbox mitteilen, dass ein Anfrage von au\u00dfen auch auf unseren Computer weitergeleitet wird.<\/p>\n<p>Die Fritzbox erreicht man standm\u00e4\u00dfig \u00fcber http:\/\/fritz.box oder http:\/\/http:\/\/192.168.178.1.<\/p>\n<p>Unter <em>Internet<\/em> \/ <em>Freigaben<\/em> \/ <em>Portfreigaben \/ Neue Portfreigabe<\/em> l\u00e4sst sich eine Weiterleitung einstellen (FRITZ!OS:06.51).<\/p>\n<p><a href=\"https:\/\/www.torstenzimmermann.de\/wp\/wp-content\/uploads\/2016\/10\/Portfreigabe.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-815\" src=\"https:\/\/www.torstenzimmermann.de\/wp\/wp-content\/uploads\/2016\/10\/Portfreigabe.png\" alt=\"portfreigabe\" width=\"940\" height=\"236\"><\/a><\/p>\n<p>Hierbei k\u00f6nnte man nur &#8218;HTTP-Server&#8216; und der Rechnernamen eingetragen werden, da unserer Rechner ja &#8218;von au\u00dfen&#8216; auf dem Port 80 lauscht.<\/p>\n<h2>Ohne Verschl\u00fcsselung !!!<\/h2>\n<p>Um es vorweg zu sagen:<\/p>\n<table style=\"width: 607px;\">\n<tbody>\n<tr>\n<td style=\"width: 19.5667px;\">\n<h1 style=\"text-align: left;\"><strong>!<\/strong><\/h1>\n<\/td>\n<td style=\"width: 544.433px;\">Dieses Beipiel veranschaulicht <strong>nur<\/strong> die M\u00f6glichkeit, wie eine OwnCloud in Docker aufgesetzt wird. Wie OwnCloud https &#8218;lernt&#8216; und wie man das umsetzt, kann <a href=\"https:\/\/doc.owncloud.org\/server\/8.1\/admin_manual\/configuration_server\/harden_server.html\">hier<\/a> nachgelesen werden und ist auch ausdr\u00fccklich nicht Teil des Artikels!<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Nat\u00fcrlich m\u00fcssen dann auch die Ports angepasst werden.<\/p>\n<table style=\"width: 607px;\">\n<tbody>\n<tr>\n<td style=\"width: 19.5667px;\">\n<h1><strong>!<\/strong><\/h1>\n<\/td>\n<td style=\"width: 544.433px;\">Grunds\u00e4tzlich rate ich keinem eine Cloud ohne Verschl\u00fcsselung (au\u00dfer zum Testen) in die freie Wildbahn zu lassen!<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>Was geht noch?<\/h2>\n<p>Wenn Docker und eine Datenbank sowieso schon steht kann man auch damit spielen.<\/p>\n<p>Wie w\u00e4re es, noch ein WordPress zu starten?<\/p>\n<p>Kein Problem:<\/p>\n<pre>docker run -d --name wordpress-container --link mysql-container:mysql -p 8081:81 wordpress<\/pre>\n<h5>Was wurde gemacht?<\/h5>\n<p>Docker instlliert nun mit Hilfe unserer Datenbank noch ein WordPress.<\/p>\n<table class=\" alignleft\" style=\"width: 587.383px; border-color: #ada8a8; height: 561px;\">\n<tbody>\n<tr style=\"height: 14.65px;\">\n<td style=\"width: 215px; height: 14.65px; border-color: #610f0f; text-align: left;\"><strong>Befehl<\/strong><\/td>\n<td style=\"width: 328.383px; height: 14.65px; border-color: #610f0f; text-align: left;\"><strong>Bedeutung<\/strong><\/td>\n<\/tr>\n<tr style=\"height: 37px;\">\n<td style=\"width: 215px; height: 37px;\">run<\/td>\n<td style=\"width: 328.383px; height: 37px;\">startet den Docker-Container, wenn alles fertig ist<\/td>\n<\/tr>\n<tr style=\"height: 37px;\">\n<td style=\"width: 215px; height: 37px;\">&#8211;name wordpress-container<\/td>\n<td style=\"width: 328.383px; height: 37px;\">benennt den neuen WordPress-Container &#8218;wordpress-container&#8216;<\/td>\n<\/tr>\n<tr style=\"height: 37px;\">\n<td style=\"width: 215px; height: 37px;\">&#8211;link msq-container:mysql<\/td>\n<td style=\"width: 328.383px; height: 37px;\">verkn\u00fcpft die Datenbank des eben erstellten SQL-Datenbank-Containers mit unserem OwnCloud-Container und \u00fcbergibt das SQL-Passwort &#8218;mysql&#8216;<\/td>\n<\/tr>\n<tr style=\"height: 37px;\">\n<td style=\"width: 215px; height: 37px;\">-p 8080:80<\/td>\n<td style=\"width: 328.383px; height: 37px;\">Unser OwnCloud soll auf dem Port <strong>808<em>1<\/em><\/strong> &#8218;lauschen&#8216; und von au\u00dfen soll sie \u00fcber den Port <strong>8<em>1<\/em><\/strong> reagieren.<\/td>\n<\/tr>\n<tr style=\"height: 37px;\">\n<td style=\"width: 215px; height: 37px;\">wordpress<\/td>\n<td style=\"width: 328.383px; height: 37px;\">Lade und installiere wordpress<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>Nat\u00fcrlich gilt auch hier:<\/p>\n<ol>\n<li>Alles ist unverschl\u00fcsselt!<\/li>\n<li>Die Routerfreigabe muss angepasst werden.<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<p>So, viel Spa\u00df beim ausprobieren!<\/p>\n<div class=\"thanks_button_div\" \n                  style=\"float: left; margin-right: 10px;\"><div id=\"thanksButtonDiv_807_1\" style=\"background-image:url(https:\/\/torstenzimmermann.de\/wordpress\/wp-content\/plugins\/thanks-you-counter-button\/images\/thanks_large_blue.png); background-repeat:no-repeat; float: left; display: inline;\"\n                onmouseover=\"javascript:thankYouChangeButtonImage('thanksButtonDiv_807_1', true);\" \n                onmouseout=\"javascript:thankYouChangeButtonImage('thanksButtonDiv_807_1', false);\"\n                onclick=\"javascript:thankYouChangeButtonImage('thanksButtonDiv_807_1', false);\" >\n                <input type=\"button\" onclick=\"thankYouButtonClick(807, 'You left &ldquo;Thanks&rdquo; already for this post')\" value=\"Thank You 5\"\n                  class=\"thanks_button thanks_large thanks_blue\"\n                  style=\"  font-family: Verdana, Arial, Sans-Serif; font-size: 14px; font-weight: normal;; color:#ffffff;\"\n                  id=\"thanksButton_807_1\" title=\"Click to leave &ldquo;Thanks&rdquo; for this post\"\/>\n             <\/div><div id=\"ajax_loader_807_1\" style=\"display:inline;visibility: hidden;\"><img decoding=\"async\" alt=\"ajax loader\" src=\"https:\/\/torstenzimmermann.de\/wordpress\/wp-content\/plugins\/thanks-you-counter-button\/images\/ajax-loader.gif\" \/><\/div><\/div>","protected":false},"excerpt":{"rendered":"<p>Warum OwnCloud? Datenaustausch zwischen Computer wird immer wichtiger. Es kann vorkommen, dann man &#8218;mal schnell&#8216; eine Datei austauschen m\u00f6chte. Klar, das geht per E-Mail. Wenn Diese Datei aber sehr gro\u00df ist (z.B. gr\u00f6\u00dfer als 10 MB) klappt das nicht mehr, weil E-Mail-Provider eine Gr\u00f6\u00dfenbeschr\u00e4nkung bei Datei-Anh\u00e4ngen haben. Einfacher w\u00e4re es doch, sie einfach hochzuladen. Das [&hellip;]<\/p>\n","protected":false},"author":5,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[46,5,9,45],"tags":[],"class_list":["post-807","post","type-post","status-publish","format-standard","hentry","category-docker","category-linux","category-ubuntu","category-synonlogy-nas"],"_links":{"self":[{"href":"https:\/\/torstenzimmermann.de\/wordpress\/wp-json\/wp\/v2\/posts\/807","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/torstenzimmermann.de\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/torstenzimmermann.de\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/torstenzimmermann.de\/wordpress\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/torstenzimmermann.de\/wordpress\/wp-json\/wp\/v2\/comments?post=807"}],"version-history":[{"count":2,"href":"https:\/\/torstenzimmermann.de\/wordpress\/wp-json\/wp\/v2\/posts\/807\/revisions"}],"predecessor-version":[{"id":1098,"href":"https:\/\/torstenzimmermann.de\/wordpress\/wp-json\/wp\/v2\/posts\/807\/revisions\/1098"}],"wp:attachment":[{"href":"https:\/\/torstenzimmermann.de\/wordpress\/wp-json\/wp\/v2\/media?parent=807"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/torstenzimmermann.de\/wordpress\/wp-json\/wp\/v2\/categories?post=807"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/torstenzimmermann.de\/wordpress\/wp-json\/wp\/v2\/tags?post=807"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}