<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Docker Archive - Schemp.de</title>
	<atom:link href="https://www.schemp.de/category/docker/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.schemp.de/category/docker/</link>
	<description>IT Matters</description>
	<lastBuildDate>Wed, 28 Jan 2026 08:56:49 +0000</lastBuildDate>
	<language>de</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>
	<item>
		<title>Watchtower: Automatische Docker Container Updates</title>
		<link>https://www.schemp.de/2025/01/29/watchtower-automatische-docker-container-updates/</link>
		
		<dc:creator><![CDATA[Markus Schemp]]></dc:creator>
		<pubDate>Wed, 29 Jan 2025 10:30:00 +0000</pubDate>
				<category><![CDATA[Docker]]></category>
		<guid isPermaLink="false">https://www.schemp.de/?p=186</guid>

					<description><![CDATA[<p>Softwareupdates zeitnah durchzuführen ist eine de elementaren Grundsäulen so ziemlich jeder IT Sicherheitsstrategie. Spätestens wenn man mehr als zwei bis drei Dienste selbst betreibt, kann das aber in in ein regelrechtes Katz- und Maus-Spiel ausarten: Für welche Dienste gibt es Updates? Welche Dienste habe ich schon updated? Welche muss ich noch updaten? Mit Watchtower kannst [&#8230;]</p>
<p>Der Beitrag <a href="https://www.schemp.de/2025/01/29/watchtower-automatische-docker-container-updates/">Watchtower: Automatische Docker Container Updates</a> erschien zuerst auf <a href="https://www.schemp.de">Schemp.de</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Softwareupdates zeitnah durchzuführen ist eine de elementaren Grundsäulen so ziemlich jeder IT Sicherheitsstrategie. Spätestens wenn man mehr als zwei bis drei Dienste selbst betreibt, kann das aber in in ein regelrechtes Katz- und Maus-Spiel ausarten: Für welche Dienste gibt es Updates? Welche Dienste habe ich schon updated? Welche muss ich noch updaten? Mit Watchtower kannst du die Images deiner Docker-Container automatisiert aktuell halten.</p>



<h2 class="wp-block-heading">So funktioniert Watchtower</h2>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>ACHTUNG: Watchtower führt automatische Updates ohne deine Mithilfe durch! Sollte im Image etwas nicht stimmen, oder das Update nicht funktioniert haben, kann es sein, dass der Container nicht mehr läuft oder es zu Datenverlust kommt.</p>
</blockquote>



<p>Watchtower verbindet sich mit deinem Docker-Socket und kann zyklisch deine laufenden Docker-Container scannen. Gleichzeitig überwacht Watchtower die Registry, von der dein Image stammt. Wenn dort ein neueres, zu deiner Docker-Konfiguration passendes Image vorhanden ist, aktualisiert Watchtower deinen lokalen Container. Fährt ihn also herunter, aktualisiert das Image und fährt in wieder hoch.</p>



<p>Ich persönlich nutze Watchtower ausschließlich für Container, wenn ich:</p>



<ul class="wp-block-list">
<li>regelmäßig, meistens mehrmals im Monat (Sicherheits-) Updates erwarte</li>



<li>bisher sehr gute Erfahrungen mit Updates dieses Containers gemacht habe</li>



<li>funktionierendes Backup konfiguriert habe</li>



<li>einen möglichen Ausfall zeitnah mitbekomme (z.B. durch Uptime Monitoring)</li>
</ul>



<p>Meine persönliche GitLab Instanz ist ein gutes Beispiel, wofür ich Watchtower nutze. GitLab veröffentlich sehr schnell und häufig Sicherheitsupdates und ich hatte noch nie ein Problem bei eine Update.</p>



<h2 class="wp-block-heading">Watchtower-Setup</h2>



<h3 class="wp-block-heading">Voraussetzungen</h3>



<p>Ich gehe davon aus, dass Docker und Docker-Compose auf dem Server installiert sind und du deine Container unter /opt/containers ablegst. Ich verzichte hier auch auf sudo und gehe davon aus, dass du entweder als root angemeldet bist (nicht empfohlen!) oder an den notwendigen Stellen sudo nutzt.</p>



<h3 class="wp-block-heading">Ordner anlegen und vorbereiten</h3>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; title: ; notranslate">
mkdir -p /opt/containers/watchtower
cd /opt/containers/watchtower
</pre></div>


<h3 class="wp-block-heading">docker-compose.yaml</h3>



<p>Lege die docker-compose.yaml an:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
nano docker-compose.yaml
</pre></div>

<div class="wp-block-syntaxhighlighter-code "><pre class="brush: yaml; title: ; notranslate">
services:
  watchtower:
    image: containrrr/watchtower
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock  # Docker Socket
      - /etc/localtime:/etc/localtime:ro # Lokale Zeitzone
    environment:
      - WATCHTOWER_LABEL_ENABLE=true # Watchtower soll ausschließlich markierte Dienste berücksichtigen
      - WATCHTOWER_SCHEDULE=0 0 4 * * * # täglich um 04:00 Uhr prüfen
      - WATCHTOWER_TIMEOUT=60s # Container nach spätestens 1 Minute zwangsweise stoppen
      - WATCHTOWER_INCLUDE_RESTARTING=true # nach dem Update Container neustarten
      - WATCHTOWER_CLEANUP=true  # nach dem Update nicht mehr benötigte Images aufräumen
      - WATCHTOWER_NOTIFICATIONS_LEVEL=info 
      - WATCHTOWER_NOTIFICATIONS=email # per Mail informieren, was er getan hat
      - WATCHTOWER_NOTIFICATION_EMAIL_FROM=${EMAIL_FROM}
      - WATCHTOWER_NOTIFICATION_EMAIL_TO=${EMAIL_TO}
      - WATCHTOWER_NOTIFICATION_EMAIL_SERVER=${EMAIL_SERVER}
      - WATCHTOWER_NOTIFICATION_EMAIL_SERVER_USER=${EMAIL_SERVER_USER}
      - WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PASSWORD=${EMAIL_SERVER_PASSWORD}
      - WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PORT=${EMAIL_SERVER_PORT}
    labels:
      - &quot;com.centurylinklabs.watchtower.enable=true&quot; # sich selbst updaten
</pre></div>


<h3 class="wp-block-heading">.env</h3>



<p>Und lege die .env an:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
nano .env
</pre></div>

<div class="wp-block-syntaxhighlighter-code "><pre class="brush: yaml; title: ; notranslate">
EMAIL_FROM=&quot;noreply@example.com&quot;
EMAIL_TO=&quot;Meine@emailadresse.de&quot;
EMAIL_SERVER=&quot;smtp.example.com&quot;
EMAIL_SERVER_PORT=&quot;25&quot;
EMAIL_SERVER_USER=&quot;noreply@example.com&quot;
EMAIL_SERVER_PASSWORD=&quot;geheim&quot;
</pre></div>


<h3 class="wp-block-heading">Anpassungen in der Konfiguration</h3>



<p>Für die E-Mail-Benachrichtigungen musst du in der .env Datei gültige SMTP Zugangsdaten hinterlegen. Solltest du keine E-Mail Benachrichtigungen wollen, kannst du auch die WATCHTOWER_NOTIFICATION_* Einträge aus der docker-compose.yaml entfernen und auf die .env verzichten.</p>



<h3 class="wp-block-heading">Watchtower starten</h3>



<p>Jetzt kannst du Watchtower starten &#8211; entweder im interaktiven Modus um ggf. in die Fehlersuche zu gehen, oder direkt im Hintergrund mit der -d Option.</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; title: ; notranslate">
docker compose up
docker compose up -d
</pre></div>


<p>Um weitere Container in die Überwachung deines Watchtowers aufzunehmen, müssen diese mit dem richtigen Label versehen sein. Ergänze also ggf. in deine Docker-Compose Dateien das label.</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: yaml; title: ; notranslate">
    labels:
      - &quot;com.centurylinklabs.watchtower.enable=true&quot;
</pre></div><p>Der Beitrag <a href="https://www.schemp.de/2025/01/29/watchtower-automatische-docker-container-updates/">Watchtower: Automatische Docker Container Updates</a> erschien zuerst auf <a href="https://www.schemp.de">Schemp.de</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Traefik mit Crowdsec als Docker-Reverse-Proxy</title>
		<link>https://www.schemp.de/2025/01/26/traefik-mit-crowdsec-als-docker-reverse-proxy/</link>
		
		<dc:creator><![CDATA[Markus Schemp]]></dc:creator>
		<pubDate>Sun, 26 Jan 2025 12:09:07 +0000</pubDate>
				<category><![CDATA[Docker]]></category>
		<guid isPermaLink="false">https://www.schemp.de/?p=182</guid>

					<description><![CDATA[<p>Fast alle meine Dienste stelle ich über Docker bereit. Auch dieser Blog läuft über Docker Container. Das erlaubt mir einerseits eine einfache Verwaltung meiner Dienste &#8211; insbesondere was die Bereitstellung und updates angeht &#8211; gleichzeitig aber auch einen Server für mehrere Dienste zu nutzen. Genau für letzteres nutze ich Traefik als Reverse-Proxy. Warum ein Reverse [&#8230;]</p>
<p>Der Beitrag <a href="https://www.schemp.de/2025/01/26/traefik-mit-crowdsec-als-docker-reverse-proxy/">Traefik mit Crowdsec als Docker-Reverse-Proxy</a> erschien zuerst auf <a href="https://www.schemp.de">Schemp.de</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Fast alle meine Dienste stelle ich über Docker bereit. Auch dieser Blog läuft über Docker Container. Das erlaubt mir einerseits eine einfache Verwaltung meiner Dienste &#8211; insbesondere was die Bereitstellung und updates angeht &#8211; gleichzeitig aber auch einen Server für mehrere Dienste zu nutzen. Genau für letzteres nutze ich Traefik als Reverse-Proxy.</p>



<h2 class="wp-block-heading">Warum ein Reverse Proxy?</h2>



<p>Wenn ich auf einem (physischen oder virtualisierten) Host (Server) mehrere Dienste betreiben möchte, die den gleichen Port nutzen, ist das in der Regel eine Herausforderung. Das ist zum Beispiel dann der Fall, wenn ich mehrere Webseiten oder Web-Dienste auf dem selben Host betreiben möchte.</p>



<p>Eine mögliche Lösung für dieses Dilemma ist die Nutzung eines Reverse-Proxy. Dabei wird nach Außen (ins Internet) nur der Reverse-Proxy als Dienst bereitgestellt &#8211; d.h. in dem Beispiel reagiert nur der Reverse-Proxy auf Anfragen auf dem Port 80 (HTTP) oder 443 (HTTPS). Je nach Anfrage leitet der Reverse-Proxy dann intern an den eigentlichen Dienst weiter. So können auf einem Host oder sogar unter einer Domain problemlos mehrere Dienste erreichbar sein.</p>



<p>Ein weiterer Nutzen ergibt sich dabei dadurch, dass es einfacher wird, zentrale Sicherheitsfunktionen einzubauen &#8211; wenn diese in den Reverse-Proxy integriert werden, werden diese faktisch für alle Anwendungen genutzt, die über den Reverse Proxy bereitgestellt werden.</p>



<h2 class="wp-block-heading">Und was ist Traefik und Crowdsec?</h2>



<p>Es gibt viele Reverse-Proxies, die man einsetzen kann. Ich nutze <a href="https://traefik.io/traefik/">Traefik</a> als &#8222;Cloud Native&#8220; Reverse-Proxy &#8211; vor allem wegen der für mich persönlich einfachen Integration in meinen Docker-Stack. Sobald Traefik einmal eingerichtet ist, kann ich sehr einfach neue Docker-Container über Labels mit in den Reverse Proxy aufnehmen.</p>



<p><a href="https://www.crowdsec.net/">Crowdsec</a> wiederum ist eine Community-Getriebene Security-Plattform und für mich so etwas wie &#8222;das neue Fail2Ban&#8220;. Vereinfacht gesagt analysiert Crowdsec in Echtzeit die Logs der konfigurierten Dienste, schätzt jeden Zugriff auf diese Dienste ein und entscheidet dann, ob der Zugriff valide ist oder ob der Zugriff besser an einen sog. Bouncer weitergeleitet und i.d.R. geblockt wird. Die Crowdsec Community (und das Unternehmen dahinter) pflegt und erweitert täglich Listen und Entscheidungskriterien, die darauf einzahlen, dass DU den Content hier problemlos lesen kannst, während die bösen Jungs hoffentlich ausgesperrt bleiben.</p>



<h2 class="wp-block-heading">Und wie hast du das jetzt aufgesetzt?</h2>



<p>Mein Setup als &#8222;meine Arbeit&#8220; zu bezeichnen währe hier falsch &#8211; es geht ein Großer Dank an <a href="https://goneuland.de/">goneuland.de/</a> für die hervorragende Anleitung und die Pflege der dazugehörigen Docker-Compose Files. Das kann ich aktuell bedingungslos weiterempfehlen: <a href="https://goneuland.de/traefik-v3-installation-konfiguration-und-crowdsec-security/">Traefik V3 Installation, Konfiguration und CrowdSec-Security</a></p>
<p>Der Beitrag <a href="https://www.schemp.de/2025/01/26/traefik-mit-crowdsec-als-docker-reverse-proxy/">Traefik mit Crowdsec als Docker-Reverse-Proxy</a> erschien zuerst auf <a href="https://www.schemp.de">Schemp.de</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
