Raspberry-Pi Server mit Portainer - SmartHome verwalten [Tutorial]

    • Neu
    • Offizieller Beitrag

    In diesem ausführlichen Tutorial möchte ich euch Schritt für Schritt zeigen wie Ihr selbst als Anfänger spielend leicht einen eigenen Server mit einem Raspberry-Pi aufsetzen könnt, welchen ihr dann ganz einfach mit einer GUI (Graphical User Interface), also einer Grafischen Benutzeroberfläche bedienen könnt, Dienste wie Nextcloud (NAS Cloud System), Minecraft Server,Home-Assistant, Pi-Hole, DNS Dienste, VPN und vieles mehr mit einem einfachen Knopfdruck installieren, updaten und deinstallieren könnt ohne gleich den ganzen Raspberry-Pi neu konfigurieren zu müssen. Auch Backups lassen sich damit sehr einfach und unkompliziert realisieren. Aber nun genug geredet, fangen wir an.


    Als erstes benötigt Ihr natürlich einen Raspberry Pi, ich verwende in diesem Tutorial ein Set welches direkt mit Gehäuse und schneller SSD Vorinstalliert daherkommt, ich habe die 8GB RAM Variante des Raspberry-Pi 4 gewählt, das Projekt lässt sich jedoch auch mit anderen Modellen umsetzen.


    Mein Raspberry-Pi Set (8GB RAM) - https://www.amazon.de/Raspberr…s_tl&tag=schimmermedia-21

    (Raspberry-Pi mit 8GB RAM und eingebauter M2 SSD im Argon Case)


    Raspberry-Pi Set (4GB RAM) - https://www.amazon.de/Raspberr…s_tl&tag=schimmermedia-21

    (Raspberry-Pi mit 4GB RAM und eingebauter M2 SSD im Argon Case)


    Ihr könnt natürlich auch alles einzeln kaufen und so vielleicht etwas Geld sparen, indem Ihr vielleicht etwas weniger Speicher (SSD) nehmt, oder den Raspberry-Pi mit 4GB anstatt 8GB RAM nehmt.


    Raspberry-Pi 4 (4GB RAM) - https://www.amazon.de/Raspberr…s_tl&tag=schimmermedia-21

    Raspberry-Pi 4 (8GB RAM) - https://www.amazon.de/Raspberr…s_tl&tag=schimmermedia-21

    Pi 4 Argon Case mit M2 SSD Slot - https://www.amazon.de/Yantan-P…s_tl&tag=schimmermedia-21

    Beispiel für M2 SSD - https://www.amazon.de/SN570-50…s_tl&tag=schimmermedia-21

    Raspberry Pi 4 Netzteil - https://www.amazon.de/Raspberr…s_tl&tag=schimmermedia-21

    _____________________________________________________________________________


    Installation vom OS (Betriebssystem)


    Am einfachsten funktioniert die Installation des OS (Betriebssystem), wenn Ihr zusätzlich zu dem Argon Case wo Ihr die M2 SSD drin habt, noch ein USB-A auf USB-A Kabel besorgt, dann könnt ihr den Speicher nämlich einfach wie eine externe Festplatte an eurem PC anschließen.

    Ich habe mir dafür einfach dieses Kabel gekauft - https://www.amazon.de/gp/produ…s_tl&tag=schimmermedia-21


    Denn damit kann man das ganze dann einfach so am PC anschließen...


    Wenn man dann soweit ist braucht man nur noch eine Software namens "Raspberry Pi Imager", welche Ihr euch hier einfach runterladen könnt - https://www.raspberrypi.com/software/


    Hier könnt Ihr dann vorne bei Betriebssystem einfach unter "Raspberry Pi OS (other)", das "Raspberry Pi OS Lite (64 Bit)" auswählen.

    Bei "SD-Karte" wählt Ihr dann eure M2 SSD aus, in meinem Fall "Argon Forty SCSI Disk Device", was vermutlich bei euch auch ähnlich heißen wird wenn Ihr auch das Case von Argon verwendet, denn das ist der Controller von Argon für die eingebaute M2 SSD.

    Theoretisch könntet Ihr jetzt auch schon auf "Schreiben" klicken, aber wir wollen noch ein paar spezifischere Einstellungen vornehmen.


    Um weitere Einstellungen vornehmen zu können müsst Ihr hier [Strg]+[Shift ⇧]+ [X] drücken, dann öffnet sich dieses Menü in dem Ihr weitere Eingaben wie Hostname, SSH aktivieren, WiFi, Benutzername und Passwort etc. vornehmen könnt.


    Als Hostname nehme ich hier zum Beispiel "rpi-server" aber Ihr könnt hier den Namen verwenden der euch gefällt, das gleiche gilt für den "Benutzernamen", das "Passwort" und bei "Wifi" tragt Ihr natürlich euer Wifi ein, natürlich nur für den Fall, das Ihr auch WLAN benutzen wollt, ansonsten das einfach weg lassen und ein LAN Kabel anschließen (das könnt Ihr sowieso jederzeit anschließen).

    Bei mir sieht das jetzt also so aus...


    Dann hier einfach nur noch auf "Speichern" und dann rechts auf "Schreiben" klicken. Das Fenster dann noch kurz mit "JA" bestätigen und dann schreibt er die Daten auch schon auf eure M2 SSD.


    Wenn der Prozess abgeschlossen ist, könnt ihr das Gerät wieder von eurem PC trennen und mit der kleinen USB Brücke (welche im Lieferumfang enthalten ist) eine Verbindung zwischen dem Raspberry Pi und der M2 SSD herstellen.


    So sieht die USB Brücke aus...


    Und so müsst Ihr das ganze an der Rückseite des Gerätes miteinander verbinden...

    _____________________________________________________________________________


    Einrichtung des OS (Betriebssystem)


    Zum Einrichten vom Betriebssystem benötigt Ihr die Software "Putty", welche Ihr hier wieder einfach herunterladen könnt - https://www.chiark.greenend.or…gtatham/putty/latest.html


    Wenn Ihr diese heruntergeladen und geöffnet habt, braucht Ihr nicht einmal die IP-Adresse von eurem Raspberry Pi herauszufinden (wie das ja oft in anderen Tutorials gezeigt wird), denn dadurch das wir vorher einen "Hostnamen" vergeben haben, funktioniert das im internen Netzwerk quasi wie eine Domain, sprich Ihr könnt einfach den Hostnamen verwenden an Stelle der IP-Adresse (die IP Adresse funktioniert natürlich auch). In meinem Fall ist der Hostname "rpi-server" (Ihr schreibt hier euren Hostnamen rein), sieht dann so aus...


    Mit dem klick auf "Open" könnt Ihr die Verbindung zu eurem Raspberry Pi via SSH dann starten. Beim ersten Mal kommt dann noch ein kleine Abfrage welche Ihr bestätigen müsst, damit der Key für die Verbindung auf eurem Rechner gespeichert wird. Einfach kurz bestätigen dann öffnet sich solch ein Fenster...


    Bei "login as:" gebt Ihr einfach euren "Benutzernamen" ein welchen ihr vorher über den "Raspberry Pi Imager" vergeben habt. In meinem Fall habe ich den Standard Benutzernamen "pi" gelassen.

    Nachdem Ihr das mit [Enter] bestätigt habt, werdet Ihr nach dem Passwort gefragt (welches Ihr vorher über den Raspberry Pi Imager vergeben habt). ACHTUNG! wundert euch hier bitte nicht das bei der Eingabe das Feld leer bleibt, das ist normal. Gebt euer Passwort einfach korrekt ein und drückt wieder [Enter] dann werdet Ihr ganz normal eingeloggt. Sieht dann so aus...


    Hier solltet Ihr zunächst dafür sorgen das der Raspberry Pi auch auf dem neusten Stand ist, sprich als erstes die Firmware und dann die Software updaten. Für das Firmware Update könnt Ihr einfach folgenden Befehl kopieren und "mit Rechtsklick" in eure Kommandozeile einfügen, mit [Enter] bestätigen.

    Code
    sudo rpi-eeprom-update

    Damit seht Ihr erstmal ob eure Firmware überhabt ein Update benötigt, in meinem Fall sehen wir das ich die Firmware vom (25. Januar. 2022) installiert habe und die neuste Version vom (26. April. 2022) ist.


    Demnach gibt es für mich ein Update welches ich mit folgendem Befehl installieren kann, einfach wieder mit hier kopieren und mit "Rechtsklick" in der Kommandozeile einfügen und mit [Enter] bestätigen.

    Code
    sudo apt install rpi-eeprom

    Nachdem die Firmware nun auf den neusten Stand gebracht wurde, machen wir das gleiche auch mit der Software. Dafür einfach wieder den folgenden Befehl kopieren und mit "Rechtsklick" in die Kommandozeile einfügen und mit [Enter] bestätigen.

    Code
    sudo apt update && sudo apt upgrade

    Damit ist euer Raspberry Pi nun komplett auf dem neusten Stand und wir können mit der weiteren Konfiguration weitermachen. Dazu gehen wir mit dem folgenden Befehl in die Konfigurationseinstellungen vom Raspberry Pi.

    Code
    sudo raspi-config

    Sieht dann so aus...


    Mit den Pfeiltasten navigiert Ihr dann runter zu Punkt 6 "Advanced Options", kurz mit [Enter] bestätigen das Ihr in diesen menüpunkt rein wechseln wollt und dort dann einfach auf dem obersten Punkt "A1 Expend Filesystem" bleiben und auch wieder mit [Enter] bestätigen. Damit schaltet Ihr frei das Ihr auch den gesamten Speicher (in unserem Fall die M2 SSD), vollständig genutzt werden kann.


    Ein weiteres Fenster mit <ok> erscheint, welches ihr wieder mit [Enter] bestätigen könnt.

    Dann nur noch schnell mit [Tab ↹] und "Pfeiltaste nach Rechts" auf "Finish" navigieren und wieder mit [Enter] bestätigen.

    Dann kommt noch diese Meldung in der Ihr gefragt werdet ob Ihr das System jetzt Neustarten wollt, was Ihr mit <Yes> und wieder [Enter] bestätigt. Hier nicht wundern das von der Software "Putty" eine Fehlermeldung kommt, das liegt einfach nur daran das Ihr wegen dem Neustart natürlich die Verbindung zum Raspberry Pi verliert. Diese kann nach dem reboot aber selbstverständlich wieder wie oben hergestellt werden.

    _____________________________________________________________________________


    Installation von Docker mit Portainer als grafische Benutzeroberfläche


    Sobald wir uns wieder über "Putty" in unserer Kommandozeile angemeldet haben, können wir schonmal damit anfangen "Git" zu installieren, denn dies wird uns gleich die Möglichkeit geben vorgefertigte Pakete zu nutzen um die Installation zu vereinfachen. Das macht Ihr mit dem folgenden Befehl...

    Code
    sudo apt install git

    Bei der Installation stoppt er kurz an einer Stelle wo Ihr einmal mit "y" und [Enter] bestätigen müsst das Ihr die Installation fortsetzen möchtet. Das ist zu vergleichen mit dem Fenster welches sich auch bei Windows immer öffnet wenn man etwas installieren möchte, wo man als Administrator bestätigen muss, dass man es auch wirklich installieren möchte.


    Mit "Git" sind wir nämlich jetzt in der Lage auf die Repository (Sammlung verschiedener Pakete) von "Novaspirit Tech" zugreifen zu können, der mit seinem Projekt "Pi-Hostet" eine Vielzahl An Paketen rund um Docker und Portainer zusammen gesammelt hat, welche uns eine menge zeit ersparen.


    Um diese Pakete nun auf unseren Raspberry Pi zu laden, erstellen wir mit folgenden befehlen, welche bitte (ACHTUNG!) nach einander, also Zeile für Zeile einzeln ausgeführt werden, einen "Downloads" Ordner worin wir die Pakete dann speichern und entpacken können.

    Code
    ls
    mkdir Downloads
    cd Downloads/

    Mit dem letzten Befehl "cd Downloads/" wechseln wir dann auch gleich in das zuvor erstellte Verzeichnis hinein. Nun laden wir uns mit folgendem Befehl alle Pakete dort rein...

    Code
    git clone https://github.com/novaspirit/pi-hosted

    Wie immer hier kopieren, mit "Rechtsklick" in der Kommandozeile einfügen und mit [Enter] bestätigen und schon startet der Download. Wenn der Download abgeschlossen ist wechseln wir mit dem folgenden Befehl in das soeben heruntergeladene Verzeichnis hinein...

    Code
    cd pi-hosted/

    und wer möchte kann sich jetzt mit dem Befehl "ls" dann [Enter] anzeigen lassen was alles in dem Verzeichnis enthalten ist, dies ist jedoch nicht notwendig um der Installation weiter zu folgen.


    Weiter geht es damit das wir "Docker" installieren um uns die Grundlage für alles weitere zu schaffen. Dies machen wir mit einem Vorgefertigten Skript, welches bereits in dem Verzeichnis liegt und mit folgendem Befehl ausgeführt wird...

    Code
    ./install_docker.sh

    da diese Datei (Das Skript) in dem Verzeichnis liegt, unser Raspberry Pi den Namen der Datei also kennt, könnt Ihr hier mit [Tab ↹] arbeiten um den Namen automatisch zu vervollständigen. Oder Ihr macht es wie bisher und kopiert einfach die Zeile hier im Forum, dann fügt Ihr diese mit "Rechtklick" in der Kommandozeile ein und führt sie mit [Enter] aus.


    Das wird eine Weile dauern, nehmt euch also ca. 5 Minuten zeit und gönnt euch in der zeit einen Kaffee :)

    Wenn der Prozess abgeschlossen ist sieht das dann so aus wie in dem folgenden Screenshot...


    Danach muss man manuell einen "reboot" also einen Neustart durchführen, das machen wir ganz simpel mit folgendem Befehl...

    Code
    sudo reboot

    auch hier bitte wieder nicht erschrecken wegen der Meldung der Software "Putty". Diese kommt wieder einfach nur zustande weil die Verbindung zum Raspberry Pi getrennt wird beim reboot.

    Nach dem Neustart könnt ihr euch wieder ganz einfach wie oben beschrieben in der Kommandozeile anmelden.


    Dann wieder mit dem folgenden Befehl in das "Downloads/pi-hosted" Verzeichnis wechseln...

    Code
    cd Downloads/pi-hosted/

    Und von hier aus können wir dann das nächste Installations-Skript starten um "Portainer zu installieren. Das machen wir mit folgendem Befehl...

    Code
    ./install_portainer.sh

    Wenn dies dann Fertig ist, könnt Ihr auch schon auf den Browser wechseln und mit dem "Hostnamen" oder der "IP-Adresse des Raspberry Pi" und dazu der Portangabe ":9000" auf die Webeinrichtung von "Portainer" zugreifen und dort eure Parametereingeben. In meinem Beispiel muss ich im Browser dann folgendes eingeben...

    Code
    rpi-server:9000

    Dann öffnet sich im Browser eine Webseite die wie folgt aussieht und somit greift Ihr mit eurem Browser direkt auf euren Raspberry Pi und das was wir bisher alles eingerichtet haben zu, was doch schonmal ziemlich cool ist :)


    Hier könnt Ihr dann einfach einen "Usernamen" und ein "Passwort" vergeben. ich lasse den "Usernamen" hier ganz normal beim Standard "admin" und vergebe ein sicheres Passwort. Das Passwort müsst Ihr 2 Mal Identisch eingeben und dann auf "Create User" klicken. Dann kommt dieses Fenster...


    Hier müsst Ihr nur noch auf "Get Started" klicken und schon seit Ihr mit der groben Einrichtung fertig. Sieht dann so aus...


    Jetzt könntet Ihr schon direkt auf "local" (oben auf dem Bild Rot Markiert) klicken, denn links auf "App Tamplates" und anfangen irgendwelches Dienste wie zum Beispiel, WordPress, Nginx, etc. installieren. Standardmäßig sind hier aber nicht so viele "App Tamplates" vorhanden, daher tragen wir in den Settings noch schnell eine andere Quelle für die App Tamplates ein. Dafür einfach unten links auf "Settings" klicken und bei "App Tamplates" den link ändern


    In dem Rot umkreisten Feld tragt Ihr dann einfach folgenden Link ein...

    Code
    https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/template/portainer-v2-arm64.json

    dann noch unten links auf "Save settings" und schon werdet Ihr im Menü bei den "App Tamplates" viel mehr Auswahl haben, unter anderem auch Minecraft Server, Homer, Pi-Hole, Nextcloud, kodi und vieles mehr.


    Und das schöne ist das diese Auswahl ständig von der Community erweitert und aktualisiert wird :)


    Damit die ganzen installierten Dienste und Server dann auch richtig mit den Ports verknüpft werden empfiehlt es sich noch in den "Environment" Einstellungen, entweder die "IP-Adresse" eures Raspberry Pi oder wie wir es die ganze Zeit gemacht haben den "Hostnamen" in meinem Fall "rpi-server" als "Public IP" einzutragen. Dafür klicken wir auf der Linken Seite erst auf "Environment" und dann rechts auf "local"...

    sobald man auf "local" geklickt hat, kann man neben "Public IP" seinen "Hostnamen" oder "IP-Adresse" eintragen und dann mit "Update environment" das ganze speichern.



    Installation von Shell in a Box


    Eine Sache würde ich euch noch empfehlen zu Installieren, wofür wir noch ein letztes Mal die Kommandozeile (über die Software Putty) benötigen. Und zwar ist das "Shell in a Box" , denn damit haben wir zukünftig die Möglichkeit unsere Kommandozeile (falls wir sie denn nochmal benötigen sollten) auch über den Browser von jedem Rechner in unserem Netzwerk aufzurufen und eingaben zu machen. Das könnte zum Beispiel sehr nützlich sein um unseren Raspberry Pi zu einem späteren Zeitpunkt nochmal zu updaten etc.

    Dafür gebt Ihr in der Kommandozeile (nachdem Ihr euch wieder wie oben beschrieben über Putty angemeldet habt) einfach folgenden Befehl ein...

    Code
    sudo apt install shellinabox

    Falls die Installation nicht sofort starten sollte und Ihr in der Kommandozeile den Fehler "-bash: sudo: command not found" angezeigt bekommt, stellt sicher das Ihr vorher nochmal den Befehl "cd" und dann [Enter] eingebt um auch wirklich im Stammverzeichnis eures Raspberry Pi zu sein. Dann sollte der Befehl zum installieren von "Shell in a Box" auch funktionieren.


    Nach der Installation könnt ihr mit eurem "Hostnamen" oder der "IP-Adresse vom Raspberry Pi" mit dem Port ":4200" und "https" ach schon direkt über den Browser auf die Kommandozeile zugreifen. In meinem Beispiel ist der Hostname ja "rpi-server", daher muss ich im Browser folgendes eingeben...

    Code
    https://rpi-server:4200/

    Hier müsst Ihr erst noch eine kleine Sicherheits-Warnung in eurem Browser bestätigen...

    _____________________


    und könnt euch dann genau so einloggen wie Ihr es zuvor über die Software "Putty" gemacht habt, nur mit dem unterschied das es nun über den Browser mit "Sell in A Box" läuft. Auch hier seht ihr euer Passwort nicht bei der Eingabe, was völlig normal ist, also nicht wundern.

    Portainer / Raspberry Pi & Pi-Hostet Updaten


    Über "Shell in A Box" könnt ihr dann auch zu einem späteren Zeitpunkt ganz einfach euren Raspberry Pi, die Pi-Hosted Pakete und Portainer auf den neusten Stand bringen, dafür loggt Ihr euch ganz normal mit eurem "Usernamen" (in meinem Fall "pi") und eurem "Passwort" ein und gebt erstmal folgenden Befehl ein...

    Code
    sudo apt update && sudo apt upgrade

    Es kann sein das eine Aufforderung kommt welche Ihr mit [y] und danach [Enter] bestätigen müsst.

    Wenn der Prozess abgeschlossen ist wechselt Ihr mit folgendem Befehl in das "pi-hosted" Verzeichnis...

    Code
    cd Downloads/pi-hosted/

    dort gebt Ihr dann folgenden Befehl ein um die "pi-hosted" Pakete auf den neusten Stand zu bringen...

    Code
    git pull

    Mit dem Befehl "ls" und [Enter] könnt Ihr euch dann wieder die einzelnen Verzeichnisse und Dateien im "pi-hosted" Verzeichnis anschauen. In diesem Verzeichnis liegt auch eine Datei Namens "update_portainer.sh" welche genau wie "install_docker.sh" und "install_portainer.sh" auch Ausführbar ist. Um Portainer nun also updaten zu können, müsst Ihr nur den folgenden Befehl kopieren und entweder in "Putty" oder über "Shell in A Box" ausführen. Um den Befehl ausführen zu können müsst Ihr selbstverständlich auch im "/Downloads/pi-hosted/" Verzeichnis drin sein, sonst funktioniert das nicht.

    Code
    ./update_portainer.sh