OctoPrint via Docker auf RaspberryPi4B installieren

| 3D-Druck Linux

Heute habe ich mich mal wieder über meinen alten Raspberry geärgert auf dem ich nativ OctoPrint installiert habe. Daher habe ich etwas recherchiert um OctoPrint über Docker auf meinen Raspberry Pi 4B zu transferieren. (zuerst wollte ich es auf mein QNAP installieren, jedoch kann der nicht mit Druckern...) Hier kurz und knapp wie ihr Docker auf dem Pi installiert, OctoPrint herunter ladet, es konfiguriert und im Container laufen lässt.

Docker installieren

Zuerst brauchen wir unsere Container Software um virtuelle Images auf dem Pi laufen zu lassen. Nach längerem ausprobieren habe ich festgestellt das auf dem 4B Docker via der Anleitung für Debian zu installieren ist:  https://docs.docker.com/engine/install/debian/

Hier kurz die Befehle zusammen gefasst:

 

# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# Add the repository to Apt sources:
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] download.docker.com/linux/debian \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

#Installieren der docker packages
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-compose

#Verifizierung ob die Installation geklappt hat:
sudo docker run hello-world

 

Wenn das alles geklappt hat gibt es noch paar Befehle nach der Installation:

 

sudo groupadd docker
sudo usermod -aG docker $USER
#Verifizieren ob docker ohne sudo klappt:
docker run hello-world

 

Nun sollte Docker erfolgreich auf eurem Pi4B installiert sein und wir können weiter gehen zur Konfiguration.

OctoPrint installieren

Ich habe im /var Verzeichnis einen Ordner container erstellt um dort meine Docker Images zentral zu verwalten. In dem Verzeichnis checke ich dann das offizielle Repo von Octoprint mittels GIT aus =>  https://github.com/OctoPrint/octoprint-docker

Wir wechseln in das nun neu erstellte Verzeichnis und passen die docker-compose.yml an:

 

version: '2.4'
services:
  octoprint:
    image: octoprint/octoprint
    restart: unless-stopped
    ports:
      - 3000:80
    devices:
    # use `python -m serial.tools.miniterm` to see what the name is of the printer, this requires pyserial
    # USB0 ist die serielle Verbindung zum Drucker
    # video0 ist die angeshclossene Webcam
    # Diese Einträge sind für die jeweilige Installation anzupassen! 
      - /dev/ttyUSB0:/dev/ttyUSB0
      - /dev/video0:/dev/video0
    volumes:
     - octoprint:/octoprint
    environment:
      - ENABLE_MJPG_STREAMER=true
volumes:
  octoprint:

 

Nach der Konfiguration starten wir das Projekt mit folgendem Befehl:

docker-compose up -d

Zur Erklärung des Befehls (Credits an ChatGPT da die Doku und der Help Befehl wie immer nutzlos sind...)

  • docker-compose: Dies ist das Kommandozeilenprogramm, das Docker Compose-Befehle ausführt.

  • up: Dieser Befehl startet und erstellt alle Dienste, die in Ihrer docker-compose.yml Datei definiert sind. Wenn die Dienste bereits erstellt wurden, werden sie mit den neuesten Versionen neu gestartet.

  • -d: Dies ist eine Option, die für "detached mode" steht. Wenn Sie diesen Schalter verwenden, werden die Docker-Container im Hintergrund ausgeführt und geben die Kontrolle über das Terminal zurück. Ohne diesen Schalter würden die Logs der Container auf der Konsole ausgegeben und das Terminal wäre blockiert.

Wieso muss ich das Repo auschecken und nicht einfach docker run octoprint:octoprint ausführen?

Das habe ich mich gefragt, jedoch wird das Repo dann irgendwo ins Linux System installiert und die Konfiguration funktioniert auch nicht. Außerdem wird nach jedem neustart des Contaiers, der Container neu erzeugt, wodurch wir jedes mal aufs neue OctoPrint installieren dürfen. Deshalb müssen wir die Container auschecken umd docker-compose starten, so merkt sich dieser den Zustand und beim Neustart wird dann die Maschine einfach fortgesetzt anstatt neu aufgesetzt.

Gib mir Feedback!

Hab ich Blödsinn geschrieben oder etwas vergessen? Dann zögere nicht weiter und lass es mich sofort wissen indem du hier einen Kommentar hinterlässt!

×
Captcha Code

Kann das Bild nicht gelesen werden? Klicken Sie hier, um zu aktualisieren