<?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>Rotkohlsuppe &#8211; Alles rein da</title>
	<atom:link href="https://rotkohlsuppe.de/feed/" rel="self" type="application/rss+xml" />
	<link>https://rotkohlsuppe.de</link>
	<description>Design, Fotografie, Werbung</description>
	<lastBuildDate>Sat, 16 Nov 2024 22:36:31 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.2.6</generator>
	<item>
		<title>Kodi Remote SSH Filesharing</title>
		<link>https://rotkohlsuppe.de/2024/kodi-remote-ssh-filesharing/</link>
					<comments>https://rotkohlsuppe.de/2024/kodi-remote-ssh-filesharing/#respond</comments>
		
		<dc:creator><![CDATA[Clemens]]></dc:creator>
		<pubDate>Fri, 15 Nov 2024 09:59:01 +0000</pubDate>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[Technik]]></category>
		<category><![CDATA[Connect]]></category>
		<category><![CDATA[Filesharing]]></category>
		<category><![CDATA[Kodi]]></category>
		<category><![CDATA[local]]></category>
		<category><![CDATA[NAS]]></category>
		<category><![CDATA[Raspberry Pi]]></category>
		<category><![CDATA[remote]]></category>
		<category><![CDATA[SSH]]></category>
		<category><![CDATA[Tunnel]]></category>
		<guid isPermaLink="false">https://rotkohlsuppe.de/?p=2386</guid>

					<description><![CDATA[Ich habe einen Raspberry Pi mit Kodi vor Ort und ein entferntes NAS, von dem ich Multimedia Daten auf den Kodi streamen wollte. Jetzt wollte ich keine Löcher in die Firewall des entfernten NAS schießen und auch keinen Wireguard VPN Server darauf installieren. Ich habe aus Sicherheitsgründen lediglich die SSH bzw. SFTP Möglichkeit zur Verfügung, [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Ich habe einen Raspberry Pi mit Kodi vor Ort und ein entferntes NAS, von dem ich Multimedia Daten auf den Kodi streamen wollte. Jetzt wollte ich keine Löcher in die Firewall des entfernten NAS schießen und auch keinen Wireguard VPN Server darauf installieren. Ich habe aus Sicherheitsgründen lediglich die SSH bzw. SFTP Möglichkeit zur Verfügung, um mit dem NAS zu kommunizieren. Aus Sicherheitsgründen ist aber die Verbindung mit Passwort auf dem NAS nicht erlaubt (stattdessen nur SSH Keys) und damit kann ich mit Kodi nicht über die &#8220;Remote Shares&#8221; der Kodi GUI auf das NAS zugreifen. Die gehen nämlich nur mit Passwort.</p>



<p>Ich habe versucht über einen Local SSH Tunnel auf das NAS zu kommen, um darüber eine Datenverbindung aufzubauen. Da mein Versuch am Ende erfolgreich war, möchte ich die Lösung hier teilen:</p>



<p>Erst mal muss man sich für die Konfiguration mit root@&lt;hostname> auf dem Kodi im lokalen Netzwerk anmelden. Dann findet man unter <code>/storage/.config/autostart.sh</code> eine Datei, in der man Befehle eintragen kann, die Kodi beim Start ausführt. Also der perfekte Ort um eine SSH Verbindung zum NAS beim Start des Kodi aufzubauen. Das mache ich mit dem Befehl <code>ssh &lt;user>@&lt;adresse> -i &lt;IdentityFile> (anlegen, wenn nicht vorhanden) -p &lt;port> -f (background) -T (kein Terminalemulator) -L 5005:localhost:5005 sleep 14d</code></p>



<p><code>sleep 14d</code> hält die Remote Verbindung für 14 Tage offen. Ohne dieses Kommando würde sich die SSH Verbindung sofort wieder schließen.</p>



<p>Mit diesem Befehl baue ich eine Verbindung zum WebDAV Dienst auf dem NAS auf, ohne SSL Verschlüsselung, weil alles lokal.</p>



<p>Um schließlich auf die Daten auf dem NAS mit Kodi zugreifen zu können, muss ich in Kodi noch ein neues Network-Share hinzufügen. Als Dienst gebe ich natürlich WebDAV an und nutze meine normalen Zugangsdaten. Allerdings mit der Adresse localhost bzw. 127.0.0.1 und Port 5005.</p>



<p>Die Daten fließen nun durch den verschlüsselten Tunnel zum Kodi.  </p>
]]></content:encoded>
					
					<wfw:commentRss>https://rotkohlsuppe.de/2024/kodi-remote-ssh-filesharing/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>ImageMagick Format Konvertierungen</title>
		<link>https://rotkohlsuppe.de/2023/imagemagick-format-konvertierungen/</link>
					<comments>https://rotkohlsuppe.de/2023/imagemagick-format-konvertierungen/#respond</comments>
		
		<dc:creator><![CDATA[Clemens]]></dc:creator>
		<pubDate>Wed, 13 Sep 2023 15:56:36 +0000</pubDate>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[Technik]]></category>
		<category><![CDATA[Bildkonvertierung]]></category>
		<category><![CDATA[CLI]]></category>
		<category><![CDATA[convert]]></category>
		<category><![CDATA[find]]></category>
		<category><![CDATA[Image]]></category>
		<category><![CDATA[Image conversion]]></category>
		<category><![CDATA[ImageMagick]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[macos]]></category>
		<category><![CDATA[man]]></category>
		<category><![CDATA[Terminal]]></category>
		<category><![CDATA[xargs]]></category>
		<guid isPermaLink="false">https://rotkohlsuppe.de/?p=2368</guid>

					<description><![CDATA[Umwandlung aller Bilder eines Types aus verschiedenen Unterordnern in ein spezielles Verzeichnis Wenn du mehrere Unterverzeichnisse hast, über die vertreut Bilddateien liegen, die du platzsparend kleinrechnen und in ein eigenes Verzeichnis abspeichern willst, dann probiere diesen Code aus: Ich hatte viele große TIF Dateien vom Fotografen aus mehreren WeTransfer ZIP Dateien extrahiert, die nun in [&#8230;]]]></description>
										<content:encoded><![CDATA[
<h1 class="wp-block-heading">Umwandlung aller Bilder eines Types aus verschiedenen Unterordnern in ein spezielles Verzeichnis</h1>



<p>Wenn du mehrere Unterverzeichnisse hast, über die vertreut Bilddateien liegen, die du platzsparend kleinrechnen und in ein eigenes Verzeichnis abspeichern willst, dann probiere diesen Code aus:</p>



<pre class="wp-block-code"><code>
find . -name *.TIF -print0 | \
xargs -n1 -0 -I% sh -c \
'convert -format jpg -quality 80 \
"%" klein/$(basename "%" .TIF).jpg'

# find: Dateien suchen
# Pipe zu xargs
# führt ein Shell Kommando mit convert aus
# schreibt alle Dateien in ein! Unterverzeichnis
</code></pre>


<div class="inline-block"></div>


<p>Ich hatte viele große TIF Dateien vom Fotografen aus mehreren WeTransfer ZIP Dateien extrahiert, die nun in verschiedenen Ordnern verstreut lagen. Eine Datei wog über 100 MB. Die vielen überflüssigen GB Speicherplatz wollte ich wieder auflösen.</p>



<p>Ein <code>find . -name *.TIF</code> sucht rekursiv nach allen TIF Dateien.<br><code>-print0</code> sorgt dafür dass ein null character als Trennzeichen gesetzt wird, weil sonst Leerzeichen in den Ordnernamen für Falschinterpretationen nach der Pipe entstehen können.</p>



<p><code><a rel="noreferrer noopener" href="https://linux.die.net/man/1/xargs" data-type="URL" data-id="https://linux.die.net/man/1/xargs" target="_blank">xargs</a> -n1</code> führt maximal ein Argument im nachfolgenden Befehl aus<br><code>-0</code> löst die null character als Trennzeichen auf<br><code>-I%</code> ist der Platzhalter für den Pfad/Dateinamen der gefundenen Datei<br><code>sh -c</code> führt ein Shell Kommando von einem String aus, das in einfachen Anführungszeichen folgt:<br><code>convert -format jpg -quality 80</code> stellt die Konvertierung auf JPG und Qualität 80% ein.<br><code>"%"</code> Damit die Leerzeichen richtig interpretiert werden muss der Platzhalter in Anführungszeichen stehen.<br><code>$(basename "%" .TIF).jpg</code> sorgt dafür, dass nur der Dateiname vom Platzhalter verwendet wird und das .TIF ausgelassen wird, so dass ich lediglich die Endung jpg am Ende habe.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://rotkohlsuppe.de/2023/imagemagick-format-konvertierungen/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Mac Laptop akkuschonend schlafen legen</title>
		<link>https://rotkohlsuppe.de/2023/mac-laptop-akkuschonend-schlafen-legen/</link>
					<comments>https://rotkohlsuppe.de/2023/mac-laptop-akkuschonend-schlafen-legen/#respond</comments>
		
		<dc:creator><![CDATA[Clemens]]></dc:creator>
		<pubDate>Wed, 21 Jun 2023 07:49:13 +0000</pubDate>
				<category><![CDATA[Technik]]></category>
		<category><![CDATA[Akku]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[ausschalten]]></category>
		<category><![CDATA[CLI]]></category>
		<category><![CDATA[Commandline]]></category>
		<category><![CDATA[Energie]]></category>
		<category><![CDATA[hibernation]]></category>
		<category><![CDATA[Kommandozeile]]></category>
		<category><![CDATA[laden]]></category>
		<category><![CDATA[Laptop]]></category>
		<category><![CDATA[lidwake]]></category>
		<category><![CDATA[OSX]]></category>
		<category><![CDATA[pmset]]></category>
		<category><![CDATA[RAM]]></category>
		<category><![CDATA[Ruhezustand]]></category>
		<category><![CDATA[safe sleep]]></category>
		<category><![CDATA[schlafen]]></category>
		<category><![CDATA[sleep]]></category>
		<category><![CDATA[SSD]]></category>
		<category><![CDATA[Strom sparen]]></category>
		<category><![CDATA[sudo]]></category>
		<category><![CDATA[Terminal]]></category>
		<guid isPermaLink="false">http://rotkohlsuppe.de/?p=2236</guid>

					<description><![CDATA[Solange der Laptop Zuhause steht, habe ich ihn am Strom angeschlossen. So spare ich an Ladezyklen, die den Akku altern lassen würden. Natürlich ist ein voller Akku auch nicht der Optimalzusand für Li-Ion Akkus, aber besser so, als ständig zwischen 30% und 80% zu pendeln. Ich nehme hier die Degenration durch den permanenten Vollzustand in [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Solange der Laptop Zuhause steht, habe ich ihn am Strom angeschlossen. So spare ich an Ladezyklen, die den Akku altern lassen würden. Natürlich ist ein voller Akku auch nicht der Optimalzusand für Li-Ion Akkus, aber besser so, als ständig zwischen 30% und 80% zu pendeln. Ich nehme hier die Degenration durch den permanenten Vollzustand in Kauf, in der Annahme, dass es das geringere Übel für den Akku ist.</p>
<p>Der Akku entlädt sich aber über einen längeren Zeitraum von alleine. Fällt seine Kapazität auf unter 95%, wird er über das Netzteil auf 100% nachgeladen. Wer also den eingebauten Akku schonen will, weil der Laptop meistens auf dem Schreibtisch steht, versucht meiner Meinung nach den Ladezustand über 95% so lange wie möglich zu halten.</p>
<p>Wenn man aber den Laptop transportiert, um ihn an anderer Stelle wieder mit dem Stromnetz zu verbinden, z.B. bei einem Arbeit- oder Auftraggeber oder bei Freunden, dann kann es sein, dass er am Zielort bereits 1% oder mehr an Kapazität verloren hat, weil er im zugeklappten Zustand auch Strom verbraucht.</p>
<p>Der Verlust an Kapzität tritt auf, wenn man ihn in den Ruhemodus versetzt, z.B. in dem man ihn zuklappt und anschließend vom Stromnetz trennt. Im Ruhezustand behält er den aktuellen Systemzustand im RAM. Das sorgt dafür, dass er nach dem Aufklappen fast instantan den Zustand aufrufen kann, an dem den Laptop schlafen legte. Denn aus dem RAM lässt sich bekanntlich am schnellsten lesen.</p>
<p>Nun verbraucht das Speichern der Daten im RAM aber Strom, den er sich aus dem Akku holen muss. Darum verliert der Laptop während des Transportes Strom.</p>
<h1>Lösung</h1>
<p>Man kann unter OSX (macOS) einstellen, wie der Hibernation-Zustand, der Ruhemodus, ausgeführt wird. Es gibt mehrere Varianten:</p>
<p>Speichern des System-Zustandes</p>
<ul>
<li>(0) Systemzustand nur im RAM gespeichert (geht der Akku auf 0%: Totalverlust)</li>
<li>(25) nur auf der Festplatte gespeichert (langsames speichern und laden des Zustands)</li>
<li>(3) im RAM und auf Festplatte gespeichert (safe sleep &#8211; Standard)</li>
</ul>
<p>Eine Änderung an den Systemeinstellungen kann man über das Terminal, die Kommandozeile vornehmen. Man kann mit <code>pmset -g</code> erfahren, welche Power Management Settings gesetzt sind. Hinter dem Stichwort <code>hibernationmode</code> steht eine Zahl, die für den Modus steht (s.o.). Will man den Modus auf akkuschonenenden Festplattenmodus stellen, muss man <code>sudo pmset -a hibernationmode 25</code> eingeben und anschließend neu starten. Anschließend kann man das sleepimage aus dem Pfad /private/var/vm mit <code>sudo rm -f /private/var/vm/sleepimage</code> löschen und einiges an Platz auf der Festplatte frei machen.</p>
<p>Im Modus 25 wird der Zwischenstand allein auf die Festplatte geschrieben, was bei einer SSD kaum Zeit benötigt. Dann wird der Rechner komplett ausgeschaltet und kann durch Drücken auf den Powerknopf wieder geweckt werden. Man verliert (fast) keinen Strom unterwegs.<br />
Es gibt aber einige Fallen die unterwegs doch für Akkuverlust sorgen könnten. Der Rechner startet (bei mir) alle 2 Stunden, um sich dem Netzwerk zu zeigen. Das sollte man unterbinden mit <code>sudo pmset -a ttyskeepawake 0</code>. Dass er nicht gleich beim Öffnen des Deckels angeht, sollte man <code>sudo pmset lidwake 0</code> setzen.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://rotkohlsuppe.de/2023/mac-laptop-akkuschonend-schlafen-legen/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>PiHole, DHCP, und lokale Namensauflösung</title>
		<link>https://rotkohlsuppe.de/2021/pihole-dhcp-und-lokale-namensauflosung/</link>
					<comments>https://rotkohlsuppe.de/2021/pihole-dhcp-und-lokale-namensauflosung/#respond</comments>
		
		<dc:creator><![CDATA[Clemens]]></dc:creator>
		<pubDate>Fri, 02 Jul 2021 12:47:15 +0000</pubDate>
				<category><![CDATA[Programme]]></category>
		<category><![CDATA[Technik]]></category>
		<category><![CDATA[DHCP]]></category>
		<category><![CDATA[DNS]]></category>
		<category><![CDATA[Docker]]></category>
		<category><![CDATA[Edge Router]]></category>
		<category><![CDATA[Hostname]]></category>
		<category><![CDATA[local]]></category>
		<category><![CDATA[lokal]]></category>
		<category><![CDATA[PiHole]]></category>
		<category><![CDATA[Server]]></category>
		<category><![CDATA[Synology]]></category>
		<category><![CDATA[Ubiquity]]></category>
		<guid isPermaLink="false">https://rotkohlsuppe.de/?p=2332</guid>

					<description><![CDATA[Ich habe auf meiner Synology DiskStation den Pi Hole im Docker Container eingerichtet. Die DHCP Funktion habe ich aber abgestellt, weil ich nicht erkannt habe, dass ich damit meine VLAN DHCP Zuweisung aus dem Edge Router abbilden kann. Darum bin ich darauf angewiesen die DHCP Funktion des Routers weiter zu nutzen. Wie geht also die [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Ich habe auf meiner Synology DiskStation den Pi Hole im Docker Container eingerichtet. Die DHCP Funktion habe ich aber abgestellt, weil ich nicht erkannt habe, dass ich damit meine VLAN DHCP Zuweisung aus dem Edge Router abbilden kann. Darum bin ich darauf angewiesen die DHCP Funktion des Routers weiter zu nutzen.</p>



<h1 class="wp-block-heading">Wie geht also die Einrichtung, wenn PiHole nur als DNS Server arbeiten soll, danach aber noch, quasi als Fallback, der Router kommt, der die lokale DNS Auflösung übernimmt?</h1>



<p>In der Frage steckt schon ein Teil der Antwort. Mein DHCP Server vergibt als DNS Server 1 die lokale Adresse vom PiHole. Er selber löst DNS Adressen <strong>nicht</strong> über den PiHole auf. Er ist das Gateway und löst die DNS über den externen DNS Dienst auf, den ich normalerweise im PiHole angeben würde. Statt dass ich den externen DNS Server jetzt im PiHole angebe, gebe ich als externen DNS Server den Router an. Der nimmt jetzt alle Anfragen entgegen: die für die lokalen Adressen und die gefilterten externen Adressen. Damit werden die lokalen Adressen richtig aufglöst und die externen werden nach aussen geleitet. Zwar ohne DNSSEC und DoT, etc. aber das ist vielleicht nicht so problematisch, wenn es nur um den Filter geht.</p>



<figure class="wp-block-image size-medium"><a href="https://rotkohlsuppe.de/wp-content/uploads/2021/07/Bildschirmfoto-2021-07-01-um-18.34.09-scaled.jpg" target="_blank" rel="noopener"><img decoding="async" width="500" height="246" src="https://rotkohlsuppe.de/wp-content/uploads/2021/07/Bildschirmfoto-2021-07-01-um-18.34.09-500x246.jpg" alt="Edge Router Nameserver einstellen" class="wp-image-2334" srcset="https://rotkohlsuppe.de/wp-content/uploads/2021/07/Bildschirmfoto-2021-07-01-um-18.34.09-500x246.jpg 500w, https://rotkohlsuppe.de/wp-content/uploads/2021/07/Bildschirmfoto-2021-07-01-um-18.34.09-1200x590.jpg 1200w, https://rotkohlsuppe.de/wp-content/uploads/2021/07/Bildschirmfoto-2021-07-01-um-18.34.09-250x123.jpg 250w, https://rotkohlsuppe.de/wp-content/uploads/2021/07/Bildschirmfoto-2021-07-01-um-18.34.09-768x378.jpg 768w, https://rotkohlsuppe.de/wp-content/uploads/2021/07/Bildschirmfoto-2021-07-01-um-18.34.09-1536x755.jpg 1536w, https://rotkohlsuppe.de/wp-content/uploads/2021/07/Bildschirmfoto-2021-07-01-um-18.34.09-2048x1007.jpg 2048w" sizes="(max-width: 500px) 100vw, 500px" /></a><figcaption>Hier stellt man den Nameserver im Edge ein</figcaption></figure>



<figure class="wp-block-image size-medium"><a href="https://rotkohlsuppe.de/wp-content/uploads/2021/07/Bildschirmfoto-2021-07-01-um-18.31.56.png" target="_blank" rel="noopener"><img decoding="async" loading="lazy" width="500" height="167" src="https://rotkohlsuppe.de/wp-content/uploads/2021/07/Bildschirmfoto-2021-07-01-um-18.31.56-500x167.png" alt="PiHole Settings für lokale DNS Server" class="wp-image-2333" srcset="https://rotkohlsuppe.de/wp-content/uploads/2021/07/Bildschirmfoto-2021-07-01-um-18.31.56-500x167.png 500w, https://rotkohlsuppe.de/wp-content/uploads/2021/07/Bildschirmfoto-2021-07-01-um-18.31.56-1200x402.png 1200w, https://rotkohlsuppe.de/wp-content/uploads/2021/07/Bildschirmfoto-2021-07-01-um-18.31.56-250x84.png 250w, https://rotkohlsuppe.de/wp-content/uploads/2021/07/Bildschirmfoto-2021-07-01-um-18.31.56-768x257.png 768w, https://rotkohlsuppe.de/wp-content/uploads/2021/07/Bildschirmfoto-2021-07-01-um-18.31.56-1536x514.png 1536w, https://rotkohlsuppe.de/wp-content/uploads/2021/07/Bildschirmfoto-2021-07-01-um-18.31.56-2048x686.png 2048w" sizes="(max-width: 500px) 100vw, 500px" /></a><figcaption>Hier stellt man den Router als DNS Server ein</figcaption></figure>



<p>Also noch mal: der DHCP Server im Router teilt den Clients mit, dass ihr DNS Server der PiHole ist. Der PiHole ist jetzt der erste DNS Server im Netzwerk. Im PiHole stellt man für die externe DNS Auflösung nicht Quad9, OpenDNS, Cloudflare oder was auch immer ein, sondern gibt die IP des Routers ein <code>(Settings > DNS)</code>. Und dem Router sagt man, dass der DNS Anfragen dann über den externen DNS Server seiner Wahl übernimmt. Im Fall des Edge Routers ist das in der Leiste am untersten Bildrand (System > Nameserver</p>
]]></content:encoded>
					
					<wfw:commentRss>https://rotkohlsuppe.de/2021/pihole-dhcp-und-lokale-namensauflosung/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>DisplayPort: Helligkeit und Lautstärke beim Mac steuern</title>
		<link>https://rotkohlsuppe.de/2020/displayport-helligkeit-und-lautstarke-beim-mac-steuern/</link>
					<comments>https://rotkohlsuppe.de/2020/displayport-helligkeit-und-lautstarke-beim-mac-steuern/#respond</comments>
		
		<dc:creator><![CDATA[Clemens]]></dc:creator>
		<pubDate>Mon, 27 Jan 2020 09:43:22 +0000</pubDate>
				<category><![CDATA[Programme]]></category>
		<category><![CDATA[Technik]]></category>
		<category><![CDATA[ändern]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[Brightness]]></category>
		<category><![CDATA[DDC]]></category>
		<category><![CDATA[Display Port]]></category>
		<category><![CDATA[DP]]></category>
		<category><![CDATA[einstellen]]></category>
		<category><![CDATA[Helligkeit]]></category>
		<category><![CDATA[Lautstärke]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[macos]]></category>
		<category><![CDATA[OSS]]></category>
		<category><![CDATA[OSX]]></category>
		<category><![CDATA[Programm]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[steuern]]></category>
		<category><![CDATA[Tasten]]></category>
		<category><![CDATA[Volume]]></category>
		<guid isPermaLink="false">http://rotkohlsuppe.de/?p=2317</guid>

					<description><![CDATA[Mein Monitor wird über DisplayPort angesprochen, von meinem 2015 Mac. Leider kann ich über die Systemeinstellungen weder die eingebauten Lautsprecher lauter oder leiser machen, noch die Helligkeit regeln. Doch dafür habe ich ein kleines Programm gefunden (MonitorControl, OpenSource), das mir die gewünschen Schieberegler zur Verfügung stellt. Entweder als DMG herunter zu laden oder als Homebrew [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><img decoding="async" loading="lazy" src="http://rotkohlsuppe.de/wp-content/uploads/2020/01/Bildschirmfoto-2020-01-27-um-10.39.02.png" alt="Bildschirmfoto 2020-01-27 um 10.39.02" width="247" height="255" class="alignnone size-full wp-image-2321" srcset="https://rotkohlsuppe.de/wp-content/uploads/2020/01/Bildschirmfoto-2020-01-27-um-10.39.02.png 247w, https://rotkohlsuppe.de/wp-content/uploads/2020/01/Bildschirmfoto-2020-01-27-um-10.39.02-242x250.png 242w" sizes="(max-width: 247px) 100vw, 247px" /></p>
<div class="layer_outline"><strong>Mein Monitor wird über DisplayPort angesprochen</strong>, von meinem 2015 Mac. Leider kann ich über die Systemeinstellungen weder die eingebauten Lautsprecher lauter oder leiser machen, noch die Helligkeit regeln. Doch dafür habe ich ein kleines Programm gefunden (<a href="https://github.com/the0neyouseek/MonitorControl" rel="noopener" target="_blank">MonitorControl, OpenSource</a>), das mir die gewünschen Schieberegler zur Verfügung stellt. Entweder als <a href="https://github.com/the0neyouseek/MonitorControl/releases/latest" rel="noopener" target="_blank">DMG herunter zu laden</a> oder als Homebrew Cask: <code>brew cask install monitorcontrol</code>.</div>
]]></content:encoded>
					
					<wfw:commentRss>https://rotkohlsuppe.de/2020/displayport-helligkeit-und-lautstarke-beim-mac-steuern/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>OpenElec SSH „PasswordAuthentication no“</title>
		<link>https://rotkohlsuppe.de/2019/openelec-ssh-passwordauthentication-no/</link>
					<comments>https://rotkohlsuppe.de/2019/openelec-ssh-passwordauthentication-no/#respond</comments>
		
		<dc:creator><![CDATA[Clemens]]></dc:creator>
		<pubDate>Sun, 06 Jan 2019 00:39:48 +0000</pubDate>
				<category><![CDATA[Programme]]></category>
		<category><![CDATA[Auth]]></category>
		<category><![CDATA[Daemon]]></category>
		<category><![CDATA[key]]></category>
		<category><![CDATA[Openelec]]></category>
		<category><![CDATA[PasswordAuthentication]]></category>
		<category><![CDATA[Passwort]]></category>
		<category><![CDATA[Raspberry Pi]]></category>
		<category><![CDATA[read-only]]></category>
		<category><![CDATA[SSH]]></category>
		<category><![CDATA[sshd]]></category>
		<guid isPermaLink="false">http://rotkohlsuppe.de/?p=2303</guid>

					<description><![CDATA[Ich wollte für einen Bekannten ein OpenElec (Kodi) auf einem RaspberryPi via SSH nach außen zugänglich machen. Das eigentliche Problem ist, dass man die Zugangsdaten (Username root oder Passwort openelec) in der Kommandozeile nicht ändern kann, aufgrund von deaktiviertem sudo. So entsteht, wenn man eine Portweiterleitung im Router auf den Raspberry einstellt, eine unangenehme Sicherheitslücke. [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><img decoding="async" loading="lazy" src="http://rotkohlsuppe.de/wp-content/uploads/2019/01/titel-500x250.png" alt="OpenElec SSH" width="500" height="250" class="alignnone size-medium wp-image-2314" srcset="https://rotkohlsuppe.de/wp-content/uploads/2019/01/titel-500x250.png 500w, https://rotkohlsuppe.de/wp-content/uploads/2019/01/titel-250x125.png 250w, https://rotkohlsuppe.de/wp-content/uploads/2019/01/titel-768x384.png 768w, https://rotkohlsuppe.de/wp-content/uploads/2019/01/titel.png 800w" sizes="(max-width: 500px) 100vw, 500px" /></p>
<div class="layer_outline">Ich wollte für einen Bekannten ein OpenElec (Kodi) auf einem RaspberryPi via SSH nach außen zugänglich machen. Das eigentliche Problem ist, dass man die Zugangsdaten (Username <em>root</em> oder Passwort <em>openelec</em>) in der Kommandozeile nicht ändern kann, aufgrund von deaktiviertem sudo. So entsteht, wenn man eine Portweiterleitung im Router auf den Raspberry einstellt, eine unangenehme Sicherheitslücke. Wenn man das Passwort nicht ändern kann, bleibt noch die Möglichkeit den Zugang zu SSH über Passwörter zu deaktivieren. Schlau gedacht und damit <code>/etc/ssh/sshd_config</code> angepasst: <strong>PasswordAuthentication no</strong>. Schade, das Filesystem ist read-only, speichern nicht möglich. Einen Remount mit <code>rw</code> ging nicht.</p>
<p>Aber man kann dem SSHDaemon trotzdem Startparameter unterschieben.<br />
Der SSHD Start wird in folgender Datei definiert:<br />
<code>/usr/lib/systemd/system/sshd.service</code>.<br />
Und die sucht Konfigurationen wiederum hier:<br />
<code>/storage/.cache/services/sshd.conf</code>.<br />
In Zeile 2 kann man nun folgendes eintragen:<br />
<code>SSH_ARGS="-o 'PasswordAuthentication no'"</code>.<br />
Beim nächsten Neustart ist die Passwortabfrage deaktiviert.<br />
Darum vorsicht, den Public Key vorher in<br />
<code>/storage/.ssh/authorized_keys</code> kopieren.</div>
<ul class="verweis">
<li><a href="https://www.openelec.tv/">OpenElec</a></li>
<li><a href="https://www.cyberciti.biz/faq/linux-unix-generating-ssh-keys/">Keys für SSH erzeugen</a></li>
</ul>
]]></content:encoded>
					
					<wfw:commentRss>https://rotkohlsuppe.de/2019/openelec-ssh-passwordauthentication-no/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Blockiertes Gast-Netzwerk umgehen</title>
		<link>https://rotkohlsuppe.de/2017/blockiertes-gast-netzwerk-umgehen/</link>
					<comments>https://rotkohlsuppe.de/2017/blockiertes-gast-netzwerk-umgehen/#respond</comments>
		
		<dc:creator><![CDATA[Clemens]]></dc:creator>
		<pubDate>Wed, 21 Jun 2017 22:24:12 +0000</pubDate>
				<category><![CDATA[Technik]]></category>
		<category><![CDATA[blockiert]]></category>
		<category><![CDATA[DiskStation]]></category>
		<category><![CDATA[Download]]></category>
		<category><![CDATA[Fehlermeldung]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Fritzbox]]></category>
		<category><![CDATA[Gast]]></category>
		<category><![CDATA[Gastnetzwerk]]></category>
		<category><![CDATA[Mail]]></category>
		<category><![CDATA[OpenVPN]]></category>
		<category><![CDATA[Port forwarding]]></category>
		<category><![CDATA[Ports]]></category>
		<category><![CDATA[Portweiterleitung]]></category>
		<category><![CDATA[Server]]></category>
		<category><![CDATA[SSH]]></category>
		<category><![CDATA[Standardport]]></category>
		<category><![CDATA[Synology]]></category>
		<category><![CDATA[Tunnel]]></category>
		<category><![CDATA[umgehen]]></category>
		<category><![CDATA[VPN]]></category>
		<category><![CDATA[Weiterleitung]]></category>
		<guid isPermaLink="false">http://rotkohlsuppe.de/?p=2282</guid>

					<description><![CDATA[Ports blockiert, wie umgehen Ich war neulich auf Reisen und bekam eine LTE Verbindung mit Volumenbegrenzung von 10GB spendiert. Problem war, dass ich von einer Flatrate ausgegangen war. Nun hatte ich darauf verzichtet vorher alle für die Arbeit benötigten Daten auf lokale Speichermedien zu kopieren, da ich dachte, dass ich ja auch später noch alles [&#8230;]]]></description>
										<content:encoded><![CDATA[<h1>Ports blockiert, wie umgehen</h1>
<p><strong>Ich war neulich auf Reisen und bekam eine LTE Verbindung mit Volumenbegrenzung von 10GB spendiert.</strong> Problem war, dass ich von einer Flatrate ausgegangen war. Nun hatte ich darauf verzichtet vorher alle für die Arbeit benötigten Daten auf lokale Speichermedien zu kopieren, da ich dachte, dass ich ja auch später noch alles was fehlt nachträglich über das Netz laden kann. Doch wenn man sich seine 10GB doch einteilen muss, sucht man nach anderen Internet-Quellen. Die nächste Flatratequelle war in diesem Fall ein kostenloses Gastnetzwerk in der Nähe. Auf diesem Gastnetzwerk waren nicht viele Ports offen: 80, 443, 25, 143, 993, 995, 8080, um den Großteil zu nennen. Alle Ports die ich für eine Downloadverbindung zum Server brauchte, waren verschlossen und da meine OpenVPN Verbindung auf UDP 1194 eingestellt war, kam ich damit auch nicht weiter.</p>
<h1 id="sshportweiterleitungamrouter">SSH Port Weiterleitung am Router</h1>
<p>Welche Ports blockiert werden, kann man ganz einfach mit <code>curl portquiz.net:993</code> herausfinden. Wobei 993 der Port ist, den man testen will. Die Seite <a href="http://portquiz.net/" target="_blank">portquiz.net</a> bietet auch noch andere Testvarianten.</p>
<p>Zum Hauptproblem fand ich mehrere Lösungswege. Der erste schien mir am schnellsten. Wollte ich doch zu erst meine SSH Verbindung wieder nutzen, ohne den Port vom SSH Client zu ändern. Ich hatte zwar schon eine Portweiterleitung eingerichtet, aber die benutzte einen Port, der ebenfalls blockiert wurde.<br />
Die Portweiterleitung ändere ich eigentlich am einfachsten mit dem Webinterface meines entfernten Routers, der die Zugänge zu meinem Server hinter dem Router regelt. Dort leite ich einfach einen im Gastnetzwerk freien Port (bspw. 993) auf meinen SSH Client um.<br />
Das funktionierte leider nicht sofort und ich habe erst später gemerkt, woran es lag. Ich hatte in meiner Portweiterleitung mehrere Weiterleitungen angelegt, die alle auf den gleichen Port zeigten. Doch es fand weiterhin nur eine Weiterleitung über meinen alten Port statt, nie über die neu angelegten. Und der alte war nach wie vor im Gastnetzwerk gesperrt. Nach langem Rumprobieren kam ich drauf, dass ich die Portweiterleitungen, die ich für den Zielport 22 angelegt hatte, ein mal alle komplett abschalten musste, abspeichern und dann auf dem neuen Port wieder aktivieren musste. Dann übernimmt er die neue Weiterleitung. Doch darauf war ich erst ganz am Schluss gekommen. Denn vorher habe ich meine OpenVPN Verbindung auf TCP 443 eingestellt.</p>
<h1 id="openvpnaufhttps-standardport443einstellen">Open VPN auf https-Standardport 443 einstellen</h1>
<p>Mit dem Umstellen von UDP Port 1194 auf TCP 443 habe ich eine sichere Fallback Lösung für alle Fälle, denn 443 müsste immer und überall offen sein und mit der VPN Lösung sollte ich immer alles über das Netzwerk bekommen, was ich brauche. Was ist eigentlich besser: <a href="https://torguard.net/blog/openvpn-service-udp-vs-tcp-which-is-better/" target="_blank">OpenVPN via UDP oder TCP? (engl)</a></p>
<h1 id="sshtunnelmitlokalerportweiterleitung">SSH Tunnel mit lokaler Portweiterleitung</h1>
<p>Die dritte und und interessanteste Lösung war der SSH Tunnel, den ich ausprobieren musste, um ihn wirklich zu verstehen.<br />
Angenommen ich erreiche meinen SSH Client neuerdings über Port 25, gebe ich im Terminal folgendes ein<br />
<code>sudo ssh -p 25 user@sshclient.de -L 8080:meinserver.de:5006 -N</code><br />
macOS wollte <code>sudo</code>, weil <code>Privileged ports can only be forwarded by root.</code><br />
Ich verbinde mich also zuerst mit <code>-p</code> Port 25 auf meinen SSH Client.<br />
Warum noch mal 25? Ist beispielhaft für einen Port im Gastnetzwerk, der nicht gesperrt ist, so dass nun der angerufene Router den Verkehr von 25 auf 22 weiterleiten kann.<br />
Jetzt steht schon mal eine SSH Verbindung im blockierten Gastnetzwerk.<br />
Wenn ich jetzt mit dem Browser auf das unerreichbare Webinterface meines Servers kommen möchte brauche ich noch <code>-L offenerPort:angerufenerServer:geblockterPort</code>.<br />
Mit <code>-L</code> leite ich alle „local“ Anfragen, auf den im Gastnetzwerk freien Port 8080, über die etablierte SSH Verbindung. Mein verbundener SSH Client erzeugt einen Tunnel auf dem offenen Port 8080 und holt darüber die Pakete von dem im Gastnetzwerk unerreichbaren Port 5006 aus meinem Server.<br />
Das <code>-N</code> weist SSH an, keine Befehle zu erwarten, das heißt, SSH stellt keine Eingabeaufforderung her, sondern ist im Horch-Modus.</p>
<p>Um die Adresse, die ich normalerweise mit <code>https://meinserver.de:5006</code> aufrufen würde, zu erreichen, gebe ich jetzt im Browser <code>https://localhost:8080</code> ein. Dann kann ich über den Port 8080 in den Tunnel meiner SSH Verbindung steigen und komme am anderen Ende auf meinem Server mit dem Port 5006 raus.</p>
<p>Mit diesen drei Lösungsmöglichkeiten ist man wirklich gut ausgestattet, um seine Daten in blockierten Umgebungen zu erreichen.</p>
<p><img decoding="async" loading="lazy" class="alignnone size-medium wp-image-2284" src="http://rotkohlsuppe.de/wp-content/uploads/2017/06/Bildschirmfoto-2017-06-22-um-00.06.03-500x293.png" alt="Firefox Fehlermeldung" width="500" height="293" srcset="https://rotkohlsuppe.de/wp-content/uploads/2017/06/Bildschirmfoto-2017-06-22-um-00.06.03-500x293.png 500w, https://rotkohlsuppe.de/wp-content/uploads/2017/06/Bildschirmfoto-2017-06-22-um-00.06.03-250x146.png 250w, https://rotkohlsuppe.de/wp-content/uploads/2017/06/Bildschirmfoto-2017-06-22-um-00.06.03-768x449.png 768w, https://rotkohlsuppe.de/wp-content/uploads/2017/06/Bildschirmfoto-2017-06-22-um-00.06.03.png 935w" sizes="(max-width: 500px) 100vw, 500px" /></p>
<p>Ein Problem gibt es aber noch, nämlich wenn man im Browser über einen Nicht-Standard-Port in den Tunnel möchte. Wenn man, wie ich, über Port 993 seine getunnelte Seite ansurfen will, gibt es bei allen Browsern eine Fehlermeldung, bspw. Firefox <code>Fehler: Port aus Sicherheitsgründen blockiert</code>.</p>
<p>Um den Fehler zu beheben gibt man in die Firefox Adresszeile <code>about:config</code> ein und sucht oder erstellt den Eintrag <code>network.security.ports.banned.override</code>. Als Wert wird der Port eingetragen bspw. <code>993</code>.</p>
<ul class="verweis">
<li><a href="http://portquiz.net/" target="_blank">Testet blockierte Ports</a></li>
<li><a href="https://help.ubuntu.com/community/SSH/OpenSSH/PortForwarding" target="_blank">SSH Port Weiterleitung (engl)</a></li>
<li><a href="http://www.revsys.com/writings/quicktips/ssh-tunnel.html" target="_blank">SSH Weiterleitung einfach (engl)</a></li>
<li><a href="https://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers" target="_blank">Umfangreiche Liste aller Ports</a></li>
<li><a href="https://support.mozilla.org/en-US/questions/1083282" target="_blank">In Firefox über Nicht-Standard-Ports surfen</a></li>
</ul>
]]></content:encoded>
					
					<wfw:commentRss>https://rotkohlsuppe.de/2017/blockiertes-gast-netzwerk-umgehen/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Raspberry Pi + OpenELEC, Blitz Symbol</title>
		<link>https://rotkohlsuppe.de/2017/raspberry-pi-openelec-blitz-symbol/</link>
					<comments>https://rotkohlsuppe.de/2017/raspberry-pi-openelec-blitz-symbol/#respond</comments>
		
		<dc:creator><![CDATA[Clemens]]></dc:creator>
		<pubDate>Sun, 04 Jun 2017 22:18:20 +0000</pubDate>
				<category><![CDATA[Technik]]></category>
		<category><![CDATA[abschalten]]></category>
		<category><![CDATA[Blitz]]></category>
		<category><![CDATA[Blitzsymbol]]></category>
		<category><![CDATA[Ecke]]></category>
		<category><![CDATA[entfernen]]></category>
		<category><![CDATA[Icon]]></category>
		<category><![CDATA[Netzteil]]></category>
		<category><![CDATA[Raspberry Pi]]></category>
		<category><![CDATA[Spannung]]></category>
		<category><![CDATA[Symbol]]></category>
		<category><![CDATA[Thunderbolt]]></category>
		<category><![CDATA[Under-voltage]]></category>
		<category><![CDATA[undervoltage]]></category>
		<category><![CDATA[Unterspannung]]></category>
		<category><![CDATA[Warnung]]></category>
		<guid isPermaLink="false">http://rotkohlsuppe.de/?p=2244</guid>

					<description><![CDATA[Ich habe lange mit dem Raspberry Pi 1 Model B Radio und Mediathek-Videos in meine Küche gebracht. Jetzt habe ich ihn endlich gegen den noch aktuellen Raspberry Pi 3 ausgetauscht und mit OpenELEC 8.04 bespielt. Schon auf dem alten habe ich nach einiger Zeit statt XBIAN OpenELEC benutzt, weil Geschwindigkeitsvergleiche zeigten, dass OpenELEC schneller war [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><img decoding="async" loading="lazy" src="http://rotkohlsuppe.de/wp-content/uploads/2017/06/under-volt-500x500.png" alt="Unterspannung" width="500" height="500" class="alignnone size-medium wp-image-2273" srcset="https://rotkohlsuppe.de/wp-content/uploads/2017/06/under-volt-500x500.png 500w, https://rotkohlsuppe.de/wp-content/uploads/2017/06/under-volt-250x250.png 250w, https://rotkohlsuppe.de/wp-content/uploads/2017/06/under-volt.png 768w" sizes="(max-width: 500px) 100vw, 500px" /></p>
<div class="layer_outline"><strong>Ich habe lange mit dem <a href="https://www.raspberrypi.org/products/model-b/" target="_blank">Raspberry Pi 1 Model B</a> Radio und Mediathek-Videos in meine Küche gebracht.</strong> Jetzt habe ich ihn endlich gegen den noch aktuellen Raspberry Pi 3 ausgetauscht und mit <a href="http://openelec.tv/get-openelec" target="_blank">OpenELEC 8.04</a> bespielt. Schon auf dem alten habe ich nach einiger Zeit statt <a href="http://www.xbian.org/" target="_blank">XBIAN</a> OpenELEC benutzt, weil <a href="http://www.gaducated.com/raspberry-pi-xbmc-shootout-raspbmc-vs-openelec-vsxbian/" target="_blank">Geschwindigkeitsvergleiche</a> zeigten, dass OpenELEC schneller war als die anderen, und da das auf dem Pi 1 ein wichtiges Kriterium war, bin ich dabei geblieben.</p>
<p>Jedenfalls &#8211; mich störte das Blitzsymbol in der rechten oberen Ecke. In vorigen Versionen war es ein regenbogenfarbiges Rechteck. Es signalisiert Unterspannung. Das Symbol verschwindet, wenn ich das 5V 3A Netzteil nehme und erscheint bei allen 5V 2A Netzteilen. Mag sein, dass auch mein Kabel eine Teilschuld trägt. Ich hatte aber nicht das Gefühl, dass die Leistung unausreichend war, während ich mit einer 10GB BluRay-Datei versuchte ihn auszulasten.</p>
<p>Ich wollte, dass es verschwindet. Das ist einfach zu machen, in dem man die SD Karte entnimmt, wieder mit dem Computer verbindet und auf oberster Ordnerebene die Datei „config.txt“ bearbeitet. Man fügt die Zeile <code>avoid_warnings=1</code> hinzu, speichert und steckt die Karte wieder in den Pi. Das wars schon. Sollen die Warnungen wieder angezeigt werden, dazu können auch seltenere Warnungen gehören, wie bspw. das Überhitzungssymbol, dann schreibt man <code>avoid_warnings=0</code>.</div>
<ul class="verweis">
<li><a href="https://www.raspberrypi.org/forums/viewtopic.php?t=82373" target="_blank">Danke für den Tipp</a></li>
</ul>
]]></content:encoded>
					
					<wfw:commentRss>https://rotkohlsuppe.de/2017/raspberry-pi-openelec-blitz-symbol/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Synology Diskstation Fesplatte vergrößern</title>
		<link>https://rotkohlsuppe.de/2017/synology-diskstation-fesplatte-vergrosern/</link>
					<comments>https://rotkohlsuppe.de/2017/synology-diskstation-fesplatte-vergrosern/#comments</comments>
		
		<dc:creator><![CDATA[Clemens]]></dc:creator>
		<pubDate>Tue, 30 May 2017 19:07:28 +0000</pubDate>
				<category><![CDATA[Technik]]></category>
		<category><![CDATA[Anleitung]]></category>
		<category><![CDATA[Array]]></category>
		<category><![CDATA[dd]]></category>
		<category><![CDATA[DiskStation]]></category>
		<category><![CDATA[erweitern]]></category>
		<category><![CDATA[fdisk]]></category>
		<category><![CDATA[GPT]]></category>
		<category><![CDATA[Hilfe]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[manual]]></category>
		<category><![CDATA[mdadm]]></category>
		<category><![CDATA[NAS]]></category>
		<category><![CDATA[parted]]></category>
		<category><![CDATA[Partition layout]]></category>
		<category><![CDATA[RAID]]></category>
		<category><![CDATA[sfdisk]]></category>
		<category><![CDATA[Synology]]></category>
		<category><![CDATA[vergrößern]]></category>
		<guid isPermaLink="false">http://rotkohlsuppe.de/?p=2245</guid>

					<description><![CDATA[Volle Festplatte = schlechte Performance Meine Synology Diskstation war voll. Ich musste die Festplatten vergrößern. Ich betreibe sie aber nicht wie die meisten im RAID 0, 1 oder 5, sondern zwei Platten laufen separat. Platte 1 beinhaltet das System und einen Teil der Daten. Platte 2 beinhaltet den zweiten Teil der Daten. Ich mache Backups [&#8230;]]]></description>
										<content:encoded><![CDATA[<h1>Volle Festplatte = schlechte Performance</h1>
<div class="layer_outline"><strong>Meine Synology Diskstation war voll. Ich musste die Festplatten vergrößern.</strong> Ich betreibe sie aber nicht wie die meisten im RAID 0, 1 oder 5, sondern zwei Platten laufen separat. Platte 1 beinhaltet das System und einen Teil der Daten. Platte 2 beinhaltet den zweiten Teil der Daten. Ich mache Backups regelmäßig mit rsync über das Netzwerk auf Journaled formatierte Platten, die im OSX hängen. So bleiben meine Backupplatten meistens aus und werden nur zum Backup hochgefahren. Nach meiner Überlegung schont das die Backup-Platten und damit Ressourcen.</p>
<p>Als ich nun Platte 1 im System vergrößern wollte, wusste ich nicht was auf mich zukommmt. Vorallem viele Rückschläge, aber auch viel neues Wissen.</p>
</div>
<p><span id="more-2245"></span></p>
<h1>Rückschläge</h1>
<p>Mein erster Gedanke ist, <code>dd if=/dev/alt of=/dev/neu</code>, wird es schon richten. Ich halte das System an, baue die Festplatte aus und hänge sie und die neue an meinen Rechner, spiegle sie und baue die neue wieder ein. Warum genau das nicht ging, blieb mir ein Rätsel. Fakt war, ich konnte die gespiegelte Platte nicht einfach einsetzen und das System hochfahren. Er akzeptierte sie schlichtweg nicht. Ich probierte verschiedene Anläufe. Im zweiten Schritt versuchte ich die zu vergößernde Platte im laufenden Betrieb mit dd zu spiegeln, in dem ich die zweite Platte an den USB 3.0 Port hing. Auch das ging nicht. Ich versuchte noch andere Ansätze, in dem ich mit rsync alle Daten kopierte und so weiter. Es wäre genau so müßig weiter aufzuzählen, was ich alles versucht habe, insofern will ich zur Lösung kommen, die ich erfolgreich angewendet habe.</p>
<p><a href="http://rotkohlsuppe.de/wp-content/uploads/2017/05/Bildschirmfoto-2017-05-10-um-18.52.35-e1496170536603.png" target="_blank" rel="noopener"><img decoding="async" loading="lazy" class="alignnone wp-image-2254 size-medium" src="http://rotkohlsuppe.de/wp-content/uploads/2017/05/Bildschirmfoto-2017-05-10-um-18.52.35-e1496170536603-500x246.png" alt="Bildschirmfoto 2017-05-10 um 18.52.35" width="500" height="246" srcset="https://rotkohlsuppe.de/wp-content/uploads/2017/05/Bildschirmfoto-2017-05-10-um-18.52.35-e1496170536603-500x246.png 500w, https://rotkohlsuppe.de/wp-content/uploads/2017/05/Bildschirmfoto-2017-05-10-um-18.52.35-e1496170536603-250x123.png 250w, https://rotkohlsuppe.de/wp-content/uploads/2017/05/Bildschirmfoto-2017-05-10-um-18.52.35-e1496170536603-768x378.png 768w, https://rotkohlsuppe.de/wp-content/uploads/2017/05/Bildschirmfoto-2017-05-10-um-18.52.35-e1496170536603-1200x590.png 1200w, https://rotkohlsuppe.de/wp-content/uploads/2017/05/Bildschirmfoto-2017-05-10-um-18.52.35-e1496170536603.png 1352w" sizes="(max-width: 500px) 100vw, 500px" /></a><br />
<em>dd läuft im Hintergrund</em></p>
<p>Dazu muss man wissen, dass, wenn die Platten nicht im RAID Verbund sind, trotzdem von der Diskstation als RAID formatiert werden. Beide Platten im System sind RAID 1 (gespiegelt), aber jeweils nur mit einer Platte im Verbund. Es ist also ein nichtgespiegeltes Array, weil es nur aus einer Platte besteht.</p>
<h1>Der richtige Weg</h1>
<p>Auf der Kommandozeile konfiguriert man sein RAID Array mit dem Befehl <code>mdadm</code> (multiple devices admin).<br />
Man kann ein Array damit anlegen, erweitern, Platten abkoppeln, synchronisieren und alles, was man mit einem Software Array so machen muss.<br />
Grob formuliert geht der Weg so:</p>
<ul>
<li>Partitionstabelle der alten Platte auf die neue kopieren</li>
<li>eindeutige UUID der neuen Platte zuweisen</li>
<li>mdadm nutzen um die neue Platte in das Array einzugliedern</li>
<li>das Array auf 2 Plattem vergrößern und synchronisieren lassen</li>
<li>die alte Platte aus dem Array entfernen und das Array wieder auf eine Platte verkleiner</li>
<li>die Partitionsgröße der neuen Festplatte auf das Maximum verrößern</li>
</ul>
<p>Meine Diskstation hat auf der alten Platte 3 Partitionen. Jede Partition ist eigentlich ein RAID 1 Array, mit nur einer Platte.<br />
Raid Arrays haben im System eine neue Bezeichnung.<br />
Auf der Diskstation ist<br />
<code><br />
md0 = Root = sda1 // die Systempartition<br />
md1 = Swap = sda2 // die Auslagerungsdatei<br />
md2 = Daten = sda3 // die kompletten Daten<br />
</code></p>
<h1>Festplatten vorbereiten</h1>
<p>Damit die neue Platte dem Array hinzugefügt werden kann, muss sie natürlich über die gleiche Partitionstabelle verfügen. Alle drei Partitionen sda1, sda2 und sda3 müssen auf beiden Platten identisch sein. Da ich die Partitionen mit <code>dd</code> gespiegelt hatte, waren sie bereits identisch.</p>
<p>Wer diesen Schritt nicht machen will, kommt nicht umhin beide Platten an einem anderen Computer anzuschließen, am besten mit Linux Betriebssystem, um das Layout mit <a href="https://www.rodsbooks.com/gdisk/sgdisk.html"><code>sgdisk</code></a>, zu kopieren. Der Befehl ist nicht auf der Diskstation installiert und darum muss er auf einem anderen Rechner ausgeführt werden. sgdisk erlaubt Partitionstabellen mit <code>sgdisk -R=/dev/sdq /dev/sdb</code> zu kopieren. <a href="http://linuxadministration.us/?p=154" target="_blank" rel="noopener">Es gibt auch eine Möglichkeit</a> mit <code>dd</code> auf dem Server nur die Layoutouts zu kopieren. Da ich beides nicht gemacht habe, kann ich keine verlässliche Aussage zu den Methoden machen, würde mich aber selber für sgdisk entscheiden, wenn die Möglichkeit besteht, die Festplatten an den Linuxrechner zu hängen.</p>
<p><strong>Update November 2021:</strong> Ich habe eine <a href="http://www.techpository.com/linux-copy-gpt-partition-table-with-dd/" target="_blank" rel="noopener">Formel gefunden</a>, mit der ich, als ich mal wieder die Festplatte verößern musste, die GPT-Partitionstabelle auch mit dd kopieren konnte.<br />
<code>(128 x ANZAHL_DER_PARTITIONEN) + 1024</code><br />
Das sind bei 3 Partitionen: 1408 Bytes müssen kopiert werden<br />
Dann lautet der Befehl: <code>dd if=/dev/sda of=DATEI_ODER_LAUFWERK count=1408 bs=1</code></p>
<p>An dieser Stelle der Hinweis, dass man seine alte Platte vielleicht ein mal auf einer Platte sichert, die nicht die alte ersetzen soll. Ich hatte mir als Ersatz für die alte Platte zwei neue Platten gekauft. Die eine wird für die Diskstation vorbereitet, die andere habe ich, wie immer, als Backup mit allen alten Daten bespielt, ohne besonderen Wert auf Bootbarkeit zu legen.</p>
<p>Wenn die Partitionstabelle auf der neuen Platte ist, vergeben wir neue GUIDs mit <code>sgdisk -G /dev/sdq</code>.</p>
<p>Jetzt können wir die alte Platte wieder in die Diskstation einbauen und das System starten. An einen freien USB Port hänge ich die neue vorbereitete Platte. Sie hat die Laufwerksbezeichnung <code>/dev/sdq</code></p>
<h1>Das Array mit Kommandozeile vergrößern</h1>
<p>Doch zu erst die Basics. Wir loggen uns per <code>ssh</code> als Administrator auf der Diskstation ein. Wir wechseln in mit <code>sudo su</code> in einen Modus, der uns nicht ständig dazu zwingt sudo vor jedem Befehl einzugeben.</p>
<p>Als erstes verschaffen wir uns einen Überblick über die RAID Arrays mit <code>cat /proc/mdstat</code>.<br />
Anschließend können wir die neue Platte mit der alten partitionsweise synchronisieren. sdq ist in diesem Fall das USB Laufwerk.<br />
<code><br />
// dem ersten RAID füge ich eine neue Partition hinzu<br />
mdadm --add /dev/md0 /dev/sdq1<br />
mdadm --grow /dev/md0 -n 2 (3 s. u.)<br />
// danach muss ich das RAID auf 2 oder 3 Laufwerke ausdehnen<br />
// md0 und md1 (Root und Swap) sind über alle Laufwerke (HDD 1 , HDD 2 und USB) verteilt sind deswegen:<br />
mdadm --grow /dev/md0 -n 3<br />
mdadm --grow /dev/md1 -n 3<br />
// abhängig davon welche Platte ausgetauscht wird:<br />
// md2 ist Platte in Schacht 1<br />
// md3 ist Platte in Schacht 2<br />
mdadm --grow /dev/md2 -n 2<br />
mdadm --grow /dev/md3 -n 2<br />
</code></p>
<p>Die Synchronisation beginnt jetzt.<br />
Man kann den Fortschritt mit <code>cat /proc/mdstat</code> verfolgen, oder <code>mdadm --detail /dev/md0</code>.</p>
<p>Die nächsten Partitionen im selben Verfahren synchronisieren:<br />
<code><br />
mdadm --add /dev/md1 /dev/sdq2<br />
mdadm --grow /dev/md1 -n 3<br />
mdadm --add /dev/md2 /dev/sdq3<br />
mdadm --grow /dev/md2 -n 2<br />
// hier sind es tatsächlich nur zwei Partitionen. Wie oben gesagt verteilen sich Swap und Root über alle drei Laufwerke, ausser die Datenpartition<br />
</code></p>
<p><a href="http://rotkohlsuppe.de/wp-content/uploads/2017/05/Bildschirmfoto-2017-05-20-um-18.13.58.png" target="_blank" rel="noopener"><img decoding="async" loading="lazy" class="alignnone wp-image-2259 size-medium" src="http://rotkohlsuppe.de/wp-content/uploads/2017/05/Bildschirmfoto-2017-05-20-um-18.13.58-500x325.png" alt="Bildschirmfoto 2017-05-20 um 18.13.58" width="500" height="325" srcset="https://rotkohlsuppe.de/wp-content/uploads/2017/05/Bildschirmfoto-2017-05-20-um-18.13.58-500x325.png 500w, https://rotkohlsuppe.de/wp-content/uploads/2017/05/Bildschirmfoto-2017-05-20-um-18.13.58-250x162.png 250w, https://rotkohlsuppe.de/wp-content/uploads/2017/05/Bildschirmfoto-2017-05-20-um-18.13.58-768x499.png 768w, https://rotkohlsuppe.de/wp-content/uploads/2017/05/Bildschirmfoto-2017-05-20-um-18.13.58-1200x780.png 1200w, https://rotkohlsuppe.de/wp-content/uploads/2017/05/Bildschirmfoto-2017-05-20-um-18.13.58.png 1262w" sizes="(max-width: 500px) 100vw, 500px" /></a><br />
<em>Fortschritt im Blick behalten</em></p>
<p><strong>Update November 2021:</strong> Falls der Prozess viel zu lange dauert, kann man ihn beschleunigen. Entweder über das Webinterface: Speichermanager &gt; Speicherpool &gt; Konfiguration<br />
Dort einfach höhere MB-Werte eintragen. Ich habe es über das Terminal gemacht, deswegen weiß ich nicht, wie zuverlässig das funktioniert.<br />
<code><br />
sudo sysctl -w dev.raid.speed_limit_max=5000000<br />
sudo sysctl -w dev.raid.speed_limit_min=500000<br />
</code></p>
<p>Wenn alles synochronisiert ist hat man ein funktionierendes RAID 1 mit zwei gespiegelten Platten, eine intern, die andere auf dem USB Port.<br />
Ein RAID mit einem USB Laufwerk macht für mich keinen Sinn, ich nehme die USB Platte ja nur als Hilfsmittel. Also die interne, alte und kleine Platte auskoppeln.<br />
<code><br />
mdadm --fail /dev/md0 /dev/sda1 --remove /dev/sda1<br />
mdadm --grow --force /dev/md0 -n 2<br />
mdadm --fail /dev/md1 /dev/sda2 --remove /dev/sda2<br />
mdadm --grow --force /dev/md1 -n 2<br />
mdadm --fail /dev/md2 /dev/sda3 --remove /dev/sda3<br />
mdadm --grow --force /dev/md2 -n 1</code></p>
<p>Das piept zwischendurch unangenehm, da die Synology das Auskoppeln als Festplattenfehler mitteilt. Lässt sich aber in der Systemsteuerung ausschalten.</p>
<p>Jetzt muss die Partition noch vergrößert werden.</p>
<p><code>parted /dev/sda resizepart 3 6000GB </code><br />
die neue Platte fasst 6TB. Parted versucht jetzt die GPT Tabelle zu fixen und hilft einem, egal wie groß ich die Größe angegeben habe.</p>
<p><code>mdadm --examine /dev/sda3</code><br />
nachgucken ob die neue Größe zugeschrieben wurde</p>
<p><code>mdadm --grow /dev/md2 --size max<br />
resize2fs /dev/md2</code></p>
<p>Jetzt das System herunterfahren und die Platten tauschen, hochfahren und im DSM schauen, ob die neue Plattengröße angezeigt wird.</p>
<p><img decoding="async" loading="lazy" class="alignnone size-medium wp-image-2252" src="http://rotkohlsuppe.de/wp-content/uploads/2017/05/Bildschirmfoto-2017-05-30-um-20.45.06-500x339.png" alt="Bildschirmfoto 2017-05-30 um 20.45.06" width="500" height="339" srcset="https://rotkohlsuppe.de/wp-content/uploads/2017/05/Bildschirmfoto-2017-05-30-um-20.45.06-500x339.png 500w, https://rotkohlsuppe.de/wp-content/uploads/2017/05/Bildschirmfoto-2017-05-30-um-20.45.06-250x169.png 250w, https://rotkohlsuppe.de/wp-content/uploads/2017/05/Bildschirmfoto-2017-05-30-um-20.45.06.png 664w" sizes="(max-width: 500px) 100vw, 500px" /></p>
<p>Es ist dennoch zu betonen, dass der hier aufgezeigte Weg zwar bei mir funktioniert hat, mag aber bei anderen nicht funktionieren. Ich hatte meine Platte bspw. als ext4 formatiert und kein SHR verwendet.</p>
<ul class="verweis">
<li style="list-style-type: none;">
<ul class="verweis">Inspiration:</ul>
</li>
</ul>
<ul class="verweis">
<li><a href="https://www.howtoforge.com/how-to-resize-raid-partitions-shrink-and-grow-software-raid">mdadm Partitionen vergrößern (en)</a></li>
<li><a href="https://raid.wiki.kernel.org/index.php/Growing">Software RAID erweitern (en)</a></li>
<li><a href="https://askubuntu.com/questions/57908/how-can-i-quickly-copy-a-gpt-partition-scheme-from-one-hard-drive-to-another">GPT Partitionslayout kopieren (en)</a></li>
<li><a href="https://wiki.hetzner.de/index.php/Festplattenaustausch_im_Software-RAID">Festplattentausch im Software RAID</a></li>
<li><a href="https://zedt.eu/tech/linux/resize-grow-mdadm-raid1-device/">RAID1 mit mdadm erweitern (en)</a></li>
<li><a href="http://www.ducea.com/2009/03/08/mdadm-cheat-sheet/">mdadm Cheatsheet (en)</a></li>
<li><a href="https://www.computerbase.de/forum/showthread.php?t=1368044">Alternative Methode seine Platte ohne &#8220;mdadm&#8221;</a></li>
</ul>
<p><code></code><code></code><code></code><code></code><code></code><code></code></p>
<p><code></code><code></code><code></code><code></code><code></code></p>
]]></content:encoded>
					
					<wfw:commentRss>https://rotkohlsuppe.de/2017/synology-diskstation-fesplatte-vergrosern/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
		<item>
		<title>Out of home office, draußen arbeiten dank NAS</title>
		<link>https://rotkohlsuppe.de/2016/out-of-home-office-drausen-arbeiten-dank-nas/</link>
					<comments>https://rotkohlsuppe.de/2016/out-of-home-office-drausen-arbeiten-dank-nas/#respond</comments>
		
		<dc:creator><![CDATA[Clemens]]></dc:creator>
		<pubDate>Fri, 19 Aug 2016 12:15:13 +0000</pubDate>
				<category><![CDATA[Selbständigkeit]]></category>
		<category><![CDATA[Technik]]></category>
		<category><![CDATA[Webdesign]]></category>
		<category><![CDATA[Akku]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[Anleitung]]></category>
		<category><![CDATA[Cloud]]></category>
		<category><![CDATA[DiskStation]]></category>
		<category><![CDATA[Docker]]></category>
		<category><![CDATA[draußen]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[jekyll]]></category>
		<category><![CDATA[Laptop]]></category>
		<category><![CDATA[MacBook Air]]></category>
		<category><![CDATA[MBA]]></category>
		<category><![CDATA[NAS]]></category>
		<category><![CDATA[Powerbank]]></category>
		<category><![CDATA[Produktivität]]></category>
		<category><![CDATA[programmieren]]></category>
		<category><![CDATA[schreiben]]></category>
		<category><![CDATA[SSH]]></category>
		<category><![CDATA[Synology]]></category>
		<category><![CDATA[Terminal]]></category>
		<category><![CDATA[tmux]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[vim]]></category>
		<guid isPermaLink="false">http://rotkohlsuppe.de/?p=2190</guid>

					<description><![CDATA[Meine überarbeitete Website habe ich zu großen Teilen in freier Natur mit vim geschrieben. Nicht immer habe ich dafür einen Laptop benutzt. Auch das Smartphone, ein iPad oder Zuhause der stationäre Rechner, kamen zum Einsatz. Damit ich unabhängig vom Gerät die gleiche Entwicklungsumgebung habe, musste ich mich erst mal mit dem Gedanken anfreunden, dass ich [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><img decoding="async" loading="lazy" class="alignnone wp-image-2213 size-medium" src="http://rotkohlsuppe.de/wp-content/uploads/2016/08/DSC7705-500x334.jpg" width="500" height="334" srcset="https://rotkohlsuppe.de/wp-content/uploads/2016/08/DSC7705-500x334.jpg 500w, https://rotkohlsuppe.de/wp-content/uploads/2016/08/DSC7705-250x167.jpg 250w, https://rotkohlsuppe.de/wp-content/uploads/2016/08/DSC7705-768x512.jpg 768w, https://rotkohlsuppe.de/wp-content/uploads/2016/08/DSC7705-1200x801.jpg 1200w, https://rotkohlsuppe.de/wp-content/uploads/2016/08/DSC7705.jpg 1731w" sizes="(max-width: 500px) 100vw, 500px" /></p>
<div class="layer_outline">
<p><strong>Meine <a title="Clemens Fait Design" href="https://fait.de">überarbeitete Website</a> habe ich zu großen Teilen</strong> in freier Natur mit <a title="Zitate zu Vim" href="http://vimdoc.sourceforge.net/htmldoc/quotes.html"><code>vim</code></a> geschrieben. Nicht immer habe ich dafür einen Laptop benutzt. Auch das Smartphone, ein iPad oder Zuhause der stationäre Rechner, kamen zum Einsatz. </p>
<p>Damit ich unabhängig vom Gerät die gleiche Entwicklungsumgebung habe, musste ich mich erst mal mit dem Gedanken anfreunden, dass ich mich von der grafischen Oberfläche meines hoch geschätzten <a title="Atom.io" href="http://atom.io">Atom</a>-Editors verabschieden muss und die Grundlagen von <code>vim</code>, als Texteditor, und <a title="tmux Porjektseite" href="https://tmux.github.io/"><code>tmux</code></a>, als Terminal Multiplexer, zu lernen habe. Beides Programme die auf der Kommandozeile laufen. Denn nur die Kommandozeile ist auf jedem Gerät und jedem OS installierbar und somit der kleinste gemeinsame Nenner aller Geräte, sei es Smartphone, Tablet oder Computer. Diese beiden Programme sind der Schlüssel zum Cloud Computing. Die wichtigste Rolle spielt dabei tmux.</p>
<p><span id="more-2190"></span></p>
<h1 id="wasisttmux">Was ist tmux?</h1>
<p><a href="https://tmux.github.io/">Tmux</a> sorgt dafür, dass auch nach dem Ausloggen aus der Shell die Session auf der Maschine weiter ausgeführt wird. Normalerweise werden alle Prozesse die während einer SSH Verbindung ausgeführt werden, nach dem Beenden der Remote Session beendet. Ein laufender Download bspw. wird nur so lange ausgeführt, wie man sich in der Session befindet. Tmux sorgt dafür, dass der Prozess auch dann auf der Maschine weiterläuft, nach dem man die Session beendet hat. Solange der Server nicht herunterfährt, laufen alle Prozesse auch nach dem Ausloggen noch. Ich kann also zu jedem späteren Zeitpunkt die Arbeit an genau der Stelle wieder aufnehmen, an der ich sie beendet habe, ganz egal mit welchem Gerät ich mich auf den Server verbinde.</p>
<p>Tmux ist ebenfalls eine Art Windowmanager. Innerhalb einer tmux Session kann ich parallel unabhängig von einander laufende Sessions betreiben, also mehrere Fenster erstellen. Ich habe bspw. für jede Aufgabe ein Fenster, in der tmux Session. Zum Beispiel verwende ich eine ähnliche Konfiguration wie die folgende: Auf Fenster 0 ist vim im Verzeichnis der Templatedateien geöffnet. Im Fenster 1 ist vim im Javascript Verzeichnis geöffnet. Im Fenster 2 ist vim im SASS Verzeichnis geöffnet. Auf der 3 mache ich git. Auf der 4 ist das Root Verzeichnis des Projekts. Auf der 5 der Lynx Browser. Auf der 6 mein Home Ordner &#8230;. usw. So kann ich sehr schnell zwischen den zu bearbeitenden Datien wechseln. Tmux kann jedes einzelne Fenster auch horizontal und vertikal teilen, wenn man zwei Dokumente parallel nebeneinander geöffnet sehen will.</p>
<p>Sogar das parallele Arbeiten mit mehreren Rechnern in der selben tmux Session ist möglich. So kann ich mitverfolgen, was über die zweite Verbindung gerade auf der SSH Session gemacht wird. Absolute Synchronizität ist damit gesichert. Voraussetzung ist, dass der Server dauerhaft an ist. Ansonsten kann man sich auch Startscripte für rmux schreiben, die eine Session mit allen Fenstern, Programmen und Dateien erzeugt, die man benötigt. So ein Script sollte pro forma angelegt werden. Fährt der Server doch mal runter, ist die mühsam eingerichtete tmux-Umgebung nämlich futsch. Man fängt von vorne an seine Fenster, Programme und Dateien neu aufzurufen und einzurichten. Ein Startscript automatisiert diesen Prozess.</p>
<h1 id="zentralelsung:nas">Zentrale Lösung: NAS</h1>
<p>Nun kann ich nicht anfangen tmux und vim auf Smartphone, Tablet und verschiedenen Rechnern zu installieren und die Konfigurationen synchron halten. Das ist technisch nicht möglich und wenn doch, viel zu umständlich. Zum Glück habe ich eine Synology Diskstation, ein NAS. Auf den Server kann ich mit SSH von jedem Gerät aus zugreifen, egal ob ich Zuhause im eigenen Netzwerk bin oder unterwegs im Handynetz, egal ob ich vor einem Smartphone, Tablet oder Computer sitze. Auf meinem Server habe ich mir nun peu à peu meine Entwicklungsugebung aus Plugins, Syntaxhighlightern, Snippets, Tastenkürzeln usw., aufgebaut.</p>
<h1 id="sshverbindungherstellen">SSH Verbindung herstellen</h1>
<p>Um eine SSH Verbindung auf den Server aufzubauen, kann man entweder per VPN Verbindung ins Heimnetz gehen und dann die lokale IP des Servers anrufen oder gleich den SSH Port am Router öffnen und ohne Umweg auf die Shell zugreifen. Wer seinen SSH Port nicht öffnen möchte, greift zu Lösung 1 oder überlegt, ob er nicht einfach den Standardport von SSH ändern möchte.<br />
Auf Android kann ich als SSH Client <a title="JuiceSSH" href="https://juicessh.com/">JuiceSSH</a> empfehlen, mit dem ich gerade diese Zeilen schreibe, oder auf iOS: <a title="Serverauditor" href="https://serverauditor.com/">Serverauditor</a>. JucieSSH ist meiner Meinung nach ein hervorragender SSH Client, der sogar Swipe Gesten in Fensterwechsel unter tmux umwandelt.<br />
Wer vom Rechner eine SSH Verbindung aufbauen will, gibt normalerweise <code>ssh NUTZERNAME@DOMAIN_ODER_IP.DE:PORT</code> ein. Wenn man mehrere SSH Verbindungen managt, kann die Schreiberei und das Merken nerven. Es lohnt sich im Verzeichnis <code>~/.ssh</code> eine Datei mit Namen <code>config</code> anzulegen. Dort kann man seine Verbindungen mit Aliasen versehen. Ein Eintrag sieht bspw. so aus:<br />
<code>Host ALIAS_EINTRAGEN<br />
     HostName IP_ODER_DNS<br />
     User NUTZERNAME</code><br />
Für mehr Informationen einfach mal nach <code>ssh config</code> im Internet suchen</p>
<h1 id="argumentefrdiediskstation">Weitere Argumente für einen Heimserver</h1>
<p>Ein weiterer Punkt der für die Lösung mit dem Heimserver spricht, ist der Fakt, dass ich nicht nur vim auf allen Geräten hätte installieren müssen, sondern auch alle Prozessoren, die für die Entwicklung unabdingbar sind. Das sei zum Beispiel der Static Site Generator <a title="jekyll Website" href="http://jekyllrb.com/">jekyll</a>, den ich für meine statische Seite als Grundlage ausgewählt habe. Er benötigt zum generieren der HTML Dateien aus meinen Templates <a title="Ruby Website" href="https://www.ruby-lang.org/en/">Ruby</a>. Man kann doch nicht Ruby auf jedem Rechner installieren, von dem aus an der Website gearbeitet werden soll… Hinzu kommen noch git und in der weiteren Entwicklung Grunt, imagemagick und mehr.<br />
Um eine Pflege über mehrere Rechner zu ermöglichen, hätte man als erste Idee auch git als zentrale Lösung verwenden können, um so alle Projektdaten zwischen den Geräten mit viel Handarbeit synchron zu halten. Git verwende ich zur Dokumentation und Versionierung zwar sowieso, wäre aber wieder nur schwer auf Smartphone und Tablet zu implementieren gewesen. Ein ständiger Push und Pull Workflow ist zudem noch sehr fehleranfällig, wenn man nicht gewissenhaft arbeitet. Mit der zentralen Lösung eines Entwicklerservers, der per SSH angesprochen wird, installiere ich alle Softwarebausteine ein einziges Mal auf einem Gerät und habe unabhängig von der technischen Spezifikationen des Client immer die exakte selbe Rechenleistung, Speicherstände und Arbeitsumgebung zur Hand.</p>
<p><img decoding="async" loading="lazy" class="alignnone size-medium wp-image-2212" src="http://rotkohlsuppe.de/wp-content/uploads/2016/08/DSC7703-500x433.jpg" alt="_DSC7703" width="500" height="433" srcset="https://rotkohlsuppe.de/wp-content/uploads/2016/08/DSC7703-500x433.jpg 500w, https://rotkohlsuppe.de/wp-content/uploads/2016/08/DSC7703-250x217.jpg 250w, https://rotkohlsuppe.de/wp-content/uploads/2016/08/DSC7703-768x665.jpg 768w, https://rotkohlsuppe.de/wp-content/uploads/2016/08/DSC7703-1200x1040.jpg 1200w, https://rotkohlsuppe.de/wp-content/uploads/2016/08/DSC7703.jpg 1519w" sizes="(max-width: 500px) 100vw, 500px" /><br />
<em>Entweder, oder. Doch allein schon mit Smartphone und Tastatur kann man produktiv werden.</em></p>
<h1 id="auerhausarbeiten">Außer Haus arbeiten</h1>
<p>Damit ich von unterwegs mit dem Tablet, Laptop oder Smartphone auch auf den Heimserver komme, brauchte ich einen mobilen Accesspoint. Dazu habe ich mir günstig auf eBay einen Huawei E5331s gekauft. Man kann natürlich auch einfach mit seinem Handy einen Hotspot errichten oder bspw. aus einem RaspberryPi einen mobilen Accesspoint basteln. Da sich die Übertragungsrate bei SSH Verbindungen im untersten Kilobytebereich bewegt, kann auch mit überzogenem Datenvolumen problemlos weitergearbeitet werden.<br />
Für den Anfang reicht auch eine Karte von <a href="https://www.netzclub.net/sponsored-surf-basic/">netzclub</a>, kostenlos 100 MB jeden Monat. Man bekommt Werbung im Gegenzug.<br />
Für die Arbeit am Smartphone ist es ratsam Displaygrößen von ca. 5.5 Zoll zu haben. Auch ein faltbarer Ständer und eine Bluetooth Tastatur erleichtern das Arbeiten. So hat man mit wenig Gepäck und wenig Stromaufgebot eine portable Entwicklungsumgebung.</p>
<h1 id="browsertests">Browsertests</h1>
<p>Zur Kontrolle der Entwicklung gibt es je nach Arbeitsschritt verschiedene Möglichkeiten. Will man wissen, ob die Textstelle eingepflegt wurde, kann man den terminalbasierten <a title="Lynx Browser" href="http://de.wikipedia.org/wiki/Lynx_(Browser)">Lynx Browser</a> verwenden, um Datenvolumen zu sparen. Wenn man seinen CSS Code im Browser kontrollieren will, helfen Browser Plugins, die nur die CSS Datei neu laden (<a title="CSS Reloader Addon für Firefox" href="https://addons.mozilla.org/de/firefox/addon/css-reloader/">CSS Reloader</a> &#8211; FireFox). Auch hilfreich sind Plugins, die einzeln das Laden von JS, CSS, Bildern, Cookies, Flash usw. verhindern können. Sehr gut gefällt mir das <a title="QuickJava Add-On" href="http://quickjavaplugin.blogspot.de/">QuickJava</a> Addon für Firefox, das allgemein gut ist, wenn man unnötige Datenmengen im Handynetz sparen möchte. Auch das automatische Nachladen der CSS-Datei bei erkannten Änderungen an selbiger ist ja bekanntlich mit Addons möglich. Der Opera Browser ist darüber hinaus in der Lage Traffic zu sparen, in dem er die angeforderte Seite zu erst auf den operaeigenen Servern komprimiert und die komprimierte Version in den Browser zurückschickt.</p>
<p><img decoding="async" loading="lazy" class="alignnone size-medium wp-image-2203" src="http://rotkohlsuppe.de/wp-content/uploads/2016/08/DSC7702-500x749.jpg" alt="revolt 42 Ah Powerbank" width="500" height="749" srcset="https://rotkohlsuppe.de/wp-content/uploads/2016/08/DSC7702-500x749.jpg 500w, https://rotkohlsuppe.de/wp-content/uploads/2016/08/DSC7702-167x250.jpg 167w, https://rotkohlsuppe.de/wp-content/uploads/2016/08/DSC7702-768x1151.jpg 768w, https://rotkohlsuppe.de/wp-content/uploads/2016/08/DSC7702-801x1200.jpg 801w, https://rotkohlsuppe.de/wp-content/uploads/2016/08/DSC7702.jpg 1155w" sizes="(max-width: 500px) 100vw, 500px" /><br />
<em>ca. 800g schwer, sorgt aber für deutlich höhere Reichweite</em></p>
<h1 id="stromversorgung">Stromversorgung</h1>
<p>Ein weiteres Hindernis ist der Strom unterwegs. Will man im Park über längere Zeiträume verweilen und hat am Laptop nur Akkulaufzeiten von ca. 3 Stunden, der sollte sich überlegen eine Powerbank der größeren Sorte zu bestellen. Ich habe mir von revolt eine 45 Ah (45.000 mAh) Powerbank besorgt, die meinen MacBook Air (von 2009) über 8 Stunden (!) mit Strom versorgen kann. Hinzu kämen die 3 Stunden aus dem eingebauten Akku. Völlig unabhängig von kurzen Akkulaufzeiten zu sein macht sich auch dann bezahlt, wenn man auf einem Fototermin im Freien ist, und man seine Fotos vor Ort sichten und bearbeiten muss. Gerade wenn die Prozessorlast hoch ist, kommt man nicht sehr weit. Die besagt Powerbank hat auch USB Anschlüsse, falls der Accesspoint nachgeladen werden muss.</p>
<p><img decoding="async" loading="lazy" class="alignnone size-medium wp-image-2214" src="http://rotkohlsuppe.de/wp-content/uploads/2016/08/DSC7709-500x334.jpg" alt="_DSC7709" width="500" height="334" srcset="https://rotkohlsuppe.de/wp-content/uploads/2016/08/DSC7709-500x334.jpg 500w, https://rotkohlsuppe.de/wp-content/uploads/2016/08/DSC7709-250x167.jpg 250w, https://rotkohlsuppe.de/wp-content/uploads/2016/08/DSC7709-768x512.jpg 768w, https://rotkohlsuppe.de/wp-content/uploads/2016/08/DSC7709-1200x801.jpg 1200w, https://rotkohlsuppe.de/wp-content/uploads/2016/08/DSC7709.jpg 1731w" sizes="(max-width: 500px) 100vw, 500px" /></p>
<h1 id="optimierungdersshverbindung">Optimierung der SSH Verbindung</h1>
<p>Im laufenden Betrieb einer SSH Verbindung über das Handynetz stellt man fest, dass bei Denkpausen ab 5 Sekunden die Verbindung unterbrochen wird. Um dem Abhilfe zu schaffen, läuft neben der SSH Session auch noch ein Ping, der alle 1–2 Sekunden 2 Bytes zu Google.de schickt. So bleibt die Verbindung immer gut ansprechbar. <code>ping -i 2 -s 2 google.de</code></p>
<h1 id="jekyllwebsitesmitsynologydiskstationrendern">Jekyll Websites mit Synology Diskstation rendern</h1>
<p>Da man nicht ohne weiteres auf einer Diskstation jekyll installieren kann, habe ich mir einen <a title="Dockercontainer mit jekyll" href="https://hub.docker.com/r/jekyll/jekyll/">jekyll Dockercontainer heruntergeladen</a>. Als Volume gibt man den Root-Pfad vom Projekt an und als Mount-Pfad <code>/srv/jekyll</code>. Sobald der Container läuft versucht er aus den Template Dateien eine fertige Seite nach <code>_site/</code> zu schreiben. Weil man während der Entwicklung nicht immer über das Webinterface der Diskstation gehen will, um das Protokoll von jekyll zur Fehleranalyse auszuwerten, kann man den Container über das Terminal steuern. <code>docker logs --since 10m NAME_DES_CONTAINERS</code> zeigt <code>stdout</code> der letzten 10 Minuten von dem Container an. Wenn man was an der <code>_config.yml</code> ändert, muss der Container neu gestartet werden. Das passiert mit <code>docker restart NAME_DES_CONTAINERS</code>. Die Seite wird mit <code>http://SERVERADRESSE:4000</code> im Browser aufgerufen.</p>
<h1 id="zusammenfassung">Zusammenfassung</h1>
<p>Ich habe hier nur grob angerissen, was ich auf meinem Weg bisher gelernt habe. Im Großen und Ganzen ist es eine lohnenswerte Investition (zeitlich vor allem) gewesen, das System wie beschrieben einzurichten. Mit vim umgehen lernen macht viel Freude und macht einen frei von grafischen <a href="https://en.wikipedia.org/wiki/Integrated_development_environment">IDEs</a>. Wenn vim auf nur einer Maschine eingerichtet werden muss, die per SSH erreichbar ist, erspart man sich das x-malige Einrichten seiner IDE auf den verschiedenen Geräten, was technisch manchmal sogar unmöglich wäre.<br />
Geräteunabhängig, stromsparend, zeitsparend: ich glaube das macht die Lösung mit dem NAS so interessant und flexibel einsetzbar. Auch weil dort noch Dienste wie der eigene Git Server, Docker, node.js und weitere Pakete per ipkg zum Laufen gebracht werden können, hat man alles unter einem Hut. Es entsteht eine schlanke textbasierte Cloud im Terminal, die man in vielerlei Hinsicht produktiv verwenden kann. Mit dieser Geräteunabhängigkeit kann ich viele Aufgaben stromsparender und ortsunabhängiger und damit effizienter erledigen. Auf in eine Zukunft mit einem schlanken tragbarem Büro…
</div>
<ul class="verweis">
<p><strong>vim</strong></p>
<li><a href="http://vimhelp.appspot.com/">vim help</a>, das Nachschlagewerk online</li>
<li><a href="http://www.viemu.com/vi-vim-cheat-sheet.gif">graphical cheat sheet(1),</a> <a href="http://michael.peopleofhonoronly.com/vim/">(2)</a></li>
<li><a href="http://vim.rtorr.com/">text cheat sheet</a> (oder selber eins anlegen)</li>
<li><a href="https://www.youtube.com/watch?v=ighvo6FGSuQ">expert level vim (1, Youtube)</a>, <a href="https://www.youtube.com/watch?v=ke7SfUFvvxo">(2)</a>, <a href="https://www.youtube.com/watch?v=SkdrYWhh-8s">(3)</a></li>
<li><a href="http://vimcasts.org/episodes/">vim screencasts</a></li>
<li><a href="https://www.youtube.com/watch?v=9jzWDr24UHQ">vim macros und argument list</a> gut erklärt (Youtube)</li>
<p><strong>tmux</strong></p>
<li><a href="https://www.youtube.com/watch?v=YD9aFIvlQYs">tmux + vim in eine IDE verwandeln (Youtube)</a></li>
<li><a href="https://gist.github.com/MohamedAlaa/2961058">tmux cheat sheet</a></li>
</ul>
]]></content:encoded>
					
					<wfw:commentRss>https://rotkohlsuppe.de/2016/out-of-home-office-drausen-arbeiten-dank-nas/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
