{"id":217,"date":"2025-02-15T13:11:58","date_gmt":"2025-02-15T12:11:58","guid":{"rendered":"https:\/\/nissel.it\/?p=217"},"modified":"2025-02-15T13:48:06","modified_gmt":"2025-02-15T12:48:06","slug":"nextcloud-im-docker-container-hinter-nginx-proxy-unter-plesk-betreiben","status":"publish","type":"post","link":"https:\/\/nissel.it\/index.php\/2025\/02\/15\/nextcloud-im-docker-container-hinter-nginx-proxy-unter-plesk-betreiben\/","title":{"rendered":"Nextcloud im Docker Container hinter nginx Proxy unter Plesk betreiben (Aktualisiert 15.02.2025)"},"content":{"rendered":"\n<p>Lange \u00dcberschrift kurzer Sinn. Ich habe mit Docker ein Nextcloud aufgesetzt. Ich benutze <strong>nicht<\/strong> die Plesk Integration von Docker! Ziel war es auf einer Domain \u00fcber https Nextcloud erreichbar zu machen. Deswegen habe ich \u00fcber Plesk eine Domain angelegt und den nginx als Proyx von Hand (Additional nginx directives) konfiguriert.<\/p>\n\n\n\n<!--more-->\n\n\n\n<h2 class=\"wp-block-heading\">Installation Docker<\/h2>\n\n\n\n<p>Dies sind zusammen kopierte Befehle aus der <a href=\"https:\/\/docs.docker.com\/install\/linux\/docker-ce\/ubuntu\/\">offiziellen Dokumentation<\/a>. Zus\u00e4tzlich habe ich direkt docker-compose mit installiert.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\nsudo apt-get update &amp;&amp; sudo apt-get install ca-certificates curl &amp;&amp; sudo install -m 0755 -d \/etc\/apt\/keyrings\nsudo curl -fsSL https:\/\/download.docker.com\/linux\/ubuntu\/gpg -o \/etc\/apt\/keyrings\/docker.asc &amp;&amp; sudo chmod a+r \/etc\/apt\/keyrings\/docker.asc\n\necho \\\n  \"deb &#91;arch=$(dpkg --print-architecture) signed-by=\/etc\/apt\/keyrings\/docker.asc] https:\/\/download.docker.com\/linux\/ubuntu \\\n  $(. \/etc\/os-release &amp;&amp; echo \"${UBUNTU_CODENAME:-$VERSION_CODENAME}\") stable\" | \\\n  sudo tee \/etc\/apt\/sources.list.d\/docker.list &gt; \/dev\/null\nsudo apt-get update\n\nsudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin<\/code><\/pre>\n\n\n\n<p>Ich empfehle docke nicht als root laufen zu lassen. Entweder erstellt man einen eigenen Benutzer bzw. ich habe mich dazu entschieden docker unter den Benutzernamen einer meiner Domains laufen zu lassen. <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo groupadd docker<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo usermod -aG docker DOMAIN_USERNAME<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Installation Nextcloud<\/h2>\n\n\n\n<p>Am einfachsten finde ich die Installation mit Docker-compose. Dazu habe ich im Ordner der Domain (nicht unter httpdocs) einen Ordner docker erstellt und folgende docker-compose.yml abgelegt:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>services:\n  nextcloud:\n    image: nextcloud:29.0.12\n    container_name: NextCloud\n    restart: always\n    ports:\n      - 8888:80\n    volumes:\n      - \/var\/www\/vhosts\/nissel.it\/docker\/data\/nextcloud:\/var\/www\/html\n      - \/etc\/localtime:\/etc\/localtime:ro\n    depends_on:\n      - mariadb\n\n  mariadb:\n    image: mariadb:10.7.6\n    container_name: mariadb\n    restart: always\n    environment:\n      - MYSQL_ROOT_PASSWORD=passwortDeinerWahl\n      - MYSQL_DATABASE=nextcloud\n      - MYSQL_USER=nextcloud\n      - MYSQL_PASSWORD=passwortDeinerWahl2\n    volumes:\n      - \/var\/www\/vhosts\/nissel.it\/docker\/data\/mariadb:\/var\/lib\/mysql<\/code><\/pre>\n\n\n\n<p>Wenn nun folgender Befehl eingegeben wird, passiert ein Wunder und das nexcloud image mit mariadb sind gestartet:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker compose up -d<\/code><\/pre>\n\n\n\n<p>Die Grundlegende Konfiguration kann dann \u00fcber domain.de:8888 vorgenommen werden. Soweit funktioniert dann nextcloud.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Subdomain mit HTTPs nginx Proxy einrichten<\/h2>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><a href=\"https:\/\/nissel.it\/wp-content\/uploads\/2020\/04\/nexcloud-domain-settings.png\"><img loading=\"lazy\" decoding=\"async\" width=\"637\" height=\"895\" src=\"https:\/\/nissel.it\/wp-content\/uploads\/2020\/04\/nexcloud-domain-settings.png\" alt=\"\" class=\"wp-image-540\" style=\"width:463px;height:722px\" srcset=\"https:\/\/nissel.it\/wp-content\/uploads\/2020\/04\/nexcloud-domain-settings.png 637w, https:\/\/nissel.it\/wp-content\/uploads\/2020\/04\/nexcloud-domain-settings-214x300.png 214w\" sizes=\"auto, (max-width: 637px) 100vw, 637px\" \/><\/a><figcaption class=\"wp-element-caption\">Hosting Settings der Domain<\/figcaption><\/figure>\n\n\n\n<p>Danach muss man unter &#8222;Apache &amp; nginx Setting&#8220; den Proxy einrichten. Der Hacken bei proxy mode muss aus geschaltet werden, da wir nicht zum Apache weiterleiten. Diese Einstellung muss gespeichert werden, da ansonsten die n\u00e4chste Einstellung nicht \u00fcbernommen wird.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"608\" height=\"496\" src=\"https:\/\/nissel.it\/wp-content\/uploads\/2020\/04\/02-nextcloud.png\" alt=\"\" class=\"wp-image-220\" srcset=\"https:\/\/nissel.it\/wp-content\/uploads\/2020\/04\/02-nextcloud.png 608w, https:\/\/nissel.it\/wp-content\/uploads\/2020\/04\/02-nextcloud-300x245.png 300w\" sizes=\"auto, (max-width: 608px) 100vw, 608px\" \/><figcaption class=\"wp-element-caption\">Proyx mode aus schalten<\/figcaption><\/figure>\n\n\n\n<p>Unter &#8222;Additional nginx directives&#8220; muss dann folgendes eingetragen werden. Dies leitet alles an den Docker container weiter. Die Url 127.0.0.1:9999 ist der docker proxy.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>location \/ {\n\tproxy_set_header    Host $host;\n\tproxy_set_header    X-Real-IP $remote_addr;\n\tproxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;\n\tproxy_set_header    X-Forwarded-Proto $scheme;\n\tproxy_pass          http:\/\/127.0.0.1:9999\/;\n\tproxy_read_timeout\t36000s;\n        #Only use secure connection\n\tadd_header Strict-Transport-Security \"max-age=31536000; includeSubDomains; preload\";\n        #Allow big files to upload\n\tclient_max_body_size 0;\n}\n\nlocation \/.well-known\/carddav {\n\treturn 301 $scheme:\/\/$host\/remote.php\/dav;\n}\n\nlocation \/.well-known\/caldav {\n\treturn 301 $scheme:\/\/$host\/remote.php\/dav;\n}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Nextcloud configuration anpassen<\/h2>\n\n\n\n<p>Die config\/config.php im Data Ordner von nextcloud (bei mir \/var\/www\/vhosts\/nissel.it\/docker\/data\/nextcloud) muss f\u00fcr den Betrieb hinter einem Proxy angepasst werden.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>'trusted_domains' =&gt; \n  array (\n    0 =&gt; 'nissel.it:8888',\n    1 =&gt; 'meinedomain.nissel.it',\n    2 =&gt; '127.0.0.1:9999',\n  ),\n\n  'overwrite.cli.url' =&gt; 'https:\/\/meinedomain.nissel.it',\n  'overwritehost'     =&gt; 'meinedomain.nissel.it',\n  'overwriteprotocol' =&gt; 'https',<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">NextCloud Cron einrichten<\/h2>\n\n\n\n<p><\/p>\n\n\n\n<p>Dazu in Plesk unter Tools &amp; Settings einen Scheduled Task einrichten.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"329\" height=\"300\" src=\"https:\/\/nissel.it\/wp-content\/uploads\/2025\/02\/grafik.png\" alt=\"\" class=\"wp-image-543\" srcset=\"https:\/\/nissel.it\/wp-content\/uploads\/2025\/02\/grafik.png 329w, https:\/\/nissel.it\/wp-content\/uploads\/2025\/02\/grafik-300x274.png 300w\" sizes=\"auto, (max-width: 329px) 100vw, 329px\" \/><\/figure>\n\n\n\n<p>Hier muss der Befehl <em>docker exec -u 33 NextCloud \/usr\/local\/bin\/php -f \/var\/www\/html\/cron.php<\/em> ausgef\u00fchrt werden. Dadurch wird innerhalb des Docker containers mit dem Benutzer www-data (33) das cron.php Skript gestartet.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"785\" height=\"796\" src=\"https:\/\/nissel.it\/wp-content\/uploads\/2025\/02\/grafik-2.png\" alt=\"\" class=\"wp-image-545\" srcset=\"https:\/\/nissel.it\/wp-content\/uploads\/2025\/02\/grafik-2.png 785w, https:\/\/nissel.it\/wp-content\/uploads\/2025\/02\/grafik-2-296x300.png 296w, https:\/\/nissel.it\/wp-content\/uploads\/2025\/02\/grafik-2-768x779.png 768w, https:\/\/nissel.it\/wp-content\/uploads\/2025\/02\/grafik-2-100x100.png 100w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Umgebung<\/h2>\n\n\n\n<p>Ubuntu 22.04<br>Plesk 18.0.67<br>Docker 27.5.1<br>Docker-compose 1.29.2<br>Nextcloud 29.0.12<br>Mariadb 10.2<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Links<\/h2>\n\n\n\n<p><a href=\"https:\/\/docs.docker.com\/install\/linux\/docker-ce\/ubuntu\/\">https:\/\/docs.docker.com\/install\/linux\/docker-ce\/ubuntu\/<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/docs.docker.com\/install\/linux\/linux-postinstall\/\">https:\/\/docs.docker.com\/install\/linux\/linux-postinstall\/<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/dennisnotes.com\/note\/20180831-nextcloud-docker-nginx-reverse-proxy\/\">https:\/\/dennisnotes.com\/note\/20180831-nextcloud-docker-nginx-reverse-proxy\/<\/a><\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-wp-embed is-provider-markus-039-blog wp-block-embed-markus-039-blog\"><div class=\"wp-block-embed__wrapper\">\n<blockquote class=\"wp-embedded-content\" data-secret=\"DKcSuv6Qhl\"><a href=\"https:\/\/markus-blog.de\/index.php\/2019\/03\/22\/how-to-deploy-collabora-online-office-with-docker-in-plesk-and-connect-to-nextcloud-2\/\">How to deploy Collabora Online Office with Docker in Plesk and connect to Nextcloud<\/a><\/blockquote><iframe loading=\"lazy\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; visibility: hidden;\" title=\"&#8222;How to deploy Collabora Online Office with Docker in Plesk and connect to Nextcloud&#8220; &#8212; Markus&#039; Blog\" src=\"https:\/\/markus-blog.de\/index.php\/2019\/03\/22\/how-to-deploy-collabora-online-office-with-docker-in-plesk-and-connect-to-nextcloud-2\/embed\/#?secret=pD06w8mV2M#?secret=DKcSuv6Qhl\" data-secret=\"DKcSuv6Qhl\" width=\"525\" height=\"296\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe>\n<\/div><\/figure>\n\n\n\n<p><a href=\"https:\/\/docs.nextcloud.com\/server\/15\/admin_manual\/configuration_server\/reverse_proxy_configuration.html\">https:\/\/docs.nextcloud.com\/server\/15\/admin_manual\/configuration_server\/reverse_proxy_configuration.html<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/docs.nextcloud.com\/server\/29\/admin_manual\/configuration_server\/background_jobs_configuration.html\">https:\/\/docs.nextcloud.com\/server\/29\/admin_manual\/configuration_server\/background_jobs_configuration.html<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Lange \u00dcberschrift kurzer Sinn. Ich habe mit Docker ein Nextcloud aufgesetzt. Ich benutze nicht die Plesk Integration von Docker! Ziel war es auf einer Domain \u00fcber https Nextcloud erreichbar zu machen. Deswegen habe ich \u00fcber Plesk eine Domain angelegt und den nginx als Proyx von Hand (Additional nginx directives) konfiguriert.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[13,12],"class_list":["post-217","post","type-post","status-publish","format-standard","hentry","category-webserver","tag-docker","tag-nextcloud"],"_links":{"self":[{"href":"https:\/\/nissel.it\/index.php\/wp-json\/wp\/v2\/posts\/217","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nissel.it\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nissel.it\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nissel.it\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/nissel.it\/index.php\/wp-json\/wp\/v2\/comments?post=217"}],"version-history":[{"count":5,"href":"https:\/\/nissel.it\/index.php\/wp-json\/wp\/v2\/posts\/217\/revisions"}],"predecessor-version":[{"id":546,"href":"https:\/\/nissel.it\/index.php\/wp-json\/wp\/v2\/posts\/217\/revisions\/546"}],"wp:attachment":[{"href":"https:\/\/nissel.it\/index.php\/wp-json\/wp\/v2\/media?parent=217"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nissel.it\/index.php\/wp-json\/wp\/v2\/categories?post=217"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nissel.it\/index.php\/wp-json\/wp\/v2\/tags?post=217"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}