<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Ubuntuusers on Martins Schmierzettel</title>
    <link>/tags/ubuntuusers/</link>
    <description>Recent content in Ubuntuusers on Martins Schmierzettel</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>de-de</language>
    
    <lastBuildDate>Sat, 11 Apr 2026 22:28:40 +0200</lastBuildDate>
    
    <atom:link href="/tags/ubuntuusers/index.xml" rel="self" type="application/rss+xml" />
    
    
    <item>
      <title>iortcw: Return to Castle Wolfenstein auf Debian spielen</title>
      <link>/2026/04/11/iortcw-return-to-castle-wolfenstein-auf-debian-spielen/</link>
      <pubDate>Sat, 11 Apr 2026 22:28:40 +0200</pubDate>
      <guid>/2026/04/11/iortcw-return-to-castle-wolfenstein-auf-debian-spielen/</guid>
      <description>&lt;p&gt;Ich habe letztes Jahr bereits beschrieben, wie man
&lt;a href=&#34;/2025/08/13/openmohaa-medal-of-honor-allied-assault-auf-debian-spielen/&#34;&gt;Medal of Honor: Allied Assault unter Debian installieren&lt;/a&gt; (und spielen 😉)
kann. Da mittlerweile &lt;em&gt;Return to Castle Wolfenstein&lt;/em&gt; &lt;a href=&#34;https://www.bundesanzeiger.de/pub/publication/rIBMaUHpm3JNwYB1CtR/content/rIBMaUHpm3JNwYB1CtR/BAnz%20AT%2030.03.2026%20B6.pdf&#34;&gt;vom Index genommen&lt;/a&gt;
(pdf) genommen wurde, möchte ich auch für dieses Spiel die Installation beschreiben.
Diese Anleitung bezieht sich auf &lt;a href=&#34;https://www.debian.org/releases/trixie/&#34;&gt;Debian Trixie&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;spieldaten&#34;&gt;Spieldaten&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/iortcw/iortcw/&#34;&gt;&lt;em&gt;Iortcw&lt;/em&gt;&lt;/a&gt; ist zwar frei, die Grafiken und Sounds von &lt;em&gt;RtCW&lt;/em&gt; sind es aber nicht.
Um &lt;em&gt;Return to Castle Wolfenstein&lt;/em&gt; spielen zu können, benötigt man also die Daten des
Originalspiels.
Ich habe das Spiel während eines Auslandsaufenthalts bei &lt;a href=&#34;https://www.gog.com/de/game/return_to_castle_wolfenstein&#34;&gt;GOG&lt;/a&gt; gekauft. In
Deutschland wird das Spiel leider (noch?) nicht vertrieben obwohl es nicht mehr auf dem Index
ist, weil noch eine USK Alterseinstufung fehlt.&lt;/p&gt;
&lt;h3 id=&#34;debianquellen-bearbeiten&#34;&gt;Debianquellen bearbeiten&lt;/h3&gt;
&lt;p&gt;Da man die unfreien &lt;a href=&#34;#spieldaten&#34;&gt;Spieldaten&lt;/a&gt; benötigt, kann &lt;em&gt;RtCW&lt;/em&gt; nicht über
&lt;a href=&#34;https://www.debian.org/doc/debian-policy/ch-archive.html#the-main-archive-area&#34;&gt;&lt;em&gt;Debian main&lt;/em&gt;&lt;/a&gt; bereitgestellt werden, sondern befindet sich in
&lt;a href=&#34;https://www.debian.org/doc/debian-policy/ch-archive.html#the-contrib-archive-area&#34;&gt;&lt;em&gt;contrib&lt;/em&gt;&lt;/a&gt;.
Darum muss man sicher stellen, dass die &lt;em&gt;contrib&lt;/em&gt;-Quellen eingebunden sind.&lt;/p&gt;
&lt;p&gt;Wenn man das &lt;a href=&#34;https://wiki.debian.org/SourcesList#sources.list&#34;&gt;bisherige Format&lt;/a&gt; mit &lt;code&gt;/etc/apt/sources.list&lt;/code&gt; nutzt, muss man
sicherstellen, dass &lt;em&gt;contrib&lt;/em&gt; enthalten ist. Die entsprechende Zeile sieht dann
z.B. so aus:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deb https://deb.debian.org/debian trixie main contrib non-free-firmware
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Nutzt man schon das neue &lt;a href=&#34;https://wiki.debian.org/SourcesList#debian.sources&#34;&gt;&lt;em&gt;deb822&lt;/em&gt;-Format&lt;/a&gt; kann man in die entsprechende
Datei, z.B. &lt;code&gt;/etc/apt/sources.list.d/debian.sources&lt;/code&gt;, bei &lt;code&gt;Components:&lt;/code&gt; &lt;code&gt;contrib&lt;/code&gt;
hinzufügen. Das sieht dann z.B. so aus:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Modernized from /etc/apt/sources.list&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Types: deb
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;URIs: https://deb.debian.org/debian/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Suites: trixie
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Components: main contrib non-free-firmware non-free
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;benötigte-pakete-installieren&#34;&gt;Benötigte Pakete installieren&lt;/h3&gt;
&lt;p&gt;Nachdem man die &lt;a href=&#34;#debianquellen-bearbeiten&#34;&gt;Debianquellen&lt;/a&gt; bearbeitet hat, aktualisiert
man die Quellen:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# apt update
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Anschließend kann man die benötigten Pakete installieren:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# apt install game-data-packager rtcw lgogdownloader
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;spieldaten-paketieren&#34;&gt;Spieldaten paketieren&lt;/h3&gt;
&lt;p&gt;Die im &lt;a href=&#34;#ben%C3%B6tigte-pakete-installieren&#34;&gt;vorigen Schritt&lt;/a&gt; installierten Pakete
&lt;a href=&#34;https://packages.debian.org/trixie/game-data-packager&#34;&gt;game-data-packager&lt;/a&gt; und
&lt;a href=&#34;https://packages.debian.org/trixie/lgogdownloader&#34;&gt;lgogdownloader&lt;/a&gt; werden nun genutzt um die Spieldaten
herunterzuladen.&lt;/p&gt;
&lt;p&gt;Hat man &lt;em&gt;lgogdownloader&lt;/em&gt; bisher noch nicht genutzt, muss man sich erst anmelden:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ lgogdownloader --login
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Danach werden Benutzername und Passwort abgefragt und man wird eingeloggt. Danach
kann mit dem &lt;em&gt;game-data-packager&lt;/em&gt; fortgefahren werden:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ mkdir -p ~/Games/rtcw
$ cd ~/Games/rtcw
$ game-data-packager rtcw
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;spieldaten-installieren&#34;&gt;Spieldaten installieren&lt;/h3&gt;
&lt;p&gt;Nachdem nun die &lt;a href=&#34;#spieldaten-paketieren&#34;&gt;Spieldaten paketiert sind&lt;/a&gt;, können diese
installiert werden:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# apt install /home/&amp;lt;USER&amp;gt;/Games/rtcw/rtcw*.deb
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Der Platzhalter &lt;code&gt;&amp;lt;USER&amp;gt;&lt;/code&gt; ist natürlich durch den entsprechenden Benutzer zu ersetzen.&lt;/p&gt;
&lt;h3 id=&#34;spielen&#34;&gt;Spielen&lt;/h3&gt;
&lt;p&gt;Nun kann man &lt;em&gt;Return to Castle Wolfenstein&lt;/em&gt; spielen und in Erinnerungen schwelgen,
oder diese Spiele auch zum ersten Mal genießen. Fröhliches Nazi-Ballern. 😀&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>openMoHAA: Medal of Honor: Allied Assault auf Debian spielen</title>
      <link>/2025/08/13/openmohaa-medal-of-honor-allied-assault-auf-debian-spielen/</link>
      <pubDate>Wed, 13 Aug 2025 21:49:47 +0200</pubDate>
      <guid>/2025/08/13/openmohaa-medal-of-honor-allied-assault-auf-debian-spielen/</guid>
      <description>&lt;p&gt;Kürzlich fiel mir auf, dass &lt;a href=&#34;https://de.wikipedia.org/wiki/Medal_of_Honor:_Allied_Assault&#34;&gt;&lt;em&gt;Medal of Honor: Allied Assault&lt;/em&gt;&lt;/a&gt; (MoHAA)
vom Projekt &lt;a href=&#34;https://github.com/openmoh/openmohaa&#34;&gt;&lt;em&gt;OpenMoHAA&lt;/em&gt;&lt;/a&gt; als OpenSource Software
(&lt;a href=&#34;https://github.com/openmoh/openmohaa#GPL-2.0-1-ov-file&#34;&gt;GPL-2.0&lt;/a&gt;) nachgebaut wurde. Mit dem kürzlich erschienenen Debian
&lt;a href=&#34;https://www.debian.org/releases/trixie/&#34;&gt;Trixie&lt;/a&gt; ist jetzt &lt;a href=&#34;https://packages.debian.org/trixie/openmohaa&#34;&gt;OpenMoHAA als Debianpaket&lt;/a&gt; verfügbar.
Da ich &lt;em&gt;MoHAA&lt;/em&gt; als Jugendlicher sehr gerne gespielt habe, möchte ich mir natürlich
nicht die Gelegenheit entgehen lassen es unter Debian zu spielen.&lt;/p&gt;
&lt;h3 id=&#34;spieldaten&#34;&gt;Spieldaten&lt;/h3&gt;
&lt;p&gt;Der Nachbau von &lt;em&gt;MoHAA&lt;/em&gt; ist zwar frei, die Grafiken und Sounds sind es aber nicht.
Um &lt;em&gt;OpenMoHAA&lt;/em&gt; spielen zu können, benötigt man also die Daten des Originalspiels.
Da ich die Spiel-CD von früher nicht mehr zur Hand habe, habe ich mir &lt;em&gt;MoHAA&lt;/em&gt; bei
&lt;a href=&#34;https://www.gog.com/de/game/medal_of_honor_allied_assault_war_chest&#34;&gt;GOG&lt;/a&gt; gekauft.&lt;/p&gt;
&lt;h3 id=&#34;debianquellen-bearbeiten&#34;&gt;Debianquellen bearbeiten&lt;/h3&gt;
&lt;p&gt;Da man die unfreien &lt;a href=&#34;#spieldaten&#34;&gt;Spieldaten&lt;/a&gt; benötigt kann &lt;em&gt;OpenMoHAA&lt;/em&gt; nicht über
&lt;a href=&#34;https://www.debian.org/doc/debian-policy/ch-archive.html#the-main-archive-area&#34;&gt;&lt;em&gt;Debian main&lt;/em&gt;&lt;/a&gt; bereitgestellt werden, sondern befindet sich in
&lt;a href=&#34;https://www.debian.org/doc/debian-policy/ch-archive.html#the-contrib-archive-area&#34;&gt;&lt;em&gt;contrib&lt;/em&gt;&lt;/a&gt;.
Darum muss man sicher stellen, dass die &lt;em&gt;contrib&lt;/em&gt;-Quellen eingebunden sind.&lt;/p&gt;
&lt;p&gt;Wenn man das &lt;a href=&#34;https://wiki.debian.org/SourcesList#sources.list&#34;&gt;bisherige Format&lt;/a&gt; mit &lt;code&gt;/etc/apt/sources.list&lt;/code&gt; nutzt, muss man
sicherstellen, dass &lt;em&gt;contrib&lt;/em&gt; enthalten ist. Die entsprechende Zeile sieht dann
z.B. so aus:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deb https://deb.debian.org/debian trixie main contrib non-free-firmware
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Nutzt man schon das neue &lt;a href=&#34;https://wiki.debian.org/SourcesList#debian.sources&#34;&gt;&lt;em&gt;deb822&lt;/em&gt;-Format&lt;/a&gt; kann man in die entsprechende
Datei, z.B. &lt;code&gt;/etc/apt/sources.list.d/debian.sources&lt;/code&gt;, bei &lt;code&gt;Components:&lt;/code&gt; &lt;code&gt;contrib&lt;/code&gt;
hinzufügen. Das sieht dann z.B. so aus:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Modernized from /etc/apt/sources.list&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Types: deb
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;URIs: https://deb.debian.org/debian/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Suites: trixie
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Components: main contrib non-free-firmware non-free
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;benötigte-pakete-installieren&#34;&gt;Benötigte Pakete installieren&lt;/h3&gt;
&lt;p&gt;Nachdem man die &lt;a href=&#34;#debianquellen-bearbeiten&#34;&gt;Debianquellen&lt;/a&gt; bearbeitet hat, aktualisiert
man die Quellen:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# apt update
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Anschließend kann man die benötigten Pakete installieren:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# apt install game-data-packager openmohaa lgogdownloader
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;spieldaten-paketieren&#34;&gt;Spieldaten paketieren&lt;/h3&gt;
&lt;p&gt;Die im &lt;a href=&#34;#ben%C3%B6tigte-pakete-installieren&#34;&gt;vorigen Schritt&lt;/a&gt; installierten Pakete
&lt;a href=&#34;https://packages.debian.org/trixie/game-data-packager&#34;&gt;game-data-packager&lt;/a&gt; und
&lt;a href=&#34;https://packages.debian.org/trixie/lgogdownloader&#34;&gt;lgogdownloader&lt;/a&gt; werden nun genutzt um die Spieldaten
herunterzuladen.&lt;/p&gt;
&lt;p&gt;Hat man &lt;em&gt;lgogdownloader&lt;/em&gt; bisher noch nicht genutzt, muss man sich erst anmelden:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ lgogdownloader --login
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Danach werden Benutzername und Passwort abgefragt und man wird eingeloggt. Danach
kann mit dem &lt;em&gt;game-data-packager&lt;/em&gt; fortgefahren werden:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ mkdir -p ~/Games/mohaa
$ cd ~/Games/mohaa
$ game-data-packager mohaa
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;spieldaten-installieren&#34;&gt;Spieldaten installieren&lt;/h3&gt;
&lt;p&gt;Nachdem nun die &lt;a href=&#34;#spieldaten-paketieren&#34;&gt;Spieldaten paketiert sind&lt;/a&gt;, können diese
installiert werden:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# apt install /home/&amp;lt;USER&amp;gt;/Games/mohaa/mohaa*.deb
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Der Platzhalter &lt;code&gt;&amp;lt;USER&amp;gt;&lt;/code&gt; ist natürlich durch den entsprechenden Benutzer zu ersetzen.&lt;/p&gt;
&lt;h3 id=&#34;spielen&#34;&gt;Spielen&lt;/h3&gt;
&lt;p&gt;Nun kann man &lt;em&gt;Medal of Honor: Allied Assault&lt;/em&gt;, sowie die Erweiterungen &lt;em&gt;Spearhead&lt;/em&gt; und
&lt;em&gt;Breakthrough&lt;/em&gt; spielen und in Erinnerungen schwelgen, oder diese Spiele auch zum ersten
Mal genießen. :)&lt;/p&gt;
&lt;h3 id=&#34;troubleshooting&#34;&gt;Troubleshooting&lt;/h3&gt;
&lt;h4 id=&#34;auflösung&#34;&gt;Auflösung&lt;/h4&gt;
&lt;p&gt;Geht es um die Bildschirmauflösung, so merkt man dem Spiel das Alter an. 4:3 hat
heute eigentlich kein Monitor mehr. Leider sind die Auswahlmöglichkeiten in den
Spieloptionen fest einprogrammiert, deshalb muss man selbst in der Konfigurationsdatei
&lt;code&gt;~/.openmohaa/main/configs/omconfig.cfg&lt;/code&gt; anpassen.&lt;/p&gt;
&lt;p&gt;Entweder kann man den Parameter &lt;code&gt;r_mode&lt;/code&gt; auf &lt;code&gt;-2&lt;/code&gt; setzen und die Zeilen &lt;code&gt;r_customwidth&lt;/code&gt;
und &lt;code&gt;r_customheight&lt;/code&gt; entfernen. Dann sollte das Spiel mit der nativen Auflösung im
Vollbild laufen.&lt;/p&gt;
&lt;p&gt;Sollte das nicht wie gewünscht funktionieren, so muss man die Auflösung manuell angeben.
Dazu muss man den Parameter &lt;code&gt;r_mode&lt;/code&gt; auf &lt;code&gt;-1&lt;/code&gt; setzen und mit &lt;code&gt;r_customwidth&lt;/code&gt; und
&lt;code&gt;r_customheight&lt;/code&gt; die gewünschte Auflösung eintragen, z.B.:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;seta r_mode &amp;#34;-1&amp;#34;
seta r_customwidth &amp;#34;1920&amp;#34;
seta r_customheight &amp;#34;1080&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;btw&#34;&gt;BTW&lt;/h3&gt;
&lt;p&gt;…es gibt auch Pakete namens &lt;a href=&#34;https://packages.debian.org/trixie/rtcw&#34;&gt;rtcw&lt;/a&gt; und &lt;a href=&#34;https://packages.debian.org/trixie/dhewm3&#34;&gt;dhewm3&lt;/a&gt; in Debian.
Bei ersterem geht es um die Rückkehr zu einer Burg namens Wolfenstein
(&lt;em&gt;Return to Castle Wolfenstein&lt;/em&gt;) und bei zweitem
um die dritte Version des Verhängnis. Diese Spiele lassen sich auch analog zu dem für
&lt;em&gt;OpenMoHAA&lt;/em&gt; beschriebenen Verfahren installieren. ;)&lt;/p&gt;
&lt;h4 id=&#34;update-2026-04-03&#34;&gt;Update 2026-04-03&lt;/h4&gt;
&lt;p&gt;Ich habe zusätzlich zur Umschreibung des Namen von &lt;em&gt;RtCW&lt;/em&gt; den vollen Namen angegeben,
da &lt;em&gt;Return to Castle Wolfenstein&lt;/em&gt; &lt;a href=&#34;https://www.bundesanzeiger.de/pub/publication/rIBMaUHpm3JNwYB1CtR/content/rIBMaUHpm3JNwYB1CtR/BAnz%20AT%2030.03.2026%20B6.pdf&#34;&gt;vom Index genommen&lt;/a&gt; (pdf) wurde.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>System-Mails von Linux über XMPP empfangen (v2)</title>
      <link>/2023/05/06/system-mails-von-linux-ueber-xmpp-empfangen-(v2)/</link>
      <pubDate>Sat, 06 May 2023 10:33:28 +0200</pubDate>
      <guid>/2023/05/06/system-mails-von-linux-ueber-xmpp-empfangen-(v2)/</guid>
      <description>&lt;p&gt;2017 beschrieb ich wie man &lt;a href=&#34;/2017/09/11/system-mails-von-linux-ueber-xmpp-empfangen/&#34;&gt;System-Mails von Linux über XMPP empfangen&lt;/a&gt; kann.
Da ich mittlerweile &lt;a href=&#34;https://github.com/lhost/sendxmpp&#34;&gt;sendxmpp&lt;/a&gt; nicht mehr nutze, weil ich damit viele Probleme
hatte und mir selbst die Alternative &lt;a href=&#34;https://salsa.debian.org/mdosch/go-sendxmpp&#34;&gt;go-sendxmpp&lt;/a&gt; geschrieben habe möchte
ich mein neues Setup vorstellen.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;#x26a0;&amp;#xfe0f; &lt;strong&gt;Warnung&lt;/strong&gt; &amp;#x26a0;&amp;#xfe0f;  &lt;br&gt;
Auch 2023 gilt: Es könnte sein, dass wichtige oder sensible Informationen in den Systemmails
enthalten sind. Deshalb würde ich davon abraten diese über fremde Server zu senden.  &lt;br&gt;
Außerdem speichere ich das Passwort des XMPP-Kontos im Script, weshalb ich dazu rate einen
dezidierten XMPP account dafür zu nutzen und nicht etwa den eigenen privaten account.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Diese Anleitung geht von einem &lt;a href=&#34;https://www.debian.org/&#34;&gt;Debian&lt;/a&gt;system aus, kann aber sicherlich auch für
andere Distributionen adaptiert werden. Ich selbst habe dieses Setup mit &lt;a href=&#34;https://www.debian.org/releases/bookworm/&#34;&gt;Debian bookworm&lt;/a&gt;
eingerichtet.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Go-sendxmpp&lt;/em&gt; kann man entweder &lt;a href=&#34;https://salsa.debian.org/mdosch/go-sendxmpp#manual-installation&#34;&gt;selbst bauen&lt;/a&gt;, als &lt;a href=&#34;https://salsa.debian.org/mdosch/go-sendxmpp#binaries&#34;&gt;binary herunterladen&lt;/a&gt;
oder aus den repos &lt;a href=&#34;https://salsa.debian.org/mdosch/go-sendxmpp#repositories-including-go-sendxmpp&#34;&gt;einiger distros&lt;/a&gt; installieren. Ich habe es aus den Debian
repos installiert, da &lt;em&gt;go-sendxmpp&lt;/em&gt; ab &lt;a href=&#34;https://www.debian.org/releases/bookworm/&#34;&gt;bookworm&lt;/a&gt; in den &lt;a href=&#34;https://packages.debian.org/bookworm/go-sendxmpp&#34;&gt;Debian repos vorhanden&lt;/a&gt;
ist.&lt;/p&gt;
&lt;p&gt;Nun wird das script &lt;code&gt;/usr/local/bin/mail2xmpp&lt;/code&gt; mit folgendem Inhalt angelegt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;#!/bin/bash                   
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;&lt;/span&gt;go-sendxmpp -u &lt;span class=&#34;nv&#34;&gt;$user&lt;/span&gt; -p &lt;span class=&#34;nv&#34;&gt;$password&lt;/span&gt; recipient@example.org
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Dabei sind &lt;code&gt;$user&lt;/code&gt; und &lt;code&gt;$password&lt;/code&gt; durch Benutzer und Passwort des Kontos, das zum Versand
verwendet wird, zu ersetzen und &lt;code&gt;recipient@example.org&lt;/code&gt; durch die eigene Adresse, auf der
man die Nachrichten erhalten will. Es ist natürlich auch möglich mehrere Zieladressen
anzugeben.&lt;/p&gt;
&lt;p&gt;Danach wird &lt;em&gt;exim&lt;/em&gt; zum Eigentümer der Datei gemacht:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# chown Debian-exim:Debian-exim /usr/local/bin/mail2xmpp
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Ebenso werden die Berechtigungen angepasst:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# chmod 700 /usr/local/bin/mail2xmpp
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Um zu definieren wie die Mails zugestellt werden muss die Datei &lt;code&gt;/etc/aliases&lt;/code&gt; bearbeitet werden,
wobei $user natürlich anzupassen ist (ich nutze dafür meinen Hauptbenutzer, man kann aber natürlich
auch extra einen Benutzer für diesen Zweck anlegen):&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# /etc/aliases&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mailer-daemon: postmaster
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;postmaster: root
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nobody: root
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;hostmaster: root
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;usenet: root
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;news: root
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;webmaster: root
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;www: root
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ftp: root
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;abuse: root
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;noc: root
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;security: root
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;root: &lt;span class=&#34;nv&#34;&gt;$user&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$user&lt;/span&gt;:,&lt;span class=&#34;p&#34;&gt;|&lt;/span&gt;/usr/local/bin/mail2xmpp
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Damit die Systemmails per pipe weitergereicht werden können muss die Datei &lt;code&gt;/etc/exim4/exim4.conf.localmacros&lt;/code&gt;
ngelegt und diese Zeile eingetragen werden:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;SYSTEM_ALIASES_PIPE_TRANSPORT&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; address_pipe
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Anschließend werden die neuen Aliase eingelesen und exim4 neu gestartet:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# newaliases
# systemctl restart exim4.service
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Abschließend wird noch getestet ob der Mailtransport über XMPP funktioniert:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ echo &amp;#34;Das ist ein Test&amp;#34; | mail -s testmail root
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;update-2023-05-06&#34;&gt;Update 2023-05-06&lt;/h3&gt;
&lt;p&gt;Ein anonymer Kommentator (der Kommentar ist mittlerweile verschwunden.
Wo ist er hin? Ich habe ihn wissentlich nicht gelöscht…) hat mich darauf hingewiesen, dass
der Teil vor der &lt;em&gt;pipe&lt;/em&gt; im script unnötig war und ich habe es dementsprechend
angepasst.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Kurztipp: Zugriff auf WiFi captive portal bei Nutzung eines eigenen DNS (v2)</title>
      <link>/2023/03/31/kurztipp-zugriff-auf-wifi-captive-portal-bei-nutzung-eines-eigenen-dns-(v2)/</link>
      <pubDate>Fri, 31 Mar 2023 12:40:29 +0200</pubDate>
      <guid>/2023/03/31/kurztipp-zugriff-auf-wifi-captive-portal-bei-nutzung-eines-eigenen-dns-(v2)/</guid>
      <description>&lt;p&gt;2019 habe ich &lt;a href=&#34;/2019/04/26/kurztipp-zugriff-auf-wifi-captive-portal-bei-nutzung-eines-eigenen-dns/&#34;&gt;hier&lt;/a&gt; beschrieben, wie man Zugriff auf ein
&lt;a href=&#34;https://de.wikipedia.org/wiki/Captive_Portal&#34;&gt;captive portal&lt;/a&gt; bekommt wenn man einen eigenen DNS server
(z.B. per &lt;a href=&#34;/2021/10/31/dns-over-tls-in-debian/#client&#34;&gt;DoT&lt;/a&gt;) nutzt. Mittlerweile habe ich ein tool gefunden, dass
das deutlich komfortabler macht: &lt;a href=&#34;https://github.com/FiloSottile/captive-browser&#34;&gt;captive browser&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Da ich statt Chrome &lt;a href=&#34;https://packages.debian.org/stable/chromium&#34;&gt;Chromium&lt;/a&gt; aus den &lt;a href=&#34;https://debian.org&#34;&gt;Debian&lt;/a&gt; repositories
nutze, musste ich nach Ausführung der &lt;a href=&#34;https://github.com/FiloSottile/captive-browser#installation&#34;&gt;allgemeinen Installationshinweise&lt;/a&gt; in
der Datei &lt;code&gt;$(go env GOPATH)/src/github.com/FiloSottile/captive-browser/captive-browser-ubuntu-chrome.toml&lt;/code&gt;&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;
in &lt;a href=&#34;https://github.com/FiloSottile/captive-browser/blob/main/captive-browser-ubuntu-chrome.toml#L9&#34;&gt;dieser Zeile&lt;/a&gt; lediglich &lt;code&gt;google-chrome&lt;/code&gt; durch
&lt;code&gt;chromium&lt;/code&gt; ersetzen. Danach folgte ich den &lt;a href=&#34;https://github.com/FiloSottile/captive-browser#ubuntu&#34;&gt;Anweisungen für Ubuntu&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Nun genügt es &lt;code&gt;captive-browser&lt;/code&gt; aufzurufen und es öffnet sich ein chromium Fenster
mit dem &lt;em&gt;captive portal&lt;/em&gt; zur Anmeldung im &lt;em&gt;WiFi&lt;/em&gt; und es ist nicht nötig die Datei
&lt;code&gt;/etc/resolv.conf&lt;/code&gt; zu editieren um kurzzeitig einen anderen &lt;em&gt;DNS&lt;/em&gt; server zu nutzen.&lt;/p&gt;
&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34;&gt;
&lt;p&gt;Üblicherweise &lt;code&gt;~/go/src/github.com/FiloSottile/captive-browser/captive-browser-ubuntu-chrome.toml&lt;/code&gt;&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description>
    </item>
    
    <item>
      <title>Youtubevideos oder -playlisten mit MPD abspielen</title>
      <link>/2021/12/04/youtubevideos-oder--playlisten-mit-mpd-abspielen/</link>
      <pubDate>Sat, 04 Dec 2021 16:00:26 +0100</pubDate>
      <guid>/2021/12/04/youtubevideos-oder--playlisten-mit-mpd-abspielen/</guid>
      <description>&lt;p&gt;Manchmal möchte man ein Lied oder eine Playlist abspielen, die man nicht
lokal in der &lt;a href=&#34;https://www.musicpd.org/&#34;&gt;mpd&lt;/a&gt;-Datenbank hat. Häufig findet man diese Lieder dann
bei youtube. Da ich über meinen mpd mittels &lt;a href=&#34;https://mjaggard.github.io/snapcast/&#34;&gt;snapcast&lt;/a&gt; Musik gleichzeitig
in mehreren Räumen abspielen kann möchte ich natürlich mpd auch für youtube
nutzen.&lt;/p&gt;
&lt;p&gt;Dazu habe ich mir ein kleines script geschrieben, welches das Lied
oder die Playliste mit mpd abspielt.&lt;/p&gt;
&lt;p&gt;Vorraussetzungen um das script nutzen zu können sind &lt;a href=&#34;https://www.musicpd.org/clients/mpc/&#34;&gt;mpc&lt;/a&gt; und &lt;a href=&#34;https://github.com/yt-dlp/yt-dlp&#34;&gt;yt-dlp&lt;/a&gt;
oder &lt;a href=&#34;https://yt-dl.org/&#34;&gt;youtube-dl&lt;/a&gt;.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;#! /bin/bash
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# mpdpipe&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Copyright (C) 2021 Martin Dosch &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# This program is free software: you can redistribute it and/or modify&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# it under the terms of the GNU General Public License as published by&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# the Free Software Foundation, either version 3 of the License, or&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# (at your option) any later version.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# This program is distributed in the hope that it will be useful,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# GNU General Public License for more details.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# You should have received a copy of the GNU General Public License&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# along with this program.  If not, see &amp;lt;https://www.gnu.org/licenses/&amp;gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;ytdl&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;command&lt;/span&gt; -v yt-dlp&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[[&lt;/span&gt; -z &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$ytdl&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;]]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;nv&#34;&gt;ytdl&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;command&lt;/span&gt; -v youtube-dl&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[[&lt;/span&gt; -z &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$ytdl&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;]]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;k&#34;&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;No youtube-dl found.&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;nb&#34;&gt;exit&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;k&#34;&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;mpc&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;command&lt;/span&gt; -v mpc&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[[&lt;/span&gt; -z &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$mpc&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;]]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;No mpc found.&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;nb&#34;&gt;exit&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;get_song_url &lt;span class=&#34;o&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;nv&#34;&gt;url&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$ytdl&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; -qgf bestaudio &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$1&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;check_url &lt;span class=&#34;o&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;nv&#34;&gt;regex&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;(https?|ftp|file)://[-A-Za-z0-9\+&amp;amp;@#/%?=~_|!:,.;]*[-A-Za-z0-9\+&amp;amp;@#/%=~_|]&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[[&lt;/span&gt; ! &lt;span class=&#34;nv&#34;&gt;$1&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;~ &lt;span class=&#34;nv&#34;&gt;$regex&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;]]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;k&#34;&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$1&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt; is not a valid URL.&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;nb&#34;&gt;exit&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;k&#34;&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;show_help &lt;span class=&#34;o&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;nv&#34;&gt;basename&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;command&lt;/span&gt; -v basename&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[[&lt;/span&gt; -z &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$basename&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;]]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;k&#34;&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;nv&#34;&gt;program&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$0&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;k&#34;&gt;else&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;nv&#34;&gt;program&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$basename&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$0&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;k&#34;&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Usage:&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$program&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt; url&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$program&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt; mpd_host url&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;nb&#34;&gt;exit&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;case&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$#&lt;/span&gt; in
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	1&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$1&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;help&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;||&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$1&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;--help&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;k&#34;&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;			show_help
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;k&#34;&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; ! &lt;span class=&#34;nv&#34;&gt;$mpc&lt;/span&gt; -q
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;k&#34;&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;			&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Couldn&amp;#39;t connect to mpd.&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;			&lt;span class=&#34;nb&#34;&gt;exit&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;k&#34;&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;nv&#34;&gt;mpc_command&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$mpc&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;nv&#34;&gt;input&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$1&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;p&#34;&gt;;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	2&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; ! &lt;span class=&#34;nv&#34;&gt;$mpc&lt;/span&gt; -qh &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$1&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;k&#34;&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;			&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Couldn&amp;#39;t connect to mpd at &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$1&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;.&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;			&lt;span class=&#34;nb&#34;&gt;exit&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;k&#34;&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;nv&#34;&gt;mpc_command&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$mpc&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt; -h &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$1&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;nv&#34;&gt;input&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$2&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;p&#34;&gt;;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	*&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Invalid input.&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		show_help
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;p&#34;&gt;;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;esac&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;check_url &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$input&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$mpc_command&lt;/span&gt; clear
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;firstrun&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; link in &lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$ytdl&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; --flat-playlist --no-warnings -qg &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$input&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;do&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	get_song_url &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$link&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt; -n &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$url&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;k&#34;&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;nv&#34;&gt;$mpc_command&lt;/span&gt; add &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$url&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$firstrun&lt;/span&gt; -eq &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;k&#34;&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;			&lt;span class=&#34;nv&#34;&gt;$mpc_command&lt;/span&gt; play
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;			&lt;span class=&#34;nv&#34;&gt;firstrun&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;k&#34;&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;k&#34;&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;done&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Ich werde das script hier aktuell halten, aber für den Fall, dass ich es
doch mal vergesse: Ich habe es auch auf &lt;a href=&#34;https://salsa.debian.org/mdosch/mpdpipe/&#34;&gt;salsa.debian.org&lt;/a&gt; veröffentlicht.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>DNS over TLS in Debian</title>
      <link>/2021/10/31/dns-over-tls-in-debian/</link>
      <pubDate>Sun, 31 Oct 2021 11:05:24 +0100</pubDate>
      <guid>/2021/10/31/dns-over-tls-in-debian/</guid>
      <description>&lt;p&gt;2017 schrieb ich über die Einrichtung von &lt;a href=&#34;/2017/07/07/dnscrypt-in-debian-einrichten/&#34;&gt;DNSCrypt in Debian&lt;/a&gt;,
mittlerweile nutze ich aber &lt;a href=&#34;https://de.wikipedia.org/wiki/DNS_over_TLS&#34;&gt;DNS-over-TLS&lt;/a&gt; (DoT) mit einem eigenen server.
Sowohl auf Server-, als auch auf Client-Seite nutze ich &lt;a href=&#34;https://www.knot-resolver.cz/&#34;&gt;knot-resolver&lt;/a&gt;.&lt;/p&gt;
&lt;h1 id=&#34;einrichtung&#34;&gt;Einrichtung&lt;/h1&gt;
&lt;h2 id=&#34;server&#34;&gt;Server&lt;/h2&gt;
&lt;p&gt;Zuerst muss das Paket &lt;a href=&#34;https://packages.debian.org/stable/knot-resolver&#34;&gt;knot-resolver&lt;/a&gt; installiert werden:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;apt install knot-resolver
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Danach muss &lt;code&gt;/etc/knot-resolver/kresd.conf&lt;/code&gt; editiert werden:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-lua&#34; data-lang=&#34;lua&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;net.listen&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;127.0.0.1&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;53&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;net.listen&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;IP4&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;853&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;kind&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;tls&amp;#39;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;})&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;net.listen&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;IP6&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;853&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;kind&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;tls&amp;#39;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;})&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;user&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;knot-resolver&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;knot-resolver&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;cache.size&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;*&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;GB&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;modules&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;s1&#34;&gt;&amp;#39;view&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;s1&#34;&gt;&amp;#39;hints &amp;gt; iterate&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;s1&#34;&gt;&amp;#39;serve_stale &amp;lt; cache&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;s1&#34;&gt;&amp;#39;workarounds &amp;lt; iterate&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Statt &lt;code&gt;IP4&lt;/code&gt; und &lt;code&gt;IP6&lt;/code&gt; muss natürlich die IP-Adresse eingegeben werden, auf der der server
über DoT erreichbar sein soll. Ggf. muss man natürlich auch noch den Port 853 in der firewall
für Zugriffe von Außen freigeben.&lt;/p&gt;
&lt;p&gt;Anschließend aktiviert man den server folgendermaßen:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;systemctl &lt;span class=&#34;nb&#34;&gt;enable&lt;/span&gt; --now kresd@&lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;1..4&lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;.service
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;zugriff-auf-tls-zertifkate&#34;&gt;Zugriff auf TLS-Zertifkate&lt;/h2&gt;
&lt;p&gt;Ohne weitere Konfiguration benutzt &lt;em&gt;kresd&lt;/em&gt; selbstsignierte Zertifikate für DoT. Ich habe
auf meinem server bereits Zertifikate von &lt;a href=&#34;https://letsencrypt.org/&#34;&gt;Let&amp;rsquo;s Encrypt&lt;/a&gt; und möchte diese auch für
DoT nutzen. Um die Zertifikate für &lt;em&gt;kresd&lt;/em&gt; erreichbar zu machen habe ich ein kleines Skript
geschrieben:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cp /etc/letsencrypt/live/mdosch.de/privkey.pem /var/lib/knot-resolver
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cp /etc/letsencrypt/live/mdosch.de/fullchain.pem /var/lib/knot-resolver
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;chown -R knot-resolver:knot-resolver /var/lib/knot-resolver 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;chmod &lt;span class=&#34;m&#34;&gt;700&lt;/span&gt; /var/lib/knot-resolver
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;systemctl restart kresd@&lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;1..4&lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;.service
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Die Pfade der Zertifikate sind natürlich anzupassen und das Skript muss nach dem Speichern
ausführbar gemacht werden:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;chmod +x /pfad/zum/script.sh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Damit das Skript auch ausgeführt wird wenn &lt;a href=&#34;https://certbot.eff.org/&#34;&gt;certbot&lt;/a&gt; die Zertifikate erneuert, lasse ich
es mittels &lt;code&gt;--renew-hook&lt;/code&gt; aufrufen.&lt;/p&gt;
&lt;p&gt;Nun muss die Konfiguration abgeändert werden (Zeile 1) damit &lt;em&gt;kresd&lt;/em&gt; die Zertifikate auch nutzt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-lua&#34; data-lang=&#34;lua&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;net.tls&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;/var/lib/knot-resolver/fullchain.pem&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;/var/lib/knot-resolver/privkey.pem&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;net.listen&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;127.0.0.1&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;53&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;net.listen&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;IP4&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;853&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;kind&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;tls&amp;#39;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;})&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;net.listen&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;IP6&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;853&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;kind&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;tls&amp;#39;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;})&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;user&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;knot-resolver&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;knot-resolver&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;cache.size&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;*&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;GB&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;modules&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;    
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;s1&#34;&gt;&amp;#39;view&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;                   
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;s1&#34;&gt;&amp;#39;hints &amp;gt; iterate&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;         
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;s1&#34;&gt;&amp;#39;serve_stale &amp;lt; cache&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;     
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;s1&#34;&gt;&amp;#39;workarounds &amp;lt; iterate&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Danach muss &lt;em&gt;kresd&lt;/em&gt; neu gestart werden:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;systemctl restart kresd@&lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;1..4&lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;.service
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;werbung-und-tracking-filtern&#34;&gt;Werbung und Tracking filtern&lt;/h2&gt;
&lt;p&gt;Ich möchte Werbung und Tracking direkt auf DNS-Ebene blocken und nutze dafür die Blocklisten
von &lt;a href=&#34;https://github.com/hectorm/hblock&#34;&gt;hBlock&lt;/a&gt;. Wenn man das &lt;em&gt;hBlock&lt;/em&gt;-repo klont und dort &lt;code&gt;make hosts&lt;/code&gt; ausführt erhält man
u.a. eine Datei &lt;code&gt;hosts_rpz.txt&lt;/code&gt; im Ordner &lt;code&gt;dist&lt;/code&gt;. Diese Datei kann &lt;em&gt;kresd&lt;/em&gt; einlesen und die
dort gelisteten hosts bei DNS-Abfragen blockieren. Die Konfiguration muss folgendermaßen
angepasst werden (Zeilen 13 und 16):&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-lua&#34; data-lang=&#34;lua&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;net.tls&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;/var/lib/knot-resolver/fullchain.pem&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;/var/lib/knot-resolver/privkey.pem&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;net.listen&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;127.0.0.1&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;53&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;net.listen&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;IP4&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;853&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;kind&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;tls&amp;#39;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;})&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;net.listen&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;IP6&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;853&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;kind&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;tls&amp;#39;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;})&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;user&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;knot-resolver&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;knot-resolver&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;cache.size&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;*&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;GB&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;modules&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;    
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;s1&#34;&gt;&amp;#39;view&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;                   
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;s1&#34;&gt;&amp;#39;hints &amp;gt; iterate&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;         
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;s1&#34;&gt;&amp;#39;serve_stale &amp;lt; cache&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;     
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;s1&#34;&gt;&amp;#39;workarounds &amp;lt; iterate&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;s1&#34;&gt;&amp;#39;policy&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;policy.add&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;policy.rpz&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;policy.DENY&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;/pfad/zu/hosts_rpz.txt&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Danach muss &lt;em&gt;kresd&lt;/em&gt; wieder neu gestart werden:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;systemctl restart kresd@&lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;1..4&lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;.service
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;rekursives-blocken&#34;&gt;Rekursives Blocken&lt;/h2&gt;
&lt;p&gt;Einige Trackingfirmen nutzen für ihre Kunden subdomains um die üblichen Schutzmaßnahmen
zu umgehen, z.B. &lt;code&gt;zn0lxkzethotizctx-bahn.siteintercept.qualtrics.com&lt;/code&gt;. Um den Schutz
vor Tracking zu verbessern kann man auch rekursiv alle subdomains der domains in der Blockliste
sperren.&lt;/p&gt;
&lt;p&gt;Mit Hilfe von &lt;a href=&#34;https://github.com/hectorm/hblock&#34;&gt;hBlock&lt;/a&gt; kann man eine Blockliste erstellen, die über &lt;a href=&#34;https://de.wikipedia.org/wiki/Wildcard_(Informatik)&#34;&gt;wildcards&lt;/a&gt;
auch die Subdomains umfasst:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;hblock --output ./hosts_rpz.txt --header none --footer none --redirection &lt;span class=&#34;s1&#34;&gt;&amp;#39;.&amp;#39;&lt;/span&gt; --template &lt;span class=&#34;s1&#34;&gt;&amp;#39;%D CNAME %R\n*.%D CNAME %R&amp;#39;&lt;/span&gt; --comment &lt;span class=&#34;s1&#34;&gt;&amp;#39;;&amp;#39;&lt;/span&gt; --filter-subdomains
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Durch rekursives Blocken wird aber auch eine zufällig generierte subdomain in der Form
&lt;code&gt;&amp;lt;random&amp;gt;-dnsotls-ds.metric.gstatic.com&lt;/code&gt; geblockt, die bei Benutzung von &lt;em&gt;DoT&lt;/em&gt; &lt;a href=&#34;https://android.googlesource.com/platform/packages/modules/DnsResolver/+/bab3daa733894008bf917713f9a72a4ccbbd3b3a/DnsTlsTransport.cpp#150&#34;&gt;in
Android genutzt wird&lt;/a&gt;. Um die resultierende Fehlermeldung in Android zu vermeiden
wird diese subdomain gezielt erlaubt und folgendes in &lt;code&gt;/etc/knot-resolver/kresd.conf&lt;/code&gt;
eingetragen:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-lua&#34; data-lang=&#34;lua&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;policy.add&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;policy.pattern&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;n&#34;&gt;policy.PASS&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;s1&#34;&gt;&amp;#39;%w+%-dnsotls%-ds&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\006&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;metric&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\007&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;gstatic&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\003&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;com&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\000&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;$&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;client&#34;&gt;Client&lt;/h2&gt;
&lt;h2 id=&#34;linux&#34;&gt;Linux&lt;/h2&gt;
&lt;p&gt;Auf dem client muss ebenfalls das Paket &lt;a href=&#34;https://packages.debian.org/stable/knot-resolver&#34;&gt;knot-resolver&lt;/a&gt; installiert werden:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;apt install knot-resolver
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Die Konfiguration &lt;code&gt;/etc/knot-resolver/kresd.conf&lt;/code&gt; gestaltet sich auf dem client recht
simpel:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-lua&#34; data-lang=&#34;lua&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;net.listen&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;127.0.0.1&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;53&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;kind&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;dns&amp;#39;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;})&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;modules&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s1&#34;&gt;&amp;#39;policy&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;policy.add&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;policy.all&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;policy.TLS_FORWARD&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;({&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;5.181.50.75&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;hostname&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;mdosch.de&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;2a03:4000:3f:1c8:8839:33ff:feba:fe4a&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;hostname&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;mdosch.de&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;})))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Die IPs und der hostname müssen natürlich gegen eure IPs und domain ausgetauscht werden.&lt;/p&gt;
&lt;p&gt;Auch hier muss &lt;em&gt;kresd&lt;/em&gt; aktiviert werden:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;systemctl &lt;span class=&#34;nb&#34;&gt;enable&lt;/span&gt; --now kresd@&lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;1..4&lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;.service
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Anschließend muss man dem System mitteilen, den DNS-forwarder unter 127.0.0.1:53 zu nutzen.
Das tut man indem man die Datei &lt;code&gt;/etc/resolv.conf&lt;/code&gt; folgendermaßen editiert:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;nameserver 127.0.0.1
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Ggf. muss man noch den &lt;a href=&#34;/2017/07/07/dnscrypt-in-debian-einrichten/#troubleshooting&#34;&gt;NetworkManager zähmen&lt;/a&gt;, damit dieser nicht die Datei
&lt;code&gt;/etc/resolv.conf&lt;/code&gt; überschreibt.&lt;/p&gt;
&lt;h2 id=&#34;android&#34;&gt;Android&lt;/h2&gt;
&lt;p&gt;Unter Android kann der DoT server folgendermaßen konfiguriert werden:&lt;/p&gt;
&lt;p&gt;Einstellungen → Netzwerk &amp;amp; Internet → Erweitert → Privates DNS&lt;/p&gt;
&lt;p&gt;Dort ist dann die domain, in meinem Fall z.B. &lt;code&gt;mdosch.de&lt;/code&gt;, einzutragen.&lt;/p&gt;
&lt;h1 id=&#34;test&#34;&gt;Test&lt;/h1&gt;
&lt;p&gt;Zum testen kann man den Befehl &lt;code&gt;dig&lt;/code&gt; aus dem Paket &lt;a href=&#34;https://packages.debian.org/stable/bind9-dnsutils&#34;&gt;bind9-dnsutils&lt;/a&gt; nutzen.
Mit z.B. &lt;code&gt;dig debian.org&lt;/code&gt; bekommt man folgende Ausgabe:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;dig debian.org      

; &amp;lt;&amp;lt;&amp;gt;&amp;gt; DiG 9.17.19-1-Debian &amp;lt;&amp;lt;&amp;gt;&amp;gt; debian.org
;; global options: +cmd
;; Got answer:
;; -&amp;gt;&amp;gt;HEADER&amp;lt;&amp;lt;- opcode: QUERY, status: NOERROR, id: 13249
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;debian.org.			IN	A

;; ANSWER SECTION:
debian.org.		280	IN	A	128.31.0.62
debian.org.		280	IN	A	130.89.148.77
debian.org.		280	IN	A	149.20.4.15

;; Query time: 240 msec
;; SERVER: 127.0.0.1#53(127.0.0.1) (UDP)
;; WHEN: Sun Oct 31 11:00:57 CET 2021
;; MSG SIZE  rcvd: 87
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Hier wurde die domain debian.org erfolgreich aufgelöst und die Zeile
&lt;code&gt;;; SERVER: 127.0.0.1#53(127.0.0.1) (UDP)&lt;/code&gt; zeigt, dass der lokale DNS-forwarder benutzt
wurde.&lt;/p&gt;
&lt;p&gt;Man kann natürlich auch Webseiten, wie z.B. &lt;a href=&#34;https://dnsleaktest.com/&#34;&gt;dnsleaktest.com&lt;/a&gt;, benutzen um zu sehen
welche DNS-server benutzt werden.&lt;/p&gt;
&lt;p&gt;Mit &lt;code&gt;dig google-analytics.com&lt;/code&gt; kann getestet werden ob das Blocken von Werbung und Tracking
auch funktioniert:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;dig google-analytics.com

; &amp;lt;&amp;lt;&amp;gt;&amp;gt; DiG 9.17.19-1-Debian &amp;lt;&amp;lt;&amp;gt;&amp;gt; @127.0.0.1 google-analytics.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; -&amp;gt;&amp;gt;HEADER&amp;lt;&amp;lt;- opcode: QUERY, status: SERVFAIL, id: 19517
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;google-analytics.com.		IN	A

;; Query time: 220 msec
;; SERVER: 127.0.0.1#53(127.0.0.1) (UDP)
;; WHEN: Sun Oct 31 11:03:38 CET 2021
;; MSG SIZE  rcvd: 49
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Hier wurde google-analytics nicht aufgelöst (&lt;code&gt;status: SERVFAIL&lt;/code&gt;),
die Blockliste wird also genutzt.&lt;/p&gt;
&lt;h1 id=&#34;updates&#34;&gt;Updates&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;2022-03-06: Abschnitt &lt;em&gt;Rekursives Blocken&lt;/em&gt; hinzugefügt.&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    
    <item>
      <title>Xmpp-dns: XMPP SRV records abfragen und Verbindung testen</title>
      <link>/2021/09/09/xmpp-dns-xmpp-srv-records-abfragen-und-verbindung-testen/</link>
      <pubDate>Thu, 09 Sep 2021 11:15:47 +0200</pubDate>
      <guid>/2021/09/09/xmpp-dns-xmpp-srv-records-abfragen-und-verbindung-testen/</guid>
      <description>&lt;p&gt;Da ich einen &lt;a href=&#34;https://joinjabber.org/&#34;&gt;XMPP&lt;/a&gt; server betreibe muss ich manchmal Probleme mit s2s
(server zu server Kommunikation) debuggen. Dazu gehört es auch, zu prüfen
ob die &lt;a href=&#34;https://wiki.xmpp.org/web/SRV_Records&#34;&gt;SRV records&lt;/a&gt; im &lt;a href=&#34;https://de.wikipedia.org/wiki/Domain_Name_System&#34;&gt;DNS&lt;/a&gt; richtig gesetzt sind und ob ein
XMPP server auf diesen ports lauscht.&lt;/p&gt;
&lt;p&gt;Da mir das Prüfen der SRV records mit &lt;a href=&#34;https://wiki.ubuntuusers.de/dig/&#34;&gt;dig&lt;/a&gt; und &lt;a href=&#34;https://openbook.rheinwerk-verlag.de/linux/linux_kap20_004.html#dodtpd3bd0748-1b4a-4dd9-bca5-a2d4e29e895d&#34;&gt;host&lt;/a&gt; und das
Prüfen der Verbindung mit &lt;a href=&#34;https://testssl.sh/&#34;&gt;testssl.sh&lt;/a&gt; zu umständlich war habe ich mir
ein kleines tool geschrieben: &lt;a href=&#34;https://salsa.debian.org/mdosch/xmpp-dns&#34;&gt;xmpp-dns&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Mit &lt;em&gt;xmpp-dns&lt;/em&gt; kann man einfach die SRV records abfragen, die IP-Adressen
auflösen, sich zu dem port verbinden, StartTLS und direktes TLS testen.
Auch die Gültigkeit der Zertifikate wird geprüft.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;/img/posts/xmpp-dns/screenshot.png&#34;&gt;&lt;img src=&#34;/img/posts/xmpp-dns/screenshot.png&#34; alt=&#34;Xmpp-dns screenshot&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Ich hoffe, dass das tool nicht nur für mich, sondern auch für andere
Serverbetreiber nützlich ist.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Wayland desktop zu Kodi streamen</title>
      <link>/2021/08/20/wayland-desktop-zu-kodi-streamen/</link>
      <pubDate>Sat, 21 Aug 2021 10:14:57 +0200</pubDate>
      <guid>/2021/08/20/wayland-desktop-zu-kodi-streamen/</guid>
      <description>&lt;p&gt;Ab und an möchte ich einfach meinen Desktop einfach auf den Fernseher
streamen, z.B. weil ich einen Film bei einem Anbieter miete, für den
es kein Kodi PlugIn gibt. Nach langem erfolglosen Probieren habe ich
endlich einen Weg gefunden, der für mich bisher zuverlässig
funktioniert.&lt;/p&gt;
&lt;p&gt;Ich nutze dafür das Programm &lt;a href=&#34;https://github.com/ammen99/wf-recorder&#34;&gt;wf-recorder&lt;/a&gt; mit folgendem Aufruf:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;wf-recorder -a --muxer=&amp;#34;mpegts&amp;#34; -f &amp;#34;udp://192.168.178.55:8080&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;code&gt;192.198.178.55&lt;/code&gt; ist dabei die IP meines Raspberry Pi mit Kodi. Auf dem
Raspberry Pi habe ich eine Datei &lt;code&gt;Receive-udp.strm&lt;/code&gt; mit diesem Inhalt:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;#EXTINF:0,UDP Stream
udp://127.0.0.1:8080
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Ich muss nun einfach im Kodi interface diese Datei öffnen und mein Desktop
wird zu Kodi gestreamt.&lt;/p&gt;
&lt;p&gt;Es kann passieren, dass kein audio übertragen wird. In diesem Fall kann man
statt der Option &lt;code&gt;-a&lt;/code&gt; direkt das pulseaudio interface angeben, z.B. so:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;wf-recorder --audio=&amp;#34;alsa_output.usb-Sennheiser_Communications_Sennheiser_USB_headset-00.analog-stereo.monitor&amp;#34; --muxer=&amp;#34;mpegts&amp;#34; -f &amp;#34;udp://192.168.178.55:8080&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Die verfügbaren Quellen findet man mit &lt;code&gt;pactl list sources|grep Name&lt;/code&gt;.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Great Invitations - Einfache Einladungen zu XMPP mit Prosody</title>
      <link>/2021/06/22/great-invitations-einfache-einladungen-zu-xmpp-mit-prosody/</link>
      <pubDate>Tue, 22 Jun 2021 16:33:01 +0200</pubDate>
      <guid>/2021/06/22/great-invitations-einfache-einladungen-zu-xmpp-mit-prosody/</guid>
      <description>&lt;p&gt;&lt;em&gt;Dieser Beitrag ist eine deutsche Übersetzung von &lt;a href=&#34;https://blog.prosody.im/great-invitations/&#34;&gt;Great Invitations&lt;/a&gt;
(&lt;a href=&#34;https://creativecommons.org/licenses/by-sa/4.0/&#34;&gt;CC BY-SA 4.0&lt;/a&gt;).&lt;/em&gt;
&lt;em&gt;Mit &lt;strong&gt;wir&lt;/strong&gt; o.ä. ist dementsprechend das &lt;a href=&#34;https://prosody.im/&#34;&gt;Prosody&lt;/a&gt;-Team gemeint, welches diesen Artikel ursprünglich verfasst hat.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Es gibt derzeit zwei Arten von Servern im XMPP-Netzwerk: solche mit öffentlicher Registrierung und solche ohne.&lt;/p&gt;
&lt;p&gt;Die Server, die eine Registrierung unterstützen, erlauben es in der Regel, Konten über das Web oder mit einem XMPP-Client (&lt;a href=&#34;https://xmpp.org/extensions/xep-0077.html&#34;&gt;XEP-0077&lt;/a&gt;) zu erstellen. Das Problem ist, dass dies den Server für die ganze Welt öffnet.&lt;/p&gt;
&lt;p&gt;Selbst wenn CAPTCHAs und andere Schutzmechanismen genutzt werden, wird selbst der sorgfältigste Administrator eines öffentlichen XMPP-Servers irgendwann feststellen, dass Spammer Konten auf seinem Server registrieren.&lt;/p&gt;
&lt;p&gt;Die Alternative ist, die Registrierung zu deaktivieren und alle Konten manuell einzurichten. Dies funktioniert für einen privaten Server, bedeutet aber zusätzlichen Aufwand und zusätzliche Verantwortung des Administrators. In vielen Fällen bedeutet es auch, dass der Admin dafür verantwortlich ist, das Passwort des Benutzers zu generieren und einen Weg zu finden, es irgendwie sicher an den Benutzer zu senden.&lt;/p&gt;
&lt;p&gt;Aber halt! Es gibt einen dritten Weg! Das Konzept von Internetdiensten, die nur für eingeladene Benutzer zugänglich sind, gibt es schon seit langer Zeit. Als Google Gmail auf den Markt brachte, war es bekanntlich nur möglich, sich per Einladung anzumelden. Heute hat Gmail über 1,5 Milliarden Nutzer! Vielleicht sind die Ambitionen als Prosody-Administrator nicht so hoch, aber es gibt einige eindeutige Vorteile für einen einladungsbasierten Registrierungsablauf:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Server-Administratoren können Einladungen erstellen und müssen niemals das Passwort eines anderen Benutzers generieren oder sehen.&lt;/li&gt;
&lt;li&gt;Einladungs-Links nutzen natürlich den Server, von dem sie stammen, so dass der Benutzer nicht manuell einen Server in seinem Client auswählen muss (eine überraschend häufige Schwierigkeit für Leute, die mit dem Konzept von föderierten Messaging-Netzwerken nicht vertraut sind).&lt;/li&gt;
&lt;li&gt;Benutzer-zu-Benutzer-Einladungen können vom Administrator aktiviert werden, was ein natürlicheres und vertrauensvolleres Wachstum ermöglicht als eine offene Registrierung.&lt;/li&gt;
&lt;li&gt;Eingeladene Benutzer können die Person, die sie eingeladen hat, direkt in ihrer Kontaktliste finden, was eine weitere Hürde beseitigt, mit der sich Erstbenutzer normalerweise auseinandersetzen müssen.&lt;/li&gt;
&lt;li&gt;Missbräuchliche Accounts (z.B. solche, die Spam versenden) können zu einem einladenden Benutzer zurückverfolgt werden, und dieser Benutzer kann daran gehindert werden, weitere Einladungen zu erstellen.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Die Erfahrung mit dem einladungsbasierten Registrierungsablauf, den wir für &lt;a href=&#34;https://snikket.org/&#34;&gt;Snikket&lt;/a&gt; entwickelt haben, hat gezeigt, dass Einladungs-Links ein wirklich einfacher Weg sind, um Leute auf einem Server anzumelden, ohne offene Registrierung aktivieren zu müssen. Daher haben wir uns entschlossen, dies auf das weitere XMPP-Ökosystem zu übertragen.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;/img/posts/great-invitations/screenshot-invite-page.png&#34;&gt;&lt;img src=&#34;/img/posts/great-invitations/screenshot-invite-page.png&#34; alt=&#34;Screenshot der Prosody-Einladungsseite&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;center&gt;Screenshot der neuen Prosody-Einladungsseite&lt;/center&gt;
&lt;p&gt;Unser Ziel war es, die Einfachheit des Snikket-Registrierungsablaufs so weit wie möglich beizubehalten und gleichzeitig zu ermöglichen, mit anderen Clients auf so vielen Plattformen wie möglich zu arbeiten. Dies ist nicht so einfach, wie man vielleicht denkt!&lt;/p&gt;
&lt;h2 id=&#34;wie-es-funktioniert&#34;&gt;Wie es funktioniert&lt;/h2&gt;
&lt;p&gt;Wir haben die Clients in drei Kategorien eingeteilt, basierend darauf, was sie unterstützen:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;ldquo;Magischer&amp;rdquo; Installationslink - im Moment wird dies nur von einigen Apps im Google Play Store (&lt;a href=&#34;https://conversations.im/&#34;&gt;Conversations&lt;/a&gt; und &lt;a href=&#34;https://yaxim.org/&#34;&gt;yaxim&lt;/a&gt;) unterstützt. Eine Anfrage wurde &lt;a href=&#34;https://gitlab.com/fdroid/fdroidclient/-/issues/1932&#34;&gt;bei F-Droid eingereicht&lt;/a&gt;, um zu sehen, ob wir diese praktische Funktion auch auf FOSS-App-Stores ausweiten können.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;xmpp:&lt;/code&gt; URIs mit &lt;a href=&#34;https://docs.modernxmpp.org/client/invites/&#34;&gt;Einladungs-Tokens&lt;/a&gt; (derzeit von &lt;a href=&#34;https://conversations.im/&#34;&gt;Conversations&lt;/a&gt;, &lt;a href=&#34;https://yaxim.org/&#34;&gt;yaxim&lt;/a&gt; und &lt;a href=&#34;https://siskin.im/&#34;&gt;Siskin&lt;/a&gt; unterstützt).&lt;/li&gt;
&lt;li&gt;Manuelle Einrichtung von Konten&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Die Funktion &amp;ldquo;magischer Link&amp;rdquo; bietet den nahtlosesten Ablauf. Der Benutzer folgt dem Link, um die App zu installieren, und das Invite-Token wird nach der Installation auf magische Weise von der App erkannt. Das heißt, der Ablauf ist kurz und reibungslos:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;/img/posts/great-invitations/invite-flow-magic.png&#34; alt=&#34;Diagramm, das den Ablauf für magische Installationslinks darstellt&#34;&gt;&lt;/p&gt;
&lt;center&gt;Der Ablauf für magische Installationslinks&lt;/center&gt;
&lt;p&gt;Wenn dieser Ablauf nicht unterstützt wird, ist die nächste bevorzugte Option, dass der Benutzer den Einladungs-URI mit der von ihm gewählten App öffnet. Die Schwierigkeit dabei ist, dass der Client zuerst installiert werden muss, da der Browser sonst nicht weiß, wie er den URI behandeln soll. Das bedeutet, dass der Benutzer zum Herunterladen und Installieren des Clients umgeleitet wird und dann zurück auf die Einladungsseite gehen muss:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;/img/posts/great-invitations/invite-flow-uri.png&#34; alt=&#34;Diagramm, das den Ablauf für Invite-URI-Links darstellt&#34;&gt;&lt;/p&gt;
&lt;center&gt;Der Ablauf der Einladungs-URIs&lt;/center&gt;
&lt;p&gt;Wenn der Client keine Einladungs-URIs unterstützt, wird der Benutzer durch die Online-Registrierung seines Kontos geführt (Prosody validiert das Invite-Token) und muss dann nur noch seine Anmeldedaten in den Client eingeben, nachdem er ihn installiert hat:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;/img/posts/great-invitations/invite-flow-manual.png&#34; alt=&#34;Diagramm, das den Ablauf für die manuelle Registrierung zeigt&#34;&gt;&lt;/p&gt;
&lt;center&gt;Der Ablauf der manuellen Registrierung&lt;/center&gt;
&lt;p&gt;Mit diesen drei Abläufen können wir einen Einladungslink in einen angemeldeten Benutzer überführen, egal für welche Plattform- und Client-Kombination sich der Benutzer entscheidet.&lt;/p&gt;
&lt;p&gt;Daten über Clients werden in &lt;a href=&#34;https://modules.prosody.im/mod_register_apps&#34;&gt;mod_register_apps&lt;/a&gt; gesammelt und können auch von Server-Administratoren konfiguriert werden (die vielleicht eine bestimmte Gruppe von Apps empfehlen wollen, die sie für die Verwendung auf ihrem Server unterstützen wollen).&lt;/p&gt;
&lt;h2 id=&#34;wie-man-es-einrichtet&#34;&gt;Wie man es einrichtet&lt;/h2&gt;
&lt;p&gt;Alle Module befinden sich in unserem Community-Repository&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt; und sollten mit Prosody 0.11 und trunk funktionieren.&lt;/p&gt;
&lt;p&gt;Einfach einen Blick auf das Beispiel-Konfigurations-Snippet in &lt;a href=&#34;https://modules.prosody.im/mod_invites#invites-setup&#34;&gt;mod_invites&lt;/a&gt; werfen, um loszulegen! Wenn man fertig ist, fügt man vielleicht noch &lt;a href=&#34;https://modules.prosody.im/mod_invites_api&#34;&gt;mod_invites_api&lt;/a&gt; hinzu, um sich eine URL mit Lesezeichen zu erstellen, die auf Knopfdruck eine Einladung für ein neues Konto generieren kann.&lt;/p&gt;
&lt;p&gt;Vieles davon ist sehr neu, daher freuen wir uns über &lt;a href=&#34;https://prosody.im/discuss&#34;&gt;Feedback&lt;/a&gt;. :)&lt;/p&gt;
&lt;p&gt;Und nicht vergessen: Wer einen einfachen Prosody-Server für eine kleine Gruppe einrichten und Funktionen wie diese und mehr fertig konfiguriert haben möchte, sollte einen Blick auf &lt;a href=&#34;https://snikket.org/&#34;&gt;Snikket&lt;/a&gt; werfen.&lt;/p&gt;
&lt;h2 id=&#34;die-zukunft&#34;&gt;Die Zukunft&lt;/h2&gt;
&lt;p&gt;Es gibt viele Möglichkeiten, auf diesem System aufzubauen. Wir hoffen, dass mehr Clients Token-URIs implementieren, und vielleicht finden ein paar schlaue Leute sogar heraus, wie man den &amp;ldquo;magischen Link&amp;rdquo;-Ablauf auf weitere Plattformen ausweiten kann. Wir denken auch, dass die Einladungs-API, die es vertrauenswürdigen Dritten erlaubt, Einladungen für einen Server zu generieren, einige sehr interessante Einsatzmöglichkeiten bietet.&lt;/p&gt;
&lt;p&gt;In der Zwischenzeit freuen wir uns auf Feedback und Beiträge und darauf, von den Erfolgsgeschichten beim Onboarding zu hören :)&lt;/p&gt;
&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34;&gt;
&lt;p&gt;&lt;a href=&#34;https://modules.prosody.im/&#34;&gt;Prosody Community Modules&lt;/a&gt;&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description>
    </item>
    
    <item>
      <title>Jabber Email Header</title>
      <link>/2021/06/13/jabber-email-header/</link>
      <pubDate>Sun, 13 Jun 2021 12:34:05 +0200</pubDate>
      <guid>/2021/06/13/jabber-email-header/</guid>
      <description>&lt;p&gt;Kürzlich stolperte ich in einer Email über den &lt;a href=&#34;https://wiki.xmpp.org/web/Jabber_Email_Header&#34;&gt;Jabber-ID Email Header&lt;/a&gt; und
da &lt;a href=&#34;https://de.wikipedia.org/wiki/Extensible_Messaging_and_Presence_Protocol&#34;&gt;XMPP&lt;/a&gt; (früher Jabber) mein Hauptmessenger ist, &lt;em&gt;muss&lt;/em&gt; ich diesen header
natürlich auch für meine ausgehenden Emails setzen.&lt;/p&gt;
&lt;p&gt;Mit &lt;a href=&#34;https://neomutt.org/&#34;&gt;NeoMutt&lt;/a&gt; geht das &lt;a href=&#34;https://wiki.xmpp.org/web/Jabber_Email_Header#Mutt&#34;&gt;ganz simpel&lt;/a&gt;:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;my_hdr Jabber-ID: martin@mdosch.de
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Nun möchte ich diesen header nicht nur senden, sondern auch die Chatadresse
(Jabber-ID, kurz JID) von anderen, die diesen header setzen, direkt in der
Leseansicht der Emails angezeigt bekommen. Das geht mit NeoMutt auch einfach
mit der &lt;a href=&#34;https://neomutt.org/guide/configuration.html#12-2-%C2%A0selecting-headers&#34;&gt;unignore&lt;/a&gt; Option in der Konfiguration:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;unignore Jabber-ID
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Damit sieht das bei mir dann so aus:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;/img/posts/neomutt_jabberid.png&#34;&gt;&lt;img src=&#34;/img/posts/neomutt_jabberid.png&#34; alt=&#34;Jabber-ID in NeoMutt&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Im &lt;a href=&#34;https://wiki.xmpp.org/web/Jabber_Email_Header&#34;&gt;xmpp.org Wiki&lt;/a&gt; ist das Setzen des headers auch für andere Emailprogramme
beschrieben. Wenn jemand weiß, wie man den header in einem Programm setzen kann,
das noch nicht dort gelistet ist, bitte kommentieren. Ich pflege das dann im Wiki
ein.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Emojipicker mit ibus-emoji</title>
      <link>/2021/06/03/emojipicker-mit-ibus-emoji/</link>
      <pubDate>Thu, 03 Jun 2021 12:35:25 +0200</pubDate>
      <guid>/2021/06/03/emojipicker-mit-ibus-emoji/</guid>
      <description>&lt;p&gt;Ich nutze viele TUI&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;-Programme, wie z.B. &lt;a href=&#34;https://profanity-im.github.io/&#34;&gt;profanity&lt;/a&gt;, &lt;a href=&#34;https://neomutt.org/&#34;&gt;neomutt&lt;/a&gt;, &lt;a href=&#34;https://www.newsboat.org/&#34;&gt;newsboat&lt;/a&gt;,
wo es nicht so ohne weiteres möglich ist &lt;a href=&#34;https://de.wikipedia.org/wiki/Emoji&#34;&gt;emoji&lt;/a&gt; einzugeben. Jetzt wurde mir &lt;a href=&#34;https://github.com/moebiuscurve/ibus-table-others&#34;&gt;&lt;em&gt;ibus emoji&lt;/em&gt;&lt;/a&gt;
empfohlen und ich bin begeistert:&lt;/p&gt;
&lt;p&gt;Ich kann über ein Tastenkürzel (konfigurierbar via &lt;code&gt;ibus-setup&lt;/code&gt;) ibus aufrufen und dann entweder
über Schlagworte das emoji suchen oder &lt;code&gt;Space&lt;/code&gt; drücken und bekomme einen grafischen emoji picker.&lt;/p&gt;
&lt;p&gt;Die Installation ist bei Debian denkbar einfach:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# apt install ibus-table-emoji
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Ich habe auch ein kleine &lt;a href=&#34;/vid/ibus-emoji.mp4&#34;&gt;Beispielvideo&lt;/a&gt; angefertigt um ibus-emoji zu zeigen.&lt;/p&gt;
&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34;&gt;
&lt;p&gt;Text User Interface&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description>
    </item>
    
    <item>
      <title>Anoxinon e.V. sammelt Spenden für ein FOSS-Projekt eurer Wahl</title>
      <link>/2020/10/31/anoxinon-e.v.-sammelt-spenden-fuer-ein-foss-projekt-eurer-wahl/</link>
      <pubDate>Sat, 31 Oct 2020 20:01:52 +0100</pubDate>
      <guid>/2020/10/31/anoxinon-e.v.-sammelt-spenden-fuer-ein-foss-projekt-eurer-wahl/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://anoxinon.de/&#34;&gt;Anoxinon e.V.&lt;/a&gt; fragt in einer &lt;a href=&#34;https://anoxinon.de/blog/foss-foerderprojekt/&#34;&gt;Umfrage&lt;/a&gt; bis zum 01.12.2020 nach 3 FOSS-Projekten,
die unterstützt werden sollen. Danach wird es einen Spendenaufruf geben und das Projekt mit
den meisten Stimmen erhält die Spenden + 500€ von Anoxinon.&lt;/p&gt;
&lt;p&gt;Ich finde das eine tolle Idee und habe für folgende Projekte gestimmt:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://profanity-im.github.io/&#34;&gt;Profanity&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://snikket.org/&#34;&gt;Snikket&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://neomutt.org/&#34;&gt;Neomutt&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Welchen Projekten habt ihr eure Stimme gegeben?&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Kurztipp: XMPP server monitoring mit observe.jabber.network</title>
      <link>/2020/09/03/kurztipp-xmpp-server-monitoring-mit-observe.jabber.network/</link>
      <pubDate>Thu, 03 Sep 2020 12:02:47 +0200</pubDate>
      <guid>/2020/09/03/kurztipp-xmpp-server-monitoring-mit-observe.jabber.network/</guid>
      <description>&lt;p&gt;Wer einen eigenen XMPP server betreibt sollte sich &lt;a href=&#34;https://observe.jabber.network/&#34;&gt;observe.jabber.network&lt;/a&gt;
anschauen. Über den Dienst kann man seinen XMPP server überwachen lassen
und bekommt eine Benachrichtigung wenn es Probleme mit dem XMPP server
gibt oder wenn das Zertifikat bald abläuft.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>XMPP Newsletter 10/2019</title>
      <link>/2019/10/07/xmpp-newsletter-102019/</link>
      <pubDate>Mon, 07 Oct 2019 20:16:16 +0200</pubDate>
      <guid>/2019/10/07/xmpp-newsletter-102019/</guid>
      <description>&lt;p&gt;Der XMPP Newsletter ist in der &lt;a href=&#34;https://xmpp.org/2019/10/newsletter-01-october/&#34;&gt;Oktober 2019&lt;/a&gt; Ausgabe erschienen. Dieses Mal
gibt es auch zum ersten Mal eine &lt;a href=&#34;https://www.jabber.de/xmpp-newsletter-01-oktober-2019-fosdem-2020-modernisierung-von-xmpp-peer-networks/&#34;&gt;deutsche Übersetzung&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Themen sind u.a.:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;FOSDEM 2020&lt;/li&gt;
&lt;li&gt;Modernisierung von XMPP&lt;/li&gt;
&lt;li&gt;Peer-Networks&lt;/li&gt;
&lt;li&gt;Hinweise auf Updates
&lt;ul&gt;
&lt;li&gt;Clients&lt;/li&gt;
&lt;li&gt;Server&lt;/li&gt;
&lt;li&gt;Dienste&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    
    <item>
      <title>Debian: GRUB2 bei Vollverschlüsselung reparieren</title>
      <link>/2019/07/27/debian-grub2-bei-vollverschluesselung-reparieren/</link>
      <pubDate>Sat, 27 Jul 2019 09:41:15 +0200</pubDate>
      <guid>/2019/07/27/debian-grub2-bei-vollverschluesselung-reparieren/</guid>
      <description>&lt;p&gt;Kürzlich hatte ich den seltenen Fall, dass mein Laptop nicht mehr booten wollte. Ich hatte die Vermutung, dass
bei der Installation des Kernel-Updates etwas bei der Erstellung des &lt;em&gt;initramfs&lt;/em&gt; oder des Updates von &lt;em&gt;GRUB2&lt;/em&gt;
schief gegangen ist. Grandioserweise hatte ich einmal die Idee die Wartezeit bei &lt;em&gt;GRUB2&lt;/em&gt; auf &lt;code&gt;0&lt;/code&gt; einzustellen,
so dass es mir leider auch nicht möglich war einen anderen Kernel zu booten.&lt;/p&gt;
&lt;p&gt;Ein USB-Stick mit &lt;a href=&#34;https://grml.org/&#34;&gt;&lt;em&gt;grml&lt;/em&gt;&lt;/a&gt; wollte komischerweise auch nicht booten, obwohl USB-Boot im BIOS erlaubt war
und das System auch von USB-Stick installiert wurde. Zum Glück lag noch ein Wechselgehäuse herum und ich
konnte die Festplatte per USB an mein Netbook anschließen.&lt;/p&gt;
&lt;p&gt;Damit ich mir das Vorgehen zur Rettung nicht wieder mühselig bei &lt;a href=&#34;https://askubuntu.com/questions/63594/mount-encrypted-volumes-from-command-line&#34;&gt;askubuntu&lt;/a&gt; und &lt;a href=&#34;https://help.ubuntu.com/community/LiveCdRecovery&#34;&gt;help.ubuntu.com&lt;/a&gt;
zusammensuchen muss halte ich die Befehle, die mir zum Erfolg verhalfen, in meinem Schmierzettel fest.
Das Setup der Vollverschlüsselung ist das Standardsetup mit &lt;a href=&#34;https://gitlab.com/cryptsetup/cryptsetup&#34;&gt;LUKS&lt;/a&gt;/&lt;a href=&#34;https://wiki.gentoo.org/wiki/DM-Crypt_LUKS&#34;&gt;dm-crypt&lt;/a&gt;, das der Debian-Installer
anlegt wenn man Verschlüsselung auswählt.&lt;/p&gt;
&lt;p&gt;&amp;#x26a0;&amp;#xfe0f; &lt;strong&gt;Falls ihr auch mal in diese Situation kommt: Dass das Vorgehen bei mir geholfen hat heißt nicht, dass es allgemeingültig anwendbar ist!
Die Befehle sind nicht ungefährlich also schaut vorher in die manpages der Befehle und denkt nach
bevor ihr sie auf euren Datenträger los lasst!&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt; Und: Backup! Backup! Backup!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Erst mal musste ich rausfinden welche device id meine Laptop-SSD in meinem Netbook bekommen hatte,
dazu genügt der Aufruf von &lt;code&gt;blkid&lt;/code&gt; als &lt;em&gt;root&lt;/em&gt; (Alle weiteren Befehle werden als &lt;em&gt;root&lt;/em&gt; ausgeführt). In der Ausgabe sah ich dann unter anderem die Partitionen
meines Laptop-Systems:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-blkid&#34; data-lang=&#34;blkid&#34;&gt;/dev/sdb1: UUID=&amp;#34;b9f4c6ab-48a8-4582-b6c7-8ff11e9f42f9&amp;#34; TYPE=&amp;#34;ext2&amp;#34; PARTUUID=&amp;#34;e091aba6-01&amp;#34;
/dev/sdb5: UUID=&amp;#34;847dac14-3bfb-4f3b-9176-339c34c4ee14&amp;#34; TYPE=&amp;#34;crypto_LUKS&amp;#34; PARTUUID=&amp;#34;e091aba6-05&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;code&gt;/dev/sdb1&lt;/code&gt; ist meine unverschlüsselte &lt;code&gt;/boot&lt;/code&gt;-Partition und &lt;code&gt;/dev/sdb5&lt;/code&gt; mein verschlüsseltes &lt;code&gt;/&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Die Partition wird entschlüsselt indem man folgenden Befehl und anschließend das Entschlüsselungspasswort eingibt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cryptsetup luksOpen /dev/sdb5 laptop
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Nach einigen Anleitungen sollten nun die entschlüsselten Partitionen bereits unter &lt;code&gt;/dev/mapper/&lt;/code&gt;
aufzufinden zu sein, in meinem Fall musste ich aber erst noch nach LVM block devices scannen und
diese aktivieren:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;vgscan
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;vgchange -ay
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Nun kann ich das &lt;code&gt;/&lt;/code&gt; meines Laptops nach &lt;code&gt;/mnt&lt;/code&gt; meines Netbooks mounten:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;mount /dev/mapper/laptop-vg-root /mnt
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Um &lt;em&gt;GRUB&lt;/em&gt; neu auf /boot schreiben zu können musste ich natürlich &lt;code&gt;/boot&lt;/code&gt; auch noch mounten:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mount /dev/sdb1 /mnt/boot
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Anschließend konnte ich auf mein Laptop-System chrooten:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mount --bind /dev /mnt/dev
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mount --bind /proc /mnt/proc
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mount --bind /sys /mnt/sys
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;chroot /mnt
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Nun konnte ich in &lt;code&gt;/etc/default/grub&lt;/code&gt; die unsinnige Wartezeit von 0 Sekunden auf 5 Sekunden hochsetzen und
GRUB neu schreiben lassen, anschließend habe ich zur Sicherheit auch noch mal das &lt;a href=&#34;https://wiki.debian.org/initramfs&#34;&gt;&lt;em&gt;initramfs&lt;/em&gt;&lt;/a&gt; neu
erstellen lassen:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;update-grub
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;update-initramfs -uk all
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Nachdem ich die SSD wieder in meinen Laptop gesteckt habe booted auch dieser wieder problemlos. &amp;#x1f604;&lt;/p&gt;
&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34;&gt;
&lt;p&gt;Die manpages der benutzten Programme:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://manpages.debian.org/buster/cryptsetup-bin/cryptsetup.8.en.html&#34;&gt;cryptsetup&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://manpages.debian.org/buster/lvm2/vgscan.8.en.html&#34;&gt;vgscan&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://manpages.debian.org/buster/lvm2/vgchange.8.en.html&#34;&gt;vgchange&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://manpages.debian.org/buster/initramfs-tools/update-initramfs.8.en.html&#34;&gt;update-initramfs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://manpages.debian.org/buster/grub-legacy/update-grub.8.en.html&#34;&gt;update-grub&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description>
    </item>
    
    <item>
      <title>Kurztipp: Passwort eines XMPP-Kontos aus Conversations extrahieren (root)</title>
      <link>/2019/06/20/kurztipp-passwort-eines-xmpp-kontos-aus-conversations-extrahieren-(root)/</link>
      <pubDate>Thu, 20 Jun 2019 14:50:38 +0200</pubDate>
      <guid>/2019/06/20/kurztipp-passwort-eines-xmpp-kontos-aus-conversations-extrahieren-(root)/</guid>
      <description>&lt;p&gt;Manchmal nutzen Leute keinen Passwortmanager und vergessen das Passwort ihres &lt;a href=&#34;https://de.wikipedia.org/wiki/Extensible_Messaging_and_Presence_Protocol&#34;&gt;&lt;em&gt;XMPP&lt;/em&gt;&lt;/a&gt;-Kontos.
&lt;a href=&#34;https://conversations.im/&#34;&gt;&lt;em&gt;Conversations&lt;/em&gt;&lt;/a&gt; hat vor einigen Versionen die Möglichkeit entfernt sich das Passwort anzeigen
zu lassen, aber sofern das Telefon gerooted ist kann man an die Datenbank kommen und das
Passwort, z.B. mit &lt;a href=&#34;https://sqlitebrowser.org/&#34;&gt;&lt;em&gt;sqlitebrowser&lt;/em&gt;&lt;/a&gt;, aus der sqlite-Datenbank auslesen:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ adb shell &lt;span class=&#34;s2&#34;&gt;&amp;#34;su -c &amp;#39;cat /data/data/eu.siacs.conversations/databases/history&amp;#39;&amp;#34;&lt;/span&gt; &amp;gt; &lt;span class=&#34;nb&#34;&gt;history&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; sqlitebrowser ./history
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;In &lt;em&gt;sqlitebrowser&lt;/em&gt; kann man die Passwörter aller Konten dann im Reiter &lt;code&gt;Daten durchsuchen&lt;/code&gt;
einsehen.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>TUI Programme</title>
      <link>/2019/06/06/tui-programme/</link>
      <pubDate>Thu, 06 Jun 2019 12:06:24 +0200</pubDate>
      <guid>/2019/06/06/tui-programme/</guid>
      <description>&lt;p&gt;Seit einiger Zeit nutze ich für einige alltäglichen Aufgaben hauptsächlich
&lt;a href=&#34;https://de.wikipedia.org/wiki/Zeichenorientierte_Benutzerschnittstelle&#34;&gt;TUI&lt;/a&gt; (&lt;em&gt;Text User Interface&lt;/em&gt;) oder &lt;a href=&#34;https://de.wikipedia.org/wiki/Kommandozeile&#34;&gt;CLI&lt;/a&gt; (&lt;em&gt;Command Line Interface&lt;/em&gt;)
Programme. Das ist häufig bei Programmen praktisch, bei denen man viel mit Text
arbeitet (z.B. Chat oder Email), da man dann nicht ständig zwischen Tastatur
und Maus/Touchpad wechseln muss.&lt;/p&gt;
&lt;p&gt;Hier mal eine Auswahl meiner Favoriten:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Chat (XMPP): &lt;a href=&#34;https://profanity-im.github.io/&#34;&gt;Profanity&lt;/a&gt; &lt;strong&gt;[TUI]&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Email: &lt;del&gt;&lt;a href=&#34;https://neomutt.org/&#34;&gt;Neomutt&lt;/a&gt;&lt;/del&gt; &lt;a href=&#34;https://aerc-mail.org/&#34;&gt;aerc&lt;/a&gt; &lt;strong&gt;[TUI]&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Feeds: &lt;a href=&#34;https://www.newsboat.org&#34;&gt;Newsboat&lt;/a&gt; &lt;strong&gt;[TUI]&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Kontakte: &lt;a href=&#34;https://github.com/scheibler/khard&#34;&gt;khard&lt;/a&gt; &lt;strong&gt;[TUI/CLI&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;]&lt;/strong&gt; (CalDAV-Synchronisation per &lt;a href=&#34;https://vdirsyncer.pimutils.org/en/stable/&#34;&gt;Vdirsyncer&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Kalender: &lt;a href=&#34;https://lostpackets.de/khal/&#34;&gt;khal&lt;/a&gt; &lt;strong&gt;[CLI]&lt;/strong&gt; (CardDAV-Synchronisation per &lt;a href=&#34;https://vdirsyncer.pimutils.org/en/stable/&#34;&gt;Vdirsyncer&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Dateimanager: &lt;del&gt;&lt;a href=&#34;https://ranger.github.io&#34;&gt;ranger&lt;/a&gt;&lt;/del&gt; &lt;a href=&#34;https://github.com/gokcehan/lf&#34;&gt;lf&lt;/a&gt; &lt;strong&gt;[TUI]&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Prozessmonitor: &lt;a href=&#34;https://hisham.hm/htop/&#34;&gt;htop&lt;/a&gt; &lt;strong&gt;[TUI]&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Speicherbelegung: &lt;a href=&#34;http://dev.yorhel.nl/ncdu&#34;&gt;ncdu&lt;/a&gt; &lt;strong&gt;[TUI]&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Editor: &lt;del&gt;&lt;a href=&#34;https://www.nano-editor.org/&#34;&gt;nano&lt;/a&gt;&lt;/del&gt; &lt;a href=&#34;https://neovim.io/&#34;&gt;neovim&lt;/a&gt; &lt;strong&gt;[TUI]&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Musikspieler: &lt;a href=&#34;https://musicpd.org/clients/mpc/&#34;&gt;mpc&lt;/a&gt;/&lt;a href=&#34;https://rybczak.net/ncmpcpp/&#34;&gt;ncmpcpp&lt;/a&gt;/&lt;a href=&#34;https://cmus.github.io/&#34;&gt;cmus&lt;/a&gt; &lt;strong&gt;[TUI/CLI&lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt;]&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Terminal Multiplexer: &lt;a href=&#34;https://github.com/tmux/tmux/wiki&#34;&gt;tmux&lt;/a&gt; &lt;strong&gt;[TUI]&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Emoji-Picker: &lt;a href=&#34;https://github.com/Fingel/tuimoji&#34;&gt;Tuimoji&lt;/a&gt; &lt;strong&gt;[TUI]&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Mastodon: &lt;a href=&#34;https://github.com/ihabunek/toot&#34;&gt;toot&lt;/a&gt; &lt;strong&gt;[TUI/CLI]&lt;sup id=&#34;fnref:3&#34;&gt;&lt;a href=&#34;#fn:3&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;3&lt;/a&gt;&lt;/sup&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Wörterbuch: &lt;a href=&#34;https://sourceforge.net/projects/dict/&#34;&gt;dict&lt;/a&gt; &lt;strong&gt;[CLI]&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Taschenrechner: &lt;a href=&#34;https://qalculate.github.io/&#34;&gt;qalc&lt;/a&gt; &lt;strong&gt;[CLI]&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Nutzt ihr auch gerne TUI/CLI Programme? Falls ja, welche?&lt;/p&gt;
&lt;h3 id=&#34;update-2019-06-10&#34;&gt;Update 2019-06-10&lt;/h3&gt;
&lt;p&gt;Angeregt durch die Kommentare habe ich &lt;em&gt;htop&lt;/em&gt;, &lt;em&gt;ncdu&lt;/em&gt;, &lt;em&gt;nano&lt;/em&gt;,
&lt;em&gt;mpc&lt;/em&gt;, &lt;em&gt;ncmpcpp&lt;/em&gt;  und &lt;em&gt;tmux&lt;/em&gt; hinzugefügt, die ich zuvor vergessen hatte.&lt;/p&gt;
&lt;h3 id=&#34;update-2019-08-14&#34;&gt;Update 2019-08-14&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;Tuimoji&lt;/em&gt; hinzugefügt.&lt;/p&gt;
&lt;h3 id=&#34;update-2023-03-29&#34;&gt;Update 2023-03-29&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;ranger&lt;/em&gt; durch &lt;em&gt;lf&lt;/em&gt; ersetzt.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;nano&lt;/em&gt; durch &lt;em&gt;neovim&lt;/em&gt; ersetzt.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;cmus&lt;/em&gt; hinzugefügt.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;toot&lt;/em&gt; hinzugefügt.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;dict&lt;/em&gt; hinzugefügt.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;update-2025-08-17&#34;&gt;Update 2025-08-17&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;neomutt&lt;/em&gt; durch &lt;em&gt;aerc&lt;/em&gt; ersetzt.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;qalc&lt;/em&gt; hinzugefügt.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34;&gt;
&lt;p&gt;CLI per &lt;code&gt;khal&lt;/code&gt;, TUI per &lt;code&gt;ikhal&lt;/code&gt; Befehl.&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:2&#34;&gt;
&lt;p&gt;&lt;em&gt;mpc&lt;/em&gt; ist ein CLI Programm, &lt;em&gt;ncmpcpp&lt;/em&gt; ist ein TUI Programm. &lt;br&gt;
&lt;em&gt;cmus&lt;/em&gt; ist ein TUI Programm, kann aper per &lt;em&gt;cmus-remote&lt;/em&gt; per CLI bedient werden.&amp;#160;&lt;a href=&#34;#fnref:2&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:3&#34;&gt;
&lt;p&gt;&lt;em&gt;toot&lt;/em&gt; ist ein CLI Programm, bietet aber über &lt;code&gt;toot tui&lt;/code&gt; auch eine TUI.&amp;#160;&lt;a href=&#34;#fnref:3&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description>
    </item>
    
    <item>
      <title>Kurztipp: Zugriff auf WiFi captive portal bei Nutzung eines eigenen DNS</title>
      <link>/2019/04/26/kurztipp-zugriff-auf-wifi-captive-portal-bei-nutzung-eines-eigenen-dns/</link>
      <pubDate>Fri, 26 Apr 2019 08:49:06 +0200</pubDate>
      <guid>/2019/04/26/kurztipp-zugriff-auf-wifi-captive-portal-bei-nutzung-eines-eigenen-dns/</guid>
      <description>&lt;p&gt;Ich hatte häufig Probleme mich bei &lt;a href=&#34;https://de.wikipedia.org/wiki/Captive_Portal&#34;&gt;&lt;em&gt;captive portals&lt;/em&gt;&lt;/a&gt; von öffentlichen WLANs, z.B. in
Flughäfen, einzuloggen da ich per &lt;code&gt;/etc/resolv.conf&lt;/code&gt; einen eigenen DNS-Server, in meinem Fall
&lt;a href=&#34;https://search.mdosch.de/&#34;&gt;dnscrypt&lt;/a&gt;, einsetze. Durch das Nutzen eines fest vorgegebenen DNS-Servers, statt der
automatischen Nutzung des DNS des WLANs, kommt man nicht auf die Vorschaltseite auf der man
sich für das WiFi freischalten kann. &lt;br&gt;
Mit folgendem Vorgehen konnte ich aber bei meinen
letzten Versuchen in öffentlichen WiFis immer die Vorschaltseite öffnen:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# route -n&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Kernel-IP-Routentabelle
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Ziel            Router          Genmask         Flags Metric Ref    Use Iface
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;0.0.0.0         192.168.178.1   0.0.0.0         UG    &lt;span class=&#34;m&#34;&gt;600&lt;/span&gt;    &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt;        &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt; wlp2s0
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;169.254.0.0     0.0.0.0         255.255.0.0     U     &lt;span class=&#34;m&#34;&gt;1000&lt;/span&gt;   &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt;        &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt; wlp2s0
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;192.168.178.0   0.0.0.0         255.255.255.0   U     &lt;span class=&#34;m&#34;&gt;600&lt;/span&gt;    &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt;        &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt; wlp2s0
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;In der Zeile startend mit &lt;code&gt;0.0.0.0&lt;/code&gt; findet man in der zweiten Spalte die IP des Netzwerkrouters,
gibt man diese mit vorangestelltem &lt;code&gt;http://&lt;/code&gt; in den Browser ein sollte man das &lt;em&gt;captive portal&lt;/em&gt;
zu sehen bekommen. Bei mir hat das bisher zuverlässig funktioniert. Ich würde mich über Feedback
freuen ob das bei anderen auch funktioniert, da ich nicht so häufig in fremden Netzwerken
unterwegs bin.&lt;/p&gt;
&lt;h3 id=&#34;update-2019-05-19&#34;&gt;Update 2019-05-19&lt;/h3&gt;
&lt;p&gt;Mir ist aufgefallen, dass es besser funktioniert wenn man die IP als DNS-Server in die
&lt;code&gt;/etc/resolv.conf&lt;/code&gt; einträgt (zumindest temporär) und danach im Browser z.B. google.de aufruft.
Dann wird man automatisch zum &lt;em&gt;captive portal&lt;/em&gt; weitergeleitet.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Statement der PGP-Entwickler zu EFFail</title>
      <link>/2018/05/24/statement-der-pgp-entwickler-zu-effail/</link>
      <pubDate>Thu, 24 May 2018 17:41:11 +0200</pubDate>
      <guid>/2018/05/24/statement-der-pgp-entwickler-zu-effail/</guid>
      <description>&lt;p&gt;Am Morgen des 13. Mai fuhr ich mit der U-Bahn zur Arbeit, habe meine Feeds durchgelesen und sah dabei
einen &lt;a href=&#34;https://www.eff.org/deeplinks/2018/05/attention-pgp-users-new-vulnerabilities-require-you-take-action-now&#34;&gt;Teaser der EFF&lt;/a&gt;, der klang als wäre &lt;a href=&#34;https://en.wikipedia.org/wiki/Pretty_Good_Privacy&#34;&gt;PGP&lt;/a&gt; gebrochen. Nach ein paar Stunden heller Aufregung
in sämtlichen Blogs und MUCs ging die Seite &lt;a href=&#34;https://efail.de&#34;&gt;Efail&lt;/a&gt; online, deren Launch erst für den nächsten Tag
vorgesehen war.&lt;/p&gt;
&lt;p&gt;Im Endeffekt war die Enthüllung immer noch ein schwerwiegender Sicherheitsfehler, der ermöglichte, dass
verschlüsselte Nachrichten unter Umständen geleakt werden können, aber im Vergleich zur Panik, die die &lt;em&gt;EFF&lt;/em&gt;
geschürt hatte nur halb so wild.&lt;/p&gt;
&lt;p&gt;Da die CVEs schon 2017 angelegt wurden, waren die Sicherheitslücken auch schon länger bekannt
(klar, ein schönes Logo braucht Zeit auch wenn man zu zweit daran arbeitet /sarcasm), warum die &lt;em&gt;EFF&lt;/em&gt;
dann nicht den einen Tag bis zum geplanten Veröffentlichungstermin warten konnte, sondern unnötige
Panikmache mit zweifelhaften Empfehlungen (Deinstalliert PGP und nutzt Signal (sic!)) betrieb ist für mich
nicht nachzuvollziehen. Dementsprechend teile ich die Aussage eines heise-Kommentars:
&lt;a href=&#34;https://www.heise.de/newsticker/meldung/Kommentar-Efail-ist-ein-EFFail-4050153.html&#34;&gt;Efail ist ein EFFail&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Anstatt das Fehlverhalten einiger Clients/Implementierungen zu diskutieren wurde viel Spott und Häme
über Efail (EFFail!) laut, da die Ankündigung der &lt;a href=&#34;https://www.eff.org/&#34;&gt;EFF&lt;/a&gt; schlimmeres vermuten ließ.&lt;/p&gt;
&lt;p&gt;Heute haben sich die PGP Entwickler &lt;a href=&#34;https://protonmail.com/blog/pgp-efail-statement/&#34;&gt;zum EFFail geäußert&lt;/a&gt; und rücken meiner Meinung nach die
Dinge wieder zurecht. Statt seltsamer Empfehlungen der EFF (Kein PGP, nehmt Signal) zu folgen sollte
man darauf achten Email-Programme ordentlich zu konfigurieren (HTML-Emails wtf?) und aktuelle,
sichere Implementierungen zu nutzen. Die Empfehlung der &lt;em&gt;EFF&lt;/em&gt; wird folgendermaßen kommentiert:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Some locks can be broken; therefore we must remove all doors&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Genau, wenn unter bestimmten Umständen PGP gebrochen werden kann verzichten wir lieber auf
verschlüsselte E-Mails und nutzen ein Silo namens Signal, das zwingend eine Telefonnummer benötigt.
&amp;#x1f648;&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Remote-Backup vom RaspberryPi</title>
      <link>/2018/05/10/remote-backup-vom-raspberrypi/</link>
      <pubDate>Thu, 10 May 2018 11:09:16 +0200</pubDate>
      <guid>/2018/05/10/remote-backup-vom-raspberrypi/</guid>
      <description>&lt;p&gt;Ich habe seit Anfang des Jahres (Spätzünder &amp;#x1f601;) einen &lt;a href=&#34;https://www.raspberrypi.org/&#34;&gt;RaspberryPi 3&lt;/a&gt;
dessen Backup ich nach der Einrichtung angefertigt habe indem ich die SD-Karte
in den Rechner gesteckt und geklont habe.
Natürlich möchte ich nicht immer den &lt;em&gt;RaspberryPi&lt;/em&gt; herunterfahren um ein Backup
mit &lt;a href=&#34;https://www.gnu.org/software/coreutils/manual/html_node/dd-invocation.html&#34;&gt;dd&lt;/a&gt;&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt; anzufertigen weshalb ich heute mal nach einer Lösung gesucht habe
um das Remote zu erledigen. Wie sich herausstellte ist das ganze sehr einfach.&lt;/p&gt;
&lt;p&gt;Auf dem &lt;em&gt;RPi&lt;/em&gt; geben wir folgenden Befehl für unseren Benutzer zur Ausführung
mit root-Rechten per &lt;a href=&#34;https://www.sudo.ws/&#34;&gt;sudo&lt;/a&gt; frei:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;user &lt;span class=&#34;nv&#34;&gt;ALL&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=(&lt;/span&gt;ALL&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt; NOPASSWD: /bin/tar -cpO --exclude&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;/proc --exclude&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;/tmp --exclude&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;/mnt --exclude&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;/dev --exclude&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;/sys /
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Statt &lt;code&gt;user&lt;/code&gt; muss natürlich der Benutzer eingetragen werden mit dem man sich
per &lt;a href=&#34;https://www.openssh.com/&#34;&gt;SSH&lt;/a&gt;&lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt; auf dem &lt;em&gt;Raspberry&lt;/em&gt; anmeldet und &lt;code&gt;/dev/mmcblk0p2&lt;/code&gt; muss gegebenfalls
durch eure Bezeichnung der SD-Karte angepasst werden.&lt;/p&gt;
&lt;p&gt;Danach kann das Backup mit folgendem Befehl ausgeführt werden:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ssh user@rpi &lt;span class=&#34;s2&#34;&gt;&amp;#34;sudo /bin/tar -cpO --exclude=/proc --exclude=/tmp --exclude=/mnt --exclude=/dev --exclude=/sys / | xz&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; &amp;gt; ~/pi/&lt;span class=&#34;sb&#34;&gt;`&lt;/span&gt;date --rfc-3339&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;date&lt;span class=&#34;sb&#34;&gt;`&lt;/span&gt;-pi3.tar.xz
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;user&lt;/code&gt; ist wieder durch euren Benutzernamen auf dem &lt;em&gt;Pi&lt;/em&gt; und &lt;code&gt;rpi&lt;/code&gt; durch den hostnamen
oder die IP&lt;sup id=&#34;fnref:3&#34;&gt;&lt;a href=&#34;#fn:3&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;3&lt;/a&gt;&lt;/sup&gt;-Adresse eures &lt;em&gt;RPis&lt;/em&gt; zu ersetzen. Das ganze dauert dann eine ganze
Weile, aber man muss ja nicht davor sitzen und zuschauen. &amp;#x1f604;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;#x26a0;&amp;#xfe0f; &lt;strong&gt;Warnung&lt;/strong&gt; &amp;#x26a0;&amp;#xfe0f; &lt;br&gt;
Das ganze ist erst mal mit etwas Vorsicht zu genießen, da ich jetzt nicht unnötig das
Backup eingespielt habe um die SD-Karte nicht zu verschleißen aber die Dateigröße des
erstellten Archivs wirkt auf mich plausibel und auch ein erster Blick ins Archiv sieht
gut aus.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;ls -lh ~/pi/      
insgesamt 2,2G
-rw-r----- 1 martin martin 1,6G Feb 20 19:29 2018-02-20-pi3.img.xz
-rw-r----- 1 martin martin 602M Mai 10 15:56 2018-05-10-pi3.tar.xz
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Somit habe ich nun das Image, dass ich am Anfang mit &lt;em&gt;dd&lt;/em&gt; erstellt habe mit dem
ich ein funktionstüchtiges System auf eine neue SD-Karte im Falle eines Austauschs
schreiben kann und ein aktuelles Backup der Daten.&lt;/p&gt;
&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34;&gt;
&lt;blockquote&gt;Die Herkunft des Programmnamens dd ist nicht gänzlich geklärt und es finden sich zahlreiche Möglichkeiten in diversen Quellen.&lt;/blockquote&gt; [Wikipedia][50]
&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/li&gt;
&lt;li id=&#34;fn:2&#34;&gt;
&lt;p&gt;Secure Shell&amp;#160;&lt;a href=&#34;#fnref:2&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:3&#34;&gt;
&lt;p&gt;Internet Protocol&amp;#160;&lt;a href=&#34;#fnref:3&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description>
    </item>
    
    <item>
      <title>Seite für XMPP-Einsteiger sucht Unterstützer</title>
      <link>/2018/05/04/seite-fuer-xmpp-einsteiger-sucht-unterstuetzer/</link>
      <pubDate>Fri, 04 May 2018 19:19:33 +0200</pubDate>
      <guid>/2018/05/04/seite-fuer-xmpp-einsteiger-sucht-unterstuetzer/</guid>
      <description>&lt;p&gt;Ich habe &lt;a href=&#34;https://xmpp.mdosch.de/&#34;&gt;hier&lt;/a&gt; vor einiger Zeit begonnen eine kleine Seite
zu bauen, die es auch technisch weniger versierten einfacher
machen soll in &lt;em&gt;XMPP&lt;/em&gt; einzusteigen. Ziel war es &lt;em&gt;JIDs&lt;/em&gt; in
&lt;a href=&#34;https://xmpp.mdosch.de/invite/#info@mdosch.de&#34;&gt;dieser Form&lt;/a&gt; an Kontakte zu geben und diese, falls sie
&lt;em&gt;XMPP&lt;/em&gt; noch nicht kennen, an die Hand zu nehmen und es jedem
zu ermöglichen selbst einen Account zu erstellen, einen Client
einzurichten und zu benutzen.&lt;/p&gt;
&lt;p&gt;Leider hatte ich wenig Zeit das voranzutreiben und so ist die
Seite leider noch in großen Teilen unvollständig und das Vorhandene
teilweise vielleicht schon wieder veraltet.&lt;/p&gt;
&lt;p&gt;Aus diesem Grund möchte ich den aktuellen Arbeitsstand heute mit
diesem Blogpost bekannt machen und hoffe, dass der ein oder andere
das Projekt sinnvoll findet und etwas dazu beitragen möchte.&lt;/p&gt;
&lt;p&gt;Sollte die Seite einmal fertig werden könnte man auch über eine
eigene Domain nachdenken. Die Seite wird mit &lt;a href=&#34;https://gohugo.io/&#34;&gt;Hugo&lt;/a&gt; generiert,
liegt bei &lt;a href=&#34;https://salsa.debian.org/mdosch-guest/xmpp.mdosch.de&#34;&gt;salsa.debian.org&lt;/a&gt; und ist &lt;a href=&#34;http://creativecommons.org/licenses/by-sa/4.0/&#34;&gt;CC BY-SA&lt;/a&gt; lizenziert, es
kann also auch jeder einen Fork erstellen.&lt;/p&gt;
&lt;p&gt;Die bisherigen Inhalte sollten auch ausreichend illustrieren
wie die Seite einmal aufgebaut sein sollte: &lt;br&gt;
Einfache Erklärungen, die für jeden verständlich sind, d.h.
möglichst auf Fachbegriffe verzichten wo dies nicht
unbedingt nötig ist und die Anleitungen sollten ausreichend
mit Screenshots ausgestattet sein. Es sollte auch lieber
eine Option gewählt und erläutert werden als neue User mit
zu viel Wahlmöglichkeiten zu erschlagen, als konkretes
Beispiel würde ich einen Client pro Betriebssystem erklären,
statt erst den potentiellen &lt;em&gt;XMPP&lt;/em&gt;-Nutzer mit den Vor- und
Nachteilen bestimmter Anwendungen zu ermüden.&lt;/p&gt;
&lt;p&gt;Natürlich kann man das alles noch unter &lt;em&gt;Fortgeschrittene
Themen&lt;/em&gt; unterbringen, aber die eigentliche Anleitung würde ich
gerne so einfach wie möglich halten, damit sie leicht
verständlich bleibt.&lt;/p&gt;
&lt;h3 id=&#34;update-2018-06-08&#34;&gt;Update 2018-06-08&lt;/h3&gt;
&lt;p&gt;Das Repository ist von GitHub weggezogen.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Hugo: Ein kleines Script für neue Blogposts</title>
      <link>/2018/04/28/hugo-ein-kleines-script-fuer-neue-blogposts/</link>
      <pubDate>Sat, 28 Apr 2018 13:20:24 +0200</pubDate>
      <guid>/2018/04/28/hugo-ein-kleines-script-fuer-neue-blogposts/</guid>
      <description>&lt;p&gt;Seit meiner &lt;a href=&#34;/2017/11/20/testweise-umstellung-auf-hugo/&#34;&gt;Umstellung&lt;/a&gt; auf &lt;a href=&#34;https://gohugo.io/&#34;&gt;Hugo&lt;/a&gt; habe ich leider aus
Zeitgründen nicht mehr viel geschrieben. Ich möchte das wieder
ändern und aus dem Grund wurde es Zeit das Arbeiten mit &lt;em&gt;Hugo&lt;/em&gt;
etwas mehr an meine Bedürfnisse anzupassen.&lt;/p&gt;
&lt;p&gt;Die Funktion zum Anlegen eines neuen Blogposts finde ich in
&lt;a href=&#34;https://github.com/posativ/acrylamid&#34;&gt;Acrylamid&lt;/a&gt; schöner umgesetzt als in &lt;em&gt;Hugo&lt;/em&gt; weshalb ich
das &amp;lsquo;quick and dirty&amp;rsquo; mit einem kleinen Shellscript nachgebildet
habe:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cat /usr/local/bin/blog-post 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#! /bin/bash&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;DATE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;date --rfc-3339&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;date&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;HUGODATE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;date --iso-8601&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;seconds&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Bitte Titel eingeben und Enter drücken.&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;read&lt;/span&gt; -r TITLEINPUT
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;TITLE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;TITLEINPUT&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,,&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;	&lt;span class=&#34;c1&#34;&gt;# To lower case&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;TITLE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;TITLE&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;//ä/ae&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;TITLE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;TITLE&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;//ö/oe&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;TITLE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;TITLE&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;//ü/ue&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;TITLE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;TITLE&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;//ß/ss&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;TITLE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;TITLE&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;//[@-.:,;?!&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\/&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]/&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;	&lt;span class=&#34;c1&#34;&gt;# Remove special characters&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;TITLE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;TITLE&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;//&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\ &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;/-&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt; 	&lt;span class=&#34;c1&#34;&gt;# Replace spaces with -&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cat &amp;gt; ~/www/blog/content/post/&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$DATE&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;-&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$TITLE&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;.md &lt;span class=&#34;s&#34;&gt;&amp;lt;&amp;lt; EOF
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;title: &amp;#34;$TITLEINPUT&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;date: $HUGODATE
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;draft: false
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;tags: [ ]
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;url: /$(date +%Y)/$(date +%m)/$(date +%d)/$TITLE/
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;hidethedate: false
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;EOF&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nano ~/www/blog/content/post/&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$DATE&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;-&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$TITLE&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;.md
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Das ganze hätte man vielleicht auch mit Funktionen von
&lt;em&gt;Hugo&lt;/em&gt; erreichen können aber ich möchte mich nicht
mehr so arg auf Eigenheiten eines Blogsystems festlegen
um flexibler zu sein. Das Script sollte im Falle eines
Umstiegs recht einfach für einen anderen statischen
Bloggenerator anpassbar sein.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>twtxt - Microblogging für Nerds</title>
      <link>/2018/04/21/twtxt-microblogging-fuer-nerds/</link>
      <pubDate>Sat, 21 Apr 2018 17:09:58 +0200</pubDate>
      <guid>/2018/04/21/twtxt-microblogging-fuer-nerds/</guid>
      <description>&lt;p&gt;Nach dem Lesen von &lt;em&gt;Robbinaers&lt;/em&gt; Beitrag &lt;a href=&#34;https://robbinaer.info/index.php?article93/twtxt&#34;&gt;TWTXT: Microblogging  für Hacker&lt;/a&gt; habe ich
mir auch &lt;a href=&#34;https://twtxt.readthedocs.io/en/latest/&#34;&gt;twtxt&lt;/a&gt; eingerichtet. Ich will hier gar nicht mehr groß erklären wie
&lt;em&gt;twtxt&lt;/em&gt; funktioniert, das hat &lt;em&gt;Robbinaer&lt;/em&gt; schon im verlinkten Beitrag getan.
Ich wollte nur mal meinen &lt;a href=&#34;https://mdosch.de/twtxt.txt&#34;&gt;twtxt &amp;ldquo;Account&amp;rdquo;&lt;/a&gt; etwas unter die Leute bringen:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;twtxt follow mdosch https://mdosch.de/twtxt.txt
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Ich verwende allerdings nicht den offiziellen Client sondern &lt;a href=&#34;https://github.com/mdom/txtnish&#34;&gt;txtnish&lt;/a&gt;,
da der eigentlich &lt;em&gt;twtxt&lt;/em&gt; Client bei mir häufiger gecrasht ist.  &lt;br&gt;
Und um das ganze etwas benutzerfreundlicher und mobiltauglicher zu machen habe
ich mir einen kleinen &lt;a href=&#34;https://github.com/mdosch/goxtxt&#34;&gt;twtxt XMPP-Bot&lt;/a&gt; zusammengehackt mit dem ich
&lt;em&gt;twtxt&lt;/em&gt; über &lt;em&gt;XMPP&lt;/em&gt;-Nachrichten steuern kann. &amp;#x1f601;&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>System-Mails von Linux über XMPP empfangen</title>
      <link>/2017/09/11/system-mails-von-linux-ueber-xmpp-empfangen/</link>
      <pubDate>Mon, 11 Sep 2017 00:00:00 +0000</pubDate>
      <guid>/2017/09/11/system-mails-von-linux-ueber-xmpp-empfangen/</guid>
      <description>&lt;p&gt;Heute stolperte ich im &lt;a href=&#34;https://osbn.de&#34;&gt;OSBN&lt;/a&gt; über den Beitrag &lt;a href=&#34;https://fryboyter.de/ueber-fehlgeschlagenem-service-per-xmpp-informieren&#34;&gt;Über
fehlgeschlagenem Service per XMPP
informieren&lt;/a&gt;
von &lt;em&gt;Fryboyter&lt;/em&gt;. Die Idee fand ich gut, aber ich würde mir lieber die
Systemmails von Linux, die ich derzeit &lt;a href=&#34;/2013/06/12/system-mails-von-linux-mit-thunderbird-abfragen/&#34;&gt;im Thunderbird
abfrage&lt;/a&gt;,
per XMPP zusenden lassen.&lt;/p&gt;
&lt;p&gt;Nach kurzer &lt;a href=&#34;/2017/08/28/searx-auf-uberspace-einrichten/&#34;&gt;Suche mit
searx&lt;/a&gt; fand ich den
englischen Blogpost &lt;a href=&#34;https://sowhatisthesolution.wordpress.com/2016/04/09/sendxmpp-mail-forward-on-debian-jessie/&#34;&gt;SendXMPP mail forward on Debian
Jessie&lt;/a&gt;.
Ich bin ein klein wenig von der Anleitung abgewichen und möchte die
Lösung auch für mich dokumentiert haben, falls der Blogeintrag mal
verschwindet darum halte ich das Vorgehen hier auch noch mal fest.&lt;/p&gt;
&lt;h4 id=&#34;warnung&#34;&gt;Warnung&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;Es könnte sein, dass wichtige oder sensible Informationen in den
Systemmails enthalten sind. Deshalb würde ich davon abraten diese über
fremde Server zu senden.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Zuerst habe ich &lt;a href=&#34;https://github.com/lhost/sendxmpp&#34;&gt;sendxmpp&lt;/a&gt; aus den
Debian-Repositories installiert:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    # apt install sendxmpp
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Anschließend habe ich überprüft ob sendxmpp überhaupt Nachrichten
zustellen kann. SENDER, SENDER_SERVER, EMPFAENGER, EMPFAENGER_SERVER,
PASSWORT und PORT (wird nur benötigt, wenn nicht der Standardport 5222
verwendet wird) sind hier und im weiteren Verlauf natürlich an die
eigene Konfiguration anzupassen.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    $ echo &amp;#39;Hallo Welt&amp;#39; | sendxmpp -t  -u SENDER -j SENDER_SERVER:PORT -p &amp;#39;PASSWORT&amp;#39; EMPFAENGER@EMPFAENGER_SERVER
    Invalid or unreadable path specified for ssl_ca_path. at /usr/share/perl5/Stream.pm line 641
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Ich bekam die gleiche Fehlermeldung wie &lt;em&gt;Fryboyter&lt;/em&gt; und konnte das
Problem beheben indem ich wie &lt;a href=&#34;https://fryboyter.de/ueber-fehlgeschlagenem-service-per-xmpp-informieren&#34;&gt;in seinem Beitrag
beschrieben&lt;/a&gt;
in &lt;code&gt;/usr/share/perl5/XML/Stream.pm&lt;/code&gt; Zeile 223 folgendermaßen abänderte:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$self-&amp;gt;{SIDS}-&amp;gt;{default}-&amp;gt;{ssl_ca_path} = &amp;#39;/etc/ssl/certs&amp;#39;;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Als nächstes habe ich die Datei &lt;code&gt;/etc/sendxmpp.conf&lt;/code&gt; mit folgendem
Inhalt angelegt:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;SENDER@SENDER_SERVER:PORT PASSWORT
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Anschließend wurde die Datei ausschließlich für ihren Besitzer les- und
beschreibbar gemacht und der Besitzer zu &lt;code&gt;Debian-exim&lt;/code&gt; geändert:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# chmod 600 /etc/sendxmpp.conf
# chown Debian-exim:Debian-exim /etc/sendxmpp.conf
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Nun habe ich die Datei &lt;code&gt;/usr/local/bin/mail2xmpp&lt;/code&gt; angelegt und folgendes
eingetragen:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;#!/bin/bash                   
echo &amp;#34;$(cat)&amp;#34; | sendxmpp -t   
-f /etc/sendxmpp.conf EMPFAENGER@EMPFAENGER_SERVER
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Die Datei wurde anschließend noch ausführbar gemacht:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# chmod 755 /usr/local/bin/mail2xmpp
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Um zu definieren wie die Mails zugestellt werden muss die Datei
&lt;code&gt;/etc/aliases&lt;/code&gt; bearbeitet werden, wobei USER natürlich anzupassen ist:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# /etc/aliases
mailer-daemon: postmaster
postmaster: root
nobody: root
hostmaster: root
usenet: root
news: root
webmaster: root
www: root
ftp: root
abuse: root
noc: root
security: root
root: USER
USER:,|/usr/local/bin/mail2xmpp
logcheck: root
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Damit die Systemmails per pipe weitergereicht werden können muss die
Datei &lt;code&gt;/etc/exim4/exim4.conf.localmacros&lt;/code&gt; angelegt und diese Zeile
eingetragen werden:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;SYSTEM_ALIASES_PIPE_TRANSPORT = address_pipe
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Anschließend werden die neuen Aliase eingelesen und &lt;code&gt;exim4&lt;/code&gt; neu
gestartet:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# newaliases
# systemctl restart exim4.service 
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Abschließend wird noch getestet ob der Mailtransport über XMPP
funktioniert:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ echo &amp;#34;Das ist ein Test&amp;#34; | mail -s testmail root
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;An einem meiner Rechner bekam ich hier eine Fehlermeldung:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;mail: Nachricht kann nicht gesendet werden: Prozess wurde mit einem von Null verschiedenen Status beendet
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;In den logs sah ich folgendes:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Sep 12 19:02:53 backup exim[446]: 2017-09-12 19:02:53 1droaL-00007C-Lt &amp;lt;= root@backup U=root P=local S=341
Sep 12 19:02:53 backup exim[446]: 2017-09-12 19:02:53 1droaL-00007C-Lt Cannot open main log file &amp;#34;/var/log/exim4/mainlog&amp;#34;: Permission denied: euid=104 egid=109
Sep 12 19:02:53 backup exim[446]: exim: could not open panic log - aborting: see message(s) above
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Das konnte ich ganz einfach beheben indem ich den Ordner
&lt;code&gt;/var/log/exim4/&lt;/code&gt; angelegt und &lt;code&gt;Debian-exim&lt;/code&gt; als Eigentümer festgelegt
habe:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# mkdir /var/log/exim4
# chown Debian-exim:Debian-exim /var/log/exim4
&lt;/code&gt;&lt;/pre&gt;&lt;h5 id=&#34;update-2017-09-12&#34;&gt;[Update 2017-09-12]&lt;/h5&gt;
&lt;p&gt;An einem meiner Rechner gab es nach der Einrichtung noch eine
Fehlermeldung beim Versuch Nachrichten über XMPP weiterzuleiten. Ich
habe den Beitrag dementsprechend erweitert.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Searx auf Uberspace einrichten</title>
      <link>/2017/08/28/searx-auf-uberspace-einrichten/</link>
      <pubDate>Mon, 28 Aug 2017 00:00:00 +0000</pubDate>
      <guid>/2017/08/28/searx-auf-uberspace-einrichten/</guid>
      <description>&lt;p&gt;Im &lt;a href=&#34;https://www.kuketz-blog.de/xmpp/&#34;&gt;Chat zum Kuketzblog&lt;/a&gt; wurde ich auf &lt;a href=&#34;https://asciimoo.github.io/searx/&#34;&gt;Searx&lt;/a&gt; aufmerksam gemacht.
&lt;em&gt;Searx&lt;/em&gt; ist eine &lt;a href=&#34;https://de.wikipedia.org/wiki/Metasuchmaschine&#34;&gt;Metasuchmaschine&lt;/a&gt;, die sich selbst wie folgt beschreibt:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Searx is a metasearch engine, aggregating the results of other search
engines while not storing information about its users.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Ich habe zwar bei &lt;a href=&#34;https://technik.blogbasis.net/searx-metasuchmaschine-auf-uberspace-nutzen-22-03-2015&#34;&gt;blogbasis.net&lt;/a&gt; und &lt;a href=&#34;https://www.techregion.de/vorstellungen/eigene-anonyme-meta-suchmaschine-installieren&#34;&gt;techregion.de&lt;/a&gt; zwei
Anleitungen für &lt;em&gt;searx&lt;/em&gt; auf &lt;em&gt;Uberspace.de&lt;/em&gt; gefunden, aber leider sind diese
wohl veraltet und funktionierten bei mir nicht. &lt;!-- more --&gt;&lt;/p&gt;
&lt;p&gt;Ich habe &lt;em&gt;searx&lt;/em&gt; bei mir im Verzeichnis &lt;code&gt;~/build&lt;/code&gt; installiert, da ich zuerst
dachte &lt;em&gt;searx&lt;/em&gt; müsste kompiliert werden. Ich habe es erst mal dort gelassen,
aber vielleicht ziehe ich es mal nach &lt;code&gt;~&lt;/code&gt; um, wichtig ist nur, dass es in
keinem öffentlich zugänglichen Ordner, also nicht in &lt;code&gt;~/html&lt;/code&gt; oder
&lt;code&gt;/var/www/virtual/$USER/&lt;/code&gt; liegt.&lt;/p&gt;
&lt;p&gt;Zuerst habe ich die aktuelle Version von &lt;em&gt;searx&lt;/em&gt; heruntergeladen und in
das Verzeichnis gewechselt:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;git clone https://github.com/asciimoo/searx.git &amp;amp;&amp;amp; cd ~/build/searx
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Anschließend habe ich die Datei &lt;code&gt;manage.sh&lt;/code&gt; folgendermaßen bearbeitet:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;update_packages() {
    pip3 install --upgrade pip --user
    pip3 install --upgrade setuptools --user
    pip3 install --upgrade -r &amp;#34;$BASE_DIR/requirements.txt&amp;#34; --user
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Nun wird die Datei ausgeführt um alle für &lt;em&gt;searx&lt;/em&gt; benötigten Abhängigkeiten
zu installieren:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;./manage.sh update_packages
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Dann wird in der Datei &lt;code&gt;searx/settings.yml&lt;/code&gt; ein eigener geheimer Key eingetragen:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;sed -i -e &amp;#34;s/ultrasecretkey/`openssl rand -hex 16`/g&amp;#34; searx/settings.yml 
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Für searx muss auch ein &lt;a href=&#34;https://wiki.uberspace.de/system:ports#user-bereich&#34;&gt;Port auf Uberspace&lt;/a&gt; &lt;del&gt;geöffnet&lt;/del&gt; gewählt
werden. Achtet dabei darauf, dass dieser noch frei ist um
&lt;a href=&#34;https://wiki.uberspace.de/system:ports#kollisionen&#34;&gt;Kollisionen zu vermeiden&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Dieser wird in die Datei &lt;code&gt;searx/settings.yml&lt;/code&gt; eingetragen:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;server:
    port : DER_PORT
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Nun legen wir einen Starter mit den &lt;a href=&#34;https://wiki.uberspace.de/system:daemontools&#34;&gt;daemontools&lt;/a&gt; an:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ cat &amp;lt;&amp;lt;__EOF__ &amp;gt; ~/etc/searx/run
#!/bin/sh
exec /usr/local/bin/python3 /home/$USER/build/searx/searx/webapp.py 2&amp;gt;&amp;amp;1
__EOF__

$ chmod +x ~/etc/searx/run
$ ln -s ~/etc/searx ~/service/searx
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;em&gt;Searx&lt;/em&gt; kann nun mit &lt;code&gt;svc -u ~/service/searx&lt;/code&gt; gestartet, mit
&lt;code&gt;svc -d ~/service/searx&lt;/code&gt; beendet oder mit &lt;code&gt;svc -du ~/service/searx&lt;/code&gt;
neu gestartet werden.&lt;/p&gt;
&lt;p&gt;Ich wollte &lt;em&gt;searx&lt;/em&gt; unter der Subdomain &lt;a href=&#34;https://search.mdosch.de&#34;&gt;search.mdosch.de&lt;/a&gt; erreichbar machen,
also habe ich den Ordner &lt;code&gt;/var/www/virtual/$USER/search.mdosch.de&lt;/code&gt; erstellt
und dort die Datei &lt;code&gt;/var/www/virtual/$USER/search.mdosch.de/.htaccess&lt;/code&gt; mit
diesem Inhalt angelegt:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;RewriteBase /
RewriteEngine On
RewriteRule (.*) http://localhost:DER_PORT/$1 [P]
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;code&gt;DER_PORT&lt;/code&gt; ist natürlich mit dem &lt;del&gt;freigeschalteten&lt;/del&gt; gewählten Port
zu ersetzen.&lt;/p&gt;
&lt;p&gt;Jetzt ist &lt;em&gt;searx&lt;/em&gt; fertig eingerichtet und kann per &lt;code&gt;searx&lt;/code&gt; gestartet werden.&lt;/p&gt;
&lt;p&gt;Ich habe &lt;em&gt;searx&lt;/em&gt; auch über &lt;a href=&#34;http://search.4bkxscubgtxwvhpe.onion/&#34;&gt;search.4bkxscubgtxwvhpe.onion&lt;/a&gt; als
&amp;ldquo;hidden service&amp;rdquo; per &lt;em&gt;Tor&lt;/em&gt; verfügbar gemacht.&lt;/p&gt;
&lt;p&gt;Mein erster Eindruck ist soweit ganz gut, auch wenn die Qualität der
Suchergebnisse nicht ganz mit meiner bisherigen Suchmaschine &lt;em&gt;StartPage&lt;/em&gt;
mithalten kann.&lt;/p&gt;
&lt;h3 id=&#34;update-2017-08-30&#34;&gt;[Update 2017-08-30]&lt;/h3&gt;
&lt;p&gt;Ich wurde im &lt;a href=&#34;/2017/08/28/searx-auf-uberspace-einrichten/#isso-544&#34;&gt;Kommentar von Tom&lt;/a&gt; darauf hingewiesen, dass der Port nicht
in der Firewall geöffnet werden muss.&lt;/p&gt;
&lt;h3 id=&#34;update-2017-08-31&#34;&gt;[Update 2017-08-31]&lt;/h3&gt;
&lt;p&gt;Ich habe den &lt;em&gt;daemontools&lt;/em&gt;-Starter wieder herausgenommen, da er nicht
funktioniert. Das scheint mit Pythonscripten nicht ohne Weiteres zu gehen.
Wenn ich eine Lösung gefunden habe werde ich den Beitrag wieder aktualisieren.&lt;/p&gt;
&lt;h3 id=&#34;update-2017-09-03&#34;&gt;[Update 2017-09-03]&lt;/h3&gt;
&lt;p&gt;Der &lt;em&gt;daemontools&lt;/em&gt;-Starter ist wieder eingefügt, da es nun
&lt;a href=&#34;/2017/08/28/searx-auf-uberspace-einrichten/#isso-549&#34;&gt;doch funktioniert&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>BlogC&#43;&#43; in Debian benutzen</title>
      <link>/2017/08/26/blogc&#43;&#43;-in-debian-benutzen/</link>
      <pubDate>Sat, 26 Aug 2017 00:00:00 +0000</pubDate>
      <guid>/2017/08/26/blogc&#43;&#43;-in-debian-benutzen/</guid>
      <description>&lt;p&gt;Der &lt;a href=&#34;https://osbn.de/&#34;&gt;OSBN&lt;/a&gt;-Kollege &lt;a href=&#34;https://tuxproject.de/blog/&#34;&gt;tux&lt;/a&gt;
hat mir &lt;a href=&#34;/2016/10/17/mal-wieder-auf-der-suche-nach-einer-blogsoftware/#isso-376&#34;&gt;hier
vorgeschlagen&lt;/a&gt;
auch mal seinen &lt;a href=&#34;http://staticsitegenerators.net/&#34;&gt;statischen&lt;/a&gt;
Blogcompiler &lt;a href=&#34;https://blogcpp.org/&#34;&gt;Blogcpp&lt;/a&gt; zu testen.&lt;/p&gt;
&lt;p&gt;Mittlerweile habe ich es, mit viel Hilfe von tux, geschafft &lt;em&gt;blogcpp&lt;/em&gt;
unter &lt;em&gt;Debian&lt;/em&gt; &lt;em&gt;Stretch&lt;/em&gt; und &lt;em&gt;Buster&lt;/em&gt; zu kompilieren. Dazu musste ich
die Pakete &lt;code&gt;g++&lt;/code&gt;, &lt;code&gt;cmake&lt;/code&gt;, &lt;code&gt;libicu-dev&lt;/code&gt; und &lt;code&gt;libcurl4-gnutls-dev&lt;/code&gt;
installieren.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Blogcpp&lt;/em&gt; funktioniert gut und ich habe damit auch schon ein paar
temporäre Testblogeinträge geschrieben. Nun kommt aber schwierige Teil
zu versuchen die bisherigen Beiträge und mein Theme von
&lt;a href=&#34;https://posativ.org/acrylamid/&#34;&gt;acrylamid&lt;/a&gt; zu &lt;em&gt;blogcpp&lt;/em&gt; zu portieren.&lt;/p&gt;
&lt;p&gt;Ich habe auch mal die aktuelle Version &lt;a href=&#34;https://files.mdosch.de/2017-08/blogcpp-5-debian.tar.bz2&#34;&gt;BlogC++ 5 für
Debian&lt;/a&gt;
hochgeladen. Im Archiv sind ein binary für &lt;em&gt;Stretch&lt;/em&gt; und eines für
&lt;em&gt;Buster&lt;/em&gt; enthalten. Vermutlich wird eines von diesen auch auf einem
aktuellen &lt;em&gt;Ubuntu&lt;/em&gt; funktionieren, aber ich habe das nicht getestet und
würde mich über Feedback freuen.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>YouTube-Videos mit mpv unter firejail abspielen</title>
      <link>/2017/08/16/youtube-videos-mit-mpv-unter-firejail-abspielen/</link>
      <pubDate>Wed, 16 Aug 2017 00:00:00 +0000</pubDate>
      <guid>/2017/08/16/youtube-videos-mit-mpv-unter-firejail-abspielen/</guid>
      <description>&lt;p&gt;Mein bevorzugter Videoplayer &lt;a href=&#34;https://mpv.io/&#34;&gt;mpv&lt;/a&gt; kann
&lt;a href=&#34;https://de.wikipedia.org/wiki/YouTube&#34;&gt;YouTube&lt;/a&gt;-Videos, mit Hilfe von
&lt;a href=&#34;https://rg3.github.io/youtube-dl/&#34;&gt;youtube-dl&lt;/a&gt;, direkt streamen. Dazu
genügt es die URL des Videos als Parameter an &lt;em&gt;mpv&lt;/em&gt; zu übergeben, z.B.:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    mpv https://www.youtube.com/embed/ucRWyGKBVzo    
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Leider funktionierte das nicht wenn &lt;em&gt;mpv&lt;/em&gt; mit &lt;em&gt;firejail&lt;/em&gt; und dem von
&lt;a href=&#34;https://debian.org&#34;&gt;Debian&lt;/a&gt; mitgelieferten Firejailprofil ausgeführt
wurde. Das Problem ist, dass das &lt;em&gt;Debian&lt;/em&gt;-Paket von &lt;em&gt;youtube-dl&lt;/em&gt; als
&lt;a href=&#34;https://de.wikipedia.org/wiki/Shebang&#34;&gt;Shebang&lt;/a&gt; &lt;code&gt;#!/usr/bin/python3&lt;/code&gt;
nutzt, was in &lt;em&gt;Debian&lt;/em&gt; auf &lt;code&gt;python3.5&lt;/code&gt; verlinkt und beides nicht im
&lt;code&gt;private-bin&lt;/code&gt; von &lt;em&gt;mpv&lt;/em&gt; eingetragen ist. Nutzt man &lt;em&gt;youtube-dl&lt;/em&gt; als
Binärdatei von upstream wird &lt;code&gt;#!/usr/bin/env python&lt;/code&gt; verwendet, was
ebenfalls nicht berücksichtigt ist.&lt;/p&gt;
&lt;p&gt;Um die Funktionalität auch mit firejail nutzen zu können muss man also
entweder die Datei &lt;code&gt;/etc/firejail/mpv.profile&lt;/code&gt; editieren oder diese nach
&lt;code&gt;~/.config/firejail/mpv.profile&lt;/code&gt; kopieren und dort die Zeile, die mit
&lt;code&gt;private-bin&lt;/code&gt; beginnt, wie &lt;a href=&#34;https://github.com/netblue30/firejail/commit/20d96e1fc69dfa3ed6c07db1af585f53b7ea60a7&#34;&gt;im firejail commit
beschrieben&lt;/a&gt;
editieren (ich empfehle letzteres):&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    private-bin mpv,youtube-dl,python,python2.7,python3,python3.5,python3.6,env
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Zum Thema &lt;em&gt;firejail&lt;/em&gt; habe ich auch mal eine kleine Übersicht namens
&lt;a href=&#34;/2016/12/02/quickstart-firejail/&#34;&gt;Quick-Start firejail&lt;/a&gt; geschrieben.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Kurztipp: Maus/Touchpad-Nutzung in tmux aktivieren</title>
      <link>/2017/07/30/kurztipp-maus-touchpad-nutzung-in-tmux-aktivieren/</link>
      <pubDate>Sun, 30 Jul 2017 00:00:00 +0000</pubDate>
      <guid>/2017/07/30/kurztipp-maus-touchpad-nutzung-in-tmux-aktivieren/</guid>
      <description>&lt;p&gt;Wer sich häufig per &lt;a href=&#34;https://de.wikipedia.org/wiki/Secure_Shell&#34;&gt;SSH&lt;/a&gt;
auf anderen Rechnern einloggt nutzt wahrscheinlich einen
Terminalmultiplexer wie
&lt;a href=&#34;https://de.wikipedia.org/wiki/GNU_Screen&#34;&gt;screen&lt;/a&gt; oder
&lt;a href=&#34;https://github.com/tmux/tmux/wiki&#34;&gt;tmux&lt;/a&gt;. Meine Wahl fiel auf &lt;em&gt;tmux&lt;/em&gt;.
Was mich aber an &lt;em&gt;tmux&lt;/em&gt; stört ist, dass ich standardmäßg nicht mit Maus
oder Touchpad durch die Ausgabe scrollen kann, sondern immer erst
&lt;code&gt;^b + [&lt;/code&gt; ausführen muss.&lt;/p&gt;
&lt;p&gt;Man kann das &lt;a href=&#34;https://man.openbsd.org/tmux#mouse&#34;&gt;Standardverhalten ganz einfach
umstellen&lt;/a&gt; indem man auf dem
Rechner, auf dem tmux läuft, die Datei &lt;code&gt;~/.tmux.conf&lt;/code&gt; anlegt und
folgendes einträgt:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    setw -g mouse on
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Danach führt man &lt;code&gt;tmux source-file ~/.tmux.conf&lt;/code&gt; aus und die
Mausunterstützung ist aktiviert.&lt;/p&gt;
&lt;p&gt;Bei Bedarf kann man das &lt;a href=&#34;https://man.openbsd.org/tmux#MOUSE_SUPPORT&#34;&gt;Mausverhalten noch weiter
anpassen&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Bei älteren &lt;em&gt;tmux&lt;/em&gt;-Versionen muss man evtl. noch die alte Konfiguration
benutzen:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    setw -g mouse-mode on
&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    
    <item>
      <title>Einen eigenen Backport von Onionshare bauen</title>
      <link>/2017/07/11/einen-eigenen-backport-von-onionshare-bauen/</link>
      <pubDate>Tue, 11 Jul 2017 00:00:00 +0000</pubDate>
      <guid>/2017/07/11/einen-eigenen-backport-von-onionshare-bauen/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://onionshare.org/&#34;&gt;Onionshare&lt;/a&gt; ist ein nützliches Tool um Dateien
über &lt;a href=&#34;https://www.torproject.org/&#34;&gt;Tor&lt;/a&gt; auszutauschen, aber leider nicht
in &lt;em&gt;Debian&lt;/em&gt; &lt;em&gt;Stretch&lt;/em&gt; vorhanden. Ich beschreibe hier, wie ich mir meinen
eigenen Backport aus den &lt;em&gt;Testing&lt;/em&gt;-Quellen gebaut habe. Dieser Beitrag
kann als grobe Richtschnur zum Bauen &amp;quot;eigener Backports&amp;quot; am Beispiel
von &lt;em&gt;Onionshare&lt;/em&gt; betrachtet werden.&lt;/p&gt;
&lt;p&gt;Als erstes habe ich die Quell-Repositories von &lt;em&gt;Stable&lt;/em&gt; und &lt;em&gt;Testing&lt;/em&gt; in
die Datei &lt;code&gt;/etc/apt/sources.list&lt;/code&gt; eingefügt:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    # Stretch Sources
    deb-src https://ftp.de.debian.org/debian/ stretch main 

    # Testing Sources
    deb-src https://ftp.de.debian.org/debian/ testing main 
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Anschließend habe ich die Paketlisten aktualisiert und alle Pakete
installiert, die notwendig sind um &lt;em&gt;Onionshare&lt;/em&gt; zu kompilieren:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    # apt update
    # apt --no-install-recommends build-dep onionshare/testing
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Um Pakete als unprivilegierter Benutzer kompilieren zu können wird noch
das Paket &lt;em&gt;fakeroot&lt;/em&gt; benötigt:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    # apt install fakeroot
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Sind alle Abhängigkeiten für den Bau von &lt;em&gt;Onionshare&lt;/em&gt; installiert, kann
Onionshare aus dem Quellpaket von &lt;em&gt;Testing&lt;/em&gt; gebaut werden:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    $ apt source -b onionshare/testing
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Wurde das Paket erfolgreich gebaut kann &lt;em&gt;Onionshare&lt;/em&gt; jetzt installiert
werden:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    # dpkg -i onionshare_0.9.2-1_all.deb
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Danach habe ich die beiden Einträge in der Datei &lt;code&gt;/etc/apt/sources.list&lt;/code&gt;
wieder auskommentiert:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    # Stretch Sources
    #deb-src https://ftp.de.debian.org/debian/ stretch main

    # Testing Sources
    #deb-src https://ftp.de.debian.org/debian/ testing main
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Abschließend wurden die Paketquellen wieder aktualisiert um sie auf den
aktuellen Stand ohne die Quellpakete zu bekommen.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# apt update
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;WARNUNG:&lt;/strong&gt; Ein selbst kompiliertes Paket wird nicht von der
Distribution mit Sicherheitsupdates versorgt, d.h. man ist selbst dafür
verantwortlich dieses aktuell zu halten!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>DNSCrypt in Debian einrichten</title>
      <link>/2017/07/07/dnscrypt-in-debian-einrichten/</link>
      <pubDate>Fri, 07 Jul 2017 00:00:00 +0000</pubDate>
      <guid>/2017/07/07/dnscrypt-in-debian-einrichten/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://dnscrypt.org/&#34;&gt;DNSCrypt&lt;/a&gt; ist ein Tool, das einen Sicherheitsgewinn durch Verhinderung
von &lt;a href=&#34;https://de.wikipedia.org/wiki/Man-in-the-Middle-Angriff&#34;&gt;Man-In-The-Middle-Angriffen&lt;/a&gt; bei &lt;a href=&#34;https://de.wikipedia.org/wiki/Domain_Name_System#Beispiel_Namensaufl.C3.B6sung&#34;&gt;DNS-Abfragen&lt;/a&gt; verspricht.
&lt;a href=&#34;https://itsecblog.de/dnscrypt-mehr-sicherheit-und-privatsphaere/&#34;&gt;Dieser Artikel&lt;/a&gt;, wenn auch schon älter, umreißt das Thema ganz gut.&lt;/p&gt;
&lt;h3 id=&#34;installation&#34;&gt;Installation&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;DNSCrypt&lt;/em&gt; lässt sich unter &lt;em&gt;Debian&lt;/em&gt; folgendermaßen installieren und
aktivieren:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# apt install dnscrypt-proxy
# systemctl enable dnscrypt-proxy.service
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;konfiguration&#34;&gt;Konfiguration&lt;/h3&gt;
&lt;p&gt;Nun kann man sich einen der, in der Datei
&lt;code&gt;/usr/share/dnscrypt-proxy/dnscrypt-resolvers.csv&lt;/code&gt; gelisteten, Server
aussuchen und in die Datei &lt;code&gt;/etc/dnscrypt-proxy/dnscrypt-proxy.conf&lt;/code&gt;
eintragen, z.B.:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;ResolverName ns0.dnscrypt
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Man kann auch &lt;code&gt;random&lt;/code&gt; eintragen, dann wird ein &lt;a href=&#34;https://github.com/jedisct1/dnscrypt-proxy/blob/master/dnscrypt-proxy.conf&#34;&gt;zufälliger Resolver&lt;/a&gt;
aus der Liste gewählt, der über IPv4 verfügbar ist, DNSSEC unterstützt
und nicht loggt:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;ResolverName random
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Damit auch der installierte Proxy zur Auflösung von DNS-Anfragen genutzt
wird muss die Datei &lt;code&gt;/etc/resolv.conf&lt;/code&gt; editiert werden:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# Use dnscrypt-proxy
nameserver 127.0.2.1
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;dnscrypt-starten&#34;&gt;DNSCrypt starten&lt;/h3&gt;
&lt;p&gt;Nun kann kann der &lt;em&gt;DNSCrypt-Proxy&lt;/em&gt; gestartet werden:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# systemctl start dnscrypt-proxy.service
&lt;/code&gt;&lt;/pre&gt;&lt;!--
### Resolvers updaten und überprüfen

#### dnscrypt-update-resolvers.sh

Leider sind bei Debian Stable nach einer Weile die Resolver in der
Datei `/usr/share/dnscrypt-proxy/dnscrypt-resolvers.csv` nicht mehr
sehr aktuell. Das lässt sich mit dem Script [dnscrypt-update-resolvers.sh][44]
beheben:

```
# curl https://raw.githubusercontent.com/jedisct1/dnscrypt-proxy/master/contrib/dnscrypt-update-resolvers.sh.in -o /usr/local/bin/dnscrypt-update-resolvers.sh
# chmod +x /usr/local/bin/dnscrypt-update-resolvers.sh
```

In dem Script muss noch `PKG_DATA_DIR` am Anfang angepasst werden
und schon kann man über das Script die Resolverliste updaten:

```
PKG_DATA_DIR=&#34;/usr/share/dnscrypt-proxy/&#34;
```

#### resolvers-check.sh

Mit dem Script [resolvers-check.sh][47] kann man überprüfen welche
Resolver der aktuellen Liste funktionstüchtig sind. 

```
# curl https://raw.githubusercontent.com/jedisct1/dnscrypt-proxy/master/contrib/resolvers-check.sh -o /usr/local/bin/resolvers-check.sh
# chmod +x /usr/local/bin/resolvers-check.sh
```

In der Datei muss bei `RESOLVERS_LIST` der richtige Pfad eingetragen
werden. Bei dnscrypt-proxy aus den Debianquellen ist das dieser:

```
RESOLVERS_LIST=/usr/share/dnscrypt-proxy/dnscrypt-resolvers.csv
```

Nun kann man die Resolver überprüfen (Ausgabe gekürzt):

```
# resolvers-check.sh
+ adguard-dns-family - OK
+ adguard-dns - OK
- adguard-dns-family-ipv6 - Failed
```  
--&gt;
&lt;h3 id=&#34;troubleshooting&#34;&gt;Troubleshooting&lt;/h3&gt;
&lt;p&gt;Da der &lt;a href=&#34;https://wiki.ubuntuusers.de/NetworkManager/&#34;&gt;NetworkManager&lt;/a&gt; diese Datei bei Nutzung von &lt;a href=&#34;https://de.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol&#34;&gt;DHCP&lt;/a&gt;
überschreibt muss, wie im &lt;a href=&#34;https://wiki.archlinux.org/index.php/Resolv.conf#Preserve_DNS_settings&#34;&gt;Arch-Wiki&lt;/a&gt; beschrieben, in der Datei
&lt;code&gt;/etc/NetworkManager/NetworkManager.conf&lt;/code&gt; die Zeile &lt;code&gt;dns=none&lt;/code&gt;
im Bereich &lt;code&gt;[main]&lt;/code&gt; eingetragen werden.&lt;/p&gt;
&lt;p&gt;Bei mir war die Datei &lt;code&gt;/etc/resolv.conf&lt;/code&gt; ein Link auf
&lt;code&gt;/var/run/NetworkManager/resolv.conf&lt;/code&gt; und ich musste den Link
entfernen damit &lt;em&gt;DNSCrypt&lt;/em&gt; funktionierte:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# ll /etc/resolv.conf      
lrwxrwxrwx 1 root root 35 Jul  7 02:04 /etc/resolv.conf -&amp;gt; /var/run/NetworkManager/resolv.conf
# rm /etc/resolv.conf
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Danach habe ich die Datei neu angelegt, den oben beschriebenen
Eintrag eingefügt und die Datei für alle Nutzer lesbar gemacht:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# nano /etc/resolv.conf
# chmod 644 /etc/resolv.conf
# ll /etc/resolv.conf
-rw-r--r-- 1 root root 42 Jul  7 15:07 /etc/resolv.conf
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Nach einem Neustart des NetworkManagers funktioniert auch die
Namensauflösung mit selbigem.&lt;/p&gt;
&lt;p&gt;Im verlinkten Beitrag aus dem &lt;em&gt;Arch&lt;/em&gt;-Wiki ist auch erklärt, wie man
&lt;em&gt;dhcpcd&lt;/em&gt; und &lt;em&gt;netctl&lt;/em&gt; davon abhält die Datei &lt;code&gt;resolv.conf&lt;/code&gt; zu
überschreiben.&lt;/p&gt;
&lt;h3 id=&#34;erfolg-testen&#34;&gt;Erfolg testen&lt;/h3&gt;
&lt;p&gt;Man kann lokal testen ob die Anfragen auch vom &lt;em&gt;DNSCrypt-Proxy&lt;/em&gt;
beantwortet werden:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ dig debian.org txt

; &amp;lt;&amp;lt;&amp;gt;&amp;gt; DiG 9.10.3-P4-Debian &amp;lt;&amp;lt;&amp;gt;&amp;gt; debian.org txt
;; global options: +cmd
;; Got answer:
;; -&amp;gt;&amp;gt;HEADER&amp;lt;&amp;lt;- opcode: QUERY, status: NOERROR, id: 44884
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;debian.org.			IN	TXT

;; AUTHORITY SECTION:
debian.org.		600	IN	SOA	denis.debian.org. hostmaster.debian.org. 2017070811 1800 600 1814400 600

;; Query time: 192 msec
;; SERVER: 127.0.2.1#53(127.0.2.1)
;; WHEN: Sat Jul 08 09:32:22 CEST 2017
;; MSG SIZE  rcvd: 92
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Die Zeile &lt;code&gt;;; SERVER: 127.0.2.1#53(127.0.2.1)&lt;/code&gt; zeigt, dass Anfragen durch
&lt;em&gt;DNSCrypt&lt;/em&gt; beantwortet werden.&lt;/p&gt;
&lt;p&gt;Es gibt auch einen &lt;a href=&#34;https://dnsleaktest.com/&#34;&gt;DNS Leak Test&lt;/a&gt; online.&lt;/p&gt;
&lt;h3 id=&#34;update-2017-07-07&#34;&gt;[Update 2017-07-07]&lt;/h3&gt;
&lt;p&gt;Aufgrund &lt;a href=&#34;/2017/07/07/dnscrypt-in-debian-einrichten/#isso-528&#34;&gt;dieses Kommentares&lt;/a&gt; habe ich den Server im Beispiel
durch einen &lt;a href=&#34;https://dnscrypt.is/&#34;&gt;Server aus Island&lt;/a&gt; ersetzt, der &lt;em&gt;DNSSEC&lt;/em&gt; unterstützt,
nicht loggt und nicht zensiert:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;ns0.dnscrypt.is,&amp;#34;ns0.dnscrypt.is in Reykjavík, Iceland&amp;#34;,&amp;#34;DNSSEC enabled, non-logging, uncensored. Sponsored by 1984 Hosting.&amp;#34;,&amp;#34;Reykjavík, Iceland&amp;#34;,,https://dnscrypt.is,1,yes,yes,no,93.95.228.87,2.dnscrypt-cert.ns0.dnscrypt.is,EE41:6A83:451C:218F:37B2:B736:78C4:999F:7DE6:89D1:31D2:7866:7C8E:A8BB:1C95:B402,pubkey.ns0.dnscrypt.is
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Ich habe auch die Konfiguration von &lt;em&gt;DNSCrypt&lt;/em&gt; mit dem
&lt;em&gt;NetworkManager&lt;/em&gt; erweitern müssen.&lt;/p&gt;
&lt;h3 id=&#34;update-2017-07-08&#34;&gt;[Update 2017-07-08]&lt;/h3&gt;
&lt;p&gt;Abschnitt &amp;ldquo;Erfolg testen&amp;rdquo; hinzugefügt.&lt;/p&gt;
&lt;h3 id=&#34;update-2017-11-18&#34;&gt;[Update 2017-11-18]&lt;/h3&gt;
&lt;p&gt;Hinweis auf &lt;code&gt;random&lt;/code&gt; und die Scripte &lt;code&gt;dnscrypt-update-resolvers.sh&lt;/code&gt;
und &lt;code&gt;resolvers-check.sh&lt;/code&gt; vorgestellt.&lt;/p&gt;
&lt;h3 id=&#34;update-2017-12-16&#34;&gt;[Update 2017-12-16]&lt;/h3&gt;
&lt;p&gt;Die URL der Scripte auf Github hat sich geändert und wurde angepasst.&lt;/p&gt;
&lt;h3 id=&#34;update-2018-02-03&#34;&gt;[Update 2018-02-03]&lt;/h3&gt;
&lt;p&gt;Wie &lt;a href=&#34;/2017/07/07/dnscrypt-in-debian-einrichten/#isso-583&#34;&gt;in diesem Kommentar&lt;/a&gt; richtig angemerkt
gibt es die Scripte auf Github nicht mehr. Ich habe die Abschnitte dementsprechend entfernt.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Probleme mit dem Firejailprofil von Gajim</title>
      <link>/2017/06/16/probleme-mit-dem-firejailprofil-von-gajim/</link>
      <pubDate>Fri, 16 Jun 2017 00:00:00 +0000</pubDate>
      <guid>/2017/06/16/probleme-mit-dem-firejailprofil-von-gajim/</guid>
      <description>&lt;p&gt;Das, mit dem Debianpaket von
&lt;a href=&#34;/2016/12/02/quickstart-firejail/&#34;&gt;firejail&lt;/a&gt; mitgelieferte, Profil für
&lt;a href=&#34;https://gajim.org&#34;&gt;Gajim&lt;/a&gt; war bei mir fehlerhaft und verhinderte das
Starten von &lt;em&gt;Gajim&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Nach etwas Recherche fand ich heraus, dass die Verzeichnisse
&lt;code&gt;${HOME}/.cache/gajim&lt;/code&gt;, &lt;code&gt;${HOME}/.local/share/gajim&lt;/code&gt; und
&lt;code&gt;${HOME}/.config/gajim&lt;/code&gt; zwar in &lt;code&gt;/etc/firejail/gajim.profile&lt;/code&gt;
&amp;quot;gewhitelisted&amp;quot; sind, aber diese scheinbar durch folgende Einträge in
der Datei &lt;code&gt;/etc/firejail/disable-programs.inc&lt;/code&gt;, die mittels
&lt;code&gt;include /etc/firejail/disable-programs.inc&lt;/code&gt; eingebunden ist,
überschrieben werden:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    blacklist ${HOME}/.cache/gajim
    blacklist ${HOME}/.local/share/gajim
    blacklist ${HOME}/.config/gajim
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Die Lösung war eine lokale Kopie der Datei mittels
&lt;code&gt;cp /etc/firejail/gajim.profile ~/.config/firejail/&lt;/code&gt; zu erstellen und
folgende Zeilen einzufügen:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    noblacklist ${HOME}/.cache/gajim
    noblacklist ${HOME}/.local/share/gajim
    noblacklist ${HOME}/.config/gajim
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Mit diesen Einträgen lässt sich &lt;em&gt;Gajim&lt;/em&gt; bei mir auch mit &lt;em&gt;firejail&lt;/em&gt;
starten.&lt;/p&gt;
&lt;h5 id=&#34;update-2017-06-17&#34;&gt;[Update 2017-06-17]&lt;/h5&gt;
&lt;p&gt;In meinem
&lt;a href=&#34;https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=864895&#34;&gt;Bugreport&lt;/a&gt;
wurde mir mitgeteilt, dass der Fehler in &lt;em&gt;experimental&lt;/em&gt; bereits behoben
sei und eine aktualisierte Version von &lt;em&gt;firejail&lt;/em&gt; bald in den
&lt;em&gt;stretch-backports&lt;/em&gt; verfügbar sein sollte.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Kurztipp: SSH-Server für Android</title>
      <link>/2017/06/11/kurztipp-ssh-server-fuer-android/</link>
      <pubDate>Sun, 11 Jun 2017 00:00:00 +0000</pubDate>
      <guid>/2017/06/11/kurztipp-ssh-server-fuer-android/</guid>
      <description>&lt;p&gt;Bei &lt;a href=&#34;https://sailfishos.org/&#34;&gt;Sailfish OS&lt;/a&gt; war ich es gewohnt Dateien
komfortabel mittels &lt;a href=&#34;https://rsync.samba.org/&#34;&gt;rsync&lt;/a&gt; über
&lt;a href=&#34;https://de.wikipedia.org/wiki/Secure_Shell&#34;&gt;SSH&lt;/a&gt; auf das Smartphone zu
übertragen ohne es erst per Kabel mit dem Rechner verbinden zu müssen.
Gegen &lt;a href=&#34;https://de.wikipedia.org/wiki/Bluetooth&#34;&gt;Bluetooth&lt;/a&gt; habe ich
irgendwie eine Abneigung und das müsste ich auch erst manuell
aktivieren.&lt;/p&gt;
&lt;p&gt;Eine sehr nützliche Anwendung um die Übertragung von Dateien per
rsync/SSH unter Android (fast) so komfortabel wie bei Sailfish zu machen
ist &lt;a href=&#34;https://arachnoid.com/android/SSHelper/&#34;&gt;SSHelper&lt;/a&gt;. Die App ist
unter der &lt;a href=&#34;https://www.gnu.org/copyleft/gpl.html&#34;&gt;GPL&lt;/a&gt; lizensiert und
auf der Homepage auch gut dokumentiert.&lt;/p&gt;
&lt;p&gt;Das einzige Manko ist, dass die App nur im Play Store und nicht bei
&lt;a href=&#34;https://f-droid.org/&#34;&gt;F-Droid&lt;/a&gt; verfügbar ist.&lt;/p&gt;
&lt;h5 id=&#34;update-2017-07-30&#34;&gt;[Update 2017-07-30]&lt;/h5&gt;
&lt;p&gt;Seit heute ist &lt;em&gt;SSHelper&lt;/em&gt; im &lt;a href=&#34;https://apt.izzysoft.de/fdroid/&#34;&gt;F-Droid Repository von
IzzyOnAndroid&lt;/a&gt; verfügbar.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Einen Tor hidden service auf uberspace einrichten</title>
      <link>/2017/05/30/einen-tor-hidden-service-auf-uberspace-einrichten/</link>
      <pubDate>Tue, 30 May 2017 00:00:00 +0000</pubDate>
      <guid>/2017/05/30/einen-tor-hidden-service-auf-uberspace-einrichten/</guid>
      <description>&lt;p&gt;Ich habe
&lt;a href=&#34;/2017/05/29/mein-blog-ist-nun-als-hidden-service-ueber-tor-verfuegbar/&#34;&gt;hier&lt;/a&gt;
bereits erwähnt, dass ich meinen Blog als &lt;em&gt;hidden service&lt;/em&gt; mit einer
&lt;a href=&#34;https://de.wikipedia.org/wiki/.onion&#34;&gt;.onion-Domain&lt;/a&gt; verfügbar gemacht
habe und möchte nun erläutern, wie ich dabei vorgegangen bin.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Disclaimer:&lt;/strong&gt; Ich habe meinen Blog nur zusätzlich als &lt;em&gt;hidden service&lt;/em&gt;
verfügbar gemacht. Wenn jemand eine Seite ausschließlich als &lt;em&gt;hidden
service&lt;/em&gt; veröffentlichen will ist &lt;a href=&#34;https://uberspace.de&#34;&gt;uberspace&lt;/a&gt;
vermutlich der falsche Platz dafür. Soweit ich weiß liefert der
Webserver dort nur Dateien aus, die unter &lt;code&gt;~/html/&lt;/code&gt; liegen und diese
sind auch öffentlich erreichbar.
&lt;a href=&#34;/2017/05/30/einen-tor-hidden-service-auf-uberspace-einrichten/#1&#34;&gt;[Update]&lt;/a&gt;&lt;br&gt;
Man könnte zwar die Auslieferung per &lt;code&gt;.htaccess&lt;/code&gt; verbieten aber ich weiß
nicht ob das so sauber ist. Wenn euer Leben davon abhängt, dass ihr
nicht mit der .onion-Seite in Verbindung gebracht werdet, solltet ihr
besser wo anders (selbst?) hosten.&lt;/p&gt;
&lt;h5 id=&#34;libevent-installieren&#34;&gt;Libevent installieren&lt;/h5&gt;
&lt;p&gt;Um &lt;a href=&#34;https://www.torproject.org/&#34;&gt;Tor&lt;/a&gt; kompilieren zu können wird
&lt;a href=&#34;https://github.com/libevent/libevent&#34;&gt;libevent&lt;/a&gt; benötigt. In diesem
Beispiel verwende ich &lt;code&gt;release-2.1.8-stable&lt;/code&gt;:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    $ mkdir ~/build
    $ cd ~/build
    $ wget https://github.com/libevent/libevent/releases/download/release-2.1.8-stable/libevent-2.1.8-stable.tar.gz
    $ tar xvf libevent-2.1.8-stable.tar.gz
    $ cd libevent-2.1.8-stable
    $ ./autogen.sh
    $ ./configure --prefix=${HOME}
    $ make
    $ make install
&lt;/code&gt;&lt;/pre&gt;&lt;h5 id=&#34;tor-installieren&#34;&gt;Tor installieren&lt;/h5&gt;
&lt;p&gt;Nun laden wir Tor von der
&lt;a href=&#34;https://www.torproject.org/download/download.html.en#source&#34;&gt;Download-Seite&lt;/a&gt;
herunter, in diesem Beispiel &lt;code&gt;tor-0.3.0.7&lt;/code&gt;:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    $ cd ~/build
    $ wget https://www.torproject.org/dist/tor-0.3.0.7.tar.gz
    $ tar xvf tor-0.3.0.7.tar.gz
    $ cd tor-0.3.0.7
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;del&gt;Nun müssen wir in Erfahrung bringen wo sich das aktuelle OpenSSL
verbirgt:&lt;/del&gt;&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    $ openssl version -a
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;del&gt;In meinem Fall sieht die Ausgabe so aus:&lt;/del&gt;&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    OpenSSL 1.0.2h  3 May 2016
    built on: reproducible build, date unspecified
    platform: linux-x86_64
    options:  bn(64,64) rc4(16x,int) des(idx,cisc,16,int) idea(int) blowfish(idx) 
    compiler: gcc -I. -I.. -I../include  -fPIC -DOPENSSL_PIC -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DOPENSSL_NO_HEARTBEATS -Wa,--noexecstack -m64 -DL_ENDIAN -O3 -Wall -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -DECP_NISTZ256_ASM
    OPENSSLDIR: &amp;#34;/package/host/localhost/openssl-1.0.2h/ssl&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;del&gt;Relevant ist der Pfad in der letzten Zeile, den wir ohne das &lt;code&gt;/ssl&lt;/code&gt; am
Ende zum Kompilieren mit einem aktuellen OpenSSL benötigen:&lt;/del&gt;&lt;/p&gt;
&lt;p&gt;Nun kompilieren wir Tor mit einem aktuellen OpenSSL:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    $ ./configure --enable-static-openssl --with-openssl-dir=/package/host/localhost/openssl --prefix=${HOME}
    $ make
    $ make install
&lt;/code&gt;&lt;/pre&gt;&lt;h5 id=&#34;tor-hidden-service-konfigurieren&#34;&gt;Tor hidden service konfigurieren&lt;/h5&gt;
&lt;p&gt;Nun ist &lt;em&gt;Tor&lt;/em&gt; installiert und der &lt;em&gt;hidden service&lt;/em&gt; kann in der Datei
&lt;code&gt;~/etc/tor/torrc&lt;/code&gt; konfiguriert werden, wobei &lt;code&gt;USER&lt;/code&gt; natürlich durch den
eigenen Benutzernamen zu ersetzen ist:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    SocksPort 0
    Log notice file /home/USER/etc/tor/tor.log
    DataDirectory /home/USER/lib/tor
    HiddenServiceDir /home/USER/lib/tor/blog/
    HiddenServicePort 80 127.0.0.1:80
&lt;/code&gt;&lt;/pre&gt;&lt;h5 id=&#34;tor-auf-uberspace-aktivieren&#34;&gt;Tor auf Uberspace aktivieren&lt;/h5&gt;
&lt;p&gt;Damit Tor nicht wieder manuell gestartet werden muss, wenn der Dienst
sich beendet oder der Uberspace-Server neu gestartet wird bietet es sich
an Tor mit den
&lt;a href=&#34;https://wiki.uberspace.de/system:daemontools&#34;&gt;daemontools&lt;/a&gt; verwalten zu
lassen:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    $ cat &amp;lt;&amp;lt;__EOF__ &amp;gt; ~/etc/tor/run
    #!/bin/sh
    exec ~/bin/tor -f ~/etc/tor/torrc 2&amp;gt;&amp;amp;1
    __EOF__

    $ chmod +x ~/etc/tor/run
    $ ln -s ~/etc/tor ~/service/tor
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Tor kann nun mit &lt;code&gt;svc -u ~/service/tor&lt;/code&gt; gestartet, mit
&lt;code&gt;svc -d ~/service/tor&lt;/code&gt; beendet oder mit &lt;code&gt;svc -du ~/service/tor&lt;/code&gt; neu
gestartet werden.&lt;/p&gt;
&lt;h5 id=&#34;domain-konfigurieren&#34;&gt;Domain konfigurieren&lt;/h5&gt;
&lt;p&gt;Nach dem ersten Start mit &lt;code&gt;svc -u ~/service/tor&lt;/code&gt; wird die Datei
&lt;code&gt;~/lib/tor/blog/hostname&lt;/code&gt; angelegt, in der sich unsere .onion-URL, z.B.
&lt;code&gt;skt4odto3ycrngsv.onion&lt;/code&gt;, befindet:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    $ cat ~/lib/tor/blog/hostname 
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Bei mir wurde die Adresse &lt;code&gt;skt4odto3ycrngsv.onion&lt;/code&gt; ausgegeben.&lt;/p&gt;
&lt;p&gt;Nun müssen wir die Domain noch dem Uberspace-Webserver bekannt machen,
da Zugriffe sonst unterbunden werden:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    $ uberspace-add-domain -d skt4odto3ycrngsv.onion -w
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Eine erfolgreiche Rückmeldung sieht z.B. so aus:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    The webserver&amp;#39;s configuration is adapted; it will get active within at most 5 minutes.
    Now you can use the following records for your dns:
      A -&amp;gt; 95.143.172.208
      AAAA -&amp;gt; 2001:1a50:11:0:5f:8f:acd0:f3
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Das war es, schon kann eure Website als &lt;em&gt;hidden service&lt;/em&gt; aufgerufen
werden.&lt;/p&gt;
&lt;h5 id=&#34;subdomains&#34;&gt;Subdomains&lt;/h5&gt;
&lt;p&gt;Das Anlegen von Subdomains für den &lt;em&gt;hidden service&lt;/em&gt; ist analog zum
normalen &lt;a href=&#34;https://wiki.uberspace.de/domain:subdomain&#34;&gt;Anlegen von Subdomains auf
uberspace&lt;/a&gt;:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    $ ln -s /var/www/virtual/${USER}/html/blog /var/www/virtual/${USER}/blog.skt4odto3ycrngsv.onion
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Zusätzlich muss die Subdomain aber auch noch dem Webserver bekannt
gemacht werden:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    $ uberspace-add-domain -d blog.skt4odto3ycrngsv.onion -w
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Nun ist die Seite, die unter ~/html/blog abgelegt ist, auch unter
&lt;code&gt;blog.skt4odto3ycrngsv.onion&lt;/code&gt; aus dem Tor-Netzwerk aufrufbar.&lt;/p&gt;
&lt;h5 id=&#34;update-2017-05-31&#34;&gt;[Update 2017-05-31]&lt;/h5&gt;
&lt;p&gt;Im Schritt &lt;strong&gt;Tor auf Uberspace aktivieren&lt;/strong&gt; muss es natürlich
&lt;code&gt;~/etc/tor/torrc&lt;/code&gt; und nicht &lt;code&gt;~/etc/torrc&lt;/code&gt; heißen.&lt;/p&gt;
&lt;h5 id=&#34;update-2017-06-07&#34;&gt;[Update 2017-06-07]&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;Man kann immer das OpenSSL aus dem Pfad
&lt;code&gt;/package/host/localhost/openssl&lt;/code&gt; zum kompilieren benutzen, auch
wenn &lt;code&gt;openssl version -a&lt;/code&gt; etwas anderes ausgiebt, siehe &lt;a href=&#34;/2017/05/30/einen-tor-hidden-service-auf-uberspace-einrichten/#isso-504&#34;&gt;diesen
Kommentar&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Der Befehl zum Anlegen des daemons war fehlerhaft, siehe &lt;a href=&#34;/2017/05/30/einen-tor-hidden-service-auf-uberspace-einrichten/#isso-505&#34;&gt;diesen
Kommentar&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id=&#34;update-2017-06-10&#34;&gt;[Update 2017-06-10]&lt;/h5&gt;
&lt;p&gt;Bei einem Gespräch per Email mit Uberspace wegen eines anderen Themas
fiel mir auf, dass diese Aussage nicht ganz richtig ist. Wenn man direkt
ein Verzeichnis &lt;code&gt;/var/www/virtual/${USER}/skt4odto3ycrngsv.onion&lt;/code&gt;
anlegt, statt nach &lt;code&gt;~/html/&lt;/code&gt; zu linken, ist die Webseite ausschließlich
im dark web und nicht im clear web erreichbar. Ich bleibe aber trotzdem
bei meiner Empfehlung keinen shared hoster zu nutzen, wenn das eigene
Leben von der Anonymität abhängt.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>OSBN Chat</title>
      <link>/2017/05/24/osbn-chat/</link>
      <pubDate>Wed, 24 May 2017 00:00:00 +0000</pubDate>
      <guid>/2017/05/24/osbn-chat/</guid>
      <description>&lt;p&gt;Ich hatte die Idee, dass ein
&lt;a href=&#34;https://trashserver.net/was-ist-xmpp/&#34;&gt;XMPP&lt;/a&gt;-Chat für
&lt;a href=&#34;https://osbn.de/&#34;&gt;OSBN&lt;/a&gt;-Blogger und -Leser eine gute Möglichkeit wäre
sich abseits von Kommentarspalten über das OSBN und Blogartikel zu
unterhalten. Vor allem, da das &lt;a href=&#34;https://osbn.de/forum/&#34;&gt;OSBN-Forum&lt;/a&gt; kaum
Beachtung findet. Also habe ich &lt;a href=&#34;https://osbn.de/forum/viewtopic.php?f=2&amp;amp;t=1947&amp;amp;start=10#p2773&#34;&gt;im OSBN-Forum
vorgeschlagen&lt;/a&gt;
einen XMPP-MUC (Gruppenchat) einzurichten, auf den OSBN-Teilnehmer bei
Interesse hinweisen können.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://fryboyter.de/&#34;&gt;Anaximander&lt;/a&gt; wies darauf hin, dass er &lt;a href=&#34;https://osbn.de/forum/viewtopic.php?f=2&amp;amp;t=1818&#34;&gt;das
bereits versucht hatte&lt;/a&gt;
aber damit keinen Erfolg hatte und merkte an, dass er einen Chat bei
&lt;a href=&#34;http://matrix.org/&#34;&gt;Matrix&lt;/a&gt; bevorzugen würde. Er hat auch gleich einen
OSBN-Chat bei Matrix angelegt.&lt;/p&gt;
&lt;p&gt;Da ich aber eher XMPP bevorzuge habe ich einen XMPP-MUC angelegt. Es
gibt derzeit also zwei unbekannte OSBN-Chats, die ich hiermit publik
machen möchte um zu sehen ob sich ein OSBN-Chat etablieren lässt und
welches Protokoll sich durchsetzt.&lt;/p&gt;
&lt;h5 id=&#34;matrixriot&#34;&gt;Matrix/Riot&lt;/h5&gt;
&lt;p&gt;Der Matrix-Raum ist &lt;code&gt;#osbnde:matrix.org&lt;/code&gt; und kann entweder über den
&lt;a href=&#34;https://riot.im/app/#/room/#osbnde:matrix.org&#34;&gt;Web-Client&lt;/a&gt; oder ein
Programm, wie z.B. &lt;a href=&#34;https://about.riot.im/&#34;&gt;Riot&lt;/a&gt;, aufgerufen werden.&lt;/p&gt;
&lt;h5 id=&#34;xmpp&#34;&gt;XMPP/&amp;quot;Jabber&amp;quot;&lt;/h5&gt;
&lt;p&gt;Der XMPP-MUC ist
&lt;a href=&#34;https://join.jabber.network/#osbn@conference.trashserver.net?join&#34;&gt;osbn@conference.trashserver.net&lt;/a&gt;
und kann mit den gängigen Anwendungen genutzt werden:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://conversations.im/&#34;&gt;Conversations&lt;/a&gt; (Android)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://dino.im/&#34;&gt;Dino&lt;/a&gt; (Linux)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://gajim.org/&#34;&gt;Gajim&lt;/a&gt; (Windows, Linux)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://adium.im/&#34;&gt;Adium&lt;/a&gt; (Mac OS)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://chatsecure.org/&#34;&gt;ChatSecure&lt;/a&gt; (iOS)&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;update-2020-09-03&#34;&gt;[Update 2020-09-03]&lt;/h4&gt;
&lt;p&gt;Der Matrixraum scheint mittlerweile recht tot zu sein.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Kurztipp: Prosody für den mobilen Einsatz fit machen</title>
      <link>/2017/04/08/kurztipp-prosody-fuer-den-mobilen-einsatz-fit-machen/</link>
      <pubDate>Sat, 08 Apr 2017 00:00:00 +0000</pubDate>
      <guid>/2017/04/08/kurztipp-prosody-fuer-den-mobilen-einsatz-fit-machen/</guid>
      <description>&lt;p&gt;Ich habe auf meinem &lt;a href=&#34;https://uberspace.de/&#34;&gt;Uberspace&lt;/a&gt; einen XMPP-Server
mit &lt;a href=&#34;https://prosody.im/&#34;&gt;prosody&lt;/a&gt; eingerichtet und wollte diesen auch
für den Einsatz mit mobilen Clients optimieren. Natürlich kann man die
Liste der &lt;a href=&#34;https://xmpp.org/extensions&#34;&gt;XMPP extensions&lt;/a&gt; durchschauen
und sich relevante Erweiterungen heraussuchen. Ich habe mich aber für
einen pragmatischeren Ansatz entschieden.&lt;/p&gt;
&lt;p&gt;Da der Messenger &lt;a href=&#34;https://conversations.im/&#34;&gt;Conversations&lt;/a&gt; so ziemlich
den &lt;em&gt;state-of-the-art&lt;/em&gt; Mobile-XMPP-Client darstellt habe ich diesen
&lt;a href=&#34;https://github.com/iNPUTmice/ComplianceTester&#34;&gt;Conversations Compliance
Tester&lt;/a&gt; benutzt und
bisher nicht unterstützte Module, die ich für sinnvoll hielt, aktiviert.&lt;/p&gt;
&lt;p&gt;Dazu habe ich die kompilierte Version des Testers als .jar-Datei
heruntergeladen und ausgeführt. Ich empfehle den &lt;em&gt;Conversations
Compliance Tester&lt;/em&gt; nicht mit einem realen Account durchzuführen, sondern
dafür einen temporären Test-Account anzulegen. Dafür führt man auf dem
Server folgenden Befehl aus:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    prosodyctl adduser test@domain.tld
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Nun kann man mit der heruntergeladenen Datei auf dem lokalen Rechner den
Test starten:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;     java -jar ComplianceTester-0.1.jar test@domain.tld PASSWORT
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Danach kann man über die XEP-Nummer der fehlgeschlagenen Tests
&lt;a href=&#34;https://xmpp.org/extensions&#34;&gt;hier&lt;/a&gt; nachschauen ob man diese Funktion
für sinnvoll hält. Möchte man die Erweiterung aktivieren kann man bei
&lt;a href=&#34;https://prosody.im/doc/xeplist&#34;&gt;prosody&lt;/a&gt; nachschauen welches Modul man
dafür benötigt. Wahrscheinlich werden nicht alle Module, die man
verwenden möchte, mit der Standardinstallationvon Prosody ausgeliefert,
aber es ist ein leichtes die &lt;a href=&#34;https://prosody.im/doc/installing_modules&#34;&gt;gängigen Module
nachzuinstallieren&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Bei mir sieht es derzeit so aus:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    Use compliance suite &amp;#39;Advanced Server Core Compliance Suite&amp;#39; to test mdosch.de

    running XEP-0115: Entity Capabilities…      PASSED
    running XEP-0163: Personal Eventing Protocol…       PASSED
    passed 2/2

    Advanced Server Core Compliance Suite: PASSED


    Use compliance suite &amp;#39;Advanced Server IM Compliance Suite&amp;#39; to test mdosch.de

    running XEP-0115: Entity Capabilities…      PASSED
    running XEP-0163: Personal Eventing Protocol…       PASSED
    running Roster Versioning…      PASSED
    running XEP-0280: Message Carbons…      PASSED
    running XEP-0191: Blocking Command…     PASSED
    running XEP-0045: Multi-User Chat…      PASSED
    running XEP-0198: Stream Management…        PASSED
    running XEP-0313: Message Archive Management…       PASSED
    passed 8/8

    Advanced Server IM Compliance Suite: PASSED


    Use compliance suite &amp;#39;Advanced Server Mobile Compliance Suite&amp;#39; to test mdosch.de

    running XEP-0115: Entity Capabilities…      PASSED
    running XEP-0163: Personal Eventing Protocol…       PASSED
    running XEP-0198: Stream Management…        PASSED
    running XEP-0352: Client State Indication…      PASSED
    running XEP-0357: Push Notifications…       PASSED
    passed 5/5

    Advanced Server Mobile Compliance Suite: PASSED


    Use compliance suite &amp;#39;Conversations Compliance Suite&amp;#39; to test mdosch.de

    Server is Prosody 0.9.12
    running XEP-0115: Entity Capabilities…      PASSED
    running XEP-0163: Personal Eventing Protocol…       PASSED
    running Roster Versioning…      PASSED
    running XEP-0280: Message Carbons…      PASSED
    running XEP-0191: Blocking Command…     PASSED
    running XEP-0045: Multi-User Chat…      PASSED
    running XEP-0198: Stream Management…        PASSED
    running XEP-0313: Message Archive Management…       PASSED
    running XEP-0352: Client State Indication…      PASSED
    running XEP-0363: HTTP File Upload…     FAILED
    running XEP-0065: SOCKS5 Bytestreams (Proxy)…       FAILED
    running XEP-0357: Push Notifications…       PASSED
    running XEP-0368: SRV records for XMPP over TLS…        FAILED
    passed 10/13

    Conversations Compliance Suite: FAILED
&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    
    <item>
      <title>Kurztipp: Debian-Repositorys über https nutzen</title>
      <link>/2017/03/19/kurztipp-debian-repositorys-ueber-https-nutzen/</link>
      <pubDate>Sun, 19 Mar 2017 00:00:00 +0000</pubDate>
      <guid>/2017/03/19/kurztipp-debian-repositorys-ueber-https-nutzen/</guid>
      <description>&lt;p&gt;Über &lt;a href=&#34;https://debianforum.de/forum/viewtopic.php?f=37&amp;amp;t=163361&amp;amp;hilit=apt+transport+https&#34;&gt;diesen Eintrag im
debianforum&lt;/a&gt;
kam ich auf die Idee, soweit möglich, meine
&lt;a href=&#34;https://wiki.debianforum.de/Sources.list&#34;&gt;sources.list&lt;/a&gt; auf
&lt;a href=&#34;https://de.wikipedia.org/wiki/Hypertext_Transfer_Protocol_Secure&#34;&gt;https&lt;/a&gt;
umzustellen.&lt;/p&gt;
&lt;p&gt;Dazu benötigt man das Paket &lt;em&gt;apt-transport-https&lt;/em&gt;:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    # apt install apt-transport-https
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Nun kann man überprüfen, welches Repository über &lt;em&gt;https&lt;/em&gt; erreichbar ist:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    $ nmap -p 443 ftp.de.debian.org

    Starting Nmap 7.40 ( https://nmap.org ) at 2017-03-19 10:46 CET
    Nmap scan report for ftp.de.debian.org (141.76.2.4)
    Host is up (0.22s latency).
    PORT    STATE SERVICE
    443/tcp open  https

    Nmap done: 1 IP address (1 host up) scanned in 0.97 seconds

    $ nmap -p 443 security.debian.org

    Starting Nmap 7.40 ( https://nmap.org ) at 2017-03-19 10:46 CET
    Nmap scan report for security.debian.org (212.211.132.250)
    Host is up (0.21s latency).
    Other addresses for security.debian.org (not scanned): 195.20.242.89 212.211.132.32 217.196.149.233 2001:a78:5:1:216:35ff:fe7f:6ceb 2a02:16a8:dc41:100::233 2001:a78:5:0:216:35ff:fe7f:be4f
    rDNS record for 212.211.132.250: lobos.debian.org
    PORT    STATE  SERVICE
    443/tcp closed https

    Nmap done: 1 IP address (1 host up) scanned in 0.94 seconds
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;An diesen beiden Beispielen ist zu sehen, dass &lt;code&gt;ftp.de.debian.org&lt;/code&gt; über
&lt;em&gt;https&lt;/em&gt; verfügbar ist und &lt;code&gt;security.debian.org&lt;/code&gt; nicht.&lt;/p&gt;
&lt;p&gt;Nun kann man &lt;code&gt;ftp.de.debian.org&lt;/code&gt; von
&lt;a href=&#34;https://de.wikipedia.org/wiki/Hypertext_Transfer_Protocol&#34;&gt;http&lt;/a&gt; auf
&lt;em&gt;https&lt;/em&gt; umstellen:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    # sed -i s#http://ftp.de.debian.org#https://ftp.de.debian.org#g /etc/apt/sources.list
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Ich benutze in dem Fall &lt;code&gt;#&lt;/code&gt; statt &lt;code&gt;/&lt;/code&gt; als Trennzeichen bei &lt;em&gt;sed&lt;/em&gt; um
nicht die ganzen &lt;code&gt;/&lt;/code&gt; in den Adressen escapen zu müssen. ;-)&lt;/p&gt;
&lt;p&gt;Um auch security-updates per https zu beziehen muss auf den Server
&lt;code&gt;https://ftp.de.debian.org/debian-security&lt;/code&gt; gewechselt werden:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    # sed -i s#http://security.debian.org#https://ftp.de.debian.org/debian-security#g /etc/apt/sources.list
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Nun kann man sich fragen wozu man die Pakete über &lt;em&gt;https&lt;/em&gt; herunterladen
sollte wenn über die Prüfsummen
&lt;a href=&#34;https://de.wikipedia.org/wiki/Man-in-the-Middle-Angriff&#34;&gt;MITM&lt;/a&gt;-Angriffe
bereits verhindert werden. Es kann aber auch mal &lt;a href=&#34;https://lists.debian.org/debian-security-announce/2016/msg00316.html&#34;&gt;Bugs beim Überprüfen
der
Signaturen&lt;/a&gt;
geben, weshalb es nicht schaden kann auch den Transportweg abzusichern
und &lt;em&gt;MITM&lt;/em&gt;-Angriffe weiter zu erschweren.&lt;/p&gt;
&lt;h5 id=&#34;update-2017-09-05&#34;&gt;[Update 2017-09-05]&lt;/h5&gt;
&lt;p&gt;Ich hatte ganz vergessen nachzutragen, dass ich &lt;a href=&#34;/2017/03/19/kurztipp-debian-repositorys-ueber-https-nutzen/#isso-472&#34;&gt;in einem
Kommentar&lt;/a&gt;
darauf hingewiesen wurde, dass es die &lt;em&gt;security&lt;/em&gt; updates unter
&lt;code&gt;https://ftp.de.debian.org/debian-security&lt;/code&gt; auch über &lt;em&gt;https&lt;/em&gt; gibt. Ich
habe es nun nachgetragen.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Kurztipp: Verbindungen mit proxychains durch Proxyserver leiten</title>
      <link>/2017/03/19/kurztipp-verbindungen-mit-proxychains-durch-proxyserver-leiten/</link>
      <pubDate>Sun, 19 Mar 2017 00:00:00 +0000</pubDate>
      <guid>/2017/03/19/kurztipp-verbindungen-mit-proxychains-durch-proxyserver-leiten/</guid>
      <description>&lt;p&gt;Manchmal ist es nötig Verbindungen eines Programmes über einen Proxy zu
leiten. Einige Programme bieten keine Konfiguration zur Nutzung eines
Proxys an, oder man möchte die Verbindungen nur gelegentlich durch einen
Proxy leiten und deshalb nicht ständig die Konfiguration editieren.&lt;/p&gt;
&lt;p&gt;Bei
&lt;a href=&#34;https://askubuntu.com/questions/210410/how-to-run-youtube-dl-through-proxy-server/311445&#34;&gt;askubuntu&lt;/a&gt;
fand ich einen Hinweis auf das Programm
&lt;a href=&#34;http://proxychains.sourceforge.net/&#34;&gt;proxychains&lt;/a&gt;, das genau das tut.&lt;/p&gt;
&lt;h5 id=&#34;installation&#34;&gt;Installation&lt;/h5&gt;
&lt;p&gt;Da &lt;em&gt;proxychains&lt;/em&gt; in den Debian-Quellen vorhanden ist gibt es
hinsichtlich der Installation nicht viel zu sagen:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    apt install proxychains
&lt;/code&gt;&lt;/pre&gt;&lt;h5 id=&#34;konfiguration&#34;&gt;Konfiguration&lt;/h5&gt;
&lt;p&gt;Standardmäßig benutzt &lt;em&gt;proxychains&lt;/em&gt; &lt;a href=&#34;https://blog.torproject.org/&#34;&gt;Tor&lt;/a&gt;.
Möchte man die Konfiguration anpassen kann man dies in der Datei
&lt;code&gt;/etc/proxychains.conf&lt;/code&gt; global für alle Benutzer des Systems tun. Um
benutzerspezifische Konfigurationen anzulegen kopiert man die globale
Konfigurationsdatei nach &lt;code&gt;~/.proxychains/proxychains.conf&lt;/code&gt;.&lt;/p&gt;
&lt;h5 id=&#34;benutzung&#34;&gt;Benutzung&lt;/h5&gt;
&lt;p&gt;Um die Verbindungen eines Programms durch den konfigurierten Proxy zu
leiten stellt man dem Programmaufruf einfach &lt;code&gt;proxychains&lt;/code&gt; voran:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    proxychains curl -L ip.mdosch.de
&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    
    <item>
      <title>Ein Tor-Relay auf Uberspace einrichten</title>
      <link>/2017/03/17/ein-tor-relay-auf-uberspace-einrichten/</link>
      <pubDate>Fri, 17 Mar 2017 00:00:00 +0000</pubDate>
      <guid>/2017/03/17/ein-tor-relay-auf-uberspace-einrichten/</guid>
      <description>&lt;h5 id=&#34;intention&#34;&gt;Intention&lt;/h5&gt;
&lt;p&gt;Da ich in letzter Zeit nach dem
&lt;a href=&#34;https://www.kuketz-blog.de/das-3-browser-konzept-not-my-data-teil2/&#34;&gt;3-Browser-Prinzip&lt;/a&gt;
surfe, nutze ich nun für alltägliches Surfen ohne LogIn den
&lt;a href=&#34;https://www.torproject.org/projects/torbrowser.html.en&#34;&gt;Tor-Browser&lt;/a&gt;
und wollte nun dem &lt;a href=&#34;https://www.torproject.org/&#34;&gt;Tor&lt;/a&gt;-Netzwerk etwas
zurückgeben.&lt;/p&gt;
&lt;p&gt;Die meisten dürften &lt;em&gt;Tor&lt;/em&gt; kennen, aber hier noch mal eine kurze
Beschreibung von
&lt;a href=&#34;https://de.wikipedia.org/wiki/Tor_%28Netzwerk%29&#34;&gt;Wikipedia&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Tor ist ein Netzwerk zur Anonymisierung von Verbindungsdaten. Es wird
für TCP-Verbindungen eingesetzt und kann beispielsweise im Web für
Browsing, Instant Messaging, IRC, SSH, E-Mail oder P2P benutzt werden.
Tor schützt seine Nutzer vor der Analyse des Datenverkehrs. Es basiert
auf der Idee des Onion-Routings.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h5 id=&#34;anleitungen&#34;&gt;Anleitungen&lt;/h5&gt;
&lt;p&gt;Im &lt;a href=&#34;https://wiki.uberspace.de/cool&#34;&gt;Wiki von Uberspace&lt;/a&gt; fand ich eine
Anleitung von
&lt;a href=&#34;https://debianer.puppis.uberspace.de/2014/03/tor-relay-auf-dem-uberspace/&#34;&gt;Debianer&lt;/a&gt;.
Leider funktionierte dieses HowTo für mich nicht. Toast (ein Tool zum
Kompilieren von Anwendungen im Userspace) beschwerte sich über die
fehlende Bibliothek &lt;em&gt;libevent&lt;/em&gt;. Nachdem ich &lt;em&gt;libevent&lt;/em&gt; per toast
installiert hatte meldete toast beim Installieren von &lt;em&gt;Tor&lt;/em&gt; &lt;em&gt;libevent&lt;/em&gt;
wäre vorhanden, könnte aber nicht gelinkt werden.&lt;/p&gt;
&lt;p&gt;Ich fand im Netz eine weitere Anleitung zur Installation von &lt;em&gt;Tor&lt;/em&gt; auf
Uberspace von
&lt;a href=&#34;https://flambda.de/2013/06/18/tor-node-on-uberspace/&#34;&gt;f(Λ)&lt;/a&gt;, nach der
&lt;em&gt;libevent&lt;/em&gt; und &lt;em&gt;Tor&lt;/em&gt; einfach ohne toast mit dem altbekannten
&lt;a href=&#34;http://www.linux-community.de/Internal/Artikel/Print-Artikel/LinuxUser/2004/03/Programme-unter-Linux-kompilieren&#34;&gt;Dreisatz&lt;/a&gt;
installiert wurden.&lt;/p&gt;
&lt;h5 id=&#34;mein-vorgehen&#34;&gt;Mein Vorgehen&lt;/h5&gt;
&lt;h3 id=&#34;tor-installieren&#34;&gt;Tor installieren&lt;/h3&gt;
&lt;p&gt;Man loggt sich auf seinem Uberspace ein, erstellt einen temporären
Ordner und installiert &lt;em&gt;libevent&lt;/em&gt; und &lt;em&gt;Tor&lt;/em&gt; (bitte die aktuelle Version
von Tor &lt;a href=&#34;https://www.torproject.org/download/download.html.en&#34;&gt;hier&lt;/a&gt;
beziehen):&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    mkdir ~/tmp
    cd ~/tmp
    git clone git://levent.git.sourceforge.net/gitroot/levent/levent
    cd levent
    ./autogen.sh
    ./configure --prefix=$HOME
    make
    make install
    cd ..
    wget https://www.torproject.org/dist/tor-X.X.X.X.tar.gz
    tar xvf https://www.torproject.org/dist/tor-X.X.X.X.tar.gz
    cd tor-X.X.X.X
    ./configure --prefix=$HOME
    make
    make install
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;tor-konfigurieren&#34;&gt;Tor konfigurieren&lt;/h3&gt;
&lt;p&gt;Lief die Installation ohne Fehler kann man nun den Ordner löschen und
sich anschließend an die Konfiguration machen:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    cd ~
    rm -rf tmp
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Eine Beispielkonfiguration mit Erläuterungen findet ihr nun unter
&lt;code&gt;~/etc/tor/torrc.sample&lt;/code&gt;, ich habe als Basis die Konfiguration von
&lt;a href=&#34;https://debianer.puppis.uberspace.de/2014/03/tor-relay-auf-dem-uberspace/&#34;&gt;Debianer&lt;/a&gt;
genommen und für mich angepasst und unter &lt;code&gt;~/etc/tor/torrc&lt;/code&gt; gespeichert:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    SocksPort 0
    Log notice file /home/USER/etc/tor.log
    DataDirectory /home/USER/lib/tor
    ControlPort PORT1
    CookieAuthentication 1
    ORPort PORT2
    Nickname NICKNAME
    RelayBandwidthRate 300 KB
    RelayBandwidthBurst 600 KB
    AccountingMax 10 GB
    AccountingStart month 1 02:00
    ContactInfo Mail
    DirPort PORT3
    ExitPolicy reject *:*
    DisableDebuggerAttachment 0
    AvoidDiskWrites 1
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Die Zeile &lt;code&gt;ExitPolicy reject *:*&lt;/code&gt; ist immens wichtig, da diese festlegt,
dass ihr nicht als Exit-Node fungiert.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Richtet keinen Exit-Node bei Uberspace ein!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;USER&lt;/code&gt; ist durch euren Benutzernamen bei Uberspace auszutauschen und
&lt;code&gt;NICKNAME&lt;/code&gt; durch einen frei wählbaren Namen für das &lt;em&gt;Tor&lt;/em&gt;-Netzwerk. Bei
&lt;code&gt;PORT1&lt;/code&gt;, &lt;code&gt;PORT2&lt;/code&gt; und &lt;code&gt;PORT3&lt;/code&gt; tragt ihr Ports ein, die ihr euch bei
Uberspace &lt;a href=&#34;https://blog.uberspace.de/mehr-fur-selbermacher/&#34;&gt;mittlerweile selbst
freischalten&lt;/a&gt; könnt.
Dafür führt ihr einfach dreimal folgenden Befehl aus und notiert euch
den Port:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    uberspace-add-port -p tcp --firewall
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;tor-auf-uberspace-aktivieren&#34;&gt;Tor auf Uberspace aktivieren&lt;/h3&gt;
&lt;p&gt;Nun kann man &lt;em&gt;Tor&lt;/em&gt; über &lt;code&gt;exec ~/bin/tor -f ~/etc/tor/torrc&lt;/code&gt; starten,
aber sobald man den Befehl abbricht oder sich ausloggt wird der
&lt;em&gt;Tor&lt;/em&gt;-Service beendet. Man kann sich hier mit Tools wie
&lt;a href=&#34;https://tmux.github.io/&#34;&gt;tmux&lt;/a&gt; oder
&lt;a href=&#34;https://www.gnu.org/software/screen/&#34;&gt;screen&lt;/a&gt; behelfen, praktischer ist
es aber &lt;em&gt;Uberspace&lt;/em&gt; dafür sorgen zu lassen, dass &lt;em&gt;Tor&lt;/em&gt; läuft:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    cat &amp;lt;&amp;lt;__EOF__ &amp;gt; ~/etc/tor/run
    #!/bin/sh\nexec ~/bin/tor -f ~/etc/torrc 2&amp;gt;&amp;amp;1
    __EOF__
    chmod +x ~/etc/tor/run
    ln -s ~/etc/tor ~/service/tor
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Theoretisch sollte jetzt schon alles laufen, aber es kann nicht schaden
zur Sicherheit noch eine Aktivierung hinterherzuschicken:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    svc -u ~/service/tor
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;tor-node-überprüfen&#34;&gt;Tor-Node überprüfen&lt;/h3&gt;
&lt;p&gt;Natürlich möchte man nun überprüfen, ob der Torknoten auch erfolgreich
eingerichtet wurde und Teil des Netwerks ist. Hierzu beobachtet man erst
mal in das Logfile:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    tail -f ~/etc/tor.log
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Wenn die letzten Zeilen in etwa so aussehen scheint es schon mal ganz
gut zu laufen:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    Mar 17 18:32:38.000 [notice] Bootstrapped 0%: Starting
    Mar 17 18:32:42.000 [notice] Bootstrapped 80%: Connecting to the Tor network
    Mar 17 18:32:43.000 [notice] Bootstrapped 85%: Finishing handshake with first hop
    Mar 17 18:32:43.000 [notice] Bootstrapped 90%: Establishing a Tor circuit
    Mar 17 18:32:45.000 [notice] Tor has successfully opened a circuit. Looks like client functionality is working.
    Mar 17 18:32:45.000 [notice] Bootstrapped 100%: Done
    Mar 17 18:32:45.000 [notice] Now checking whether ORPort 95.143.172.208:64795 and DirPort 95.143.172.208:61540 are reachable... (this may take up to 20 minutes -- look for log messages indicating success)
    Mar 17 18:32:45.000 [notice] Self-testing indicates your ORPort is reachable from the outside. Excellent.
    Mar 17 18:32:45.000 [notice] Self-testing indicates your DirPort is reachable from the outside. Excellent. Publishing server descriptor.
    Mar 17 18:32:46.000 [notice] Performing bandwidth self-test...done.
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Man kann dann auch bei &lt;em&gt;Tor&lt;/em&gt; selbst überprüfen &lt;a href=&#34;https://exonerator.torproject.org&#34;&gt;ob man Teil des
Netzwerks ist&lt;/a&gt;. Man sollte dabei aber
nicht zu ungeduldig sein. Bei mir dauerte es ca. eine Stunde bis ich
dort gelistet wurde.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;[Update 2017-03-18]&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Nachdem euer Middle-Node ein paar Stunden läuft könnt ihr auch Infos
über die Verbindungen und den Traffic in &lt;code&gt;~/etc/tor.log&lt;/code&gt; sehen:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    Mar 18 12:32:42.000 [notice] Heartbeat: Tor&amp;#39;s uptime is 17:59 hours, with 8 circuits open. I&amp;#39;ve sent 147.39 MB and received 171.18 MB.
    Mar 18 12:32:42.000 [notice] Heartbeat: Accounting enabled. Sent: 150.26 MB, Received: 183.90 MB, Used: 186.87 MB / 10.00 GB, Rule: max. The current accounting interval ends on 2017-04-01 02:00:00, in 13 days 12:27 hours.
    Mar 18 12:32:42.000 [notice] Circuit handshake stats since last time: 14/14 TAP, 66/66 NTor.
    Mar 18 12:32:42.000 [notice] Since startup, we have initiated 0 v1 connections, 0 v2 connections, 0 v3 connections, and 520 v4 connections; and received 1 v1 connections, 0 v2 connections, 0 v3 connections, and 775 v4 connections.
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;[Update 2017-03-19]&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Gerade habe ich entdeckt, dass man den Status auch mit
&lt;a href=&#34;https://atlas.torproject.org&#34;&gt;Atlas&lt;/a&gt; überprüfen kann. Dort bekommt man
auch ein paar interessante Statistiken zu sehen. Um euren eigenen Server
zu finden müsst ihr einfach im Suchfeld rechts oben den Namen, den ihr
für das Tor-Netzwerk gewählt habt, oder eure IP eingeben.&lt;/p&gt;
&lt;p&gt;Wenn ihr euch wundert, warum euer Knoten zu Beginn wenig Traffic
generiert, so liegt dies nicht nur am vergebenen Limit, sondern auch am
&lt;a href=&#34;https://blog.torproject.org/blog/lifecycle-of-a-new-relay&#34;&gt;Lebenszyklus eines
Tor-Knotens&lt;/a&gt;.
Euer Tor-Knoten muss also erst mal ein paar Tage &lt;a href=&#34;https://metrics.torproject.org/glossary.html#consensus-weight&#34;&gt;concensus
weight&lt;/a&gt;
sammeln, was ich in etwa als Reputation interpretiere.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Zufällige MAC-Adresse mit dem NetworkManager</title>
      <link>/2017/03/14/zufaellige-mac-adresse-mit-dem-networkmanager/</link>
      <pubDate>Tue, 14 Mar 2017 00:00:00 +0000</pubDate>
      <guid>/2017/03/14/zufaellige-mac-adresse-mit-dem-networkmanager/</guid>
      <description>&lt;p&gt;Heute habe ich gelernt, dass man den
&lt;a href=&#34;https://wiki.ubuntuusers.de/NetworkManager/&#34;&gt;NetworkManager&lt;/a&gt; so
konfigurieren kann, dass er &lt;a href=&#34;https://blogs.gnome.org/thaller/2016/08/26/mac-address-spoofing-in-networkmanager-1-4-0/&#34;&gt;gefälschte MAC-Adressen
verwendet&lt;/a&gt;.&lt;br&gt;
Wozu ist das gut? Ist WLAN in mobilen Geräten aktiviert scannen diese
ständig nach Netzwerken und teilen diesen die MAC-Adresse mit, wodurch
man getrackt werden kann. Lt. dem verlinkten Blogpost auf &lt;em&gt;gnome.org&lt;/em&gt;
wird beim Scannen bereits eine gefälschte MAC verwendet, aber wer sich
häufig in HotSpots anmeldet ist spätestens nach dem Aufbau der
Verbindung identifizierbar.&lt;/p&gt;
&lt;p&gt;Wie in dem Post beschrieben kann man den NetworkManager so
konfigurieren, dass bei jeder neuen Verbindung eine Zufalls-MAC
verwendet wird. Dafür muss man die Datei &lt;code&gt;NetworkManager.conf&lt;/code&gt;
editieren. Bei Debian befindet sich diese hier:
&lt;code&gt;/etc/NetworkManager/NetworkManager.conf&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Man fügt der Datei folgendes hinzu:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    [device-mac-randomization]
    # &amp;#34;yes&amp;#34; is already the default for scanning
    wifi.scan-rand-mac-address=yes

    [connection-mac-randomization]
    ethernet.cloned-mac-address=random
    wifi.cloned-mac-address=random
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Die Änderung wird wirksam sobald man den Netzwerkservice neu startet:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    # service network-manager restart
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Möchte man in einem Netzwerk immer dieselbe MAC nutzen, z.B. damit der
Router weiterhin trotz DHCP die richtige IP-Adresse zuweist kann man
dies in der GUI des NetworkManagers einstellen, indem man die gewünschte
MAC bei den Einstellungen des Netzwerks unter &lt;strong&gt;Identität → Duplizierte
Adresse&lt;/strong&gt; einträgt:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://files.mdosch.de/2017-03/nm-mac.png&#34;&gt;&lt;img src=&#34;https://files.mdosch.de/2017-03/nm-mac.png&#34; alt=&#34;NetworkManager MAC
spoofing&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h5 id=&#34;update-2017-07-05&#34;&gt;[Update 2017-07-05]&lt;/h5&gt;
&lt;p&gt;Ich hatte ganz vergessen, dass ich hier noch Updates einpflegen wolle,
was ich nun nachhole.&lt;/p&gt;
&lt;p&gt;In einem
&lt;a href=&#34;/2017/03/14/zufaellige-mac-adresse-mit-dem-networkmanager/#isso-458&#34;&gt;Kommentar&lt;/a&gt;
wurde ich darauf hingewiesen, dass man durch einen weiteren Eintrag in
der Datei &lt;code&gt;NetworkManager.conf&lt;/code&gt; verhindern kann, dass der Hostname im
Netzwerk via DHCP bekannt wird:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    [ipv4]
     dhcp-send-hostname=false
     dhcp-hostname=

    [ipv6]
     dhcp-send-hostname=false
     dhcp-hostname=
     ip6-privacy=2
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;In einem weiteren
&lt;a href=&#34;/2017/03/14/zufaellige-mac-adresse-mit-dem-networkmanager/#isso-461&#34;&gt;Kommentar&lt;/a&gt;
wurde ein &lt;a href=&#34;https://www.golem.de/news/privatsphaere-verschleiern-der-mac-adresse-bei-wlan-ist-fast-nutzlos-1703-126709.html&#34;&gt;Link zu
Golem&lt;/a&gt;
geposted, der besagt, dass dies derzeit wohl nur von den Modulen
&lt;em&gt;iwlwifi&lt;/em&gt; und &lt;em&gt;brcfmac&lt;/em&gt; unterstützt wird:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Der Linux-Kernel unterstützt die Funktion seit Version 3.18.
Allerdings müssen auch die entsprechenden Treiber angepasst werden.
Bislang sind das die Module iwlwifi seit Version Linux 3.18 und
brcfmac seit Linux 4.5.&lt;/p&gt;
&lt;/blockquote&gt;
</description>
    </item>
    
    <item>
      <title>Git-Repository von GitHub zu Uberspace umziehen</title>
      <link>/2017/03/11/git-repository-von-github-zu-uberspace-umziehen/</link>
      <pubDate>Sat, 11 Mar 2017 00:00:00 +0000</pubDate>
      <guid>/2017/03/11/git-repository-von-github-zu-uberspace-umziehen/</guid>
      <description>&lt;p&gt;Derzeit wird ja viel über die &lt;a href=&#34;https://www.heise.de/newsticker/meldung/GitHub-eckt-mit-neuen-Nutzungsbedingungen-an-3647980.html&#34;&gt;neuen Nutzungsbedingungen von
GitHub&lt;/a&gt;
diskutiert. Ich gebe zu, ich habe mich nicht mit den Details der
Änderungen befasst und weiß nicht ob mich diese wirklich betreffen
würden. Ich nutze GitHub nur um meinen &lt;a href=&#34;/2014/09/07/blog-mdosch-de-jetzt-statisch/&#34;&gt;statischen
Blog&lt;/a&gt; zwischen meinen
Rechnern zu synchronisieren.&lt;/p&gt;
&lt;p&gt;Nun habe ich diese Diskussion aber zum Anlass genommen zu überdenken ob
es denn wirklich nötig ist meinen Blog über einen externen Dienstleister
zu synchronisieren und das Repository öffentlich bereitzustellen und die
Antwort lautete beide Male &amp;quot;Nein&amp;quot;.&lt;/p&gt;
&lt;p&gt;Nun habe ich festgestellt, dass &lt;a href=&#34;https://wiki.uberspace.de/development:git#git_als_server&#34;&gt;Uberspace bereits Git
anbietet&lt;/a&gt; und
die Einrichtung ein Kinderspiel ist:&lt;/p&gt;
&lt;p&gt;Man loggt sich per SSH auf Uberspace ein und erstellt einen Ordner mit
der Endung .git, in diesem Beispiel blog.git und führt in diesem
&lt;code&gt;git init --bare&lt;/code&gt; aus:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    mkdir ~/blog.git
    cd ~/blog.git
    git init --bare
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Mein Blog liegt lokal unter &lt;code&gt;~/www/blog&lt;/code&gt;. Um dieses Repository zukünftig
mit meinem Uberspace statt mit GitHub zu synchronisieren reichte es aus
in der Datei &lt;code&gt;~/www/blog/.git/config&lt;/code&gt; im Unterpunkt &lt;code&gt;[remote &amp;quot;origin&amp;quot;]&lt;/code&gt;
die Zeile beginnend mit &lt;code&gt;url =&lt;/code&gt; folgendermaßen abzuändern:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    url = ssh://USER@DOMAIN/home/USER/blog.git/
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;code&gt;USER&lt;/code&gt; ist natürlich durch den eigenen Benutzernamen bei Uberspace und
&lt;code&gt;DOMAIN&lt;/code&gt; durch die eigene Domain zu ersetzen.&lt;/p&gt;
&lt;p&gt;Anschließend kann man mit einem &lt;code&gt;git push&lt;/code&gt; die Daten in das Repository
übertragen.&lt;/p&gt;
&lt;p&gt;Wer möchte kann natürlich auch bei Uberspace sein &lt;a href=&#34;https://wiki.uberspace.de/development:git#oeffentlich_bereitstellen&#34;&gt;Repository öffentlich
bereitstellen&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Kurztipp: SSH config Datei</title>
      <link>/2017/03/05/kurztipp-ssh-config-datei/</link>
      <pubDate>Sun, 05 Mar 2017 00:00:00 +0000</pubDate>
      <guid>/2017/03/05/kurztipp-ssh-config-datei/</guid>
      <description>&lt;p&gt;Manchmal stolpert man über Vereinfachungen für Dienste bzw. Programme,
die man häufig nutzt und die deren Nutzung deutlich vereinfachen. Häufig
fragt man sich dann, wie man bisher ohne diese Kniffe auskommen konnte
und warum noch nicht früher darauf aufmerksam wurde. So erging es mir
heute als ich wegen einer &lt;a href=&#34;https://debianforum.de/forum/viewtopic.php?f=30&amp;amp;t=164453&#34;&gt;Frage im
Debianforum&lt;/a&gt;
auf die Seite von &lt;a href=&#34;http://arachnoid.com/android/SSHelper/&#34;&gt;SSHelper&lt;/a&gt;
fand und dort folgendes las:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;But the configuration-file method shown earlier is preferred, because
it prevents the possibility of typographical errors and (maybe)
carpal-tunnel syndrome from too much typing.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Die erwähnte Methode ist es Server, Benutzer und Port in der Datei
&lt;code&gt;~/.ssh/config&lt;/code&gt; anzugeben unter einem frei wählbaren Namen anzugeben:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    Host beispiel
        HostName example.com
        Port 2222
        User nutzer
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;In diesem Beispiel könnte man sich per &lt;code&gt;ssh beispiel&lt;/code&gt; statt per
&lt;code&gt;ssh -p 2222 nutzer@example.com&lt;/code&gt; mit dem Server verbinden. Besonders in
Verbindung mit Programmen wie
&lt;a href=&#34;https://wiki.ubuntuusers.de/rsync/&#34;&gt;rsync&lt;/a&gt; ist dies eine willkommene
Erleichterung:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;rsync -a /path/to/file beispiel:/remote/path/&lt;/code&gt; ist deutlich angenehmer
als
&lt;code&gt;rsync -ae &amp;quot;ssh -p 2222&amp;quot; /path/to/file nutzer@example.com:/remote/path/&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Natürlich können noch &lt;a href=&#34;http://nerderati.com/2011/03/17/simplify-your-life-with-an-ssh-config-file/&#34;&gt;weitere
Einstellungen&lt;/a&gt;
in dieser Datei getätigt werden.&lt;/p&gt;
&lt;p&gt;Ich frage mich, warum ich das nicht früher entdeckt habe. :-)&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Kurztipp: fstrim als systemd service</title>
      <link>/2017/02/19/kurztipp-fstrim-als-systemd-service/</link>
      <pubDate>Sun, 19 Feb 2017 00:00:00 +0000</pubDate>
      <guid>/2017/02/19/kurztipp-fstrim-als-systemd-service/</guid>
      <description>&lt;p&gt;Bisher habe ich den &lt;a href=&#34;https://wiki.ubuntuusers.de/SSD/TRIM/&#34;&gt;TRIM&lt;/a&gt;-Befehl
für SSDs immer mal wieder manuell ausgeführt, aber vor ein paar Tagen
sah ich in einem hilfreichen Blogpost, dass man das &lt;a href=&#34;https://got-tty.org/fedora-fstrim-als-service-via-systemd&#34;&gt;von systemd
erledigen lassen
kann&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Unter Debian ist jedoch erst ein &lt;a href=&#34;https://wiki.debian.org/SSDOptimization#Mounting_SSD_filesystems&#34;&gt;zusätzlicher
Befehl&lt;/a&gt;
nötig um die entsprechenden Dateien an die richtige Stelle zu kopieren:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    # cp /usr/share/doc/util-linux/examples/fstrim.{service,timer} /etc/systemd/system
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Anschließend lässt sich der service per systemd aktivieren:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    # systemctl enable fstrim.timer
    Created symlink /etc/systemd/system/timers.target.wants/fstrim.timer → /etc/systemd/system/fstrim.timer.
&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    
    <item>
      <title>Netflix und der Firefox unter Linux</title>
      <link>/2017/02/03/netflix-und-der-firefox-unter-linux/</link>
      <pubDate>Fri, 03 Feb 2017 00:00:00 +0000</pubDate>
      <guid>/2017/02/03/netflix-und-der-firefox-unter-linux/</guid>
      <description>&lt;p&gt;Seit Version 49
&lt;a href=&#34;https://www.soeren-hentzschel.at/firefox/firefox-49-netflix-ohne-silverlight-nun-auch-fuer-linux-nutzer/&#34;&gt;erfüllt&lt;/a&gt;
der Firefox sämtliche Anforderungen um Netflix auch unter Linux nutzen
zu können. Mittlerweile nutze ich unter Debian Testing Firefox 51 (aus
unstable) und ich werde immer noch per Browserweiche auf eine
&lt;a href=&#34;https://help.netflix.com/de/node/23742&#34;&gt;Seite&lt;/a&gt; weitergeleitet, die mir
erzählt, dass ich die Voraussetzungen nicht erfülle und auflistet welche
Kombinationen funktionieren.&lt;/p&gt;
&lt;p&gt;Die Kombination &lt;em&gt;Firefox &amp;gt;49 / Linux&lt;/em&gt; funktioniert aber. Es gibt
technisch keine Probleme, man kann Netflix nämlich auch unter Linux mit
dem Firefox nutzen wenn man den Browserstring folgendermaßen
manipuliert:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    Linux / Chrome 53: Mozilla/5.0 (X11; Ubuntu; Linux x86_64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/53.0.2785.34 Safari/537.36
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Dieser String ist bei &lt;code&gt;about:config&lt;/code&gt; für die Variable
&lt;code&gt;general.useragent.override&lt;/code&gt; einzutragen.&lt;/p&gt;
&lt;p&gt;Da sich nichts zu bessern scheint habe ich mich mal an den Support-Chat
gewandt und ein freundlicher Mitarbeiter (oder ein Chat-Bot, aufgrund
der sehr generischen Aussagen bin ich mir da nicht so sicher) nahm sich
meiner an.&lt;/p&gt;
&lt;p&gt;Es kamen lustige Aussagen, dass Netflix offiziell kein Linux
unterstützt, da dies aufgrund der offenen &lt;del&gt;Architektur&lt;/del&gt; Struktur
schwierig sei (?!)
&lt;a href=&#34;/2017/02/03/netflix-und-der-firefox-unter-linux/#1&#34;&gt;[1]&lt;/a&gt;, dass man
aber keine speziellen Behandlungen für Linux-Nutzer hinterlegt hätte
usw. Die letzte Aussage ist ein Witz wenn ich daran denke, dass Netflix
funktioniert sobald ich den Browserstring manipuliere, aber wenn ich
dies nicht tue auf eine andere Seite umleitet. Eine solche Browserweiche
ist doch genau das, was Netflix laut Aussage dieses Support-Mitarbeiters
(Chatbots?) nicht tut.&lt;/p&gt;
&lt;p&gt;Ich habe versucht das Dilemma zu erklären, habe als Beispiel auch oben
genannten Browserstring in den Chat kopiert und erklärt, dass es damit
auch im Firefox funktioniert und Netflix also eine Browserweiche
eingebaut haben muss, die sie doch bitte entfernen sollen. Darauf kam
eine Erklärung über die Probleme Linux zu unterstützen, die man
wohlwollend noch als wirr bezeichnen kann.
&lt;a href=&#34;/2017/02/03/netflix-und-der-firefox-unter-linux/#2&#34;&gt;[2]&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Immerhin wurde mir auf meine Bitte die genannten Beschreibungen und
technischen Details doch bitte an eine technische Abteilung
weiterzuleiten, die vermutlich versteht worum es geht positiv
beantwortet. Hoffentlich passiert dies wirklich und diese unnötige
Beschränkung auf Google Chrome oder nervige Manipulation des
Browserstrings sind bald passé.&lt;/p&gt;
&lt;h5 id=&#34;update&#34;&gt;Update&lt;/h5&gt;
&lt;p&gt;Wenige Minuten nach Erstellung dieses Blogposts trudelt auch das
Transkript per Email ein. Hier zwei nette Auszüge:&lt;/p&gt;
&lt;p&gt;[1]&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;[...] Wir blockieren Streaming auf Linux-Computern nicht aktiv,
aber wir können nicht dafür garantieren, dass es zuverlässig
funktioniert.Aufgrund der offenen Struktur von Linux haben wir keine
Lösungen für Streaming-Probleme, die auf diesem Betriebssystem
auftreten. [...]&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;[2]&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Netflix hat an sich spezielle Wege, um an sein Ziel zu kommen. Diese
Wege werden immer gegangen, um den Kunden die Chance zu geben Netflix
zu schauen. Bei Linux ist das aber so, dass die Wege nicht immer
gleich sind. Somit sammeln sich im Hintergrund die Daten an. Sobald
Linux dann aber plötzlich einen anderen Weg geht, kann Netflix die
Daten nicht mehr abrufen bzw. wiedergeben, die es benötigt. Das ist
der Grund warum das auf dem Firefox an sich nicht möglich ist.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h5 id=&#34;update-2017-05-14&#34;&gt;Update [2017-05-14]&lt;/h5&gt;
&lt;p&gt;Ich habe nachgetragen wo der UserAgent-String beim Firefox einzutragen
ist. Danke an
&lt;a href=&#34;/2017/02/03/netflix-und-der-firefox-unter-linux/#isso-482&#34;&gt;Anonym&lt;/a&gt; für
den Hinweis.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Quickstart firejail</title>
      <link>/2016/12/02/quickstart-firejail/</link>
      <pubDate>Fri, 02 Dec 2016 00:00:00 +0000</pubDate>
      <guid>/2016/12/02/quickstart-firejail/</guid>
      <description>&lt;p&gt;Ich hatte schon einmal &lt;a href=&#34;https://firejail.wordpress.com/&#34;&gt;firejail&lt;/a&gt;, ein
Programm um Anwendungen in
&lt;a href=&#34;http://www.itwissen.info/definition/lexikon/Sandbox.html&#34;&gt;Sandboxes&lt;/a&gt;
vom restlichen System abzuschotten, installiert und damit
herumexperimentiert. Aber aus Gründen, an die ich mich nicht mehr
erinnere, habe ich es nie wirklich in mein System integriert.&lt;/p&gt;
&lt;p&gt;In letzter Zeit ist mir &lt;em&gt;firejail&lt;/em&gt; wieder durch Blogeinträge oder
&lt;a href=&#34;https://www.kuketz-blog.de/firejail-linux-haerten-teil4/&#34;&gt;diesen&lt;/a&gt; Teil
einer interessanten Artikelserie ins Gedächtnis gerufen worden und ich
werde es nun für so viele Programme wie möglich nutzen.&lt;/p&gt;
&lt;h5 id=&#34;installation&#34;&gt;Installation&lt;/h5&gt;
&lt;p&gt;Unter Debian ist &lt;em&gt;firejail&lt;/em&gt; ab &lt;em&gt;Stretch&lt;/em&gt; enthalten, bzw. für &lt;em&gt;Jessie&lt;/em&gt; in
den &lt;a href=&#34;https://backports.debian.org/&#34;&gt;Backports&lt;/a&gt; verfügbar. Man
installiert es denkbar einfach:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    # apt install firejail
&lt;/code&gt;&lt;/pre&gt;&lt;h5 id=&#34;einrichtung-und-benutzung&#34;&gt;Einrichtung und Benutzung&lt;/h5&gt;
&lt;p&gt;Für viele Programme sind schon Profile unter &lt;code&gt;/etc/firejail&lt;/code&gt; vorhanden
und man kann diese einfach nutzen, indem man die Anwendung per
&lt;code&gt;firejail $PROGRAMMNAME&lt;/code&gt; aufruft. Per &lt;code&gt;firecfg&lt;/code&gt; kann man sich für
installierte Programme, für die ein Profil vorhanden ist, folgendermaßen
automatisch Symlinks nach &lt;code&gt;/usr/local/bin/&lt;/code&gt; anlegen lassen:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    # firecfg 
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Dadurch genügt es nun das Programm in einem Terminal oder per &lt;em&gt;Alt+F2&lt;/em&gt;
mit dem Programmnamen ohne vorangestelltes &lt;code&gt;firejail&lt;/code&gt; aufzurufen.&lt;/p&gt;
&lt;p&gt;Mit folgendem Befehl kann man sich anzeigen lassen, welche Symlinks zu
&lt;em&gt;firejail&lt;/em&gt; von &lt;em&gt;firecfg&lt;/em&gt; angelegt wurden:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    $ firecfg --list
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Da viele Programmstarter (.desktop-Dateien) unter
&lt;code&gt;/usr/local/share/applications/&lt;/code&gt; den kompletten Pfad zum binary
enthalten funktionieren die Verknüpfungen aus den Menüs der
Desktopumgebungen für diese Programme nicht mit &lt;em&gt;firejail&lt;/em&gt;. Das lässt
sich ebenfalls automatisch mit &lt;em&gt;firecfg&lt;/em&gt; beheben:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    $ firecfg --fix
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Dann scannt firecfg die .desktop-Dateien unter
&lt;code&gt;/usr/local/share/applications/&lt;/code&gt; nach vollständigen Pfadangaben bei
&lt;code&gt;Exec=&lt;/code&gt; in den Startern von unterstützten Programmen, kopiert diese nach
&lt;code&gt;~/.local/share/applications/&lt;/code&gt; und trägt dort statt dem kompletten Pfad
nur den Namen des binary ein. Nach anschließendem Aus- und Einloggen
(bzw. Ausführen von &lt;code&gt;r&lt;/code&gt; mittels &lt;em&gt;Alt+F2&lt;/em&gt; bei Gnome3) werden diese
Anwendungen nun automatisch in einer Sandbox geöffnet.&lt;/p&gt;
&lt;p&gt;Man kann sich anzeigen lassen welche Programme gerade von &lt;em&gt;firejail&lt;/em&gt; in
einer Sandbox ausgeführt werden:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    $ firejail --list
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Oder man lässt sich auch sämtliche Subprozesse mit anzeigen:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    $ firejail --tree
&lt;/code&gt;&lt;/pre&gt;&lt;h5 id=&#34;eigene-profile-anlegen&#34;&gt;Eigene Profile anlegen&lt;/h5&gt;
&lt;p&gt;Möchte man ein Profil abändern erstellt man den Ordner
&lt;code&gt;~/.config/firejail/&lt;/code&gt; und kopiert das entsprechende Profil von
&lt;code&gt;/etc/firejail/&lt;/code&gt; in den erstellten Ordner &lt;code&gt;~/.config/firejail/&lt;/code&gt;. Man
kann die Profile natürlich auch global in &lt;code&gt;/etc/firejail/&lt;/code&gt; editieren,
aber die Änderungen könnten von Updates überschrieben werden.&lt;/p&gt;
&lt;p&gt;Möchte man eigene Profile für Programme, für die kein Profil
mitgeliefert wird, anlegen macht man dies am Besten unter
&lt;code&gt;~/.config/firejail/$BINARYNAME.profile&lt;/code&gt;. Es bietet sich an ein neues
Profil auf der Basis von &lt;code&gt;/etc/firejail/default.profile&lt;/code&gt; aufzubauen.&lt;/p&gt;
&lt;p&gt;Auf die Konfiguration von Profilen werde ich hier (noch?) nicht
eingehen, da ich auch noch in der Einarbeitungsphase stecke. Deshalb
gibt es hier auch &amp;quot;nur&amp;quot; einen Quickstart-Guide. &lt;code&gt;firecfg --fix&lt;/code&gt; wird
leider in den Blogbeiträgen, die ich bisher zum Theme gelesen habe,
nicht erwähnt. Dummerweise habe ich es erst in der manpage gefunden
nachdem ich das schon händisch erledigt hatte. 😄&lt;/p&gt;
&lt;h5 id=&#34;profile-testen-update-2017-02-25&#34;&gt;Profile testen [Update 2017-02-25]&lt;/h5&gt;
&lt;p&gt;Mit der Option &lt;code&gt;--audit&lt;/code&gt; lassen sich Profile auf mögliche
Sicherheitslecks untersuchen. Ein einfacher Aufruf ohne weitere
Parameter prüft das Defaultprofil:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    $ firejail --audit
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Die vorhanden Profile lassen sich prüfen indem man einfach den
Programmnamen übergibt:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    $ firejail --audit firefox
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Mögliche Sicherheitslöcher werden von firejail dann folgendermaßen
berichtet:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    UGLY: I can access files in /home/martin/.mozilla directory. Use &amp;#34;firejail --blacklist=/home/martin/.mozilla&amp;#34; to block it.
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;In dem fall ist es natürlich ok, dass &lt;em&gt;firefox&lt;/em&gt; auf &lt;code&gt;~/.mozilla&lt;/code&gt;
zugreifen darf. Findet man aber Zugriffe auf Ordner, die man global
unterbinden möchte legt man eine Datei
&lt;code&gt;/etc/firejail/disable-common.local&lt;/code&gt; an und fügt dort einen blacklist
Eintrag ein:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    # Lokale firejail blacklist
    blacklist ${HOME}/.gnupg
    blacklist ${HOME}/.mozilla
    blacklist ${HOME}/.thunderbird
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Trotzdem sollte man die Programme die man mit firejail in den
Berechtigungen einschränkt auch noch einzeln einem Audit unterziehen, da
globale Einstellungen in den einzelnen Profilen wieder aufgehoben werden
können.&lt;/p&gt;
&lt;h5 id=&#34;troubleshooting&#34;&gt;Troubleshooting&lt;/h5&gt;
&lt;h3 id=&#34;gnome-extensions-addon-im-firefox-update-2016-12-03&#34;&gt;Gnome-extensions AddOn im Firefox [Update 2016-12-03]&lt;/h3&gt;
&lt;p&gt;Heute fiel mir auf, dass ich keine Gnome-extensions mehr im Firefox
installieren konnte. Ich konnte es lösen indem ich folgende Zeilen dem
&lt;code&gt;firefox.profile&lt;/code&gt; hinzugefügt habe:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    noblacklist ~/.local/share/gnome-shell/extensions/
    whitelist ~/.local/share/gnome-shell/extensions/
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Das komplette Profil sieht nun so aus:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    # Firejail profile for Mozilla Firefox (Iceweasel in Debian)

    noblacklist ~/.mozilla
    noblacklist ~/.cache/mozilla
    noblacklist ~/.local/share/gnome-shell/extensions/
    include /etc/firejail/disable-common.inc
    include /etc/firejail/disable-programs.inc
    include /etc/firejail/disable-devel.inc

    caps.drop all
    netfilter
    nonewprivs
    noroot
    protocol unix,inet,inet6,netlink
    seccomp
    tracelog

    whitelist ${DOWNLOADS}
    mkdir ~/.mozilla
    whitelist ~/.mozilla
    mkdir ~/.cache/mozilla/firefox
    whitelist ~/.cache/mozilla/firefox
    whitelist ~/dwhelper
    whitelist ~/.zotero
    whitelist ~/.vimperatorrc
    whitelist ~/.vimperator
    whitelist ~/.pentadactylrc
    whitelist ~/.pentadactyl
    whitelist ~/.keysnail.js
    whitelist ~/.config/gnome-mplayer
    whitelist ~/.cache/gnome-mplayer/plugin
    whitelist ~/.pki

    # Gnome-Shell AddOn
    whitelist ~/.local/share/gnome-shell/extensions/

    # lastpass, keepassx
    whitelist ~/.keepassx
    whitelist ~/.config/keepassx
    whitelist ~/keepassx.kdbx
    whitelist ~/.lastpass
    whitelist ~/.config/lastpass


    #silverlight
    whitelist ~/.wine-pipelight
    whitelist ~/.wine-pipelight64
    whitelist ~/.config/pipelight-widevine
    whitelist ~/.config/pipelight-silverlight5.1

    include /etc/firejail/whitelist-common.inc

    # experimental features
    #private-etc passwd,group,hostname,hosts,localtime,nsswitch.conf,resolv.conf,gtk-2.0,pango,fonts,iceweasel,firefox,adobe,mime.types,mailcap,asound.conf,pulse
&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    
    <item>
      <title>Erste Schritte mit YaCy</title>
      <link>/2016/10/15/erste-schritte-mit-yacy/</link>
      <pubDate>Sat, 15 Oct 2016 00:00:00 +0000</pubDate>
      <guid>/2016/10/15/erste-schritte-mit-yacy/</guid>
      <description>&lt;p&gt;Angeregt durch diesen
&lt;a href=&#34;http://www.golem.de/news/howto-goodbye-google-suchmaschinen-selber-hosten-1610-123482.html&#34;&gt;Artikel&lt;/a&gt;
und diesen
&lt;a href=&#34;http://tmowizard.square7.ch/wordpress/2016/10/15/yacy-deusu-und-co-suchmaschinen-google-ist-nicht-alles/&#34;&gt;Blogpost&lt;/a&gt;
habe ich etwas mit &lt;a href=&#34;http://yacy.net/de/index.html&#34;&gt;YaCy&lt;/a&gt; gespielt.&lt;/p&gt;
&lt;p&gt;Was ist &lt;em&gt;YaCy&lt;/em&gt;? Ich zitiere die
YaCy-&lt;a href=&#34;http://yacy.net/de/index.html&#34;&gt;Homepage&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;YaCy ist eine Suchmaschine bei dem die Nutzer selbst zum Betreiber
werden. Die freie Suchmaschinensoftware YaCy läuft nicht auf einem
Server im Internet, sondern auf Ihrem eigenen Rechner. So können Sie
Ihr persönliches Suchportal errichten, bei dem nur Sie bestimmen was
die Suchmaschine im Suchindex hat.&lt;/p&gt;
&lt;p&gt;Die Besonderheit von YaCy ist aber, dass es sich mit den anderen
Benutzern, die ebenfalls eine YaCy Suchmaschine betreiben, verbinden
kann. So entsteht ein vollständig dezentrales Peer-to-Peer
Suchmaschinennetz welches mit der Anzahl der Nutzer skaliert. Diese,
von der Gemeinschaft der Nutzer betriebene Suchmaschine ist nicht
zensierbar und speichert auch kein Nutzerverhalten an zentraler
Stelle. Das Erreichen von Informationsfreiheit durch freie, dezentrale
Suchsoftware ist auch ein Projektziel.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Das klingt ja alles recht nett also habe ich YaCy mal schnell auf meinem
alten Laptop, welches mittlerweile als Server für diverse Dienste
genutzt wird, installiert. Mein Server läuft mit Debian
&lt;a href=&#34;https://www.debian.org/releases/stable/&#34;&gt;Stable&lt;/a&gt; (derzeit
&lt;a href=&#34;https://www.debian.org/releases/jessie/releasenotes&#34;&gt;Jessie&lt;/a&gt;) und die
Installation war nach dieser
&lt;a href=&#34;http://www.yacy-websuche.de/wiki/index.php/De:DebianInstall&#34;&gt;Anleitung&lt;/a&gt;
kein Problem.&lt;/p&gt;
&lt;p&gt;Auch die Einrichtung war mit Hilfe des
&lt;a href=&#34;http://www.yacy-websuche.de/wiki/index.php/De:Start&#34;&gt;Wiki&lt;/a&gt; kein
Problem.&lt;/p&gt;
&lt;p&gt;Lediglich zwei Sachen fielen mir beim Herumspielen bisher auf:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Der Crawler konnte meinen eigenen Blog nicht indizieren&lt;/li&gt;
&lt;li&gt;Ich kann meine Installation derzeit nicht per https aufraufen (noch
ungelöst)&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id=&#34;meine-webseite-indizieren&#34;&gt;Meine Webseite indizieren&lt;/h5&gt;
&lt;p&gt;Das erste Problem lag wohl daran, dass YaCy und meine Seite Probleme
beim Schlüsselaustausch hatten:
&lt;code&gt;scraper cannot load URL: java.io.IOException: Client can&#39;t execute: Could not generate DH keypair duration=187 for url&lt;/code&gt;.
Nach einiger Recherche fand ich
&lt;a href=&#34;http://stackoverflow.com/questions/6851461/java-why-does-ssl-handshake-give-could-not-generate-dh-keypair-exception&#34;&gt;hier&lt;/a&gt;
eine für mich funktionierende Lösung:&lt;/p&gt;
&lt;p&gt;Ich musste in der Datei
&lt;code&gt;/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/security/java.security&lt;/code&gt; die
Zeile&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    jdk.tls.disabledAlgorithms=SSLv3, RC4, MD5withRSA, DH keySize &amp;lt; 768
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;folgendermaßen ändern:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    jdk.tls.disabledAlgorithms=SSLv3, RC4, DHE, MD5withRSA, DH keySize &amp;lt; 768
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Danach habe ich als &lt;em&gt;root&lt;/em&gt; YaCy neu gestartet und konnte auch meinen
Blog indizieren:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    service yacy restart
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Nebenwirkungen konnte ich bisher keine feststellen, kann ich aber
natürlich auch nicht ausschließen. Ich persönlich vermute aber, dass
diese veraltete Methode kaum noch eingesetzt wird.&lt;/p&gt;
&lt;h5 id=&#34;https-zugriff&#34;&gt;HTTPS-Zugriff&lt;/h5&gt;
&lt;p&gt;Dieses Problem besteht derzeit noch, obwohl ich alles gemäß dem Wiki
eingerichtet habe. Ich hoffe ich komme demnächst dazu hier etwas zu
recherchieren und das Problem zu lösen. Laut YaCy ist https aktiviert,
aber mit https://192.168.178.22:8443 kann keine Verbindung aufgebaut
werden. Auch ein Portscan mit &lt;a href=&#34;https://wiki.ubuntuusers.de/nmap/&#34;&gt;nmap&lt;/a&gt;
zeigte nur die Ports der anderen installierten Dienste.&lt;/p&gt;
&lt;p&gt;Falls jemand ein ähnliches Problem hatte und dies gelöst hat oder einen
möglichen Ansatz weiß würde ich mich über Rückmeldungen freuen.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Code-Schnippsel: Backup über SSH mit rsync (2)</title>
      <link>/2016/09/24/code-schnippsel-backup-ueber-ssh-mit-rsync-2/</link>
      <pubDate>Sat, 24 Sep 2016 00:00:00 +0000</pubDate>
      <guid>/2016/09/24/code-schnippsel-backup-ueber-ssh-mit-rsync-2/</guid>
      <description>&lt;p&gt;Seit meinem letzten
&lt;a href=&#34;/2014/09/29/code-schnippsel-backup-ueber-ssh-mit-rsync/&#34;&gt;Beitrag&lt;/a&gt; über
mein Backup-Script ist schon wieder eine Weile vergangen und ich möchte
hier mal wieder den aktuellen Stand protokollieren.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;#! /bin/bash


#### Diese Variablen bitte auf die eigenen Bedürfnisse anpassen
BACKUP_PFADE=&amp;#34;/home/martin /etc /root /usr/local&amp;#34;
                        # Pfade die gesichert werden sollen
ZIELPFAD=/mnt/backup    # Pfad auf dem Backupserver (ohne abschließenden /)
ZIEL_EXT=true       # true = Wechseldatenträger, false = interner Speicher
ANZAHL_TAGE=7           # Tägliches Backup für x Tage
BENUTZER=martin         # Benutzername auf dem Backupserver
SERVER=backup           # IP-Adresse oder Hostname des Backupservers
PORT=1418               # SSH-Port des Backupservers
MAC=88:ae:1d:31:cd:17   # MAC-Adresse des Servers für WOL
EXCLUDES=&amp;#34;--exclude .cache/ \
--exclude cache/ --exclude Cache/&amp;#34;  # TODO: Elegantere Lösung finden 
HISTORY=/root/.backup_hist      # Protokoll-Datei
LISTE=/root/installed_packages.txt  # Speicherort für Liste der installierten Pakete


#### Don&amp;#39;t touch this; domdididom
#### Ab hier bitte nichts anfassen, wenn du nicht sicher weißt was du tust
MONAT=$(date +%-m)
VORMONAT=$(expr $MONAT - 1)
HOST=$(hostname)

# Backup-Server bereit?
if  ! ping -c 1 $SERVER &amp;gt; /dev/null 
    then

    # Backup-Server hochfahren
    wakeonlan $MAC 1&amp;gt;/dev/null

    sleep 60

    if ! ping -c 1 $SERVER &amp;gt; /dev/null 
        then
        echo &amp;#34;Backup konnte nicht durchgeführt werden. Der Server war nicht erreichbar.&amp;#34; \
        | mail -s &amp;#39;Backup fehlgeschlagen!&amp;#39; $(whoami)@$HOST
        exit
    fi
fi

# Falls Zieldatenträger Wechselplatte, diese einhängen
if $ZIEL_EXT
    then
    ssh -p $PORT $BENUTZER\@$SERVER &amp;#34;sudo mount $ZIELPFAD&amp;#34; &amp;gt;/dev/null

    # Datei CURRENT zur Protokollierung der aktiven Backups existiert?
    if ! ssh -p $PORT $BENUTZER\@$SERVER stat $ZIELPFAD/CURRENT \&amp;gt; /dev/null 2\&amp;gt;\&amp;amp;1
            then
            ssh -p $PORT $BENUTZER\@$SERVER &amp;#34;touch $ZIELPFAD/CURRENT &amp;amp;&amp;amp; echo &amp;#34;0&amp;#34; &amp;gt; $ZIELPFAD/CURRENT&amp;#34;
    fi

    # CURRENT auslesen und inkrementieren
    CURRENT=$(ssh -p $PORT $BENUTZER\@$SERVER &amp;#34;cat $ZIELPFAD/CURRENT&amp;#34;)
    CURRENT=$(echo &amp;#34;$CURRENT + 1&amp;#34; | bc)
    ssh -p $PORT $BENUTZER\@$SERVER &amp;#34;echo $CURRENT &amp;gt; $ZIELPFAD/CURRENT&amp;#34;

fi

# Link 0 -&amp;gt; 12 (für Link auf letztes Backup im Januar) existiert?
if ! ssh -p $PORT $BENUTZER\@$SERVER stat $ZIELPFAD/$HOST/0 \&amp;gt; /dev/null 2\&amp;gt;\&amp;amp;1
    then
    ssh -p $PORT $BENUTZER\@$SERVER &amp;#34;ln -s $ZIELPFAD/$HOST/12 $ZIELPFAD/$HOST/0&amp;#34;
fi

# Bei Problemen zu Testzwecken auskommentieren
# ssh -v -p $PORT $BENUTZER@$SERVER /bin/true

# Eine Liste der installierten Pakete erstellen
dpkg --get-selections &amp;gt; $LISTE

# Backup per rsync
for PFAD in $BACKUP_PFADE
do
    rsync -az --delete-excluded $EXCLUDES --rsync-path=&amp;#39;sudo rsync&amp;#39; --rsh=&amp;#34;ssh -p $PORT&amp;#34; \
    --link-dest=../$VORMONAT $PFAD $BENUTZER@$SERVER:$ZIELPFAD/$HOST/$MONAT
done

# Erstellen von Snapshots der letzten x Tage
ssh -p $PORT $BENUTZER\@$SERVER &amp;#34;sudo rm -rf $ZIELPFAD/$HOST/daily.$ANZAHL_TAGE&amp;#34;

if [ $ANZAHL_TAGE -gt 1 ]
    then

    for (( ANZAHL=$ANZAHL_TAGE ; ANZAHL &amp;gt;= 2 ; ANZAHL-- ))
    do
        ssh -p $PORT $BENUTZER\@$SERVER \
        &amp;#34;sudo mv $ZIELPFAD/$HOST/daily.$(expr $ANZAHL - 1) $ZIELPFAD/$HOST/daily.$ANZAHL&amp;#34;
    done
fi

if [ ! $ANZAHL_TAGE -eq 0 ]
    then
    ssh -p $PORT $BENUTZER\@$SERVER &amp;#34;sudo mv $ZIELPFAD/$HOST/daily.latest $ZIELPFAD/$HOST/daily.1&amp;#34;
    ssh -p $PORT $BENUTZER\@$SERVER &amp;#34;sudo cp -al $ZIELPFAD/$HOST/$MONAT $ZIELPFAD/$HOST/daily.latest&amp;#34;
fi

# Falls Zieldatenträger Wechselplatte, diese aushängen sofern kein weiteres Backup aktiv ist (Variable Current)
if $ZIEL_EXT
        then
    CURRENT=$(ssh -p $PORT $BENUTZER\@$SERVER &amp;#34;cat $ZIELPFAD/CURRENT&amp;#34;)
    if [ $CURRENT -eq 1 ]
        then
        ssh -p $PORT $BENUTZER\@$SERVER &amp;#34;echo &amp;#34;0&amp;#34; &amp;gt; $ZIELPFAD/CURRENT&amp;#34;
            ssh -p $PORT $BENUTZER\@$SERVER &amp;#34;sudo umount $ZIELPFAD&amp;#34; &amp;gt;/dev/null
        else
        CURRENT=$(echo &amp;#34;$CURRENT - 1&amp;#34; | bc)
                ssh -p $PORT $BENUTZER\@$SERVER &amp;#34;echo &amp;#34;$CURRENT&amp;#34; &amp;gt; $ZIELPFAD/CURRENT&amp;#34;
    fi 
fi

# Datum und Uhrzeit des Backups protokollieren
date &amp;gt;&amp;gt; $HISTORY
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Das Script sorgt dafür, dass mein &lt;em&gt;home&lt;/em&gt; &lt;code&gt;/home/martin&lt;/code&gt;, sowie &lt;code&gt;/etc&lt;/code&gt;
und &lt;code&gt;/usr/local/bin&lt;/code&gt; gesichert werden.&lt;/p&gt;
&lt;p&gt;Ich habe auch eine Rotation eingebaut, die mir erlaubt auf einen
Snapshot der letzten 7 Sicherungen zuzugreifen und es werden Snapshots
der letzten 11 Monate aufbewahrt.&lt;/p&gt;
&lt;p&gt;Durch Nutzung von &lt;a href=&#34;https://wiki.ubuntuusers.de/ln/#Hardlinks&#34;&gt;Hardlinks&lt;/a&gt;
reduziere ich den Speicherplatzverbauch auf ein Minimum.&lt;/p&gt;
&lt;p&gt;Das Script ist darauf ausgelegt den Backup-Server per
&lt;a href=&#34;https://wiki.ubuntuusers.de/Wake_on_LAN/&#34;&gt;WOL&lt;/a&gt; aufzuwecken, eine
externe Festplatte zu mounten und das Backup durchzuführen. Das mag ein
recht spezifisches Setup sein, aber vielleicht kann es ja mal jemand
brauchen oder zumindest Teile davon für eigene Scripte recyclen.&lt;/p&gt;
&lt;p&gt;Dieses Script wird einmal täglich von
&lt;a href=&#34;https://de.wikipedia.org/wiki/Anacron&#34;&gt;anacron&lt;/a&gt; aufgerufen und sorgt
dafür, dass ich mich nicht mehr bewusst um Backups kümmern muss.&lt;/p&gt;
&lt;p&gt;Angefangen hat das Script als einfaches &lt;em&gt;rsync&lt;/em&gt;-Kommando das mein
Home-Verzeichnis &lt;code&gt;/home/martin&lt;/code&gt; per &lt;em&gt;SSH&lt;/em&gt; auf eine USB-Festplatte auf
meinem Server kopiert hat. Mit der Zeit habe ich aber immer mehr
Verbesserungen vorgenommen und es ist eine recht gute Backup-Lösung
geworden.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Mein Blog und der Datenschutz</title>
      <link>/2016/08/26/mein-blog-und-der-datenschutz/</link>
      <pubDate>Fri, 26 Aug 2016 00:00:00 +0000</pubDate>
      <guid>/2016/08/26/mein-blog-und-der-datenschutz/</guid>
      <description>&lt;p&gt;Ich bin heute über einen
&lt;a href=&#34;https://www.kuketz-blog.de/webbkoll-wie-datenschutzfreundlich-ist-deine-webseite/&#34;&gt;Link&lt;/a&gt;
auf das interessante Tool &lt;a href=&#34;https://webbkoll.dataskydd.net/en&#34;&gt;Webbkoll&lt;/a&gt;
aufmerksam geworden.&lt;br&gt;
&lt;em&gt;Webbkoll&lt;/em&gt; ist ein Open-Source-Tool mit dem man die eigene Homepage, und
auch andere, auf Datenschutzkonformität überprüfen kann. Da das Tool
OpenSource ist kann der
&lt;a href=&#34;https://github.com/andersju/webbkoll&#34;&gt;Quellcode&lt;/a&gt; eingesehen werden und
man kann das Tool auch auf dem eigenen Webspace/Server installieren. Ich
habe die bequeme Variante vorgezogen die
&lt;a href=&#34;https://webbkoll.dataskydd.net/en&#34;&gt;Onlineversion&lt;/a&gt; des Entwicklers zu
nutzen.&lt;/p&gt;
&lt;p&gt;Das Tool überprüft die Verwendung externer Ressourcen und bewertet sie
danach ob sie in der Blockliste von &lt;a href=&#34;https://disconnect.me/&#34;&gt;Disconnect&lt;/a&gt;
vorkommen, ob die Seite über &lt;em&gt;HTTPS&lt;/em&gt; ausgeliefert wird, &lt;em&gt;HSTS&lt;/em&gt; genutzt
wird, Drittpartie-Cookies gesetzt werden und einiges mehr.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://webbkoll.dataskydd.net/en/results?url=https%3A%2F%2Fblog.mdosch.de%2F&#34;&gt;Mein
Ergebnis&lt;/a&gt;
sah gar nicht so schlecht aus aber ließ sich durch Abschalten der
&lt;em&gt;referrer&lt;/em&gt; noch verbessern, d.h. es wird Seiten nicht mehr mitgeteilt,
dass ihr von hier kommt wenn ihr einem Link folgt (es sei denn ihr nutzt
einen veralteten Browser der dies noch nicht unterstützt).&lt;br&gt;
Auch habe ich &lt;a href=&#34;/2013/06/15/piwik/&#34;&gt;Piwik&lt;/a&gt; nicht mehr auf dieser Seite in
Betrieb. Piwik ist zwar quelloffen und somit für interessierte Personen
mit der nötigen Kompetenz überprüfbar und auch lokal gehosted (d.h. es
werden keine Daten an Google oder sonstige Firmen übermittelt), aber da
mir der Datenschutz wichtig ist habe ich es deaktiviert. Piwik wurde von
&lt;em&gt;Webbkoll&lt;/em&gt; übrigens nicht negativ bewertet, aber ich habe die
Überprüfung mal als Denkanstoß genommen und Piwik entfernt.&lt;/p&gt;
&lt;p&gt;Ich habe auch &lt;em&gt;HSTS&lt;/em&gt; auf diesem Blog aktiviert, d.h. Browser merken
sich, dass dieser Blog über &lt;em&gt;HTTPS&lt;/em&gt; erreichbar ist und werden in Zukunft
nicht mehr versuchen unverschlüsselt zuzugreifen.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Webbkoll&lt;/em&gt; zeig &lt;em&gt;HSTS&lt;/em&gt; zwar weiterhin als nicht aktiv an, aber mein
&lt;a href=&#34;https://www.ssllabs.com/ssltest/analyze.html?d=blog.mdosch.de&amp;amp;s=95.143.172.208&#34;&gt;SSL-Labs
Ranking&lt;/a&gt;
hat sich durch diese Maßnahme von &lt;strong&gt;A&lt;/strong&gt; auf &lt;strong&gt;A+&lt;/strong&gt; verbessert.
Vermutlich wird &lt;em&gt;HSTS&lt;/em&gt; von &lt;em&gt;Webbkoll&lt;/em&gt; erst gewürdigt wenn man die Seite
in eine Liste eintragen lässt, die mit allen gängigen Browsern
ausgeliefert wird. Ist man in dieser Liste vertreten wird jeder Browser,
der sie ausliefert, sofort eine HTTPS-Verbindung zur Seite aufbauen,
auch wenn die Seit explizit mit http:// aufgerufen wurde.&lt;/p&gt;
&lt;p&gt;Wie schneidet eure Seite ab? &lt;strong&gt;Hosen runter!&lt;/strong&gt; :D&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Kommentarfunktion wieder aktiv</title>
      <link>/2016/08/20/kommentarfunktion-wieder-aktiv/</link>
      <pubDate>Sat, 20 Aug 2016 00:00:00 +0000</pubDate>
      <guid>/2016/08/20/kommentarfunktion-wieder-aktiv/</guid>
      <description>&lt;p&gt;Ich hatte seit längerem Probleme mit meinem Kommentarsystem aber seit
heute kann wieder fleißig kommentiert werden.&lt;/p&gt;
&lt;p&gt;Ich möchte jedem das Kommentarsystem &lt;a href=&#34;https://posativ.org/isso/&#34;&gt;Isso&lt;/a&gt;
nahe legen, der bisher Disqus oder ähnliches nutzt. Seit meinem Umstieg
auf den statischen Bloggenerator
&lt;a href=&#34;https://posativ.org/acrylamid/&#34;&gt;Acrylamid&lt;/a&gt; nutze ich Isso, da ich
keinen externen Kommentardienstleister nutzen möchte und ein statisches
Kommentarsystem zu aufwändig und träge ist.&lt;br&gt;
Auf Uberspace war die
&lt;a href=&#34;https://blog.posativ.org/2014/isso-und-uberspace-de/&#34;&gt;Einrichtung&lt;/a&gt; ein
Kinderspiel und ich konnte sogar ohne größere Probleme meine alten
Kommentare von Wordpress importieren. :)&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Runalyze unter freier Lizenz</title>
      <link>/2016/08/20/runalyze-unter-freier-lizenz/</link>
      <pubDate>Sat, 20 Aug 2016 00:00:00 +0000</pubDate>
      <guid>/2016/08/20/runalyze-unter-freier-lizenz/</guid>
      <description>&lt;p&gt;Ich habe &lt;a href=&#34;/2014/01/11/runalyze-sport-aktivitaeten-protokollieren/&#34;&gt;hier&lt;/a&gt;
und &lt;a href=&#34;/2014/01/11/runalyze-sport-aktivitaeten-protokollieren/&#34;&gt;hier&lt;/a&gt;
schon &lt;a href=&#34;https://blog.runalyze.com/&#34;&gt;Runalyze&lt;/a&gt; vorgestellt. Da ich damals
noch kritisierte, dass Runalyze als OpenSource bezeichnet wurde aber
noch keine Lizenz gewählt hatte möchte ich nun darauf hinweisen, dass
Runalyze seit einiger Zeit eine Lizenz &lt;a href=&#34;https://github.com/Runalyze/Runalyze/issues/952#issuecomment-149895426&#34;&gt;gewählt
hat&lt;/a&gt;:
&lt;a href=&#34;https://www.gnu.org/licenses/agpl-3.0.de.html&#34;&gt;AGPL&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Runalyze ist ein sehr schönes Tool um Statistiken über sportliche
Aktivitäten auszuwerten, was mich daran erinnert, dass ich wieder mehr
Radfahren sollte.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>SailfishOS: Übersicht über Pakete aus OpenRepos</title>
      <link>/2016/08/20/sailfishos-uebersicht-ueber-pakete-aus-openrepos/</link>
      <pubDate>Sat, 20 Aug 2016 00:00:00 +0000</pubDate>
      <guid>/2016/08/20/sailfishos-uebersicht-ueber-pakete-aus-openrepos/</guid>
      <description>&lt;p&gt;Seit ich &lt;a href=&#34;https://sailfishos.org/&#34;&gt;Sailfish&lt;/a&gt; nutze habe ich auch viele
Pakete per &lt;a href=&#34;https://openrepos.net/content/basil/warehouse&#34;&gt;Warehouse&lt;/a&gt;
aus &lt;a href=&#34;https://openrepos.net/&#34;&gt;OpenRepos&lt;/a&gt; installiert. Nach einiger Zeit
hatte ich so einige Repos aktiviert und keinerlei Überblick mehr, aus
welchen Repos ich welche App installiert hatte und ob nicht einige Repos
aktiviert sind obwohl ich keinerlei App mehr aus diesen beziehe. Nach
ein paar hilfreichen Antworten bei
&lt;a href=&#34;https://together.jolla.com/question/139085/how-to-get-an-overview-about-installed-apps-used-repos-in-open-repos/&#34;&gt;TJC&lt;/a&gt;
und etwas rumprobieren fand ich eine Lösung.&lt;/p&gt;
&lt;p&gt;Damit der Befehl funktioniert muss &lt;em&gt;zypper&lt;/em&gt; installiert sein:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;pkcon install zypper
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Wurde &lt;em&gt;zypper&lt;/em&gt; erfolgreich installiert kann man sich als &lt;em&gt;root&lt;/em&gt; mit
folgendem Script die aktivierten Repos und deren installierte Apps
anzeigen lassen:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;for REPO in $(ssu lr | awk &amp;#39;/openrepos/ {print $2}&amp;#39;) 
do echo -e &amp;#34;$REPO:\n&amp;#34;; zypper search -i -r $REPO; echo -e &amp;#34;\n\n&amp;#34;
done
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Bzw. als Einzeiler zum Einfügen per Copy&amp;amp;Paste:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;for REPO in $(ssu lr | awk &amp;#39;/openrepos/ {print $2}&amp;#39;); do echo -e &amp;#34;$REPO:\n&amp;#34;; zypper search -i -r $REPO; echo -e &amp;#34;\n\n&amp;#34;; done
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Ich habe mir nun auch zwei Scripte zum Deaktivieren und Reaktivieren
aller Repos aus OpenRepos angelegt.&lt;br&gt;
Deaktivieren:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;#! /bin/bash

ssu lr | awk &amp;#39;/openrepos/ {print $2}&amp;#39; &amp;gt; /home/nemo/repo.list
for REPO in $(cat /home/nemo/repo.list); do ssu dr $REPO; done
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Aktivieren:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;#! /bin/bash

for REPO in $(cat /home/nemo/repo.list); do ssu er $REPO; done
&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    
    <item>
      <title>Kurztipp: Tracking Protection im Firefox dauerhaft aktivieren</title>
      <link>/2016/06/17/kurztipp-tracking-protection-im-firefox-dauerhaft-aktivieren/</link>
      <pubDate>Fri, 17 Jun 2016 00:00:00 +0000</pubDate>
      <guid>/2016/06/17/kurztipp-tracking-protection-im-firefox-dauerhaft-aktivieren/</guid>
      <description>&lt;p&gt;Mittlerweile enhält der beliebte Browser &lt;em&gt;Firefox&lt;/em&gt; eine
&lt;a href=&#34;http://www.heise.de/newsticker/meldung/Firefox-42-blockiert-Tracker-2868184.html&#34;&gt;Funktion&lt;/a&gt;
zum Blockieren von Trackern. Standardmäßig ist diese nur im privaten
Modus aktiviert, lässt sich jedoch recht einfach dauerhaft aktivieren.
Dazu muss man lediglich &lt;code&gt;about:config&lt;/code&gt; in die Adresszeile eingeben und
dort den Wert &lt;code&gt;privacy.trackingprotection.enabled&lt;/code&gt; auf &lt;code&gt;true&lt;/code&gt; setzen.&lt;/p&gt;
&lt;p&gt;Ein netter Nebeneffekt ist, dass damit auch die meiste Werbung blockiert
wird. Mozilla liefert also mit dem Tracking-Schutz quasi einen
Werbeblocker mit.&lt;/p&gt;
&lt;p&gt;Firefox greift auf die Listen der bekannten Erweiterung
&lt;a href=&#34;https://disconnect.me/&#34;&gt;Disconnect&lt;/a&gt; zurück.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Sailfish OS: App schließen durch Wischen von oben</title>
      <link>/2015/09/11/sailfish-os-app-schliessen-durch-wischen-von-oben/</link>
      <pubDate>Fri, 11 Sep 2015 00:00:00 +0000</pubDate>
      <guid>/2015/09/11/sailfish-os-app-schliessen-durch-wischen-von-oben/</guid>
      <description>&lt;p&gt;Seit dem Update auf &lt;em&gt;Sailfish&lt;/em&gt;
&lt;a href=&#34;http://www.jollausers.com/2015/09/video-and-changelog-sailfish-os-2-0-is-out/&#34;&gt;1.1.9.28&lt;/a&gt;
fehlte mir eine Funktion, die ich häufig benutzte. Das Schließen einer
App durch Wischen von oben nach unten. Statt die App zu schließen wurde
nun eine Auswahl der Ambiente eingeblendet. Da ich selten Ambiente
wechsle aber häufig Apps, die ich nur selten benötige, komplett
schließen und nicht minimieren möchte hat mich diese Änderung sehr
gestört.&lt;/p&gt;
&lt;p&gt;Jetzt habe ich festgestellt, dass die Funktion zum Glück nicht komplett
abgeschafft wurde sondern konfigurierbar ist und das neue Verhalten nach
dem Update als Standard eingestellt ist.&lt;/p&gt;
&lt;p&gt;Möchte man das alte Verhalten wieder einstellen muss man lediglich in
den Einstellungen unter &lt;code&gt;System -&amp;gt; Gesten&lt;/code&gt; die Option &lt;em&gt;Schnelles
Schließen der App&lt;/em&gt; aktivieren.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://files.mdosch.de/2015-09/20150910193600.png&#34;&gt;&lt;img src=&#34;https://files.mdosch.de/2015-09/20150910193600.png&#34; alt=&#34;App schließen durch wischen von
oben&#34;&gt;&lt;/a&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Erneute Empfehlung: Runalyze</title>
      <link>/2015/07/26/erneute-empfehlung-runalyze/</link>
      <pubDate>Sun, 26 Jul 2015 00:00:00 +0000</pubDate>
      <guid>/2015/07/26/erneute-empfehlung-runalyze/</guid>
      <description>&lt;p&gt;Ich habe &lt;a href=&#34;http://blog.runalyze.com/blog/&#34;&gt;Runalyze&lt;/a&gt; zwar
&lt;a href=&#34;/2014/01/11/runalyze-sport-aktivitaeten-protokollieren/&#34;&gt;hier&lt;/a&gt; schon
mal vorgestellt, aber ich möchte heute noch mal darauf hinweisen.&lt;/p&gt;
&lt;p&gt;Mittlerweile hat man Blog durch diverse Planeten eine höhere Reichweite
und die Wahrscheinlichkeit, dass jemand, für den &lt;em&gt;Runalyze&lt;/em&gt; von Nutzen
ist, darauf aufmerksam wird ist höher.&lt;br&gt;
Außerdem habe ich dieses Jahr wieder angefangen Rad zu fahren und nutze
dadurch &lt;em&gt;Runalyze&lt;/em&gt; intensiver.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Runalyze&lt;/em&gt; wurde primär von Läufern für Läufer entwickelt, aber kann
auch für andere Sportarten verwendet werden. Ich nutze es um
Mountainbike-Fahrten, Schwimmen und Hanteltraining zu erfassen.&lt;br&gt;
Vor &lt;em&gt;Runalyze&lt;/em&gt; habe ich Endomondo verwendet, aber mir ist es doch lieber
die Daten auf meinem Webspace zu speichern als bei einem externen
Dienstleister. Bei einem Vergleich vor kurzem empfand ich Endomondo auch
als etwas unübersichtlich und die Möglichkeiten zur Auswertung von
&lt;em&gt;Runalyze&lt;/em&gt; deutlich überlegen.&lt;br&gt;
Das ist natürlich subjektiv und andere mögen das anders sehen, aber die
Entwickler von &lt;em&gt;Runalyze&lt;/em&gt; gehen auch häufig auf Nutzerwünsche ein, die
bei &lt;a href=&#34;https://github.com/Runalyze/Runalyze/issues&#34;&gt;Github&lt;/a&gt; geäußert
werden.&lt;/p&gt;
&lt;p&gt;Wer keinen eigenen Server oder Webspace hat kann &lt;em&gt;Runalyze&lt;/em&gt; auch auf in
der &lt;a href=&#34;https://runalyze.com&#34;&gt;Online-Version&lt;/a&gt; auf deren Server nutzen.&lt;/p&gt;
&lt;p&gt;Ich persönlich finde &lt;em&gt;Runalyze&lt;/em&gt; hervorragend und die umfassenden
Möglichkeiten sein Training auszuwerten sind sehr interessant und wirken
auf mich motivierend am Ball zu bleiben. :)&lt;/p&gt;
&lt;p&gt;Ein kleines Manko gibt es leider noch: Die Entwickler bezeichnen
&lt;em&gt;Runalyze&lt;/em&gt; als &lt;em&gt;Open Source Software&lt;/em&gt; haben aber noch keine konkrete
&lt;a href=&#34;https://github.com/Runalyze/Runalyze/issues/952&#34;&gt;Lizenz gewählt&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Hier mal die Kurzversion meiner heutigen MTB-Runde (Trainingsdetails
sind nicht öffentlich):&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;[runalyze.com](https://runalyze.com/){.runalyze-emb-runalyze}**67,6 km
Radfahren** 26.07.2015\

``` {.runalyze-emb-infos}
[3:10:28]{.runalyze-emb-time}[21,3 km/h]{.runalyze-emb-pace}[650
hm]{.runalyze-emb-elev}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;a href=&#34;/2015/07/26/erneute-empfehlung-runalyze&#34;&gt;&lt;/a&gt;{.runalyze-emb-share}&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    
    <item>
      <title>Flash: Lasst es endlich sterben</title>
      <link>/2015/07/14/flash-lasst-es-endlich-sterben/</link>
      <pubDate>Tue, 14 Jul 2015 00:00:00 +0000</pubDate>
      <guid>/2015/07/14/flash-lasst-es-endlich-sterben/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://de.wikipedia.org/wiki/Adobe_Flash&#34;&gt;Flash&lt;/a&gt; war ja schon immer
recht häufig von Sicherheitslücken betroffen, aber in letzter Zeit
häufen sich die &lt;a href=&#34;https://helpx.adobe.com/security.html#flashplayer&#34;&gt;&lt;em&gt;Security
Advisories&lt;/em&gt;&lt;/a&gt; für den
Flash-Player extrem (u.a. durch die &lt;a href=&#34;http://www.heise.de/thema/Hacking-Team&#34;&gt;&lt;em&gt;Hacking
Team&lt;/em&gt;-Geschichte&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Nicht nur die Sicherheitslücken sprechen gegen Adobes Flash, auch die
Instabilität. Gut das mag jetzt subjektiv sein, aber bei allen
Browserabstürzen oder -hängern auf meinen Rechnern in den letzten Jahren
wurde gerade ein Video in einem Flashplayer wiedergegeben.&lt;/p&gt;
&lt;p&gt;Besonders schlimm finde ich das, da es mit
&lt;a href=&#34;https://de.wikipedia.org/wiki/HTML5&#34;&gt;HTML5&lt;/a&gt; eine Alternative zum
&lt;a href=&#34;https://de.wikipedia.org/wiki/HTML5#Multimedia-Elemente&#34;&gt;Einbinden von
Videos&lt;/a&gt; gibt
(dafür wird Flash ja meistens genutzt). Also bitte nutzt die
Möglichkeiten von HTML5 und bindet Videos darüber ein. Natürlich bitte
mit einem freien Codec.&lt;/p&gt;
&lt;p&gt;Interessant finde ich auch folgendes:&lt;br&gt;
Deaktiviert man den Flashplayer, lässt aber das PlugIn installiert
bringen viele Seiten eine Fehlermeldung und man kann das Video nicht
sehen. Deinstalliert man das PlugIn wird man plötzlich auf eine
HTML5-Version weitergeleitet und kann das Video sehen.&lt;br&gt;
Manche Seiten verweigern aber auch dann noch die Wiedergabe des Videos.
Schwindelt man den Seiten aber mit einem Browser-AddOn, wie
beispielsweise &lt;a href=&#34;https://addons.mozilla.org/en-US/firefox/addon/user-agent-overrider/&#34;&gt;User Agent
Overrider&lt;/a&gt;,
vor mit einer anderen Kombination aus Browser und Betriebssystem
unterwegs zu sein, können auch diese Seiten häufig Videos über HTML5
wiedergeben. Meiner Erfahrung nach klappt das meistens mit einem
Browserstring der Kombination &lt;a href=&#34;http://readwrite.com/2014/10/02/html5-apple-ios-8-wkwebview&#34;&gt;iOS /
Safari&lt;/a&gt;.&lt;br&gt;
&lt;strong&gt;Ich finde es sinnlos und dreist viele User dazu zu gängeln eine
instabile, proprietäre Software zu installieren, die auch noch häufig
gravierende Sicherheitsmängel aufweist obwohl es eine Alternative gibt
und man diese sogar implementiert hat.&lt;/strong&gt; Warum kann man die
Seitenbesucher, die den Flash-Player deaktiviert oder deinstalliert
haben nicht einfach auf die vorhandene HTML5-Lösung umleiten? Warum muss
man dazu erst vorgeben mit einem iPhone oder iPad unterwegs zu sein?&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>upgrade-system - gefällt mir nicht</title>
      <link>/2015/07/08/upgrade-system-gefaellt-mir-nicht/</link>
      <pubDate>Wed, 08 Jul 2015 00:00:00 +0000</pubDate>
      <guid>/2015/07/08/upgrade-system-gefaellt-mir-nicht/</guid>
      <description>&lt;p&gt;Über diesen
&lt;a href=&#34;https://debianforum.de/forum/viewtopic.php?f=15&amp;amp;t=156290&#34;&gt;Thread&lt;/a&gt; wurde
ich auf &lt;em&gt;upgrade-system&lt;/em&gt; aufmerksam. Die Idee ist ja ganz nett, wie
folgender Auszug aus der
&lt;a href=&#34;http://manpages.debian.org/cgi-bin/man.cgi?query=upgrade-system&#34;&gt;man-page&lt;/a&gt;
belegt:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;upgrade-system is an APT front-end that simplifies regular upgrading
of Debian systems, only requiring an administrator&#39;s intervention
whenever updated packages necessitate the configuration of new
features.&lt;/p&gt;
&lt;p&gt;The command sequentially performs the following operations:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Synchronize the list of available Debian packages.&lt;/li&gt;
&lt;li&gt;Upgrade all installed packages to their newest versions.&lt;/li&gt;
&lt;li&gt;Recursively uninstall all obsolete package dependencies.&lt;/li&gt;
&lt;li&gt;Clean retrieved archives off the APT cache.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;em&gt;Upgrade-system&lt;/em&gt; will also folgende Schritte übernehmen:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;apt-get update (Informationen über neue Pakete einholen)&lt;/li&gt;
&lt;li&gt;apt-get dist-upgrade (Pakete aktualisieren)&lt;/li&gt;
&lt;li&gt;Unnötige Pakete entfernen (via
&lt;a href=&#34;https://packages.debian.org/stretch/deborphan&#34;&gt;deborphan&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;apt-get autoclean (veraltete Paketversionen aus dem Cache entfernen)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Klingt eigentlich recht gut, aber die Verwendung von &lt;em&gt;deborphan&lt;/em&gt; hat bei
mir dazu geführt, dass Pakete entfernt werden sollten, die ich definitiv
behalten möchte. Ich wollte mir mit einem&lt;/p&gt;
&lt;p&gt;&lt;code&gt;apt-mark manual $(deborphan)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;behelfen, aber das änderte nichts. Auch das Rumspielen mit den
&lt;em&gt;deborphan&lt;/em&gt;-Optionen in &lt;code&gt;/etc/upgrade-system.conf&lt;/code&gt; brachte nichts.&lt;/p&gt;
&lt;p&gt;Aus meiner Sicht also eine nette Idee, aber ich bleibe weiterhin bei
meinem &lt;em&gt;alias&lt;/em&gt; in der &lt;em&gt;Shell&lt;/em&gt;:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    alias upd=&amp;#34;apt update &amp;amp;&amp;amp; apt dist-upgrade -y &amp;amp;&amp;amp; apt-get --purge autoremove&amp;#34;
&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    
    <item>
      <title>CD-Ripper morituri: Falsche Dateirechte</title>
      <link>/2015/06/27/cd-ripper-morituri-falsche-dateirechte/</link>
      <pubDate>Sat, 27 Jun 2015 00:00:00 +0000</pubDate>
      <guid>/2015/06/27/cd-ripper-morituri-falsche-dateirechte/</guid>
      <description>&lt;p&gt;Ich nutze derzeit zum Rippen von CDs
&lt;a href=&#34;/2015/03/25/empfehlung-cd-ripper-morituri/&#34;&gt;morituri&lt;/a&gt;, doch leider fiel
mir auf, dass die von &lt;em&gt;morituri&lt;/em&gt; erstellten Dateien nicht die Rechte
erhielten, die ich bei &lt;code&gt;umask&lt;/code&gt; in der &lt;code&gt;/etc/login.defs&lt;/code&gt; eingestellt
hatte. In meinem Fall hatten die Dateien die Rechte &lt;code&gt;-rw--wxrwx&lt;/code&gt; statt,
wie gewünscht, &lt;code&gt;-rw-r-----&lt;/code&gt;.&lt;br&gt;
Die Lösung fand ich in diesem
&lt;a href=&#34;https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=779293&#34;&gt;Bugreport&lt;/a&gt;:
Es genügt in der Datei
&lt;code&gt;/usr/lib/python2.7/dist-packages/morituri/program/cdparanoia.py&lt;/code&gt; die
Zeile&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    self.file_mode = 0666 - umask
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;folgendermaßen abzuändern:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    self.file_mode = 0666 &amp;amp; ~ umask
&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    
    <item>
      <title>Kurztipp: Audiodateien umkodieren</title>
      <link>/2015/04/06/kurztipp-audiodateien-umkodieren/</link>
      <pubDate>Mon, 06 Apr 2015 00:00:00 +0000</pubDate>
      <guid>/2015/04/06/kurztipp-audiodateien-umkodieren/</guid>
      <description>&lt;p&gt;Ich rippe meine Audio-CDs ja mittels
&lt;a href=&#34;/2015/03/25/empfehlung-cd-ripper-morituri/&#34;&gt;morituri&lt;/a&gt; als
&lt;a href=&#34;https://de.wikipedia.org/wiki/Free_Lossless_Audio_Codec&#34;&gt;flac&lt;/a&gt; auf die
Festplatte. Leider kann mein Autoradio keine &lt;em&gt;flac&lt;/em&gt;-Dateien abspielen
und ich muss diese zu &lt;em&gt;mp3&lt;/em&gt; umkodieren. Dabei ist das Script
&lt;a href=&#34;https://packages.debian.org/search?keywords=pacpl&amp;amp;searchon=names&amp;amp;suite=all&amp;amp;section=all&#34;&gt;pacpl&lt;/a&gt;
sehr hilfreich:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    pacpl --to mp3 -p -r --bitrate 320 --outdir /home/martin/mp3 /home/martin/Musik
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Mit &lt;code&gt;--to mp3&lt;/code&gt; gebe ich das Zielformat und über &lt;code&gt;--bitrate&lt;/code&gt; die Bitrate
an. Andere Formate (&lt;em&gt;flac&lt;/em&gt;, &lt;em&gt;ogg&lt;/em&gt; etc.) werden also in mp3-Dateien mit
320kbps umgewandelt. Über &lt;code&gt;-p&lt;/code&gt; (&lt;code&gt;--preserve&lt;/code&gt;) wird festgelegt, dass die
Ordnerstruktur im Zielordner, der des Quellordners entspricht. &lt;code&gt;-r&lt;/code&gt;
sorgt dafür, dass das Quellverzeichnis rekursiv durchsucht wird und alle
Musikdateien umgewandelt werden, nicht nur die Dateien, die sich direkt
im Quellverzeichnis befinden.&lt;/p&gt;
&lt;p&gt;Mit diesem Befehl sorge ich also dafür, dass meine Musiksammlung unter
&lt;code&gt;/home/martin/Musik&lt;/code&gt; noch mal als mp3 unter &lt;code&gt;/home/martin/mp3&lt;/code&gt; abgelegt
wird.&lt;/p&gt;
&lt;p&gt;Weiter Informationen können dem
&lt;a href=&#34;http://wiki.ubuntuusers.de/Perl_Audio_Converter&#34;&gt;UU-Wiki&lt;/a&gt; oder der
&lt;a href=&#34;http://manpages.debian.org/cgi-bin/man.cgi?query=pacpl&#34;&gt;manpage&lt;/a&gt;
entnommen werden.&lt;/p&gt;
&lt;h5 id=&#34;update-2016-08-26&#34;&gt;Update 2016-08-26&lt;/h5&gt;
&lt;p&gt;Später fiel mir auf, dass pacpl mir die UTF8-Kodierung innerhalb der
tags kaputt gemacht hat. Mit mid3iconv aus dem Paket python-mutagen
konnte ich dies folgendermaßen reparieren:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    find . -name &amp;#34;*.mp3&amp;#34; -print0 | xargs -0 mid3iconv -e UTF8 -d
&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    
    <item>
      <title>Kurztipp: Versionsüberprüfung für Extensions der Gnome Shell deaktivieren</title>
      <link>/2015/03/26/kurztipp-versionsueberpruefung-fuer-extensions-der-gnome-shell-deaktivieren/</link>
      <pubDate>Thu, 26 Mar 2015 00:00:00 +0000</pubDate>
      <guid>/2015/03/26/kurztipp-versionsueberpruefung-fuer-extensions-der-gnome-shell-deaktivieren/</guid>
      <description>&lt;p&gt;Ich hatte desöfteren den Fall, dass Extensions für die Gnome Shell nicht
für neue Gnome3-Versionen aktualisiert wurden. Bisher hatte ich Glück
und die Extensions funktionierten auch alle mit den neueren Versionen,
ich musste lediglich die aktuelle Version als unterstützt in die Datei
&lt;code&gt;~/.local/share/gnome-shell/extensions/*EXTENSION_ORDNER*/metadata.json&lt;/code&gt;
eintragen.&lt;br&gt;
Heute habe ich bei &lt;em&gt;Pro-Linux&lt;/em&gt; einen
&lt;a href=&#34;http://www.pro-linux.de/news/1/22164/comm/575136/re-extensionkompatibilitaet.html&#34;&gt;Kommentar&lt;/a&gt;
gesehen, wie man die Versionsprüfung dauerhaft abschaltet. Dazu benötigt
man den ab &lt;em&gt;Jessie&lt;/em&gt; verfügbaren
&lt;a href=&#34;https://packages.debian.org/search?keywords=dconf-editor&amp;amp;searchon=names&amp;amp;suite=all&amp;amp;section=all&#34;&gt;dconf-editor&lt;/a&gt;
und wählt dort unter &lt;code&gt;org → gnome →  shell&lt;/code&gt; die Option
&lt;code&gt;disable-extension-version-validation&lt;/code&gt; an.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://files.mdosch.de/2015-03/dconf-editor-disable-extension-verification.png&#34;&gt;&lt;img src=&#34;https://files.mdosch.de/2015-03/dconf-editor-disable-extension-verification.png&#34; alt=&#34;Disable extension
verification&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Natürlich gibt es auch hier keine Garantie, dass die Extension unter
höheren Versionen arbeitet, wenn sie nicht offiziell dafür freigegeben
ist, aber ich hatte diesen Fall bisher noch nicht.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Empfehlung: CD-Ripper morituri</title>
      <link>/2015/03/25/empfehlung-cd-ripper-morituri/</link>
      <pubDate>Wed, 25 Mar 2015 00:00:00 +0000</pubDate>
      <guid>/2015/03/25/empfehlung-cd-ripper-morituri/</guid>
      <description>&lt;p&gt;Um CDs möglichst fehlerfrei zu rippen wird immer das Programm &lt;a href=&#34;http://www.exactaudiocopy.de/&#34;&gt;&lt;em&gt;Exact
Audio Copy (EAC)&lt;/em&gt;&lt;/a&gt; empfohlen, welches
leider nur für Windows verfügbar ist. Bisher habe ich unter Linux
&lt;a href=&#34;https://code.google.com/p/rubyripper/&#34;&gt;&lt;em&gt;Rubyripper&lt;/em&gt;&lt;/a&gt; verwendet und war
sehr zufrieden. &lt;em&gt;Rubyripper&lt;/em&gt; funktioniert zwar noch, wird aber nicht
mehr weiterentwickelt. Um nicht irgendwann ohne ordentlichen CD-Ripper
auskommen zu müssen habe ich mich nach Alternativen umgesehen und bin
auf &lt;a href=&#34;http://thomas.apestaart.org/morituri/trac/&#34;&gt;&lt;em&gt;morituri&lt;/em&gt;&lt;/a&gt; gestoßen.&lt;br&gt;
&lt;em&gt;Morituri&lt;/em&gt; hat in den letzten Monaten bei mir sehr gute Arbeit
geleistet, weshalb ich das Programm allen ans Herz legen möchte, die
Wert auf einen fehlerfreien Rip legen. Installieren kann man &lt;em&gt;morituri&lt;/em&gt;
unter Debian aus den offiziellen
&lt;a href=&#34;https://packages.debian.org/search?keywords=morituri&amp;amp;searchon=names&amp;amp;suite=all&amp;amp;section=all&#34;&gt;Quellen&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Da ich nicht täglich CDs umwandle und mir die Syntax zum Ändern der
Standardpfade nicht merken möchte habe einen alias für folgenden Befehl
angelegt:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    rip cd rip --offset=6 --output-directory=&amp;#34;/home/martin/Musik/&amp;#34; --track-template=&amp;#34;%A/%y - %d/%t - %n&amp;#34; --disc-template=&amp;#34;%A/%y - %d/%y - %d&amp;#34; --working-directory=&amp;#34;/tmp/&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;h5 id=&#34;update-28032015&#34;&gt;[Update 28.03.2015]&lt;/h5&gt;
&lt;p&gt;Dabei bedeutet &lt;code&gt;rip cd rip&lt;/code&gt;, dass ich die CD rippen und das Datei- und
Ordnerschema über Templates festlegen möchte. Aus der manpage:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;rip cd rip&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;rip CD&lt;/p&gt;
&lt;p&gt;Usage: rip cd rip&lt;/p&gt;
&lt;p&gt;Rips a CD.&lt;/p&gt;
&lt;p&gt;Tracks are named according to the track template, filling in the
variables and adding the file extension.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Mit &lt;code&gt;--offset=6&lt;/code&gt; gebe ich den
&lt;a href=&#34;http://wiki.hydrogenaud.io/index.php?title=AccurateRip#Drive_read_offsets&#34;&gt;Offset&lt;/a&gt;
meines CD-Laufwerks an. Diesen habe ich zuvor per &lt;code&gt;rip offset find&lt;/code&gt; von
&lt;em&gt;morituri&lt;/em&gt; herausfinden lassen.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;--output-directory=&amp;quot;/home/martin/Musik/&amp;quot;&lt;/code&gt; legt fest in welchem Ordner
ich meine Musikdaten anlegen möchte.&lt;/p&gt;
&lt;p&gt;Durch &lt;code&gt;--track-template=&amp;quot;%A/%y - %d/%t - %n&amp;quot;&lt;/code&gt; bestimme ich die
Namenskonvention meiner Musikdateien und mittels
&lt;code&gt;--disc-template=&amp;quot;%A/%y - %d/%y - %d&amp;quot;&lt;/code&gt; die des
&lt;a href=&#34;https://de.wikipedia.org/wiki/Cuesheet&#34;&gt;Cuesheets&lt;/a&gt;, der Playlist und
der Logdatei.&lt;/p&gt;
&lt;p&gt;Die einzelnen Parameter kann man wieder der manpage entnehmen:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Tracks are named according to the track template, filling in the
variables and adding the file extension. Variables exclusive to the
track template are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;%t: track number&lt;/li&gt;
&lt;li&gt;%a: track artist&lt;/li&gt;
&lt;li&gt;%n: track title&lt;/li&gt;
&lt;li&gt;%s: track sort name&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Disc files (.cue, .log, .m3u) are named according to the disc
template, filling in the variables and adding the file extension.
Variables for both disc and track template are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;%A: album artist&lt;/li&gt;
&lt;li&gt;%S: album sort name&lt;/li&gt;
&lt;li&gt;%d: disc title&lt;/li&gt;
&lt;li&gt;%y: release year&lt;/li&gt;
&lt;li&gt;%r: release type, lowercase&lt;/li&gt;
&lt;li&gt;%R: Release type, normal case&lt;/li&gt;
&lt;li&gt;%x: audio extension, lowercase&lt;/li&gt;
&lt;li&gt;%X: audio extension, uppercase&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;Mit &lt;code&gt;--working-directory=&amp;quot;/tmp/&amp;quot;&lt;/code&gt; gebe ich lediglich an, dass die
temporären Dateien in &lt;code&gt;/tmp/&lt;/code&gt; gespeichert werden sollen. Da ich &lt;code&gt;/tmp/&lt;/code&gt;
im &lt;em&gt;RAM&lt;/em&gt; liegen habe, erspare ich mir hierdurch unnötige
Festplattenzugriffe.&lt;/p&gt;
&lt;p&gt;Hier ein Beispiel für die Ordner- und Dateistruktur, die ich mit diesem
alias erhalte:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    ls ~/Musik/Metallica/1988\ -\ …and\ Justice\ for\ All   
    01 - Blackened.flac               05 - The Shortest Straw.flac         09 - Dyers Eve.flac            
    02 - ...and Justice for All.flac  06 - Harvester of Sorrow.flac        1988 - …and Justice for All.cue
    03 - Eye of the Beholder.flac     07 - The Frayed Ends of Sanity.flac  1988 - …and Justice for All.log
    04 - One.flac                     08 - To Live Is to Die.flac          1988 - …and Justice for All.m3u
&lt;/code&gt;&lt;/pre&gt;&lt;h5 id=&#34;update-2015-06-27&#34;&gt;[Update 2015-06-27]&lt;/h5&gt;
&lt;p&gt;Morituri erstellt die Dateien mit falschen Berechtigungen:
&lt;a href=&#34;/2015/06/27/cd-ripper-morituri-falsche-dateirechte/&#34;&gt;Lösung&lt;/a&gt;&lt;/p&gt;
&lt;h5 id=&#34;update-2017-08-31&#34;&gt;[Update 2017-08-31]&lt;/h5&gt;
&lt;p&gt;Anscheinend ist die Weiterentwicklung von &lt;em&gt;morituri&lt;/em&gt; eingeschlafen, aber
es gibt einen Fork namens
&lt;a href=&#34;https://github.com/JoeLametta/whipper&#34;&gt;whipper&lt;/a&gt; der aktiv weiter
entwickelt wird. Leider gibt es &lt;a href=&#34;https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=850541&#34;&gt;derzeit kein
Debianpaket&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Sailfish: Bilder automatisch zur Owncloud hochladen</title>
      <link>/2015/03/05/sailfish-fotos-automatisch-zur-owncloud-hochladen/</link>
      <pubDate>Thu, 05 Mar 2015 00:00:00 +0000</pubDate>
      <guid>/2015/03/05/sailfish-fotos-automatisch-zur-owncloud-hochladen/</guid>
      <description>&lt;p&gt;Unter &lt;em&gt;Android&lt;/em&gt; habe ich die &lt;em&gt;Owncloud&lt;/em&gt;-App einzig zu dem Zweck genutzt
meine Bilder automatisiert in meine &lt;em&gt;Owncloud&lt;/em&gt; hochzuladen, wenn ich
eine WLAN-Verbindung hatte. Diese Funktion vermisse ich derzeit bei
meinem &lt;em&gt;Jolla&lt;/em&gt;. Es gibt zwar eine &lt;em&gt;Owncloud&lt;/em&gt;-App, aber diese hat wohl
diese Funktion nicht und außerdem habe ich es noch nicht geschafft mich
einzuloggen. Hier kommt mir entgegen, dass &lt;em&gt;Sailfish OS&lt;/em&gt; ein &lt;em&gt;Linux&lt;/em&gt; ist
und sogar standardmäßig &lt;em&gt;SSH&lt;/em&gt; und &lt;em&gt;rsync&lt;/em&gt; an Board hat.&lt;/p&gt;
&lt;p&gt;Ich habe mein &lt;em&gt;Jolla&lt;/em&gt; nun so automatisiert, dass es meine Bilder bei
WLAN-Verbindung automatisch in den &lt;em&gt;Owncloud&lt;/em&gt;-Ordner auf meinem
&lt;a href=&#34;https://uberspace.de&#34;&gt;uberspace&lt;/a&gt; hochlädt, den zuvor die &lt;em&gt;Android&lt;/em&gt;-App
benutzt hat. Dazu habe ich zuerst ein &lt;em&gt;SSH&lt;/em&gt;-Schlüsselpaar erstellt:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    ssh-keygen
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Den öffentlichen Schlüssel findet man nun in
&lt;code&gt;/home/nemo/.ssh/id_rsa.pub&lt;/code&gt; und muss ihn auf dem uberspace in die Datei
&lt;code&gt;/home/USER/.ssh/authorized_keys&lt;/code&gt; anhängen, wobei &lt;em&gt;USER&lt;/em&gt; hier und im
folgenden durch den eigenen Benutzernamen auf uberspace ersetzt werden
muss.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://blog.simon-dreher.de/jolla-foto-backup.html&#34;&gt;Hier&lt;/a&gt; habe ich eine
Anleitung gefunden, wie man einen automatischen Upload bei vorhandener
WLAN-Verbindung startet und leicht auf meine Bedürfnisse angepasst.&lt;/p&gt;
&lt;p&gt;Man legt auf dem &lt;em&gt;Jolla&lt;/em&gt; die Datei &lt;code&gt;~/.config/systemd/user/backup.path&lt;/code&gt;
mit diesem Inhalt an:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    [Unit]
    Description=Checks if paths changed or contain new images.

    [Path]
    PathChanged=%h/Pictures/Camera

    [Install]
    WantedBy=default.target
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Danach legt man die Datei &lt;code&gt;~/.config/systemd/user/backup.service&lt;/code&gt; und
trägt folgendes ein:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    [Unit]
    Description=Backs up files

    [Service]
    ExecStart=/home/nemo/backup.sh
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Schließlich muss man natürlich das eigentliche Script
&lt;code&gt;/home/nemo/backup.sh&lt;/code&gt; anlegen:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;#!/bin/sh

# Check if we&amp;#39;re on wlan
if [ $(ifconfig | grep -o wlan0) ]; then
    echo &amp;#34;WLAN used&amp;#34;
    # Start backup using rsync
    /usr/bin/rsync /home/nemo/Pictures/Camera/ -a USER@DOMAIN:/home/USER/html/owncloud/data/OWNCLOUD_USER/files/SofortUpload/
else
    echo &amp;#34;No WLAN&amp;#34;
    if [ -e /tmp/backup.lock ]; then
        echo &amp;#34;Another script is already waiting for WLAN to sync.&amp;#34;
        exit 0
    else
        # Wait for WLAN to come back
        touch /tmp/backup.lock
        until [ $(ifconfig | grep -o wlan0) ]; do
            echo &amp;#34;Still no WLAN&amp;#34;
            sleep 300
        done
        /usr/bin/rsync /home/nemo/Pictures/Camera/ -a USER@DOMAIN:/home/USER/html/owncloud/data/OWNCLOUD_USER/files/SofortUpload/
        rm /tmp/backup.lock
    fi
fi

exit
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Nun wird das Script wird per&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    chmod +x /home/nemo/backup.sh
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;ausführbar gemacht. Bei den beiden &lt;em&gt;rsync&lt;/em&gt;-Aufrufen sind natürlich
Benutzer, Domain, Owncloud-Benutzer und gewünschter Zielpfad anzupassen.
Über &lt;code&gt;sleep&lt;/code&gt; wird das Intervall in Sekunden eingestellt, in dem
abgefragt wird ob WLAN vorhanden ist wenn Bilder ohne WLAN-Verbindung
geschossen wurden.&lt;/p&gt;
&lt;p&gt;Abschließend kann man das Script zum testen manuell ausführen&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    systemctl --user start backup.path
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;und wenn alles funktioniert aktivieren:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    systemctl --user enable backup.path
&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    
    <item>
      <title>XMPP (Jabber) in Sailfish aktivieren</title>
      <link>/2015/03/04/xmpp-jabber-in-sailfish-aktivieren/</link>
      <pubDate>Wed, 04 Mar 2015 00:00:00 +0000</pubDate>
      <guid>/2015/03/04/xmpp-jabber-in-sailfish-aktivieren/</guid>
      <description>&lt;p&gt;Ich habe mich die ganze Zeit gewundert, wie wohl die Einbindung von
&lt;em&gt;XMPP&lt;/em&gt; in &lt;em&gt;Sailfish&lt;/em&gt; funktioniert, da ich ein Konto angelegt habe, dann
aber nirgends etwas davon gesehen habe. Ich finde die Aktivierung etwas
versteckt, deshalb möchte ich hier kurz beschreiben wie man &lt;em&gt;XMPP&lt;/em&gt; in
&lt;em&gt;Sailfish&lt;/em&gt; aktiviert.\&lt;/p&gt;
&lt;p&gt;Zuerst legt man unter &lt;code&gt;Einstellungen -&amp;gt; Konten&lt;/code&gt; ein Konto für XMPP an
und trägt die jeweiligen Benutzerdaten ein.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://files.mdosch.de/2015-03/sailfish_xmpp_konten.png&#34;&gt;&lt;img src=&#34;https://files.mdosch.de/2015-03/sailfish_xmpp_konten.png&#34; alt=&#34;Sailfish XMPP
Konteneinstellung&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Danach habe ich mich gewundert, wo ich denn nun meinen Onlinestatus und
meine Kontakte sehe. Um mit dem &lt;em&gt;XMPP&lt;/em&gt;-Account online zu gehen muss man
das Benachrichtigungsfeld öffnen (unten von außerhalb nach oben wischen)
und &lt;code&gt;Statusinformationen anzeigen&lt;/code&gt; auswählen.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://files.mdosch.de/2015-03/sailfish_xmpp_status.png&#34;&gt;&lt;img src=&#34;https://files.mdosch.de/2015-03/sailfish_xmpp_status.png&#34; alt=&#34;Sailfish XMPP Status
anzeigen&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Dort wählt man dann &lt;code&gt;Verfügbar&lt;/code&gt; und die Verbindung wird hergestellt.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://files.mdosch.de/2015-03/sailfish_xmpp_aktivierung.png&#34;&gt;&lt;img src=&#34;https://files.mdosch.de/2015-03/sailfish_xmpp_aktivierung.png&#34; alt=&#34;Sailfish XMPP
aktivierung&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Nachrichten kann man dann über die SMS-Funktion schreiben. Leider ist
die Integration in &lt;em&gt;Sailfish OS&lt;/em&gt; noch nicht perfekt:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Kontakte können nicht aus &lt;em&gt;Sailfish&lt;/em&gt; hinzugefügt werden&lt;/li&gt;
&lt;li&gt;Es werden nur die Kontakte angezeigt, die schon auf dem Server
vorhanden sind (keine Kontakte aus den CardDAV-Kontakten im
Adressbuch)&lt;/li&gt;
&lt;li&gt;&lt;em&gt;OTR&lt;/em&gt;-Verschlüsselung ist nicht möglich&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    
    <item>
      <title>Kurztipp: Webcam-Modul beim Systemstart entladen</title>
      <link>/2015/02/19/kurztipp-webcam-modul-beim-systemstart-entladen/</link>
      <pubDate>Thu, 19 Feb 2015 00:00:00 +0000</pubDate>
      <guid>/2015/02/19/kurztipp-webcam-modul-beim-systemstart-entladen/</guid>
      <description>&lt;p&gt;Ich führe nie Videochats durch und benutze die integrierte Webcam meines
Laptops nie. Damit nicht irgendwelche Programme ohne mein Wissen auf die
Webcam zugreifen können habe ich nun beschlossen das Modul automatisch
beim Systemstart zu entladen. Dazu fügt man folgende Zeile (irgendwo vor
&lt;code&gt;exit 0&lt;/code&gt;) in die Datei &lt;code&gt;/etc/rc.local&lt;/code&gt; ein:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    modprobe -r uvcvideo
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Ganz paranoide können die Webcam natürlich auch einfach abkleben. ;o)&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Acer C720: Trackpad-Unterstützung in Debian Jessie</title>
      <link>/2015/02/13/acer-c720-trackpad-unterstuetzung-in-debian-jessie/</link>
      <pubDate>Fri, 13 Feb 2015 00:00:00 +0000</pubDate>
      <guid>/2015/02/13/acer-c720-trackpad-unterstuetzung-in-debian-jessie/</guid>
      <description>&lt;p&gt;Bisher habe ich die Kernel mit Touchpad-Unterstützung für das &lt;em&gt;Acer
C720&lt;/em&gt; selbst bauen müssen und diese hier der Allgemeinheit zur Verfügung
gestellt. Mittlerweile wird das Trackpad auch vom Kernel in &lt;em&gt;Debian
Jessie&lt;/em&gt; unterstützt, wie man diesem
&lt;a href=&#34;https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=774209&#34;&gt;Bugreport&lt;/a&gt;
entnehmen kann. Ich habe den Kernel gerade installiert und kann
bestätigen, dass das Touchpad funktioniert.&lt;br&gt;
Aus diesem Grund wird es hier keine weiteren Kernel für das &lt;em&gt;C720&lt;/em&gt; geben
und ich empfehle jedem auf den Distributions-Kernel umzusteigen. Das
Touchpad funktioniert ab dieser Kernel-Version in &lt;em&gt;Debian&lt;/em&gt;:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    $apt-cache policy linux-image-3.16.0-4-amd64
    linux-image-3.16.0-4-amd64:
      Installiert:           3.16.7-ckt4-3
      Installationskandidat: 3.16.7-ckt4-3
      Versionstabelle:
     *** 3.16.7-ckt4-3 0
            900 http://ftp.debian.org/debian/ jessie/main amd64 Packages
            100 /var/lib/dpkg/status
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Ich finde es toll, dass Debian in diesem Fall so pragmatisch war und die
Unterstützung aus dem 3.17er Kernel in den 3.16er übernommen hat, da man
gemäß den Debian-Richtlinien sonst über den kompletten Lebenszyklus von
&lt;em&gt;Jessie&lt;/em&gt; auf selbstkompilierte Kernel zurückgreifen gemusst hätte.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Kurztipp: needrestart</title>
      <link>/2015/02/07/kurztipp-needrestart/</link>
      <pubDate>Sat, 07 Feb 2015 00:00:00 +0000</pubDate>
      <guid>/2015/02/07/kurztipp-needrestart/</guid>
      <description>&lt;p&gt;Ich habe &lt;a href=&#34;/2014/11/18/kurztipp-checkrestart/&#34;&gt;hier&lt;/a&gt; bereits das Programm
&lt;em&gt;checkrestart&lt;/em&gt; erwähnt. Mittlerweile habe ich die bessere Alternative
&lt;a href=&#34;https://packages.debian.org/search?keywords=needrestart&#34;&gt;needrestart&lt;/a&gt;
entdeckt. &lt;em&gt;Needrestart&lt;/em&gt; wird automatisch nach Paketinstallationen
aufgerufen und bietet die Möglichkeit die Dienste direkt neuzustarten.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Kurztipp: SSH als Proxy nutzen</title>
      <link>/2015/02/07/kurztipp-ssh-als-proxy-nutzen/</link>
      <pubDate>Sat, 07 Feb 2015 00:00:00 +0000</pubDate>
      <guid>/2015/02/07/kurztipp-ssh-als-proxy-nutzen/</guid>
      <description>&lt;p&gt;Wenn man mal schnell einen Tunnel benötigt, kann man das auch über &lt;em&gt;SSH&lt;/em&gt;
erledigen. Dazu muss man sich lediglich mit der Option &lt;code&gt;-D PORT&lt;/code&gt; zum
SSH-Server verbinden:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    ssh -D 5000 nutzer@example.com
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Danach trägt man &lt;code&gt;localhost&lt;/code&gt; und den gewählten Port als &lt;em&gt;SOCKS&lt;/em&gt;-Rechner
ein. Hier ein Beispiel für den Networkmanager von Gnome:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://files.mdosch.de/2015-02/network_configuration.png&#34;&gt;&lt;img src=&#34;https://files.mdosch.de/2015-02/network_configuration.png&#34; alt=&#34;Network configuration
Gnome&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Man darf natürlich nicht vergessen dies als Proxy in den jeweiligen
Anwendungen zu konfigurieren, z.B. im Firefox &lt;em&gt;&amp;quot;Proxy-Einstellungen des
Systems verwenden&amp;quot;&lt;/em&gt; auszuwählen.&lt;br&gt;
Möchte man lediglich im Firefox den Proxy verwenden kann man natürlich
auch die Netzwerkkonfiguration überspringen und den Server direkt im
Firefox eintragen.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Acer C720: Debian Kernel 3.18.4</title>
      <link>/2015/01/27/acer-c720-debian-kernel-3-18-4/</link>
      <pubDate>Tue, 27 Jan 2015 00:00:00 +0000</pubDate>
      <guid>/2015/01/27/acer-c720-debian-kernel-3-18-4/</guid>
      <description>&lt;p&gt;Update auf 3.18.4: &lt;a href=&#34;https://files.mdosch.de/acer-c720-kernel/&#34;&gt;Kernel&lt;/a&gt;,
&lt;a href=&#34;https://files.mdosch.de/acer-c720-headers/&#34;&gt;Kernel-Headers&lt;/a&gt;&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    md5sum linux-image-3.18.4-c720_20150127_amd64.deb 
    2645b03d2b2b56b5907d7d1798836580  linux-image-3.18.4-c720_20150127_amd64.deb

    md5sum linux-headers-3.18.4-c720_20150127_amd64.deb 
    98ef51bd177a0ed6c92de9496a280fd3  linux-headers-3.18.4-c720_20150127_amd64.deb
&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    
    <item>
      <title>Acer C720: Debian Kernel 3.18.3</title>
      <link>/2015/01/22/acer-c720-debian-kernel-3-18-3/</link>
      <pubDate>Thu, 22 Jan 2015 00:00:00 +0000</pubDate>
      <guid>/2015/01/22/acer-c720-debian-kernel-3-18-3/</guid>
      <description>&lt;p&gt;Heute gibt es mal wieder ein Kernel-Update für das Acer C720. Der Kernel
3.18.3 kann &lt;a href=&#34;https://files.mdosch.de/acer-c720-kernel/&#34;&gt;hier&lt;/a&gt;
heruntergeladen werden.&lt;br&gt;
Aufgrund einiger Nachfragen habe ich diesmal auch ein Paket für die
Kernel-Headers gebaut, das
&lt;a href=&#34;https://files.mdosch.de/acer-c720-headers/&#34;&gt;hier&lt;/a&gt; heruntergeladen
werden kann.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    md5sum linux-image-3.18.3-c720_20150122_amd64.deb 
    8b24c48d7535927450600f6a75ba0e6f  linux-image-3.18.3-c720_20150122_amd64.deb

    md5sum linux-headers-3.18.3-c720_20150122_amd64.deb 
    3b6936eb8b69a3159d9e85af8dc9e16f  linux-headers-3.18.3-c720_20150122_amd64.deb
&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    
    <item>
      <title>Kurztipp: Taschenrechner in der Gnome-Shell</title>
      <link>/2015/01/21/kurztipp-taschenrechner-in-der-gnome-shell/</link>
      <pubDate>Wed, 21 Jan 2015 00:00:00 +0000</pubDate>
      <guid>/2015/01/21/kurztipp-taschenrechner-in-der-gnome-shell/</guid>
      <description>&lt;p&gt;Mir fiel gerade durch Zufall auf, dass Gnome3 eine nette Funktion
mitbringt. Bei installiertem
&lt;a href=&#34;https://packages.debian.org/search?keywords=gnome-calculator&#34;&gt;Gnome-Calculator&lt;/a&gt;
können einfache Rechenaufgaben durchgeführt werden ohne diesen öffnen zu
müssen. Man öffnet einfach die Aktivitäten-Ansicht per &lt;code&gt;Super&lt;/code&gt;-Taste
(aka &lt;code&gt;Windows&lt;/code&gt;-Taste) und tippt los. :)&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://files.mdosch.de/2015-01/calc.png&#34;&gt;&lt;img src=&#34;https://files.mdosch.de/2015-01/calc.png&#34; alt=&#34;Taschenrechner der
Gnome-Shell&#34;&gt;&lt;/a&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Acer C720: Debian Kernel 3.18.1</title>
      <link>/2014/12/18/acer-c720-debian-kernel-3-18-1/</link>
      <pubDate>Thu, 18 Dec 2014 00:00:00 +0000</pubDate>
      <guid>/2014/12/18/acer-c720-debian-kernel-3-18-1/</guid>
      <description>&lt;p&gt;Heute gibt es mal wieder ein Update für das Acer C720. Der Kernel 3.18.1
kann &lt;a href=&#34;https://files.mdosch.de/acer-c720-kernel/&#34;&gt;hier&lt;/a&gt; heruntergeladen
werden.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    md5sum linux-image-3.18.1-c720_20141218_amd64.deb 
    e406ac505fbf480f001e37350ede8510  linux-image-3.18.1-c720_20141218_amd64.deb

    sha1sum linux-image-3.18.1-c720_20141218_amd64.deb 
    e4517e660ba83b64e7af934023195bb6232d03c3  linux-image-3.18.1-c720_20141218_amd64.deb
&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    
    <item>
      <title>Acer C720: Debian Kernel 3.17.5</title>
      <link>/2014/12/07/acer-c720-debian-kernel-3-17-5/</link>
      <pubDate>Sun, 07 Dec 2014 00:00:00 +0000</pubDate>
      <guid>/2014/12/07/acer-c720-debian-kernel-3-17-5/</guid>
      <description>&lt;p&gt;Der aktuelle Kernel für das C720 steht wieder hier zum
&lt;a href=&#34;https://files.mdosch.de/acer-c720-kernel/&#34;&gt;Download&lt;/a&gt; bereit.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    md5sum linux-image-3.17.5-c720_20141207_amd64.deb 
    c535a14e721d01ba8ac7433680234e68  linux-image-3.17.5-c720_20141207_amd64.deb

    sha1sum linux-image-3.17.5-c720_20141207_amd64.deb 
    ac69b2de40c4fcb759bcd1a4996ff53cb4d34f99  linux-image-3.17.5-c720_20141207_amd64.deb
&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    
    <item>
      <title>Kernel kompilieren für Anfänger</title>
      <link>/2014/11/20/kernel-kompilieren-fuer-anfaenger/</link>
      <pubDate>Thu, 20 Nov 2014 00:00:00 +0000</pubDate>
      <guid>/2014/11/20/kernel-kompilieren-fuer-anfaenger/</guid>
      <description>&lt;p&gt;In meiner (über) 10-jährigen Karriere als Linux-Anfänger kam ich
mittlerweile häufiger in die Situation einen Kernel selbst kompilieren
zu müssen. Es kam vor, dass Hardware erst ab einer neueren Version, als
in den Distributions-Quellen vorhanden, unterstützt wurde, oder dass im
&lt;a href=&#34;https://www.kernel.org/&#34;&gt;Upstream-Kernel&lt;/a&gt; bestimmte Patches noch nicht
integriert wurden (wie z.B. beim Touchpad für das &lt;a href=&#34;/tag/acer-c720/&#34;&gt;Acer
C720&lt;/a&gt;).&lt;br&gt;
Anleitungen gibt es zwar viele, aber häufig bekam ich trotzdem keinen
bootbaren Kernel heraus. Das Kompilieren eines eigenen Kernels war für
mich ein Buch mit sieben Siegeln. Irgendwann fand ich dann ein paar
Befehle, mit deren Hilfe sich ein Kernel für &lt;em&gt;Debian&lt;/em&gt; ganz einfach
kompilieren lässt.&lt;br&gt;
Natürlich kann man viel auf die eigene Hardware optimieren, wenn man
einen Kernel baut, aber dieser Eintrag soll die einfachste Möglichkeit
beschreiben einen funktionierenden Kernel auf Basis der
Distributionskonfiguration zu erstellen.&lt;/p&gt;
&lt;h5 id=&#34;vorbereitungen&#34;&gt;Vorbereitungen&lt;/h5&gt;
&lt;p&gt;Um unter Debian einen Kernel kompilieren zu können installiert man (als
&lt;em&gt;root&lt;/em&gt;) die folgenden (Meta-)Pakete:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    apt-get install build-essential kernel-package
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Dann benötigt man natürlich den Quellcode des Kernels, den man
kompilieren möchte z.B.:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.17.3.tar.xz
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Danach entpackt man diesen und wechselt in das Verzeichnis:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    tar -xvf linux-3.17.3.tar.xz
    cd linux-3.17.3
&lt;/code&gt;&lt;/pre&gt;&lt;h5 id=&#34;konfiguration-und-kernelbau&#34;&gt;Konfiguration und Kernelbau&lt;/h5&gt;
&lt;p&gt;Am einfachsten ist es die funktionierende Konfiguration des
Distributionskernels als Basis zu nehmen:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    make oldconfig
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Ist der zu kompilierende Kernel neuer als der aktuell verwendete erhält
man nun einige Fragen zu neuen Kernel-Modulen. Im Normalfall ist es
empfehlenswert die Vorgabe per &lt;code&gt;Return&lt;/code&gt; zu übernehmen. Sollte man den
Kernel wegen eines neuen Moduls bauen, so sollte man dies natürlich
auswählen (&lt;code&gt;y&lt;/code&gt; zum fest einkompilieren, &lt;code&gt;m&lt;/code&gt; um ein nachladbares Modul zu
bauen).&lt;br&gt;
Nun existiert im Verzeichnis eine Datei &lt;code&gt;.config&lt;/code&gt;. Möchte man bei
bestimmten Modulen eine andere Auswahl als im Distributionskernel
treffen muss man diese Datei editieren.&lt;/p&gt;
&lt;p&gt;Nun ist man schon beim letzten Schritt angelangt, dem Kompilieren des
Kernels. Theoretisch soll dieser Schritt auch als normaler Benutzer
funktionieren, aber ich musste vor diesem Schritt bisher zu &lt;em&gt;root&lt;/em&gt;
werden.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    make-kpkg --initrd --revision=20141120 -j4 --append-to-version=-eigenbau kernel_image
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Per &lt;code&gt;--revision&lt;/code&gt; legt man eine Nummer fest, die an die Kernel-Version
angehängt wird um eine Unterscheidung zwischen verschiedenen Builds zu
ermöglichen. Man könnte auch einfach von &lt;code&gt;1&lt;/code&gt; ab hochzählen, wenn man den
gleichen Kernel häufiger kompiliert. &lt;code&gt;-j4&lt;/code&gt; bewirkt, dass 4 Prozesse
parallel ausgeführt werden. Das beschleunigt den Vorgang, sofern man
über genug (virtuelle) Prozessoren verfügt. Auf einem Single-Core würde
ich empfehlen diese Option wegzulassen, auf einem Dualcore zu &lt;code&gt;-j2&lt;/code&gt;
raten und auf einem aktuellen Prozessor wie &lt;em&gt;i3/i5/i7&lt;/em&gt; stellt &lt;code&gt;-j4&lt;/code&gt; kein
Problem dar. Mit &lt;code&gt;--append-to-version=&lt;/code&gt; kann man einen String anhängen,
der in &lt;em&gt;GRUB&lt;/em&gt; angezeigt wird. Somit kann man leicht erkennen, welches
der selbstkompilierte Kernel ist. &lt;code&gt;kernel_image&lt;/code&gt; ist letzten Endes nur
die Anweisung ein Kernelpaket zu generieren. Benötigt man auch die
Kernel-Header (z.B. um selbst Kernel-Module zu kompilieren) hängt man
noch &lt;code&gt;kernel_headers&lt;/code&gt; an.&lt;/p&gt;
&lt;p&gt;Mit diesem Workflow baue ich seit Jahren erfolgreich Debianpakete aus
den Kernelquellen und weiß mittlerweile gar nicht mehr warum das jemals
ein Problem für mich darstellte.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Kurztipp: Suspend via systemd bei geschlossenem Laptop verhindern</title>
      <link>/2014/11/20/kurztipp-suspend-via-systemd-bei-geschlossenem-laptop-verhindern/</link>
      <pubDate>Thu, 20 Nov 2014 00:00:00 +0000</pubDate>
      <guid>/2014/11/20/kurztipp-suspend-via-systemd-bei-geschlossenem-laptop-verhindern/</guid>
      <description>&lt;p&gt;Ich habe gestern spasseshalber meinen Homeserver (eigentlich nur mein
ausrangiertes Notebook) auf &lt;em&gt;Jessie&lt;/em&gt; aktualisiert. Es war es schon mal
wert, weil ich jetzt endlich komfortabel aus dem &lt;em&gt;VLC&lt;/em&gt; per &lt;em&gt;DLNA/UPNP&lt;/em&gt;
auf meine Video- und Musiksammlung zugreifen kann. Leider ist der Server
immer kurz nach dem Start in &lt;em&gt;Suspend&lt;/em&gt; gegangen. Da ich das alte Laptop
als Server nutze steht es zusammengeklappt unter meinem Router, ich
greife ja sowieso nur über &lt;em&gt;SSH&lt;/em&gt; darauf zu. Da möchte ich natürlich
nicht, dass ein geschlossener Deckel bewirkt, dass das Notebook in
StandBy geht.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://m157q.logdown.com/posts/2013/10/15/arch-linux-systemd-disable-auto-suspend&#34;&gt;Hier&lt;/a&gt;
habe ich den Hinweis gefunden, wie man das unter &lt;em&gt;systemd&lt;/em&gt; verhindert:&lt;/p&gt;
&lt;p&gt;Man öffnet die Datei &lt;code&gt;/etc/systemd/logind.conf&lt;/code&gt; und ändert die Zeile&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    #HandleLidSwitch=suspend
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;folgendermaßen ab:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    HandleLidSwitch=ignore
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Danach startet man den Dienst (als root) neu:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    systemctl restart systemd-logind
&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    
    <item>
      <title>Kurztipp: checkrestart</title>
      <link>/2014/11/18/kurztipp-checkrestart/</link>
      <pubDate>Tue, 18 Nov 2014 00:00:00 +0000</pubDate>
      <guid>/2014/11/18/kurztipp-checkrestart/</guid>
      <description>&lt;p&gt;Natürlich ist es nicht genug &lt;a href=&#34;http://blog.chr.istoph.de/ohje-alles-gepacht-und-doch-verwundbar/&#34;&gt;nur Updates
einzuspielen&lt;/a&gt;,
sondern man muss auch die Dienste, welche die Bibliotheken verwenden
neustarten. Unter Debian kann man sich per &lt;em&gt;checkrestart&lt;/em&gt; aus dem Paket
&lt;a href=&#34;https://packages.debian.org/search?lang=de&amp;amp;searchon=names&amp;amp;keywords=debian-goodies&#34;&gt;debian-goodies&lt;/a&gt;
anzeigen lassen welche Programme oder Dienste einen Neustart benötigen.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Whatsapp mit Ende-zu-Ende-Verschlüsselung?</title>
      <link>/2014/11/18/whatsapp-mit-ende-zu-ende-verschluesselung/</link>
      <pubDate>Tue, 18 Nov 2014 00:00:00 +0000</pubDate>
      <guid>/2014/11/18/whatsapp-mit-ende-zu-ende-verschluesselung/</guid>
      <description>&lt;p&gt;Ich bin gerade per
&lt;a href=&#34;https://netzpolitik.org/2014/ueberraschung-whatsapp-verspricht-ende-zu-ende-verschluesselung/&#34;&gt;netzpolitik.org&lt;/a&gt;
über diesen &lt;a href=&#34;https://whispersystems.org/blog/whatsapp/&#34;&gt;Beitrag&lt;/a&gt;
gestolpert. Anscheinend soll &lt;a href=&#34;https://whispersystems.org/&#34;&gt;open
whispersystems&lt;/a&gt;
Ende-zu-Ende-Verschlüsselung in &lt;em&gt;WhatsApp&lt;/em&gt; integrieren.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Open whispersystems&lt;/em&gt; ist bereits durch ihren verschlüsselnden Messenger
&lt;em&gt;TextSecure&lt;/em&gt; und &lt;em&gt;RedPhone&lt;/em&gt; für verschlüsselte Telefonate ein Begriff.
Auch die Funktion per
&lt;a href=&#34;http://www.cyanogenmod.org/blog/whisperpush-secure-messaging-integration&#34;&gt;WhisperPush&lt;/a&gt;
verschlüsselte SMS unter &lt;a href=&#34;http://www.cyanogenmod.org&#34;&gt;cyanogenmod&lt;/a&gt; zu
versenden wurde von &lt;em&gt;open whispersystems&lt;/em&gt; realisiert.&lt;/p&gt;
&lt;p&gt;Wer hätte das gedacht? Ich bin zumindest erstaunt und beobachte mal wie
es weitergeht.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Acer C720: Debian Kernel 3.17.3</title>
      <link>/2014/11/15/acer-c720-debian-kernel-3-17-3/</link>
      <pubDate>Sat, 15 Nov 2014 00:00:00 +0000</pubDate>
      <guid>/2014/11/15/acer-c720-debian-kernel-3-17-3/</guid>
      <description>&lt;p&gt;Der aktuelle Kernel für das C720 steht zum
&lt;a href=&#34;https://files.mdosch.de/acer-c720-kernel/&#34;&gt;Download&lt;/a&gt;.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    md5sum linux-image-3.17.3-c720_20141114_amd64.deb 
    99b056c21825f0e03c7e550649391ef8  linux-image-3.17.3-c720_20141114_amd64.deb

    sha1sum linux-image-3.17.3-c720_20141114_amd64.deb 
    be8e9a4a0a7647eebe5816c5200575c065839431  linux-image-3.17.3-c720_20141114_amd64.deb
&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    
    <item>
      <title>Kurztipp: Live-CDs mit dem Acer C720 booten</title>
      <link>/2014/11/11/kurztipp-live-cds-mit-dem-acer-c720-booten/</link>
      <pubDate>Tue, 11 Nov 2014 00:00:00 +0000</pubDate>
      <guid>/2014/11/11/kurztipp-live-cds-mit-dem-acer-c720-booten/</guid>
      <description>&lt;p&gt;Bei meinen ersten Experimenten mit dem Chromebook &lt;em&gt;Acer C720&lt;/em&gt; wollte ich
natürlich zuerst mal eine Live-CD booten bevor ich mich an die
Installation wagte.&lt;br&gt;
Leider war es nicht möglich Live-CDs zu starten, da ich immer eine
Fehlermeldung erhielt, dass zu wenig Arbeitsspeicher verfügbar wäre.&lt;br&gt;
Bei den Kollegen von Arch habe ich eine
&lt;a href=&#34;https://bbs.archlinux.org/viewtopic.php?pid=1356681#p1356681&#34;&gt;Lösung&lt;/a&gt;
gefunden:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Im Auswahl-Menü von &lt;em&gt;GRUB&lt;/em&gt; die Taste &lt;code&gt;e&lt;/code&gt; drücken.&lt;/li&gt;
&lt;li&gt;In der mit &lt;code&gt;linux&lt;/code&gt; beginnenden Zeile &lt;code&gt;mem=1024MB&lt;/code&gt; am Ende einfügen&lt;/li&gt;
&lt;li&gt;Mittels &lt;code&gt;Ctrl+X&lt;/code&gt; den Bootvorgang fortsetzen&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Damit sollten auch die meisten Live-CDs mit dem &lt;em&gt;C720&lt;/em&gt; starten.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Acer C720: Debian Kernel 3.17.2</title>
      <link>/2014/11/01/acer-c720-debian-kernel-3-17-2/</link>
      <pubDate>Sat, 01 Nov 2014 00:00:00 +0000</pubDate>
      <guid>/2014/11/01/acer-c720-debian-kernel-3-17-2/</guid>
      <description>&lt;p&gt;Frisch kompiliert: Der aktuelle Kernel für das &lt;em&gt;C720&lt;/em&gt;.&lt;br&gt;
Wie üblich kann der Kernel
&lt;a href=&#34;https://files.mdosch.de/acer-c720-kernel/&#34;&gt;hier&lt;/a&gt; heruntergeladen
werden.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    md5sum linux-image-3.17.2-c720_20141101_amd64.deb 
    b21b35725af8401da5f8c7503403d3ae  linux-image-3.17.2-c720_20141101_amd64.deb

    sha1sum linux-image-3.17.2-c720_20141101_amd64.deb 
    c4a0a7c5820cc065809b0bf3ebae41394450f866  linux-image-3.17.2-c720_20141101_amd64.deb
&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    
    <item>
      <title>Kurztipp: Webseiten-Ladezeit durch Komprimierung beschleunigen</title>
      <link>/2014/11/01/kurztipp-webseiten-ladezeit-durch-komprimierung-beschleunigen/</link>
      <pubDate>Sat, 01 Nov 2014 00:00:00 +0000</pubDate>
      <guid>/2014/11/01/kurztipp-webseiten-ladezeit-durch-komprimierung-beschleunigen/</guid>
      <description>&lt;p&gt;Da mein Blog mittlerweile, abgesehen von den Kommentaren, rein statisch
ausgeliefert wird, dachte ich mir, dass sich die Ladezeit durch
Komprimierung der Dateien drastisch reduzieren müsste.&lt;br&gt;
Ich hatte mich bisher noch nie darüber informiert und war überrascht,
wie simpel sich das für &lt;em&gt;Apache&lt;/em&gt; konfigurieren lässt. Man muss lediglich
folgende Zeile zur &lt;code&gt;.htaccess&lt;/code&gt; hinzufügen:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    # Compression
    AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/javascript text/javascript
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Ich habe jetzt leider keine Vergleichsmessungen durchgeführt, aber rein
gefühlt ist die Seite nach dem Löschen des Browser-Caches und erneutem
Aufruf sofort komplett geladen.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Acer C720: Debian Kernel 3.17.1</title>
      <link>/2014/10/24/acer-c720-debian-kernel-3-17-1/</link>
      <pubDate>Fri, 24 Oct 2014 00:00:00 +0000</pubDate>
      <guid>/2014/10/24/acer-c720-debian-kernel-3-17-1/</guid>
      <description>&lt;p&gt;Heute gibt es mal wieder einen aktuellen Debian-Kernel für das
Chromebook &lt;em&gt;Acer C720&lt;/em&gt;. Wie üblich kann der Kernel
&lt;a href=&#34;https://files.mdosch.de/acer-c720-kernel/&#34;&gt;hier&lt;/a&gt; heruntergeladen
werden.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    md5sum linux-image-3.17.1-c720_20141023_amd64.deb 
    88a697be776819c06f401d6fd177e3fc  linux-image-3.17.1-c720_20141023_amd64.deb

    sha1sum linux-image-3.17.1-c720_20141023_amd64.deb 
    ff0ae439aa8be73fd31d5b01cc1f357c72c0914a  linux-image-3.17.1-c720_20141023_amd64.deb
&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    
    <item>
      <title>Kurztipp: bash -x</title>
      <link>/2014/10/01/kurztipp-bash-x/</link>
      <pubDate>Wed, 01 Oct 2014 00:00:00 +0000</pubDate>
      <guid>/2014/10/01/kurztipp-bash-x/</guid>
      <description>&lt;p&gt;Die meisten Scripte unter Linux dürften mit der
&lt;a href=&#34;http://tiswww.case.edu/php/chet/bash/bashtop.html&#34;&gt;bash&lt;/a&gt; &lt;em&gt;(The GNU
Bourne-Again SHell)&lt;/em&gt; durchgeführt werden. Möchte man ein Script debuggen
oder nach einer Änderung diese überprüfen, so ist es rech praktisch das
Script mittels &lt;code&gt;bash -x /pfad/zum/script&lt;/code&gt; im &lt;em&gt;Debug Mode&lt;/em&gt; aufzurufen.
Man erhält dann eine Rückmeldung über die durchgeführten Befehle und
sieht auch was in interne Variablen geschrieben wird.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    cat beispielscript.sh 
    #! /bin/bash

    VARIABLE1=1
    VARIABLE2=3
    VARIABLE3=$(echo &amp;#34;$VARIABLE1 + $VARIABLE2&amp;#34; | bc)

    echo &amp;#34;$VARIABLE3 + $VARIABLE1&amp;#34; | bc
&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    bash -x beispielscript.sh 
    + VARIABLE1=1
    + VARIABLE2=3
    ++ echo &amp;#39;1 + 3&amp;#39;
    ++ bc
    + VARIABLE3=4
    + echo &amp;#39;4 + 1&amp;#39;
    + bc
    5
&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    
    <item>
      <title>Acer C720: Debian Kernel 3.17-rc7</title>
      <link>/2014/09/30/acer-c720-debian-kernel-3-17-rc7/</link>
      <pubDate>Tue, 30 Sep 2014 00:00:00 +0000</pubDate>
      <guid>/2014/09/30/acer-c720-debian-kernel-3-17-rc7/</guid>
      <description>&lt;p&gt;Eine neue Version des Debian-Kernels für das Chromebook &lt;em&gt;Acer C720&lt;/em&gt;. Der
Kernel kann wieder &lt;a href=&#34;https://files.mdosch.de/acer-c720-kernel/&#34;&gt;hier&lt;/a&gt;
heruntergeladen werden.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    md5sum linux-image-3.17.0-rc7-c720_20140930_amd64.deb 
    5c69bdd75b231d55369a72188e6c659a  linux-image-3.17.0-rc7-c720_20140930_amd64.deb

    sha1sum linux-image-3.17.0-rc7-c720_20140930_amd64.deb 
    cb724d1151752ea763895e5781bb22f3c0efd1a5  linux-image-3.17.0-rc7-c720_20140930_amd64.deb
&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    
    <item>
      <title>Code-Schnippsel: Backup über SSH mit rsync</title>
      <link>/2014/09/29/code-schnippsel-backup-ueber-ssh-mit-rsync/</link>
      <pubDate>Mon, 29 Sep 2014 00:00:00 +0000</pubDate>
      <guid>/2014/09/29/code-schnippsel-backup-ueber-ssh-mit-rsync/</guid>
      <description>&lt;p&gt;Hier mal mein aktuelles Backup-Script mit dem ich aktuell sehr zufrieden
bin. Ich hatte das ganze schon mal
&lt;a href=&#34;/2013/08/01/meine-neue-backup-loesung/&#34;&gt;hier&lt;/a&gt; angerissen aber
mittlerweile hat sich doch einiges getan. War mein Backup-Script zu
Beginn einfach nur ein Befehl, der täglich mein Home mittels
&lt;a href=&#34;http://wiki.ubuntuusers.de/Cron#Anacron-Anac-h-ronistic-Cron&#34;&gt;rsync&lt;/a&gt;
über &lt;em&gt;SSH&lt;/em&gt; auf meinen Server kopiert und dabei die alte Version
überschrieben hat, so ist das ganze deutlich komplexer und flexibler.
Mittlerweile sichere ich mein &lt;em&gt;/home/&lt;/em&gt;, mein &lt;em&gt;/etc/&lt;/em&gt;, mein &lt;em&gt;/root/&lt;/em&gt; und
mein &lt;em&gt;/usr/local/&lt;/em&gt;. Da mein Backup auf dem Backup-Server auf einer
externen Festplatte gespeichert wird, hänge ich diese vor dem Backup ein
und nach dem Backup aus. Ich habe auch eine Rotation eingebaut um
Snapshots der letzten 7 Tage, sowie monatliche Snapshots des letzten
Jahres zur Verfügung zu stellen. Um nicht unnötig Speicher zu belegen
werden &lt;a href=&#34;https://de.wikipedia.org/wiki/Harter_Link&#34;&gt;hardlinks&lt;/a&gt; genutzt,
da sich große Datenmengen wie die Musiksammlung ja nicht groß ändern.&lt;br&gt;
Das Script liegt unter &lt;code&gt;/etc/cron.daily/ssh_backup&lt;/code&gt; und wird täglich von
&lt;a href=&#34;http://wiki.ubuntuusers.de/Cron#Anacron-Anac-h-ronistic-Cron&#34;&gt;anacron&lt;/a&gt;
ausgeführt.&lt;br&gt;
Um die Dateirechte zu übertragen benutze ich auf dem Server
&lt;a href=&#34;http://wiki.ubuntuusers.de/sudo&#34;&gt;sudo&lt;/a&gt;, da ich den &lt;em&gt;root&lt;/em&gt;-LogIn per
&lt;em&gt;SSH&lt;/em&gt; nicht erlaubt habe. Sollte der Backup-Server down sein erhalte ich
eine Email, die ich im &lt;a href=&#34;/2013/06/12/system-mails-von-linux-mit-thunderbird-abfragen/&#34;&gt;Thunderbird
empfange&lt;/a&gt;.&lt;br&gt;
Nach langer Rede folgt nun mein Backup-Script:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;#! /bin/bash


#### Diese Variablen bitte auf die eigenen Bedürfnisse anpassen
BACKUP_PFADE=&amp;#34;/home/martin /etc /root /usr/local&amp;#34;
                        # Pfade die gesichert werden sollen
ZIELPFAD=/mnt/backup    # Pfad auf dem Backupserver (ohne abschließenden /)
ZIEL_EXT=true       # true = Wechseldatenträger, false = interner Speicher
ANZAHL_TAGE=7           # Tägliches Backup für x Tage
BENUTZER=martin         # Benutzername auf dem Backupserver
SERVER=backup           # IP-Adresse oder Hostname des Backupservers
PORT=1418               # SSH-Port des Backupservers
MAC=88:ae:1d:31:cd:17   # MAC-Adresse des Servers für WOL
HISTORY=/root/.backup_hist      # Protokoll-Datei
LISTE=/root/installed_packages.txt  # Speicherort für Liste der gespeicherten Pakete

#### Don&amp;#39;t touch this; domdididom
#### Ab hier bitte nichts anfassen, wenn du nicht sicher weißt was du tust
MONAT=$(date +%-m)
VORMONAT=$(expr $MONAT - 1)
HOST=$(hostname)

# Backup-Server bereit?
if  ! ping -c 1 $SERVER &amp;gt; /dev/null 
    then

    # Backup-Server hochfahren
    wakeonlan $MAC 1&amp;gt;/dev/null

    sleep 60

    if ! ping -c 1 $SERVER &amp;gt; /dev/null 
        then
        echo &amp;#34;Backup konnte nicht durchgeführt werden. \nDer Server war nicht erreichbar.&amp;#34; | mail -s &amp;#39;Backup fehlgeschlagen!&amp;#39; $(whoami)@$HOST
        exit
    fi
fi

# Falls Zieldatenträger Wechselplatte, diese einhängen
if $ZIEL_EXT
    then
    ssh -p $PORT $BENUTZER\@$SERVER &amp;#34;sudo mount $ZIELPFAD&amp;#34; &amp;gt;/dev/null

    # Datei CURRENT zur Protokollierung der aktiven Backups existiert?
    if ! ssh -p $PORT $BENUTZER\@$SERVER stat $ZIELPFAD/CURRENT \&amp;gt; /dev/null 2\&amp;gt;\&amp;amp;1
            then
        ssh -p $PORT $BENUTZER\@$SERVER &amp;#34;touch $ZIELPFAD/CURRENT &amp;amp;&amp;amp; echo &amp;#34;0&amp;#34; &amp;gt; $ZIELPFAD/CURRENT&amp;#34;
    fi

    # CURRENT auslesen und inkrementieren
    CURRENT=$(ssh -p $PORT $BENUTZER\@$SERVER &amp;#34;cat $ZIELPFAD/CURRENT&amp;#34;)
    CURRENT=$(echo &amp;#34;$CURRENT + 1&amp;#34; | bc)
    ssh -p $PORT $BENUTZER\@$SERVER &amp;#34;echo $CURRENT &amp;gt; $ZIELPFAD/CURRENT&amp;#34;

fi

# Link 0 -&amp;gt; 12 (für Link auf letztes Backup im Januar) existiert?
if ! ssh -p $PORT $BENUTZER\@$SERVER stat $ZIELPFAD/$HOST/0 \&amp;gt; /dev/null 2\&amp;gt;\&amp;amp;1
    then
    ssh -p $PORT $BENUTZER\@$SERVER &amp;#34;ln -s $ZIELPFAD/$HOST/12 $ZIELPFAD/$HOST/0&amp;#34;
fi

# Bei Problemen zu Testzwecken auskommentieren
# ssh -v -p $PORT $BENUTZER@$SERVER /bin/true

# Eine Liste der installierten Pakete erstellen
dpkg --get-selections &amp;gt; $LISTE

# Backup per rsync
for PFAD in $BACKUP_PFADE
do
    rsync -az --delete --rsync-path=&amp;#39;sudo rsync&amp;#39; --rsh=&amp;#34;ssh -p $PORT&amp;#34; --link-dest=../$VORMONAT $PFAD $BENUTZER@$SERVER:$ZIELPFAD/$HOST/$MONAT
done

# Erstellen von Snapshots der letzten x Tage
ssh -p $PORT $BENUTZER\@$SERVER &amp;#34;sudo rm -rf $ZIELPFAD/$HOST/daily.$ANZAHL_TAGE&amp;#34;

if [ $ANZAHL_TAGE -gt 1 ]
    then

    for (( ANZAHL=$ANZAHL_TAGE ; ANZAHL &amp;gt;= 2 ; ANZAHL-- ))
    do
        ssh -p $PORT $BENUTZER\@$SERVER &amp;#34;sudo mv $ZIELPFAD/$HOST/daily.$(expr $ANZAHL - 1) $ZIELPFAD/$HOST/daily.$ANZAHL&amp;#34;
    done
fi

if [ ! $ANZAHL_TAGE -eq 0 ]
    then
    ssh -p $PORT $BENUTZER\@$SERVER &amp;#34;sudo mv $ZIELPFAD/$HOST/daily.latest $ZIELPFAD/$HOST/daily.1&amp;#34;
    ssh -p $PORT $BENUTZER\@$SERVER &amp;#34;sudo cp -al $ZIELPFAD/$HOST/$MONAT $ZIELPFAD/$HOST/daily.latest&amp;#34;
fi

# Falls Zieldatenträger Wechselplatte, diese aushängen sofern kein weiteres Backup aktiv ist (Variable Current)
if $ZIEL_EXT
        then
    CURRENT=$(ssh -p $PORT $BENUTZER\@$SERVER &amp;#34;cat $ZIELPFAD/CURRENT&amp;#34;)
    if [ $CURRENT -eq 1 ]
        then
        ssh -p $PORT $BENUTZER\@$SERVER &amp;#34;echo &amp;#34;0&amp;#34; &amp;gt; $ZIELPFAD/CURRENT&amp;#34;
        ssh -p $PORT $BENUTZER\@$SERVER &amp;#34;sudo umount $ZIELPFAD&amp;#34; &amp;gt;/dev/null
        else
        CURRENT=$(echo &amp;#34;$CURRENT - 1&amp;#34; | bc)
        ssh -p $PORT $BENUTZER\@$SERVER &amp;#34;echo &amp;#34;$CURRENT&amp;#34; &amp;gt; $ZIELPFAD/CURRENT&amp;#34;
    fi 
fi

# Datum und Uhrzeit des Backups protokollieren
date &amp;gt;&amp;gt; $HISTORY
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Das Script ist natürlich auf meine Bedürfnisse bzw. Vorlieben
zugeschneidert. Aber vielleicht kann es dem ein oder anderen als
Inspiration für ein eigenes Backup-Konzept dienen, oder man kann den ein
oder anderen Schnippsel für eigene Scripte verwerten.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;[Update 2014-10-01]&lt;/strong&gt;&lt;br&gt;
Da ich mittlerweile zwei Rechner mit Hilfe dieses Scriptes sichere habe
ich nun das Script um eine Funktion erweitert. Erfolgt das Backup auf
ein Wechselmedium wird eine Datei &lt;code&gt;CURRENT&lt;/code&gt; angelegt. Diese wird mit &lt;code&gt;0&lt;/code&gt;
initialisiert und beim Start des Backups inkrementiert. Steht am Ende
des Backups in der Datei eine Zahl &lt;code&gt;&amp;gt; 1&lt;/code&gt; ist noch ein anderes Backup
aktiv und die Zahl in &lt;code&gt;CURRENT&lt;/code&gt; wird dekrementiert und das Wechselmedium
nicht ausgehängt. Steht in &lt;code&gt;CURRENT&lt;/code&gt; eine &lt;code&gt;1&lt;/code&gt; wird eine &lt;code&gt;0&lt;/code&gt;
zurückgeschrieben und das Laufwerk ausgehängt.&lt;br&gt;
Das ganze ist eine &lt;em&gt;quick and dirty&lt;/em&gt; Lösung, da mir erst mal keine
bessere Lösung eingefallen ist. Wenn jemand einen eleganteren Weg kennt
bin ich für Hinweise offen.&lt;br&gt;
Ich habe jetzt ein paar mal die gleichzeitige Durchführung des Backups
an beiden Rechnern forciert und war mit der Funktion zufrieden
(&lt;code&gt;bash -x ...&lt;/code&gt; ist ganz nett um Scriptänderungen zu testen).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;[Update 2016-09-24]&lt;/strong&gt; Ich habe den Ausschnitt aus der &lt;em&gt;/etc/sudoers&lt;/em&gt;
entfernt, da dieser fehlerhaft war. Mittlerweile lasse ich meinen user
per &lt;em&gt;rsync&lt;/em&gt; alles ausführen, was nicht wirklich kritisch ist, da der
Server eh nicht von außen erreichbar ist.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Empfehlung: Clementine</title>
      <link>/2014/09/28/empfehlung-clementine/</link>
      <pubDate>Sun, 28 Sep 2014 00:00:00 +0000</pubDate>
      <guid>/2014/09/28/empfehlung-clementine/</guid>
      <description>&lt;h5 id=&#34;clementine&#34;&gt;Clementine&lt;/h5&gt;
&lt;p&gt;Mein Favorit unter den zahlreichen, für Linux verfügbaren, Audioplayern
ist &lt;a href=&#34;https://www.clementine-player.org/de/&#34;&gt;Clementine&lt;/a&gt;. &lt;em&gt;Clementine&lt;/em&gt;
ist kein reiner Audioplayer sondern ein Komplettpaket und bietet neben
der Bibliotheksverwaltung und Wiedergabe zahlreiche weitere Funktionen.
Man kann mit &lt;em&gt;Clementine&lt;/em&gt; auch Musik umkodieren, Cover herunterladen,
Tags editieren und vieles mehr. Ein Feature das mir bei vielen anderen
Playern gefehlt hat ist die Einbindung von Geräten und das automatische
Umkodieren. Das klingt seltsam, aber ich weiß nicht wie ich die Funktion
benennen soll also erkläre ich es in groben Zügen: Ich binde ein
externes Gerät (z.B. Handy, mp3-Player oder USB-Stick) in &lt;em&gt;Clementine&lt;/em&gt;
ein. Darauf kann ich &lt;em&gt;Clementine&lt;/em&gt; dem Gerät unterstützte Formate (z.B.
mp3, flac oder ogg) zuordnen. Klicke ich nun ein Album an und wähle
&lt;code&gt;An das Gerät senden&lt;/code&gt; wird die Musik vor der Übertragung automatisch
umkodiert, wenn die Musik als &lt;em&gt;flac&lt;/em&gt; vorliegt, das Gerät aber nur &lt;em&gt;mp3&lt;/em&gt;
unterstützt.&lt;br&gt;
Ansonsten bietet &lt;em&gt;Clementine&lt;/em&gt; eigentlich alle wesentlichen Funktionen,
die andere Audioplayer/Bibliotheksverwaltungen auch bieten. Da
&lt;em&gt;Clementine&lt;/em&gt; mit der Zielsetzung entwickelt wird einen Audioplayer in
der Art von &lt;a href=&#34;https://amarok.kde.org/&#34;&gt;Amarok&lt;/a&gt; in Version 1 zur Verfügung
zu stellen sollte &lt;em&gt;Clementine&lt;/em&gt; vielen bekannt vorkommen. &lt;em&gt;Amarok&lt;/em&gt; war
ein toller Audioplayer, den ich gerne benutzte, der mir aber nach den
großen Umbauten in Version 2 nicht mehr gefiel. Diese Lücke schließt
&lt;em&gt;Clementine&lt;/em&gt; bei mir seit längerem.&lt;/p&gt;
&lt;p&gt;Hier ein Überblick über die Funktionen von der &lt;em&gt;Clementine&lt;/em&gt;-Homepage:&lt;/p&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Durchsuchen und Abspielen Ihrer lokalen Musiksammlung.&lt;/li&gt;
&lt;li&gt;Internetradio hören, von Spotify, Grooveshark, SomaFM, Magnatune,
Jamendo, SKY.fm, Digitally Imported, JAZZRADIO.com, Soundcloud,
Icecast und Subsonic servers.&lt;/li&gt;
&lt;li&gt;Suchen und Lieder abspielen, die Sie hoch geladen haben auf Box,
Dropbox, Google Drive, und OneDrive&lt;/li&gt;
&lt;li&gt;Erstellen intelligenter sowie dynamischer Wiedergabelisten.&lt;/li&gt;
&lt;li&gt;Wiedergabelisten mit Reitern, Im- und Exportieren von M3U, XSPF,
PLS und ASX.&lt;/li&gt;
&lt;li&gt;Unterstützung für Cuesheets.&lt;/li&gt;
&lt;li&gt;Abspielen von Audio-CDs.&lt;/li&gt;
&lt;li&gt;Visualisierungen von projectM.&lt;/li&gt;
&lt;li&gt;Liedtextte, Biografien und Bilder der Künstler.&lt;/li&gt;
&lt;li&gt;Konvertieren von Musik in die Formate MP3, Ogg Vorbis, Ogg Speex,
FLAC oder AAC.&lt;/li&gt;
&lt;li&gt;Bearbeiten der Metadaten von MP3- und OGG-Dateien, Organisieren
Ihrer Musik.&lt;/li&gt;
&lt;li&gt;Abrufen fehlender Metadaten von MusicBrainz.&lt;/li&gt;
&lt;li&gt;Podcasts entdecken und herunterladen.&lt;/li&gt;
&lt;li&gt;Fehlende Albentitelbilder von Last.fm und Amazon herunterladen.&lt;/li&gt;
&lt;li&gt;Plattformübergreifend - funktioniert unter Linux, Mac OS X und
Windows.&lt;/li&gt;
&lt;li&gt;Native Schreibtischbenachrichtigungen unter Linux (libnotify) und
Mac OS X (Growl).&lt;/li&gt;
&lt;li&gt;Fernsteuerung mittels Android-Gerät, Wii-Fernbedienung, MPRIS oder
Befehlszeile.&lt;/li&gt;
&lt;li&gt;Kopieren von Musik auf Ihren iPod, iPhone, MTP- oder
USB-Massenspeicher.&lt;/li&gt;
&lt;li&gt;Warteschlangenverwaltung.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href=&#34;https://files.mdosch.de/2014-09/clementine.png&#34;&gt;&lt;img src=&#34;https://files.mdosch.de/2014-09/clementine.png&#34; alt=&#34;Clementine&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h5 id=&#34;clementine-remote&#34;&gt;Clementine-Remote&lt;/h5&gt;
&lt;p&gt;Als Fernbedienung verwende ich
&lt;a href=&#34;https://play.google.com/store/apps/details?id=de.qspool.clementineremote&#34;&gt;Clementine-Remote&lt;/a&gt;
um &lt;em&gt;Clementine&lt;/em&gt; mit meinem &lt;em&gt;Android&lt;/em&gt;-Handy zu bedienen.
&lt;em&gt;Clementine-Remote&lt;/em&gt; verbindet sich per &lt;em&gt;WLAN&lt;/em&gt; mit meinem Rechner, was
ich praktische finde da ich Bluetooth sowohl am Rechner, als auch am
Handy immer ausgeschaltet habe.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://files.mdosch.de/2014-09/clementine_remote.png&#34;&gt;&lt;img src=&#34;https://files.mdosch.de/2014-09/clementine_remote.png&#34; alt=&#34;Clementine-Remote&#34;&gt;&lt;/a&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Acer C720: Debian Kernel 3.17-rc6</title>
      <link>/2014/09/23/acer-c720-debian-kernel-3-17-rc6/</link>
      <pubDate>Tue, 23 Sep 2014 00:00:00 +0000</pubDate>
      <guid>/2014/09/23/acer-c720-debian-kernel-3-17-rc6/</guid>
      <description>&lt;p&gt;Eine neue Version des Debian-Kernels für das Chromebook &lt;em&gt;Acer C720&lt;/em&gt;. Der
Kernel kann wieder &lt;a href=&#34;https://files.mdosch.de/acer-c720-kernel/&#34;&gt;hier&lt;/a&gt;
heruntergeladen werden.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    md5sum linux-image-3.17.0-rc6-c720_20140923_amd64.deb 
    97676f972d04459e004a473448622c93  linux-image-3.17.0-rc6-c720_20140923_amd64.deb

    sha1sum linux-image-3.17.0-rc6-c720_20140923_amd64.deb 
    456d8d58479cd6b84cebe8ce847593ebe11396bd  linux-image-3.17.0-rc6-c720_20140923_amd64.deb
&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    
    <item>
      <title>Suchfeld für den eigenen Blog</title>
      <link>/2014/09/22/suchfeld-fuer-den-eigenen-blog/</link>
      <pubDate>Mon, 22 Sep 2014 00:00:00 +0000</pubDate>
      <guid>/2014/09/22/suchfeld-fuer-den-eigenen-blog/</guid>
      <description>&lt;p&gt;Ich bin noch am überlegen, ob ich ein Suchfeld einbauen soll. Einerseits
finde ich es praktisch, andererseits weiß ich derzeit nicht genau wo ich
ein Suchfeld unterbringen sollte ohne dass es den optischen Eindruck
stört.&lt;/p&gt;
&lt;p&gt;Eine Möglichkeit eine Suche in einen statischen Blog einzubinden ist es
eine externe Suchmaschine wie &lt;a href=&#34;https://duckduckgo.com&#34;&gt;DuckDuckGo&lt;/a&gt; oder
&lt;a href=&#34;https://ixquick.de/deu&#34;&gt;Ixquick&lt;/a&gt; zu nutzen. Das geht glücklicherweise
in reinem &lt;em&gt;HTML&lt;/em&gt; ohne Einbinden von Scripten o.ä. bedingt aber, dass zum
Suchen auf eine externe Seite weitergeleitet werden muss.&lt;/p&gt;
&lt;p&gt;Unabhängig davon, ob ich es nun einbaue oder nicht: Beim
&lt;a href=&#34;http://blog.schockwellenreiter.de/&#34;&gt;Schockwellenreiter&lt;/a&gt; habe ich eine
Möglichkeit gesehen, wie man ein &lt;em&gt;DuckDuckGo&lt;/em&gt;-Suchfeld einbinden kann.
Mit den entsprechenden &lt;a href=&#34;https://duckduckgo.com/params&#34;&gt;Parametern&lt;/a&gt; kann
man die Suche noch etwas anpassen.&lt;/p&gt;
&lt;p&gt;Hier der Code:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    &amp;lt;form action=&amp;#34;https://duckduckgo.com/&amp;#34; method=&amp;#34;post&amp;#34;&amp;gt;
        &amp;lt;input type=&amp;#34;hidden&amp;#34; name=&amp;#34;kl&amp;#34; value=&amp;#34;de-de&amp;#34;/&amp;gt;
        &amp;lt;input type=&amp;#34;hidden&amp;#34; name=&amp;#34;kp&amp;#34; value=&amp;#34;1&amp;#34;/&amp;gt;
        &amp;lt;input type=&amp;#34;hidden&amp;#34; name=&amp;#34;kh&amp;#34; value=&amp;#34;1&amp;#34;/&amp;gt;
        &amp;lt;input type=&amp;#34;hidden&amp;#34; name=&amp;#34;sites&amp;#34; value=&amp;#34;blog.mdosch.de&amp;#34;/&amp;gt;
        &amp;lt;input type=&amp;#34;text&amp;#34; name=&amp;#34;q&amp;#34; size=&amp;#34;30&amp;#34; maxlength=&amp;#34;255&amp;#34; placeholder=&amp;#34;DuckDuckGo-Suche&amp;#34;/&amp;gt;  
        &amp;lt;input type=&amp;#34;submit&amp;#34; value=&amp;#34;Suchen&amp;#34; /&amp;gt;
    &amp;lt;/form&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;So würde das Suchfeld, ohne jegliche Anpassungen über &lt;em&gt;CSS&lt;/em&gt;, aussehen:&lt;/p&gt;
&lt;p&gt;Mal schauen ob ich Lust dazu finde meinen Blog mit einem Suchfeld zu
verunstalten. :D&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Code-Schnippsel: Dateien automatisch in Unterordner verschieben</title>
      <link>/2014/09/20/code-schnippsel-dateien-automatisch-in-unterordner-verschieben/</link>
      <pubDate>Sat, 20 Sep 2014 00:00:00 +0000</pubDate>
      <guid>/2014/09/20/code-schnippsel-dateien-automatisch-in-unterordner-verschieben/</guid>
      <description>&lt;p&gt;Auf meinem Server, der hauptsächlich für Backups dient, habe ich einen
Samba-Share eingerichtet auf dem u.a. meine Filmsammlung liegt. Bisher
habe ich im Samba-Share &lt;em&gt;Videos&lt;/em&gt; einfach direkt die Filme abgelegt, aber
nun kamen auch einige Serien dazu, die natürlich in einen eigenen Ordner
verfrachtet wurden. Die Serienordner sind zusätzlich noch in Unterordner
er jeweiligen Staffeln untergliedert.&lt;/p&gt;
&lt;p&gt;Nun hatte ich Filme direkt im &lt;em&gt;root&lt;/em&gt; und Serien in Unterordnern. Das
gefiel mir nicht, also wollte ich meine Filme ebenfalls in Unterordner
verschieben. Meine Filmsammlung ist zwar nicht rießig, aber manuell
Unterordner zu erstellen und die Dateien zu verschieben ist eine
Strafarbeit, die ich mir nicht antun wollte. Ergo: Ich habe mir ein
kleines Script zusammengestümpert. Vielleicht kann es ja mal jemand
brauchen. Sollte es dafür ein Tool geben und ich habe mir umsonst
Gedanken über die Lösung gemacht (im Endeffekt war es ja recht einfach
zu lösen, wie man am Script sehen kann), wäre ich natürlich über einen
Hinweis dankbar. ;)&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;#! /bin/bash

EXTENSIONS=&amp;#34;.mkv .avi .mpg .mp4&amp;#34;

for EXTENSION in $EXTENSIONS
do
    for VIDEO in $(ls *$EXTENSION)
    do mkdir $(basename $VIDEO $EXTENSION) &amp;amp;&amp;amp; mv $VIDEO $(basename $VIDEO $EXTENSION)
    done
done
&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    
    <item>
      <title>Code-Schnippsel: Upload-Script (SSH)</title>
      <link>/2014/09/20/code-schnippsel-upload-script-ssh/</link>
      <pubDate>Sat, 20 Sep 2014 00:00:00 +0000</pubDate>
      <guid>/2014/09/20/code-schnippsel-upload-script-ssh/</guid>
      <description>&lt;p&gt;Ich habe &lt;a href=&#34;/2014/01/17/upload-script-fuer-den-eigenen-webspace/&#34;&gt;hier&lt;/a&gt;
schon mal ein kleines Script zum automatischen Upload von Dateien auf
einen Webserver vorgestellt. Mittlerweile habe ich das um ein paar
Funktionen erweitert.&lt;br&gt;
Da ich kein &lt;em&gt;Bash&lt;/em&gt;- oder &lt;em&gt;Linux&lt;/em&gt;-Profi bin gilt es natürlich vorsichtig
zu sein. Für mich funktioniert das Script aber seit einer Weile ohne
Probleme.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;#! /bin/bash
# License GPL v3 or later
# https://www.gnu.org/copyleft/gpl.html


ZIELPFAD=&amp;#39;Zielpfad auf dem Server eingeben&amp;#39;
KONTO=&amp;#39;z.B. user@example.com&amp;#39;
URL=&amp;#39;user.example.com&amp;#39;

if [ $# -ne 1 ] || [ $1 = help ]
    then
    if [ $# -eq 2 ] &amp;amp;&amp;amp; [ $1 = delete ]
        then 
        EINGABE=$(printf %q $2)
        NAME=$(basename $EINGABE)
        echo &amp;#34;Anzeige der gefundenen Treffer:&amp;#34;
        ssh $KONTO -t &amp;#34;find $ZIELPFAD -name $NAME&amp;#34;
        read -s -p &amp;#34;Soll(en) die Datei(en) gelöscht werden? (j/N)&amp;#34; -N 1 ANTWORT
            if [ -z $ANTWORT ]
                then
                exit
            fi
            if [ $ANTWORT != &amp;#34;j&amp;#34; ]
                then
                exit
            fi
        echo &amp;#34;&amp;#34; #Kosmetik
        ssh $KONTO -t &amp;#34;find $ZIELPFAD -name $NAME -delete&amp;#34;
        exit
    fi
    PROGRAMM=$(basename $0)
    echo &amp;#34;$PROGRAMM - ein einfaches Uploadscript.&amp;#34;
    echo 
    echo &amp;#34;Benutzung:&amp;#34;
    echo &amp;#34;$PROGRAMM Datei         - lädt die Datei auf den Server&amp;#34;
    echo &amp;#34;$PROGRAMM delete Datei  - löscht die Datei vom Server&amp;#34;
    echo &amp;#34;$PROGRAMM help          - Hilfe&amp;#34;
    exit
fi

EINGABE=$(printf %q $1)
PFAD=$(realpath $EINGABE)
NAME=$(basename $EINGABE)
DATE=$(date +%Y-%m)

if [ -z $PFAD ]
then
    exit
fi

if ssh $KONTO test -e \&amp;#39;$ZIELPFAD/$DATE/$NAME\&amp;#39;
then
    echo Datei ist schon vorhanden und wurde nicht überschrieben.
else
    rsync -avzP $PFAD $KONTO:\&amp;#39;$ZIELPFAD/$DATE/\&amp;#39;
    ssh $KONTO -t &amp;#34;chmod 744 $ZIELPFAD/$DATE/$NAME&amp;#34;
    echo &amp;#34;&amp;#34; # Kosmetik
    echo Gespeichert unter: $URL/$DATE/$NAME
fi
&lt;/code&gt;&lt;/pre&gt;&lt;h5 id=&#34;update-2017-08-24&#34;&gt;[Update 2017-08-24]&lt;/h5&gt;
&lt;p&gt;Ich habe heute mal wieder in mein Updatescript geschaut und
festgestellt, dass &lt;code&gt;chmod 744&lt;/code&gt; besser ist als &lt;code&gt;chmod 755&lt;/code&gt;.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Meine Gnome-Shell Extensions</title>
      <link>/2014/09/19/meine-gnome-shell-extensions/</link>
      <pubDate>Fri, 19 Sep 2014 00:00:00 +0000</pubDate>
      <guid>/2014/09/19/meine-gnome-shell-extensions/</guid>
      <description>&lt;p&gt;Ich nutze mittlerweile die &lt;a href=&#34;http://gnome.org&#34;&gt;Gnome-Shell&lt;/a&gt; (früher
nutzte ich Gnome2, kurz KDE3, länger XFCE, länger Fluxbox, ganz kurz
KDE4, testweise E16) und mag die Gnome-Shell (aka Gnome3) recht gerne.
Entgegen den ganzen Rants im Netz finde ich, dass man die Gnome-Shell
effizienter nutzen kann als Gnome 2.&lt;br&gt;
Ich möchte die dynamischen Workspaces nicht mehr missen und mag, dass
sich die Gnome-Shell gut mit der Tastatur bedienen lässt. Hatte ich
unter Gnome2 noch immer eine Maus dabei, so kann ich diese seit der
Gnome-Shell getrost zu Hause lassen. Eigentlich stöpsel ich nicht mal
mehr zu Hause eine Maus an. Das Argument die Gnome-Shell sei &lt;em&gt;für
Touchpanels&lt;/em&gt; oder &lt;em&gt;kleine Bildschirme&lt;/em&gt; konzipiert kann ich also nicht
nachvollziehen (habe ein Notebook mit 15,4&amp;quot; Display und einer Auflösung
von 1920x1080).&lt;/p&gt;
&lt;p&gt;Soviel zur Gnome-Shell im Allgemeinen. Womit viele Kritiker aber Recht
haben ist, dass die Gnome-Shell nicht mehr alle Funktionen von Gnome2
zur Verfügung stellt. Die Gnome-Shell liefert quasi eine Basis und
stellt eine Schnittstelle für Erweiterungen bereit, damit man sich nach
eigenem Gusto &lt;a href=&#34;http://extensions.gnome.org&#34;&gt;Erweiterungen&lt;/a&gt; installieren
kann.&lt;br&gt;
Mittlerweile haben sich bei mir ein paar Standard-Erweiterungen
herauskristallisiert, die ich sofort nachinstalliere wenn ich ein neues
Gerät einrichte, da sie für mich einfach &lt;em&gt;dazu gehören&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Das sind:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://extensions.gnome.org/extension/6/applications-menu/&#34;&gt;Applications
Menu&lt;/a&gt;&lt;br&gt;
Ich fand es schade, dass irgendwann in der Gnome-Shell das
Anwendungsmenü abgeschafft wurde. Im Normalfall bin ich zwar durch
Drücken der Super-Taste und Tippen des Namens schneller. Ab und an
weiß man aber bei erst kürzlich installierten Anwendungen den Namen
nicht. Da ist es praktisch sich durch das Menü durchhangeln zu
können.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&#34;https://files.mdosch.de/2014-09/applications-menu.png&#34;&gt;&lt;img src=&#34;https://files.mdosch.de/2014-09/applications-menu.png&#34; alt=&#34;Applications
Menu&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://extensions.gnome.org/extension/751/audio-output-switcher/&#34;&gt;Audio Output
Switcher&lt;/a&gt;&lt;br&gt;
Ich habe in der Küche ein Paar kleine USB-Boxen stehen, die zwar
nicht den besten Klang bringen, aber die integrierten
Laptop-Lautsprecher bei weitem übertrumpfen. Im Wohnzimmer schließe
ich einen USB-DAC an, an dem mein Verstärker und an diesem meine
Lautsprecher hängen. Außerdem nutze ich die integrierten
Lautsprecher meines Notebooks, wenn ich unterwegs bin. D.h. ich
wechsle öfters das Ausgabegerät. Meistens macht &lt;em&gt;pulseaudio&lt;/em&gt; das
selbstständig, aber manchmal funktioniert der Wechsel nicht. Da ist
die Extension &lt;em&gt;Audio Output Switcher&lt;/em&gt; ganz hilfreich, da ich bequem
über das Menu umschalten kann und nicht in die Einstellungen
wechseln muss.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&#34;https://files.mdosch.de/2014-09/audio-chooser.png&#34;&gt;&lt;img src=&#34;https://files.mdosch.de/2014-09/audio-chooser.png&#34; alt=&#34;Audio Output
Chooser&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://extensions.gnome.org/extension/517/caffeine/&#34;&gt;Caffeine&lt;/a&gt;&lt;br&gt;
Manchmal möchte man nicht, dass der Bildschirm abdunkelt, das Laptop
in Standby geht oder der Bildschirmschoner anspringt. Schaut man
Filme mit einem Mediaplayer werden diese Funktionen automatisch
deaktiviert. Bei Flash-Videos im Internet funktioniert das nicht
immer. Hier hilft die Extension &lt;em&gt;Caffeine&lt;/em&gt;. Bei mir aktiviert sie
sich automatisch, sobald ein Video im Vollbild dargestellt wird
(auch bei Flash-Videos von Webseiten), kann aber auch manuell durch
Klick auf das Kaffee-Tassen-Symbol aktiviert werden.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&#34;https://files.mdosch.de/2014-09/caffeine.png&#34;&gt;&lt;img src=&#34;https://files.mdosch.de/2014-09/caffeine.png&#34; alt=&#34;Caffeine&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://extensions.gnome.org/extension/752/gpaste-integration/&#34;&gt;GPaste-Integration&lt;/a&gt;&lt;br&gt;
Häufig möchte man etwas einfügen und wundert sich, weil nicht
eingefügt wird was man einzufügen beabsichtigte. Nach kurzer
Verwirrung wird klar, dass man in der Zwischenzeit etwas anderes in
die Zwischenablage kopiert hat. In diesem Fall öffne ich die
&lt;a href=&#34;https://packages.debian.org/search?keywords=gpaste&#34;&gt;GPaste&lt;/a&gt;-Integration
in Gnome3 und wähle den entsprechenden Eintrag in der Historie.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&#34;https://files.mdosch.de/2014-09/gpaste.png&#34;&gt;&lt;img src=&#34;https://files.mdosch.de/2014-09/gpaste.png&#34; alt=&#34;GPaste-Integration&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://extensions.gnome.org/extension/55/media-player-indicator/&#34;&gt;Media Player
Indicator&lt;/a&gt;&lt;br&gt;
Nicht essentiell, aber eine nette Spielerei auf die ich nicht mehr
verzichten möchte. Im Menü wird das aktuell gespielte Stück
angezeigt. Durch Klick auf den Namen des Mediaplayers wird dieser
geöffnet. Man kann in diesem Menü auch direkt die Wiedergabe stoppen
oder pausieren, sowie ein Lied vor- oder zurückspringen.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&#34;https://files.mdosch.de/2014-09/media-player.png&#34;&gt;&lt;img src=&#34;https://files.mdosch.de/2014-09/media-player.png&#34; alt=&#34;Media Player
Indicator&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://extensions.gnome.org/extension/750/openweather/&#34;&gt;OpenWeather&lt;/a&gt;&lt;br&gt;
Ein Wetter-Plugin der schicken Sorte. :)&lt;br&gt;
&lt;strong&gt;Nachtrag:&lt;/strong&gt; Es wird ein
&lt;a href=&#34;http://www.openweathermap.org/appid&#34;&gt;API-Key&lt;/a&gt; benötigt.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&#34;https://files.mdosch.de/2014-09/weather.png&#34;&gt;&lt;img src=&#34;https://files.mdosch.de/2014-09/weather.png&#34; alt=&#34;OpenWeather&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://packages.debian.org/search?keywords=gnome-shell-timer&#34;&gt;Timer&lt;/a&gt;&lt;br&gt;
Wenn ich gerade Essen im Ofen habe und weiß, dass ich in nächster
Zeit am Rechner sitze stelle ich gerne den &lt;em&gt;Gnome-Shell-Timer&lt;/em&gt;,
statt einer normalen Küchenuhr oder eines Timers im Handy. Ich sehe
dann rechts oben in der Gnome-Shell den &lt;em&gt;Countdown&lt;/em&gt; ablaufen und
sobald die Zeit abgelaufen ist, wird die Oberfläche abgedunkelt und
ich muss den Ablauf quittieren bevor ich weiter arbeiten kann. Es
besteht also keine Gefahr, dass meine Pizza verbrennt weil ich von
einer interessanten Webseite oder dem Umbau eines Scriptes gebannt
bin. :)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&#34;https://files.mdosch.de/2014-09/timer.png&#34;&gt;&lt;img src=&#34;https://files.mdosch.de/2014-09/timer.png&#34; alt=&#34;Timer&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;So, das war eine kurze Vorstellung der von mir präferierten
Erweiterungen. &lt;strong&gt;Was sind für euch unverzichtbare Erweiterungen?&lt;/strong&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Acer C720: Debian Kernel 3.17-rc4</title>
      <link>/2014/09/14/acer-c720-debian-kernel-3-17-rc4/</link>
      <pubDate>Sun, 14 Sep 2014 00:00:00 +0000</pubDate>
      <guid>/2014/09/14/acer-c720-debian-kernel-3-17-rc4/</guid>
      <description>&lt;p&gt;Ich habe heute mal einen neuen Kernel für das Acer C720 gebaut. Der
Kernel kann mittlerweile direkt aus den Quellen gebaut werden, da ab
3.17-rc1 die Touchpad-Patches direkt im Kernel integriert sind.&lt;/p&gt;
&lt;p&gt;Der Kernel kann wieder &lt;a href=&#34;https://files.mdosch.de/acer-c720-kernel/&#34;&gt;hier&lt;/a&gt;
heruntergeladen werden.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    md5sum linux-image-3.17.0-rc4-c720_20140914_amd64.deb 
    1d1a93c9b8408e37da2161c7b1835be3  linux-image-3.17.0-rc4-c720_20140914_amd64.deb

    sha1sum linux-image-3.17.0-rc4-c720_20140914_amd64.deb 
    75ac3fd13dcc96f93bb7ea3a2b59dc662bed1729  linux-image-3.17.0-rc4-c720_20140914_amd64.deb
&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    
    <item>
      <title>Acer Chromebook C720: Legacy Boot dauerhaft aktivieren</title>
      <link>/2014/09/14/acer-chromebook-c720-legacy-boot-dauerhaft-aktivieren/</link>
      <pubDate>Sun, 14 Sep 2014 00:00:00 +0000</pubDate>
      <guid>/2014/09/14/acer-chromebook-c720-legacy-boot-dauerhaft-aktivieren/</guid>
      <description>&lt;p&gt;Nachdem ich mein &lt;a href=&#34;/2013/12/04/debian-gnulinux-auf-dem-chromebook-acer-c720-installieren/&#34;&gt;Acer
C720&lt;/a&gt;
mehrere Wochen nicht benutzte stand ich vor dem Problem, dass ich nicht
mehr in den Legacy-Modus zum booten kam. Scheinbar ging die Einstellung
verloren als der Akku länger entladen war und ich konnte mein Debian
nicht mehr booten.&lt;/p&gt;
&lt;p&gt;Jetzt habe ich &lt;a href=&#34;http://www.circuidipity.com/c720-sidbook.html&#34;&gt;hier&lt;/a&gt;
einen Weg gefunden den Legacy-Modus dauerhaft zu aktivieren (Abschnitt
2.1) und hoffe, dass mir das dann nicht mehr passiert. Der Vorteil der
neuen Lösung: Ich spare mir das Gehampel mit &lt;em&gt;Strg+L&lt;/em&gt; bei jedem Booten.
Der Nachteil: &lt;strong&gt;Durch das Öffnen des C720 erlischt die Garantie!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Vorgehensweise in groben Zügen:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;ChromeOS&lt;/em&gt;
&lt;a href=&#34;https://support.google.com/chromebook/answer/1080595?hl=en&#34;&gt;wiederhergestellt&lt;/a&gt;
(&lt;strong&gt;Datenverlust&lt;/strong&gt;)&lt;/li&gt;
&lt;li&gt;Alle Schrauben der Unterseite entfernen und Deckel vorsichtig
abnehmen (&lt;strong&gt;Garantieverlust!&lt;/strong&gt;)&lt;/li&gt;
&lt;li&gt;Schreibschutz-Schraube entfernen (&lt;a href=&#34;http://www.circuidipity.com/images/c720-chromebook-annotated-innards.png&#34;&gt;Schraube
7&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Developer-Modus aktivieren
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;ESC + F3&lt;/code&gt; gedrückt halten und Powerbutton drücken&lt;/li&gt;
&lt;li&gt;Die Nachfolgenden Fragen und Warnungen mit &lt;code&gt;CTRL + D&lt;/code&gt; quittieren&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Nachdem &lt;em&gt;ChromeOS&lt;/em&gt; gebootet hat: Terminal mit &lt;code&gt;ALT + CTRL + F2&lt;/code&gt;
öffnen&lt;/li&gt;
&lt;li&gt;Als &lt;code&gt;chronos&lt;/code&gt; einloggen (kein Passwort)&lt;/li&gt;
&lt;li&gt;Mit &lt;code&gt;sudo su&lt;/code&gt; zum Superuser werden&lt;/li&gt;
&lt;li&gt;Einstellungen schreiben:
&lt;code&gt;/usr/share/vboot/bin/set_gbb_flags.sh 0x489&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;C720 herunterfahren: &lt;code&gt;shutdown -h now&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Schreibschutz-Schraube einschrauben&lt;/li&gt;
&lt;li&gt;Deckel wieder aufsetzen und alle Schrauben anziehen&lt;/li&gt;
&lt;li&gt;Debian von einem &lt;a href=&#34;https://www.debian.org/releases/stable/amd64/ch04s03.html.de#usb-copy-isohybrid&#34;&gt;USB-Stick
installieren&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Das Schöne ist, dass die Patches für das Touchpad des &lt;em&gt;Acer C720&lt;/em&gt; ab
Version &lt;a href=&#34;/2014/09/14/acer-c720-debian-kernel-3-17-rc4/&#34;&gt;3.17-rc1&lt;/a&gt; direkt
im Kernel enthalten sind. D.h. man muss keinen Kernel mehr patchen,
sondern muss ihn nur kompilieren.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Codeschnippsel: Prozentsatz der FLAC-Dateien ermitteln</title>
      <link>/2014/09/14/codeschnippsel-prozentsatz-der-flac-dateien-ermitteln/</link>
      <pubDate>Sun, 14 Sep 2014 00:00:00 +0000</pubDate>
      <guid>/2014/09/14/codeschnippsel-prozentsatz-der-flac-dateien-ermitteln/</guid>
      <description>&lt;p&gt;Seit einiger Zeit rippe ich meine CDs nur noch als FLAC &lt;em&gt;(Free Lossless
Audio Codec)&lt;/em&gt;, da ich CD-Qualität haben möchte, wenn ich schon für die
CD bezahlt habe. Ob ich den Unterschied zu guten MP3s wirklich hören
kann oder nicht ist mir dabei egal, ich möchte prinzipiell die beste
Qualität haben. Außerdem kostet Speicherplatz ja kaum noch Geld.&lt;br&gt;
Da ich aber teilweise auch MP3s gekauft habe und einige CDs meiner
Sammlung beschädigt und nicht mehr zu rippen waren geistern auch noch
viele andere Dateien in meiner Sammlung herum. Heute wollte ich mal
wissen zu welchem Prozentsatz meine Sammlung denn aus FLAC-Dateien
besteht. Unter Linux kann man sowas ja recht einfach lösen, indem man
ein kleines Script schreibt:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;#! /bin/bash

MUSIKSAMMLUNG=~/Musik/
FLAC=$(find $MUSIKSAMMLUNG -iname &amp;#39;*.flac&amp;#39; | wc -l)
OTHER=&amp;#34;mp3 ogg m4a&amp;#34;
GESAMT=$FLAC

for EXT in $OTHER
do GESAMT=$(echo $GESAMT + $(find $MUSIKSAMMLUNG -iname &amp;#34;*.$EXT&amp;#34; | wc -l) | bc)
done

VERHAELTNIS=$(echo &amp;#34;$FLAC * 100 / $GESAMT&amp;#34; | bc)

echo &amp;#34;$VERHAELTNIS Prozent FLAC.&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Das Ergebnis war mit 43% leider etwas enttäuschend, aber da ich nur noch
selten MP3-Downloads kaufe (ich hab halt auch gern die CD physisch im
Regal stehen) wird sich der Wert auch noch bessern. :)&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Die fish-shell</title>
      <link>/2014/09/11/die-fish-shell/</link>
      <pubDate>Thu, 11 Sep 2014 00:00:00 +0000</pubDate>
      <guid>/2014/09/11/die-fish-shell/</guid>
      <description>&lt;p&gt;Gerade bin ich über &lt;a href=&#34;http://fishshell.com/&#34;&gt;fish&lt;/a&gt; (&lt;em&gt;friendly interactive
shell&lt;/em&gt;) gestolpert, eine recht schicke Shell die ich in nächster Zeit
mal probeweise benutzen werde. Bisher habe ich die
&lt;a href=&#34;/2013/06/21/zsh-als-bash-ersatz/&#34;&gt;ZSH&lt;/a&gt; genutzt.&lt;br&gt;
Was mir bis jetzt positiv aufgefallen ist:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Syntax-Highlightning während des Schreibens&lt;/li&gt;
&lt;li&gt;Gute Auto-Vervollständigung (ähnlich der ZSH)&lt;/li&gt;
&lt;li&gt;History wird bereits beim Tippen durchsucht (Strg+R entfällt)&lt;/li&gt;
&lt;li&gt;Fish kommt mir flotter als die ZSH vor&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Leider weicht die fish-Syntax von der gewohnten Bash-Syntax ab. Aber ich
denke daran kann ich mich gewöhnen.&lt;/p&gt;
&lt;h3 id=&#34;installation&#34;&gt;Installation&lt;/h3&gt;
&lt;p&gt;Unter Debian lässt sich fish einfach über die Paketverwaltung
installieren:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    apt-get install fish
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;einrichtung&#34;&gt;Einrichtung&lt;/h3&gt;
&lt;p&gt;Um fish zur Standard-Shell für den aktuellen Nutzer zu konfigurieren
gibt man folgendes ein:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    chsh -s $(which fish)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;wenn man die Bash oder ZSH nutzt, bzw.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    chsh -s (which fish)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;wenn man schon fish nutzt.&lt;/p&gt;
&lt;p&gt;Will man den, meiner meiner Meinung nach nervigen, Willkommensgruß nach
dem Start von fish deaktvieren kann man dies tun indem man&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    set fish_greeting
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;in die Datei &lt;code&gt;~/.config/fish/config.fish&lt;/code&gt; einträgt.&lt;/p&gt;
&lt;h5 id=&#34;alias-konfiguration&#34;&gt;Alias-Konfiguration&lt;/h5&gt;
&lt;p&gt;Aliase sind bei fish als Funktionen realisiert. Um einen Alias
einzurichten legt man eine Datei mit der Endung &lt;em&gt;.fish&lt;/em&gt; unter
&lt;code&gt;~/.config/fish/functions/&lt;/code&gt; ab.&lt;/p&gt;
&lt;p&gt;Beispiel:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    function update; apt-get update; and apt-get dist-upgrade -y; end
&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    
    <item>
      <title>2 Klicks für mehr Datenschutz</title>
      <link>/2014/09/07/2-klicks-fuer-mehr-datenschutz/</link>
      <pubDate>Sun, 07 Sep 2014 00:00:00 +0000</pubDate>
      <guid>/2014/09/07/2-klicks-fuer-mehr-datenschutz/</guid>
      <description>&lt;p&gt;Ich selbst benutze zwar kein &lt;em&gt;Facebook&lt;/em&gt;, &lt;em&gt;Google+&lt;/em&gt; oder &lt;em&gt;Twitter&lt;/em&gt;
(mehr), aber da es doch einige gibt, die diese Dienste regelmäßig nutzen
möchte ich diesen die Möglichkeit geben Blogbeiträge einfach zu teilen.
Das darf nur nicht dazu führen, dass bei jedem Seitenaufruf automatisch
Daten an diese Dienste übertragen werden und Leser, die diese Dienste
nicht nutzen getrackt werden.&lt;/p&gt;
&lt;p&gt;Da kommt das Script von
&lt;a href=&#34;http://www.heise.de/ct/artikel/2-Klicks-fuer-mehr-Datenschutz-1333879.html&#34;&gt;heise&lt;/a&gt;
ins Spiel. Es sorgt dafür, dass die Share-Buttons erst per Klick
&amp;quot;scharf geschaltet&amp;quot; werden müssen. Bevor dies passiert werden keine
Daten von diesen Seiten geladen. Das lässt sich leicht mit den
Firefox-AddOns
&lt;a href=&#34;https://addons.mozilla.org/de/firefox/addon/requestpolicy/&#34;&gt;RequestPolicy&lt;/a&gt;
oder &lt;a href=&#34;https://addons.mozilla.org/de/firefox/addon/noscript/&#34;&gt;NoScript&lt;/a&gt;
überprüfen.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;[Update 2014-09-20]&lt;/strong&gt;&lt;br&gt;
Ich habe die Buttons durch einfache
&lt;a href=&#34;/2014/09/20/social-media-jetzt-als-einfache-textlinks/&#34;&gt;Text-Links&lt;/a&gt;
ersetzt.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>blog.mdosch.de jetzt statisch</title>
      <link>/2014/09/07/blog-mdosch-de-jetzt-statisch/</link>
      <pubDate>Sun, 07 Sep 2014 00:00:00 +0000</pubDate>
      <guid>/2014/09/07/blog-mdosch-de-jetzt-statisch/</guid>
      <description>&lt;p&gt;Ich habe es ja &lt;a href=&#34;/2014/02/01/blog-mdosch-de-bald-statisch/&#34;&gt;hier&lt;/a&gt; schon
mal angedeutet, dass ich evtl. auf einen statischen Blog umsteigen
werde. Jetzt habe ich nach langer Suche den Blog-Generator gefunden, der
mir gefällt: &lt;a href=&#34;http://posativ.org/acrylamid/&#34;&gt;Acrylamid&lt;/a&gt;. Ich habe
zwischenzeitlich so einige getestet, z.B.
&lt;a href=&#34;http://jekyllrb.com/&#34;&gt;Jekyll&lt;/a&gt;, &lt;a href=&#34;http://getnikola.com/&#34;&gt;Nikola&lt;/a&gt;,
&lt;a href=&#34;http://blog.getpelican.com/&#34;&gt;Pelikan&lt;/a&gt; und
&lt;a href=&#34;http://www.steve.org.uk/Software/chronicle/&#34;&gt;Chronicle&lt;/a&gt;, aber
&lt;em&gt;Acrylamid&lt;/em&gt; hat mir jetzt einfach gut gefallen.&lt;/p&gt;
&lt;p&gt;Ich habe auch einige, bzw. fast alle, der
&lt;a href=&#34;/2014/01/16/wordpress-alternativen/&#34;&gt;hier&lt;/a&gt; vorgeschlagenen dynamischen
Blogsysteme ausprobiert, aber keines hat mir so richtig zugesagt.&lt;/p&gt;
&lt;p&gt;Was mir an &lt;em&gt;Acrylamid&lt;/em&gt; gefällt:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Schreiben in &lt;em&gt;Markdown&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;Kein langsames Webinterface&lt;/li&gt;
&lt;li&gt;(vermutl.) schnellere Seite&lt;/li&gt;
&lt;li&gt;Die Permalink-Struktur bleibt erhalten&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Einen Nachteil haben statische Blogs: Die Kommentare. Aber da konnte ich
mir mit &lt;a href=&#34;http://posativ.org/isso/&#34;&gt;Isso&lt;/a&gt; helfen. &lt;del&gt;Leider ist da gerade
noch ein Bug drin, denn die Kommentare werden derzeit nicht angezeigt.
Aber ich denke das werde ich in nächster Zeit beheben können.&lt;/del&gt; &lt;em&gt;Isso&lt;/em&gt;
habe ich nach
&lt;a href=&#34;http://blog.posativ.org/2014/isso-und-uberspace-de/&#34;&gt;dieser&lt;/a&gt; Anleitung
problemlos einrichten können.&lt;/p&gt;
&lt;p&gt;Ich merke gerade, wie angenehm es ist in
&lt;a href=&#34;http://www.nano-editor.org/&#34;&gt;nano&lt;/a&gt; diesen Beitrag zu schreiben und
nicht mit &lt;em&gt;Wordpress&lt;/em&gt; herumhantieren zu müssen. Ich habe in letzter Zeit
deswegen auch viel weniger geschrieben, da ich keine Lust mehr auf
&lt;em&gt;Wordpress&lt;/em&gt; hatte und die Zeit lieber genutzt habe um Alternativen zu
testen.&lt;/p&gt;
&lt;p&gt;Es kann natürlich sein, dass der Blog sich in den nächsten Tagen noch
ein bisschen verändert, da evtl. noch ein paar Kleinigkeiten anpasse.
Generell bin ich aber mit dem aktuellen Stand sehr zufrieden. :)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;[Update]&lt;/strong&gt;&lt;br&gt;
Mittlerweile sollte die Kommentarfunktion problemlos funktionieren.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Saubere Benutzertrennung in Debian</title>
      <link>/2014/04/24/saubere-benutzertrennung-in-debian/</link>
      <pubDate>Thu, 24 Apr 2014 00:00:00 +0000</pubDate>
      <guid>/2014/04/24/saubere-benutzertrennung-in-debian/</guid>
      <description>&lt;p&gt;Da ich bisher Debian nur als Einzelbenutzersystem im privaten Bereich
nutze ist mir das bisher noch nie aufgefallen, aber in der
Standardeinstellung können alle Benutzer lesend auf das Home-Verzeichnis
aller Benutzer zugreifen.&lt;br&gt;
Auch wenn das für mich persönlich wenig relevant ist möchte ich mein
System, aus Prinzip, relativ sicher vorkonfigurieren. Dazu gehört für
mich auch eine saubere Trennung der einzelnen Benutzer. Vielleicht
richte ich ja auch irgendwann mal einen weiteren Benutzer auf einem
meiner Rechner ein und dann ist es von Vorteil, wenn alles bereits
ordentlich eingerichtet ist und ich mich dann nicht mehr damit befassen
muss.&lt;/p&gt;
&lt;p&gt;Damit Dateien und Verzeichnisse im jeweiligen home nicht mehr für andere
Benutzer zugänglich sind genügt es&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    dpkg-reconfigure -plow adduser
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;auszuführen. Dies wirkt sich aber nicht auf bereits vorhandene Benutzer
aus, weshalb man auch folgendes einstellen sollte:&lt;/p&gt;
&lt;p&gt;Um neu angelegte Dateien nicht mehr für alle Benutzbar zugänglich zu
machen ändert man einfach den &lt;em&gt;UMASK&lt;/em&gt;-Wert in der Datei
`/etc/login.defs` von `022` auf `027`.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    UMASK      027
    …
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Um die Änderungen zu übernehmen muss man folgende Zeile an die Datei
&lt;code&gt;/etc/pam.d/common-session&lt;/code&gt; anhängen:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    session optional   pam_umask.so
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Weitere Informationen zu &lt;em&gt;UMASK&lt;/em&gt; kann man dem
&lt;a href=&#34;http://manpages.debian.org/cgi-bin/man.cgi?query=umask&amp;amp;apropos=0&amp;amp;sektion=0&amp;amp;manpath=Debian+7.0+wheezy&amp;amp;format=html&amp;amp;locale=en&#34;&gt;manual&lt;/a&gt;
entnehmen.&lt;/p&gt;
&lt;p&gt;Das wirkt sich aber nicht auf bereits vorhandene Benutzer und deren
Verzeichnisse/Dateien aus. Um bereits vorhandene Dateien für andere
Benutzer unzugänglich zu machen genügt dieser Befehl:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    chmod 750 /home/*
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Vielen Dank an alle Beteiligten dieses
&lt;a href=&#34;https://debianforum.de/forum/viewtopic.php?f=27&amp;amp;t=148824&#34;&gt;Threads&lt;/a&gt; im
df.de. Besonderer Dank geht an &lt;em&gt;smutbert&lt;/em&gt;, der die hier erwähnten
Lösungen beschrieben hat. 😉&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Chromebook Acer C720: Kernel 3.14</title>
      <link>/2014/04/02/chromebook-acer-c720-kernel-3-14/</link>
      <pubDate>Wed, 02 Apr 2014 00:00:00 +0000</pubDate>
      <guid>/2014/04/02/chromebook-acer-c720-kernel-3-14/</guid>
      <description>&lt;p&gt;Ich habe gerade einen neuen Debian-Kernel für das Acer C720 gebaut:
&lt;a href=&#34;https://files.mdosch.de/acer-c720-kernel/&#34;&gt;3.14&lt;/a&gt;&lt;br&gt;
Der Kernel wurde unter Debian Testing gebaut und ich kann nicht
garantieren, dass er unter Debian Stable funktioniert, aber bei so neuer
Hardware würde ich eh Debian Testing installieren.&lt;br&gt;
Leider habe ich derzeit kein Debian auf dem Acer C720 installiert, aber
es gibt ein
&lt;a href=&#34;/2013/12/04/debian-gnulinux-auf-dem-chromebook-acer-c720-installieren/#comment-445&#34;&gt;Feedback&lt;/a&gt;,
dass er funktioniert.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>mdosch.de jetzt mit (etwas) Inhalt</title>
      <link>/2014/03/20/mdosch-de-jetzt-mit-etwas-inhalt/</link>
      <pubDate>Thu, 20 Mar 2014 00:00:00 +0000</pubDate>
      <guid>/2014/03/20/mdosch-de-jetzt-mit-etwas-inhalt/</guid>
      <description>&lt;p&gt;Da ich öfter darauf angesprochen wurde, dass meine Homepage &lt;em&gt;kaputt&lt;/em&gt; sei
habe ich nun auch eine kleine Seite direkt unter
&lt;a href=&#34;http://mdosch.de&#34;&gt;mdosch.de&lt;/a&gt; hochgeladen.&lt;br&gt;
Die Seite ist nicht wirklich umfangreich und dient nur dazu Leute nicht
mit einem &lt;em&gt;404&lt;/em&gt; zu verwirren. 😄&lt;/p&gt;
&lt;p&gt;Beim Design habe ich &lt;a href=&#34;http://liquorix.net&#34;&gt;liquorix&lt;/a&gt; als Basis genommen
und an meine Bedürfnisse angepasst. Da ich von HTML und Webdesign keine
Ahnung habe war das natürlich mehr &lt;em&gt;trial and error&lt;/em&gt; als Können, aber
ich bin mit dem Ergebnis recht zufrieden.&lt;/p&gt;
&lt;p&gt;Bevor gemeckert wird: Im Quelltext von &lt;em&gt;liquorix&lt;/em&gt; wurde &lt;em&gt;CC BY 1.0&lt;/em&gt; als
Lizenz genannt. Die Hintergrundgrafiken vom Roundcube-Theme
&lt;a href=&#34;https://github.com/roundcube/roundcubemail/blob/master/skins/larry/images&#34;&gt;Larry&lt;/a&gt;
sind &lt;em&gt;CC BY-SA 3.0&lt;/em&gt; lizenziert.&lt;br&gt;
Das Endergebnis habe ich selbst auch unter &lt;em&gt;CC BY-SA 3.0&lt;/em&gt; gestellt.
Sollte das Design also gefallen: Benutzt es.&lt;/p&gt;
&lt;p&gt;In einem Anflug von Größenwahn habe ich die Seite sogar auf
&lt;a href=&#34;https://github.com/mdosch/mdosch.de&#34;&gt;Github&lt;/a&gt; gestellt. 😀&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Die bessere WhatsApp-Alternative: Surespot</title>
      <link>/2014/02/21/die-bessere-whatsapp-alternative-surespot/</link>
      <pubDate>Fri, 21 Feb 2014 00:00:00 +0000</pubDate>
      <guid>/2014/02/21/die-bessere-whatsapp-alternative-surespot/</guid>
      <description>&lt;p&gt;In einem &lt;a href=&#34;/2014/02/20/whatsapp-alternative-whistle-im/&#34;&gt;Kommentar zu meinem letzten
Beitrag&lt;/a&gt; wurde ich auf
&lt;a href=&#34;https://www.surespot.me/&#34;&gt;surespot&lt;/a&gt; hingewiesen und unter allen
WhatsApp-Alternativen, die ich bisher angetestet habe gefällt es mir am
besten.&lt;/p&gt;
&lt;p&gt;Die Vorteile:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Quelloffen&lt;/li&gt;
&lt;li&gt;Ende-zu-Ende-Verschlüsselung&lt;/li&gt;
&lt;li&gt;Kein Telefonbuchzugriff [1]&lt;/li&gt;
&lt;li&gt;kostenlos (für mich nicht so wichtig)&lt;/li&gt;
&lt;li&gt;Verfügbar für Android und iOS&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Nachteile:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Bisher geringe Verbreitung&lt;/li&gt;
&lt;li&gt;(&lt;a href=&#34;https://twitter.com/surespot/status/436797232667295746&#34;&gt;noch&lt;/a&gt;)
kein Gruppenchat&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ich werde auf jeden Fall meinen Schwerpunkt erst mal auf &lt;em&gt;surespot&lt;/em&gt;
legen und hoffen, dass ich einige Leute dazu bewegen kann dies ebenfalls
zu tun. Ich habe mir auch schon für knapp 2€ die
Sprachnachrichtenfunktion gekauft. Ich benötige diese zwar nicht, aber
ich wollte dieses vielversprechende Projekt unterstützen und ein Betrag
dieser Größenordnung tut ja niemandem weh. 😉&lt;/p&gt;
&lt;p&gt;[1] Kontaktdaten kann man über einen QR-Code, Link oder Austausch des
Benutzernamens hinzufügen.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Whatsapp-Alternative: whistle.im</title>
      <link>/2014/02/20/whatsapp-alternative-whistle-im/</link>
      <pubDate>Thu, 20 Feb 2014 00:00:00 +0000</pubDate>
      <guid>/2014/02/20/whatsapp-alternative-whistle-im/</guid>
      <description>&lt;p&gt;Da Whatsapp ja nun von &lt;a href=&#34;http://newsroom.fb.com/News/805/Facebook-to-Acquire-WhatsApp&#34;&gt;Facebook
gekauft&lt;/a&gt;
wurde werde ich mir &lt;a href=&#34;https://whistle.im&#34;&gt;whistle.im&lt;/a&gt; mal näher
anschauen.&lt;br&gt;
&lt;em&gt;Whistle.im&lt;/em&gt; überträgt keine Telefonnummern und hat sich, laut eigener
Aussage, dem Schutz der Privatsphäre verschrieben. Der kryptographische
Anteil der App ist OpenSource und kann bei
&lt;a href=&#34;https://github.com/whistle-im/whistle-im&#34;&gt;github&lt;/a&gt; eingesehen werden.&lt;br&gt;
Jetzt hoffe ich, dass ich ein paar Freunde dazu bewegen kann sich eine
ID anzulegen, denn ohne Gesprächspartner testet es sich schlecht.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>explainshell und tuxsucht</title>
      <link>/2014/02/19/explainshell-und-tuxsucht/</link>
      <pubDate>Wed, 19 Feb 2014 00:00:00 +0000</pubDate>
      <guid>/2014/02/19/explainshell-und-tuxsucht/</guid>
      <description>&lt;p&gt;Hier mal zwei Links über die ich kürzlich gestolpert bin und die ich
hier festhalten möchte: &lt;a href=&#34;http://explainshell.com/&#34;&gt;explainshell&lt;/a&gt; und
&lt;a href=&#34;http://tuxsucht.de/&#34;&gt;tuxsucht&lt;/a&gt;.&lt;br&gt;
Bei &lt;em&gt;explainshell&lt;/em&gt; kann man Befehle eingeben und erhält die relevanten
Auszüge aus der manpage. Man muss sich also nicht mühsam die verwendeten
Optionen aus der manpage suchen, sondern erhält diese übersichtlich auf
einen Blick. Die Seite habe ich bereits in einem Blogpost bei
&lt;a href=&#34;http://fryboyter.de/der-erklaerbaer-fuer-shellbefehle/&#34;&gt;fryboyter&lt;/a&gt;
gesehen, aber die Adresse vergessen. Glücklicherweise wurde diese Seite
in der &lt;a href=&#34;http://netz10.de/2014/02/11/osbn-linkschleuder-1/&#34;&gt;OSBN
Linkschleuder&lt;/a&gt;
nochmal erwähnt. 😉&lt;br&gt;
Bei &lt;em&gt;tuxsucht&lt;/em&gt; handelt es sich um eine angepasste Googlesuche, die
gezielt Wikis, Foren und Blogs durchsucht, deren thematischer
Schwerpunkt bei Linux liegt.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Netzpolitik verschenkt Buch “Überwachtes Netz” – Der Sammelband zum NSA-Skandal</title>
      <link>/2014/02/19/netzpolitik-verschenkt-buch-ueberwachtes-netz-der-sammelband-zum-nsa-skandal/</link>
      <pubDate>Wed, 19 Feb 2014 00:00:00 +0000</pubDate>
      <guid>/2014/02/19/netzpolitik-verschenkt-buch-ueberwachtes-netz-der-sammelband-zum-nsa-skandal/</guid>
      <description>&lt;p&gt;Bei
&lt;a href=&#34;https://netzpolitik.org/2014/wir-verschenken-unser-buch-ueberwachtes-netz-der-sammelband-zum-nsa-skandal/&#34;&gt;netzpolitik&lt;/a&gt;
wird das Buch &lt;em&gt;&amp;ldquo;Überwachtes Netz&amp;rdquo; &amp;ndash; Der Sammelband zum NSA-Skandal&lt;/em&gt;
verschenkt.&lt;br&gt;
In diesem Buch schreiben rund 50 Autoren über den, von Edward Snowden
aufgedeckten, Ueberwachungsskandal und dessen Folgen. Das Buch erschien
im Dezember und wird nun verschenkt.&lt;br&gt;
Das Buch steht unter der freien Lizenz CC-BY-SA und darf somit (unter
anderem) weitergegeben werden.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>blog.mdosch.de bald statisch?</title>
      <link>/2014/02/01/blog-mdosch-de-bald-statisch/</link>
      <pubDate>Sat, 01 Feb 2014 00:00:00 +0000</pubDate>
      <guid>/2014/02/01/blog-mdosch-de-bald-statisch/</guid>
      <description>&lt;p&gt;Ich habe kürzlich nach &lt;a href=&#34;/2014/01/16/wordpress-alternativen/&#34;&gt;Alternativen zu
WordPress&lt;/a&gt; gesucht und wurde in den
Kommentaren auf viele interessante Projekte aufmerksam gemacht, die ich
noch nicht kannte. An dieser Stelle noch mal vielen Dank dafür. 😀&lt;br&gt;
Leider hatte fast jede Software mit der ich etwas herumgespielt hatte
den ein oder anderen &lt;em&gt;showstopper&lt;/em&gt;. Was mich gewundert hat: Ich habe
kein einziges Mal erfolgreich meine WordPress-Daten importieren können.&lt;/p&gt;
&lt;p&gt;Nun bin ich, zu meiner eigenen Überraschung, bei
&lt;a href=&#34;http://jekyllrb.com&#34;&gt;Jekyll&lt;/a&gt; gelandet. Dort konnte ich die Beiträge
erfolgreich in &lt;em&gt;markdown&lt;/em&gt;-Dateien umwandeln und nach etwas Nacharbeit
bin ich mit dem aktuellen Stand schon ziemlich zufrieden. Wer möchte
kann sich den aktuellen Stand unter dieser &lt;a href=&#34;http://test.mdosch.de&#34;&gt;temporären (!)
Domain&lt;/a&gt; anschauen.&lt;/p&gt;
&lt;p&gt;Was mich derzeit von einem kompletten Umstieg auf Jekyll abhält ist,
dass ich noch keine Lösung für die Kommentarfunktion gefunden habe. Es
gibt zwar einige Ansätze, aber bisher bin ich da noch nicht wirklich
weiter gekommen.&lt;br&gt;
Möglichkeiten:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Einbinden eines externen Kommentarsystem (z.B. Disqus)&lt;/li&gt;
&lt;li&gt;Selbst ein Kommentarsystem hosten
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/phusion/juvia&#34;&gt;Juvia&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://posativ.org/isso/&#34;&gt;Isso&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Statische Kommentare einbinden&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Die erste Option scheidet für mich prinzipiell aus. Ich gebe doch kein
Geld für eigenen Webspace aus um meine Daten (und die der Besucher) dann
irgendwelchen Drittanbietern in den Rachen zu werfen.&lt;br&gt;
Bei Juvia und Isso weiß ich nicht ob eine Installation auf
&lt;a href=&#34;http://uberspace.de&#34;&gt;uberspace&lt;/a&gt; möglich ist und falls doch, ob ich das
mit meinen Kenntnissen bewältigen kann.&lt;br&gt;
Statische Kommentare sind möglich und dafür habe ich auch einige Ansätze
gesehen aber ich würde eine dynamische Lösung wie Juvia oder Isso
bevorzugen, denn statische Kommentare müssten von mir manuell
eingepflegt und die Seite erneut herausgeschrieben werden. Dadurch
entsteht eine lange Verzögerung und Gespräche oder Diskussionen in den
Kommentaren werden unwahrscheinlich.&lt;/p&gt;
&lt;p&gt;Ein weiteres Problem: Ich bin mir nicht sicher, ob ich es irgendwie
schaffe die alten Kommentare einzupflegen sollte ich eine Lösung für das
Kommentarsystem finden. Das wäre sehr ärgerlich, aber vielleicht könnte
ich ein statisches Backup des WordPress-Blogs mit den Kommentaren online
stellen. Das wäre zwar nur eine Notlösung aber besser als sie komplett
zu verlieren.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Drinkmotizer: Ein Roboter mixt Drinks</title>
      <link>/2014/02/01/drinkmotizer-ein-roboter-mixt-drinks/</link>
      <pubDate>Sat, 01 Feb 2014 00:00:00 +0000</pubDate>
      <guid>/2014/02/01/drinkmotizer-ein-roboter-mixt-drinks/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://www.element14.com/community/community/raspberry-pi/raspberrypi_projects/blog/2014/01/17/raspberry-pi-drink-mixing-robot--aka-the-drinkmotizer&#34;&gt;Hier&lt;/a&gt;
kann man einen Roboter bestaunen, der Drinks mixt.&lt;br&gt;
Realisiert wurde das Projekt u.a. mit einem &lt;a href=&#34;http://www.raspberrypi.org/&#34;&gt;Raspberry
Pi&lt;/a&gt; und einem
&lt;a href=&#34;http://www.arduino.cc/&#34;&gt;Arduino&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Im Studium hatten wir mal in einem Praktikum eine per SPS gesteuerte
Abfüllanlage programmiert. Ich kann mich noch gut daran erinnern, dass
wir dabei ähnliche Ideen hatten. 😄&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Acer C720: Debian Kernel 3.12.8</title>
      <link>/2014/01/18/acer-c720-debian-kernel-3-12-8/</link>
      <pubDate>Sat, 18 Jan 2014 00:00:00 +0000</pubDate>
      <guid>/2014/01/18/acer-c720-debian-kernel-3-12-8/</guid>
      <description>&lt;p&gt;Neuer Kernel für das &lt;a href=&#34;/2013/12/04/debian-gnulinux-auf-dem-chromebook-acer-c720-installieren/&#34;&gt;Chromebook Acer
C720&lt;/a&gt;:
&lt;a href=&#34;https://files.mdosch.de/acer-c720-kernel/&#34;&gt;3.12.8&lt;/a&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>WordPress-Alternativen</title>
      <link>/2014/01/16/wordpress-alternativen/</link>
      <pubDate>Thu, 16 Jan 2014 00:00:00 +0000</pubDate>
      <guid>/2014/01/16/wordpress-alternativen/</guid>
      <description>&lt;p&gt;Da mir WordPress eigentlich etwas zu träge ist, zumindest im
Adminbereich, die Seite an sich ist relativ flott, habe ich mich mal
nach Alternativen umgeschaut. Es gibt einiges interessantes, aber ich
habe noch nichts gefunden was mich überzeugt. Hier mal meine
Anforderungen:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://markdown-here.com/&#34;&gt;Markdown&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Import der WordPress-Einträge&lt;/li&gt;
&lt;li&gt;Kommentarsystem (Ich möchte aus Prinzip kein disqus o.ä. Drittplugin
nutzen)&lt;/li&gt;
&lt;li&gt;OpenSource&lt;/li&gt;
&lt;li&gt;Nach Möglichkeit Web-Interface um auch von unterwegs mal etwas &lt;del&gt;zu
Papier&lt;/del&gt; ins Web zu bringen.&lt;/li&gt;
&lt;li&gt;Links der Beiträge sollten sich nicht verändern (das werde ich wohl
kaum finden).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Hier mal die drei interessantesten Kandidaten zu einer Tabelle
zusammengefasst.&lt;/p&gt;
&lt;p&gt;Name                                                                OSS                    Markdown   WP-Import   Kommentare   Web-Interface   URLs&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;a href=&#34;https://ghost.org/&#34;&gt;Ghost&lt;/a&gt;                        &lt;a href=&#34;https://ghost.org/about/license/&#34;&gt;✓&lt;/a&gt;      ✓           ✓           ×              ✓          ?
&lt;a href=&#34;http://www.nibbleblog.com/de/&#34;&gt;Nibbleblog&lt;/a&gt;                          ✓                        ✓           ✓           ✓              ✓          ×
&lt;a href=&#34;/2014/01/16/wordpress-alternativen&#34;&gt;Octopress&lt;/a&gt;                      ✓                        ✓           ✓           ×              ×          ?&lt;/p&gt;
&lt;p&gt;Gerade nutze ich zum ersten Mal das WordPress-PlugIn
&lt;a href=&#34;http://wordpress.org/plugins/wp-markdown/&#34;&gt;&lt;em&gt;WP-Markdown&lt;/em&gt;&lt;/a&gt; welches das
Schreiben schon deutlich angenehmer gestaltet, aber leider noch nicht
perfekt funktioniert wie man an obiger Tabelle sehen kann.&lt;/p&gt;
&lt;p&gt;Wenn jemand noch empfehlenswerte Blogsysteme kennt, die ich mir mal
anschauen könnte wäre ich über Hinweise dankbar. 😀&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;[Update 2014-01-17]&lt;/strong&gt;&lt;br&gt;
In den Kommentaren wurden viele interessante Blogsysteme oder CMS
genannt. Ich hoffe ich komme demnächst mal dazu mir diese anzusehen.
Vielen Dank dafür. 😀 Danke auch an dos für den Link zu einem
Blogeintrag, in dem er sich auch mit/ &lt;a href=&#34;http://do-s.de/eine-neue-blog-software-am-himmel-ghost&#34;&gt;diversen
Blogsystemen&lt;/a&gt;
beschäftigte.&lt;br&gt;
Das PlugIn WP-Markdown ist auch wieder deaktiviert. Beim Senden des
Beitrags wurde Markdown in HTML umgewandelt und beim bearbeiten dieses
Beitrags will das PlugIn den HTML-Code wegen der Einrückung in
Codeblocks setzen, statt ihn unverändert zu posten. Das könnte ich zwar
beheben, aber auf Dauer wird so etwas lästig. 😉&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>OSBN: Open-Source-Blog-Netzwerk</title>
      <link>/2014/01/14/osbn-open-source-blog-netzwerk/</link>
      <pubDate>Tue, 14 Jan 2014 00:00:00 +0000</pubDate>
      <guid>/2014/01/14/osbn-open-source-blog-netzwerk/</guid>
      <description>&lt;p&gt;Meinen Blog habe ich &lt;a href=&#34;/2013/06/12/mal-wieder-ein-blog/&#34;&gt;gestartet&lt;/a&gt; um
eine, immer verfügbare, Wissensdatenbank zu haben in der ich bestimmte
Tools, Vorgehensweisen und Problemlösungen festhalten kann um später
wieder auf sie zugreifen zu können. Primär ging es mir darum die
Momente, in denen ich dachte &lt;em&gt;&amp;ldquo;Das hatte ich doch schon mal, wie habe
ich das damals gelöst?&amp;rdquo;&lt;/em&gt; zu vermeiden. Da das Internet fast überall
verfügbar ist und ich von jedem Rechner darauf zugreifen kann, entschied
ich mich für einen Blog und gegen eine lokale Lösung. Außerdem kann ich
vielleicht auch anderen Leuten mit den gleichen Problemen helfen wenn
ich meine Lösungen online stelle.&lt;/p&gt;
&lt;p&gt;Da ich meinen Blog mit dieser Motivation betreibe bewerbe ich ihn auch
nicht groß im Internet und achte nicht darauf häufig verlinkt zu werden.
Mit zwei Ausnahmen: Dem
&lt;a href=&#34;http://planet.debianforum.de/&#34;&gt;debianforum.de-Planeten&lt;/a&gt; und dem
&lt;a href=&#34;http://osbn.de/&#34;&gt;Open-Source-Blog-Netzwerk&lt;/a&gt;. Ersterem bin ich
beigetreten, da ich im &lt;a href=&#34;http://debianforum.de/forum/&#34;&gt;debianforum.de&lt;/a&gt;
häufig aktiv bin und der Planet eher eine Sammlung der Blogs der
Benutzer ist, als ein Debian-bezogener Planet. Ähnlich verhält es sich
mit dem Open-Source-Blog-Netzwerk (OSBN). Wo andere Netzwerke strenge
Richtlinen haben, sei es bezüglich der Inhalte oder der Länge und
Häufigkeit der Beiträge ist das OSBN eher ein loser Zusammenschluss von
Blogs die sich in irgendeiner Weise mit OpenSource befassen.&lt;/p&gt;
&lt;p&gt;Da ich die Idee, verschiedenste Blogs zu einem OpenSource-Netzwerk
zusammenzufassen, gut fand bin ich dem OSBN beigetreten. Aus diesem
Grund sieht man auch seit ein paar Wochen auf der rechten Seite eine Box
mit den letzten Beiträgen aus dem OSBN. Derzeit umfasst das OSBN 84
Blogs und ich würde es begrüßen, wenn weitere hinzustoßen. 😉&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>runalyze: Sport-Aktivitäten protokollieren</title>
      <link>/2014/01/11/runalyze-sport-aktivitaeten-protokollieren/</link>
      <pubDate>Sat, 11 Jan 2014 00:00:00 +0000</pubDate>
      <guid>/2014/01/11/runalyze-sport-aktivitaeten-protokollieren/</guid>
      <description>&lt;p&gt;Kürzlich suchte ich eine Alternative zu Endomondo und Konsorten um meine
sportlichen Aktivitäten zu protokollieren und mich durch die
Auswertungen zu motivieren mehr zu tun. :) Dabei suchte ich tagelang und
fand nichts, dass meinen Vorstellungen entsprach. Jetzt bin ich beim
Surfen zufällig über &lt;a href=&#34;http://runalyze.de/&#34;&gt;runalyze&lt;/a&gt; gestolpert und die
Software kommt dem, was ich suchte, verdammt nahe.&lt;/p&gt;
&lt;p&gt;Man kann sich entweder auf der Seite registrieren oder runalyze auf dem
eigenen Webspace/Server installieren. Ich habe mich für letzteres
entschieden, da ich meine Daten gerne, soweit möglich, unter eigener
Kontrolle habe. Die Installation ist denkbar einfach, man entpackt
runalyze auf dem Webspace, richtet eine MySQL-Datenbank dafür ein, ruft
es im Browser auf und gibt die Daten ein.&lt;/p&gt;
&lt;p&gt;Runalyze ist eigentlich für Läufer gedacht, bringt aber auch Profile für
Radfahren, Schwimmen und Gymnastik mit. Runalyze kann Daten von
Garmin-Geräten wohl direkt entgegennehmen, was ich in Ermangelung eines
solchen Gerätes nicht getestet habe. Meine Radrunden tracke ich mit
meinem Handy und importiere die .gpx-Datei nach runalyze. Gehe ich
Schwimmen gebe ich die Daten über ein Eingabeformular manuell ein.&lt;/p&gt;
&lt;p&gt;Runalyze ist nach eigenen Angaben OpenSource, jedoch fand ich nirgends
einen Verweis auf die Lizenz. Auf Nachfrage schrieb einer der
Entwickler:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Wegen der Lizenz: Da haben wir uns ehrlich gesagt auch nie besonders
viele Gedanken drüber gemacht. Ich dachte, wir hätten damals bei
SourceForge eine angegeben, aber die konnte ich derzeit auch nicht
finden.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Das ist für mich als OSS-Befürworter etwas schade, aber ich hoffe, dass
das demnächst auch noch geklärt wird.&lt;/p&gt;
&lt;p&gt;Runalyze kann Daten auch in mehrere Formate, bzw. zu verschiedenen
Diensten, exportieren: IFrame, FITLOG, Twitter, GPX, TCX, HTML, KML,
Facebook und Google+. Hier mal ein Beispiel für einen HTML-Export:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;[runalyze.de](http://www.runalyze.de/){.runalyze-emb-runalyze}**2,1 km
Schwimmen** am 11.01.2014

``` {.runalyze-emb-infos}
[1:10:00]{.runalyze-emb-time}[33:20/km]{.runalyze-emb-pace}[0
hm]{.runalyze-emb-elev}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;a href=&#34;/2014/01/11/runalyze-sport-aktivitaeten-protokollieren&#34;&gt;&lt;/a&gt;{.runalyze-emb-share}&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;
Da ich meine Trainingsdaten als nicht öffentlich deklariert habe, gibt
es keinen Link zu Details, aber auch das ist möglich.
&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    
    <item>
      <title>Debian: Manpages über Firefox-Suche öffnen</title>
      <link>/2013/12/14/debian-manpages-ueber-firefox-suche-oeffnen/</link>
      <pubDate>Sat, 14 Dec 2013 00:00:00 +0000</pubDate>
      <guid>/2013/12/14/debian-manpages-ueber-firefox-suche-oeffnen/</guid>
      <description>&lt;p&gt;Die &lt;a href=&#34;http://manpages.debian.net&#34;&gt;Debian-Manpages&lt;/a&gt; können seit kurzem
auch im Browser gelesen werden. Das finde ich angenehmer als im Terminal
zu lesen und benutze sie häufig. Ich habe mehrere Suchmaschinen im
Firefox (bzw. Iceweasel, da ich ja Debian nutze) und habe für diese
Such-Kürzel eingerichtet. D.h. möchte ich auf Wikipedia suchen gebe ich
einfach &lt;code&gt;w SUCHBEGRIFF&lt;/code&gt; in die Adressleiste des Browsers ein. Für die
Debian-Manpages gibt es leider kein Suchmaschinen-PlugIn für den
Firefox, aber auf &lt;a href=&#34;http://de.wikihow.com/Eine-pers%C3%B6nlich-angepasste-Suchmaschine-in-Firefox-einrichten-%28Windows-Version%29&#34;&gt;dieser
Seite&lt;/a&gt;
habe ich eine Lösung gefunden.&lt;br&gt;
Man muss lediglich das AddOn &lt;a href=&#34;https://addons.mozilla.org/en-US/firefox/addon/3682&#34;&gt;Add to
Searchbar&lt;/a&gt;
installieren. Danach führt man einen Rechtsklick auf das Suchfenster aus
und wählt &lt;em&gt;Zur Suchleiste hinzufügen&amp;hellip;&lt;/em&gt; und gibt bei &lt;em&gt;Schlüsselwort&lt;/em&gt;
das gewünschte Kürzel ein. In meinem Fall habe ich &lt;em&gt;m&lt;/em&gt; gewählt und kann
nun mittels &lt;code&gt;m PROGRAMMNAME&lt;/code&gt; im Firefox/Iceweasel die gewünschte Manpage
aufrufen.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Goodbye last.fm – Hello libre.fm</title>
      <link>/2013/12/01/goodbye-last-fm-hello-libre-fm/</link>
      <pubDate>Sun, 01 Dec 2013 00:00:00 +0000</pubDate>
      <guid>/2013/12/01/goodbye-last-fm-hello-libre-fm/</guid>
      <description>&lt;p&gt;Ich hatte mich zwar vor längerer Zeit schon mal bei
&lt;a href=&#34;http://libre.fm&#34;&gt;libre.fm&lt;/a&gt; registriert, es aber nie genutzt. Ich habe
sogar meine Anmeldedaten komplett vergessen. :)\&lt;/p&gt;
&lt;p&gt;Da ich, wo es möglich ist, freie Software bevorzuge war der Wechsel von
&lt;a href=&#34;http://last.fm&#34;&gt;last.fm&lt;/a&gt; zu libre.fm längst überfällig. Ich habe mir
nun ein neues Konto bei libre.fm erstellt und mein last.fm-Profil
gelöscht.&lt;br&gt;
Zuvor habe ich aber mit
&lt;a href=&#34;http://encukou.github.io/lastscrape-gui/&#34;&gt;lastscrape&lt;/a&gt; meine Daten von
last.fm lokal gesichert und derzeit lädt das Tool diese zu libre.fm
hoch. Es geht also nichts verloren. ;)&lt;/p&gt;
&lt;p&gt;Mein Audioplayer &lt;a href=&#34;http://www.clementine-player.org/&#34;&gt;Clementine&lt;/a&gt; hat
zwar keine Unterstützung für libre.fm an Bord, das ist aber auch nicht
nötig, da die API von libre.fm kompatibel zur API von last.fm ist. Das
kann man nutzen um die last.fm-Unterstützung von Playern mit libre.fm zu
nutzen. Dazu trägt man folgendes in der &lt;code&gt;/etc/hosts&lt;/code&gt; ein:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    149.20.54.250 post.audioscrobbler.com
    149.20.54.250 ws.audioscrobbler.com
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Quelle: &lt;a href=&#34;http://bugs.foocorp.net/projects/librefm/wiki/Using_turtle&#34;&gt;http://bugs.foocorp.net/projects/librefm/wiki/Using_turtle&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Die Daten werden somit zu libre.fm umgeleitet. Im Audioplayer, in meinem
Fall Clementine, muss man dann bei den last.fm-Anmeldedaten dann nur
noch den Benutzernamen und das Passwort von libre.fm eintragen.&lt;br&gt;
Auf meinem Android-Handy benutze ich die App &lt;a href=&#34;https://play.google.com/store/apps/details?id=com.adam.aslfms&amp;amp;hl=de&#34;&gt;Simple last.fm
Scrobbler&lt;/a&gt;,
die ich weiter verwenden kann, da diese von Haus aus libre.fm
unterstützt. :) Natürlich darf auch der Verweis auf mein
&lt;a href=&#34;http://libre.fm/user/mdosch&#34;&gt;Profil&lt;/a&gt; nicht fehlen. ;)&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>DR14 T.meter unter Debian installieren.</title>
      <link>/2013/11/16/dr14-t-meter-unter-debian-installieren/</link>
      <pubDate>Sat, 16 Nov 2013 00:00:00 +0000</pubDate>
      <guid>/2013/11/16/dr14-t-meter-unter-debian-installieren/</guid>
      <description>&lt;p&gt;Gestern wollte ich den &lt;a href=&#34;http://dr14tmeter.scienceontheweb.net/index.php?title=Main_Page&#34;&gt;DR14
T.meter&lt;/a&gt;,
ein Tool zur Berechnung der dynamic range eines Songs, installieren, was
aber unter Debian scheiterte:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    dpkg -i /home/martin/Downloads/dr14tmeter_1.0.12-1_all.deb 
    (Reading database ... 129551 files and directories currently installed.) 
    Preparing to replace dr14tmeter 1.0.12-1 (using .../dr14tmeter_1.0.12-1_all.deb) ... 
    Unpacking replacement dr14tmeter ... 
    dpkg: dependency problems prevent configuration of dr14tmeter: 
    dr14tmeter depends on ffmpeg; however: 
    Package ffmpeg is not installed. 

    dpkg: error processing dr14tmeter (--install): 
    dependency problems - leaving unconfigured 
    Processing triggers for man-db ... 
    Errors were encountered while processing: dr14tmeter
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Der Ersteller des Paketes teilte mir mit, es nur unter Ubuntu getestet
zu haben, also habe ich kurzerhand &lt;em&gt;ffmpeg&lt;/em&gt; in der Datei
&lt;em&gt;debian/control&lt;/em&gt; entfernt und das Paket neu gebaut:
&lt;del&gt;&lt;a href=&#34;https://files.mdosch.de/deb/dr14tmeter_1.0.12-1_all.deb&#34;&gt;dr14tmeter_1.0.12-1_all.deb&lt;/a&gt;&lt;br&gt;
MD5-Sum: ed80cc6e6a6c720f23d949dd1beb976a&lt;/del&gt;&lt;/p&gt;
&lt;p&gt;&lt;del&gt;Ich habe außer dem Entfernen der Abhängigkeit von ffmpeg (wurde bei
debian durch avconf ersetzt), nichts geändert. Trotzdem übernehme ich
keinerlei Garantie für das Paket.&lt;/del&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;[Nachtrag 2013-12-01]&lt;/strong&gt; Ich habe festgestellt, dass die Änderung das
Paket zwar installierbar macht, aber dass das dekodieren bei flac und
anderen Formaten, für die ffmpeg verwendet wird, nicht funktioniert. Nun
habe ich im Quelltext einfach ffmpeg durch avconv ersetzt und in der
Datei &lt;em&gt;debian/control&lt;/em&gt; avconv als Abhängigkeit angegeben. Funktioniert
zwar bei mir gut, dennoch gebe ich keinerlei Garantie für das Verhalten
des Programms.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://files.mdosch.de/2013-12/dr14tmeter_1.0.12-1_all.deb&#34; title=&#34;dr14tmeter_1.0.12-1_all.deb&#34;&gt;dr14tmeter_1.0.12-1_all.deb&lt;/a&gt;&lt;br&gt;
MD5-SUM: 013e4f47d5c032f6acfe452a755c6e57&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://files.mdosch.de/2013-12/dr14tmeter_1.0.12-1.dsc&#34; title=&#34;dr14tmeter_1.0.12-1.dsc&#34;&gt;dr14tmeter_1.0.12-1.dsc&lt;/a&gt;&lt;br&gt;
MD5-SUM: 3cc8b31fe199e288206401309282c42f&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://files.mdosch.de/2013-12/dr14tmeter_1.0.12-1.tar.gz&#34; title=&#34;dr14tmeter_1.0.12-1.tar.gz&#34;&gt;dr14tmeter_1.0.12-1.tar.gz&lt;/a&gt;&lt;br&gt;
MD5-SUM: 8f4f6e37f7590066124b551b35ff6a84&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Neu: pics.mdosch.de</title>
      <link>/2013/11/13/neu-pics-mdosch-de/</link>
      <pubDate>Wed, 13 Nov 2013 00:00:00 +0000</pubDate>
      <guid>/2013/11/13/neu-pics-mdosch-de/</guid>
      <description>&lt;p&gt;Ich habe gestern mal testweise &lt;a href=&#34;http://de.piwigo.org/&#34;&gt;Piwigo&lt;/a&gt; unter
&lt;a href=&#34;http://pics.mdosch.de&#34;&gt;pics.mdosch.de&lt;/a&gt; (auch hier im Blog über den Link
&amp;ldquo;Bilder&amp;rdquo; zu erreichen) eingerichtet. Piwigo ist eine
OpenSource-Bildergalerie und wird evtl. bei Gefallen
&lt;a href=&#34;http://mdosch.deviantart.com&#34;&gt;DeviantArt&lt;/a&gt; ersetzen.&lt;br&gt;
Ich bin zwar momentan dabei, wo möglich, alle amerikanischen Dienste zu
ersetzen aber bei DeviantArt ist dies nicht der eigentliche Grund.
Bilder, die ich bei DeviantArt hoste möchte ich eh veröffentlichen und
sind daher nichts sensibles. Aber DeviantArt ist relativ träge und die
ganze Community außenrum ist mir nicht so wichtig. Piwigo ist deutlich
flotter und ich muss die Bilder nicht unbedingt über ein Webinterface
hochladen, da Piwigo von
&lt;a href=&#34;http://piwigo.wordpress.com/2010/11/17/publish-photos-from-shotwell-to-piwigo/&#34;&gt;Shotwell&lt;/a&gt;
(und anderen Programmen) unterstützt wird.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>ezmlm-idx und der Präfix</title>
      <link>/2013/09/12/ezmlm-idx-und-der-praefix/</link>
      <pubDate>Thu, 12 Sep 2013 00:00:00 +0000</pubDate>
      <guid>/2013/09/12/ezmlm-idx-und-der-praefix/</guid>
      <description>&lt;p&gt;Beim Umzug auf &lt;a href=&#34;https://uberspace.de&#34;&gt;uberspace&lt;/a&gt; habe ich auch meine
Mailingliste mit umgezogen. Vorher verwendete ich
&lt;a href=&#34;https://www.gnu.org/software/mailman/index.html&#34;&gt;mailman&lt;/a&gt;, uberspace
verwendet aber, das mir bis dahin unbekannte,
&lt;a href=&#34;http://untroubled.org/ezmlm/&#34;&gt;ezmlm-idx&lt;/a&gt;. Die Einrichtung ist zwar im
&lt;a href=&#34;http://uberspace.de/dokuwiki/mail:ezmlmidx&#34;&gt;uberspace-wiki&lt;/a&gt; gut
beschrieben, ein Detail fehlte mir dort aber noch: Der Präfix.&lt;br&gt;
Die meisten Mailinglisten verwenden einen Präfix, der dem Betreff
vorangestellt wird, z.B. in der Form &lt;em&gt;[Mailinglistenname] Betreff&lt;/em&gt;.
Nach kurzer Recherche fand ich heraus, dass sich dieses Verhalten auch
sehr leicht unter ezmlm
&lt;a href=&#34;http://untroubled.org/ezmlm/man/man1/ezmlm-send.1.html&#34;&gt;konfigurieren&lt;/a&gt;
lässt. Man muss lediglich im Mailinglisten-Ordner eine Datei namens
&lt;em&gt;prefix&lt;/em&gt; anlegen. Die erste Zeile dieser Datei wird, mit einem
Leerzeichen getrennt, vor dem Betreff eingefügt. In meinem Beispiel muss
man also lediglich eine Datei &lt;em&gt;prefix&lt;/em&gt; mit dem Inhalt
&lt;em&gt;[Mailinglistenname]&lt;/em&gt; anlegen.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Piwik: Opt-Out</title>
      <link>/2013/09/01/piwik-opt-out/</link>
      <pubDate>Sun, 01 Sep 2013 00:00:00 +0000</pubDate>
      <guid>/2013/09/01/piwik-opt-out/</guid>
      <description>&lt;p&gt;Zur Analyse der Seitenaufrufe verwende ich lokal
&lt;a href=&#34;/2013/06/15/piwik/&#34;&gt;Piwik&lt;/a&gt;, das hat den Vorteil dass Besucher nicht
über mehrere Seiten hinweg getracked werden, wie bspw. bei
Google-Analytics.&lt;br&gt;
Piwik ist zwar so konfiguriert, dass es den DNT-Header beachtet aber
falls jemand diesen nicht nutzt und trotzdem nicht von Piwik erfasst
werden möchte kann man nun Piwik über einen Browser-Cookie deaktivieren.&lt;/p&gt;
&lt;h5 id=&#34;update-2015-08-26&#34;&gt;Update 2015-08-26&lt;/h5&gt;
&lt;p&gt;Ein Opt-Out ist nicht mehr nötig ich habe Piwik in meinem Blog
deaktiviert.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Android: Kontakte und Kalender über Owncloud synchronisieren</title>
      <link>/2013/08/30/android-kontakte-und-kalender-ueber-owncloud-synchronisieren/</link>
      <pubDate>Fri, 30 Aug 2013 00:00:00 +0000</pubDate>
      <guid>/2013/08/30/android-kontakte-und-kalender-ueber-owncloud-synchronisieren/</guid>
      <description>&lt;p&gt;Es war mir schon lange ein Dorn im Auge, dass bei meinem Handy Kontakte
und Kalender via Google synchronisiert wurden. Zu Beginn habe ich die
Synchronisierung nicht genutzt, aber nachdem ich bei einem Konzert mein
Smartphone im Moshpit verloren hatte und beim neuen Telefon erst mal
wieder alle Rufnummern mühsam zusammensuchen musste habe ich die bittere
Pille geschluckt und die Synchronisation aktiviert. Der
&lt;a href=&#34;http://www.heise.de/newsticker/meldung/NSA-Ueberwachungsskandal-Von-PRISM-Tempora-XKeyScore-und-dem-Supergrundrecht-was-bisher-geschah-1931179.html&#34;&gt;NSA-Skandal&lt;/a&gt;
war eine gute Erinnerung nach einer Alternative zu suchen, welche ich in
dem OpenSource-Tool &lt;a href=&#34;http://owncloud.org/&#34;&gt;Owncloud&lt;/a&gt; gefunden habe.&lt;br&gt;
Owncloud kann neben der Synchronisation von Kalender und Adressbuch auch
zur Ablage von Dateien und zum Austausch dieser genutzt werden, ähnlich
dem bekannten Tool DropBox. Doch das ist hier nicht das Thema.&lt;/p&gt;
&lt;p&gt;Im ersten Schritt benötigt man für Owncloud eigenen Webspace. Ich habe
zwar bereits welchen (da ist schließlich mein Blog gehosted), aber da
ich in letzter einige Probleme hier hatte wollte ich mir mal einen
anderen Provider ansehen. In &lt;a href=&#34;https://uberspace.de/&#34;&gt;uberspace&lt;/a&gt; habe ich
einen tollen, deutschen Provider gefunden (meine Daten sollen ja nicht
durch die schnüffelnden USA fließen¹). Uberspace ist ein
außergewöhnlicher &lt;a href=&#34;https://de.wikipedia.org/wiki/Webhosting&#34;&gt;Shared
Hoster&lt;/a&gt;, auf den ich hier
bestimmt noch mal gesondert eingehen werde. Dort kann man für 1€
monatlich (man zahlt so viel man möchte, mindestens 1€) 10GB an Speicher
und 100GB an Traffic erwerben, das sind Dimensionen die man mit einer
privaten Homepage niemals auch nur annähernd erreicht. Mit einer
.de-Domain erhöht sich der zu leistende Mindestbetrag auf 1,50€. Das
Angebot kostet den ersten Monat noch keinen Cent, man kann also ohne
jegliche Verpflichtung einen Monat den Service testen.&lt;br&gt;
Nachdem ich mir dort einen Account erstellt habe, war der erste Punkt
Owncloud zu installieren. Dazu loggt man sich per
&lt;a href=&#34;https://de.wikipedia.org/wiki/Ssh&#34;&gt;SSH&lt;/a&gt; auf dem eigenen Uberspace ein:
&lt;code&gt;ssh $user@$server.uberspace.de&lt;/code&gt; &lt;em&gt;$user&lt;/em&gt; und &lt;em&gt;$server&lt;/em&gt; sind natürlich
durch den eigenen Uberspace-Benutzernamen und Uberspace-Server zu
ersetzen. Danach lädt man die aktuelle Owncloud-Version (im Moment
5.0.10) herunter und entpackt diese. In meinem Beispiel schiebe ich
Owncloud in den Ordner owncloud, so dass es später über
&lt;code&gt;https://$user.$server.uberspace.de/owncloud&lt;/code&gt; zu erreichen wäre.
Abschließend müssen noch die korrekten Rechte der Konfigurationsdatei
gesetzt werden.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    wget http://download.owncloud.org/community/owncloud-5.0.10.tar.bz2
    tar -xjvf owncloud-5.0.10.tar.bz2
    mv owncloud html/owncloud
    chmod 0700 html/owncloud/config
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Darauf ruft man Owncloud via
&lt;code&gt;https://$user.$server.uberspace.de/owncloud&lt;/code&gt; auf und vergibt die
Nutzerdaten. Anschließend ist Owncloud auch schon betriebsbereit. Die
Installation ist auch im
&lt;a href=&#34;https://uberspace.de/dokuwiki/cool:owncloud&#34;&gt;Uberspace-Wiki&lt;/a&gt;
beschrieben.&lt;/p&gt;
&lt;p&gt;Zum Synchronisieren der Daten benötigen wir unter Android noch zwei
Apps. Bei mir hat es, wie in diesem
&lt;a href=&#34;http://www.pgollor.de/cms/?p=1304&#34;&gt;Blog-Eintrag&lt;/a&gt; beschrieben, mit
&lt;a href=&#34;https://play.google.com/store/apps/details?id=org.dmfs.caldav.lib&amp;amp;hl=de&#34;&gt;CalDav&lt;/a&gt;
und
&lt;a href=&#34;https://play.google.com/store/apps/details?id=org.dmfs.carddav.sync&amp;amp;hl=de&#34;&gt;CardDav&lt;/a&gt;
gut funktioniert.&lt;br&gt;
Die Einrichtung ist nicht sehr kompliziert und ich gehe nicht näher
darauf ein, da sie im verlinkten Blog-Eintrag gut beschrieben ist. Man
sollte danach auf keinen Fall vergessen in Androids Konten-Einstellungen
die Synchronisation des Kalenders und Adressbuchs zu Google zu
deaktivieren.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;[Update 2014-05-15]&lt;/strong&gt;\&lt;/p&gt;
&lt;p&gt;Mittlerweile habe ich ein Handy mit einer aktuellen Android-Version und
nutze für die Synchronisation von Kontakten und Kalender eine App.
&lt;em&gt;DAVdroid&lt;/em&gt; gibt es relativ günstig bei &lt;a href=&#34;https://play.google.com/store/apps/details?id=at.bitfire.davdroid&amp;amp;hl=de&#34;&gt;Google
Play&lt;/a&gt;
oder kostenlos bei
&lt;a href=&#34;https://f-droid.org/repository/browse/?fdid=at.bitfire.davdroid&#34;&gt;F-Droid&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Ich möchte die Kontaktdaten aber ebenfalls mit meinem
Thunderbird-Adressbuch synchronisieren, dazu benötigt man den
&lt;a href=&#34;http://www.sogo.nu/english/downloads/frontends.html&#34;&gt;SoGo-Connector&lt;/a&gt;
und die CardDav-Adresse. Letztere erhält man, indem man bei Owncloud das
Adressbuch öffnet, links unten das Zahnrad und darauf die Weltkugel
anklickt. Nun öffnet man im Thunderbird das Adressbuch und wählt
&lt;code&gt;Datei -&amp;gt; Neu -&amp;gt; Remote-Adressbuch&lt;/code&gt; und fügt den Link bei URL: ein.
That&amp;rsquo;s it. Eine bebilderte Anleitung zur Einrichtung im Thunderbird
findet man
&lt;a href=&#34;http://www.bitblokes.de/2013/03/thunderbird-kontakte-mit-der-owncloud-und-android-synchronisieren/&#34;&gt;hier&lt;/a&gt;.&lt;br&gt;
Zum Synchronisieren der Kalendereinträge mit Thunderbird gibt es das
Kalender-AddOn
&lt;a href=&#34;https://www.mozilla.org/projects/calendar/lightning/&#34;&gt;Lightning&lt;/a&gt;. Die
benötigte CalDav-Adresse erhält man, indem man in Owncloud im Kalender,
diesmal rechts oben, das Zahnrad und anschließend die Weltkugel
anklickt. Im Thunderbird wählt man &lt;code&gt;Datei -&amp;gt; Neu -&amp;gt; Kalender&lt;/code&gt;, trifft
die Auswahl &lt;code&gt;Im Netzwerk&lt;/code&gt;, &lt;code&gt;&amp;gt;CalDav&lt;/code&gt; und gibt die, zuvor kopierte,
Adresse ein.&lt;/p&gt;
&lt;p&gt;¹ Leider kann man nicht 100%ig garantieren, dass die Daten Deutschland
nicht verlassen, selbst wenn man aus Deutschland eine Verbindung zu
einem deutschen Server aufbaut. Zumindest werden meine Daten nicht mehr
in den USA und ganz besonders nicht bei Google gespeichert.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>An Java-Entwickler: Unterstützung für SEPA-Lastschriften in HBCI4Java gesucht</title>
      <link>/2013/08/16/an-java-entwickler-unterstuetzung-fuer-sepa-lastschriften-in-hbci4java-gesucht/</link>
      <pubDate>Fri, 16 Aug 2013 00:00:00 +0000</pubDate>
      <guid>/2013/08/16/an-java-entwickler-unterstuetzung-fuer-sepa-lastschriften-in-hbci4java-gesucht/</guid>
      <description>&lt;p&gt;Wie ich hier bereits
&lt;a href=&#34;/2013/06/29/programmempfehlung-jameica-hibiscus/&#34;&gt;erwähnte&lt;/a&gt; nutze ich
die plattformunabhängige OpenSource-Kombination
&lt;a href=&#34;http://willuhn.de/products/jameica&#34;&gt;Jameica/Hibiscus&lt;/a&gt; um Online-Banking
unter Linux zu betreiben.&lt;/p&gt;
&lt;p&gt;Der Entwickler von Jameica/Hibiscus bittet in seinem
&lt;a href=&#34;http://willuhn.de/blog/index.php?/archives/656-An-die-Unternehmen,-die-HBCI4JavaHibiscus-verwenden.html&#34;&gt;Blog&lt;/a&gt;
bzw. auf der
HBCI4Java-&lt;a href=&#34;http://sourceforge.net/mailarchive/message.php?msg_id=31143215&#34;&gt;Mailingliste&lt;/a&gt;
um Unterstützung bei der Implementierung von SEPA-Lastschriften in
HBCI4Java.&lt;/p&gt;
&lt;p&gt;Hier der Beitrag von der ML:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Hi zusammen,&lt;/p&gt;
&lt;p&gt;ich gehe davon aus, dass hier auch der ein oder andere Entwickler aus
Unternehmen mitliest, welche HBCI4Java im geschaeftlichen Umfeld
nutzen. Und ich weiss, dass das Thema SEPA (hier insb. die
SEPA-Lastschrift) gerade Unternehmen unter den Naegeln brennt, weil es
ab naechstem Jahr Ernst wird.&lt;/p&gt;
&lt;p&gt;Allerdings kriege ich bisher immer nur Anfragen von Firmen oder
Vereinen, ob SEPA-Lastschrift auf meiner TODO-Liste steht. Und wenn
ja, wie lange es noch dauert. Ich kriege aber keine Mails von
Entwicklern aus Firmen, die mir schreiben, dass sie bereits begonnen
haben, das in HBCI4Java einzubauen.&lt;/p&gt;
&lt;p&gt;Bisher habe ich auf die Frage nach der SEPA-Unterstuetzung immer
geantwortet, dass das bei mir auf Platz 1 der Agenda steht und mein
Ziel ist, es bis Ende des Jahres eingebaut zu haben. Mich beschleicht
daher der Verdacht, dass sich hier einige Unternehmen in ihrer
Komfort-Zone bequem machen und warten, bis ich diese Arbeit
uebernommen habe. Ich mache Hibiscus in meiner Freizeit und pflege
HBCI4Java so gut es geht weiter. Gerade aktuell hab ich z.Bsp. endlich
den PCSC-Support zum Laufen gekriegt. Die Unterstuetzung fuer die
neuen TAN-Verfahren (incl. dem komplizierten chipTAN) habe ich auch
eingebaut.&lt;/p&gt;
&lt;p&gt;Falls hier also Entwickler von Unternehmen mitlesen, die selbst
ebenfalls HBCI4Java (oder auch Hibiscus) geschaeftlich verwenden, dann
faende ich etwas Initiative auch von eurer Seite gut. Denn ich mache
Hibiscus &amp;amp; Co. nur privat.&lt;br&gt;
Ich selbst brauche die SEPA-Lastschrift also gar nicht. Und ich will
eigentlich auch nicht der Gratis-Entwickler fuer Unternehmen sein. Und
nein, mit geht es nicht um Bezahlung. Mir geht es darum, nicht der
Einzige zu sein, der fuer HBCI4Java Code liefert.&lt;/p&gt;
&lt;p&gt;Gruss&lt;br&gt;
Olaf&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Da ich selbst nur etwas C-Programmierung beherrsche kann ich leider
nichts beitragen, aber ich verbreite das Gesuch mal in meinem Blog und
hoffe, dass evtl. jemand mit den nötigen Kenntnissen darauf aufmerksam
wird. Da mein Blog auch im
debianforum.de-&lt;a href=&#34;http://planet.debianforum.de&#34;&gt;Planet&lt;/a&gt; gelistet ist,
erreicht der Beitrag bestimmt einige kompetente Programmierer.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nachtrag:&lt;/strong&gt; Am 13.10.2013 schrieb Olaf Willuhn in seinem
&lt;a href=&#34;http://willuhn.de/blog/index.php?/archives/664-Hibiscus-Erster-Code-fuer-SEPA-Lastschriften.html&#34;&gt;Blog&lt;/a&gt;,
dass nun erster Code für SEPA-Lastschriften in den nightlies verfügbar
ist.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Meine neue Backup-Lösung</title>
      <link>/2013/08/01/meine-neue-backup-loesung/</link>
      <pubDate>Thu, 01 Aug 2013 00:00:00 +0000</pubDate>
      <guid>/2013/08/01/meine-neue-backup-loesung/</guid>
      <description>&lt;p&gt;Wie ich bereits im &lt;a href=&#34;/2013/06/13/backup-mit-rsync/&#34;&gt;rsync-Beitrag&lt;/a&gt;
beschrieben habe, habe ich meine Backups bisher manuell (und dadurch
viel zu selten) durchgeführt. Da ich mittlerweile ein &lt;a href=&#34;/2013/06/19/mein-neues-notebook/&#34;&gt;neues
Notebook&lt;/a&gt; benutze, wurde mein altes
arbeitslos. Das alte hatte zwar einige Probleme, weswegen ich es durch
ein neues ersetzt habe, aber für irgendwelche kleinen Aufgaben als
Server ist es immer noch gut genug. Da ich ungern Dinge wegwerfe und
Elektroschrott produziere wollte ich daraus einen Server machen, auf den
ich automatisiert ein tägliches Backup speichere. Eine ähnliche
Einstellung hat auch der Blogger Apo und beschreibt in seinem Blog
gambaru.de noch &lt;a href=&#34;http://www.gambaru.de/blog/2011/07/03/was-man-mit-alten-computern-machen-kann/&#34;&gt;weitere mögliche Verwendungen für alte
Hardware&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Ich werde hier keine detaillierte Schritt-für-Schritt, bzw.
Kochrezept-Anleitung, für einen Backup-Server veröffentlichen. Davon
gibt es bereits genug und was ich fabriziert habe ist eine Lösung, die
für mich gut genug ist aber wahrscheinlich nicht die perfekte Lösung.&lt;/p&gt;
&lt;p&gt;Meine Lösung sieht grob umrissen folgendermaßen aus:&lt;/p&gt;
&lt;p&gt;&amp;ndash; Einmal täglich startet mein Laptop (das Neue, mit dem ich arbeite)
mein altes Laptop (im folgenden Server genannt) per Wake On LAN (WOL).&lt;br&gt;
&amp;ndash; Danach sichert es mittels rsync über SSH meinen /home-Ordner und
/etc&lt;br&gt;
&amp;ndash; Abschließend wird der Server über SSH in den Ruhezustand versetzt&lt;/p&gt;
&lt;p&gt;Ich habe per rsync rudimentär die Funkionalität von
&lt;a href=&#34;http://www.rsnapshot.org/&#34;&gt;rsnapshot&lt;/a&gt; nachgebaut, da mir rsync besser
gefällt bzw. ich es schon kenne, da ich bisher manuelle Backups damit
durchgeführt habe. Außerdem kann ich mittels rsync Backups über SSH an
den Server senden, bei rsnapshot ist dies nicht möglich. Bei rsnapshot
müsste mein Server per SSH das Backup von meinem Laptop &amp;ldquo;abholen&amp;rdquo;. Ich
möchte aber keinen SSH-Server als zusätzlichen Daemon auf meinem Laptop
installieren.&lt;/p&gt;
&lt;p&gt;Wie man im &lt;a href=&#34;http://wiki.ubuntuusers.de/rsnapshot&#34;&gt;Ubuntuusers-Wiki&lt;/a&gt;
nachlesenen kann, ist es möglich mit rsnapshot beliebig zu konfigurieren
wie viele tägliche/wöchentliche/monatliche/jährliche Backup-Versionen
man vorhalten möchte. Ich beschränke mich bei meiner Lösung auf ein
Backup pro Monat für ein Jahr lang, wobei das tagesaktuelle Backup
jeweils das des aktuellen Monats ist.&lt;/p&gt;
&lt;p&gt;Nun ein grober Abriss meines Vorgehens:&lt;/p&gt;
&lt;h3 id=&#34;server-installieren&#34;&gt;Server installieren&lt;/h3&gt;
&lt;p&gt;Als Betriebssystem habe ich Debian Wheezy (das aktuelle Stable-Release)
installiert. Dabei habe ich lediglich &amp;ldquo;Desktop&amp;rdquo; abgewählt, da mein
Server keine GUI benötigt, und &amp;ldquo;SSH-Server&amp;rdquo; angewählt. Eine
Debian-Installation ist so einfach, dass ich das hier nicht näher
erläutern muss.&lt;/p&gt;
&lt;h3 id=&#34;ssh-einrichten&#34;&gt;SSH einrichten&lt;/h3&gt;
&lt;p&gt;SSH habe ich nach dem Artikel im
&lt;a href=&#34;https://wiki.archlinux.de/title/Ssh&#34;&gt;Arch-Wiki&lt;/a&gt; eingerichtet und auch
den &lt;a href=&#34;https://wiki.archlinux.de/title/SSH-Authentifizierung_mit_Schl%C3%BCsselpaaren&#34;&gt;Passwortlosen
Login&lt;/a&gt;
konfiguriert.&lt;br&gt;
Ich habe lediglich die Zeile&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    AllowUsers BENUTERZAME@192.168.2.*
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;hinzugefügt um Logins nur aus meinem lokalen Netz zu erlauben. Die IP
ist natürlich auf die lokalen Gegebenheiten und BENUTZERNAME auf den
eigenen Benutzernamen auf dem Server anzupassen.&lt;/p&gt;
&lt;h3 id=&#34;wol-einrichten&#34;&gt;WOL einrichten&lt;/h3&gt;
&lt;p&gt;Um den Server, den ich täglich nur kurz für das Backup benötige, nicht
ständig laufen zu lassen habe ich beschlossen Wake On LAN zu nutzen.
Mein Laptop hängt per Netzwerkkabel an meinem Router und wird aufgeweckt
in dem ich ein Kommando über mein per WLAN angebundes Notebook schicke.
Dies habe ich nach einem &lt;a href=&#34;http://wiki.ubuntuusers.de/Wake_on_LAN&#34;&gt;Artikel im
Ubuntuusers-Wiki&lt;/a&gt; eingerichtet.&lt;br&gt;
In meinem Fall gab es noch ein kleines Problem, da meine Vodafone
Easy.Box das Magic Packet (TM) blockiert. Lösen konnte ich dies indem
ich im Konfigurations-Menu der Easy.Box bei &lt;em&gt;Daten→NAT→Port Mapping&lt;/em&gt;,
nach &lt;a href=&#34;http://stephan.mestrona.net/wol/forum/viewtopic.php?t=1435&#34;&gt;diesem
Foren-Thread&lt;/a&gt;,
folgendes eingetragen habe:\&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    LAN IP: SERVER_IP
    Protokolltyp: UDP
    LAN-Port: 9
    Öffentlicher Port: 12345
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Als SERVER_IP muss natürlich die IP des Servers im lokalen Netzwerk
eingegeben werden. Port 9 ist der Standard-Port für WOL-Pakete. Anstatt
12345 kann man auch einen anderen Port wählen, diesen muss man aber
später beim Senden des WOL-Paketes angeben. Zum Senden des WOL-Paketes
verwende ich das Programm
&lt;a href=&#34;http://packages.debian.org/search?keywords=wakeonlan&#34;&gt;wakeonlan&lt;/a&gt;.&lt;br&gt;
Vielen Dank an die hilfsbereiten, freundlichen und kompetenten User aus
dem
&lt;a href=&#34;https://wiki.debianforum.de/Debianforum.de/JabberChat&#34;&gt;debianforum.de-Chat&lt;/a&gt;,
die mir halfen das Problem zu lokalisieren und zu beheben.&lt;/p&gt;
&lt;h3 id=&#34;backup-per-rsync&#34;&gt;Backup per rsync&lt;/h3&gt;
&lt;p&gt;Nun konnte ich per WOL meinen Server wecken und per SSH darauf zugreifen
und es ging darum per rsync ein Backup auf den Server zu kopieren.
Herausgekommen sind folgende Zeilen:\&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    rsync -azP --delete --link-dest=../$(expr $(date +%-m) - 1) /home/USER_LOCAL USER_SERVER@SERVER_IP:backup/$(date +%-m)
    rsync -azP --delete --link-dest=../$(expr $(date +%-m) - 1) /etc USER_SERVER@SERVER_IP:backup/$(date +%-m)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;USER_LOCAL → Benutzername auf meinem Laptop, dessen home-Ordner ich
sichere.&lt;br&gt;
USER_SERVER → Benutzername auf dem Server, auf dem ich das Backup
ablege.&lt;br&gt;
SERVER_IP → IP des Servers (surprise, surprise :D)&lt;br&gt;
Die Optionen -azP sind relativ simpel und können leicht in der
&lt;a href=&#34;http://linux.die.net/man/1/rsync&#34;&gt;manpage&lt;/a&gt; von rsync nachvollzogen
werden.&lt;br&gt;
`backup/$(date +%-m)` gibt an, dass das Update auf dem Server im
Unterordner backup in einem weiteren Unterordner abgelegt wird. Der
weitere Unterordner wechselt monatlich, d.h. im Juli wird nach
$/backup/7 gesichert, im August nach $/backup/8. Dadurch erhalte ich
Ordner 1 &amp;ndash; 12, die jeweils das letze Backup für den Monat enthalten und
kann auf jeweils ein monatliches Backup des letzten Jahres
zurückgreifen.&lt;br&gt;
`--delete` sorgt dafür, dass Dateien welche ich lokal lösche auch aus
dem Backup entfernt werden.&lt;br&gt;
Mittels `--link-dest=` gebe ich einen Ordner an, indem nach
Übereinstimmungen gesucht wird. Ist in diesem Ordner eine Datei
vorhanden und im Vergleich zur zu sichernden Datei unverändert, wird
diese Datei nicht erneut übertragen sondern ein
&lt;a href=&#34;https://de.wikipedia.org/wiki/Harter_Link&#34;&gt;Hardlink&lt;/a&gt; auf die vorhandene
Datei gesetzt. Dadurch wird die Größe des Backups verringert
(Deduplikation). `../$(expr $(date +%-m) - 1)` sorgt dafür, dass als
Linkziel der Ordner gewählt wird, der das Backup des Vormonats enthält
(z.B. im Juli $/backup/6, im August $/backup/7). Im Januar
funktioniert dies natürlich nicht ordnungsgemäß, da 1 &amp;ndash; 1 = 0 ergibt.
Das habe ich recht hemdsärmelig gelöst indem ich einen
&lt;a href=&#34;https://de.wikipedia.org/wiki/Symbolische_Verkn%C3%BCpfung&#34;&gt;Symlink&lt;/a&gt;
von $/backup/0 auf $/backup/12 gelegt habe. Damit wird auch im Januar
der Vormonat Dezember als Linkziel gewählt.&lt;/p&gt;
&lt;h3 id=&#34;ruhezustand&#34;&gt;Ruhezustand&lt;/h3&gt;
&lt;p&gt;Abschließend wird der Server per `ssh root@SERVER_IP:&amp;quot;pm-suspend &amp;amp;
exit&amp;quot;` in den Ruhezustand versetzt.&lt;/p&gt;
&lt;h3 id=&#34;automatisierung&#34;&gt;Automatisierung&lt;/h3&gt;
&lt;p&gt;Um mich nicht mehr um das Backup kümmern zu müssen, sondern dieses
automatisiert ablaufen zu lassen habe ich ein Script erstellt und unter
`/etc/cron.daily/` gespeichert, damit es täglich ausgeführt wird.&lt;br&gt;
Dieses Script sieht vor den Server per WOL aufzuwecken, anschließend das
Backup durchzuführen und am Ende den Server in Suspend zu schicken. Das
Script funktioniert auch soweit, ist allerdings noch nicht optimal und
verhält sich teilweise noch nicht ganz korrekt, weshalb ich es hier noch
nicht veröffentliche. Sobald die Kinderkrankheiten ausgemerzt sind werde
ich es hier veröffentlichen.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;[Nachtrag 2013-09-12]&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Mittlerweile habe ich ein Script, das nach einigen Änderungen alles tut
was es soll.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;#! /bin/sh

# Backup-Server hochfahren
wakeonlan -p WOL_PORT SERVER_MAC 1&amp;gt;/dev/null
# Auch unter /usr/local/bin/wol

# Warten bis Backup-Server bereit
sleep 10

if [ `ping -c 1 SERVER_IP | grep -wc 100%` -eq 0 ]
then

sudo -u martin notify-send -a Backup &amp;#34;Automatisches Backup wird durchgeführt.&amp;#34;

# Bei Problemen zu Testzwecken auskommentieren
# ssh -v -p SSH_PORT martin@SERVER_IP /bin/true

# Backup per rsync
rsync -az --delete --rsh=&amp;#34;ssh -p SSH_PORT&amp;#34; --link-dest=../$(expr $(date +%-m) - 1) --exclude=martin/.cache --exclude=martin/Videos /home/martin martin@SERVER_IP:backup/$(date +%-m)
rsync -az --delete --rsh=&amp;#34;ssh -p SSH_PORT&amp;#34; --link-dest=../$(expr $(date +%-m) - 1) /etc martin@SERVER_IP:backup/$(date +%-m)
rsync -az --delete --rsh=&amp;#34;ssh -p SSH_PORT&amp;#34; --link-dest=../$(expr $(date +%-m) - 1) /root martin@SERVER_IP:backup/$(date +%-m)

# Server nach Backup schlafen schicken
ssh root@SERVER_IP -p SSH_PORT &amp;#34;pm-suspend-hybrid &amp;amp; exit&amp;#34;
# Bei Servern, die per SSH vom Internet erreichbar sind sollte man sich überlegen den root-login zu sperren und stattdessen sudo für pm-suspend-hybrid zu nutzen.

else
echo &amp;#34;Backup konnte nicht durchgeführt werden. \nDer Server war nicht erreichbar.&amp;#34; | mail -s &amp;#34;Backup fehlgeschlagen!&amp;#34; martin@hostname
fi
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Ich werde demnächst auch noch im Detail erklären, warum ich das so
gelöst habe. Im Moment fehlt mir dazu leider die Zeit.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Debian-Wallpaper</title>
      <link>/2013/07/26/debian-wallpaper/</link>
      <pubDate>Fri, 26 Jul 2013 00:00:00 +0000</pubDate>
      <guid>/2013/07/26/debian-wallpaper/</guid>
      <description>&lt;p&gt;Heute habe ich mal wieder ein bisschen mit GIMP gespielt und dabei ist
ein Debian-Wallpaper herausgekommen. Es ist ziemlich schlicht gehalten,
aber ich finde es ganz elegant. 😀&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://mdosch.deviantart.com/art/debian-the-universal-operating-system-388411796&#34;&gt;&lt;img src=&#34;/wp-content/uploads/2013/07/wall_debian_tuos-600x337.png&#34; alt=&#34;Debian
Wallpaper&#34;&gt;{.aligncenter
.size-medium .wp-image-211 width=&amp;ldquo;600&amp;rdquo;
height=&amp;ldquo;337&amp;rdquo;}&lt;/a&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Programmempfehlung: Jameica &#43; Hibiscus</title>
      <link>/2013/06/29/programmempfehlung-jameica-&#43;-hibiscus/</link>
      <pubDate>Sat, 29 Jun 2013 00:00:00 +0000</pubDate>
      <guid>/2013/06/29/programmempfehlung-jameica-&#43;-hibiscus/</guid>
      <description>&lt;p&gt;Nach meinem Umstieg von Windows auf Linux vor ~10 Jahren war eines der
wenigen Programme, die mir fehlten ein ordentliches
Homebanking-Programm. Mit Mühe und Not bekam ich
&lt;a href=&#34;http://www.gnucash.org/&#34;&gt;GNUCash&lt;/a&gt; dazu meine Bankgeschäfte per HBCI
auszuführen, diese Lösung gefiel mir jedoch nie, da es sprichwörtlich
&lt;em&gt;mit Kanonen auf Spatzen geschossen&lt;/em&gt; war. Bei
&lt;a href=&#34;http://www-in.fh-swf.de/fbin/roth/moneypenny.htm&#34;&gt;Moneypenny&lt;/a&gt;
scheiterte ich immer am Kompilieren und
&lt;a href=&#34;http://matrica.de/produkte/produktmpx.html&#34;&gt;Moneyplex&lt;/a&gt; sagte mir nie
zu.&lt;br&gt;
Zum Glück stolperte ich irgendwann über
&lt;a href=&#34;https://www.willuhn.de/products/hibiscus/&#34;&gt;Hibiscus&lt;/a&gt; eine
Java-Homebanking-Anwendung mit HBCI-Unterstützung für die
&lt;a href=&#34;https://www.willuhn.de/products/jameica/&#34;&gt;Jameica&lt;/a&gt;-Plattform. Das
Programm bietet alle
&lt;a href=&#34;https://www.willuhn.de/products/hibiscus/features.php&#34;&gt;Funktionen&lt;/a&gt;, die
ich benötige und lässt sich einfach bedienen. Dass es unter der GPL
veröffentlicht wird, also freie Software ist, ist natürlich ein weiterer
Pluspunkt.&lt;br&gt;
Leider gibt es Jameica/Hibiscus nicht in den Debian-Repositories, ich
hoffe aber dass sich das ändert da ich es mir
&amp;ldquo;&lt;a href=&#34;http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=690874&#34;&gt;gewünscht&lt;/a&gt;&amp;rdquo;
habe. 😄 Hätte ich die Zeit und die nötige Kompetenz würde ich mich ja
darum kümmern, so bleibt mir nur zu hoffen, dass sich jemand dem
Programm annimmt. 😉 Wie das geht hat Apo in seinem Blog, zwar auf Spiele
bezogen aber das lässt sich transferieren,
&lt;a href=&#34;http://www.gambaru.de/blog/2012/10/16/du-willst-ein-spiel-in-debian-und-ubuntu-sehen-so-gehts/&#34;&gt;erklärt&lt;/a&gt;.&lt;br&gt;
Wer es sich einfach machen möchte kann das
&lt;a href=&#34;https://launchpad.net/~dennis-benndorf/+archive/ppa&#34;&gt;Ubuntu-PPA&lt;/a&gt; auch
unter Debian nutzen. Das ist zwar &lt;em&gt;quick &amp;rsquo;n dirty&lt;/em&gt; aber hat bei mir in
der Vergangenheit gut funktioniert. Ich bin dazu übergegangen Jameica
einfach nach &lt;code&gt;/opt/&lt;/code&gt; und anschließend Hibiscus nach
&lt;code&gt;/opt/jameica/plugins/&lt;/code&gt; zu entpacken. Damit kann man schon arbeiten.
Wenn man möchte kann man noch per&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# ln -s /opt/jameica/jameica.sh /usr/local/bin/jameica
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;br&gt;
eine Verknüpfung anlegen damit man Jameica per Alt+F2 oder im Terminal
per &lt;code&gt;jameica&lt;/code&gt; starten kann und nicht den vollen Pfad angeben muss.&lt;br&gt;
Ich persönlich habe mir mit
&lt;a href=&#34;http://packages.debian.org/search?keywords=alacarte&amp;amp;searchon=names&amp;amp;suite=all&amp;amp;section=all&#34;&gt;alacarte&lt;/a&gt;
einen Anwendungsstarter erstellt, den ich in die Schnellstartleiste von
Gnome3 eingefügt habe.&lt;br&gt;
Der Nachteil meiner Lösung ist, dass ich regelmäßig im
&lt;a href=&#34;https://www.willuhn.de/blog/&#34;&gt;Blog&lt;/a&gt; von Olaf Willuhn (dem Programmierer
von Jameica/Hibiscus) nachschauen muss ob eine neue Version verfügbar
ist, da ich am Paketmanagement vorbei installiert habe.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;[![Kontoauszüge in
Jameica/Hibiscus](https://www.willuhn.de/products/hibiscus/screenshots/thumb/12.png){width=&amp;#34;150&amp;#34;
height=&amp;#34;116&amp;#34;}](https://www.willuhn.de/products/hibiscus/screenshots/12.png)

Kontoauszüge in Jameica/Hibiscus\
Quelle: &amp;lt;https://www.willuhn.de/products/hibiscus/screenshots.php&amp;gt;
&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    
    <item>
      <title>Zsh als Bash-Ersatz</title>
      <link>/2013/06/21/zsh-als-bash-ersatz/</link>
      <pubDate>Fri, 21 Jun 2013 00:00:00 +0000</pubDate>
      <guid>/2013/06/21/zsh-als-bash-ersatz/</guid>
      <description>&lt;p&gt;Da man in Foren oder Blogs häufig von den Vorteilen der
&lt;a href=&#34;http://www.zsh.org/&#34;&gt;zsh&lt;/a&gt; liest (z.B.
&lt;a href=&#34;http://daemonkeeper.net/318/zsh-die-bessere-shell/&#34;&gt;hier&lt;/a&gt;) habe ich nun
beschlossen mir diese einzurichten. Unter Debian lässt sie sich
komfortabel über&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    apt-get install zsh
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;installieren. Mit
&lt;a href=&#34;https://github.com/robbyrussell/oh-my-zsh&#34;&gt;&lt;em&gt;oh-my-zsh&lt;/em&gt;&lt;/a&gt; richte ich mir
auch gleich ein beliebtes Framework, welches auch einige Plugins und
Themes mitbringt, ein. Um dieses zu installieren, muss das Programm git
installiert sein. Per&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    wget --no-check-certificate https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh -O - | sh
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;installiert man &lt;em&gt;oh-my-zsh&lt;/em&gt; und mit&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    chsh -s $(which zsh)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;richtet man die zsh als Standard-Shell ein.&lt;/p&gt;
&lt;p&gt;Von den &lt;a href=&#34;https://github.com/robbyrussell/oh-my-zsh/wiki/themes&#34;&gt;Themes&lt;/a&gt;
gefällt mir &lt;em&gt;agnoster&lt;/em&gt; ganz gut, also beschließe ich dieses einzurchten.
Das Theme setzt das &lt;em&gt;Solarized Dark&lt;/em&gt; Farbschema und eine
powerline-gepatchte Schriftart für bestimmte Sonderzeichen voraus. Ich
habe mir &lt;a href=&#34;https://github.com/Lokaltog/powerline-fonts&#34;&gt;hier&lt;/a&gt; die Schrift
&lt;em&gt;Ubuntu Mono&lt;/em&gt; heruntergeladen und installiert. Diese habe ich dann im
Gnome-Terminal als Schriftart ausgewählt.&lt;/p&gt;
&lt;p&gt;Das &lt;a href=&#34;http://ethanschoonover.com/solarized&#34;&gt;Farbschema&lt;/a&gt; habe ich, wie
&lt;a href=&#34;http://www.webupd8.org/2011/04/solarized-must-have-color-paletter-for.html&#34;&gt;hier&lt;/a&gt;
beschrieben, mit folgenden Befehlen heruntergeladen und eingerichtet.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    git clone https://github.com/sigurdga/gnome-terminal-colors-solarized.git
    ./gnome-terminal-colors-solarized/install.sh
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Anschließend konnte ich in der Konfigurationsdatei &lt;code&gt;~/.zshrc&lt;/code&gt; das Theme
mit folgender Zeile&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    ZSH_THEME=&amp;#34;agnoster&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;auswählen.&lt;/p&gt;
&lt;p&gt;Nun habe ich eine recht hübsch aussende Shell und nach ein paar Arbeiten
damit kann ich sagen, dass die zsh vieles wesentlich vereinfacht und ich
denke ich werde die Bash dauerhaft ersetzen. Nun muss ich mir nur noch
ein paar Tipps &amp;amp; Tricks zur zsh zusammensuchen um ein paar der
zahlreichen Funktionen kennzulernen.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;/wp-content/uploads/2013/06/Bildschirmfoto-vom-2013-06-21-214916.png&#34;&gt;&lt;img src=&#34;/wp-content/uploads/2013/06/Bildschirmfoto-vom-2013-06-21-214916-450x264.png&#34; alt=&#34;zsh-user&#34;&gt;{.aligncenter
.size-thumbnail .wp-image-173 width=&amp;ldquo;450&amp;rdquo;
height=&amp;ldquo;264&amp;rdquo;}&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;/wp-content/uploads/2013/06/Bildschirmfoto-vom-2013-06-21-215121.png&#34;&gt;&lt;img src=&#34;/wp-content/uploads/2013/06/Bildschirmfoto-vom-2013-06-21-215121-450x264.png&#34; alt=&#34;zsh-root&#34;&gt;{.aligncenter
.size-thumbnail .wp-image-174 width=&amp;ldquo;450&amp;rdquo;
height=&amp;ldquo;264&amp;rdquo;}&lt;/a&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Mein neues Notebook</title>
      <link>/2013/06/19/mein-neues-notebook/</link>
      <pubDate>Wed, 19 Jun 2013 00:00:00 +0000</pubDate>
      <guid>/2013/06/19/mein-neues-notebook/</guid>
      <description>&lt;h4 id=&#34;das-neue&#34;&gt;Das Neue&lt;/h4&gt;
&lt;p&gt;So, mein neues Notebook ist da. Hier werde ich meine Erfahrungen mit der
Installation des Betriebssystems und der Inbetriebnahme und
Konfiguration behandeln. Dabei werde ich natürlich nicht jeden einzelnen
Schritt erschöpfend behandeln, aber ein kleiner Erfahrungsbericht soll
es schon werden. 😉 []{#more-91}&lt;br&gt;
Es handelt sich bei meinem neuen Laptop um ein &lt;em&gt;Wortmann Terra Mobile
1541 Pro&lt;/em&gt; mit folgender Ausstattung:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;1x NB MOBILE 1541 15.6″ FHD 1920×1080/HM77/Docking&lt;br&gt;
15.6″ FHD 16:9 (1920×1080),mit Tastatur dt.&lt;br&gt;
Chipsatz Intel HM77,&lt;br&gt;
RAM max.16GB DDR3 (2x Sockel frei) 1333/1600&lt;br&gt;
LAN 10/100/1000,3x USB 3.0,1xUSB2,0,&lt;br&gt;
SlimDVD-Brenner,&lt;br&gt;
VGA, HDMI ,eSATA, UMTS-Modul optional&lt;br&gt;
Docking Port,Fingerprint,Webcam 2.0MP,TPM,WOL,&lt;br&gt;
Cardreader (MMC/RSMMC/SD/MiniSD/SDHC/SDXC/MS/ MS Pro/MS Duo),&lt;br&gt;
Expresscard&lt;br&gt;
Microphone in, Line out,&lt;br&gt;
Li-Ion Akku 62WH (6 Monate Gewährleistung)&lt;br&gt;
374 x 256 x 37,9mm,&lt;br&gt;
2,5 Kg -OS: Windows 7/Windows 8 OPTIONAL&lt;br&gt;
TERRA Logo auf Displayabdeckung&lt;/p&gt;
&lt;p&gt;1x NB CPU Intel Core i5-3230M PPGA988/2,6GHz/Ivy&lt;br&gt;
PGA988B (G2), 2.60 (3.20) GHz, 3 MB, Ivy Bridge • Dual-Core (2C/4T)
mit HD 4000 Graphics (DX11) (Ivy Bridge, Chief River)&lt;/p&gt;
&lt;p&gt;2x SO-DIMM DDR3 4GB / PC1600&lt;/p&gt;
&lt;p&gt;1x HDNB 500.0GB Toshiba MK5061GSYN / 7200rpm / S-AT&lt;/p&gt;
&lt;p&gt;1x -&amp;gt;&amp;gt; FreeDOS (Preload ohne Handbuch &amp;amp; Datenträger)&lt;/p&gt;
&lt;p&gt;24 Monate Garantie incl. Pickup TERRA MOBILE&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Wie man sieht habe ich die Standardfestplatte durch eine flottere mit
7200rpm ersetzt und das Windows durch FreeDOS ersetzt, da ich, wie
&lt;a href=&#34;/2013/06/13/notebooks-ohne-windows/&#34;&gt;bereits erwähnt&lt;/a&gt;, eh Linux
installieren möchte. Zusätzlich zu den 24 Monaten Garantie habe ich zwei
weitere Jahre Garantieerweiterung erworben, da ich jetzt schon zweimal
den Fall hatte, dass nach ~3 Jahren nach und nach Defekte auftraten
(geplante Obszoleszens?). Auf das optionale UMTS-Modul habe ich
verzichtet.&lt;/p&gt;
&lt;h4 id=&#34;das-alte&#34;&gt;Das Alte&lt;/h4&gt;
&lt;p&gt;Das Terra soll mein Lenovo G560 ersetzen. Dieses wäre mir von der
Ausstattung her zwar noch gut genug, aber es hatte in letzter Zeit einig
Defekte und ich beschloss mir ein neues zuzulegen. Hier mal die
Ausstattung des alten Laptops:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    # inxi -F
    System:    Host: schlepptop Kernel: 3.8-1-amd64 x86_64 (64 bit) Desktop: Gnome Distro: Debian GNU/Linux jessie/sid

    Machine:   System: LENOVO product: 0679 version: Lenovo G560 serial: 2378786700757 
               Mobo: LENOVO model: N/A serial: CBG3093868 Bios: LENOVO version: 29CN27WW(V2.04) date: 06/01/2010

    CPU:       Dual core Intel Core i3 CPU M 350 (-HT-MCP-) cache: 3072 KB flags: (lm nx sse sse2 sse3 sse4_1 sse4_2 ssse3 vmx) 
               Clock Speeds: 1: 933.00 MHz 2: 933.00 MHz 3: 933.00 MHz 4: 2266.00 MHz

    Graphics:  Card: Intel Core Processor Integrated Graphics Controller 
               X.org: 1.12.4 drivers: intel (unloaded: fbdev,vesa) tty size: 80x24 Advanced Data: N/A for root 

    Audio:     Card-1: Intel 5 Series/3400 Series High Definition Audio driver: snd_hda_intel Sound: ALSA ver: k3.8-1-amd64

    Network:   Card-1: Broadcom BCM43225 802.11b/g/n driver: bcma-pci-bridge 
               IF: wlan0 state: up mac: --deleted--
               Card-2: Realtek RTL8101E/RTL8102E PCI Express Fast Ethernet controller driver: r8169 
               IF: eth0 state: up speed: 100 Mbps duplex: full mac: --deleted--

    Drives:    HDD Total Size: 500.1GB (56.7% used) 1: id: /dev/sda model: WDC_WD5000BEVT size: 500.1GB 

    Partition: ID: / size: 451G used: 265G (62%) fs: ext4 ID: swap-1 size: 8.17GB used: 0.37GB (5%) fs: swap

    Sensors:   System Temperatures: cpu: 56.0C mobo: N/A 
               Fan Speeds (in rpm): cpu: N/A 

    Info:      Processes: 199 Uptime: 5 days Memory: 1968.2/3766.6MB Client: Shell (bash) inxi: 1.9.7
&lt;/code&gt;&lt;/pre&gt;&lt;h4 id=&#34;installation&#34;&gt;Installation&lt;/h4&gt;
&lt;p&gt;Das neue Notebook wurde gerade geliefert und als erstes steht die
Installation des Betriebssystems an. Installiert wird ein Debian Testing
per
&lt;a href=&#34;http://cdimage.debian.org/debian-cd/7.0.0/amd64/iso-cd/debian-7.0.0-amd64-netinst.iso&#34;&gt;Netinstall&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Der Laptop bootet gefühlt in einer Sekunde, was aber kein Wunder ist, da
noch &lt;a href=&#34;http://www.freedos.org/&#34;&gt;FreeDOS&lt;/a&gt; installiert ist. Nach Einlegen
der Installations-CD und &lt;em&gt;Strg+Alt+Entf&lt;/em&gt; wird diese auch gleich
gebooted. Es scheint also schon mal kein
&lt;a href=&#34;http://www.heise.de/ct/hotline/FAQ-UEFI-Secure-Boot-und-Linux-1776846.html&#34;&gt;UEFI/SecureBoot&lt;/a&gt;
meine Linux-Installation zu blockieren. Zuerst sticht mir ins Auge, dass
eine grafische Installation angeboten wird. Ist diese bei der
Netinstall-CD neu, oder mir bisher noch nie aufgefallen? Ich werde vom
Installer gleich darauf hingewiesen, dass Firmware für die
Netzwerkkarten fehlt.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;/wp-content/uploads/2013/06/hw-detect_load_firmware_0.png&#34;&gt;&lt;img src=&#34;/wp-content/uploads/2013/06/hw-detect_load_firmware_0-450x337.png&#34; alt=&#34;Meldung fehlende
Firmware&#34;&gt;{.aligncenter
.size-thumbnail .wp-image-143 width=&amp;ldquo;450&amp;rdquo;
height=&amp;ldquo;337&amp;rdquo;}&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Diese lade ich mir auf meinem Lenovo mittels&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    apt-get -t testing download firmware-iwlwifi
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;herunter. Die Option &lt;code&gt;-t testing&lt;/code&gt; verwende ich, da ich auf meinem Lenovo
Unstable verwende, auf meinem Terra aber Testing installieren möchte.
Das heruntergeladene .deb-Paket kopiere ich auf einen USB-Stick und
entpacke es, obwohl ich nicht weiß ob das Entpacken notwendig ist.&lt;br&gt;
Die Firmware wird auf dem USB-Stick auch gleich erkannt und die
Installation geht weiter.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;/wp-content/uploads/2013/06/netcfg_choose_interface_0.png&#34;&gt;&lt;img src=&#34;/wp-content/uploads/2013/06/netcfg_choose_interface_0-450x337.png&#34; alt=&#34;Netzwerkgerät
auswählen&#34;&gt;{.aligncenter
.size-thumbnail .wp-image-144 width=&amp;ldquo;450&amp;rdquo;
height=&amp;ldquo;337&amp;rdquo;}&lt;/a&gt;&lt;br&gt;
Ich lasse den Installer die komplette Festplatte automatisch formatieren
und partitionieren und treffe die üblichen Einstellungen (Benutzername,
Passwörter etc.). Die Frage ob ich am Debian
&lt;a href=&#34;http://popcon.debian.org/&#34;&gt;Popularity-Contest&lt;/a&gt; teilnehmen möchte bejahe
ich und über tasksel wähle ich &lt;em&gt;Standard-Systemwerkzeuge&lt;/em&gt; und &lt;em&gt;Laptop&lt;/em&gt;.
&lt;em&gt;Desktop&lt;/em&gt; wähle ich ab, obwohl ich
&lt;a href=&#34;https://www.gnome.org/gnome-3/&#34;&gt;Gnome3&lt;/a&gt; benutzen möchte, um dies später
per &lt;em&gt;apt-get install gnome-core&lt;/em&gt; zu installeren, da mir über das
Metapaket zu viele Programme installiert werden, die ich nicht nutzen
möchte (z.B. &lt;a href=&#34;http://projects.gnome.org/rhythmbox/&#34;&gt;Rhythmbox&lt;/a&gt;, dem ich
&lt;a href=&#34;http://www.clementine-player.org/&#34;&gt;Clementine&lt;/a&gt; vorziehe).&lt;br&gt;
Da es sich um die Netinstall-CD handelt werden alle Pakete außer einem
minimalen Basissystem direkt in der aktuellen Version von den
Debian-Servern geladen.&lt;br&gt;
Die Installation lief erfahrungsgemäß ohne Probleme durch.&lt;/p&gt;
&lt;h4 id=&#34;konfiguration&#34;&gt;Konfiguration&lt;/h4&gt;
&lt;p&gt;Ich möchte niemanden mit einer pedantischen Auflistung aller Schritte,
die ich durchgeführt habe langweilen deshalb werde ich hier exemplarisch
ein paar Worte zur Einrichtung verlieren. Zuerst stelle ich mein &lt;a href=&#34;/files2013/06/13/backup-mit-rsync/&#34;&gt;Backup
per rsync&lt;/a&gt; wieder her. Dabei
verzichte ich darauf den home-Ordner komplett zurückzusichern sondern
nutze die Gelegenheit wieder ohne &amp;ldquo;Altlasten&amp;rdquo; mit frischen
Konfigurationen zu starten und stelle nur die Daten von Ordnern wie
&lt;em&gt;Dokumente, Musik, Bilder&lt;/em&gt; und ausgewählte Konfigurationen (z.B.
&lt;em&gt;.mozilla, .icedove, .gnupg&lt;/em&gt;) wieder her.&lt;/p&gt;
&lt;p&gt;Da ich bei Programmen wie Iceweasel und Icedove gerne die aktuellen
Versionen des Upstreams benutze füge ich auch die Releases &lt;em&gt;Unstable&lt;/em&gt;
und &lt;em&gt;Experimental&lt;/em&gt; zu meiner &lt;em&gt;/etc/apt/sources.list&lt;/em&gt; hinzu. Um nicht
mein ganzes System auf &lt;em&gt;Unstable&lt;/em&gt; zu upgraden sorge ich per
&lt;a href=&#34;https://wiki.debianforum.de/AptPinning&#34;&gt;apt-pinning&lt;/a&gt; dafür, dass
standardmäßig weiter aus &lt;em&gt;Testing&lt;/em&gt; installiert wird und füge für Pakete
wie Icedove und Iceweasel explizit Ausnahmeregeln in der
&lt;em&gt;/etc/apt/preferences&lt;/em&gt; hinzu.&lt;/p&gt;
&lt;p&gt;Hier meine Quellen:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    # /etc/apt/sources.list

    deb http://ftp.de.debian.org/debian/ testing main non-free contrib
    #deb-src http://ftp.de.debian.org/debian/ testing main non-free contrib

    deb http://security.debian.org/ testing/updates main contrib non-free
    #deb-src http://security.debian.org/ testing/updates main contrib non-free

    deb http://www.deb-multimedia.org/ testing main non-free

    deb http://ftp.de.debian.org/debian/ unstable main non-free contrib
    #deb-src http://ftp.de.debian.org/debian/ unstable main non-free contrib

    deb http://ftp.de.debian.org/debian/ experimental main non-free contrib
    #deb-src http://ftp.de.debian.org/debian/ experimental main non-free contrib
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Und hier mein, zugegeben ungewöhnliches, Pinning:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    # /etc/apt/preferences

    Package: *
    Pin: release o=debian,a=testing
    Pin-Priority: 900

    Package: *
    Pin: release o=debian,a=unstable
    Pin-Priority: 600

    Package: *
    Pin: release o=debian,a=experimental
    Pin-Priority: 550

    Package: *
    Pin: origin www.deb-multimedia.org
    Pin-Priority: 100

    Package: iceweasel
    Pin: release o=debian
    Pin-Priority: 995

    Package: iceweasel-l10n-de
    Pin: release o=debian
    Pin-Priority: 995

    Package: icedove
    Pin: release o=debian
    Pin-Priority: 995

    Package: icedove-l10n-de
    Pin: release o=debian
    Pin-Priority: 995
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Ansonsten verlief die Einrichtung sehr unspektakulär. Alles läuft ohne
Verrenkungen out-of-the-box, die einzige unfreie Firmware, die benötigt
wurde, war firmware-iwlwifi welche schon im Installer hinzugefügt wurde.
Ansonsten funktioniert der Ton (OnBoard, Stereoanlage über USB-DAC, und
USB-Boxen in der Küche), Grafik, LAN, WLAN, Bluetooth und Webcam. Mir
fällt gar nicht mehr ein was ich noch testen könnte.&lt;br&gt;
Lediglich für meinen DVB-T Stick musste ich manuell eine
&lt;a href=&#34;http://linuxtv.org/downloads/firmware/dvb-usb-dtt200u-01.fw&#34;&gt;Firmware&lt;/a&gt;
(gefunden bei
&lt;a href=&#34;http://linuxtv.org/wiki/index.php/DVB-T_USB_Devices#WideView.2FYakumo.2FHama.2FTyphoon.2FYuan_Boxes_and_Pens&#34;&gt;linuxtv.org&lt;/a&gt;)
herunterladen und nach &lt;em&gt;/lib/firmware/&lt;/em&gt; kopieren.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    # lsusb
    Bus 002 Device 013: ID 14aa:0201 WideView Technology Inc. AVermedia/Yakumo/Hama/Typhoon DVB-T USB2.0 (cold)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Eine Bewertung über Haptik, Wertigkeit etc. werde ich vermutlich erst in
ein paar Tagen treffen können, da solche Dinge gerade am ersten Tag
etwas ungewohnt sind (vor allem die Tastatur). Dann werde ich wohl auch
noch ein paar Bilder schießen und hochladen.&lt;br&gt;
Fürs erste muss der inxi-Output genügen:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;System: Host: schlepptop Kernel: 3.2.0-4-amd64 x86_64 (64 bit)
Desktop: Gnome Distro: Debian GNU/Linux jessie/sid&lt;/p&gt;
&lt;p&gt;Machine: Mobo: CLEVO model: W25CEW Bios: American Megatrends version:
4.6.5 date: 11/08/2012&lt;/p&gt;
&lt;p&gt;CPU: Dual core Intel Core i5-3230M CPU (-HT-MCP-) cache: 3072 KB
flags: (lm nx sse sse2 sse3 sse4_1 sse4_2 ssse3 vmx)&lt;br&gt;
Clock Speeds: 1: 1200.00 MHz 2: 1200.00 MHz 3: 1200.00 MHz 4: 1200.00
MHz&lt;/p&gt;
&lt;p&gt;Graphics: Card: Intel 3rd Gen Core processor Graphics Controller&lt;br&gt;
X.org: 1.12.4 drivers: intel (unloaded: fbdev,vesa) tty size: 80×24
Advanced Data: N/A for root&lt;/p&gt;
&lt;p&gt;Audio: Card-1: Intel 7 Series/C210 Series Family High Definition Audio
Controller driver: snd_hda_intel&lt;br&gt;
Card-2: Texas Instruments Speakers driver: USB Audio&lt;br&gt;
Sound: Advanced Linux Sound Architecture ver: 1.0.24&lt;/p&gt;
&lt;p&gt;Network: Card-1: Intel 82579V Gigabit Network Connection driver:
e1000e&lt;br&gt;
IF: eth0 state: down mac: &amp;ndash;deleted&amp;ndash;&lt;br&gt;
Card-2: Intel Centrino Wireless-N 2230 driver: iwlwifi&lt;br&gt;
IF: wlan0 state: up mac: &amp;ndash;deleted&amp;ndash;&lt;/p&gt;
&lt;p&gt;Drives: HDD Total Size: 1500.3GB (51.3% used) 1: id: /dev/sda model:
TOSHIBA_MK5061GS size: 500.1GB&lt;br&gt;
2: id: /dev/sdb model: 10EAVS_External size: 1000.2GB&lt;/p&gt;
&lt;p&gt;Partition: ID: / size: 443G used: 180G (43%) fs: ext4 ID: swap-1 size:
16.93GB used: 0.00GB (0%) fs: swap&lt;/p&gt;
&lt;p&gt;Sensors: System Temperatures: cpu: 48.0C mobo: N/A&lt;br&gt;
Fan Speeds (in rpm): cpu: N/A&lt;/p&gt;
&lt;p&gt;Info: Processes: 186 Uptime: 3:08 Memory: 2155.6/7886.2MB Client:
Shell (bash) inxi: 1.9.7&lt;/p&gt;
&lt;/blockquote&gt;
</description>
    </item>
    
    <item>
      <title>Piwik</title>
      <link>/2013/06/15/piwik/</link>
      <pubDate>Sat, 15 Jun 2013 00:00:00 +0000</pubDate>
      <guid>/2013/06/15/piwik/</guid>
      <description>&lt;p&gt;Ich habe heute &lt;a href=&#34;https://de.piwik.org/&#34;&gt;Piwik&lt;/a&gt; installiert um ein paar
Statistiken über Seitenzugriffe, Referrer, verwendete Betriebsysteme,
Browser und ähnliches zu bekommen. Ich habe Piwik vor ein paar Jahren
schon mal eingesetzt und habe mich auch diesmal wieder dafür und nicht
für Google-Analytics o.ä. entschieden, da Piwik lokal bei meinem Hoster
läuft. Externe Dienste wie Google-Analytics erlauben dem Dienstleister,
in diesem Beispiel Google, nämlich das Tracking der Besucher über
mehrere Seiten hinweg. Außerdem ist Piwik &lt;a href=&#34;https://de.wikipedia.org/wiki/Freie_Software&#34;&gt;freie
Software&lt;/a&gt; und ich
bevorzuge diese wo es möglich ist.&lt;br&gt;
Piwik benötigt für die Erfassung der Daten Java-Script, wer mir also die
Erfassung von Zugriffsstatistiken etc. ermöglichen will erlaubt bitte JS
für piwik.mdosch.de. Piwik ist auch so konfiguriert, dass es den
&lt;a href=&#34;https://de.wikipedia.org/wiki/Do_Not_Track&#34;&gt;DNT&lt;/a&gt;-Header berücksichtigt.&lt;/p&gt;
&lt;h5 id=&#34;update-2016-08-26&#34;&gt;Update 2016-08-26&lt;/h5&gt;
&lt;p&gt;Piwik ist mittlerweile deaktiviert. Ich fand es zwar interessant über
Piwik zu sehen woher die Besucher kamen und dadurch Verlinkungen auf
meinen Blog zu finden, aber ich möchte meinen Blog so Datenschutzkonform
wie möglich einrichten um mit gutem Beispiel voran zu gehen.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Backup mit rsync</title>
      <link>/2013/06/13/backup-mit-rsync/</link>
      <pubDate>Thu, 13 Jun 2013 00:00:00 +0000</pubDate>
      <guid>/2013/06/13/backup-mit-rsync/</guid>
      <description>&lt;p&gt;Ich gebe es zu, ich war in letzter Zeit faul und hatte seit Januar kein
Backup mehr gemacht. Zuletzt verwendete ich dafür das auf
&lt;a href=&#34;http://duplicity.nongnu.org/&#34;&gt;Duplicity&lt;/a&gt; aufsetzende &lt;a href=&#34;https://launchpad.net/deja-dup&#34;&gt;Déjà
Dup&lt;/a&gt;, aber bei der letzten Installation
meines Laptops hatte ich arge Probleme das Backup wiederherzustellen, da
Déjà Dup die Integrität des Backups in Frage stellte und auch häufig
crashte. Nach mehrmaligen Versuchen gelang es zwar doch, aber da Déjà
Dup das Backup in einem eigenen Format speichert besteht grundsätzlich
die Gefahr das Backup nicht wiederherstellen zu können. Der
Ubuntu-Entwickler Michael Terry weist auch in einem
&lt;a href=&#34;http://mterry.name/log/2011/09/19/backups-and-distro-upgrading/&#34;&gt;Blog-Eintrag&lt;/a&gt;
auf dieses Risiko hin.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;My concern stems from the fact that Déjà Dup uses an opaque backup
format [1]. Which means that it does not store your data in plain
files that you can just copy back into place with the file manager.
You&amp;rsquo;ll need to use Déjà Dup again to restore them [2]. Which is fine
if Déjà Dup is working correctly, as it should.&lt;/p&gt;
&lt;p&gt;But just from a risk management perspective, I always recommend that
people try to have at least one copy of their data in &amp;ldquo;plain files&amp;rdquo;
format at all times.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Aus diesem Grund möchte ich ein simples altbewährtes Tool nutzen, bei
dem die Wahrscheinlichkeit einer Fehlfunktion geringer ist und ich im
Notfall die Dateien auch händisch wiederherstellen kann. Meine Wahl fiel
dabei auf &lt;a href=&#34;http://rsync.samba.org/&#34;&gt;rsync&lt;/a&gt;. Rsync kann Dateien lokal
oder über Netzwerk sichern. Ich verwende in meinem Fall eine
USB-Festplatte. Die Syntax von rsync ist simpel:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    rsync [OPTIONEN] Quelle Ziel
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Als Quelle wählt man natürlich den zu sichernden Ordner, wie z.B.
&lt;code&gt;/home/martin&lt;/code&gt; und als Ziel das Zielmedium in meinem Fall
&lt;code&gt;/media/martin/USB-Festplatten-UUID/Backup&lt;/code&gt; wobei ich der Lesbarkeit
wegen meine &lt;a href=&#34;http://wiki.ubuntuusers.de/UUID&#34;&gt;UUID&lt;/a&gt; durch
&lt;em&gt;USB-Festplatten-UUID&lt;/em&gt; ersetzt habe. Bei der Angabe der Quelle ist es
wichtig darauf zu achten, dass zwischen &lt;code&gt;Quelle&lt;/code&gt; und &lt;code&gt;Quelle/&lt;/code&gt;
unterschieden wird.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    rsync -a /home/martin/ /media/martin/USB-Festplatten-UUID/Backup
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;würde &lt;strong&gt;nur die Dateien im Ordner&lt;/strong&gt; martin zum Ziel übertragen, &lt;strong&gt;nicht
den Ordner&lt;/strong&gt; martin &lt;strong&gt;selbst&lt;/strong&gt;. Um den gesamten Ordner zu sichern muss
man&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    rsync -a /home/martin /media/martin/USB-Festplatten-UUID/Backup
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;ausführen.&lt;/p&gt;
&lt;p&gt;Wie man der &lt;a href=&#34;http://linux.die.net/man/1/rsync&#34;&gt;manpage&lt;/a&gt; entnehmen kann
gibt es sehr viele Optionen für rsync. Im vorigen Beispiel wurde die
Option &lt;code&gt;-a&lt;/code&gt; benutzt, welche die folgenden Optionen beinhaltet:&lt;/p&gt;
&lt;p&gt;-r -&amp;gt; Unterverzeichnisse werden mitkopiert (rekursiv)&lt;br&gt;
-l -&amp;gt; symbolische Links werden mitkopiert&lt;br&gt;
-p -&amp;gt; Rechte bleiben erhalten&lt;br&gt;
-t -&amp;gt; Zeiten bleiben erhalten&lt;br&gt;
-g -&amp;gt; Gruppenrechtebleiben erhalten&lt;br&gt;
-o -&amp;gt; Besitzrechte bleiben erhalten &lt;strong&gt;(root)&lt;/strong&gt;&lt;br&gt;
-D -&amp;gt; Gerätedateien bleiben erhalten &lt;strong&gt;(root)&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Um Besitzrechte und Gerätedateien zu erhalten muss rsync als &lt;em&gt;root&lt;/em&gt;
ausgeführt werden. Will man nicht nur symbolische Links sondern auch
Hardlinks erhalten, so kann man dies durch die Option &lt;code&gt;-H&lt;/code&gt; erreichen. Um
nach einem Abbruch an der Abbruchstelle fortsetzen zu können kann man
die Option &lt;code&gt;-P&lt;/code&gt; verwenden. Durch diese Option wird auch der Fortschritt
des Vorgangs angezeigt.&lt;br&gt;
Bei einer Übertragung über ein Netzwerk kann man durch &lt;code&gt;-z&lt;/code&gt; die Daten
komprimiert übertragen und durch &lt;code&gt;-e&lt;/code&gt; wählt man die Remote-Shell, z.B.
&lt;code&gt;-e ssh&lt;/code&gt;.&lt;br&gt;
Bei Aktualisierungen eines Backups kann die Option &lt;code&gt;--delete&lt;/code&gt; sinnvoll
sein, da sie Dateien die nicht mehr in der Quelle vorhanden sind auch im
Ziel löscht. So verhindert man auch, dass Dateien, welche seit dem
letzten Backup umbenannt wurden, doppelt im Backup vorkommen. Mit Hilfe
der Option &lt;code&gt;-b&lt;/code&gt; können veränderte Dateien, auch durch &lt;code&gt;--delete&lt;/code&gt;
gelöschte Dateien, in einen durch &lt;code&gt;--backup-dir=&lt;/code&gt; definierten
Backup-Ordner gesichert werden.&lt;br&gt;
Mittels &lt;code&gt;--exclude=&lt;/code&gt; kann man Ordner von der Übertragung ausschließen.
Dabei ist zu beachten, dass man den Ordner relativ zur Quelle und nicht
absolut angeben muss. D.h. wenn unsere Quelle &lt;code&gt;/home/martin&lt;/code&gt; ist und wir
wollen &lt;code&gt;/home/martin/.gnupg&lt;/code&gt; vom Backup ausschließen, müssen wir dies
mit &lt;code&gt;--exclude=/.gnupg&lt;/code&gt; tun, nicht mit &lt;code&gt;--exclude=/home/martin/.gnupg&lt;/code&gt;.&lt;br&gt;
Verwendet man &lt;code&gt;--stats&lt;/code&gt; bekommt man am Ende der Übertragung einen Report
und mit &lt;code&gt;-v&lt;/code&gt; während des Vorgangs die aktuellen Schritte angezeigt.&lt;/p&gt;
&lt;p&gt;Ich habe nun meinen home-Ordner wie folgt gesichert:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    rsync -avP --stats /home/martin /media/martin/USB-Festplatten-UUID/Backup
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Eine Sicherung, bei der gelöschte Dateien auch im bereits vorhandenen
Backup entfernt, aber gesichert, und die Daten komprimiert über SSH
übertragen werden könnte so aussehen:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    rsync -avPzbe &amp;#34;ssh -p 667&amp;#34; --delete --backup-dir=martin@zweitrechner:/tmp/Backup/Old /home/martin martin@zweitrechner:/tmp/Backup
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Weitere Informationen kann man durch &lt;code&gt;man rsync&lt;/code&gt; oder diesem
LinuxUser-&lt;a href=&#34;http://www.linux-community.de/Internal/Artikel/Print-Artikel/LinuxUser/2006/04/Dateien-abgleichen-mit-Rsync&#34;&gt;Artikel&lt;/a&gt;
erhalten.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Warnung:&lt;/strong&gt; Ich möchte darauf hinweisen, dass ich diesen Artikel
hauptsächlich für mich selbst als Gedächtnisstütze geschrieben habe und
keine Garantie für Fehlerfreiheit übernehme. Da ich nur einen Rechner
habe, konnte ich z.B. das SSH-Beispiel nicht testen. Allgemein würde ich
empfehlen, bei so etwas sensiblem wie Backups immer aufmerksam zu sein,
das Gehirn einzuschalten und lieber zweimal nachzudenken bevor man
handelt.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Notebooks ohne Windows</title>
      <link>/2013/06/12/notebooks-ohne-windows/</link>
      <pubDate>Wed, 12 Jun 2013 00:00:00 +0000</pubDate>
      <guid>/2013/06/12/notebooks-ohne-windows/</guid>
      <description>&lt;p&gt;Nachdem mein aktuelles Notebook so langsam den Geist aufgibt war es an
der Zeit ein neues zu suchen.&lt;br&gt;
Da ich seit 10 Jahren Linux nutze wollte ich natürlich ein Notebook ohne
Windows erwerben, ob es ohne Betriebssystem, mit einem Linux oder
FreeDOS ausgeliefert wird war mir dabei recht egal. Wichtig war mir nur,
dass ich keine Windows-Lizenz mit kaufe mit der ich nichts anfangen
kann.&lt;br&gt;
Leider musste ich feststellen, dass es kaum Shops gibt die ihre
Notebooks ohne Windows verkaufen. Auf den Webseiten der Hersteller kann
man so einiges konfigurieren, aber das Windows kann man selten
abwählen.&lt;br&gt;
Um einen kleinen Merkzettel mit Shops, welche ihre Notebooks auch ohne
Windows verkaufen, zu haben und eventuell anderen Interessenten, welche
auch kein Windows kaufen wollen, eine Sammlung bereit zu stellen
veröffentliche ich hier die Anbieter, welche ich gefunden habe.&lt;/p&gt;
&lt;p&gt;Eine kleine Auswahl von Laptops ohne Windows gibt es unter
&lt;a href=&#34;http://www.notebooksbilliger.de/notebooks/notebooks+ohne+windows&#34;&gt;notebooks-billiger.de&lt;/a&gt;
und auch bei den Suchmaschinen von &lt;a href=&#34;https://geizhals.at/&#34;&gt;geizhals.at&lt;/a&gt;,
&lt;a href=&#34;https://www.cyberport.de/&#34;&gt;cyberport.de&lt;/a&gt; und amazon kann man gezielt
nach Notebooks ohne Windows suchen. Die Auswahl ist allerdings sehr
eingeschränkt und um mehr Treffer zu erzielen und auch höherwertige
Notebooks zu finden muss man doch etwas suchen. Nun folgt die Liste der
gefundenen Anbieter, welche ihre Notebooks auch ohne Windows verkaufen.
Sollte jemand weitere kennen, würde ich mich auf einen Hinweis per
Kommentar freuen. Wer weiß wann ich wieder ein neues Notebook benötige
und mich über jeden Hinweis freue. 😀&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://www.mysn.de/&#34;&gt;mysn&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.linux-onlineshop.de/Linux-Hardware/Linux-Notebooks.geek&#34;&gt;tuxedo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.nexoc.de/cms/front_content.php?idcat=2&#34;&gt;nexoc&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.system76.com/&#34;&gt;system76&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.notebookguru.de/&#34;&gt;notebookguru&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://rockiger.com/&#34;&gt;rockiger&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://one.de/shop/index.php&#34;&gt;one&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://ixsoft.com/Hardware/Notebooks.html&#34;&gt;ixsoft&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://xtops.de/thinkpad_linux_preinstalled.html&#34;&gt;xtops&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.besserpc-shop.de&#34;&gt;Besser-PC&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;**[Nachtrag 2013-09-20: Besser-PC hinzugefügt.]&lt;br&gt;
**&lt;/p&gt;
&lt;p&gt;Ich möchte ausdrücklich darauf hinweisen, dass ich die genannten
Verkäufer nicht getestet habe und deshalb auch keinen ausdrücklich
empfehlen kann. Ebenso kann ich nicht garantieren, dass die ohne Windows
verkauften Notebooks mit bestimmten Distribution bzw. allgemein mit
Linux &lt;em&gt;out of the box&lt;/em&gt; funktionieren.&lt;/p&gt;
&lt;p&gt;Ich habe mittlerweile mein nächstes Notebook gefunden und bestellt. Ohne
Windows, aber nicht von einem der genannten Shops sondern über einen
Kontakt aus einem Linuxforum. Um welches Notebook es sich handelt und
wie die Einrichtung unter Linux (voraussichtlich Debian Testing) verlief
werde ich hier berichten, wenn es soweit ist. 😉&lt;/p&gt;
&lt;p&gt;Vielen Dank an hikaru, der einen &lt;a href=&#34;http://wiki.debianforum.de/Leitfaden_zum_Notebookkauf&#34;&gt;Artikel zum
Notebook-Kauf&lt;/a&gt; im
df.de veröffentlicht hat, der reichlich
&lt;a href=&#34;https://debianforum.de/forum/viewtopic.php?f=36&amp;amp;t=142913#p936692&#34;&gt;Kontroverse&lt;/a&gt;
hervorrief und mich daran erinnert hat, dass es sinnvoll ist eine Liste
zu erstellen, falls man mal wieder in der gleichen Situation ist.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>System-Mails von Linux mit Thunderbird abfragen</title>
      <link>/2013/06/12/system-mails-von-linux-mit-thunderbird-abfragen/</link>
      <pubDate>Wed, 12 Jun 2013 00:00:00 +0000</pubDate>
      <guid>/2013/06/12/system-mails-von-linux-mit-thunderbird-abfragen/</guid>
      <description>&lt;p&gt;Im Vergleich zum Betriebssystem aus Redmond ist Linux eine regelrechte
Plaudertasche. Statt kryptischer Fehlermeldungen erhält man meist recht
klare Informationen was schief gelaufen ist und teilweise sogar klare
Anweisungen wie der Fehler zu beheben ist. Linux schickt auch viele
Informationen als Mail an den jeweiligen Benutzer. Diese Mails kann man
unter &lt;em&gt;/var/mail/root&lt;/em&gt; für root und unter &lt;em&gt;/var/mail/$user&lt;/em&gt; einsehen,
wobei $user für den jeweiligen Nutzernamen steht.&lt;br&gt;
Komfortabler ist es natürlich, wenn die Systemmails direkt im
Email-Client gelesen werden können. Ich verwende als Email-Client
Thunderbird (bzw. das Debian-Pendant Icedove) und habe vor kurzem
erfahren, dass es ganz einfach ist die Systemmails mit Thunderbird
abzurufen.&lt;/p&gt;
&lt;p&gt;Dazu muss man lediglich ein neues Konto vom Typ &lt;em&gt;Unix Mailspool
(Movemail)&lt;/em&gt; anlegen. Diesen Kontentyp kann man in Thunderbird unter &lt;em&gt;Neu
→ Andere Konten&lt;/em&gt; hinzufügen.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;/wp-content/uploads/2013/06/Konten-Assistent_001.png&#34;&gt;&lt;img src=&#34;/wp-content/uploads/2013/06/Konten-Assistent_001-300x250.png&#34; alt=&#34;Konten-Assistent&#34;&gt;{.aligncenter
.size-medium .wp-image-19 width=&amp;ldquo;300&amp;rdquo;
height=&amp;ldquo;250&amp;rdquo;}&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Darauf trägt man bei Email-Adresse &lt;em&gt;$user@$hostname&lt;/em&gt; ein, wobei $user
wieder für den eigenen Benutzer und $hostname für den hostname steht.
Wenn man sich unsicher ist, was der eigene hostname ist kann man das
recht einfach erfahren indem man&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    hostname
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;in ein Terminal tippt.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;/wp-content/uploads/2013/06/Konten-Assistent_002.png&#34;&gt;&lt;img src=&#34;/wp-content/uploads/2013/06/Konten-Assistent_002-300x250.png&#34; alt=&#34;Konten-Assistent&#34;&gt;{.aligncenter
.size-medium .wp-image-24 width=&amp;ldquo;300&amp;rdquo;
height=&amp;ldquo;250&amp;rdquo;}&lt;/a&gt;&lt;br&gt;
Danach gibt man in den Konteneinstellungen bei den Einstellungen für den
Server als Benutzernamen wieder den eigenen Benutzernamen ein und unter
Server &lt;em&gt;localhost&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;/wp-content/uploads/2013/06/Konten-Einstellungen_003.png&#34;&gt;&lt;img src=&#34;/wp-content/uploads/2013/06/Konten-Einstellungen_003-300x272.png&#34; alt=&#34;Konten-Einstellungen&#34;&gt;{.aligncenter
.size-medium .wp-image-25 width=&amp;ldquo;300&amp;rdquo;
height=&amp;ldquo;272&amp;rdquo;}&lt;/a&gt;
Im letzten Schritt muss die Datei &lt;em&gt;/etc/aliases&lt;/em&gt; folgendermaßen
bearbeitet werden:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    # /etc/aliases
    mailer-daemon: postmaster
    postmaster: root
    nobody: root
    hostmaster: root
    usenet: root
    news: root
    webmaster: root
    www: root
    ftp: root
    abuse: root
    noc: root
    security: root
    root: $user
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Dabei ist es wichtig bei &lt;em&gt;root:&lt;/em&gt; in der letzten Zeile den eigenen
Benutzernamen einzutragen, damit die Mails an den Benutzer root auch im
Thunderbird erscheinen.&lt;/p&gt;
&lt;p&gt;Vielen Dank an Saxman, der mir dies im
&lt;a href=&#34;https://debianforum.de/forum/viewtopic.php?f=15&amp;amp;t=142916&amp;amp;p=936821#p936823&#34;&gt;df.de&lt;/a&gt;
erläutert hat.&lt;/p&gt;
&lt;h5 id=&#34;update-2017-09-11&#34;&gt;[Update 2017-09-11]&lt;/h5&gt;
&lt;p&gt;Seit heute lasse ich mir die &lt;a href=&#34;/2017/09/11/system-mails-von-linux-ueber-xmpp-empfangen/&#34;&gt;Systemmails über XMPP
zusenden&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    
  </channel>
</rss>
