<?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>TekkieNinja</title>
	<atom:link href="https://tekkieninja.de/feed/" rel="self" type="application/rss+xml" />
	<link>https://tekkieninja.de/</link>
	<description>Ein Technik Blog mit dem Tekkie Ninja</description>
	<lastBuildDate>Thu, 31 Jul 2025 18:25:11 +0000</lastBuildDate>
	<language>de</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://tekkieninja.de/wp-content/uploads/2023/04/cropped-favicon-1-32x32.png</url>
	<title>TekkieNinja</title>
	<link>https://tekkieninja.de/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Lokaler DNS-Server mit Adguard Home</title>
		<link>https://tekkieninja.de/lokaler-dns-server-mit-adguard-home/</link>
					<comments>https://tekkieninja.de/lokaler-dns-server-mit-adguard-home/#respond</comments>
		
		<dc:creator><![CDATA[Florian Keßler]]></dc:creator>
		<pubDate>Thu, 31 Jul 2025 18:25:11 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<guid isPermaLink="false">https://tekkieninja.de/?p=1421</guid>

					<description><![CDATA[<p>Wieso ein lokaler DNS Server mit Adguard? In der heutigen vernetzten Welt spielt das Domain Name System (DNS) eine entscheidende Rolle bei der Übersetzung von menschenfreundlichen Webadressen in maschinenlesbare IP-Adressen. Ein DNS-Server fungiert dabei als Wegweiser im digitalen Dschungel, indem er den Weg zu den gewünschten Websites ebnen soll. Doch was ist, wenn ich dir [&#8230;]</p>
<p>Der Beitrag <a href="https://tekkieninja.de/lokaler-dns-server-mit-adguard-home/">Lokaler DNS-Server mit Adguard Home</a> erschien zuerst auf <a href="https://tekkieninja.de">TekkieNinja</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="1421" class="elementor elementor-1421">
				<div class="elementor-element elementor-element-c942df8 e-flex e-con-boxed e-con e-parent" data-id="c942df8" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-e8a86f5 elementor-widget elementor-widget-heading" data-id="e8a86f5" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h3 class="elementor-heading-title elementor-size-default">Wieso ein lokaler DNS Server mit Adguard?</h3>				</div>
				</div>
				<div class="elementor-element elementor-element-0fabfe5 elementor-widget elementor-widget-text-editor" data-id="0fabfe5" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>In der heutigen vernetzten Welt spielt das Domain Name System (DNS) eine entscheidende Rolle bei der Übersetzung von menschenfreundlichen Webadressen in maschinenlesbare IP-Adressen. Ein DNS-Server fungiert dabei als Wegweiser im digitalen Dschungel, indem er den Weg zu den gewünschten Websites ebnen soll. Doch was ist, wenn ich dir sage, dass wir die Kontrolle des digitalen Pfads in die eigenen Hände nehmen können? Die Lösung lautet: Ein lokaler DNS-Server mit Adguard Home.</p><p>Ein privater DNS-Server mag zunächst nach einer technischen Spielerei klingen, aber die Vorteile, insbesondere wenn es darum geht, lästige Werbung zu blockieren, sind nicht zu unterschätzen. In diesem Blogbeitrag werden wir erkunden, was ein DNS-Server ist, warum es sinnvoll ist, einen privaten DNS-Server lokal zuhause einzurichten, und wie dies dir nicht nur mehr Kontrolle über deine Internetaktivitäten verschafft, sondern auch die lästige Flut an Werbung eindämmen kann. Mach dich bereit, die digitale Autobahn mit einem privaten DNS-Server zu erobern!</p>								</div>
				</div>
				<div class="elementor-element elementor-element-5d7bf8d elementor-widget elementor-widget-heading" data-id="5d7bf8d" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h3 class="elementor-heading-title elementor-size-default">Voraussetzungen</h3>				</div>
				</div>
				<div class="elementor-element elementor-element-d9eb236 elementor-widget elementor-widget-text-editor" data-id="d9eb236" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Um einen lokalen DNS-Server mit Adguard Home aufzusetzen, benötigst du zu aller erst einen Heimserver wie z.B.: einen Raspberry Pi oder einen Mini Rechner wie einen Intel Nuc.</p><p>Je nach Betriebssystem auf dem Rechner (ich nutze Ubuntu) kann die Installation variieren. Die einfachste Methode um einen lokalen DNS-Server mit Adguard Home aufzusetzen ist mittels Snap. </p><p>Damit der DNS-Server Adguard Home korrekt arbeiten kann, sind einige Freischaltungen in der Firewall notwendig. Eine detaillierte Anleitung zu der Handhabung einer Firewall findest du unter folgenden <a href="https://tekkieninja.de/eine-einfuehrung-in-die-firewall-ufw-unter-ubuntu/" target="_blank" rel="noopener">Link</a>. Folgende Ports müssen freigeschaltet sein:</p><ul><li>3000 = Oberfläche für die Einrichtung des Adguard Home DNS Servers</li><li>8080 = Weboberfläche für die Administration</li><li>53 TCP &amp; UDP = Wird für die Auflösung von DNS Namen genutzt</li><li>853 TCP &amp; UDP = Wird für die Auflösung von DNS Namen über HTTPS genutzt</li></ul>								</div>
				</div>
				<div class="elementor-element elementor-element-b4f6d87 elementor-widget elementor-widget-heading" data-id="b4f6d87" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h3 class="elementor-heading-title elementor-size-default">Installation mit Snap</h3>				</div>
				</div>
				<div class="elementor-element elementor-element-6e6de23 elementor-widget elementor-widget-text-editor" data-id="6e6de23" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Wie bereits erwähnt, ist die Installation des DNS-Servers AdGuard Home über Snap äußerst unkompliziert. Der folgende Befehl übernimmt alle notwendigen Schritte: Er startet den DNS-Server, fügt ihn zum Autostart hinzu und sorgt automatisch für die Installation von Updates.</p><p style="padding-left: 40px;"><code>sudo snap install adguard-home</code></p><p>Anscließend kann die Oberfläche zur Einrichtung über folgende URL erreicht werden: <em>http://IPdesServers:3000</em></p><p>Um den DNS Server zu stoppen wird folgender Befehl genutzt</p><p style="padding-left: 40px;"><code>sudo snap stop adguard-home</code></p>								</div>
				</div>
				<div class="elementor-element elementor-element-4bf1bfc elementor-widget elementor-widget-heading" data-id="4bf1bfc" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h3 class="elementor-heading-title elementor-size-default">Backup wiederherstellen</h3>				</div>
				</div>
				<div class="elementor-element elementor-element-3c5d291 elementor-widget elementor-widget-text-editor" data-id="3c5d291" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Um ein Backup wiederherzustellen ist es zuerst notwendig, dass der DNS Server gestoppt wird. Dazu einfach den entsprechenden Abschnitt unter der Instatllationsanleitung befolgen.</p><p>Anschließend wird das Backupfile in folgenden Ordner kopiert: <em>/var/snap/adguard-home/current/AdGuardHome.yaml</em></p><p>Danach ist es nur noch nötig, den DNS Server wieder zu starten</p>								</div>
				</div>
					</div>
				</div>
				</div>
		<p>Der Beitrag <a href="https://tekkieninja.de/lokaler-dns-server-mit-adguard-home/">Lokaler DNS-Server mit Adguard Home</a> erschien zuerst auf <a href="https://tekkieninja.de">TekkieNinja</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://tekkieninja.de/lokaler-dns-server-mit-adguard-home/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>NFS-Freigaben erstellen und verwalten</title>
		<link>https://tekkieninja.de/nfs-freigaben-erstellen-und-verwalten/</link>
					<comments>https://tekkieninja.de/nfs-freigaben-erstellen-und-verwalten/#respond</comments>
		
		<dc:creator><![CDATA[Florian Keßler]]></dc:creator>
		<pubDate>Wed, 22 Nov 2023 13:07:52 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<guid isPermaLink="false">https://tekkieninja.de/?p=1379</guid>

					<description><![CDATA[<p>Die effiziente gemeinsame Nutzung von Dateien und Ressourcen in einem Netzwerk ist für viele Anwender von zentraler Bedeutung. Hierbei kommt NFS (Network File System) ins Spiel, ein weit verbreitetes Protokoll für die transparente Dateifreigabe zwischen Unix-ähnlichen Systemen. Insbesondere unter Ubuntu, einem der beliebtesten Linux-Betriebssysteme, bietet NFS eine leistungsstarke Lösung für die nahtlose Zusammenarbeit von Rechnern [&#8230;]</p>
<p>Der Beitrag <a href="https://tekkieninja.de/nfs-freigaben-erstellen-und-verwalten/">NFS-Freigaben erstellen und verwalten</a> erschien zuerst auf <a href="https://tekkieninja.de">TekkieNinja</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="1379" class="elementor elementor-1379">
				<div class="elementor-element elementor-element-72f0405 e-flex e-con-boxed e-con e-parent" data-id="72f0405" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-23fe092 elementor-widget elementor-widget-text-editor" data-id="23fe092" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Die effiziente gemeinsame Nutzung von Dateien und Ressourcen in einem Netzwerk ist für viele Anwender von zentraler Bedeutung. Hierbei kommt NFS (Network File System) ins Spiel, ein weit verbreitetes Protokoll für die transparente Dateifreigabe zwischen Unix-ähnlichen Systemen. Insbesondere unter Ubuntu, einem der beliebtesten Linux-Betriebssysteme, bietet NFS eine leistungsstarke Lösung für die nahtlose Zusammenarbeit von Rechnern im Netzwerk. In diesem Beitrag werden wir einen genaueren Blick darauf werfen, wie man NFS-Freigaben erstellen und verwalten kann. Dabei gehen wir auch auf die spezielle Konfiguration mit einer ufw-Firewall unter Ubuntu ein. Egal, ob du eine Heimnetzwerkumgebung einrichten oder in einem Unternehmen arbeiten – NFS kann dir helfen, Dateien und Verzeichnisse einfach und effektiv über das Netzwerk zu teilen. Tauchen wir ein in die Welt der NFS-Freigaben unter Ubuntu und entdecken, wie wir Dateien unkompliziert mit anderen Geräten im Netzwerk teilen können.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-1e99fd1 elementor-widget elementor-widget-heading" data-id="1e99fd1" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h3 class="elementor-heading-title elementor-size-default">Voraussetzungen</h3>				</div>
				</div>
				<div class="elementor-element elementor-element-65bf7fe elementor-widget elementor-widget-text-editor" data-id="65bf7fe" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Um NFS-Freigaben erstellen und verwalten zu können, ist das Paket <em>nfs-kernel-server</em> notwendig und muss auf dem Server installiert sein. Falls es noch nicht installiert ist, kann dies einfach durch die Ausführung des folgenden Befehls nachgeholt werden:</p><p style="padding-left: 40px;"><code>sudo apt-get install nfs-kernel-server</code></p>								</div>
				</div>
				<div class="elementor-element elementor-element-3118281 elementor-widget elementor-widget-heading" data-id="3118281" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h3 class="elementor-heading-title elementor-size-default">NFS-Freigabe erstellen</h3>				</div>
				</div>
				<div class="elementor-element elementor-element-8350c7e elementor-widget elementor-widget-text-editor" data-id="8350c7e" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Um eine NFS-Freigabe unter Ubuntu zu erstellen, müssen wir die Datei <em>/etc/exports</em> bearbeiten. Hier wird die Freigabe nach folgendem Muster festgelegt: <em>Freigabepfad &#8211;TABULATOR&#8211; IPAdresse(Optionen)</em></p><p><em>Angenommen, wir möchten den Ordner/var/music</em> freigeben, könnte die entsprechende Eintragung wie folgt aussehen:</p><p style="padding-left: 40px;"><code>/var/music 192.168.2.1/255.255.255.0(rw,sync,no_subtree_check,no_root_squash,insecure)</code></p>								</div>
				</div>
				<div class="elementor-element elementor-element-29b1088 elementor-widget elementor-widget-heading" data-id="29b1088" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h4 class="elementor-heading-title elementor-size-default">Freigabepfad</h4>				</div>
				</div>
				<div class="elementor-element elementor-element-6ac7841 elementor-widget elementor-widget-text-editor" data-id="6ac7841" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Der Freigabepfad bezieht sich auf die im Netzwerk erreichbaren Ressourcen, welches ein Ordner, eine Datei oder ganze Dateisysteme repräsentieren kann.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-5794e96 elementor-widget elementor-widget-heading" data-id="5794e96" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h4 class="elementor-heading-title elementor-size-default">IP-Adressen</h4>				</div>
				</div>
				<div class="elementor-element elementor-element-06d6fcf elementor-widget elementor-widget-text-editor" data-id="06d6fcf" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Die IP-Adresse dient dazu, den Zugriff für bestimmte Geräte oder IP-Netze zu steuern. Beachte, dass entweder eine spezifische IP-Adresse oder ein IP-Netz angeben werden kann.</p><p>Um deine aktuelle Netzwerk-IP-Adresse unter Windows zu ermitteln, öffne die CMD-Befehlszeile, gib den Befehl <code style="font-style: inherit; font-weight: inherit;">ipconfig</code><span style="font-size: 16px;"> ein und bestätige mit Enter. In den angezeigten Informationen findest du einen Abschnitt zur IPv4-Adresse und Subnetzmaske. Die IPv4-Adresse repräsentiert die aktuelle IP deines mit dem Netzwerk verbundenen Geräts. Um das oben genannte Beispiel an deine Netzwerkkonfiguration anzupassen, ersetze die IP-Adresse durch deine eigene. Achte dabei darauf, die letzten Zahlen (hinter dem letzten Punkt) auf <em>.0</em> zu ändern, da die <em>.0</em> Adresse immer das Netz angibt.</span></p>								</div>
				</div>
				<div class="elementor-element elementor-element-5003cde elementor-widget elementor-widget-heading" data-id="5003cde" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h4 class="elementor-heading-title elementor-size-default">Freigabeoptionen</h4>				</div>
				</div>
				<div class="elementor-element elementor-element-cdc92f9 elementor-widget elementor-widget-text-editor" data-id="cdc92f9" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Die Optionen in dem obigen Beispiel werden nachfolgend kurz erläutert. Eine detailliertere Übersicht der verschiedenen Optionen sind <a href="https://wiki.ubuntuusers.de/NFS/#Freigaben">hier</a> erläutert. </p><ul><li><strong>rw:</strong> Gewährt Nutzern Lese- und Schreibrechte.</li><li><strong>sync:</strong> Nutzt einen synchronen Dateitransfer.</li><li><strong>no_subtree_check:</strong> Verhindert ständige Überprüfungen von Unterverzeichnissen während der Freigabe und erhöht die Kompatibilität bei Dateiverschiebungen.</li><li><strong>no_root_squash:</strong> Hebt die Standardregel auf, die bewirkt, dass Anfragen vom Root-Benutzer (UID 0) auf dem Client auf den anonymen Benutzer (nfsnobody) auf dem Server abgebildet werden.</li><li><strong>insecure:</strong> Verwendung von Ports oberhalb von 1024, notwendig z.B. bei der Einbindung eines Fire-TV-Sticks.</li></ul>								</div>
				</div>
				<div class="elementor-element elementor-element-1356a1a elementor-widget elementor-widget-text-editor" data-id="1356a1a" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Nachdem die benötigen Freigaben eingetragen wurden, muss der NFS-Dienst neu gestartet werden, damit die Änderungen übernommen werden. Dies kann wie folgt durchgeführt werden:</p><p style="padding-left: 40px;"><code>sudo systemctl restart nfs-kernel-server</code></p><p>Anschließend sollten die Freigaben im angebenden Netz oder an einem spezifischen Gerät erreichbar sein.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-abfa4cd elementor-widget elementor-widget-heading" data-id="abfa4cd" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h3 class="elementor-heading-title elementor-size-default">Firewall und NFS</h3>				</div>
				</div>
				<div class="elementor-element elementor-element-123c3cf elementor-widget elementor-widget-text-editor" data-id="123c3cf" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Um sicherzustellen, dass die NFS-Freigabe auch bei aktivierter Firewall erkannt und genutzt werden kann, sind bestimmte Konfigurationsschritte erforderlich. Diese unterscheiden sich je nach Ubuntu Version etwas.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-303e27c elementor-tabs-view-horizontal elementor-widget elementor-widget-tabs" data-id="303e27c" data-element_type="widget" data-e-type="widget" data-widget_type="tabs.default">
				<div class="elementor-widget-container">
							<div class="elementor-tabs">
			<div class="elementor-tabs-wrapper" role="tablist" >
									<div id="elementor-tab-title-5051" class="elementor-tab-title elementor-tab-desktop-title" aria-selected="true" data-tab="1" role="tab" tabindex="0" aria-controls="elementor-tab-content-5051" aria-expanded="false">Ubuntu ≤ 20.04</div>
									<div id="elementor-tab-title-5052" class="elementor-tab-title elementor-tab-desktop-title" aria-selected="false" data-tab="2" role="tab" tabindex="-1" aria-controls="elementor-tab-content-5052" aria-expanded="false">Ubuntu ≥ 22.04</div>
							</div>
			<div class="elementor-tabs-content-wrapper" role="tablist" aria-orientation="vertical">
									<div class="elementor-tab-title elementor-tab-mobile-title" aria-selected="true" data-tab="1" role="tab" tabindex="0" aria-controls="elementor-tab-content-5051" aria-expanded="false">Ubuntu ≤ 20.04</div>
					<div id="elementor-tab-content-5051" class="elementor-tab-content elementor-clearfix" data-tab="1" role="tabpanel" aria-labelledby="elementor-tab-title-5051" tabindex="0" hidden="false"><p>Da <em>rpc.mountd</em> standardmäßig auf mehreren Ports lauscht, muss der Dienst <em>rpc.mountd</em> an einen Port gebunden und dann eine zusätzliche UFW-Regel hinzugefügt werden, um eingehende Verbindungen auf diesem bestimmten Port zu akzeptieren. Öffne dazu die Datei <code>/etc/default/nfs-kernel-server</code> und kommentieren die Zeile</p><p style="padding-left: 40px;"><code>RPCMOUNTDOPTS=--manage-gids</code></p><p>aus und fügen die folgende Zeile hinzu</p><p style="padding-left: 40px;"><code>RPCMOUNTDOPTS="-p 13025"</code></p><p><code>13025</code> ist nur ein zufällig gewählter Port, der verfügbar ist und nicht bereits in <code>/etc/services</code> definiert ist oder anderweitig genutzt wird. Anschließend muss der NFS-Dienst neu gestartet werden, damit die Änderungen übernommen werden. Dies kann wie folgt durchgeführt werden:</p><p style="padding-left: 40px;"><code>sudo systemctl restart nfs-kernel-server</code></p></div>
									<div class="elementor-tab-title elementor-tab-mobile-title" aria-selected="false" data-tab="2" role="tab" tabindex="-1" aria-controls="elementor-tab-content-5052" aria-expanded="false">Ubuntu ≥ 22.04</div>
					<div id="elementor-tab-content-5052" class="elementor-tab-content elementor-clearfix" data-tab="2" role="tabpanel" aria-labelledby="elementor-tab-title-5052" tabindex="0" hidden="hidden"><p>Laut diesem <a class="is-external-link" href="https://bugs.launchpad.net/ubuntu/+source/nfs-utils/+bug/1971096">Link </a>werden die <code>/etc/default/nfs-*</code> Dateien vom NFS-Server oder -Client in Ubuntu 22.04 ignoriert. Um trotzdessen eine Firewall mit NFS-Freigaben nutzen zu können, muss folgende Datei editiert werden: <code>/etc/nfs.conf</code> </p><p>Die Zeile #port=0 ein kommentieren (# entfernen) und den Port durch die gewünschte Nummer ersetzen (z.B. 13025 nach dem obigen Beispiel).</p><p style="padding-left: 40px;"><code>[mountd]</code><br /><code>port=13025</code></p><p>Anschließend muss der NFS-Dienst neu gestartet werden, damit die Änderungen übernommen werden. Dies kann wie folgt durchgeführt werden:</p><p style="padding-left: 40px;"><code>sudo systemctl restart nfs-kernel-server</code></p><p>Danach muss sichergestellt werden, dass der Port 13025 nun korrekt geöffnet ist, indem <code>rpcinfo -p</code> eingegeben wird und eine Ausgabe wie die folgende zu sehen ist:</p><p><code>  programm vers proto port service</code><br /><code>   100000 4 tcp 111 portmapper</code><br /><code>   100000 3 tcp 111 portmapper</code><br /><code>   100000 2 tcp 111 portmapper   </code><br /><code>   100000 4 udp 111 portmapper</code><br /><code>   100000 3 udp 111 portmapper</code><br /><code>   100000 2 udp 111 portmapper   </code><br /><code>   100005 1 udp 13025 mountd</code><br /><code>   100005 1 tcp 13025 mountd</code><br /><code>   100005 2 udp 13025 mountd</code><br /><code>   100005 2 tcp 13025 mountd</code><br /><code>   100005 3 udp 13025 mountd</code><br /><code>   100005 3 tcp 13025 mountd</code><br /><code>   100003 3 tcp 2049 nfs</code><br /><code>   100003 4 tcp 2049 nfs</code></p></div>
							</div>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-5ae392a elementor-widget elementor-widget-text-editor" data-id="5ae392a" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Sind diese Vorbereitungen abgeschlossen so müssen folgende Firewall-Regeln hinzugefügt werden:</p><ol><li><code>sudo ufw allow 111 (Standard NFS-Port)</code></li><li><code>sudo ufw allow 2049 (Standard NFS-Port)</code></li><li><code>sudo ufw allow 13025 (wie im obigen Beispiel gewählt)</code></li></ol><p>Anschließend sind die NFS-Freigaben ebenfalls bei aktivierter Firewall erreichbar.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-77559fc elementor-widget elementor-widget-text-editor" data-id="77559fc" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Ich hoffe euch hat der Beitrag NFS-Freigaben erstellen und verwalten gefallen hat. Gibt es Fragen? So meldet euch über das Kontaktformular oder hinterlasst einen Kommentar.</p><p>Hast du Interesse an einem neuem Servernamen? Unter dem folgenden <a href="https://tekkieninja.de/ideen-zum-servernamen/">Link</a> findest du eine Auswahl.</p>								</div>
				</div>
					</div>
				</div>
				</div>
		<p>Der Beitrag <a href="https://tekkieninja.de/nfs-freigaben-erstellen-und-verwalten/">NFS-Freigaben erstellen und verwalten</a> erschien zuerst auf <a href="https://tekkieninja.de">TekkieNinja</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://tekkieninja.de/nfs-freigaben-erstellen-und-verwalten/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Reverse Proxy in Docker mit Let&#8217;s Encrypt-Zertifikaten</title>
		<link>https://tekkieninja.de/reverse-proxy-in-docker-mit-lets-encrypt-zertifikaten/</link>
					<comments>https://tekkieninja.de/reverse-proxy-in-docker-mit-lets-encrypt-zertifikaten/#respond</comments>
		
		<dc:creator><![CDATA[Florian Keßler]]></dc:creator>
		<pubDate>Fri, 09 Jun 2023 10:11:36 +0000</pubDate>
				<category><![CDATA[Docker]]></category>
		<guid isPermaLink="false">https://tekkieninja.de/?p=1292</guid>

					<description><![CDATA[<p>In diesem Blogbeitrag werden wir uns detailliert mit der Konfiguration eines Reverse Proxys in Docker mit Let&#8217;s Encrypt-Zertifikaten befassen und zeigen, wie diese in den Prozess integriert werden können. Wir werden gemeinsam Schritt für Schritt die erforderlichen Maßnahmen durchgehen, um einen sicheren und zuverlässigen Reverse Proxy aufzusetzen, der den Datenverkehr effizient verteilt und gleichzeitig eine [&#8230;]</p>
<p>Der Beitrag <a href="https://tekkieninja.de/reverse-proxy-in-docker-mit-lets-encrypt-zertifikaten/">Reverse Proxy in Docker mit Let&#8217;s Encrypt-Zertifikaten</a> erschien zuerst auf <a href="https://tekkieninja.de">TekkieNinja</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="1292" class="elementor elementor-1292">
				<div class="elementor-element elementor-element-990b214 e-con-full e-flex e-con e-parent" data-id="990b214" data-element_type="container" data-e-type="container">
				<div class="elementor-element elementor-element-6342ed5 elementor-widget elementor-widget-text-editor" data-id="6342ed5" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>In diesem Blogbeitrag werden wir uns detailliert mit der Konfiguration eines Reverse Proxys in Docker mit Let&#8217;s Encrypt-Zertifikaten befassen und zeigen, wie diese in den Prozess integriert werden können. Wir werden gemeinsam Schritt für Schritt die erforderlichen Maßnahmen durchgehen, um einen sicheren und zuverlässigen Reverse Proxy aufzusetzen, der den Datenverkehr effizient verteilt und gleichzeitig eine verschlüsselte Kommunikation gewährleistet.</p><p>Egal, ob du bereits mit Docker vertraut bist oder gerade erst anfängst, dieser Blogbeitrag bietet dir eine umfassende Anleitung, um Reverse Proxy und Let&#8217;s Encrypt-Zertifikate erfolgreich zu implementieren. Tauche ein in die Welt des sicheren Datenverkehrs und erfahre, wie du deine Webanwendungen oder Websites vor potenziellen Bedrohungen schützen kannst.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-3dfb4df elementor-widget elementor-widget-heading" data-id="3dfb4df" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h3 class="elementor-heading-title elementor-size-default">Grundlagen</h3>				</div>
				</div>
				<div class="elementor-element elementor-element-fe3bf31 elementor-widget elementor-widget-text-editor" data-id="fe3bf31" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Ein Reverse Proxy agiert als Vermittler zwischen den Clients und den Servern. Er nimmt eingehende Anfragen entgegen und leitet sie an die entsprechenden Backend-Server bzw. App Container weiter. Dadurch können wir den Datenverkehr effizient verteilen, Lastausgleich betreiben und zusätzliche Sicherheitsschichten einführen.</p><p>Ein wichtiger Aspekt bei der Implementierung eines Reverse Proxys ist die Integration von Let&#8217;s Encrypt-Zertifikaten. Let&#8217;s Encrypt ist eine kostenlose und automatisierte Zertifizierungsstelle, die es Website-Betreibern ermöglicht, SSL/TLS-Zertifikate einfach zu erhalten und ihre Verbindung zu verschlüsseln. Durch die Verwendung von Let&#8217;s Encrypt-Zertifikaten stellen wir sicher, dass die Kommunikation zwischen den Clients und den Backend-Servern verschlüsselt ist und vor potenziellen Angreifern geschützt wird.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-0495b40 elementor-widget elementor-widget-heading" data-id="0495b40" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h3 class="elementor-heading-title elementor-size-default">Voraussetzungen</h3>				</div>
				</div>
				<div class="elementor-element elementor-element-5ef5884 elementor-widget elementor-widget-text-editor" data-id="5ef5884" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Um den Reverse Proxy in Docker mit Let&#8217;s Encrypt-Zertifikaten erfolgreich zu implementieren, gibt es einige grundlegende Voraussetzungen, die erfüllt sein müssen. Stelle sicher, dass du die folgenden Anforderungen erfüllst, bevor du mit der Konfiguration beginnst:</p><ol><li><p>Docker und Docker Compose: Da wir Docker und Docker Compose verwenden, um den Reverse Proxy zu erstellen und zu verwalten, musst du diese Software auf deinem System installiert haben. Falls du dies noch nicht getan hast, habe ich dir eine <a href="https://tekkieninja.de/docker-compose-installieren/">Anleitung</a> verlinkt.</p></li><li><p>Grundkenntnisse von Docker: Um den Reverse Proxy in Docker effektiv zu konfigurieren, ist es wichtig, grundlegende Kenntnisse von Docker und seinen Kernkonzepten zu haben. Du solltest mit Begriffen wie Containern, Images, Dockerfiles und dem Docker-CLI (Command Line Interface) vertraut sein. Wenn du noch nicht mit Docker vertraut bist, habe ich dir eine <a href="https://tekkieninja.de/was-ist-docker/">Beitragsserie</a> zu dem Thema Docker verlinkt. </p></li><li><p>Grundkenntnisse von Docker Compose: Docker Compose ist ein Tool, das es ermöglicht, mehrere Docker-Container als Dienste zu definieren und zu verwalten. Es erleichtert die Konfiguration und das Zusammenspiel von Containern. Um den Reverse Proxy mit Let&#8217;s Encrypt-Zertifikaten in Docker zu implementieren, ist es hilfreich, grundlegende Kenntnisse von Docker Compose zu haben. Du solltest wissen, wie man eine Docker-Compose-Datei erstellt, Dienste definiert und Umgebungsvariablen festlegt. Einen kurzen Crashkurs habe ich dir hier <a href="https://tekkieninja.de/docker-compose-erklaert/">verlinkt</a>. </p></li></ol>								</div>
				</div>
				<div class="elementor-element elementor-element-4056236 elementor-widget elementor-widget-heading" data-id="4056236" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h3 class="elementor-heading-title elementor-size-default">Docker-Compose-Datei</h3>				</div>
				</div>
				<div class="elementor-element elementor-element-fa6b9bb elementor-widget elementor-widget-heading" data-id="fa6b9bb" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h4 class="elementor-heading-title elementor-size-default">Docker Netzwerk</h4>				</div>
				</div>
				<div class="elementor-element elementor-element-8828736 elementor-widget elementor-widget-text-editor" data-id="8828736" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Docker-Container können standardmäßig nicht von externen Quellen angesprochen werden. Daher müssen die Ports des Containers auf die des Host-Rechners gemappt werden. Auf diese Weise kann der Container über die IP-Adresse und den entsprechenden Port erreicht werden. Wenn jedoch bestimmte Dienste für das Internet freigegeben werden sollen, kann dies sehr aufwendig sein. Es erfordert nicht nur das Mappen der Container-Ports, sondern auch das Einrichten von Portfreigaben am Router. Dadurch entsteht eine größere Angriffsfläche für potenzielle Hacker. Zusätzlich können Container standardmäßig nicht direkt miteinander kommunizieren. Um sicherzustellen, dass der Reverse Proxy auf die verschiedenen Anwendungen zugreifen kann, muss zunächst ein separates Netzwerk erstellt werden, das unabhängig von den Containern ist.</p><p style="padding-left: 40px;"><code class="language-php">docker network create proxy_network</code></p><p>Du kannst den Namen <em>proxy_network</em> nach Belieben ändern. Durch die Verbindung der Container mit diesem Netzwerk wird sichergestellt, dass der Proxy auf die Container zugreifen kann. Es ist ratsam, nur die Container mit diesem Netzwerk zu verbinden, auf die von außerhalb des Heimnetzes zugegriffen werden soll.</p><p>Nachfolgend werden wir die Datei Schritt für Schritt gemeinsam aufbauen, damit die Installation des Revers Proxy in Docker verständlich ist.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-551e28b elementor-widget elementor-widget-heading" data-id="551e28b" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h4 class="elementor-heading-title elementor-size-default">nginx-proxy</h4>				</div>
				</div>
				<div class="elementor-element elementor-element-efc281c elementor-widget elementor-widget-text-editor" data-id="efc281c" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>In der Docker-Compose-Datei beginnen die ersten beiden Zeilen wie in jeder anderen Datei. Die <em>version</em> gibt an, auf welcher Version die Datei aufbaut. Unter dem Abschnitt <em>services</em> definieren wir unsere Container. Zuerst wird der Reverse Proxy Container definiert.</p><pre><code>version: '3'
services:</code></pre><p>Wir haben uns für das Image von <em>jwilder</em> in der <em>alpine</em> Version entschieden, da es einen geringeren Angriffsvektor für potenzielle Angreifer bietet. Zusätzlich enthält es die empfohlenen Einstellungen der Mozilla-Organisation auf dem Intermediate-Level, um einen Kompromiss zwischen Sicherheit und Kompatibilität zu gewährleisten.</p><pre><code>nginx-proxy:
    image: jwilder/nginx-proxy:alpine</code></pre><p>Diese Zeile befasst sich mit den Labels, die dem Container zugewiesen werden sollen. Diese sind wichtig, da sie es dem nachfolgenden LetsEncrypt-Container ermöglichen, den Proxy-Container zu identifizieren.</p><pre><code>    labels:
      com.github.jrcs.letsencrypt_nginx_proxy_companion.nginx_proxy: true
</code></pre><p>Anschließend legen wir den Namen des Containers fest.</p><pre><code>    container_name: proxy
</code></pre><p>Im Abschnitt networks tragen wir den Namen des Netzwerkes ein, welches wir im Vorhinein erstellt haben. Durch diese Angabe wird der Container mit dem benannten Netzwerk verbunden.</p><pre><code>    networks:
      - proxy_network
</code></pre><p>Um den Container von außen erreichbar zu machen, ist es wichtig, den Port 80 freizugeben, da er für eine HTTP-Verbindung erforderlich ist. Auf diese Weise kann LetsEncrypt das Ziel erreichen und ein gültiges Zertifikat erstellen. Über den Port 443 wird die verschlüsselte HTTPS Verbindung aufgebaut.</p><pre><code>    ports:
      - 80:80
      - 443:443
</code></pre><p>Damit der Proxy unter anderem seine Konfiguration speichern und auf die generierten Zertifikate Zugriff hat, werden dem Container entsprechende Ordner bereitgestellt. Damit ist sichergestellt, dass diese auch nach dem beenden der Container weiter verfügbar sind.</p><pre><code>    volumes:
      - /var/proxy/vhost.d:/etc/nginx/vhost.d:ro
      - /var/proxy/html:/usr/share/nginx/html:rw
      - /var/proxy/certs:/etc/nginx/certs:ro
      - /var/proxy/conf/:/etc/nginx/conf.d/
      - /etc/localtime:/etc/localtime:ro
      - /var/run/docker.sock:/tmp/docker.sock:ro
</code></pre><p>Abschließend wird die Neustart Richtlinie des Container definiert. Diese definiert, dass der Container immer wieder neu gestartet wird, außer er wird manuell oder durch einen Fehler gestoppt. </p><pre><code>    restart: unless-stopped
</code></pre>								</div>
				</div>
				<div class="elementor-element elementor-element-177d89c elementor-widget elementor-widget-heading" data-id="177d89c" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h4 class="elementor-heading-title elementor-size-default">letsencrypt</h4>				</div>
				</div>
				<div class="elementor-element elementor-element-ed4d7e7 elementor-widget elementor-widget-text-editor" data-id="ed4d7e7" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Analog dem ersten Container werden wir nachfolgend die entsprechenden Abschnitte erklären. Um Zertifikate von Let´s Encrypt zu erstellen, verwenden wir das Image von nginxproxy.</p><pre><code>  letsencrypt:
    image: nginxproxy/acme-companion
</code></pre><p>Diese Option definiert eine Abhängigkeit zum vorherigen Container, womit definiert wird, dass der Let´s Encrypt Container nach dem Proxy Container gestartet werden soll. </p><pre><code>    depends_on:
      - nginx-proxy
</code></pre><p>Anschließend legen wir den Namen des Containers fest.</p><pre><code>    container_name: proxy-acme
</code></pre><p>Im Abschnitt <em>networks</em> tragen wir analog aus dem Proxy Abschnitt das zuvor erstelle Netzwerk ein.</p><pre><code>    networks:
      - proxy_network
</code></pre><p>Damit der Let´s Encrypt Container die Konfiguration des Proxys lesen und die generierten Zertifikate speichern kann, wird dem Container die entsprechenden Ordner bereitgestellt. </p><pre><code>    volumes:
      - /var/proxy/vhost.d:/etc/nginx/vhost.d:rw
      - /var/proxy/html:/usr/share/nginx/html:rw
      - /var/proxy/certs:/etc/nginx/certs:rw
      - /var/proxy/acme:/etc/acme.sh
      - /var/proxy/conf/:/etc/nginx/conf.d/
      #- /var/proxy/acme_config/standalone.sh:/app/letsencrypt_user_data:ro # ggf. für die nächsten Abschnitte notwendig
      - /etc/localtime:/etc/localtime:ro
      - /var/run/docker.sock:/var/run/docker.sock:ro
</code></pre><p>Standardmäßig erneuert der Container die Zertifikate 30 Tage vor Ablauf. Um eine Benachrichtigung per E-Mail zu erhalten, falls ein Zertifikat doch nicht korrekt erneuert wird, wird die nachfolgende Variable benutzt. Hier könnt ihr eure E-Mail Adresse eintragen.</p><pre><code>    environment:
      - DEFAULT_EMAIL=EMAIL-ADRESSE
</code></pre><p>Gleichermaßen wie bei dem Proxy ist auch hier die Neustart Richtlinie definiert.</p><pre><code>    restart: unless-stopped
</code></pre><div class="flex flex-grow flex-col gap-3"><div class="min-h-[20px] flex items-start overflow-x-auto whitespace-pre-wrap break-words flex-col gap-4"><div class="markdown prose w-full break-words dark:prose-invert light"><p>In den beiden Containern haben wir das zuvor erstellte Proxy-Netzwerk verwendet. Um sicherzustellen, dass Docker Compose erkennt, dass es sich um ein extern erstelltes Netzwerk handelt, muss dieses zusätzlich global in die Compose-Datei eingebunden werden.</p></div></div></div><pre><code>networks:
  proxy_network:
    external:
      name: proxy_network</code></pre>								</div>
				</div>
				<div class="elementor-element elementor-element-228fc35 elementor-widget-divider--view-line elementor-widget elementor-widget-divider" data-id="228fc35" data-element_type="widget" data-e-type="widget" data-widget_type="divider.default">
				<div class="elementor-widget-container">
							<div class="elementor-divider">
			<span class="elementor-divider-separator">
						</span>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-6c31f9d elementor-widget elementor-widget-text-editor" data-id="6c31f9d" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Die vollständige Datei kannst du <a href="https://tekkieninja.de/wp-content/uploads/2023/08/proxy-compose.yaml">hier</a> herunterladen.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-49128a4 elementor-widget elementor-widget-heading" data-id="49128a4" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h4 class="elementor-heading-title elementor-size-default">Docker Compose Stack starten</h4>				</div>
				</div>
				<div class="elementor-element elementor-element-245e252 elementor-widget elementor-widget-text-editor" data-id="245e252" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Die obige Datei kannst du herunterladen und speichere diese z.B. unter dem Namen <em>proxy-compose.yml</em> ab. Anschließend kannst du den Stack mittels folgendem Befehl starten:</p><p style="padding-left: 40px;"><code>docker-compose --compatibility -f /PFAD/ZUR/COMPOSE/DATEI up -d</code></p><p>Die Container laufen im Hintergrund, damit kannst du den Reverse Proxy verwenden.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-ea44649 elementor-widget elementor-widget-heading" data-id="ea44649" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h3 class="elementor-heading-title elementor-size-default">Konfiguration des Reverse Proxy in Docker mit Let´s Encrypt Zertifikaten</h3>				</div>
				</div>
				<div class="elementor-element elementor-element-c6fc835 elementor-widget elementor-widget-heading" data-id="c6fc835" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h4 class="elementor-heading-title elementor-size-default">Mehrere Container unter einer Domain (Multipath)</h4>				</div>
				</div>
				<div class="elementor-element elementor-element-ea14222 elementor-widget elementor-widget-text-editor" data-id="ea14222" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Möchtest du mehrere Container unter einer einzigen Domain erreichen, beispielsweise <em>tekkie.ninja/app1, tekkie.ninja/app2</em> oder einfach nur <em>tekkie.ninja</em>? <br />Dieses Ziel lässt sich wie folgt realisieren: Du erstellst eine Docker-Compose-Datei, in der die entsprechenden Container Zugriff auf das Proxy-Netzwerk haben. Der Standardcontainer, der aufgerufen wird, wenn <em>tekkie.ninja</em> aufgerufen wird, erhält die Umgebungsvariable VIRTUAL_HOST=&#8230;. Anschließend erzeugst du im Verzeichnis <em>vhost.d</em> eine Datei mit dem gleichen Namen wie die im Compose-File angegebene Domain. In dieser Datei gibst du die verschiedenen Pfade an und verweist auf die entsprechenden Container.</p><p>Ein Beispiel für eine solche Datei sieht wie folgt aus:</p><p style="padding-left: 40px;"><code>location /app1 {<br />    proxy_pass http://app1:8000;<br />}</code></p><p style="padding-left: 40px;"><code><br />location /app2 {<br />    proxy_pass http://app2:8000;<br />}</code></p><p>Dabei muss der Name des Containers die in der URL definierte app1 bzw. app2 ersetzen. Der Pfad wird entsprechend auf die Containernamen angepasst.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-36cfdd9 elementor-widget elementor-widget-heading" data-id="36cfdd9" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h4 class="elementor-heading-title elementor-size-default">Weiterleitung einer Domaine</h4>				</div>
				</div>
				<div class="elementor-element elementor-element-1affb2c elementor-widget elementor-widget-text-editor" data-id="1affb2c" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<div class="flex flex-grow flex-col gap-3"><div class="min-h-[20px] flex flex-col items-start gap-3 overflow-x-auto whitespace-pre-wrap break-words"><div class="markdown prose w-full break-words dark:prose-invert light"><p>Wenn du beabsichtigst, eine Domain über einen Reverse Proxy mit einem SSL-Zertifikat zu betreiben, ohne sie direkt auf einen Container abzubilden, sind einige Schritte erforderlich. Abhängig vom Pfad deiner Compose-Datei ist es notwendig, eine separate *.conf-Datei in dem Konfigurationsverzeichnis des Proxys, laut obigen Beispiel <em>/var/proxy/conf</em>, zu erstellen.</p><p>Innerhalb dieser Konfigurationsdatei legst du verschiedene Parameter fest, darunter den Domänennamen, die IP-Adresse zusammen mit dem Port sowie den Pfad zu den Zertifikaten und Schlüsseln. Die markierten Abschnitte in der Datei müssen individuell an den jeweiligen Anwendungsfall angepasst werden. Für nähere Informationen zur Beschaffung eines Zertifikates empfiehlt es sich, den Abschnitt &#8222;SSL-Zertifikat ohne zugehörigen Docker-Container&#8220; zu konsultieren.</p></div></div></div><p style="padding-left: 40px;"><code># Specify domain to be forwarded<br />upstream <span style="color: #1bae70;">domainName</span> {<br />    server <span style="color: #1bae70;">IP_ADRESS:PORT</span>;<br />}<br />server {<br />            server_name <span style="color: #1bae70;">domainName</span>;<br />            listen 80 ;<br />            access_log /var/log/nginx/access.log;<br />            # Do not HTTPS redirect Let'sEncrypt ACME challenge<br />            location ^~ /.well-known/acme-challenge/ {<br />                    auth_basic off;<br />                    auth_request off;<br />                    allow all;<br />                    root /usr/share/nginx/html;<br />                    try_files $uri =404;<br />                    break;<br />        }<br />            location / {<br />                        return 301 https://$host$request_uri;<br />                }<br />}<br />server {<br />            server_name <span style="color: #1bae70;">domainName</span>;<br />            listen 443 ssl http2 ;<br />            access_log /var/log/nginx/access.log;<br />            ssl_session_timeout 5m;<br />            ssl_session_cache shared:SSL:50m;<br />            ssl_session_tickets off;<br />            ssl_certificate <span style="color: #1bae70;">/PATH/TO/domainName.crt</span>;<br />            ssl_certificate_key <span style="color: #1bae70;">/PATH/TO/domainName.key</span>;<br />            ssl_dhparam <span style="color: #1bae70;">/PATH/TO/domainName.dhparam.pem</span>;<br />            ssl_stapling on;<br />            ssl_stapling_verify on;<br />            ssl_trusted_certificate <span style="color: #1bae70;">/PATH/TO/domainName.chain.pem</span>;<br />            add_header Strict-Transport-Security "max-age=31536000" always;<br />            include /etc/nginx/vhost.d/default;<br />            location / {<br />                        proxy_pass http://<span style="color: #1bae70;">domainName</span>;<br />                }<br />}</code></p><p>Die Datei kann <a href="https://tekkieninja.de/wp-content/uploads/2023/08/domainName.conf">hier</a> heruntergeladen werden.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-8714a6f elementor-widget elementor-widget-heading" data-id="8714a6f" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h4 class="elementor-heading-title elementor-size-default">SSL-Zertifikat ohne zugehörigen Docker-Container</h4>				</div>
				</div>
				<div class="elementor-element elementor-element-64671b8 elementor-widget elementor-widget-text-editor" data-id="64671b8" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<div class="flex flex-grow flex-col gap-3"><div class="min-h-[20px] flex flex-col items-start gap-3 overflow-x-auto whitespace-pre-wrap break-words"><div class="markdown prose w-full break-words dark:prose-invert light"><p>Um SSL-Zertifikate unabhängig von Containern zu generieren, benötigt der ACME-Container Zugriff auf das Konfigurationsverzeichnis des Reverse-Proxy sowie auf die Docker-Sockets, wie in der Docker Compose-Datei angegeben.</p><p>Des Weiteren wird eine Datei in das Verzeichnis /app/letsencrypt_user_data eingebunden. Diese Datei ist eine ausführbare Bash-Datei und enthält z.B. folgenden Inhalt:</p><p style="padding-left: 40px;"><code>LETSENCRYPT_STANDALONE_CERTS=('web' 'app' 'tekkie')</code><br /><code>LETSENCRYPT_web_HOST=('yourdomain.de' 'www.yourdomain.de')</code><br /><code>LETSENCRYPT_app_HOST=('yourdomain.de' 'myapp.yourotherdomain.de' 'service.yourotherdomain.tld')</code><br /><code>LETSENCRYPT_tekkie_HOST=('tekkieninja.de')</code></p><p>Dabei werden in der ersten Zeile verschiedene Zertifikate als Gruppe definiert. Dieser Gruppe können dann mehrere Domainnamen zugewiesen werden, wofür das Zertifikat gelten soll.</p></div></div></div>								</div>
				</div>
				<div class="elementor-element elementor-element-2124793 elementor-widget elementor-widget-heading" data-id="2124793" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h4 class="elementor-heading-title elementor-size-default">Befehlsergänzungen</h4>				</div>
				</div>
				<div class="elementor-element elementor-element-1acf7ff elementor-widget elementor-widget-heading" data-id="1acf7ff" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h5 class="elementor-heading-title elementor-size-default">Proxy Container</h5>				</div>
				</div>
				<div class="elementor-element elementor-element-822d98a elementor-widget elementor-widget-text-editor" data-id="822d98a" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Um die Konfiguration neu zu laden, wird folgender Befehl verwendet:</p><p style="padding-left: 40px;"><code>docker exec -ti proxy nginx -s reload</code></p>								</div>
				</div>
				<div class="elementor-element elementor-element-213e058 elementor-widget elementor-widget-heading" data-id="213e058" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h5 class="elementor-heading-title elementor-size-default"> ACME Container</h5>				</div>
				</div>
				<div class="elementor-element elementor-element-ac44a65 elementor-widget elementor-widget-text-editor" data-id="ac44a65" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Um die Zertifikatsprüfung erneut auszulösen, wird folgender Befehl verwendet:</p><p style="padding-left: 40px;"><code>docker exec proxy-acme /app/signal_le_service</code></p><p>Um die Erneuerung der Zertifikate zu erzwingen, nutzen wir den folgenden Befehl:</p><p style="padding-left: 40px;"><code>docker exec proxy-acme /app/force_renew</code></p>								</div>
				</div>
				<div class="elementor-element elementor-element-c170c0b elementor-widget elementor-widget-heading" data-id="c170c0b" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h4 class="elementor-heading-title elementor-size-default">Offizielle Dokumentation</h4>				</div>
				</div>
				<div class="elementor-element elementor-element-a5edb22 elementor-widget elementor-widget-text-editor" data-id="a5edb22" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Die offizielle Dokumentation von <em>jwilder</em> kannst du <a href="https://github.com/nginx-proxy/acme-companion/tree/main/docs">hier</a> finden.</p>								</div>
				</div>
				</div>
				</div>
		<p>Der Beitrag <a href="https://tekkieninja.de/reverse-proxy-in-docker-mit-lets-encrypt-zertifikaten/">Reverse Proxy in Docker mit Let&#8217;s Encrypt-Zertifikaten</a> erschien zuerst auf <a href="https://tekkieninja.de">TekkieNinja</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://tekkieninja.de/reverse-proxy-in-docker-mit-lets-encrypt-zertifikaten/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>E-Mail Versand unter Ubuntu</title>
		<link>https://tekkieninja.de/e-mail-versand-unter-ubuntu/</link>
					<comments>https://tekkieninja.de/e-mail-versand-unter-ubuntu/#respond</comments>
		
		<dc:creator><![CDATA[Florian Keßler]]></dc:creator>
		<pubDate>Sat, 27 May 2023 12:08:34 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Linux]]></category>
		<guid isPermaLink="false">https://tekkieninja.de/?p=1278</guid>

					<description><![CDATA[<p>Willkommen zu meinem Blogbeitrag, in dem der E-Mail Versand unter Ubuntu im Fokus steht. Das Versenden von E-Mails spielt eine wichtige Rolle in verschiedenen Anwendungsbereichen, sei es für Benachrichtigungen, Berichte oder die allgemeine Kommunikation. In diesem Beitrag werden die Voraussetzungen und die erforderlichen Schritte zur Konfiguration aufgezeigt, um den E-Mail-Versand erfolgreich einzurichten. Voraussetzungen Bevor mit [&#8230;]</p>
<p>Der Beitrag <a href="https://tekkieninja.de/e-mail-versand-unter-ubuntu/">E-Mail Versand unter Ubuntu</a> erschien zuerst auf <a href="https://tekkieninja.de">TekkieNinja</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="1278" class="elementor elementor-1278">
				<div class="elementor-element elementor-element-89b3019 e-con-full e-flex e-con e-parent" data-id="89b3019" data-element_type="container" data-e-type="container">
				<div class="elementor-element elementor-element-14cfa1a elementor-widget elementor-widget-text-editor" data-id="14cfa1a" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Willkommen zu meinem Blogbeitrag, in dem der E-Mail Versand unter Ubuntu im Fokus steht. Das Versenden von E-Mails spielt eine wichtige Rolle in verschiedenen Anwendungsbereichen, sei es für Benachrichtigungen, Berichte oder die allgemeine Kommunikation. In diesem Beitrag werden die Voraussetzungen und die erforderlichen Schritte zur Konfiguration aufgezeigt, um den E-Mail-Versand erfolgreich einzurichten.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-08693a5 elementor-widget elementor-widget-heading" data-id="08693a5" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h3 class="elementor-heading-title elementor-size-default">Voraussetzungen</h3>				</div>
				</div>
				<div class="elementor-element elementor-element-97bde9a elementor-widget elementor-widget-text-editor" data-id="97bde9a" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Bevor mit der Konfiguration begonnen wird, sollten die folgenden Programme installiert sein. Falls sie nicht vorhanden sind, können sie mittels des folgenden Befehls installiert werden:</p><p style="padding-left: 40px;"><code>sudo apt-get install ssmtp mailutils</code></p><p>Ob die Installation geklappt hat, kann mittels folgendem Befehl überprüft werden:</p><p style="padding-left: 40px;"><code>mail --version</code></p><p>Eine weitere Voraussetzung ist das Vorhandensein einer E-Mail Adresse welche zum Versand unter Ubuntu genutzt werden soll. Dabei kann man die eigene E-Mail Adresse nutzen, wobei ich in diesem Fall zu einem separates App-Passwort raten würde. Dies ist z.B. bei Gmail möglich, so muss nicht das Hauptkennwort in der Konfigurationsdatei stehen. Eine andere Möglichkeit wäre ein separates E-Mail Konto zu erstellen. </p>								</div>
				</div>
				<div class="elementor-element elementor-element-e7844b7 elementor-widget elementor-widget-heading" data-id="e7844b7" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h3 class="elementor-heading-title elementor-size-default">Konfiguration des E-Mail Versands</h3>				</div>
				</div>
				<div class="elementor-element elementor-element-0dc55e0 elementor-widget elementor-widget-text-editor" data-id="0dc55e0" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Nach der Installation müssen die Konfigurationsdateien angepasst werden. Die Datei <code>ssmtp.conf</code> kann mit dem folgenden Befehl geöffnet werden:</p><p style="padding-left: 40px;"><code>sudo nano /etc/ssmtp/ssmtp.conf</code></p><p>Die Konfigurationsdatei sollte der unten dargestellten ähnlich sein. Die grün hervorgehobenen Passagen müssen entsprechend eurer E-Mail Adresse (welche zum Versand genutzt werden soll) angepasst werden.</p><p style="padding-left: 40px;"><code># Config file for sSMTP sendmail<br />#<br /># The person who gets all mail for userids &lt; 1000<br /># Make this empty to disable rewriting.<br />root=</code></p><p style="padding-left: 40px;"># The place where the mail goes. The actual machine name is required no<br /># MX records are consulted. Commonly mailhosts are named mail.domain.com<br /><span style="color: #1bae70;">mailhub=SMTP-HOST-ACCOUNT-PROVIDER</span></p><p style="padding-left: 40px;"># Where will the mail seem to come from?<br /><span style="color: #1bae70;">rewriteDomain=EXAMPLE.COM</span></p><p style="padding-left: 40px;"># The full hostname<br /><span style="color: #1bae70;">hostname=SERVERNAME</span></p><p style="padding-left: 40px;"><span style="color: #1bae70;">AuthUser=E-MAIL-ADRESSE</span><br /><span style="color: #1bae70;">AuthPass=PASSWORT</span><br /><span style="color: #1bae70;">AuthMethod=LOGIN</span></p><p style="padding-left: 40px;"># Are users allowed to set their own From: address?<br /># YES &#8211; Allow the user to specify their own From: address<br /># NO &#8211; Use the system generated From: address<br /><span style="color: #1bae70;">FromLineOverride=no</span><br /><span style="color: #1bae70;">UseSTARTTLS=yes</span><br /><span style="color: #1bae70;">UseTLS=yes</span></p><p>Der Mailhub ist die zentrale Adresse des E-Mail Providers (wo der Account gehostet ist). Diese könnt ihr durch einfaches recherchieren bzw. googeln herausfinden.</p><p>Die <em>rewriteDomain</em> ist im Normfall diese, welche hinter dem <em>@</em> der E-Mail Adresse steht.</p><p>Die nachfolgenden drei Zeilen müssen mit euren Daten gefüllt werden. Die  Zeile mit <em>AuthMethod</em> kann so übernommen werden.</p><p>Die letzten drei Zeilen können so übernommen werden. Diese sind dafür verantwortlich, dass kein Nutzer die von E-Mail Adresse aus dem Programm heraus verändern kann und dass eine verschlüsselte Übertragung bei dem verschicken der E-Mails genutzt wird.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-cfa7785 elementor-widget elementor-widget-text-editor" data-id="cfa7785" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Anschließend muss festgelegt werden, welcher Benutzer auf dem Server welche E-Mail-Adresse verwenden soll. Hierzu wird die Datei <code>revaliases</code> bearbeitet:</p><p style="padding-left: 40px;"><code>sudo nano /etc/ssmtp/revaliases</code></p><p>Die Datei wird mit den entsprechenden Zeilen ergänzt, zum Beispiel:</p><p style="padding-left: 40px;"><code>BENUTZER:EMAILADRESSE:MAILHUB:PORT<br />
root:tekkie@ninja.de:mail.your-server.de:587</code></p><p>Zum Abschluss werden die Zugriffsrechte für die Datei eingeschränkt:</p><p style="padding-left: 40px;"><code>sudo chown root:mail /etc/ssmtp/ssmtp.conf<br />
sudo chmod 640 /etc/ssmtp/ssmtp.conf</code></p><p>Damit kann nur <em>root</em> die Datei lesen und schreiben und der Benutzer <em>mail</em> kann die Datei nur lesen. Alle anderen haben keinen Zugriff auf diese Datei.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-b8b18f9 elementor-widget elementor-widget-heading" data-id="b8b18f9" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h3 class="elementor-heading-title elementor-size-default">Testen des E-Mail Versand unter Ubuntu</h3>				</div>
				</div>
				<div class="elementor-element elementor-element-84238c0 elementor-widget elementor-widget-text-editor" data-id="84238c0" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Nach Abschluss der Konfiguration kann mit dem folgenden Befehl eine Test-E-Mail gesendet werden:</p><p><code>echo "Hallo Welt, hier ist tekkieninja!" | mail -s "E-Mail Test" tekkie@ninja.de</code></p><p>Damit wurde erfolgreich eine E-Mail unter Linux Ubuntu versendet. Diese Funktionalität kann nun je nach Bedarf für automatische Benachrichtigungen (wie z.B. bei einer Nextcloud Instanz) oder andere Zwecke genutzt werden.</p><p>Falls Fragen oder Probleme auftreten, zögern Sie nicht, uns zu kontaktieren. Wir stehen Ihnen gerne zur Verfügung. Viel Erfolg beim Versenden von E-Mails unter Linux Ubuntu!</p>								</div>
				</div>
				</div>
				</div>
		<p>Der Beitrag <a href="https://tekkieninja.de/e-mail-versand-unter-ubuntu/">E-Mail Versand unter Ubuntu</a> erschien zuerst auf <a href="https://tekkieninja.de">TekkieNinja</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://tekkieninja.de/e-mail-versand-unter-ubuntu/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Firewall ufw unter Ubuntu</title>
		<link>https://tekkieninja.de/eine-einfuehrung-in-die-firewall-ufw-unter-ubuntu/</link>
					<comments>https://tekkieninja.de/eine-einfuehrung-in-die-firewall-ufw-unter-ubuntu/#respond</comments>
		
		<dc:creator><![CDATA[Florian Keßler]]></dc:creator>
		<pubDate>Fri, 26 May 2023 18:03:33 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<guid isPermaLink="false">https://tekkieninja.de/?p=1261</guid>

					<description><![CDATA[<p>Die Sicherheit eines Computers oder Servers ist von entscheidender Bedeutung, insbesondere wenn er mit dem Internet verbunden ist. Eine Firewall ist ein wichtiger Bestandteil des Sicherheitssystems und schützt vor unautorisiertem Zugriff und potenziellen Angriffen. In diesem Blogbeitrag werden wir uns die Firewall UFW unter Ubuntu und Linux genauer ansehen und erfahren, wie sie eingerichtet und [&#8230;]</p>
<p>Der Beitrag <a href="https://tekkieninja.de/eine-einfuehrung-in-die-firewall-ufw-unter-ubuntu/">Firewall ufw unter Ubuntu</a> erschien zuerst auf <a href="https://tekkieninja.de">TekkieNinja</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="1261" class="elementor elementor-1261">
				<div class="elementor-element elementor-element-2b73640 e-con-full e-flex e-con e-parent" data-id="2b73640" data-element_type="container" data-e-type="container">
				<div class="elementor-element elementor-element-27060ba elementor-widget elementor-widget-text-editor" data-id="27060ba" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Die Sicherheit eines Computers oder Servers ist von entscheidender Bedeutung, insbesondere wenn er mit dem Internet verbunden ist. Eine Firewall ist ein wichtiger Bestandteil des Sicherheitssystems und schützt vor unautorisiertem Zugriff und potenziellen Angriffen. In diesem Blogbeitrag werden wir uns die Firewall UFW unter Ubuntu und Linux genauer ansehen und erfahren, wie sie eingerichtet und konfiguriert wird.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-7746d69 elementor-widget elementor-widget-heading" data-id="7746d69" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h3 class="elementor-heading-title elementor-size-default">Grundlagen der Firewall</h3>				</div>
				</div>
				<div class="elementor-element elementor-element-a711c9b elementor-widget elementor-widget-text-editor" data-id="a711c9b" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>UFW (Uncomplicated Firewall) ist eine benutzerfreundliche Firewall-Lösung, die standardmäßig auf Ubuntu-Systemen installiert ist. Sollte dies nicht der Fall sein, kann sie einfach mit dem folgenden Befehl nachinstalliert werden:</p><p style="padding-left: 40px;"><code>sudo apt-get install ufw</code></p><p>Bevor wir mit der Konfiguration beginnen, müssen wir die Standardrichtlinien festlegen. Diese Regeln steuern den Datenverkehr, der nicht explizit mit anderen Regeln übereinstimmt. Standardmäßig ist UFW so eingestellt, dass alle eingehenden Verbindungen blockiert und alle ausgehenden Verbindungen erlaubt werden. Dies bedeutet, dass niemand von außen auf den Server zugreifen kann, während Anwendungen innerhalb des Servers nach außen kommunizieren können. <span style="font-style: inherit; font-weight: inherit; text-align: var(--text-align); background-color: var(--ast-global-color-5); color: var(--ast-global-color-3);">Um die UFW-Regeln auf die Standardeinstellungen zurückzusetzen, werden folgende Befehle verwendet:</span></p><p style="padding-left: 40px;"><code>sudo ufw default deny incoming</code></p><p style="padding-left: 40px;"><code>sudo ufw default allow outgoing</code></p><p>Mit diesen Befehlen werden die Standardeinstellungen so konfiguriert, dass eingehende Verbindungen blockiert und ausgehende Verbindungen erlaubt werden. Für einen persönlichen Computer könnten diese Firewall-Einstellungen ausreichen, aber Server müssen normalerweise auf eingehende Anfragen von externen Benutzern reagieren. Hierdurch würden alle Anfragen, z.B. die an einen <a href="https://tekkieninja.de/was-sind-docker-container-und-wie-funktionieren-sie/">Docker Container</a> mit freigegebenen Port, geblockt werden.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-99f9cde elementor-widget elementor-widget-heading" data-id="99f9cde" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h3 class="elementor-heading-title elementor-size-default">Aktivierung der Firewall ufw und Konfiguration</h3>				</div>
				</div>
				<div class="elementor-element elementor-element-5a480bb elementor-widget elementor-widget-text-editor" data-id="5a480bb" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Wenn wir die UFW-Firewall jetzt aktivieren würden, würden alle eingehenden Verbindungen blockiert. Daher müssen wir Regeln erstellen, die explizit legitime eingehende Verbindungen erlauben, z. B. SSH- oder HTTP-Verbindungen. Wenn ein Server per SSH verwalten möchte, müssen eingehende SSH-Verbindungen zugelassen werden. Um dies zu konfigurieren, kann folgender Befehl verwendet werden:</p><p style="padding-left: 40px;"><code>sudo ufw allow ssh</code></p><p>Damit werden Firewall-Regeln erstellt, die alle Verbindungen auf Port 22 zulassen, auf dem der SSH-Daemon standardmäßig lauscht. UFW erkennt den Dienst &#8222;ssh&#8220; automatisch, da er in der Datei &#8222;/etc/services&#8220; aufgeführt ist. Alternativ können Sie die Regel auch mit der Angabe des Ports erstellen:</p><p style="padding-left: 40px;"><code>sudo ufw allow 22</code></p><p>Um UFW zu aktivieren, wird nachfolgender Befehl genutzt:</p><p style="padding-left: 40px;"><code>sudo ufw enable</code></p><p>Es wird eine Warnung angezeigt, dass der Befehl bestehende SSH-Verbindungen unterbrechen kann. Da wir bereits eine Firewall-Regel für SSH-Verbindungen erstellt haben, können wir die Warnung mit &#8222;y&#8220; bestätigen und die Eingabetaste drücken.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-f7671ff elementor-widget elementor-widget-heading" data-id="f7671ff" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h3 class="elementor-heading-title elementor-size-default">Spezifische Konfigurationen</h3>				</div>
				</div>
				<div class="elementor-element elementor-element-08ff7bc elementor-widget elementor-widget-heading" data-id="08ff7bc" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h4 class="elementor-heading-title elementor-size-default">Port Ranges</h4>				</div>
				</div>
				<div class="elementor-element elementor-element-f372273 elementor-widget elementor-widget-text-editor" data-id="f372273" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Einige Anwendungen verwenden mehrere Ports statt eines einzelnen Ports. Mit UFW können Portbereiche angeben werden, um diese Verbindungen zu ermöglichen. Nehmen wir zum Beispiel X11-Verbindungen, die die Ports 6000-6007 verwenden. Hier sind die entsprechenden Befehle, um diese in der Firewall freizuschalten:</p><p style="padding-left: 40px;"><code class="!whitespace-pre hljs language-bash">sudo ufw allow 6000:6007/tcp</code></p><p style="padding-left: 40px;"><code class="!whitespace-pre hljs language-bash">sudo ufw allow 6000:6007/udp</code></p>								</div>
				</div>
				<div class="elementor-element elementor-element-c769a40 elementor-widget elementor-widget-heading" data-id="c769a40" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h4 class="elementor-heading-title elementor-size-default">IP-Adressen</h4>				</div>
				</div>
				<div class="elementor-element elementor-element-1ee4645 elementor-widget elementor-widget-text-editor" data-id="1ee4645" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Wenn spezifische IP-Adressen zugelassen werden möchten, kann dies ebenfalls in einer Firewall-Regeln abgebildet werden. Wenn beispielsweise Verbindungen von einer bestimmten IP-Adresse wie 203.0.113.4 erlaubt werden sollen, wird der folgende Befehl genutzt:</p><p style="padding-left: 40px;"><code class="!whitespace-pre hljs language-bash">sudo ufw allow from 203.0.113.4</code></p><p>Es ist ebenfalls möglich, einen bestimmten Port angeben, zu dem die IP-Adresse eine Verbindung herstellen darf. Hier ist ein Beispiel, um Verbindungen von 203.0.113.4 zum Port 22 (SSH) zuzulassen:</p><p style="padding-left: 40px;"><code class="!whitespace-pre hljs language-bash">sudo ufw allow from 203.0.113.4 to any port 22</code></p>								</div>
				</div>
				<div class="elementor-element elementor-element-1dcb13a elementor-widget elementor-widget-heading" data-id="1dcb13a" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h4 class="elementor-heading-title elementor-size-default">Subnetze</h4>				</div>
				</div>
				<div class="elementor-element elementor-element-389f35e elementor-widget elementor-widget-text-editor" data-id="389f35e" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Die sogenannte CIDR-Notation ermöglicht es, ein Subnetz von IP-Adressen in den Firewall-Regeln zuzulassen. Wenn beispielsweise alle IP-Adressen im Bereich von 203.0.113.1 bis 203.0.113.254 zugelassen werden möchten, kann der nachstehende Befehl verwendet werden:</p><p style="padding-left: 40px;"><code class="!whitespace-pre hljs language-bash">sudo ufw allow from 203.0.113.0/24</code></p><p>Auch hier kann der Ziel-Port angeben werden. Nehmen wir an, es soll das Subnetz 203.0.113.0/24 nur mit dem Port 22 (SSH) verbinden lassen:</p><p style="padding-left: 40px;"><code class="!whitespace-pre hljs language-bash">sudo ufw allow from 203.0.113.0/24 to any port 22</code></p>								</div>
				</div>
				<div class="elementor-element elementor-element-e836afe elementor-widget elementor-widget-heading" data-id="e836afe" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h4 class="elementor-heading-title elementor-size-default">Verbindungen ablehnen</h4>				</div>
				</div>
				<div class="elementor-element elementor-element-cef01c0 elementor-widget elementor-widget-text-editor" data-id="cef01c0" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Manchmal möchte man bestimmte Verbindungen aufgrund der Quell-IP-Adresse oder des Subnetzes ablehnen. Standardmäßig werden alle eingehenden Verbindungen von UFW verweigert, es sei denn, Sie erstellen explizite Regeln, um bestimmte Ports und IP-Adressen zuzulassen. Wenn jedoch bestimmte Verbindungen aufgrund von Sicherheitsbedenken abgelehnt werden sollen, können Verbotsregeln erstellt werden. Die oben genannten Befehle können analog verwendet werden, indem &#8222;allow&#8220; durch &#8222;deny&#8220; ersetzt wird.</p><p>Beispiel für das Verweigern von HTTP-Verbindungen:</p><p style="padding-left: 40px;"><code class="!whitespace-pre hljs language-bash">sudo ufw allow from 203.0.113.0/24</code></p><p>Oder um alle Verbindungen von 203.0.113.4 abzulehnen:</p><p style="padding-left: 40px;"><code class="!whitespace-pre hljs language-bash">sudo ufw deny from 203.0.113.4</code></p>								</div>
				</div>
				<div class="elementor-element elementor-element-b3d83c6 elementor-widget elementor-widget-heading" data-id="b3d83c6" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h4 class="elementor-heading-title elementor-size-default">Regeln löschen</h4>				</div>
				</div>
				<div class="elementor-element elementor-element-ed207f8 elementor-widget elementor-widget-text-editor" data-id="ed207f8" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Das Löschen von Firewall-Regeln ist genauso wichtig wie das Erstellen. Es gibt zwei Möglichkeiten, Regeln zu löschen: nach Regelnummer oder nach der eigentlichen Regel. Wenn Regeln anhand der Nummer gelöscht werden sollen, verwenden Sie den Befehl</p><p style="padding-left: 40px;"><code>sudo ufw delete</code></p><p>gefolgt von der Regelnummer. Die Regelnummer kann mit dem nachstehenden Befehl herausgefunden werden:</p><p style="padding-left: 40px;"><code>sudo ufw status numbered</code></p><p>Aber <strong>Achtung</strong>, denn nach dem löschen einer Regel können die Nummern sich zur ersten Ausgabe unterscheiden.</p><p>Wenn Regeln anhand der tatsächlichen Regel gelöscht werden sollen, verwendet man den nachstehenden Befehl gefolgt von der Regel selbst.</p><p style="padding-left: 40px;"><code>sudo ufw delete</code></p><p>Beispiel für das Löschen einer Regel anhand der Regelnummer:</p><div class="bg-black rounded-md mb-4"><div class="p-4 overflow-y-auto" style="padding-left: 40px;"><code class="!whitespace-pre hljs language-arduino">sudo ufw <span class="hljs-keyword">delete</span> 2</code></div><div> </div></div><p>Beispiel für das Löschen einer Regel anhand der tatsächlichen Regel:</p><div class="bg-black rounded-md mb-4"><div class="p-4 overflow-y-auto" style="padding-left: 40px;"><code class="!whitespace-pre hljs language-arduino">sudo ufw <span class="hljs-keyword">delete</span> allow http</code></div><div> </div><div><span style="font-size: 16px;">Wichtig zu beachten, wenn IPv6 aktiviert ist, sollten auch diese Regeln gelöscht werden.</span></div></div>								</div>
				</div>
				<div class="elementor-element elementor-element-71cfea3 elementor-widget elementor-widget-spacer" data-id="71cfea3" data-element_type="widget" data-e-type="widget" data-widget_type="spacer.default">
				<div class="elementor-widget-container">
							<div class="elementor-spacer">
			<div class="elementor-spacer-inner"></div>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-f75a3d0 elementor-widget elementor-widget-text-editor" data-id="f75a3d0" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Die Firewall UFW bietet eine einfache und effektive Möglichkeit, den Datenverkehr zu steuern und Ihren Ubuntu- oder Linux-Server vor unerwünschten Zugriffen zu schützen. Durch die Konfiguration der Firewall nach den spezifischen Nutzeranforderungen kann die Sicherheit erhöht und potenzielle Angriffe abwehrt werden. Wir haben in diesem Blogbeitrag nur einen Überblick über die Grundlagen gegeben, aber UFW bietet viele weitere Möglichkeiten zur Feinabstimmung der Firewall-Regeln. In der <a href="https://wiki.ubuntuusers.de/ufw/">Dokumentation</a> sind zusätzliche Funktionen beschrieben.</p>								</div>
				</div>
				</div>
				</div>
		<p>Der Beitrag <a href="https://tekkieninja.de/eine-einfuehrung-in-die-firewall-ufw-unter-ubuntu/">Firewall ufw unter Ubuntu</a> erschien zuerst auf <a href="https://tekkieninja.de">TekkieNinja</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://tekkieninja.de/eine-einfuehrung-in-die-firewall-ufw-unter-ubuntu/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Backup erstellen und wiederherstellen</title>
		<link>https://tekkieninja.de/image-backup-erstellen-und-wiederherstellen/</link>
					<comments>https://tekkieninja.de/image-backup-erstellen-und-wiederherstellen/#respond</comments>
		
		<dc:creator><![CDATA[Florian Keßler]]></dc:creator>
		<pubDate>Fri, 05 May 2023 15:00:00 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Linux]]></category>
		<guid isPermaLink="false">https://tekkieninja.de/?p=1160</guid>

					<description><![CDATA[<p>Ubuntu besitzt zwar ein integriertes Backup-Tool mit denen eine Datensicherung erfolgen kann, allerdings wird damit nicht das Betriebssystem selbst gesichert. In diesem Tutorial zeige ich euch Schritt für Schritt, wie man ein Image-Backup erstellen und wiederherstellen kann. Dafür nutze ich das kostenlose Tool Clonezilla. Um Clonezilla nutzen zu können, wird das Image selbst und ein [&#8230;]</p>
<p>Der Beitrag <a href="https://tekkieninja.de/image-backup-erstellen-und-wiederherstellen/">Backup erstellen und wiederherstellen</a> erschien zuerst auf <a href="https://tekkieninja.de">TekkieNinja</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="1160" class="elementor elementor-1160">
				<div class="elementor-element elementor-element-d1dd16e e-con-full e-flex e-con e-parent" data-id="d1dd16e" data-element_type="container" data-e-type="container">
				<div class="elementor-element elementor-element-f9756c2 elementor-widget elementor-widget-text-editor" data-id="f9756c2" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Ubuntu besitzt zwar ein integriertes Backup-Tool mit denen eine Datensicherung erfolgen kann, allerdings wird damit nicht das Betriebssystem selbst gesichert. In diesem Tutorial zeige ich euch Schritt für Schritt, wie man ein Image-Backup erstellen und wiederherstellen kann. Dafür nutze ich das kostenlose Tool Clonezilla.</p><p>Um Clonezilla nutzen zu können, wird das Image selbst und ein USB-Stick benötigt. Das Image kann entweder bei <a href="https://clonezilla.org/downloads.php">Clonezilla</a> selbst oder z.B. bei <a href="https://www.heise.de/download/product/clonezilla-49483">Heise</a> heruntergeladen werden. Um einen bootfähigen USB-Stick zu erstellen, wird nach dem gleichen Schema wie auch in der <a href="https://tekkieninja.de/ubuntu-server-installation/">Ubuntu Server Installation</a> vorgegangen. </p>								</div>
				</div>
		<div class="elementor-element elementor-element-c49329c e-con-full e-flex e-con e-parent" data-id="c49329c" data-element_type="container" data-e-type="container">
				<div class="elementor-element elementor-element-107ec32 elementor-widget elementor-widget-heading" data-id="107ec32" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h3 class="elementor-heading-title elementor-size-default">Image-Backup erstellen</h3>				</div>
				</div>
				<div class="elementor-element elementor-element-89a9a3a elementor-widget elementor-widget-text-editor" data-id="89a9a3a" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Bevor ein Image-Backup erstellt werden kann, muss ein bootfähiger USB-Stick und ein externes Speichermedium (wie z.B. eine externe Festplatte oder ein anderer USB-Stick) an den Rechner angeschlossen werden. Anschließend muss der Rechner neu gestartet werden und von dem bootfähigen USB-Stick booten. Dies kann erreicht werden, indem das Bootmenü aufgerufen wird. Dies kann sich je nach Hersteller und Modell unterscheiden.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-831da93 elementor-widget elementor-widget-text-editor" data-id="831da93" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<ol>
 	<li>Wenn der PC von dem USB-Stick gebootet hat, erscheint wie im nachfolgenden Bild der Clonezilla Startbildschirm. Hier wird die Option <em>Clonezilla live (VGA 800&#215;600)</em> ausgewählt.</li>
</ol>								</div>
				</div>
				<div class="elementor-element elementor-element-5ca5f04 elementor-widget elementor-widget-image" data-id="5ca5f04" data-element_type="widget" data-e-type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
																<a href="https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-1.png" data-elementor-open-lightbox="yes" data-elementor-lightbox-title="Clonezilla-Backup-1" data-e-action-hash="#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6MTE2NSwidXJsIjoiaHR0cHM6XC9cL3Rla2tpZW5pbmphLmRlXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIzXC8wNFwvQ2xvbmV6aWxsYS1CYWNrdXAtMS5wbmcifQ%3D%3D">
							<img fetchpriority="high" decoding="async" width="639" height="479" src="https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-1.png" class="attachment-large size-large wp-image-1165" alt="Clonezilla Startbildschirm" srcset="https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-1.png 639w, https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-1-300x225.png 300w" sizes="(max-width: 639px) 100vw, 639px" />								</a>
															</div>
				</div>
				<div class="elementor-element elementor-element-74973e8 elementor-widget elementor-widget-text-editor" data-id="74973e8" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<ol><li value="2">Die deutsche Übersetzung ist nicht immer vollständig bzw. passabel übersetzt. Deshalb wird in der Sprachauswahl <em>English</em> ausgewählt.</li></ol>								</div>
				</div>
				<div class="elementor-element elementor-element-a99af60 elementor-widget elementor-widget-image" data-id="a99af60" data-element_type="widget" data-e-type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
																<a href="https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-2.png" data-elementor-open-lightbox="yes" data-elementor-lightbox-title="Clonezilla-Backup-2" data-e-action-hash="#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6MTE2NiwidXJsIjoiaHR0cHM6XC9cL3Rla2tpZW5pbmphLmRlXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIzXC8wNFwvQ2xvbmV6aWxsYS1CYWNrdXAtMi5wbmcifQ%3D%3D">
							<img decoding="async" width="804" height="592" src="https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-2.png" class="attachment-large size-large wp-image-1166" alt="Clonezilla Sprachauswahl" srcset="https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-2.png 804w, https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-2-300x221.png 300w, https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-2-768x565.png 768w" sizes="(max-width: 804px) 100vw, 804px" />								</a>
															</div>
				</div>
				<div class="elementor-element elementor-element-6860437 elementor-widget elementor-widget-text-editor" data-id="6860437" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<ol><li value="3">Nach der Spracheinstellung folgt die Auswahl des Tastaturlayouts. Hier kann das Standard Layout beibehalten werden, also die Option <em>Keep the default layout &#8211; US keyboard </em>auswählen.</li></ol>								</div>
				</div>
				<div class="elementor-element elementor-element-956e24d elementor-widget elementor-widget-image" data-id="956e24d" data-element_type="widget" data-e-type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
																<a href="https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-3.png" data-elementor-open-lightbox="yes" data-elementor-lightbox-title="Clonezilla-Backup-3" data-e-action-hash="#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6MTE2NywidXJsIjoiaHR0cHM6XC9cL3Rla2tpZW5pbmphLmRlXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIzXC8wNFwvQ2xvbmV6aWxsYS1CYWNrdXAtMy5wbmcifQ%3D%3D">
							<img decoding="async" width="806" height="593" src="https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-3.png" class="attachment-large size-large wp-image-1167" alt="Clonezilla Tastaturlayout" srcset="https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-3.png 806w, https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-3-300x221.png 300w, https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-3-768x565.png 768w" sizes="(max-width: 806px) 100vw, 806px" />								</a>
															</div>
				</div>
				<div class="elementor-element elementor-element-df62ebd elementor-widget elementor-widget-text-editor" data-id="df62ebd" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<ol><li value="4">Anschließend wird das Fenster <em>Start Clonezilla</em> angezeigt, bestätigt hier erneut mit Enter<em>.</em></li></ol>								</div>
				</div>
				<div class="elementor-element elementor-element-31121da elementor-widget elementor-widget-image" data-id="31121da" data-element_type="widget" data-e-type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
																<a href="https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-4.png" data-elementor-open-lightbox="yes" data-elementor-lightbox-title="Clonezilla-Backup-4" data-e-action-hash="#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6MTE2OCwidXJsIjoiaHR0cHM6XC9cL3Rla2tpZW5pbmphLmRlXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIzXC8wNFwvQ2xvbmV6aWxsYS1CYWNrdXAtNC5wbmcifQ%3D%3D">
							<img loading="lazy" decoding="async" width="801" height="592" src="https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-4.png" class="attachment-large size-large wp-image-1168" alt="Clonezilla Startmethode" srcset="https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-4.png 801w, https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-4-300x222.png 300w, https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-4-768x568.png 768w" sizes="(max-width: 801px) 100vw, 801px" />								</a>
															</div>
				</div>
				<div class="elementor-element elementor-element-d78aa60 elementor-widget elementor-widget-text-editor" data-id="d78aa60" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<ol><li value="5">Das nächste Fenster bietet uns mehrere Möglichkeit um ein Backup zu erstellen. Da das gesamte System gesichert werden soll, wird der Eintrag <em>device-image</em> ausgewählt. Damit wird ein Image von der Systemfestplatte erzeugt.</li></ol>								</div>
				</div>
				<div class="elementor-element elementor-element-b8c5c94 elementor-widget elementor-widget-image" data-id="b8c5c94" data-element_type="widget" data-e-type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
																<a href="https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-5.png" data-elementor-open-lightbox="yes" data-elementor-lightbox-title="Clonezilla-Backup-5" data-e-action-hash="#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6MTE2OSwidXJsIjoiaHR0cHM6XC9cL3Rla2tpZW5pbmphLmRlXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIzXC8wNFwvQ2xvbmV6aWxsYS1CYWNrdXAtNS5wbmcifQ%3D%3D">
							<img loading="lazy" decoding="async" width="805" height="595" src="https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-5.png" class="attachment-large size-large wp-image-1169" alt="Clonezilla Backupmethode" srcset="https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-5.png 805w, https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-5-300x222.png 300w, https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-5-768x568.png 768w" sizes="(max-width: 805px) 100vw, 805px" />								</a>
															</div>
				</div>
				<div class="elementor-element elementor-element-ffbb2e2 elementor-widget elementor-widget-text-editor" data-id="ffbb2e2" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<ol><li value="6">Im folgenden wird der Speicherort für das Backup, was später erstellt wird, festgelegt. Wenn ein externes Medium wie z.B. eine externe Festplatte verwendet werden soll, muss diese spätestens jetzt an den Rechner angeschlossen werden. Danach wird der Eintrag <em>local_dev</em> ausgewählt. Nachdem der Eintrag bestätigt wurde und die Festplatte an dem Rechner angeschlossen ist, kann der gelbe Text mit Enter bestätigt werden.</li></ol>								</div>
				</div>
				<div class="elementor-element elementor-element-70e2b7b elementor-widget elementor-widget-image" data-id="70e2b7b" data-element_type="widget" data-e-type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
																<a href="https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-6.png" data-elementor-open-lightbox="yes" data-elementor-lightbox-title="Clonezilla-Backup-6" data-e-action-hash="#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6MTE3MCwidXJsIjoiaHR0cHM6XC9cL3Rla2tpZW5pbmphLmRlXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIzXC8wNFwvQ2xvbmV6aWxsYS1CYWNrdXAtNi5wbmcifQ%3D%3D">
							<img loading="lazy" decoding="async" width="807" height="603" src="https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-6.png" class="attachment-large size-large wp-image-1170" alt="Clonezilla Sicherungsart" srcset="https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-6.png 807w, https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-6-300x224.png 300w, https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-6-768x574.png 768w" sizes="(max-width: 807px) 100vw, 807px" />								</a>
															</div>
				</div>
				<div class="elementor-element elementor-element-4de778f elementor-widget elementor-widget-text-editor" data-id="4de778f" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<ol><li value="7">Nachdem die Auswahl des Speicherorts erfolgt ist, sucht Clonezilla nach externen Geräten. Typischerweise wird die Systemfestplatte mit <em>sda</em> bezeichnet. Alle weiteren werden mit fortlaufenden Buchtstaben wie z.B. <em>sdb</em> bezeichnet, wie im nachfolgenden Bild dargestellt ist. Sind alle Speichermedien gefunden, so kann man mittels <em>Strg &#8211; C</em> die Suche beenden.</li></ol>								</div>
				</div>
				<div class="elementor-element elementor-element-074823e elementor-widget elementor-widget-image" data-id="074823e" data-element_type="widget" data-e-type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
																<a href="https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-7-e1682874675870.png" data-elementor-open-lightbox="yes" data-elementor-lightbox-title="Clonezilla-Backup-7" data-e-action-hash="#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6MTE3MSwidXJsIjoiaHR0cHM6XC9cL3Rla2tpZW5pbmphLmRlXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIzXC8wNFwvQ2xvbmV6aWxsYS1CYWNrdXAtNy1lMTY4Mjg3NDY3NTg3MC5wbmcifQ%3D%3D">
							<img loading="lazy" decoding="async" width="841" height="279" src="https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-7-e1682874675870.png" class="attachment-large size-large wp-image-1171" alt="Clonezilla Geräteübersicht" srcset="https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-7-e1682874675870.png 841w, https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-7-e1682874675870-300x100.png 300w, https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-7-e1682874675870-768x255.png 768w" sizes="(max-width: 841px) 100vw, 841px" />								</a>
															</div>
				</div>
				<div class="elementor-element elementor-element-9281855 elementor-widget elementor-widget-text-editor" data-id="9281855" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<ol><li value="8">Im nächsten Fenster wird die Festplatte ausgewählt, auf  welcher das Betriebssystem <strong>gesichert</strong> werden soll. Wählt die entsprechende Festplatte aus, in diesem Fall ist das sdb1, und bestätigt mit der Eingabetaste.</li></ol>								</div>
				</div>
				<div class="elementor-element elementor-element-cf9afe2 elementor-widget elementor-widget-image" data-id="cf9afe2" data-element_type="widget" data-e-type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
																<a href="https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-8.png" data-elementor-open-lightbox="yes" data-elementor-lightbox-title="Clonezilla-Backup-8" data-e-action-hash="#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6MTE3MiwidXJsIjoiaHR0cHM6XC9cL3Rla2tpZW5pbmphLmRlXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIzXC8wNFwvQ2xvbmV6aWxsYS1CYWNrdXAtOC5wbmcifQ%3D%3D">
							<img loading="lazy" decoding="async" width="806" height="589" src="https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-8.png" class="attachment-large size-large wp-image-1172" alt="Clonezilla Auswahl der zu sichernden Partition" srcset="https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-8.png 806w, https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-8-300x219.png 300w, https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-8-768x561.png 768w" sizes="(max-width: 806px) 100vw, 806px" />								</a>
															</div>
				</div>
				<div class="elementor-element elementor-element-e02f4a4 elementor-widget elementor-widget-text-editor" data-id="e02f4a4" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<ol><li value="9">Die nächste Einstellung ermöglicht es uns das Dateisystem, auf dem das Backup gespeichert werden soll, zuvor auf Fehler zu überprüfen. Da dies aus meiner Sicht nicht notwendig ist, könnt ihr die Option <em>no-fsck Skip checking&#8230;</em> auswählen und mit Enter bestätigen.</li></ol>								</div>
				</div>
				<div class="elementor-element elementor-element-0909d47 elementor-widget elementor-widget-image" data-id="0909d47" data-element_type="widget" data-e-type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
																<a href="https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-9.png" data-elementor-open-lightbox="yes" data-elementor-lightbox-title="Clonezilla-Backup-9" data-e-action-hash="#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6MTE3MywidXJsIjoiaHR0cHM6XC9cL3Rla2tpZW5pbmphLmRlXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIzXC8wNFwvQ2xvbmV6aWxsYS1CYWNrdXAtOS5wbmcifQ%3D%3D">
							<img loading="lazy" decoding="async" width="806" height="593" src="https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-9.png" class="attachment-large size-large wp-image-1173" alt="Clonezilla Überprüfung des Speichermediums bevor dem einhängen" srcset="https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-9.png 806w, https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-9-300x221.png 300w, https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-9-768x565.png 768w" sizes="(max-width: 806px) 100vw, 806px" />								</a>
															</div>
				</div>
				<div class="elementor-element elementor-element-3d30349 elementor-widget elementor-widget-text-editor" data-id="3d30349" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<ol><li value="10">Im nächsten Schritt wird das Verzeichnis ausgewählt, welches gesichert werden soll. Da das ganze Betriebssystem gesichert werden soll, wird die Standardoption <em>/ &#8211; Top Level Directory</em> beibehalten. Anschließend wird die Speicheranzeige des Backupmediums mit Enter bestätigt (weißer Text).</li></ol>								</div>
				</div>
				<div class="elementor-element elementor-element-d2a4ef9 elementor-widget elementor-widget-image" data-id="d2a4ef9" data-element_type="widget" data-e-type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
																<a href="https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-10.png" data-elementor-open-lightbox="yes" data-elementor-lightbox-title="Clonezilla-Backup-10" data-e-action-hash="#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6MTE3NCwidXJsIjoiaHR0cHM6XC9cL3Rla2tpZW5pbmphLmRlXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIzXC8wNFwvQ2xvbmV6aWxsYS1CYWNrdXAtMTAucG5nIn0%3D">
							<img loading="lazy" decoding="async" width="802" height="599" src="https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-10.png" class="attachment-large size-large wp-image-1174" alt="Clonezilla zu sichernder Ordnerpfad" srcset="https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-10.png 802w, https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-10-300x224.png 300w, https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-10-768x574.png 768w" sizes="(max-width: 802px) 100vw, 802px" />								</a>
															</div>
				</div>
				<div class="elementor-element elementor-element-be66a6b elementor-widget elementor-widget-text-editor" data-id="be66a6b" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<ol><li value="11">An dieser Stelle wählt man den Modus <em>Beginner</em> aus und bestätigt mit Enter.</li></ol>								</div>
				</div>
				<div class="elementor-element elementor-element-548248d elementor-widget elementor-widget-image" data-id="548248d" data-element_type="widget" data-e-type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
																<a href="https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-11.png" data-elementor-open-lightbox="yes" data-elementor-lightbox-title="Clonezilla-Backup-11" data-e-action-hash="#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6MTE3NSwidXJsIjoiaHR0cHM6XC9cL3Rla2tpZW5pbmphLmRlXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIzXC8wNFwvQ2xvbmV6aWxsYS1CYWNrdXAtMTEucG5nIn0%3D">
							<img loading="lazy" decoding="async" width="803" height="594" src="https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-11.png" class="attachment-large size-large wp-image-1175" alt="Clonezilla Modus" srcset="https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-11.png 803w, https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-11-300x222.png 300w, https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-11-768x568.png 768w" sizes="(max-width: 803px) 100vw, 803px" />								</a>
															</div>
				</div>
				<div class="elementor-element elementor-element-01c4789 elementor-widget elementor-widget-text-editor" data-id="01c4789" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<ol><li value="12">In diesem Schritt wird ausgewählt, welche Aktion mit Clonezilla durchgeführt werden soll. In diesem Beispiel soll ein Image Backup erzeugt werden, demnach wählen wir die Option <em>savedisk</em> aus.</li></ol>								</div>
				</div>
				<div class="elementor-element elementor-element-a0fb5a7 elementor-widget elementor-widget-image" data-id="a0fb5a7" data-element_type="widget" data-e-type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
																<a href="https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-12.png" data-elementor-open-lightbox="yes" data-elementor-lightbox-title="Clonezilla-Backup-12" data-e-action-hash="#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6MTE3NiwidXJsIjoiaHR0cHM6XC9cL3Rla2tpZW5pbmphLmRlXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIzXC8wNFwvQ2xvbmV6aWxsYS1CYWNrdXAtMTIucG5nIn0%3D">
							<img loading="lazy" decoding="async" width="800" height="592" src="https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-12.png" class="attachment-large size-large wp-image-1176" alt="Clonezilla Backup Speichermethode" srcset="https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-12.png 800w, https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-12-300x222.png 300w, https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-12-768x568.png 768w" sizes="(max-width: 800px) 100vw, 800px" />								</a>
															</div>
				</div>
				<div class="elementor-element elementor-element-6f95d6e elementor-widget elementor-widget-text-editor" data-id="6f95d6e" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<ol><li value="13">In diesem Fenster kann man den Namen des Backup-Images anpassen.</li></ol>								</div>
				</div>
				<div class="elementor-element elementor-element-cda489a elementor-widget elementor-widget-image" data-id="cda489a" data-element_type="widget" data-e-type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
																<a href="https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-13.png" data-elementor-open-lightbox="yes" data-elementor-lightbox-title="Clonezilla-Backup-13" data-e-action-hash="#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6MTE3NywidXJsIjoiaHR0cHM6XC9cL3Rla2tpZW5pbmphLmRlXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIzXC8wNFwvQ2xvbmV6aWxsYS1CYWNrdXAtMTMucG5nIn0%3D">
							<img loading="lazy" decoding="async" width="803" height="595" src="https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-13.png" class="attachment-large size-large wp-image-1177" alt="Clonezilla Backupname festlegen" srcset="https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-13.png 803w, https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-13-300x222.png 300w, https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-13-768x569.png 768w" sizes="(max-width: 803px) 100vw, 803px" />								</a>
															</div>
				</div>
				<div class="elementor-element elementor-element-89e21f4 elementor-widget elementor-widget-text-editor" data-id="89e21f4" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<ol><li value="14">Nun wird die zu <strong>sichernde</strong> Festplatte ausgewählt. Hakt diese mit der Leertaste an und bestätigt die Auswahl anschließend mit Enter.</li></ol>								</div>
				</div>
				<div class="elementor-element elementor-element-5e8bd6c elementor-widget elementor-widget-image" data-id="5e8bd6c" data-element_type="widget" data-e-type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
																<a href="https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-14.png" data-elementor-open-lightbox="yes" data-elementor-lightbox-title="Clonezilla-Backup-14" data-e-action-hash="#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6MTE3OCwidXJsIjoiaHR0cHM6XC9cL3Rla2tpZW5pbmphLmRlXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIzXC8wNFwvQ2xvbmV6aWxsYS1CYWNrdXAtMTQucG5nIn0%3D">
							<img loading="lazy" decoding="async" width="807" height="593" src="https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-14.png" class="attachment-large size-large wp-image-1178" alt="Clonezilla Auswahl der zu sichernden Festplatte" srcset="https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-14.png 807w, https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-14-300x220.png 300w, https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-14-768x564.png 768w" sizes="(max-width: 807px) 100vw, 807px" />								</a>
															</div>
				</div>
				<div class="elementor-element elementor-element-78c4bbc elementor-widget elementor-widget-text-editor" data-id="78c4bbc" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<ol><li value="15">Anschließend kann ausgewählt werden, mit welcher Komprimierungsmethode das Image verkleinert werden soll. Hier kann der Standard Wert <em>zip1</em> beibehalten werden. </li></ol>								</div>
				</div>
				<div class="elementor-element elementor-element-0ed4ec4 elementor-widget elementor-widget-image" data-id="0ed4ec4" data-element_type="widget" data-e-type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
																<a href="https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-15.png" data-elementor-open-lightbox="yes" data-elementor-lightbox-title="Clonezilla-Backup-15" data-e-action-hash="#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6MTE3OSwidXJsIjoiaHR0cHM6XC9cL3Rla2tpZW5pbmphLmRlXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIzXC8wNFwvQ2xvbmV6aWxsYS1CYWNrdXAtMTUucG5nIn0%3D">
							<img loading="lazy" decoding="async" width="805" height="595" src="https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-15.png" class="attachment-large size-large wp-image-1179" alt="Clonezilla Komprimierungsmethode des Backups" srcset="https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-15.png 805w, https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-15-300x222.png 300w, https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-15-768x568.png 768w" sizes="(max-width: 805px) 100vw, 805px" />								</a>
															</div>
				</div>
				<div class="elementor-element elementor-element-8e145cf elementor-widget elementor-widget-text-editor" data-id="8e145cf" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<ol><li value="16">In diesem Schritt kann das Dateisystem der Quelle überprüft werden. Hier kann ebenfalls die Option <em>-sfck Skip checking&#8230; </em>ausgewählt werden, da das Betriebssystem vor der Sicherung ordnungsgemäß funktioniert hat. </li></ol>								</div>
				</div>
				<div class="elementor-element elementor-element-00bf75f elementor-widget elementor-widget-image" data-id="00bf75f" data-element_type="widget" data-e-type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
																<a href="https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-16.png" data-elementor-open-lightbox="yes" data-elementor-lightbox-title="Clonezilla-Backup-16" data-e-action-hash="#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6MTE4MCwidXJsIjoiaHR0cHM6XC9cL3Rla2tpZW5pbmphLmRlXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIzXC8wNFwvQ2xvbmV6aWxsYS1CYWNrdXAtMTYucG5nIn0%3D">
							<img loading="lazy" decoding="async" width="807" height="597" src="https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-16.png" class="attachment-large size-large wp-image-1180" alt="Überprüfung des Dateisystems bevor des Backups" srcset="https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-16.png 807w, https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-16-300x222.png 300w, https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-16-768x568.png 768w" sizes="(max-width: 807px) 100vw, 807px" />								</a>
															</div>
				</div>
				<div class="elementor-element elementor-element-1cccd25 elementor-widget elementor-widget-text-editor" data-id="1cccd25" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<ol><li value="17">An diesem Punkt muss entschieden werden, ob das Backup verschlüsselt werden soll. In dem nachfolgenden Beispiel wird davon ausgegangen, dass sich keine sensiblen Daten auf dem System selbst befinden. Deshalb wird die Option <em>-senc Not to encrypt&#8230;</em> ausgewählt.</li></ol>								</div>
				</div>
				<div class="elementor-element elementor-element-2ebc9a5 elementor-widget elementor-widget-image" data-id="2ebc9a5" data-element_type="widget" data-e-type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
																<a href="https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-17.png" data-elementor-open-lightbox="yes" data-elementor-lightbox-title="Clonezilla-Backup-17" data-e-action-hash="#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6MTE4MSwidXJsIjoiaHR0cHM6XC9cL3Rla2tpZW5pbmphLmRlXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIzXC8wNFwvQ2xvbmV6aWxsYS1CYWNrdXAtMTcucG5nIn0%3D">
							<img loading="lazy" decoding="async" width="804" height="590" src="https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-17.png" class="attachment-large size-large wp-image-1181" alt="Auswahl ob das Image verschlüsselt werden soll" srcset="https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-17.png 804w, https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-17-300x220.png 300w, https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-17-768x564.png 768w" sizes="(max-width: 804px) 100vw, 804px" />								</a>
															</div>
				</div>
				<div class="elementor-element elementor-element-89ecbd9 elementor-widget elementor-widget-text-editor" data-id="89ecbd9" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<ol><li value="18">Die letzte Einstellungsmöglichkeit ist die Aktion, welche nach vollendeten Backup ausgeführt werden soll. Möchte man am Ende gefragt werden. so kann die Option <em>-p choose</em> ausgewählt werden. Bestätigt anschließend den grünen Text mit Enter. </li></ol>								</div>
				</div>
				<div class="elementor-element elementor-element-04b317e elementor-widget elementor-widget-image" data-id="04b317e" data-element_type="widget" data-e-type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
																<a href="https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-18.png" data-elementor-open-lightbox="yes" data-elementor-lightbox-title="Clonezilla-Backup-18" data-e-action-hash="#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6MTE4MiwidXJsIjoiaHR0cHM6XC9cL3Rla2tpZW5pbmphLmRlXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIzXC8wNFwvQ2xvbmV6aWxsYS1CYWNrdXAtMTgucG5nIn0%3D">
							<img loading="lazy" decoding="async" width="804" height="613" src="https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-18.png" class="attachment-large size-large wp-image-1182" alt="Aktion welche nach vollzogenem Backup ausgeführt werden soll" srcset="https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-18.png 804w, https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-18-300x229.png 300w, https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-18-768x586.png 768w" sizes="(max-width: 804px) 100vw, 804px" />								</a>
															</div>
				</div>
				<div class="elementor-element elementor-element-d880600 elementor-widget elementor-widget-text-editor" data-id="d880600" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<ol><li value="19">Danach wird eine Zusammenfassung der zu erstellenden Images angezeigt. Da eine Festplatte eines Betriebssystem typischerweise aus mehreren Partitionen besteht, werden auch mehrere Images erzeugt. Tippt hierbei ein <em>y</em> ein und bestätigt es mit Enter. Sofern im Schritt 3 kein anderes Keyboard Layout ausgewählt wurde, so muss auf der Tastatur der Buchstabe <em>z</em> gedrückt werden (aufgrund des US-Layouts).</li></ol>								</div>
				</div>
				<div class="elementor-element elementor-element-4e547dc elementor-widget elementor-widget-image" data-id="4e547dc" data-element_type="widget" data-e-type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
																<a href="https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-19.png" data-elementor-open-lightbox="yes" data-elementor-lightbox-title="Clonezilla-Backup-19" data-e-action-hash="#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6MTE4MywidXJsIjoiaHR0cHM6XC9cL3Rla2tpZW5pbmphLmRlXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIzXC8wNFwvQ2xvbmV6aWxsYS1CYWNrdXAtMTkucG5nIn0%3D">
							<img loading="lazy" decoding="async" width="813" height="618" src="https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-19.png" class="attachment-large size-large wp-image-1183" alt="Bestätigung der Backupeinstellungen" srcset="https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-19.png 813w, https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-19-300x228.png 300w, https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-19-768x584.png 768w" sizes="(max-width: 813px) 100vw, 813px" />								</a>
															</div>
				</div>
				<div class="elementor-element elementor-element-7515af7 elementor-widget elementor-widget-text-editor" data-id="7515af7" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<ol><li value="20">Nachdem das Backup erstellt worden ist, bestätigt den Text mit Enter.</li></ol>								</div>
				</div>
				<div class="elementor-element elementor-element-ee3a6a5 elementor-widget elementor-widget-image" data-id="ee3a6a5" data-element_type="widget" data-e-type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
																<a href="https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-20.png" data-elementor-open-lightbox="yes" data-elementor-lightbox-title="Clonezilla-Backup-20" data-e-action-hash="#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6MTE4NCwidXJsIjoiaHR0cHM6XC9cL3Rla2tpZW5pbmphLmRlXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIzXC8wNFwvQ2xvbmV6aWxsYS1CYWNrdXAtMjAucG5nIn0%3D">
							<img loading="lazy" decoding="async" width="814" height="610" src="https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-20.png" class="attachment-large size-large wp-image-1184" alt="Backupende bestätigen" srcset="https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-20.png 814w, https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-20-300x225.png 300w, https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-20-768x576.png 768w" sizes="(max-width: 814px) 100vw, 814px" />								</a>
															</div>
				</div>
				<div class="elementor-element elementor-element-c427899 elementor-widget elementor-widget-text-editor" data-id="c427899" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<ol><li value="21">Entfernt nun den USB-Stick wo Clonezilla drauf installiert ist und wählt die Option <em>reboot</em> aus. Der Rechner startet neu. </li></ol>								</div>
				</div>
				<div class="elementor-element elementor-element-f4507d4 elementor-widget elementor-widget-image" data-id="f4507d4" data-element_type="widget" data-e-type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
																<a href="https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-23.png" data-elementor-open-lightbox="yes" data-elementor-lightbox-title="Clonezilla-Backup-23" data-e-action-hash="#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6MTE4NywidXJsIjoiaHR0cHM6XC9cL3Rla2tpZW5pbmphLmRlXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIzXC8wNFwvQ2xvbmV6aWxsYS1CYWNrdXAtMjMucG5nIn0%3D">
							<img loading="lazy" decoding="async" width="802" height="591" src="https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-23.png" class="attachment-large size-large wp-image-1187" alt="Aktion auswählen welche durchgeführt werden soll" srcset="https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-23.png 802w, https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-23-300x221.png 300w, https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Backup-23-768x566.png 768w" sizes="(max-width: 802px) 100vw, 802px" />								</a>
															</div>
				</div>
				<div class="elementor-element elementor-element-4911994 elementor-widget elementor-widget-text-editor" data-id="4911994" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Herzlichen Glückwunsch, damit habt ihr ein Image-Backup erstellt. Der Rechner kann nun wie gewohnt genutzt werden. Im zweiten Teil dieses Artikels werde ich euch zeigen, wie man ein Image-Backup wiederherstellen kann.</p>								</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-2f408d2 e-con-full e-flex e-con e-parent" data-id="2f408d2" data-element_type="container" data-e-type="container">
				<div class="elementor-element elementor-element-adf7388 elementor-widget elementor-widget-heading" data-id="adf7388" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h3 class="elementor-heading-title elementor-size-default">Backup wiederherstellen</h3>				</div>
				</div>
				<div class="elementor-element elementor-element-58db05c elementor-widget elementor-widget-text-editor" data-id="58db05c" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Falls ein Rechner abstürzt oder es zu unvorhersehbaren Fehlern bei einem Update kommt, ist ein Backup essenziell und kann viel Arbeit bei der Wiederherstellung sparen. In dem nachfolgenden Abschnitt zeige ich euch Schritt für Schritt wie man ein Backup wiederherstellen kann.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-88c75d1 elementor-widget elementor-widget-text-editor" data-id="88c75d1" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<ol><li value="1">Wiederholt die Schritte aus der vorherigen Anleitung 1 bis 10. Wählt nun den Punkt <em>Expert</em> aus. Anschließend erscheint die Auswahl, was getan werden soll. Hier wird der Punkt <em>restoredisk</em> ausgewählt. </li></ol>								</div>
				</div>
				<div class="elementor-element elementor-element-187c92f elementor-widget elementor-widget-image" data-id="187c92f" data-element_type="widget" data-e-type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
																<a href="https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Restore-1.png" data-elementor-open-lightbox="yes" data-elementor-lightbox-title="Clonezilla-Restore-1" data-e-action-hash="#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6MTE4OCwidXJsIjoiaHR0cHM6XC9cL3Rla2tpZW5pbmphLmRlXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIzXC8wNFwvQ2xvbmV6aWxsYS1SZXN0b3JlLTEucG5nIn0%3D">
							<img loading="lazy" decoding="async" width="804" height="598" src="https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Restore-1.png" class="attachment-large size-large wp-image-1188" alt="Auswahl der Wiederherstellungsmethode" srcset="https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Restore-1.png 804w, https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Restore-1-300x223.png 300w, https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Restore-1-768x571.png 768w" sizes="(max-width: 804px) 100vw, 804px" />								</a>
															</div>
				</div>
				<div class="elementor-element elementor-element-791f01c elementor-widget elementor-widget-text-editor" data-id="791f01c" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<ol><li value="2">Clonezilla zeigt nun alle verfügbaren Images an, welche auf den angeschlossenen Speichern zur Verfügung stehen. Wählt das zu wiederherstellende Image aus und bestätigt mit Enter.</li></ol>								</div>
				</div>
				<div class="elementor-element elementor-element-b1e7b81 elementor-widget elementor-widget-image" data-id="b1e7b81" data-element_type="widget" data-e-type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
																<a href="https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Restore-2.png" data-elementor-open-lightbox="yes" data-elementor-lightbox-title="Clonezilla-Restore-2" data-e-action-hash="#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6MTE4OSwidXJsIjoiaHR0cHM6XC9cL3Rla2tpZW5pbmphLmRlXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIzXC8wNFwvQ2xvbmV6aWxsYS1SZXN0b3JlLTIucG5nIn0%3D">
							<img loading="lazy" decoding="async" width="806" height="598" src="https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Restore-2.png" class="attachment-large size-large wp-image-1189" alt="Auswahl eines Backups" srcset="https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Restore-2.png 806w, https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Restore-2-300x223.png 300w, https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Restore-2-768x570.png 768w" sizes="(max-width: 806px) 100vw, 806px" />								</a>
															</div>
				</div>
				<div class="elementor-element elementor-element-41abced elementor-widget elementor-widget-text-editor" data-id="41abced" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<ol><li value="3">Anschließend muss die Festplatte ausgewählt werden, auf welche das Image geschrieben werden soll. <br /><strong>Achtung</strong>: Es werden alle Daten auf der ausgewählten Festplatte gelöscht.</li></ol>								</div>
				</div>
				<div class="elementor-element elementor-element-27d067f elementor-widget elementor-widget-image" data-id="27d067f" data-element_type="widget" data-e-type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
																<a href="https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Restore-3.png" data-elementor-open-lightbox="yes" data-elementor-lightbox-title="Clonezilla-Restore-3" data-e-action-hash="#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6MTE5MCwidXJsIjoiaHR0cHM6XC9cL3Rla2tpZW5pbmphLmRlXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIzXC8wNFwvQ2xvbmV6aWxsYS1SZXN0b3JlLTMucG5nIn0%3D">
							<img loading="lazy" decoding="async" width="809" height="598" src="https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Restore-3.png" class="attachment-large size-large wp-image-1190" alt="Auswahl der zu überschreibenden Festplatte" srcset="https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Restore-3.png 809w, https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Restore-3-300x222.png 300w, https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Restore-3-768x568.png 768w" sizes="(max-width: 809px) 100vw, 809px" />								</a>
															</div>
				</div>
				<div class="elementor-element elementor-element-8cff29e elementor-widget elementor-widget-text-editor" data-id="8cff29e" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<ol><li value="4">Hier können zusätzliche Parameter für das Backup eingestellt werden. Standardmäßig können die Optionen so beibehalten werden und mit Enter bestätigt werden.</li></ol>								</div>
				</div>
				<div class="elementor-element elementor-element-acdfbe9 elementor-widget elementor-widget-image" data-id="acdfbe9" data-element_type="widget" data-e-type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
																<a href="https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Restore-4.png" data-elementor-open-lightbox="yes" data-elementor-lightbox-title="Clonezilla-Restore-4" data-e-action-hash="#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6MTE5MSwidXJsIjoiaHR0cHM6XC9cL3Rla2tpZW5pbmphLmRlXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIzXC8wNFwvQ2xvbmV6aWxsYS1SZXN0b3JlLTQucG5nIn0%3D">
							<img loading="lazy" decoding="async" width="805" height="577" src="https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Restore-4.png" class="attachment-large size-large wp-image-1191" alt="Experteneinstellungen bei der Wiederherstellung" srcset="https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Restore-4.png 805w, https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Restore-4-300x215.png 300w, https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Restore-4-768x550.png 768w" sizes="(max-width: 805px) 100vw, 805px" />								</a>
															</div>
				</div>
				<div class="elementor-element elementor-element-347a57a elementor-widget elementor-widget-text-editor" data-id="347a57a" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<ol><li value="5">Anschließend die Option <strong>-k0</strong> auswählen, damit die Partitionstabellen von dem Image wiederhergestellt wird. </li></ol>								</div>
				</div>
				<div class="elementor-element elementor-element-962700a elementor-widget elementor-widget-image" data-id="962700a" data-element_type="widget" data-e-type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
																<a href="https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Restore-5.png" data-elementor-open-lightbox="yes" data-elementor-lightbox-title="Clonezilla-Restore-5" data-e-action-hash="#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6MTE5MiwidXJsIjoiaHR0cHM6XC9cL3Rla2tpZW5pbmphLmRlXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIzXC8wNFwvQ2xvbmV6aWxsYS1SZXN0b3JlLTUucG5nIn0%3D">
							<img loading="lazy" decoding="async" width="805" height="602" src="https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Restore-5.png" class="attachment-large size-large wp-image-1192" alt="Bestätigung der Wiederherstellung" srcset="https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Restore-5.png 805w, https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Restore-5-300x224.png 300w, https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Restore-5-768x574.png 768w" sizes="(max-width: 805px) 100vw, 805px" />								</a>
															</div>
				</div>
				<div class="elementor-element elementor-element-62962ce elementor-widget elementor-widget-text-editor" data-id="62962ce" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<ol><li value="6">Im nächsten Schritt wird gefragt, ob das Image vor der Wiederherstellung, überprüft werden soll. Diese Option empfehle ich, da dadurch keine fehlerhaften Backups wiederhergestellt werden können.</li></ol>								</div>
				</div>
				<div class="elementor-element elementor-element-b523186 elementor-widget elementor-widget-image" data-id="b523186" data-element_type="widget" data-e-type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
																<a href="https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Restore-6.png" data-elementor-open-lightbox="yes" data-elementor-lightbox-title="Clonezilla-Restore-6" data-e-action-hash="#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6MTE5MywidXJsIjoiaHR0cHM6XC9cL3Rla2tpZW5pbmphLmRlXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIzXC8wNFwvQ2xvbmV6aWxsYS1SZXN0b3JlLTYucG5nIn0%3D">
							<img loading="lazy" decoding="async" width="806" height="596" src="https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Restore-6.png" class="attachment-large size-large wp-image-1193" alt="Bevor das Image wiederhergestellt wird, wird dies überprüft" srcset="https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Restore-6.png 806w, https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Restore-6-300x222.png 300w, https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Restore-6-768x568.png 768w" sizes="(max-width: 806px) 100vw, 806px" />								</a>
															</div>
				</div>
				<div class="elementor-element elementor-element-fff8df6 elementor-widget elementor-widget-text-editor" data-id="fff8df6" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<ol><li value="7">Die letzte Einstellungsmöglichkeit ist wieder die Option, was nach der Wiederherstellung ausgeführt werden soll. Hier wird die Option <em>-p choose</em> ausgewählt. Anschließend wird der grüne Text mit Enter bestätigt.</li></ol>								</div>
				</div>
				<div class="elementor-element elementor-element-7bc8b37 elementor-widget elementor-widget-image" data-id="7bc8b37" data-element_type="widget" data-e-type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
																<a href="https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Restore-7.png" data-elementor-open-lightbox="yes" data-elementor-lightbox-title="Clonezilla-Restore-7" data-e-action-hash="#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6MTE5NCwidXJsIjoiaHR0cHM6XC9cL3Rla2tpZW5pbmphLmRlXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIzXC8wNFwvQ2xvbmV6aWxsYS1SZXN0b3JlLTcucG5nIn0%3D">
							<img loading="lazy" decoding="async" width="808" height="606" src="https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Restore-7.png" class="attachment-large size-large wp-image-1194" alt="Aktion nach vollendeter Wiederherstellung auswählen" srcset="https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Restore-7.png 808w, https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Restore-7-300x225.png 300w, https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Restore-7-768x576.png 768w" sizes="(max-width: 808px) 100vw, 808px" />								</a>
															</div>
				</div>
				<div class="elementor-element elementor-element-4879731 elementor-widget elementor-widget-text-editor" data-id="4879731" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<ol><li value="8">Hier erfolgt nochmals die Warnung, dass alle Daten auf der ausgewählten Festplatte gelöscht werden. Bestätigt den Vorgang mit der Eingabe eines <em>y</em> und Enter.</li></ol>								</div>
				</div>
				<div class="elementor-element elementor-element-1f17fa3 elementor-widget elementor-widget-image" data-id="1f17fa3" data-element_type="widget" data-e-type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
																<a href="https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Restore-8.png" data-elementor-open-lightbox="yes" data-elementor-lightbox-title="Clonezilla-Restore-8" data-e-action-hash="#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6MTE5NSwidXJsIjoiaHR0cHM6XC9cL3Rla2tpZW5pbmphLmRlXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIzXC8wNFwvQ2xvbmV6aWxsYS1SZXN0b3JlLTgucG5nIn0%3D">
							<img loading="lazy" decoding="async" width="827" height="611" src="https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Restore-8.png" class="attachment-large size-large wp-image-1195" alt="Bestätigung der Wiederherstellung" srcset="https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Restore-8.png 827w, https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Restore-8-300x222.png 300w, https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Restore-8-768x567.png 768w" sizes="(max-width: 827px) 100vw, 827px" />								</a>
															</div>
				</div>
				<div class="elementor-element elementor-element-5e7ae4e elementor-widget elementor-widget-text-editor" data-id="5e7ae4e" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<ol><li value="9">Nach der Wiederherstellung bestätigt den Text mit Enter.</li></ol>								</div>
				</div>
				<div class="elementor-element elementor-element-2ea4885 elementor-widget elementor-widget-image" data-id="2ea4885" data-element_type="widget" data-e-type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
																<a href="https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Restore-9.png" data-elementor-open-lightbox="yes" data-elementor-lightbox-title="Clonezilla-Restore-9" data-e-action-hash="#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6MTE5NiwidXJsIjoiaHR0cHM6XC9cL3Rla2tpZW5pbmphLmRlXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIzXC8wNFwvQ2xvbmV6aWxsYS1SZXN0b3JlLTkucG5nIn0%3D">
							<img loading="lazy" decoding="async" width="830" height="602" src="https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Restore-9.png" class="attachment-large size-large wp-image-1196" alt="" srcset="https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Restore-9.png 830w, https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Restore-9-300x218.png 300w, https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Restore-9-768x557.png 768w" sizes="(max-width: 830px) 100vw, 830px" />								</a>
															</div>
				</div>
				<div class="elementor-element elementor-element-4fd6cda elementor-widget elementor-widget-text-editor" data-id="4fd6cda" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<ol><li value="10">Zum Schluss wird der USB-Stick mit dem installierten Clonezilla entfernt und der Rechner neugestartet.</li></ol>								</div>
				</div>
				<div class="elementor-element elementor-element-3fb8f72 elementor-widget elementor-widget-image" data-id="3fb8f72" data-element_type="widget" data-e-type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
																<a href="https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Restore-10.png" data-elementor-open-lightbox="yes" data-elementor-lightbox-title="Clonezilla-Restore-10" data-e-action-hash="#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6MTE5NywidXJsIjoiaHR0cHM6XC9cL3Rla2tpZW5pbmphLmRlXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIzXC8wNFwvQ2xvbmV6aWxsYS1SZXN0b3JlLTEwLnBuZyJ9">
							<img loading="lazy" decoding="async" width="804" height="593" src="https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Restore-10.png" class="attachment-large size-large wp-image-1197" alt="" srcset="https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Restore-10.png 804w, https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Restore-10-300x221.png 300w, https://tekkieninja.de/wp-content/uploads/2023/04/Clonezilla-Restore-10-768x566.png 768w" sizes="(max-width: 804px) 100vw, 804px" />								</a>
															</div>
				</div>
				<div class="elementor-element elementor-element-24fce2d elementor-widget elementor-widget-text-editor" data-id="24fce2d" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Herzlichen Glückwünsch, du hast erfolgreich ein Backup wiederhergestellt.</p>								</div>
				</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-999b17d e-con-full e-flex e-con e-parent" data-id="999b17d" data-element_type="container" data-e-type="container">
				<div class="elementor-element elementor-element-2b1094d elementor-widget elementor-widget-text-editor" data-id="2b1094d" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Ich hoffe mein Beitrag zu dem Thema ein Image-Backup erstellen und wiederherstellen hat dir gefallen. Hast du Anmerkungen oder Ideen, dann schreibe doch gerne einen Kommentar.</p>								</div>
				</div>
				</div>
				</div>
		<p>Der Beitrag <a href="https://tekkieninja.de/image-backup-erstellen-und-wiederherstellen/">Backup erstellen und wiederherstellen</a> erschien zuerst auf <a href="https://tekkieninja.de">TekkieNinja</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://tekkieninja.de/image-backup-erstellen-und-wiederherstellen/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Festplatte unter Ubuntu</title>
		<link>https://tekkieninja.de/festplatte-unter-ubuntu/</link>
					<comments>https://tekkieninja.de/festplatte-unter-ubuntu/#respond</comments>
		
		<dc:creator><![CDATA[Florian Keßler]]></dc:creator>
		<pubDate>Wed, 26 Apr 2023 13:53:42 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<guid isPermaLink="false">https://tekkieninja.de/?p=1132</guid>

					<description><![CDATA[<p>In diesem Artikel wird eine Schritt-für-Schritt-Anleitung gegeben, wie eine Festplatte unter Ubuntu verwenden kann. Es wird besprochen, wie die Festplatte eingehängt und formatiert werden kann, um sie in das System zu integrieren. Darüber hinaus wird diskutiert, wie man das dauerhafte Mounten der Festplatte einrichtet, so dass sie beim Start des Systems automatisch verfügbar ist. Wenn [&#8230;]</p>
<p>Der Beitrag <a href="https://tekkieninja.de/festplatte-unter-ubuntu/">Festplatte unter Ubuntu</a> erschien zuerst auf <a href="https://tekkieninja.de">TekkieNinja</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="1132" class="elementor elementor-1132">
				<div class="elementor-element elementor-element-def648a e-con-full e-flex e-con e-parent" data-id="def648a" data-element_type="container" data-e-type="container">
				<div class="elementor-element elementor-element-2f52126 elementor-widget elementor-widget-text-editor" data-id="2f52126" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<div class="flex flex-grow flex-col gap-3"><div class="min-h-[20px] flex flex-col items-start gap-4 whitespace-pre-wrap break-words"><div class="markdown prose w-full break-words dark:prose-invert light"><p>In diesem Artikel wird eine Schritt-für-Schritt-Anleitung gegeben, wie eine Festplatte unter Ubuntu verwenden kann. Es wird besprochen, wie die Festplatte eingehängt und formatiert werden kann, um sie in das System zu integrieren. Darüber hinaus wird diskutiert, wie man das dauerhafte Mounten der Festplatte einrichtet, so dass sie beim Start des Systems automatisch verfügbar ist. Wenn man diese Schritte befolgt, sollte man in der Lage sein, eine neue Festplatte unter Ubuntu erfolgreich zu verwenden.</p></div></div></div>								</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-9ba5ad6 e-con-full e-flex e-con e-parent" data-id="9ba5ad6" data-element_type="container" data-e-type="container">
				<div class="elementor-element elementor-element-24ee6b1 elementor-widget elementor-widget-heading" data-id="24ee6b1" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h3 class="elementor-heading-title elementor-size-default">Partitionieren und Formatieren einer (neuen) Festplatte</h3>				</div>
				</div>
				<div class="elementor-element elementor-element-e0011bb elementor-widget elementor-widget-text-editor" data-id="e0011bb" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<div class="flex flex-grow flex-col gap-3"><div class="min-h-[20px] flex flex-col items-start gap-4 whitespace-pre-wrap break-words"><div class="markdown prose w-full break-words dark:prose-invert light"><div class="flex flex-grow flex-col gap-3"><div class="min-h-[20px] flex flex-col items-start gap-4 whitespace-pre-wrap break-words"><div class="markdown prose w-full break-words dark:prose-invert light"><p>Um herauszufinden, welche Laufwerke bereits eingehängt sind, kann man folgenden Befehl verwenden:</p><p style="padding-left: 40px;"><code>lsblk</code></p><p>Die Ausgabe kann wie folgt aussehen:</p></div></div></div></div></div></div>								</div>
				</div>
				<div class="elementor-element elementor-element-cf48064 elementor-widget elementor-widget-image" data-id="cf48064" data-element_type="widget" data-e-type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
																<a href="https://tekkieninja.de/wp-content/uploads/2023/04/lsblk-screenshot.png" data-elementor-open-lightbox="yes" data-elementor-lightbox-title="lsblk-screenshot" data-e-action-hash="#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6MTEzOCwidXJsIjoiaHR0cHM6XC9cL3Rla2tpZW5pbmphLmRlXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIzXC8wNFwvbHNibGstc2NyZWVuc2hvdC5wbmcifQ%3D%3D">
							<img loading="lazy" decoding="async" width="300" height="112" src="https://tekkieninja.de/wp-content/uploads/2023/04/lsblk-screenshot-300x112.png" class="attachment-medium size-medium wp-image-1138" alt="Screenshot einer beispielhaften blkid Ausgabe" srcset="https://tekkieninja.de/wp-content/uploads/2023/04/lsblk-screenshot-300x112.png 300w, https://tekkieninja.de/wp-content/uploads/2023/04/lsblk-screenshot.png 566w" sizes="(max-width: 300px) 100vw, 300px" />								</a>
															</div>
				</div>
				<div class="elementor-element elementor-element-a12fe55 elementor-widget elementor-widget-text-editor" data-id="a12fe55" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Die Festplatten sind in der Regel mit &#8222;sdx&#8220; bezeichnet, wobei das &#8222;x&#8220; für einen anderen Buchstaben steht, z.B. &#8222;sda&#8220; oder &#8222;sdc&#8220;. Da neue Festplatten in der Regel keine Partitionen haben, muss man eine neue Partition erstellen. Dies kann über die Textoberfläche mit folgendem Befehl erstellen:</p><p style="padding-left: 40px;"><code>sudo cfdisk /dev/sdX</code></p><p>Das &#8222;X&#8220; muss durch die entsprechende Laufwerksbezeichnung ersetzt werden. Anschließend öffnet sich die Benutzeroberfläche, in der man eine neue Partition erstellen und angeben kann, wie groß sie sein soll. Nachfolgend eine mögliche Anzeige der Textoberfläche.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-b84f090 elementor-widget elementor-widget-image" data-id="b84f090" data-element_type="widget" data-e-type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
																<a href="https://tekkieninja.de/wp-content/uploads/2023/04/cfdisk-screenshot.png" data-elementor-open-lightbox="yes" data-elementor-lightbox-title="cfdisk-screenshot" data-e-action-hash="#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6MTEzOSwidXJsIjoiaHR0cHM6XC9cL3Rla2tpZW5pbmphLmRlXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIzXC8wNFwvY2ZkaXNrLXNjcmVlbnNob3QucG5nIn0%3D">
							<img loading="lazy" decoding="async" width="300" height="211" src="https://tekkieninja.de/wp-content/uploads/2023/04/cfdisk-screenshot-300x211.png" class="attachment-medium size-medium wp-image-1139" alt="" srcset="https://tekkieninja.de/wp-content/uploads/2023/04/cfdisk-screenshot-300x211.png 300w, https://tekkieninja.de/wp-content/uploads/2023/04/cfdisk-screenshot-768x541.png 768w, https://tekkieninja.de/wp-content/uploads/2023/04/cfdisk-screenshot.png 879w" sizes="(max-width: 300px) 100vw, 300px" />								</a>
															</div>
				</div>
				<div class="elementor-element elementor-element-05f9053 elementor-widget elementor-widget-text-editor" data-id="05f9053" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Wenn man nur eine Partition möchte, die die gesamte Größe der Festplatte nutzt, kann man nachdem man &#8222;New&#8220; ausgewählt hat, einfach Enter drücken. Anschließend wird noch gefragt, ob die Partition &#8222;primary&#8220; oder &#8222;extended&#8220; sein soll. Hier wird die Standardauswahl &#8222;primary&#8220; erneut mit Enter bestätigt. Nachdem die Partition erstellt wurde, muss man noch die Partitontabelle schreiben, was über die Auswahl des Befehls &#8222;Write&#8220; erfolgt.</p><p>Anschließend kann man die Partition nutzen, indem man sie in das gewünschte Dateisystem formatiert. Dies kann z.B. für das btrfs Filesystem mit dem Befehl</p><p style="padding-left: 40px;"><code>sudo mkfs.btrfs /dev/sdX1</code></p><p>erfolgen, wobei das &#8222;X&#8220; wieder durch die entsprechende Laufwerksbezeichnung ersetzt wird. Die &#8222;1&#8220; hinter dem &#8222;X&#8220; repräsentiert die Partition und da nur eine Partition erstellt wird, ist dies die 1. Eine Übersicht über Dateisysteme unter Linux ist unter folgendem <a href="https://wiki.ubuntuusers.de/Dateisystem/">Link</a> zu finden.</p>								</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-f0951e5 e-con-full e-flex e-con e-parent" data-id="f0951e5" data-element_type="container" data-e-type="container">
				<div class="elementor-element elementor-element-67fb60f elementor-widget elementor-widget-heading" data-id="67fb60f" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h3 class="elementor-heading-title elementor-size-default">Festplatte unter Ubuntu mounten</h3>				</div>
				</div>
				<div class="elementor-element elementor-element-85980a8 elementor-widget elementor-widget-heading" data-id="85980a8" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h4 class="elementor-heading-title elementor-size-default">Temporär</h4>				</div>
				</div>
				<div class="elementor-element elementor-element-276fa2c elementor-widget elementor-widget-text-editor" data-id="276fa2c" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<div class="flex flex-grow flex-col gap-3"><div class="min-h-[20px] flex flex-col items-start gap-4 whitespace-pre-wrap break-words"><div class="markdown prose w-full break-words dark:prose-invert light"><p>Zur vorübergehenden Einbindung der Festplatte kann folgender Befehl genutzt werden:</p><p style="padding-left: 40px;"><code>sudo mount /dev/sdx /Zielverzeichnis</code></p><p>Zum Auswerfen der Festplatte wird der folgende Befehl verwendet:</p><p style="padding-left: 40px;"><code>sudo mount -l /dev/sdx</code></p></div></div></div>								</div>
				</div>
				<div class="elementor-element elementor-element-de70ab1 elementor-widget elementor-widget-heading" data-id="de70ab1" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h4 class="elementor-heading-title elementor-size-default">Permanent</h4>				</div>
				</div>
				<div class="elementor-element elementor-element-e682ab8 elementor-widget elementor-widget-text-editor" data-id="e682ab8" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Um eine Festplatte permanent zu mounten, benötigt man eine sogenannte UUID. Diese kann mit dem Befehl</p><p style="padding-left: 40px;"><code>sudo blkid</code></p><p>herausgefunden werden. Um die UUID später beim Mounten zu nutzen, muss die fstab-Datei bearbeitet werden. Mit folgendem Befehl kann die Datei geöffnet werden:</p><p style="padding-left: 40px;"><code>sudo nano /etc/fstab</code></p><p>Für das Beispiel mit dem btrfs-Dateisystem kann folgende Zeile eingetragen werden:</p><p style="padding-left: 40px;"><code>UUID=ersetzen        /Zielverzeichnis btrfs defaults,compress,autodefrag,inode_cache 0 1</code></p><p>Anschließend muss die Datei gespeichert werden und mit nachfolgenden Befehl überprüft werden, ob alles korrekt geklappt hat:</p><p style="padding-left: 40px;"><code>sudo mount -a</code></p><p><strong>Achtung:</strong> Wenn das Medium formatiert wird, ändert sich die UUID, so dass der Eintrag in der fstab-Datei erneut gepflegt werden muss. Es ist zu beachten, dass im Falle eines Fehlers beim Mounten oder wenn die Festplatte im Verzeichnis nicht richtig angezeigt wird, der Boot-Vorgang möglicherweise gestört wird.</p>								</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-af1017b e-con-full e-flex e-con e-parent" data-id="af1017b" data-element_type="container" data-e-type="container">
				<div class="elementor-element elementor-element-fc9389c elementor-widget elementor-widget-text-editor" data-id="fc9389c" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Dieser Artikel hat die Schritte zum Formatieren, Partitionieren und Einhängen einer Festplatte unter Ubuntu behandelt. Wenn es Fragen gibt oder spezielle Anforderungen, lass es mich unter den Kommentar wissen oder kontaktiere mich <a href="https://tekkieninja.de/kontaktformular/">hier</a>.</p>								</div>
				</div>
				</div>
				</div>
		<p>Der Beitrag <a href="https://tekkieninja.de/festplatte-unter-ubuntu/">Festplatte unter Ubuntu</a> erschien zuerst auf <a href="https://tekkieninja.de">TekkieNinja</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://tekkieninja.de/festplatte-unter-ubuntu/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Docker (-Compose) installieren</title>
		<link>https://tekkieninja.de/docker-compose-installieren/</link>
					<comments>https://tekkieninja.de/docker-compose-installieren/#respond</comments>
		
		<dc:creator><![CDATA[Florian Keßler]]></dc:creator>
		<pubDate>Sun, 23 Apr 2023 14:00:00 +0000</pubDate>
				<category><![CDATA[Docker]]></category>
		<category><![CDATA[Linux]]></category>
		<guid isPermaLink="false">https://tekkieninja.de/?p=1115</guid>

					<description><![CDATA[<p>In dem folgenden Artikel werde ich Schritt für Schritt erklären wie man Docker (-Compose) installieren kann und was es zu Beachten gilt. Bei der Recherche wie man Docker installiert fällt auf, dass oft von Docker-ce oder Docker-io die Rede ist. Beide Varianten beinhalten dasselbe Docker, aber auf unterschiedliche Weise. Docker-io geht nach dem Ansatz von [&#8230;]</p>
<p>Der Beitrag <a href="https://tekkieninja.de/docker-compose-installieren/">Docker (-Compose) installieren</a> erschien zuerst auf <a href="https://tekkieninja.de">TekkieNinja</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="1115" class="elementor elementor-1115">
				<div class="elementor-element elementor-element-57b9da2 e-con-full e-flex e-con e-parent" data-id="57b9da2" data-element_type="container" data-e-type="container">
				<div class="elementor-element elementor-element-c230ac3 elementor-widget elementor-widget-text-editor" data-id="c230ac3" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<div class="flex flex-grow flex-col gap-3"><div class="min-h-[20px] flex flex-col items-start gap-4 whitespace-pre-wrap"><div class="markdown prose w-full break-words dark:prose-invert light"><p>In dem folgenden Artikel werde ich Schritt für Schritt erklären wie man Docker (-Compose) installieren kann und was es zu Beachten gilt.</p><p>Bei der Recherche wie man <a href="https://tekkieninja.de/was-ist-docker/">Docker</a> installiert fällt auf, dass oft von Docker-ce oder Docker-io die Rede ist. Beide Varianten beinhalten dasselbe Docker, aber auf unterschiedliche Weise. Docker-io geht nach dem Ansatz von Ubuntu/Debian und hat Paketabhängigkeiten, die separat installiert und aktualisiert werden können. Docker-ce hingegen lädt alle Abhängigkeiten separat herunter und enthält somit separate Bibliotheken. Im Folgenden werde ich beide Varianten der Installation von Docker zeigen, empfehle aber die Docker-io Version.</p></div></div></div>								</div>
				</div>
				<div class="elementor-element elementor-element-2ca7b7b elementor-widget elementor-widget-heading" data-id="2ca7b7b" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h3 class="elementor-heading-title elementor-size-default">Docker-io</h3>				</div>
				</div>
				<div class="elementor-element elementor-element-c42ef2b elementor-widget elementor-widget-text-editor" data-id="c42ef2b" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Alte Docker Versionen können mit folgendem Befehl deinstalliert werden:</p><p style="padding-left: 40px;"><code>sudo apt-get remove docker docker-engine docker.io</code></p><p>Zunächst müssen die Paketlisten aktualisiert werden:</p><p style="padding-left: 40px;"><code>sudo apt-get update</code></p><p>Mit folgendem Befehl kann man Docker installieren:</p><p style="padding-left: 40px;"><code>sudo apt install docker.io<br /></code></p><p>Nach erfolgreicher Installation starten wir den Docker Daemon und tragen ihn in den Autostart ein, sodass Docker bei jedem Systemstart automatisch gestartet wird:</p><p style="padding-left: 40px;"><code>sudo systemctl start docker</code><br /><code>sudo systemctl enable docker</code></p><p>Um zu überprüfen, ob Docker erfolgreich installiert wurde, kann folgender Befehl ausgeführt werden:</p><p style="padding-left: 40px;"><code>docker version</code></p>								</div>
				</div>
				<div class="elementor-element elementor-element-dd0683b elementor-widget elementor-widget-heading" data-id="dd0683b" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h3 class="elementor-heading-title elementor-size-default">Docker-ce</h3>				</div>
				</div>
				<div class="elementor-element elementor-element-fce543b elementor-widget elementor-widget-text-editor" data-id="fce543b" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Analog zu Docker-io  müssen zunächst die Paketlisten aktualisiert werden:</p><p style="padding-left: 40px;"><code>sudo apt-get update</code></p><p>Als nächstes werden ein paar Voraussetzungen installiert, damit apt Pakete über HTTPS verwenden kann:</p><p style="padding-left: 40px;"><code><i>sudo apt-get install apt-transport-https ca-certificates curl software-properties-common gnupg-agent</i></code></p><p>Anschließend wird der GPG-Schlüssel für das offizielle Docker-Repository dem System hinzugefügt:</p><p style="padding-left: 40px;"><code><i>curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -</i></code></p><p>Danach kann das Docker-Repository zu den APT Quellen hinzugefügt werden. Allerdings muss hier der grün markierte Teil durch die aktuell installierte Ubuntu Version ausgetauscht werden:</p><p style="padding-left: 40px;"><code><i>sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu <span style="color: #1bae70;">jammy </span>stable"</i></code></p><ul><li>Ubuntu 18.04 == bionic</li><li>Ubuntu 20.04 == focal</li><li>Ubuntu 22.04 == jammy</li></ul><p>Danach müssen die Paketquellen erneut aktualisiert werden:</p><p style="padding-left: 40px;"><code>sudo apt-get update</code></p><p>Nach der Aktualisierung der Quellen kann Docker-ce installiert werden:</p><p style="padding-left: 40px;"><code><i>sudo apt-get install docker-ce</i></code></p><p>Um zu überprüfen, ob Docker erfolgreich installiert wurde, kann folgender Befehl ausgeführt werden:</p><p style="padding-left: 40px;"><code>docker version</code></p>								</div>
				</div>
				<div class="elementor-element elementor-element-e9ab4df elementor-widget elementor-widget-heading" data-id="e9ab4df" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h3 class="elementor-heading-title elementor-size-default">Docker Compose installieren</h3>				</div>
				</div>
				<div class="elementor-element elementor-element-1511ff1 elementor-widget elementor-widget-text-editor" data-id="1511ff1" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Bevor Docker Compose installiert werden kann, muss die letzte stabile Version ermitttelt werden. Die unterschiedlichen Versionen können unter der <a href="https://github.com/docker/compose/releases">Versionswebsite</a> gefunden werden.</p><p>Nachfolgend wird mit der Version <span class="f1 text-bold d-inline mr-3" data-view-component="true"><a class="Link--primary" href="https://github.com/docker/compose/releases/tag/v2.17.3" data-view-component="true" data-turbo-frame="repo-content-turbo-frame">v2.17.3</a></span> gearbeitet. Sollte eine andere Version installiert werden, so muss nachfolgend ausschließlich die Versionsnummer ausgetauscht werden:</p><p style="padding-left: 40px;"><code>sudo curl -L "https://github.com/docker/compose/releases/download/v2.17.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose</code></p><p>Mit diesem Befehl wird die gewünschte Docker Compose Version heruntergeladen. Um die Dateien ausführbar zu machen, wird folgender Befehl verwendet:</p><p style="padding-left: 40px;"><code>sudo chmod +x /usr/local/bin/docker-compose</code></p><p>Eine erfolgreiche Installation von Docker Compose kann wie folgt überprüft werden:</p><p style="padding-left: 40px;"><code>docker-compose --version</code></p><p>Ihr wollt mehr über Docker-Compose erfahren? In dem <a href="https://tekkieninja.de/docker-compose-erklaert/">verlinkten</a> Beitrag habe ich eine Einführung für dieses Thema verfasst.</p>								</div>
				</div>
				</div>
				</div>
		<p>Der Beitrag <a href="https://tekkieninja.de/docker-compose-installieren/">Docker (-Compose) installieren</a> erschien zuerst auf <a href="https://tekkieninja.de">TekkieNinja</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://tekkieninja.de/docker-compose-installieren/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Docker-Compose erklärt</title>
		<link>https://tekkieninja.de/docker-compose-erklaert/</link>
					<comments>https://tekkieninja.de/docker-compose-erklaert/#comments</comments>
		
		<dc:creator><![CDATA[Florian Keßler]]></dc:creator>
		<pubDate>Sun, 23 Apr 2023 11:55:19 +0000</pubDate>
				<category><![CDATA[Docker]]></category>
		<guid isPermaLink="false">https://tekkieninja.de/?p=1091</guid>

					<description><![CDATA[<p>Docker Compose ermöglicht es, mehrere Container in einer einzigen Datei zu definieren und ihre Beziehungen untereinander zu definieren. Mit einem einzigen Befehl können dann alle Container gestartet werden. Dies ist besonders praktisch, da die Datei einfach geteilt werden kann, um eine einheitliche Serverumgebung zu gewährleisten. Warum müssen verschiedene Container eigentlich miteinander verknüpft werden? Ein Docker-Container [&#8230;]</p>
<p>Der Beitrag <a href="https://tekkieninja.de/docker-compose-erklaert/">Docker-Compose erklärt</a> erschien zuerst auf <a href="https://tekkieninja.de">TekkieNinja</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="1091" class="elementor elementor-1091">
				<div class="elementor-element elementor-element-833cfb7 e-con-full e-flex e-con e-parent" data-id="833cfb7" data-element_type="container" data-e-type="container">
				<div class="elementor-element elementor-element-20ddbb8 elementor-widget elementor-widget-text-editor" data-id="20ddbb8" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<div class="flex flex-grow flex-col gap-3"><div class="min-h-[20px] flex flex-col items-start gap-4 whitespace-pre-wrap"><div class="markdown prose w-full break-words dark:prose-invert light"><p>Docker Compose ermöglicht es, mehrere Container in einer einzigen Datei zu definieren und ihre Beziehungen untereinander zu definieren. Mit einem einzigen Befehl können dann alle Container gestartet werden. Dies ist besonders praktisch, da die Datei einfach geteilt werden kann, um eine einheitliche Serverumgebung zu gewährleisten.</p><p>Warum müssen verschiedene Container eigentlich miteinander verknüpft werden? Ein Docker-Container ist von Natur aus isoliert, es können keine Verbindungen nach außen oder nach innen aufgebaut werden. Es ist jedoch oft notwendig, dass Container miteinander kommunizieren müssen, zum Beispiel ein Webserver mit einer Datenbank oder ein Container mit dem Hostcomputer, auf dem er gestartet wurde.</p><p>Die Verknüpfung ermöglicht uns, bestimmte Ports freizugeben, um eine Verbindung von außen zu ermöglichen oder ein bestimmtes Verzeichnis mit dem Hostsystem zu teilen. Bei nur zwei Containern ist das noch einfach, aber in einer typischen Webumgebung müssen mehrere Container miteinander kommunizieren, wie zum Beispiel ein Webserver (z.B. Apache2), PHP und eine Datenbank.</p><p>Es wird schwierig, den Überblick über all diese verschiedenen Tools zu behalten. Docker Compose hilft uns, dies ganz einfach zu orchestrieren, auch wenn wir noch viele weitere Tools wie NodeJS, Cacheserver und Load Balancer hinzufügen.</p></div></div></div>								</div>
				</div>
				<div class="elementor-element elementor-element-bc5d806 elementor-widget elementor-widget-heading" data-id="bc5d806" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h3 class="elementor-heading-title elementor-size-default">Docker-Compose Dateiformat .yaml</h3>				</div>
				</div>
				<div class="elementor-element elementor-element-de09d2e elementor-widget elementor-widget-text-editor" data-id="de09d2e" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<div class="flex flex-grow flex-col gap-3"><div class="min-h-[20px] flex flex-col items-start gap-4 whitespace-pre-wrap"><div class="markdown prose w-full break-words dark:prose-invert light"><p>Der zentrale Bestandteil von Docker Compose ist die YAML-Datei. In dieser Datei werden die Container definiert, die gestartet werden sollen, sowie ihre Beziehungen zueinander. Es können Verzeichnisse freigegeben, Ports freigeschaltet und Verknüpfungen hergestellt werden.</p><p>Auf der ersten Ebene der Datei werden die Namen der einzelnen Container festgelegt. Diese sind wichtig, da sie als Referenz auf andere Container verwendet werden können. In der nächsten Ebene werden die Eigenschaften jedes Containers beschrieben, von denen einige im Folgenden näher erläutert werden. Nachfolgend ein Beispiel:</p><p style="padding-left: 40px;"><code>container1:</code><br /><code>  image: image1</code></p><p style="padding-left: 40px;"><code>container2:</code><br /><code>  image: image2</code></p><p>Dieses Beispiel würde zwei Container starten, die jedoch nichts Besonderes tun würden, außer möglicherweise ihre definierten Images auszuführen. Um die Sache spannender zu gestalten, wird nachfolgend auf die verschiedenen Optionen von Docker-Compose eingegangen.</p></div></div></div>								</div>
				</div>
				<div class="elementor-element elementor-element-68ad083 elementor-widget elementor-widget-heading" data-id="68ad083" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h4 class="elementor-heading-title elementor-size-default">Eigenschaft image</h4>				</div>
				</div>
				<div class="elementor-element elementor-element-3e8cde0 elementor-widget elementor-widget-text-editor" data-id="3e8cde0" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<div class="flex flex-grow flex-col gap-3"><div class="min-h-[20px] flex flex-col items-start gap-4 whitespace-pre-wrap"><div class="markdown prose w-full break-words dark:prose-invert light"><p>Zunächst wird die wichtigste Eigenschaft betrachtet: <strong>image</strong>. Mit dieser Eigenschaft legen wir fest, auf welchem Docker-Image ein Container aufbauen soll. Docker sucht nach dem angegebenen Image im <a href="https://hub.docker.com/search?q=">Docker-Hub</a>, lädt es herunter und startet von diesem aus einen Container automatisch. Da viele moderne Tools (wie Webserver etc.) bereits vorgefertigte Docker-Images bereitstellen, kann damit viel Arbeit erspart werden.</p><p>Ein Beispiel wäre nachfolgend (analog zu dem obigen):</p><p style="padding-left: 40px;"><code>apache2:</code><br /><code>  image: httpd</code></p></div></div></div>								</div>
				</div>
				<div class="elementor-element elementor-element-5b2d1ac elementor-widget elementor-widget-heading" data-id="5b2d1ac" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h4 class="elementor-heading-title elementor-size-default">Eigenschaft build</h4>				</div>
				</div>
				<div class="elementor-element elementor-element-7893b9e elementor-widget elementor-widget-text-editor" data-id="7893b9e" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<div class="flex flex-grow flex-col gap-3"><div class="min-h-[20px] flex flex-col items-start gap-4 whitespace-pre-wrap"><div class="markdown prose w-full break-words dark:prose-invert light"><p>Im Vergleich zu image stellt <strong>Build</strong> das Gegenstück dar, wobei beide Eigenschaften exklusiv sind, das heißt, ein Container kann nur eine von beiden haben. Hier wird der Pfad zum <a href="https://tekkieninja.de/dockerfile/">Dockerfile</a> angegeben &#8211; relativ zum Ort der docker-compose.yml Datei &#8211; das beim Starten des Containers ausgeführt werden soll. Mit dieser Eigenschaft ist es möglich, alle Container individuell anzupassen, indem für jeden ein eigenes Dockerfile angeben wird. Wenn sich das Dockerfile im selben Verzeichnis wie die docker-compose.yml Datei befindet, geben wir einfach einen &#8222;.&#8220; an. Wenn das Dockerfile einen anderen Namen hat, kann der Name mit der Eigenschaft &#8222;dockerfile&#8220; geändert werden.</p><p><span style="text-decoration: underline;">Beispiel:</span></p><p style="padding-left: 40px;"><code>apache2:</code><br /><code>  build: ./apache2</code></p></div></div></div>								</div>
				</div>
				<div class="elementor-element elementor-element-1ab789a elementor-widget elementor-widget-heading" data-id="1ab789a" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h4 class="elementor-heading-title elementor-size-default">Eigenschaft  ports</h4>				</div>
				</div>
				<div class="elementor-element elementor-element-57dad56 elementor-widget elementor-widget-text-editor" data-id="57dad56" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<div class="flex flex-grow flex-col gap-3"><div class="min-h-[20px] flex flex-col items-start gap-4 whitespace-pre-wrap"><div class="markdown prose w-full break-words dark:prose-invert light"><p>Die Eigenschaft <strong>ports</strong> öffnet die angegebenen Ports in einem Container und verbindet sie mit einem Port auf dem Host. Dies ermöglicht es, dass zwei Programme, die denselben Port benutzen, auf demselben Server laufen können, indem man einem Programm einen anderen Port auf dem Host zuweist als dem anderen. Es gibt verschiedene Schreibweisen für diese Eigenschaft:</p><ul><li>Eine einzelne Zahl öffnet einen einzelnen Port, und falls für den Host kein Port angegeben ist, wird ein zufälliger Port bestimmt.</li><li>Mit Doppelpunkten getrennte Zahlen mappen Ports von dem Host System in den Container.</li><li>Mit Bindestrich getrennte Zahlen öffnen eine Reihe von Ports.</li></ul><p>Diese Eigenschaft ist nützlich, wenn Programme wie Webserver oder MariaDB in einem Container ausgeführt werden sollen und andere Container darauf zugreifen müssen. Dabei müssen die entsprechenden Ports, wie beispielsweise 80/443 für den Webserver oder 3306 für MariaDB, freigegeben werden.</p><p><span style="text-decoration: underline;">Beispiel:</span></p><p style="padding-left: 40px;"><code>apache2:</code><br /><code>  image: httpd</code><br /><code>  ports: </code><br /><code>   - 80:80</code><br /><code>   - 443:443</code></p></div></div></div>								</div>
				</div>
				<div class="elementor-element elementor-element-457fca4 elementor-widget elementor-widget-heading" data-id="457fca4" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h4 class="elementor-heading-title elementor-size-default">Eigenschaft volumes</h4>				</div>
				</div>
				<div class="elementor-element elementor-element-3b5dda4 elementor-widget elementor-widget-heading" data-id="3b5dda4" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h5 class="elementor-heading-title elementor-size-default">interne Volumes</h5>				</div>
				</div>
				<div class="elementor-element elementor-element-755acd9 elementor-widget elementor-widget-text-editor" data-id="755acd9" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Durch die <strong>volumes</strong>-Eigenschaft können Verzeichnisse (oder auch mehrere) vom Host im Container zugänglich gemacht werden. Der Pfad auf dem Host, wo das Verzeichnis zu finden ist, wird einfach angegeben. Optional kann auch ein Pfad angegeben werden, auf den das Verzeichnis im Container gemappt werden soll. Änderungen, die auf einer Seite vorgenommen werden (z. B. im Container), sind automatisch auch auf der anderen Seite (auf dem Host) verfügbar. Dies ist eine einfache Möglichkeit, Datenkonsistenz zu gewährleisten, da normalerweise Daten, die in einem Container gespeichert sind, beim beenden des Containers gelöscht werden. Wenn sie jedoch über ein solches Volume auf dem Hostrechner gespeichert werden, bleiben sie auch nach einem Container-Neustart erhalten.</p><p><span style="text-decoration: underline;">Beispiel:</span></p><p style="padding-left: 40px;"><code>apache2:</code><br /><code>  image: httpd</code><br /><code>  volumes: </code><br /><code>   - /var/project_Blog/html:/var/www/html</code></p>								</div>
				</div>
				<div class="elementor-element elementor-element-382c458 elementor-widget elementor-widget-heading" data-id="382c458" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h5 class="elementor-heading-title elementor-size-default">externe Volumes</h5>				</div>
				</div>
				<div class="elementor-element elementor-element-c61a7ee elementor-widget elementor-widget-text-editor" data-id="c61a7ee" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Das Verwenden eines externen Volumes unterscheidet sich sowohl in der Anwendung als auch darin, dass es zuvor angelegt werden muss. Ein externes Volume bleibt auch nach dem Beenden des Containers erhalten. Alle Volumes werden unter <em>/var/lib/docker/volumes/VOLUME-NAME</em> abgelegt.</p><p><span style="text-decoration: underline;">Beispiel:</span></p><p>Zunächst wird ein externes Volume für MariaDB erstellt. Im Anschluss wird eine Docker Compose Datei gezeigt, die demonstriert, wie das externe Volume eingebunden wird.</p><p><code>docker volume create mariadbV1</code></p><p>Details zu dem gerade erstellten Volume kann mittels folgendem Befehl angezeigt werden:</p><p><code>docker volume inspect mariadbV1</code><code></code></p><p><code>version: '3'</code></p><p><code>services:</code><br /><code>  mariadb:</code><br /><code>    image: mariadb</code><br /><code>    container_name: mariadb</code><code></code><br /><code>    ports:</code><br /><code>      - 3306:3306</code><br /><code>    volumes:</code><br /><code>      - mariadb:/var/lib/mysql</code></p><p><code>volumes:</code><br /><code>    mariadb:</code><br /><code>     external: true</code><br /><code>     name:</code><br /><code>        mariadbV1</code></p>								</div>
				</div>
				<div class="elementor-element elementor-element-d78aa33 elementor-widget elementor-widget-heading" data-id="d78aa33" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h5 class="elementor-heading-title elementor-size-default">volumes_from</h5>				</div>
				</div>
				<div class="elementor-element elementor-element-3225e4e elementor-widget elementor-widget-text-editor" data-id="3225e4e" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Die Eigenschaft <strong>volumes_from</strong> ähnelt sehr der vorherigen, ist jedoch nicht identisch. Sie ermöglicht es uns, alle Volumes, die wir in einem anderen Container haben, in diesen Container zu übernehmen. Das ist äußerst praktisch, um immer Zugriff auf dieselben Daten zu haben. Das ist zum Beispiel wichtig, wenn wir einen Container für einen Webserver und einen weiteren für PHP haben. Beide benötigen Zugriff auf die PHP-Dateien. Hier wird der Name des Containers angegeben, wie in der docker-compose.yml Datei.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-f237654 elementor-widget elementor-widget-heading" data-id="f237654" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h4 class="elementor-heading-title elementor-size-default">Eigenschaft container Name</h4>				</div>
				</div>
				<div class="elementor-element elementor-element-fd2a0da elementor-widget elementor-widget-text-editor" data-id="fd2a0da" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Durch die Verwendung von <strong>container_name</strong> kann einem Docker-Container ein spezifischer Name zugewiesen werden. Das ist besonders nützlich, wenn viele Container gleichzeitig laufen, da sonst zufällige Namen vergeben werden und es schwierig wird, den Überblick zu behalten.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-b938224 elementor-widget elementor-widget-heading" data-id="b938224" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h4 class="elementor-heading-title elementor-size-default">Eigenschaft networks</h4>				</div>
				</div>
				<div class="elementor-element elementor-element-3dde70d elementor-widget elementor-widget-heading" data-id="3dde70d" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h5 class="elementor-heading-title elementor-size-default">Allgemeine Verwendung</h5>				</div>
				</div>
				<div class="elementor-element elementor-element-f064c47 elementor-widget elementor-widget-text-editor" data-id="f064c47" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Um Container miteinander zu verknüpfen, wird dies in Netzwerken realisiert. Netzwerke sind vergleichbar mit einem lokalen Netzwerk zu Hause, wo die einzelnen Geräte miteinander kommunizieren können, aber von außen (Internet / Router) nicht zugänglich sind. Ein Beispiel für die Verwendung von Netzwerken sieht folgendermaßen aus. Um Netzwerke nutzen zu können, muss der Block &#8222;networks&#8220; auf der gleichen Ebene wie &#8222;services&#8220; angelegt werden. In diesem Block spezifizieren wir das Netzwerk, das auch von den Containern verwendet werden soll. Hier ist ein Beispiel:</p><p style="padding-left: 40px;"><code>apache2:</code><br /><code>  image: httpd</code><br /><code>  ports: </code><br /><code>   - 80:80</code><br /><code>   - 443:443</code><br /><code>  networks: </code><br /><code>   - NETZWERKNAME</code><br /><code>  volumes:</code><br /><code>   - /var/project_Blog/html:/var/www/html</code></p><p style="padding-left: 40px;"><code>php-fpm:</code><br /><code>  image: php:fpm</code><br /><code>  volumes_from:</code><br /><code>   - </code><code>apache2</code><br /><code>  networks: </code><br /><code>   - NETZWERKNAME</code></p><p style="padding-left: 40px;"><code>network:</code><br /><code>   - NETZWERKNAME:</code></p>								</div>
				</div>
				<div class="elementor-element elementor-element-8eb07af elementor-widget elementor-widget-heading" data-id="8eb07af" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h5 class="elementor-heading-title elementor-size-default">Spezifische IP-Adressen</h5>				</div>
				</div>
				<div class="elementor-element elementor-element-3a9e44b elementor-widget elementor-widget-text-editor" data-id="3a9e44b" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Um Container spezifische IP-Adressen zuweisen zu können, ist es notwendig, das Subnetz des erstellten Netzwerks festzulegen. Für IPv4-Netzwerke mit einem /29-Präfix sind beispielsweise 6 Clients möglich, wobei die .0-Adresse die Subnetz-Adresse und die letzte Adresse die Broadcast-Adresse ist. Hier ist ein konkretes Beispiel:</p><p style="padding-left: 40px;"><code>version: "3"</code></p><p style="padding-left: 40px;"><code>services:</code><br /><code>  pihole:</code><br /><code>    ...</code><br /><code>    networks:</code><br /><code>      pihole_network:</code><br /><code>        ipv4_address: 10.0.0.1</code></p><p style="padding-left: 40px;"><code></code><code></code><code></code><br /><code>networks:</code><br /><code>  pihole_network:</code><br /><code>    ipam:</code><br /><code>      config:</code><br /><code>        - subnet: 10.0.0.0/29</code></p><p>Gibt man keine spezifische IP-Adresse an, wird dem Container eine zufällige Adresse zugewiesen.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-407798f elementor-widget elementor-widget-heading" data-id="407798f" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h4 class="elementor-heading-title elementor-size-default">Eigenschaft  environment / env_file</h4>				</div>
				</div>
				<div class="elementor-element elementor-element-70175f1 elementor-widget elementor-widget-text-editor" data-id="70175f1" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Durch die Verwendung von Environments können Kommandos innerhalb eines Containers ausgeführt werden. Im nachfolgenden Beispiel wird beim ersten Start des Containers eine Datenbank erstellt, zusammen mit einem Benutzer und einem Passwort für die Datenbank. Es wird auch ein Root-Benutzer für die Datenbank erstellt, da sonst das Bearbeiten oder Erstellen von Datenbanken nicht möglich ist. </p><p><code>version: '3'</code></p><p><code>services:</code><br /><code>  mariadb:</code><br /><code>    image: mariadb</code><br /><code>    container_name: mariadb</code><br /><code>    environment:</code><br /><code>      - MYSQL_ROOT_PASSWORD<i>=---------------</i></code><br /><code>      - MYSQL_PASSWORD<i>=---------------</i></code><br /><code>      - MYSQL_DATABASE<i>=---------------</i></code><br /><code>      - MYSQL_USER<i>=---------------</i></code></p><p>Wenn viele Variablen in einer Compose Datei stehen, kann dies schnell unübersichtlich werden. Außerdem kann es vorkommen, dass die Docker-Compose Datei mit einer anderen Person geteilt werden soll, aber nicht die Zugangsdaten. In einem solchen Fall ist die sogenannte <strong>env_file</strong> Eigenschaft nützlich. Damit können die oben gezeigten Werte in eine Datei ausgelagert werden. Die Datei sollte im gleichen Verzeichnis liegen wie die Compose Datei.</p><p style="padding-left: 40px;"><code>version: '3'</code></p><p style="padding-left: 40px;"><code>services:</code><br /><code>  apache2:</code><br /><code>    image: httpd</code><br /><code>    env_file:</code><br /><code>      - a.env</code><br /><code>      - b.env</code></p><p>Die Datei ist simpel im <em>VAR=VAL</em>-Format aufgebaut. VAR stellt den Variablennamen dar und VAL der entsprechende Wert. Sollten die selben Variablennamen in mehreren Dateien genutzt werden, so wird der letzte Wert aus der letzten Datei als entgültiger angenommen. Dadurch kann die Reihenfolge der Dateien im Compose File eine Rolle spielen.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-9c4137c elementor-widget elementor-widget-heading" data-id="9c4137c" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h4 class="elementor-heading-title elementor-size-default">Eigenschaft restart</h4>				</div>
				</div>
				<div class="elementor-element elementor-element-39ffa7a elementor-widget elementor-widget-text-editor" data-id="39ffa7a" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Um die Neustart-Richtlinie für einen Container zu konfigurieren, kann die Eigenschaft <strong>restart</strong> verwendet werden. Der Wert des kann einer der folgenden sein:</p><ul><li><em>no</em>: Der Container wird nicht automatisch neu gestartet (Standard).</li><li><em>on-failure[:max-retries]</em>: Der Container wird neu gestartet, wenn er aufgrund eines Fehlers mit einem Exit-Code ungleich <em>Null</em> beendet wird. Optional kann mit der Option <em>:max-retries</em> die Anzahl der Versuche des Docker-Dämons begrenzt werden, den Container neu zu starten.</li><li><em>always</em>: Der Container wird immer neu gestartet, wenn er gestoppt wird. Wenn er manuell gestoppt wird, wird er nur neu gestartet, wenn der Docker-Daemon neu gestartet wird oder der Container selbst manuell neu gestartet wird.</li><li><em>unless-stopped</em>: Analog zu <em>always</em>, außer dass der Container nicht neu gestartet wird, wenn er manuell oder anderweitig gestoppt wird, selbst wenn der Docker-Daemon neu gestartet wird.</li></ul>								</div>
				</div>
				<div class="elementor-element elementor-element-d99dc79 elementor-widget elementor-widget-heading" data-id="d99dc79" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h4 class="elementor-heading-title elementor-size-default">Eigenschaft  depends_on</h4>				</div>
				</div>
				<div class="elementor-element elementor-element-b8cb486 elementor-widget elementor-widget-text-editor" data-id="b8cb486" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Um die Beziehungen zwischen den Diensten in Docker Compose auszudrücken, können Abhängigkeiten definiert werden. Diese bestimmen das Start- und Stop-Verhalten der Dienste:</p><ul><li>Wenn man <em>docker-compose up</em> ausführt, werden die Dienste in der Reihenfolge ihrer Abhängigkeiten gestartet. Im Beispiel werden <em>db</em> und <em>redis</em> vor <em>web</em> gestartet.</li><li>Wenn man <em>docker-compose stop</em> ausführt, werden die Dienste in umgekehrter Abhängigkeitsreihenfolge gestoppt. Im Beispiel wird <em>web</em> vor <em>db</em> und <em>redis</em> gestoppt.</li></ul><p><code>version: '3'</code></p><p><code>services:</code><br /><code>  web:</code><br /><code>    image: httpd<br /></code><code>    depends_on:<br /></code><code>      - redis<br />      - db</code></p><p><code></code><code>  redis:</code><br /><code>    image: redis</code></p><p><code>  db:</code><br /><code>    image: mariadb</code></p><p>Aber <strong>ACHTUNG</strong>: <strong>depends_on</strong> wartet nicht darauf, dass db und redis lauffähig sind, bevor der Web-Dienst gestartet wird, sondern nur bis sie gestartet wurden.<br />Wenn man einen Stack im Schwarm-Modus mit einer Compose-Datei der Version 3 bereitstellt, wird die <strong>depends_on</strong>-Option ignoriert.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-70d95e6 elementor-widget elementor-widget-heading" data-id="70d95e6" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h4 class="elementor-heading-title elementor-size-default">Eigenschaft deploy (Schwerpunkt Resourcen)</h4>				</div>
				</div>
				<div class="elementor-element elementor-element-d19f9a6 elementor-widget elementor-widget-text-editor" data-id="d19f9a6" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Um zu verhindern, dass der Kernel des Betriebssystems die Docker Engine bei einem Fehler eines Containers beendet, ist es empfehlenswert, die Ressourcen zu begrenzen. Dies kann durch Hinzufügen von Limits und Reservations in der deploy-Sektion der docker-compose-Datei erreicht werden.</p><p>Die Limits bestimmen die maximale Menge an Ressourcen, die ein Container verwenden kann, während die Reservations eine Mindestmenge an Ressourcen garantieren, die dem Container zur Verfügung stehen.</p><p>Folgende zwei Ressourcen Gruppen können beschränkt werden:</p><ul><li>cpus: Diese Option gibt an, wie viel der verfügbaren CPU-Ressourcen ein Container nutzen kann.</li><li>memory:Diese Option gibt an, wie viel der verfügbaren RAM-Ressourcen ein Container nutzen kann.</li></ul><p>Es ist auch möglich, die Optionen &#8211;cpu-shares und &#8211;memory-swap zu verwenden, um die Ressourcen auf andere Weise zu begrenzen. Weitere Informationen zu diesen Optionen finden in der <a href="https://docs.docker.com/config/containers/resource_constraints/">Docker-Dokumentation</a>.</p><p>Ab Compose Version 3 muss die Docker Engine im Swarm-Modus laufen, damit die Ressourcen Begrenzung greift. Wenn Sie jedoch den Kompatibilitätsmodus verwenden möchten, können Sie den Befehl &#8222;docker-compose &#8211;compatibility&#8220; verwenden. Weitere Informationen dazu sind in der <a href="https://docs.docker.com/config/containers/resource_constraints/">Docker-Dokumentation</a> zu finden.</p><p> </p>								</div>
				</div>
				<div class="elementor-element elementor-element-9eb3161 elementor-widget elementor-widget-heading" data-id="9eb3161" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h3 class="elementor-heading-title elementor-size-default">Grundlegende Befehle</h3>				</div>
				</div>
				<div class="elementor-element elementor-element-2adb4a3 elementor-widget elementor-widget-text-editor" data-id="2adb4a3" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Nach der Vorbereitung unseres docker-compose.yml-Files stellt sich die Frage: Wie starten oder beenden wir die konfigurierten Container? Hier sind einige Befehle, mit denen wir unsere Container verwalten können.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-a4cb2c2 elementor-widget elementor-widget-heading" data-id="a4cb2c2" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h5 class="elementor-heading-title elementor-size-default">docker-compose up</h5>				</div>
				</div>
				<div class="elementor-element elementor-element-65ed45f elementor-widget elementor-widget-text-editor" data-id="65ed45f" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Der erste Befehl ist <strong>docker-compose up</strong>. Dieser erstellt und startet die Container, die wir in unserem YAML-File definiert haben. Mit diesem einen Befehl können wir also alle unsere Container starten &#8211; genial.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-94d4b7e elementor-widget elementor-widget-heading" data-id="94d4b7e" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h5 class="elementor-heading-title elementor-size-default">docker-compose build</h5>				</div>
				</div>
				<div class="elementor-element elementor-element-f3033e3 elementor-widget elementor-widget-text-editor" data-id="f3033e3" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Der Befehl <strong>docker-compose build</strong> baut alle Container zusammen und taggt sie, damit sie beim nächsten Start schneller verfügbar sind. Wenn sich also etwas im Build-Verzeichnis oder im Dockerfile ändert, führen wir einfach diesen Befehl aus, um die Änderungen in unserer Docker Compose Umgebung zu integrieren.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-995a71d elementor-widget elementor-widget-heading" data-id="995a71d" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h5 class="elementor-heading-title elementor-size-default">docker-compose ps</h5>				</div>
				</div>
				<div class="elementor-element elementor-element-8349ddc elementor-widget elementor-widget-text-editor" data-id="8349ddc" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Analog wie <strong>docker ps</strong> listet auch <strong>docker-compose ps</strong> die aktiven Container auf, die von Docker Compose verwaltet werden.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-370044b elementor-widget elementor-widget-heading" data-id="370044b" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h5 class="elementor-heading-title elementor-size-default">docker-compose start / stop</h5>				</div>
				</div>
				<div class="elementor-element elementor-element-954e987 elementor-widget elementor-widget-text-editor" data-id="954e987" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Mithilfe der Namen, die wir im docker-compose ps Befehl sehen können, können einzelne Container mit den Befehlen <strong>docker-compose start / stop</strong> gestartet bzw. gestoppt werden.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-61bdd87 elementor-widget elementor-widget-heading" data-id="61bdd87" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h5 class="elementor-heading-title elementor-size-default">docker-compose rm</h5>				</div>
				</div>
				<div class="elementor-element elementor-element-6ebf4d5 elementor-widget elementor-widget-text-editor" data-id="6ebf4d5" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Mit dem Namen kann auch ein getaggtrn Container mit dem Befehl <strong>docker-compose rm</strong> entfernt werden. Wenn anschließend docker-compose up ausgeführt wird, dann wird der Container wieder neu erstellt.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-db9c6cf elementor-widget elementor-widget-spacer" data-id="db9c6cf" data-element_type="widget" data-e-type="widget" data-widget_type="spacer.default">
				<div class="elementor-widget-container">
							<div class="elementor-spacer">
			<div class="elementor-spacer-inner"></div>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-c440156 elementor-widget elementor-widget-text-editor" data-id="c440156" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Ich hoffe euch hat dieser Artikel zu Docker-Compose erklären gefallen. Habt Ihr Anmerkungen oder Wünsche? Dann teilt Sie mir gerne mit.</p>								</div>
				</div>
				</div>
				</div>
		<p>Der Beitrag <a href="https://tekkieninja.de/docker-compose-erklaert/">Docker-Compose erklärt</a> erschien zuerst auf <a href="https://tekkieninja.de">TekkieNinja</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://tekkieninja.de/docker-compose-erklaert/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>Dockerfile</title>
		<link>https://tekkieninja.de/dockerfile/</link>
					<comments>https://tekkieninja.de/dockerfile/#respond</comments>
		
		<dc:creator><![CDATA[Florian Keßler]]></dc:creator>
		<pubDate>Fri, 21 Apr 2023 14:01:00 +0000</pubDate>
				<category><![CDATA[Docker]]></category>
		<guid isPermaLink="false">https://tekkieninja.de/?p=1085</guid>

					<description><![CDATA[<p>Die Verwendung von Docker Images ist ein wichtiger Schritt in Richtung Docker, aber es gibt noch weitere nützliche Funktionen. Eine davon ist das Dockerfile, das es ermöglicht, das Image auf einfache Weise Schritt für Schritt zu erstellen. Es beschreibt, wie die Umgebung aufgebaut werden soll, ähnlich wie in anderen Umgebungen wie Vagrant. Das Dockerfile ist [&#8230;]</p>
<p>Der Beitrag <a href="https://tekkieninja.de/dockerfile/">Dockerfile</a> erschien zuerst auf <a href="https://tekkieninja.de">TekkieNinja</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="1085" class="elementor elementor-1085">
				<div class="elementor-element elementor-element-b3f8ce2 e-con-full e-flex e-con e-parent" data-id="b3f8ce2" data-element_type="container" data-e-type="container">
				<div class="elementor-element elementor-element-da0ceb7 elementor-widget elementor-widget-text-editor" data-id="da0ceb7" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Die Verwendung von Docker Images ist ein wichtiger Schritt in Richtung Docker, aber es gibt noch weitere nützliche Funktionen. Eine davon ist das Dockerfile, das es ermöglicht, das Image auf einfache Weise Schritt für Schritt zu erstellen. Es beschreibt, wie die Umgebung aufgebaut werden soll, ähnlich wie in anderen Umgebungen wie Vagrant.</p><p>Das Dockerfile ist eine einfache Textdatei, die den Aufbau des Docker Images beschreibt und als Schritt-für-Schritt-Anleitung fungiert, um das Image immer wieder auf dieselbe Art zu erstellen. Mit einem Dockerfile kann das Image leicht erstellt und Teamkollegen zur Verfügung gestellt werden, damit sie dasselbe Image erzeugen können.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-5d94037 elementor-widget elementor-widget-heading" data-id="5d94037" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h3 class="elementor-heading-title elementor-size-default">Image aus dem Dockerfile erzeugen</h3>				</div>
				</div>
				<div class="elementor-element elementor-element-427eab1 elementor-widget elementor-widget-text-editor" data-id="427eab1" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Um ein fertiges Image aus einem Dockerfile zu erzeugen, müssen wir folgenden Befehl ausführen:</p><p style="padding-left: 40px;"><code>docker build</code></p><p>Dieser Befehl benötigt einen Kontext als Parameter, der das Verzeichnis enthält, in dem sich das Dockerfile befindet. Standardmäßig sucht Docker im Kontextverzeichnis nach der Datei. Wenn ein anderer Speicherort angeben werden soll, kann der Parameter <strong>-f</strong> verwendet werden.</p><p>Wenn ein Image aus dem Dockerfile erstellt werden soll, wird auf der Konsole in das Verzeichnis gewechselt, das das Dockerfile enthält, und geben den folgenden Befehl ein:</p><p style="padding-left: 40px;"><code>docker build -t tekkie/ninja-php-server</code></p><p>Durch die Verwendung des Parameters <strong>-t</strong> kann dem Image, das aus dem Dockerfile erstellt wird, einen Namen zuweisen, der später verwendet werden kann. Der Punkt am Ende steht für das aktuelle Verzeichnis und gibt an, dass das Kontextverzeichnis für das Erstellen des Images verwendet werden soll.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-2e8609f elementor-widget elementor-widget-heading" data-id="2e8609f" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h3 class="elementor-heading-title elementor-size-default">Aufbau eines Dockerfiles</h3>				</div>
				</div>
				<div class="elementor-element elementor-element-6a75093 elementor-widget elementor-widget-text-editor" data-id="6a75093" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<div class="flex flex-grow flex-col gap-3"><div class="min-h-[20px] flex flex-col items-start gap-4 whitespace-pre-wrap"><div class="markdown prose w-full break-words dark:prose-invert light"><p>Das Dockerfile ist einfach aufgebaut und besteht aus einer einzelnen Befehlszeile pro Zeile. Die Befehle werden durch die Konvention <strong>BEFEHL parameter</strong> getrennt, wobei der Befehl großgeschrieben wird. Kommentare können mit einem <strong>#</strong> am Anfang einer Zeile hinzugefügt werden.</p><p>Beim Bauen des Dockerfiles wird jeder Befehl in jeder Zeile nacheinander ausgeführt, um ein Zwischenimage zu erzeugen. Dieses Zwischenimage dient dann als Basis für den nächsten Befehl. Wenn ein Befehl erfolgreich ausgeführt wird, bleibt das Image erhalten. Das bedeutet, dass Docker beim nächsten Aufruf des build-Befehls an der gleichen Stelle weitermachen kann, solange sich im Dockerfile nichts ändert. Dies ist besonders nützlich, wenn aufwendige Befehle wie die Installation mehrerer Anwendungen ausgeführt werden müssen, da viel Zeit gespart werden kann.</p></div></div></div>								</div>
				</div>
				<div class="elementor-element elementor-element-e27bfbe elementor-widget elementor-widget-heading" data-id="e27bfbe" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h4 class="elementor-heading-title elementor-size-default">Befehl FROM</h4>				</div>
				</div>
				<div class="elementor-element elementor-element-b2b4cbc elementor-widget elementor-widget-text-editor" data-id="b2b4cbc" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Der entscheidende Befehl im Dockerfile lautet <strong>FROM</strong> und steht am Anfang. Er definiert klar, welches Image als Basis für das neue Image dienen soll. Dabei kann es sich um ein Basisimage wie <em>ubuntu</em> oder <em>ubuntu:trusty</em> handeln, oder um von Nutzern oder uns selbst erstellte Images wie <em>tekkie/ninja-test-server</em>.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-ac73a3f elementor-widget elementor-widget-heading" data-id="ac73a3f" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h4 class="elementor-heading-title elementor-size-default">Befehl MAINTAINER</h4>				</div>
				</div>
				<div class="elementor-element elementor-element-aa20478 elementor-widget elementor-widget-text-editor" data-id="aa20478" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Mit dem MAINTAINER Befehl kann der Autor des Images gesetzt werden.</p><p style="padding-left: 40px;"><code>MAINTAINER Tekkie Ninja &lt;tekkieninja.blog@gmail.com&gt;</code></p>								</div>
				</div>
				<div class="elementor-element elementor-element-65a0f42 elementor-widget elementor-widget-heading" data-id="65a0f42" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h4 class="elementor-heading-title elementor-size-default">Befehl RUN</h4>				</div>
				</div>
				<div class="elementor-element elementor-element-41756e2 elementor-widget elementor-widget-text-editor" data-id="41756e2" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<div class="flex flex-grow flex-col gap-3"><div class="min-h-[20px] flex flex-col items-start gap-4 whitespace-pre-wrap"><div class="markdown prose w-full break-words dark:prose-invert light"><p>Einer der wichtigsten Befehle im Dockerfile ist der Befehl <strong>RUN</strong>. Mit diesem können wir den Parameter als Shell Befehl ausführen und damit quasi alles in unserer virtuellen Maschine tun. Der Befehl</p><p style="padding-left: 40px;"><code>RUN sudo apt-get install -y apache2</code></p><p>wird intern wie folgt übersetzt:</p><p style="padding-left: 40px;"><code>/bin/sh -c sudo apt-get install -y apache2</code></p><p>Eine weitere Möglichkeit, den RUN Befehl auszuführen, ist die sogenannte exec Syntax:</p><p style="padding-left: 40px;"><code>RUN [„executable“, „param1“, „param2“]</code></p><p>In den meisten Fällen werden die Dockerfiles eine Verkettung von vielen RUN Befehlen beinhalten. Hier ist es wichtig zu beachten, dass jeder RUN Befehl einen neuen Layer im Image erzeugt und damit Speicher verbraucht. Daher sollten wir die Anzahl der RUN Befehle möglichst gering halten und mehrere Dinge innerhalb eines Befehls erledigen.</p><p><span style="text-decoration: underline;">Negativ Beispiel:</span></p><p style="padding-left: 40px;"><code>RUN sudo apt-get install -y apache2</code></p><p style="padding-left: 40px;"><code>RUN sudo apt-get install -y php8.2</code></p><p style="padding-left: 40px;"><code>RUN sudo apt-get install -y nodejs</code></p><p style="padding-left: 40px;"><code>RUN sudo apt-get install -y npm</code></p><p><span style="text-decoration: underline;">Empfohlene Variante:</span></p><p style="padding-left: 40px;"><code>RUN sudo apt-get install -y apache2 php8.2 nodejs npm</code></p></div></div></div>								</div>
				</div>
				<div class="elementor-element elementor-element-8ffecf3 elementor-widget elementor-widget-heading" data-id="8ffecf3" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h4 class="elementor-heading-title elementor-size-default">Befehl CMD</h4>				</div>
				</div>
				<div class="elementor-element elementor-element-64dac9c elementor-widget elementor-widget-text-editor" data-id="64dac9c" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<div class="flex flex-grow flex-col gap-3"><div class="min-h-[20px] flex flex-col items-start gap-4 whitespace-pre-wrap"><div class="markdown prose w-full break-words dark:prose-invert light"><p>Der Befehl CMD definiert den Standardbefehl, der in einem Container ausgeführt wird, wenn er aus unserem Image erzeugt wird. Es ist jedoch möglich, dass der Container diesen Befehl überschreibt. Ein Docker Image kann nur einen CMD Befehl haben. Wenn mehrere definiert sind, wird nur der letzte Befehl als gültig angesehen. Die Syntax von CMD ist identisch mit der Syntax von RUN.</p><p><span style="text-decoration: underline;">Beispiel:</span></p><p style="padding-left: 40px;"><code>CMD echo "Hello world from Tekkie Ninja"</code></p></div></div></div>								</div>
				</div>
				<div class="elementor-element elementor-element-9ff2c3e elementor-widget elementor-widget-heading" data-id="9ff2c3e" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h4 class="elementor-heading-title elementor-size-default">Befehl ADD / COPY</h4>				</div>
				</div>
				<div class="elementor-element elementor-element-80e82eb elementor-widget elementor-widget-text-editor" data-id="80e82eb" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<div class="flex flex-grow flex-col gap-3"><div class="min-h-[20px] flex flex-col items-start gap-4 whitespace-pre-wrap"><div class="markdown prose w-full break-words dark:prose-invert light"><p>ADD und COPY sind zwei ähnliche Befehle, wobei ADD etwas mehr Funktionen hat als COPY. Nachfolgend wird nicht näher auf die Unterschiede der beiden Funtkionen eingegangen.</p><p>Beide Befehle ermöglichen es, eine Datei oder ein Verzeichnis vom Host-System in das Dateisystem des Images zu kopieren. Die Syntax ist einfach:</p><p style="padding-left: 40px;"><code>ADD directory /var/www/html/directory</code></p><p>Hier wird zuerst das Verzeichnis oder die Datei angegeben, die kopiert werden soll, und dann das Ziel. Die Syntax für den COPY-Befehl ist identisch. Beide Befehle haben auch eine alternative Syntax, die verwendet werden muss, wenn der Dateiname Leerzeichen enthält:</p><p style="padding-left: 40px;"><code>COPY ["directory", "/var/www/html/directory"]</code></p><p>Dank dieser Befehle können wir Konfigurationsdateien (z.B. die Apache2-Konfiguration oder eine php.ini) in unser neues Image kopieren.</p></div></div></div>								</div>
				</div>
				<div class="elementor-element elementor-element-5d20ba8 elementor-widget elementor-widget-heading" data-id="5d20ba8" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h4 class="elementor-heading-title elementor-size-default">Befehl WORKDIR</h4>				</div>
				</div>
				<div class="elementor-element elementor-element-c5a64c8 elementor-widget elementor-widget-text-editor" data-id="c5a64c8" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<div class="flex flex-grow flex-col gap-3"><div class="min-h-[20px] flex flex-col items-start gap-4 whitespace-pre-wrap"><div class="markdown prose w-full break-words dark:prose-invert light"><p>Jeder Befehl RUN, CMD, ADD und COPY bezieht sich standardmäßig auf das Root-Verzeichnis. Wenn dies geändert werden soll, kann dies mit dem Befehl WORKDIR erfolgen. Dieser setzt das neue Referenzverzeichnis für alle nachfolgenden Befehle fest oder bis zum nächsten Aufruf von WORKDIR.</p><p><span style="text-decoration: underline;">Zum Beispiel:</span></p><p style="padding-left: 40px;"><code>WORKDIR /var/www</code></p><p>Es kann auch ein relativer Pfad angeben werden, der sich am letzten Aufruf von WORKDIR orientiert:</p><p style="padding-left: 40px;"><code>WORKDIR vhosts/<a href="https://tekkieninja.de">tekkieninja.de</a></code></p><p>Nach den beiden oben genannten Befehlen wäre der neue Referenzpfad also <em>var/www/vhosts/<a href="https://tekkieninja.de">tekkieninja.de</a>.</em></p></div></div></div>								</div>
				</div>
				</div>
				</div>
		<p>Der Beitrag <a href="https://tekkieninja.de/dockerfile/">Dockerfile</a> erschien zuerst auf <a href="https://tekkieninja.de">TekkieNinja</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://tekkieninja.de/dockerfile/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
