{"id":2993,"date":"2022-02-14T07:00:00","date_gmt":"2022-02-14T06:00:00","guid":{"rendered":"https:\/\/www.my-it-brain.de\/wordpress\/?p=2993"},"modified":"2022-04-18T13:46:58","modified_gmt":"2022-04-18T11:46:58","slug":"nextcloud-im-container-teil-1-der-plan","status":"publish","type":"post","link":"https:\/\/www.my-it-brain.de\/wordpress\/nextcloud-im-container-teil-1-der-plan\/","title":{"rendered":"Nextcloud im Container &#8211; Teil 1: Der Plan"},"content":{"rendered":"\n<p>Dies ist der Beginn meines zweiten Container-Projekts. Nach <a href=\"https:\/\/www.my-it-brain.de\/wordpress\/kanboard-im-container\/\" data-type=\"post\" data-id=\"2685\">Kanboard im Container<\/a> m\u00f6chte ich diesmal eine <a href=\"https:\/\/nextcloud.com\/\">Nextcloud<\/a>-Instanz als Container, zusammen mit einem Datenbank-Container, in einem <a href=\"https:\/\/podman.io\">Podman<\/a>-Pod betreiben.<\/p>\n\n\n\n<p>Da ein einzelner Artikel vermutlich zu lang wird, teile ich das Projekt in mehrere Artikel auf. Wie viele es genau werden, kann ich jetzt noch nicht sagen. Am Ende der Reihe werde ich hier eine \u00dcbersicht einf\u00fchren und die einzelnen Teilen entsprechend miteinander verbinden.<\/p>\n\n\n\n<p>In diesem ersten Teil geht es um meine Motivation, das eigentliche Ziel und den groben Plan.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"was-leser-dieser-reihe-erwartet\">Was Leser dieser Reihe erwartet<\/h2>\n\n\n\n<p>Ihr k\u00f6nnt mich durch diese Reihe begleiten und euch von meinen Erlebnissen und Erkenntnissen unterhalten lassen. Dabei d\u00fcrft ihr nicht annehmen, dass es sich bei dem von mir beschriebenen Vorgehen um eine gute Praxis handelt. Hier gilt eher: Der Weg ist das Ziel.<\/p>\n\n\n\n<p>Ihr seid herzlich eingeladen, die Artikel zu kommentieren und \u00fcber das Vorgehen und Alternativen dazu zu diskutieren. Gern in der Kommentarsektion unter den jeweiligen Beitr\u00e4gen oder als Artikel in euren eigenen Blogs.<\/p>\n\n\n\n<p>Ich plane die Artikel im Wochenrhythmus, wenigstens monatlich, zu ver\u00f6ffentlichen. Bitte verzeiht, wenn es etwas unregelm\u00e4\u00dfig wird. Dies ist ein Hobby, dem nur begrenzt Zeit zur Verf\u00fcgung steht.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"motivation\">Motivation<\/h2>\n\n\n\n<p>Bei Linux-Containern handelt es sich um eine Technologie, die gekommen ist, um zu bleiben. Sie hat bereits in vielen Branchen Fu\u00df gefasst und immer mehr Projekte bieten ihre Anwendungen zus\u00e4tzlich oder ausschlie\u00dflich in Form von Containern an.<\/p>\n\n\n\n<p>Als Sysadmin mittleren Alters werden mich Linux-Container sicher noch viele Jahre begleiten. Um praktische Erfahrungen mit dem Betrieb zu sammeln, m\u00f6chte ich einige private Projekte in Containern betreiben.<\/p>\n\n\n\n<p>Beruflich arbeite ich \u00fcberwiegend mit <a href=\"https:\/\/de.wikipedia.org\/wiki\/Red_Hat_Enterprise_Linux\">RHEL<\/a>. Red Hat engagiert sich stark in den Projekten <a href=\"https:\/\/docs.ansible.com\/\">Ansible<\/a> und Podman, welche ich auch unter anderen Distributionen, wie z.B. <a href=\"https:\/\/www.debian.org\/\">Debian<\/a>, einsetze. Ich m\u00f6chte das Projekt als Chance nutzen, mein Wissen auch in diesen Werkzeugen zu festigen und auszubauen.<\/p>\n\n\n\n<p>Ich spiele schon seit einiger Zeit mit dem Gedanken, wieder eine eigene Nextcloud-Instanz zu betreiben. Da auf dem zur Verf\u00fcgung stehenden Server bereits eine Nextcloud-Instanz l\u00e4uft und ich meine Anwendung von der bestehenden Instanz getrennt und m\u00f6glichst losgel\u00f6st vom Betriebssystem betreiben m\u00f6chte, habe ich mich entschieden, Nextcloud im Container zu betreiben.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"ziele\">Ziele<\/h2>\n\n\n\n<p>Ziel dieses Projekts sind das Deployment und der Betrieb einer Nextcloud-Instanz als Podman-Pod. Im Einzelnen sollen folgende Ziele erreicht werden:<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>Entwicklung eines wiederverwendbaren Verfahrens zum Deployment einer Nextcloud im Container<\/li><li>Persistente Speicherung von Konfigurations- und inhaltlichen Daten im Dateisystem des Hosts<\/li><li>Konfiguration eines Reverse-Proxies (NGINX) f\u00fcr den Zugriff auf die Nextcloud-Instanz<\/li><li>Konfiguration von Backup und Restore f\u00fcr Konfiguration und Inhalte der Nextcloud-Instanz<\/li><li>Konfiguration und Test <s>automatischer<\/s> durch Ansible gesteuerter Updates<\/li><\/ol>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"umgebung\">Umgebung<\/h2>\n\n\n\n<p>F\u00fcr die Umsetzung des Projekts steht mir ein Virtual Private Server (VPS) mit gen\u00fcgend Ressourcen zur Verf\u00fcgung. Dieser wird in einem Rechenzentrum in Deutschland betrieben. Auf diesem sind Debian Bullseye, NGINX, ein OpenSSH-Server, Podman 3.0.1 (rootless) und Python 3.9.2 installiert. Damit erf\u00fcllt dieses System die Voraussetzungen, um mit Ansible konfiguriert zu werden und Container ausf\u00fchren zu k\u00f6nnen.<\/p>\n\n\n\n<p>Ansible selbst l\u00e4uft in meiner <a href=\"https:\/\/www.my-it-brain.de\/wordpress\/meine-privaten-arbeitsmittel-anfang-2022\/\" data-type=\"post\" data-id=\"3052\">privaten Arbeitsumgebung<\/a> auf meinem Debian-PC und einem Fedora-35-Notebook.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"methodik-werkzeuge\">Methodik und verwendete Werkzeuge<\/h2>\n\n\n\n<p>Zu Beginn habe ich mich etwas in der Nextcloud-Dokumentation  und den verf\u00fcgbaren Nextcloud-Images belesen. Besagte Dokumentation sowie die der verwendeten Werkzeuge sind im folgenden <a href=\"#quellen-links\">Abschnitt<\/a> verlinkt.<\/p>\n\n\n\n<p>Um die oben formulierten <a href=\"#ziele\">Ziele<\/a> zu erreichen, werde ich in einem <em>Python Virtual Environment<\/em> eine Ansible-Version installieren, mit der ich die Collection <em>containers.podman<\/em> nutzen kann. Hiermit werde ich eine Ansible-Rolle entwickeln, die ich wiederverwenden kann, um Nextcloud-Instanzen in einer rootless-Podman-Umgebung zu deployen. Die Ansible-Rolle wird anschlie\u00dfend auf meinem <a href=\"https:\/\/github.com\/tronde\">GitHub-Account<\/a> ver\u00f6ffentlicht.<\/p>\n\n\n\n<p>Die Konfiguration von NGINX und acme.sh f\u00fcr die TLS-Zertifikate erfolgt manuell.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"quellen-links\">Quellen und weiterf\u00fchrende Links<\/h2>\n\n\n\n<p>In diesem Abschnitt liste ich Links zu Artikeln und Dokumentationen auf, welche ich im Vorfeld gelesen habe und deren Kenntnis ich f\u00fcr die Umsetzung als n\u00fctzlich erachte. Zur besseren \u00dcbersicht gliedere ich diese in die Unterabschnitte Hintergrundwissen, Dokumentation und Eigene Artikel.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Die weiteren Artikel dieser Reihe<\/h3>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/www.my-it-brain.de\/wordpress\/nextcloud-im-container-teil-2-die-ansible-rolle\/\" data-type=\"post\" data-id=\"2996\">Nextcloud im Container \u2013 Teil 2: Die Ansible-Rolle<\/a><\/li><li><a href=\"https:\/\/www.my-it-brain.de\/wordpress\/nextcloud-im-container-teil-3-mit-reverse-proxy\/\" data-type=\"post\" data-id=\"3120\">Nextcloud im Container \u2014 Teil 3: Mit Reverse-Proxy<\/a><\/li><li><a href=\"https:\/\/www.my-it-brain.de\/wordpress\/nextcloud-im-container-teil-4-hier-und-da-klemmt-es\/\" data-type=\"post\" data-id=\"3140\">Nextcloud im Container \u2014 Teil 4: Hier und da klemmt es<\/a><\/li><li><a href=\"https:\/\/www.my-it-brain.de\/wordpress\/nextcloud-im-container-teil-5-backup-und-restore\/\" data-type=\"post\" data-id=\"3145\">Nextcloud im Container \u2013 Teil 5: Backup und Restore<\/a><\/li><li><a href=\"https:\/\/www.my-it-brain.de\/wordpress\/nextcloud-im-container-teil-6-updates\/\" data-type=\"post\" data-id=\"3173\">Nextcloud im Container \u2013 Teil 6: Updates<\/a><\/li><\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"hintergrundwissen\">Hintergrundwissen<\/h3>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/www.redhat.com\/en\/blog\/architecting-containers-part-1-why-understanding-user-space-vs-kernel-space-matters\">Architecting Containers Part 1: Why Understanding User Space vs. Kernel Space Matters<\/a>; <a href=\"https:\/\/www.redhat.com\/en\/authors\/scott-mccarty-fatherlinux\">Scott McCarty (fatherlinux)<\/a>; July 29, 2015<\/li><li><a href=\"https:\/\/www.redhat.com\/en\/blog\/architecting-containers-part-2-why-user-space-matters\">Architecting Containers Part 2: Why the User Space Matters<\/a>; <a href=\"https:\/\/www.redhat.com\/en\/authors\/scott-mccarty-fatherlinux\">Scott McCarty (fatherlinux)<\/a>; September 17, 2015<\/li><li><a href=\"https:\/\/www.redhat.com\/en\/blog\/architecting-containers-part-3-how-user-space-affects-your-application\">Architecting Containers Part 3: How the User Space Affects Your Application<\/a>; <a href=\"https:\/\/www.redhat.com\/en\/authors\/scott-mccarty-fatherlinux\">Scott McCarty (fatherlinux)<\/a>; November 10, 2015<\/li><li><a href=\"https:\/\/developers.redhat.com\/blog\/2018\/02\/22\/container-terminology-practical-introduction\/\">A Practical Introduction to Container Terminology<\/a>; <a href=\"https:\/\/www.redhat.com\/en\/authors\/scott-mccarty-fatherlinux\">Scott McCarty (fatherlinux)<\/a>; February 22, 2018<\/li><li><a href=\"https:\/\/developers.redhat.com\/blog\/2019\/01\/15\/podman-managing-containers-pods\/\">Podman: Managing pods and containers in a local container runtime<\/a>; <a href=\"https:\/\/developers.redhat.com\/blog\/author\/bbaude\/\">Brent Baude<\/a>; January 15, 2019<\/li><li><a href=\"https:\/\/fedoramagazine.org\/nextcloud-20-on-fedora-linux-with-podman\/\">Installing Nextcloud 20 on Fedora Linux with Podman<\/a>; fedora MAGAZINE; DSchier; February 15, 2021<\/li><li><a href=\"https:\/\/www.redhat.com\/sysadmin\/python-venv-ansible\">How to set up and use Python virtual environments for Ansible<\/a>; Enable Sysadmin; <a href=\"https:\/\/www.redhat.com\/sysadmin\/users\/gineesh-madapparambath\">Gineesh Madapparambath<\/a>; 2021-08-18<\/li><li><a href=\"https:\/\/de.wikipedia.org\/wiki\/Ansible\">https:\/\/de.wikipedia.org\/wiki\/Ansible<\/a><\/li><li><a href=\"https:\/\/de.wikipedia.org\/wiki\/Nextcloud\">https:\/\/de.wikipedia.org\/wiki\/Nextcloud<\/a><\/li><li><a href=\"https:\/\/de.wikipedia.org\/wiki\/Containervirtualisierung\">https:\/\/de.wikipedia.org\/wiki\/Containervirtualisierung<\/a><\/li><\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"dokumentation\">Dokumentation<\/h3>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/docs.ansible.com\/\">https:\/\/docs.ansible.com\/<\/a><\/li><li><a href=\"https:\/\/docs.nextcloud.com\/\">https:\/\/docs.nextcloud.com\/<\/a><\/li><li><a href=\"https:\/\/hub.docker.com\/_\/nextcloud\">https:\/\/hub.docker.com\/_\/nextcloud<\/a><\/li><li><a href=\"https:\/\/github.com\/docker-library\/docs\/blob\/master\/nextcloud\/README.md\">https:\/\/github.com\/docker-library\/docs\/blob\/master\/nextcloud\/README.md<\/a><\/li><\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"eigene-artikel\">Eigene Artikel<\/h3>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/www.my-it-brain.de\/wordpress\/kanboard-im-container\/\">Kanboard im Container\u2026<\/a><\/li><li><a href=\"https:\/\/www.my-it-brain.de\/wordpress\/reverse-proxy-fuer-kanboard-im-container\/\">Reverse-Proxy f\u00fcr Kanboard im Container<\/a><\/li><li><a href=\"https:\/\/www.my-it-brain.de\/wordpress\/backup-und-restore-im-kanboard-container-land\/\">Backup und Restore im Kanboard-Container-Land<\/a><\/li><li><a href=\"https:\/\/www.my-it-brain.de\/wordpress\/aktualisierung-eines-kanboard-pods\/\">Aktualisierung eines Kanboard-Pods<\/a><\/li><\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Dies ist der Beginn meines zweiten Container-Projekts. Nach Kanboard im Container m\u00f6chte ich diesmal eine Nextcloud-Instanz als Container, zusammen mit einem Datenbank-Container, in einem Podman-Pod betreiben. Da ein einzelner Artikel vermutlich zu lang wird, teile ich das Projekt in mehrere Artikel auf. Wie viele es genau werden, kann ich jetzt noch nicht sagen. Am Ende<span class=\"continue-reading\"> <a href=\"https:\/\/www.my-it-brain.de\/wordpress\/nextcloud-im-container-teil-1-der-plan\/\">[Weiterlesen&#8230;]<\/a><\/span><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_metis_text_type":"","_metis_text_length":0,"_post_count":0,"footnotes":""},"categories":[57],"tags":[410,517,653,652,430,305,606],"class_list":["post-2993","post","type-post","status-publish","format-standard","hentry","category-wochenend-projekte","tag-ansible","tag-container","tag-containers-podman","tag-nextcloud","tag-osbn","tag-planet","tag-podman"],"_links":{"self":[{"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/posts\/2993","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/comments?post=2993"}],"version-history":[{"count":7,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/posts\/2993\/revisions"}],"predecessor-version":[{"id":3182,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/posts\/2993\/revisions\/3182"}],"wp:attachment":[{"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/media?parent=2993"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/categories?post=2993"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/tags?post=2993"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}