{"id":22077,"date":"2024-10-25T05:01:38","date_gmt":"2024-10-25T03:01:38","guid":{"rendered":"http:\/\/blog.wenzlaff.de\/?p=22077"},"modified":"2024-10-20T20:34:21","modified_gmt":"2024-10-20T18:34:21","slug":"portainer-io-ce-im-docker-mit-docker-compose-mit-eigenen-zertifikaten-auf-dem-raspberry-pi","status":"publish","type":"post","link":"http:\/\/blog.wenzlaff.de\/?p=22077","title":{"rendered":"Portainer.io CE im Docker mit docker-compose mit eigenen Zertifikaten auf dem Raspberry Pi"},"content":{"rendered":"<p>Portainer.io CE (Community Edition) ist eine Open-Source-Management-Plattform f\u00fcr Docker-Container und Kubernetes. Es bietet eine grafische Benutzeroberfl\u00e4che, mit der Benutzer ihre Container, Netzwerke und Volumes einfach verwalten k\u00f6nnen, ohne komplexe CLI-Befehle verwenden zu m\u00fcssen. Es unterst\u00fctzt mehrere Umgebungen und bietet Funktionen wie Benutzer- und Zugriffsverwaltung, App-Deployment und Monitoring.<\/p>\n<p>Es richtet sich an Entwickler und Administratoren, die Container-Infrastrukturen effizienter und intuitiver verwalten wollen. Infos zu <a href=\"https:\/\/docs.portainer.io\/start\/install-ce\/server\/docker\/linux\" rel=\"noopener\" target=\"_blank\">Portainer.io CE hier<\/a>.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2024\/05\/crypto.mp4.gif\" alt=\"\" width=\"512\" height=\"288\" class=\"aligncenter size-full wp-image-21698\" \/><\/p>\n<p>Wenn man keine eigenen Zertifikate verwendet, werden eigenen selbstsignierte verwendet.<!--more--> Es gehen noch <strong>keine Zertifikate mit Elliptischen-Kurven<\/strong> (EC), deshalb RSA generieren! Wie man die Keys erzeugt mit der XCA habe ich schon mal <a href=\"http:\/\/blog.wenzlaff.de\/?p=20833\" rel=\"noopener\" target=\"_blank\">hier<\/a> beschrieben. Nun wollen wir Portainer mal im Docker laufen lassen. Docker muss schon installiert sein. Die <strong>docker-compose.yml<\/strong> Datei erstellen wie z.B. hier:<\/p>\n<pre class=\"lang:default decode:true \" >\r\n\r\nservices:\r\n  portainer:\r\n    image: portainer\/portainer-ce:latest\r\n    restart: always\r\n    ports:\r\n      - 9443:9443 # der https Port\r\n    volumes:\r\n      - \/var\/run\/docker.sock:\/var\/run\/docker.sock\r\n      - \/home\/thomaswenzlaff\/portainer\/portainer_data:\/data\r\n      - ~\/portainer\/certs:\/certs # der Pfad wo das rsa Zertifikat und der Key liegen\r\n    command:\r\n      --sslcert \/certs\/rsa-zertifikat.crt # das public Zertifikat\r\n      --sslkey \/certs\/rsa-priv-key.pem # der private Key f\u00fcr das Zertifikat\r\n\r\n<\/pre>\n<p>Die m\u00f6glichen Werte f\u00fcr die restart-Option sind:<\/p>\n<p>    <strong>no<\/strong>: Der Container wird nicht automatisch neu gestartet (Standard).<\/p>\n<p>    <strong>always<\/strong>: Der Container wird immer neu gestartet, egal aus welchem Grund er gestoppt wurde.<\/p>\n<p>    <strong>on-failure<\/strong>: Der Container wird nur neu gestartet, wenn er aufgrund eines Fehlers beendet wurde (Exit-Code ungleich 0).<\/p>\n<p>    <strong>unless-stopped<\/strong>: Der Container wird immer neu gestartet, es sei denn, er wurde manuell gestoppt.<\/p>\n<p>Wenn du also m\u00f6chtest, dass deine Container nach einem Neustart des Systems automatisch hochfahren, setze die restart-Policy auf <strong>always<\/strong> oder <strong>unless-stopped<\/strong>.<\/p>\n<p>Die Stucktur sieht dann so aus:<\/p>\n<pre class=\"lang:default decode:true \" >~\/portainer $ tree\r\n.\r\n\u251c\u2500\u2500 certs\r\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 rsa-priv-key.pem\r\n\u2502\u00a0\u00a0 \u2514\u2500\u2500 rsa-zertifikat.crt\r\n\u251c\u2500\u2500 docker-compose.yml\r\n\u2514\u2500\u2500 portainer_data\r\n    \u251c\u2500\u2500 bin  \r\n    \u251c\u2500\u2500 certs \r\n    \u251c\u2500\u2500 chisel  \r\n    \u251c\u2500\u2500 compose  \r\n    \u251c\u2500\u2500 docker_config \r\n    \u251c\u2500\u2500 portainer.db\r\n    \u251c\u2500\u2500 portainer.key\r\n    \u251c\u2500\u2500 portainer.pub\r\n    \u2514\u2500\u2500 tls\r\n<\/pre>\n<p>Und einfach <strong>docker-compose up -d<\/strong> und Portainer l\u00e4uft unter <a href=\"https:\/\/pi-vier:9443\" rel=\"noopener\" target=\"_blank\">https:\/\/pi-vier:9443<\/a> mit eigenen Zertifikaten.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Portainer.io CE (Community Edition) ist eine Open-Source-Management-Plattform f\u00fcr Docker-Container und Kubernetes. Es bietet eine grafische Benutzeroberfl\u00e4che, mit der Benutzer ihre Container, Netzwerke und Volumes einfach verwalten k\u00f6nnen, ohne komplexe CLI-Befehle verwenden zu m\u00fcssen. Es unterst\u00fctzt mehrere Umgebungen und bietet Funktionen wie Benutzer- und Zugriffsverwaltung, App-Deployment und Monitoring. Es richtet sich an Entwickler und Administratoren, die &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/blog.wenzlaff.de\/?p=22077\" class=\"more-link\"><span class=\"screen-reader-text\">\u201ePortainer.io CE im Docker mit docker-compose mit eigenen Zertifikaten auf dem Raspberry Pi\u201c <\/span>weiterlesen<\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","footnotes":""},"categories":[220,5811],"tags":[451,2502,5800,5040,819,5807,5225,6046,739,5799,1021],"class_list":["post-22077","post","type-post","status-publish","format-standard","hentry","category-anleitung","category-elliptische-kurven","tag-crypt","tag-docker","tag-ec","tag-elliptic-curve","tag-key","tag-pem","tag-portainer","tag-portainer-ce","tag-rsa","tag-xca","tag-zertifikate"],"_links":{"self":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts\/22077","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=22077"}],"version-history":[{"count":0,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts\/22077\/revisions"}],"wp:attachment":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=22077"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=22077"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=22077"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}