Zum Inhalt springen

Portainer Container auf dem Raspberry Pi (Teil 4)

Portainer Container Verwaltung darum soll es in diesem Teil meiner Tutorial Reihe gehen.

Was ist Portainer Container Verwaltung?

Portainer ist ein universelles Container Management System, das neben Docker/Swarm auch Kubernetes und Nomad unterstützt. Ich setze es für Docker Container ein und kann so schnell und an mehreren Orten Container deployen.

Neben einer Community Edition, gibt es für die Leute die mehr Support oder das volle Feature Set gibt es eine Business Version.

Portainer Verwaltung 1

Warum habe ich mich für Portainer entschieden.

Ich mag einfach WebFrontends, auch wenn ich sie nicht benötige. Zudem habe ich so die Möglichkeit alle auf dem System laufenden Container einfach und schnell zu verwalten.

Portainer bietet dazu eine einfach zu verstehende grafische Oberfläche. Es ist dabei egal ob es sich um Windows oder Linux Container handelt, alle Container werden an einem Ort verwaltet.

Viele Funktionen, wie Container oder Stack Restart, Löschen oder Erstellen von Volumes, Images, Containern, Netzwerken lassen sich mit wenigen Klicks über die Oberfläche von Portainer erledige. Für mich ist aber der größte Vorteil ist, das Einsteiger selbst bei komplexen Stacks oder vielen Containern, nicht an einer steilen Lernkurve scheitern.

Für den täglichen Betrieb ist in Portainer, nach meiner Auffassung für den Einsteiger alles vorhanden und sie ist viel intuitiver als die CLI von Docker.

Grundsätzlich macht Portainer nicht mehr als die Api von Docker abfragen. Daher kann jeder der sich mit der Api und Cli auskennt auch getrost darauf verzichten, doch gerade für Einsteiger in die Welt der Container bietet Portainer viel gutes.

Portainer in einem Docker Container installieren und einrichten

In meinem Repo findet ihr eine docker-compose-portainer.yml Datei, damit könnt ihr den Container einfach deployen und dann unter der IP eures Raspi und dem Port 9000 aufrufen.

Die Docker-Compose File findet ihr in meinem Repo auf Github: https://github.com/meehr/portainer

Portainer .env File

Um die Variablen zu befüllen haben ich eine .env Datei im gleichen Verzeichnis angelegt.

CONTAINER_NAME=[Name des Containers]
VIRTUAL_HOST=[Hostname des Containers]
VIRTUAL_PORT=[PORT des Containers]

Portainer Compose File

Die Docker-Compose Datei enthält neben der Netzwerk Zuordnung, in meinem Fall sind das die beiden NginX Proxy Netze, sowie der Port 9000 für die http Adresse.

Falls ihr euch fragt warum nicht 9443 für https, dies übernimmt bei mir der NginX Proxy Manager, da ich meine Portainer Container Verwaltung auch intern über die zugewiesene Domain aufrufe.

version: '3.9'

volumes:
  portainer-data:

services:
  portainer:
    image: portainer/portainer-ce:latest
    container_name: ${CONTAINER_NAME}
    restart: unless-stopped
    volumes:
      - portainer-data:/data
      - /var/run/docker.sock:/var/run/docker.sock
    environment:
      - VIRTUAL_HOST=${VIRTUAL_HOST}
      - VIRTUAL_PORT=${VIRTUAL_PORT}
    ports:
      - 8000:8000
    networks:
      - nginx_proxy_frontend
      - nginx_proxy_backend

networks:
  nginx_proxy_frontend:
    # add this if the network is already existing!
    external: true
  nginx_proxy_backend:
    # add this if the network is already existing!
    external: true

Portainer über eine Domain erreichbar machen

Um mein Portainer für mein kleines HomeLab auch von außen erreichbar zu machen, habe ich eine Subdomain NO-IP ( DynDNS Anbieter ) auf meinen daheim laufenden Raspi umgebogen.

Dazu erstellt ihr einfach bei Eurem Domain Anbieter einen CName Eintrag der auf die entsprechende Domain des DynDNS Anbieters zeigt.

Danach erstellt ihr im NginX Proxy Manager, noch einen Eintrag der auf die IP Eures Raspberry und den entsprechenden Port zeigt. Zusätzlich könnt ihr entweder direkt im NPM ein SSL Zertifikat für die Sub-Domain über Let’s Encrypt erzeugen oder wenn vorhanden das WildCard Zertifikat eures Domain Anbieters nehmen.

Erweiterte Absicherung durch Google OAuth

Da das Web-Frontend von Portainer nun von außen erreichbar ist habe ich es zusätzlich noch mit Google OAuth abgesichert. Eine Anleitung dazu schreibe ich euch noch.

Ende Teil 4

Damit wäre nun auch Teil 4 erledigt, gerne stehe ich euch bei Fragen natürlich zur Seite.

Hier sind noch mal die 3 vorher gehenden Teile verlinkt.

Published inHowToRaspberryTutorial