<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki.megbes.de/index.php?action=history&amp;feed=atom&amp;title=Megbes-internal</id>
	<title>Megbes-internal - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.megbes.de/index.php?action=history&amp;feed=atom&amp;title=Megbes-internal"/>
	<link rel="alternate" type="text/html" href="https://wiki.megbes.de/index.php?title=Megbes-internal&amp;action=history"/>
	<updated>2026-09-19T04:48:16Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in MegBes Wiki</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://wiki.megbes.de/index.php?title=Megbes-internal&amp;diff=62&amp;oldid=prev</id>
		<title>Clawtronics: Tabellenzeilen korrekt trennen</title>
		<link rel="alternate" type="text/html" href="https://wiki.megbes.de/index.php?title=Megbes-internal&amp;diff=62&amp;oldid=prev"/>
		<updated>2026-08-06T19:43:44Z</updated>

		<summary type="html">&lt;p&gt;Tabellenzeilen korrekt trennen&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;de&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Nächstältere Version&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version vom 6. August 2026, 19:43 Uhr&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l22&quot;&gt;Zeile 22:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 22:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| technisches Projektkürzel ||&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| technisches Projektkürzel ||&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|-&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| Linux-Benutzername ||&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| Linux-Benutzername ||&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|-&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| Container-Name ||&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| Container-Name ||&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|-&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| Host-TCP-Port ||&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| Host-TCP-Port ||&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|-&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| Container-TCP-Port || 8080&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| Container-TCP-Port || 8080&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| UDP-Port ||&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| UDP-Port ||&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|-&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| lokales Subnetz ohne letzte Hostnummer ||&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| lokales Subnetz ohne letzte Hostnummer ||&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|-&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| Pfad der Umgebungsdatei ||&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| Pfad der Umgebungsdatei ||&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|-&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| Pfad des Zertifikatsordners ||&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| Pfad des Zertifikatsordners ||&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|-&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| Docker-Image || `tinetronics/megbes-internal`&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| Docker-Image || `tinetronics/megbes-internal`&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| Release ||&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| Release ||&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|-&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| projektspezifischer Stations-Timer ||&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| projektspezifischer Stations-Timer ||&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Clawtronics</name></author>
	</entry>
	<entry>
		<id>https://wiki.megbes.de/index.php?title=Megbes-internal&amp;diff=49&amp;oldid=prev</id>
		<title>Clawtronics: Zeilenumbrüche korrigiert</title>
		<link rel="alternate" type="text/html" href="https://wiki.megbes.de/index.php?title=Megbes-internal&amp;diff=49&amp;oldid=prev"/>
		<updated>2026-08-06T16:35:02Z</updated>

		<summary type="html">&lt;p&gt;Zeilenumbrüche korrigiert&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;de&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Nächstältere Version&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version vom 6. August 2026, 16:35 Uhr&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l48&quot;&gt;Zeile 48:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 48:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  ls -ld /home/&amp;lt;Benutzer&amp;gt;/megbes/&amp;lt;Projekt&amp;gt;/certs&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  ls -ld /home/&amp;lt;Benutzer&amp;gt;/megbes/&amp;lt;Projekt&amp;gt;/certs&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== 3. Umgebungsdatei anlegen ==&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;`n`nSiehe &lt;/del&gt;ergänzend [[Umgebungsdatei env.list]].&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== 3. Umgebungsdatei anlegen ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Siehe &lt;/ins&gt;ergänzend [[Umgebungsdatei env.list]].&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Datei öffnen:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Datei öffnen:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Clawtronics</name></author>
	</entry>
	<entry>
		<id>https://wiki.megbes.de/index.php?title=Megbes-internal&amp;diff=46&amp;oldid=prev</id>
		<title>Clawtronics: Umgebungsdatei-Fachseite verknüpft</title>
		<link rel="alternate" type="text/html" href="https://wiki.megbes.de/index.php?title=Megbes-internal&amp;diff=46&amp;oldid=prev"/>
		<updated>2026-08-06T16:34:47Z</updated>

		<summary type="html">&lt;p&gt;Umgebungsdatei-Fachseite verknüpft&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;de&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Nächstältere Version&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version vom 6. August 2026, 16:34 Uhr&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l48&quot;&gt;Zeile 48:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 48:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  ls -ld /home/&amp;lt;Benutzer&amp;gt;/megbes/&amp;lt;Projekt&amp;gt;/certs&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  ls -ld /home/&amp;lt;Benutzer&amp;gt;/megbes/&amp;lt;Projekt&amp;gt;/certs&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== 3. Umgebungsdatei anlegen ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== 3. Umgebungsdatei anlegen ==&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;`n`nSiehe ergänzend [[Umgebungsdatei env.list]].&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Datei öffnen:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Datei öffnen:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Clawtronics</name></author>
	</entry>
	<entry>
		<id>https://wiki.megbes.de/index.php?title=Megbes-internal&amp;diff=22&amp;oldid=prev</id>
		<title>Clawtronics: Ausführliche DAU-sichere Arbeitsanleitung angelegt</title>
		<link rel="alternate" type="text/html" href="https://wiki.megbes.de/index.php?title=Megbes-internal&amp;diff=22&amp;oldid=prev"/>
		<updated>2026-08-04T20:48:41Z</updated>

		<summary type="html">&lt;p&gt;Ausführliche DAU-sichere Arbeitsanleitung angelegt&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= megbes-internal installieren und starten =&lt;br /&gt;
&lt;br /&gt;
Diese Anleitung beschreibt die projektspezifische Einrichtung von `megbes-internal` auf dem Server beim Kunden. Sie setzt eine installierte aktuelle Ubuntu-LTS-Version, eine feste IP-Adresse und eine funktionierende Docker-Installation voraus.&lt;br /&gt;
&lt;br /&gt;
== Voraussetzungen ==&lt;br /&gt;
&lt;br /&gt;
* [[Ubuntu aktualisieren|Ubuntu ist vollständig aktualisiert]]&lt;br /&gt;
* [[Feste IP-Adresse unter Ubuntu|feste lokale IP-Adresse ist eingerichtet und getestet]]&lt;br /&gt;
* [[Docker installieren|Docker ist installiert und mit `hello-world` geprüft]]&lt;br /&gt;
* Projekt ist in `megbes-config` eingetragen&lt;br /&gt;
* External-Adresse, Internal-Port, Subnetz, UDP-Port und Stations-Timer sind festgelegt&lt;br /&gt;
* projektbezogene Zertifikate sind erzeugt&lt;br /&gt;
* freizugebender MegBes-Release ist festgelegt&lt;br /&gt;
&lt;br /&gt;
== 1. Projektwerte sammeln ==&lt;br /&gt;
&lt;br /&gt;
Vor dem ersten Befehl diese Tabelle in der Projektseite ausfüllen:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Wert&lt;br /&gt;
! Projektwert&lt;br /&gt;
|-&lt;br /&gt;
| technisches Projektkürzel ||&lt;br /&gt;
| Linux-Benutzername ||&lt;br /&gt;
| Container-Name ||&lt;br /&gt;
| Host-TCP-Port ||&lt;br /&gt;
| Container-TCP-Port || 8080&lt;br /&gt;
|-&lt;br /&gt;
| UDP-Port ||&lt;br /&gt;
| lokales Subnetz ohne letzte Hostnummer ||&lt;br /&gt;
| Pfad der Umgebungsdatei ||&lt;br /&gt;
| Pfad des Zertifikatsordners ||&lt;br /&gt;
| Docker-Image || `tinetronics/megbes-internal`&lt;br /&gt;
|-&lt;br /&gt;
| Release ||&lt;br /&gt;
| projektspezifischer Stations-Timer ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 2. Ordner anlegen ==&lt;br /&gt;
&lt;br /&gt;
Beispiel – Platzhalter ersetzen:&lt;br /&gt;
&lt;br /&gt;
 mkdir -p /home/&amp;lt;Benutzer&amp;gt;/megbes/&amp;lt;Projekt&amp;gt;/certs&lt;br /&gt;
 chmod 700 /home/&amp;lt;Benutzer&amp;gt;/megbes/&amp;lt;Projekt&amp;gt;/certs&lt;br /&gt;
&lt;br /&gt;
Kontrolle:&lt;br /&gt;
&lt;br /&gt;
 ls -ld /home/&amp;lt;Benutzer&amp;gt;/megbes/&amp;lt;Projekt&amp;gt;/certs&lt;br /&gt;
&lt;br /&gt;
== 3. Umgebungsdatei anlegen ==&lt;br /&gt;
&lt;br /&gt;
Datei öffnen:&lt;br /&gt;
&lt;br /&gt;
 nano /home/&amp;lt;Benutzer&amp;gt;/megbes/&amp;lt;Projekt&amp;gt;/&amp;lt;Projekt&amp;gt;.env&lt;br /&gt;
&lt;br /&gt;
Bereinigte Vorlage:&lt;br /&gt;
&lt;br /&gt;
 LOCALNETWORK_SUB_NETWORK=&amp;lt;lokales-Subnetz&amp;gt;&lt;br /&gt;
 LOCALNETWORK_UDP_PORT=&amp;lt;UDP-Port&amp;gt;&lt;br /&gt;
 MEGBES_SSL=true&lt;br /&gt;
 MNGMT_HEADER=&amp;lt;Name-des-Management-Headers&amp;gt;&lt;br /&gt;
 MNGMT_KEY=&amp;lt;im-Passwortmanager&amp;gt;&lt;br /&gt;
 MAIL_SMTP_PORT=&amp;lt;SMTP-Port&amp;gt;&lt;br /&gt;
 MAIL_SMTP_HOST=&amp;lt;SMTP-Server&amp;gt;&lt;br /&gt;
 MAIL_SENDER_ADDRESS=&amp;lt;Absenderadresse&amp;gt;&lt;br /&gt;
 MAIL_SENDER_PASSWORD=&amp;lt;im-Passwortmanager&amp;gt;&lt;br /&gt;
 MAIL_RECIPIENTADDRESSES=&amp;lt;Empfaengeradresse&amp;gt;&lt;br /&gt;
 SERVER_SSL_KEYSTORE=/opt/app/keys/keystore.jks&lt;br /&gt;
 SERVER_SSL_KEYSTOREPASSWORD=&amp;lt;im-Passwortmanager&amp;gt;&lt;br /&gt;
 SERVER_SSL_KEYSTORETYPE=JKS&lt;br /&gt;
 SERVER_SSL_TRUSTSTORE=/opt/app/keys/truststore.jks&lt;br /&gt;
 SERVER_SSL_TRUSTSTOREPASSWORD=&amp;lt;im-Passwortmanager&amp;gt;&lt;br /&gt;
 SERVER_SSL_CLIENTAUTH=need&lt;br /&gt;
 MEGBES_INTERNAL_STATION_CONTROLLED=&amp;lt;true-oder-false&amp;gt;&lt;br /&gt;
 STATION_TIMER_SECONDS=&amp;lt;Projektwert&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Schreibweise der Variablennamen nicht verändern. Platzhalter vollständig ersetzen. Keine Kommentare hinter Werte schreiben, sofern nicht sicher bekannt ist, dass die Laufzeit sie unterstützt.&lt;br /&gt;
&lt;br /&gt;
Datei schützen:&lt;br /&gt;
&lt;br /&gt;
 chmod 600 /home/&amp;lt;Benutzer&amp;gt;/megbes/&amp;lt;Projekt&amp;gt;/&amp;lt;Projekt&amp;gt;.env&lt;br /&gt;
 ls -l /home/&amp;lt;Benutzer&amp;gt;/megbes/&amp;lt;Projekt&amp;gt;/&amp;lt;Projekt&amp;gt;.env&lt;br /&gt;
&lt;br /&gt;
Erwartete Rechte sind `-rw-------`.&lt;br /&gt;
&lt;br /&gt;
== 4. Zertifikate übertragen ==&lt;br /&gt;
&lt;br /&gt;
Key- und Truststore in den Zertifikatsordner kopieren, beispielsweise mit WinSCP. Danach auf dem Server prüfen:&lt;br /&gt;
&lt;br /&gt;
 ls -l /home/&amp;lt;Benutzer&amp;gt;/megbes/&amp;lt;Projekt&amp;gt;/certs&lt;br /&gt;
&lt;br /&gt;
Die in der Umgebungsdatei genannten Dateinamen müssen exakt mit den übertragenen Dateien übereinstimmen. Groß-/Kleinschreibung ist unter Linux relevant.&lt;br /&gt;
&lt;br /&gt;
Dateien vor unberechtigtem Zugriff schützen:&lt;br /&gt;
&lt;br /&gt;
 chmod 600 /home/&amp;lt;Benutzer&amp;gt;/megbes/&amp;lt;Projekt&amp;gt;/certs/*&lt;br /&gt;
&lt;br /&gt;
== 5. Bei Docker Hub anmelden, falls erforderlich ==&lt;br /&gt;
&lt;br /&gt;
 docker login --username &amp;lt;Docker-Benutzername&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Passwort wird anschließend verdeckt abgefragt. Es darf nicht direkt in die Befehlszeile geschrieben werden. Falls das Image ohne Anmeldung geladen werden kann, ist dieser Schritt nicht erforderlich.&lt;br /&gt;
&lt;br /&gt;
== 6. Gewünschtes Image laden ==&lt;br /&gt;
&lt;br /&gt;
 docker pull tinetronics/megbes-internal:&amp;lt;RELEASE&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispiel für den aktuellen Release-Namen:&lt;br /&gt;
&lt;br /&gt;
 docker pull tinetronics/megbes-internal:AUGUST-2026-2-RELEASE&lt;br /&gt;
&lt;br /&gt;
Vor dem produktiven Einsatz muss geprüft sein, ob dieses Projekt tatsächlich diesen Release erhalten soll.&lt;br /&gt;
&lt;br /&gt;
Kontrolle:&lt;br /&gt;
&lt;br /&gt;
 docker image ls tinetronics/megbes-internal&lt;br /&gt;
&lt;br /&gt;
== 7. Container starten ==&lt;br /&gt;
&lt;br /&gt;
Allgemeine Vorlage – jeden Platzhalter ersetzen:&lt;br /&gt;
&lt;br /&gt;
 docker run -d \&lt;br /&gt;
   --restart unless-stopped \&lt;br /&gt;
   -p &amp;lt;HOST-TCP-PORT&amp;gt;:8080 \&lt;br /&gt;
   -p &amp;lt;UDP-PORT&amp;gt;:&amp;lt;UDP-PORT&amp;gt;/udp \&lt;br /&gt;
   --env-file /home/&amp;lt;Benutzer&amp;gt;/megbes/&amp;lt;Projekt&amp;gt;/&amp;lt;Projekt&amp;gt;.env \&lt;br /&gt;
   --name megbes-internal-&amp;lt;Projekt&amp;gt; \&lt;br /&gt;
   -v /home/&amp;lt;Benutzer&amp;gt;/megbes/&amp;lt;Projekt&amp;gt;/certs:/opt/app/keys \&lt;br /&gt;
   tinetronics/megbes-internal:&amp;lt;RELEASE&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vor Enter die fertige Befehlszeile mit den Projektwerten vergleichen. Keine Vorlage eines anderen Kunden ungeprüft übernehmen.&lt;br /&gt;
&lt;br /&gt;
== Bedeutung der Parameter ==&lt;br /&gt;
&lt;br /&gt;
; `docker run -d`&lt;br /&gt;
: Erstellt und startet den Container im Hintergrund.&lt;br /&gt;
&lt;br /&gt;
; `--restart unless-stopped`&lt;br /&gt;
: Startet den Container nach Docker- oder Serverneustarts automatisch, außer er wurde zuvor bewusst manuell gestoppt.&lt;br /&gt;
&lt;br /&gt;
; `-p &amp;lt;HOST-TCP-PORT&amp;gt;:8080`&lt;br /&gt;
: Leitet den projektspezifischen TCP-Port des Servers auf Port 8080 im Container.&lt;br /&gt;
&lt;br /&gt;
; `-p &amp;lt;UDP-PORT&amp;gt;:&amp;lt;UDP-PORT&amp;gt;/udp`&lt;br /&gt;
: Stellt den UDP-Port für Status- und Init-Meldungen bereit. Host-, Container- und Umgebungswert müssen zusammenpassen.&lt;br /&gt;
&lt;br /&gt;
; `--env-file ...`&lt;br /&gt;
: Übergibt die geschützte Projektkonfiguration.&lt;br /&gt;
&lt;br /&gt;
; `--name ...`&lt;br /&gt;
: Vergibt einen eindeutigen Container-Namen.&lt;br /&gt;
&lt;br /&gt;
; `-v ...:/opt/app/keys`&lt;br /&gt;
: Bindet den Zertifikatsordner des Servers in den Container ein.&lt;br /&gt;
&lt;br /&gt;
; `tinetronics/megbes-internal:&amp;lt;RELEASE&amp;gt;`&lt;br /&gt;
: Legt Image und Release fest.&lt;br /&gt;
&lt;br /&gt;
== 8. Start kontrollieren ==&lt;br /&gt;
&lt;br /&gt;
 docker ps&lt;br /&gt;
&lt;br /&gt;
Der neue Container muss mit dem Zustand `Up` erscheinen.&lt;br /&gt;
&lt;br /&gt;
Logs prüfen:&lt;br /&gt;
&lt;br /&gt;
 docker logs --tail 100 megbes-internal-&amp;lt;Projekt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei fortlaufender Anzeige:&lt;br /&gt;
&lt;br /&gt;
 docker logs --follow megbes-internal-&amp;lt;Projekt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit `Strg+C` wird nur die Loganzeige beendet, nicht der Container.&lt;br /&gt;
&lt;br /&gt;
== 9. Konfiguration kontrollieren ==&lt;br /&gt;
&lt;br /&gt;
Neustartregel:&lt;br /&gt;
&lt;br /&gt;
 docker inspect -f &amp;#039;{{.HostConfig.RestartPolicy.Name}}&amp;#039; megbes-internal-&amp;lt;Projekt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Erwartet:&lt;br /&gt;
&lt;br /&gt;
 unless-stopped&lt;br /&gt;
&lt;br /&gt;
Portzuordnungen:&lt;br /&gt;
&lt;br /&gt;
 docker port megbes-internal-&amp;lt;Projekt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Eingebundene Ordner:&lt;br /&gt;
&lt;br /&gt;
 docker inspect -f &amp;#039;{{json .Mounts}}&amp;#039; megbes-internal-&amp;lt;Projekt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Inspect-Ausgaben können interne Pfade und Konfigurationsdetails enthalten; nicht ungeprüft ins Wiki kopieren.&lt;br /&gt;
&lt;br /&gt;
== 10. Funktionstest ==&lt;br /&gt;
&lt;br /&gt;
# Erreichbarkeit vom vorgesehenen External-System testen.&lt;br /&gt;
# Status-Monitor prüfen.&lt;br /&gt;
# abgestimmten ungefährlichen Stationsbefehl senden.&lt;br /&gt;
# prüfen, dass ausschließlich die richtige Station reagiert.&lt;br /&gt;
# Init-/Statusmeldung testen.&lt;br /&gt;
# bei stationsgesteuerten Projekten Zustände und Timer prüfen.&lt;br /&gt;
&lt;br /&gt;
== 11. Neustarttest ==&lt;br /&gt;
&lt;br /&gt;
 sudo reboot&lt;br /&gt;
&lt;br /&gt;
Nach erneuter Anmeldung:&lt;br /&gt;
&lt;br /&gt;
 systemctl status docker --no-pager&lt;br /&gt;
 docker ps&lt;br /&gt;
 docker logs --tail 100 megbes-internal-&amp;lt;Projekt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Container und Kommunikation müssen automatisch wieder funktionieren.&lt;br /&gt;
&lt;br /&gt;
== Typische Fehler ==&lt;br /&gt;
&lt;br /&gt;
; Container erscheint nicht in `docker ps`&lt;br /&gt;
: Mit `docker ps -a` auch beendete Container anzeigen und anschließend Logs lesen.&lt;br /&gt;
&lt;br /&gt;
; `port is already allocated`&lt;br /&gt;
: Der gewählte Host-Port ist bereits belegt. Mit `docker ps` und `sudo ss -lntup` prüfen; keinen zufälligen anderen Port wählen, ohne External-Konfiguration und Router anzupassen.&lt;br /&gt;
&lt;br /&gt;
; Zertifikatsfehler&lt;br /&gt;
: Dateinamen, Mount-Pfad, Kennwörter und Zuordnung zum Projekt prüfen.&lt;br /&gt;
&lt;br /&gt;
; Image kann nicht geladen werden&lt;br /&gt;
: Release-Schreibweise und Docker-Hub-Anmeldung prüfen.&lt;br /&gt;
&lt;br /&gt;
; Neustartschleife&lt;br /&gt;
: `docker ps -a` und `docker logs` prüfen. Nicht wiederholt neue Container mit anderen Namen erzeugen.&lt;br /&gt;
&lt;br /&gt;
== Projektdokumentation ==&lt;br /&gt;
&lt;br /&gt;
Container-Name, Ports, Subnetz, Release, Dateipfade, Stations-Timer, Installationsdatum und Testergebnis auf der Projektseite eintragen. Geheimwerte ausschließlich im Passwortmanager speichern.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:MegBes]]&lt;br /&gt;
[[Kategorie:megbes-internal]]&lt;br /&gt;
[[Kategorie:Installation]]&lt;/div&gt;</summary>
		<author><name>Clawtronics</name></author>
	</entry>
</feed>