Kategorie: 🚢 Docker

Traefik TroubLeshooting Guide

Traefik Architecture

In allen meiner Tutorials verwende ich Traefik als Reverse Proxy für Docker Container, so natürlich auch auf meinem YouTube Kanal. Im Laufe der Zeit fragen immer wieder Leser und Zuschauer ob ich ihnen bei ihrem Problem helfen kann. Dies mache ich natürlich gerne. Für ein gewisse Selbsthilfe möchte ich dir allerdings diesen Traefik Troubleshooting Guide an die Hand geben.

Vorbereitende Maßnahmen

Um mit einem guten Troubeshooting zu beginnen möchte ich zwei Maßnahmen vorweg greifen. Diese helfen dir ein paar Dinge auszuschließen bzw. eventuell schnell selbst auf eine Lösung zu kommen.

Container richtig neu starten

Wenn ihr Änderungen am Container von Traefik oder gar an den Konfigurationsdateien vornimmt, muss Traefik komplett neu gestartet werden. Ein stoppen des jeweiligen ist nicht ausreichend. Bei meinen Compose Dateien verwende also bitte nach dem stoppen noch ein

docker-compose rm

um diesen komplett zu löschen. Anschließend kannst du den Container wieder starten und eine neue Konfiguration ist übernommen.

Erhöhen des Log Levels

Zum Traefik Troubleshooting gehört auf jeden Fall auch das betrachten der Log Dateien. In meiner Vorlage steht das Logging auf einer sehr kleinen Stufe um nicht unnötig Speicherplatz zu benötigen. Wenn du mit Traefik startest empfehle ich dir, dieses auf debug zu stellen.

Hierzu einfach die traefik.toml Datei anpassen:

[log]
  level = "DEBUG"
Traefik Architecture

Fehlerlösungen

Die Webseite wird als nicht sicher angezeigt

Dieser Fehler entsteht zumeist wenn Traefik kein Let’s Encrypt Zertifikat abrufen konnte. Leider kann das mehrere Ursachen haben:

Zu häufiges Abrufen von Zertifikaten

Im Log steht hier meist, dass die Anzahl der Möglichen Erstellversuche von Zertifikaten erreicht ist. LE lässt es nur zu 10 Versuche binnen 24 Stunden auf ein SSL-Zertifikat zu erstellen. Wenn du eine eigene Domain hast, versuche es mit einer anderen Subdomain erneut. Andernfalls hilft nur warten.

Ein anderer Container hört auf Port 80

Let’s Encrypt nutzt bei der ersten Kommunikation zwischen Server und Client auch HTTP (Port 80). Wenn dieser Port also noch durch einen anderen Container geblockt ist kann keine Verbindung aufgebaut werden. Ebenso könnte es sein, dass dein NAT in deinem Router Port 80 noch nicht weiter leitet.

Eine 404-Seite wird angezeigt

Jetzt wird es spannend. Sobald eine 404-Seite angezeigt wird, gibts nämlich ein Problem mit dem Routing zu den Containern. Folgende Dinge kannst du hier prüfen:

  • Wird der korrekte Port weiter geleitet?
  • Stimmen alle Middlewere-Configs überein?

WordPress Docker Performance

Das mein Blog mit der Software WordPress läuft, sollte eigentlich klar sein. Die ganze Zeit kämpfte ich mit massiven Performance Problemen die eigentlich nicht am Hostsystem liegen können. Andere Softwareprodukte laufen auf meinem NetCup VPS nämlich schnell und zuverlässig. Die Wordress Docker Performance leider ein wenig.

Im Internet gibt es nicht wirklich viele Informationen zu dem Problem. Meist wird behauptet, dass es am Hostsystem liegen soll. Da ich das bereits ausschließen konnte wurden viele Beiträge obsolet.

Weiterlesen

Docker Befehle für den Alltag

docker-befehle

Um Docker im Alltag zu meisten, ist es ratsam sich ein paar Docker Befehle anzueignen und diese anwenden zu können. Ich möchte dir ein paar meiner alltäglichen Helfer in diesem Beitrag vorstellen.

Docker hat sich in den letzten Jahren immer mehr entwickelt und ist aus vielen Homelabs nicht mehr weg zu denken. Einige recht umfangreiche Infrastrukturen basieren vollständig auf dieser Art der Containerisierung. Im Laufe der Zeit wird man immer mehr zum Profi und kann auch komplexe Probleme schnell löschen. Als Anfänger allerdings steht man häufig vor Problemen.

Informationen über Docker Container

Wir starten mit einem Docker Befehl um die Informationen eines Containers, heißt IP-Adresse, Konfiguration und ähnliche Dinge einsehen zu können.

docker inspect {container name}

Log des Containers einsehen

Sollten alle Container immer problemlos laufen, bräuchten wir diesen Beitrag nicht. Aber wir wissen alle, dass das nicht der Fall ist. Um sich die Log Dateien bzw. das STDOUT des Containers anzuschauen gibt es den Befehl

docker logs {container name}

Dieser listet alle Loginformationen seit dem letzten Start des Containers auf. Dies kann also schon mal recht lang werden. Einfacher ist es dann den Befehl um ein -f zu erweitern

docker logs -f {container name}

Jetzt haben wir die Chance das Logfile dauerhaft anschauen zu können. Sobald der Container also etwas protokolliert, wird dies direkt angezeigt. Mit STRG+C können wir das abbrechen.

docker-befehle
Docker Befehle für den Alltag helfen wir bei deiner Arbeit

Alle Container stoppen

Manchmal muss man alle Container auf einmal beenden. Zum Beispiel wenn man Update am Hostsystem einspielen, das Hostsystem kontrolliert herunterfahren oder andere Wartungsarbeiten durchführen möchte.

Wer mit Docker Compose arbeitet und nur eine große Datei hat – davon sei übrigens abzuraten – hat es einfach. Allerdings ist das nur sehr selten der Fall.

docker stop $(docker ps -a -q)

Der Befehl stoppt alle Container (docker stop) die mit dem Befehl (docker -ps -a -q) gefunden werden. Also alle Container, egal welchen Status diese derzeit haben. Hier werden also Docker Befehle zusammen gefasst um dir das Leben direkt zu erleichtern.

Alle Container löschen

Ab und zu ist es auch notwendig alle Docker Container zu löschen. Zum Beispiel um neue Environment-Variablen einzulesen. Allerdings müssen wir erst alle Container stoppen, z. B. mit dem Befehl weiter oben.

Anschließend bedienen wir uns einer sehr ähnlichen Technik und löschen alle Container die mit docker ps gefunden werden

docker rm $(docker ps -a -q)

Ich hoffe ich konnte dir ein paar nützliche Docker Befehle mit an die Hand geben. Mich würde es noch interessieren, was deine Empfehlung für diese Liste wäre.

Nextcloud Docker Tutorial – Step by step zum Erfolg

Vor einiger Zeit gab es von mir ein Nextcloud Docker Tutorial bereits auf meinem YouTube Kanal. Dies ist soweit auch weiterhin aktuell. Allerdings bedarf es für eine gute Nextcloud Installation noch weiterer Konfiguration.

Um Nextcloud immer von überall aus erreichen zu können, empfehle ich dir die Installation auf einem virtuellen Server bei einem Hosting Provider. Ich nutze hierfür Netcup, welche ich sehr empfehlen kann.

Weiterlesen

Interne Namensauflösung bei Docker mit Traefik

Traefik nutze ich primär um als reverse proxy von extern auf meine Docker Container zugreifen zu können. Dies natürlich SSL terminiert. Verschiedene Dienste sollen allerdings nicht extern erreichbar sein und benötigen auch – aus meiner Sicht – nicht zwingend eine verschlüsstele Verbindung.

Aus diesem Grund habe ich auf meinem internen Docker Server Traefik als reverse proxy laufen, welcher den verschiedenen Diensten via netzwerkinterner DNS-Auflösung ein DNS Namen verpasst. So kann ich z. B. via http://phpipam.docker.domain.local auf mein PHPIPAM Dienst zugreifen.

Weiterlesen

Traefik Dashboard konfigurieren

Das Traefik Dashboard war einer der großen Punkte, die meine Community noch auf dem Wunschzettel geschrieben hat. Entsprechend habe ich nun für mein Docker-Homelab Repository auf Github dieses in die bestehenden Dateien eingepflegt. Das Traefik Dashboard liefert dir interessante Informationen über die dahinter liegenden Webseiten und Anwendungen.

In einem YouTube Kommentar bin ich dann vor einigen Tagen darauf angesprochen worden, dass die Statusseite von Traefik nicht funktioniert. Diesem Problem habe ich mich also angenommen und das Dashboard unter Traefik 2.0 konfiguriert.

traefik dashboard
Traefik Dashboard

Im Wesentlichen müssen hierbei nur diverse Labels an der docker-compose.yaml-Datei angefügt werden. Die Traefik-Konfigurationsdatei traefik.toml ist schon für das Dashboard vorbereitet. Allerdings sollte man diese ebenfalls austauschen, da ich hier andere Anpassungen vorgenommen habe.

Diese Seite bietet vielerlei Informationen rund um die einzelnen Anwendungen. Zudem können hieraus direkt Metriken für die Besucherstatistik sowie Performance der Webseiten gewonnen werden. Zu einem späteren Zeitpunkt werde ich sicherlich einen weiteren Blogpost oder YouTube Video zu dem Thema veröffentlichen.

Solltest du Gefallen an meiner Arbeit finden, würde ich es sehr begrüßen wenn du mich dabei ein wenig finanziell unterstützt.