never-afk.dehttps://blog.never-afk.de/2023-12-01T13:37:00+01:00nftables NAT with maps2023-12-01T13:37:00+01:002023-12-01T13:37:00+01:00bitstackertag:blog.never-afk.de,2023-12-01:/nftables-nat-with-maps.html<p>Well, this was hard to figure out...
What i wanted is a NAT rule to select source address, protocol and port and map it to the destination address and port.
All examples i found missed the source address or the protocol.</p>
<p>To make things easier for the next person, here is how i did it:</p>
<p>DNAT:</p>
<div class="highlight"><pre><span></span><code><span class="nx">table</span><span class="w"> </span><span class="nx">ip</span><span class="w"> </span><span class="nx">nat</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nx">map</span><span class="w"> </span><span class="nx">IPV4</span><span class="o">-</span><span class="nx">DNAT</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="err">#</span><span class="w"> </span><span class="nx">daddr</span><span class="w"> </span><span class="p">.</span><span class="w"> </span><span class="nx">protocol</span><span class="w"> </span><span class="p">.</span><span class="w"> </span><span class="nx">port</span><span class="w"> </span><span class="o">-></span><span class="w"> </span><span class="nx">daddr</span><span class="w"> </span><span class="p">.</span><span class="w"> </span><span class="nx">port</span>
<span class="w"> </span><span class="k">type</span><span class="w"> </span><span class="nx">ipv4_addr</span><span class="w"> </span><span class="p">.</span><span class="w"> </span><span class="nx">inet_proto</span><span class="w"> </span><span class="p">.</span><span class="w"> </span><span class="nx">inet_service</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nx">ipv4_addr</span><span class="w"> </span><span class="p">.</span><span class="w"> </span><span class="nx">inet_service</span>
<span class="w"> </span><span class="nx">elements</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="m m-Double">192.0.2.1</span><span class="w"> </span><span class="p">.</span><span class="w"> </span><span class="nx">tcp</span><span class="w"> </span><span class="p">.</span><span class="w"> </span><span class="mi">80</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="m m-Double">192.168.0.1</span><span class="w"> </span><span class="p">.</span><span class="w"> </span><span class="mi">80</span><span class="p">,</span>
<span class="w"> </span><span class="m m-Double">192.0.2.2</span><span class="w"> </span><span class="p">.</span><span class="w"> </span><span class="nx">udp</span><span class="w"> </span><span class="p">.</span><span class="w"> </span><span class="mi">53</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="m m-Double">192.168.0.2</span><span class="w"> </span><span class="p">.</span><span class="w"> </span><span class="mi">53</span><span class="p">,</span>
<span class="w"> </span><span class="m m-Double">192.0.2.3</span><span class="w"> </span><span class="p">.</span><span class="w"> </span><span class="nx">tcp</span><span class="w"> </span><span class="p">.</span><span class="w"> </span><span class="mi">8080</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="m m-Double">192.168.0.3</span><span class="w"> </span><span class="p">.</span><span class="w"> </span><span class="mi">80</span><span class="p">,</span>
<span class="w"> </span><span class="m m-Double">192.0.2.4</span><span class="w"> </span><span class="p">.</span><span class="w"> </span><span class="nx">udp</span><span class="w"> </span><span class="p">.</span><span class="w"> </span><span class="mi">27015</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="m m-Double">192.168.0.4</span><span class="w"> </span><span class="p">.</span><span class="w"> </span><span class="mi">27015</span><span class="p">,</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="err">#</span><span class="w"> </span><span class="nx">dNAT</span><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="nx">ipv4</span>
<span class="w"> </span><span class="nx">chain</span><span class="w"> </span><span class="nx">prerouting</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="k">type</span><span class="w"> </span><span class="nx">nat</span><span class="w"> </span><span class="nx">hook</span><span class="w"> </span><span class="nx">prerouting</span><span class="w"> </span><span class="nx">priority</span><span class="w"> </span><span class="o">-</span><span class="mi">100</span><span class="p">;</span>
<span class="w"> </span><span class="nx">dnat</span><span class="w"> </span><span class="nx">to</span><span class="w"> </span><span class="nx">ip</span><span class="w"> </span><span class="nx">daddr</span><span class="w"> </span><span class="p">.</span><span class="w"> </span><span class="nx">ip</span><span class="w"> </span><span class="nx">protocol</span><span class="w"> </span><span class="p">.</span><span class="w"> </span><span class="nx">th</span><span class="w"> </span><span class="nx">dport</span><span class="w"> </span><span class="nx">map</span><span class="w"> </span><span class="err">@</span><span class="nx">IPV4</span><span class="o">-</span><span class="nx">DNAT</span>
<span class="w"> </span><span class="p">}</span>
<span class="p">}</span>
</code></pre></div>
<p>SNAT was easy:</p>
<div class="highlight"><pre><span></span><code><span class="nx">table</span><span class="w"> </span><span class="nx">ip</span><span class="w"> </span><span class="nx">nat</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nx">map</span><span class="w"> </span><span class="nx">IPV4</span><span class="o">-</span><span class="nx">SNAT</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="k">type</span><span class="w"> </span><span class="nx">ipv4_addr</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nx">ipv4_addr</span><span class="p">;</span>
<span class="w"> </span><span class="nx">elements</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="m m-Double">192.168.0.1</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="m m-Double">192.0.2.1</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="err">#</span><span class="w"> </span><span class="nx">NAT</span><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="nx">ipv4</span>
<span class="w"> </span><span class="nx">chain</span><span class="w"> </span><span class="nx">postrouting</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="k">type</span><span class="w"> </span><span class="nx">nat</span><span class="w"> </span><span class="nx">hook</span><span class="w"> </span><span class="nx">postrouting</span><span class="w"> </span><span class="nx">priority</span><span class="w"> </span><span class="mi">100</span><span class="p">;</span><span class="w"> </span><span class="nx">policy</span><span class="w"> </span><span class="nx">accept</span><span class="p">;</span>
<span class="w"> </span><span class="nx">oif</span><span class="w"> </span><span class="nx">wan</span><span class="w"> </span><span class="nx">snat</span><span class="w"> </span><span class="nx">to</span><span class="w"> </span><span class="nx">ip</span><span class="w"> </span><span class="nx">saddr</span><span class="w"> </span><span class="nx">map</span><span class="w"> </span><span class="err">@</span><span class="nx">IPV4</span><span class="o">-</span><span class="nx">SNAT</span>
<span class="w"> </span><span class="p">}</span>
<span class="p">}</span>
</code></pre></div>
<p>I'll probably upload my finished gateway config once i finished it.</p>Hexaled with WLED2023-04-13T13:37:00+02:002023-04-13T13:37:00+02:00bitstackertag:blog.never-afk.de,2023-04-13:/hexaled-with-wled.html<p><img alt="WLED Light" src="https://blog.never-afk.de/images/wled.jpg"></p>
<video width="100%" controls>
<source src="/videos/wled.mp4" type='video/mp4'>
</video>
<ul>
<li>3D Printed Stuff: <a href="https://www.thingiverse.com/thing:5383232">https://www.thingiverse.com/thing:5383232</a></li>
<li>ESP8266 D1 Mini DevBoard: <a href="https://www.ebay.de/sch/i.html?_from=R40&_trksid=p2380057.m570.l1313&_nkw=esp8266+d1+mini&_sacat=0">https://www.ebay.de/sch/i.html?_from=R40&_trksid=p2380057.m570.l1313&_nkw=esp8266+d1+mini&_sacat=0</a></li>
<li>WLED Software: <a href="https://kno.wled.ge/">https://kno.wled.ge/</a></li>
<li>LEDs: <a href="https://www.amazon.de/dp/B097BX7P3V">https://www.amazon.de/dp/B097BX7P3V</a></li>
</ul>NFS with IPv6 link-local addresses2021-02-02T13:37:00+01:002021-02-02T13:37:00+01:00bitstackertag:blog.never-afk.de,2021-02-02:/nfs-with-ipv6-link-local-addresses.html<p>Yesterday i finally fixed my zfs/nfs setup. While doing that, i came across some problems. This article documents these problems so others don't waste hours like i did.</p>
<h2>My setup</h2>
<p>I have a vm host that runs zfs for a lot of harddisks. I wanted to access the zfs datasets from my virtual machines.
What i didn't want is to share the nfs exports across my whole network. So for security reasons, i wanted to share them via ipv6 link-local addresses.</p>
<p>So i set up a bridge on the vm-host with the ipv6 link-local address 'fe80::1' and all the vms are connected to this bridge. The vms have autoconfigured ipv6 link-local adresses.</p>
<div class="highlight"><pre><span></span><code>######### br0 ens0 #####
#VM-Host#----------------+------------------------------#VM1#
######### fe80::1/64 | fe80::4242:ff:fe5e:beef/64 #####
|
|
| ens0 #####
\------------------------------#VM2#
fe80::4242:ff:fe5e:cafe/64 #####
</code></pre></div>
<h2>zfs-on-linux and sharenfs</h2>
<p>Zfs has a nice feature that exports datasets via nfs if you set the <strong>sharenfs</strong> option.
So i tried:</p>
<div class="highlight"><pre><span></span><code><span class="n">zfs</span><span class="w"> </span><span class="k">set</span><span class="w"> </span><span class="n">sharenfs</span><span class="o">=</span><span class="ss">"rw=@fe80::/64%br0"</span><span class="w"> </span><span class="n">mypool</span><span class="o">/</span><span class="n">mydataset</span>
</code></pre></div>
<p>The result can be checked if you type the following command:
(the mountpoint for my example is /srv/mypool/mydataset)</p>
<div class="highlight"><pre><span></span><code><span class="n">exportfs</span><span class="w"> </span><span class="o">-</span><span class="n">v</span>
<span class="o">/</span><span class="n">srv</span><span class="o">/</span><span class="n">mypool</span><span class="o">/</span><span class="n">mydataset</span>
<span class="w"> </span><span class="o"><</span><span class="n">world</span><span class="o">></span><span class="p">(</span><span class="n">rw</span><span class="p">,</span><span class="n">wdelay</span><span class="p">,</span><span class="n">root_squash</span><span class="p">,</span><span class="n">no_subtree_check</span><span class="p">,</span><span class="n">mountpoint</span><span class="p">,</span><span class="n">sec</span><span class="o">=</span><span class="n">sys</span><span class="p">,</span><span class="n">rw</span><span class="p">,</span><span class="n">secure</span><span class="p">,</span><span class="n">root_squash</span><span class="p">,</span><span class="n">no_all_squash</span><span class="p">)</span>
</code></pre></div>
<p>If you look at it, you might see the problem:
Zfs exports it as <strong>world</strong> read-write allowed.
That is not the intended behavior and probably a security risk.
It seems zfs or nfs can't parse the link-local address and defaults to <strong>world</strong>.</p>
<h2>The solution</h2>
<p>After many tries this solution worked for me:</p>
<p>I disabled the <strong>sharenfs</strong> option for all my datasets.</p>
<div class="highlight"><pre><span></span><code>zfs set sharenfs=off mypool/mydataset
</code></pre></div>
<p>And used /etc/exports for the nfs exports:</p>
<div class="highlight"><pre><span></span><code>/srv/mypool/mydataset fe80::%br0/64(rw,no_root_squash,no_subtree_check)
</code></pre></div>
<p>This allowed access from the whole fe80::/64 subnet. But only on the bridge br0.</p>
<p>To reload the exports, you have to run</p>
<div class="highlight"><pre><span></span><code><span class="n">exportfs</span><span class="w"> </span><span class="o">-</span><span class="n">ar</span>
</code></pre></div>
<p>The (now working) syntax is a bit weird:
You put the ipv6-link-local address, then the device with percent-symbol, and the cidr-mask last.</p>
<p>In retrospect, this might have worked with the <strong>sharenfs</strong> option, too.</p>
<h2>Mounting the share inside the vm</h2>
<p>This is my systemd-mount service file:</p>
<div class="highlight"><pre><span></span><code><span class="k">[Unit]</span>
<span class="na">Description</span><span class="o">=</span><span class="s">NFS from vmhost</span>
<span class="na">After</span><span class="o">=</span><span class="s">network.target</span>
<span class="k">[Mount]</span>
<span class="na">What</span><span class="o">=</span><span class="s">[fe80::1%%ens0]:/srv/mypool/mydataset/</span>
<span class="na">Where</span><span class="o">=</span><span class="s">/srv/mydataset/</span>
<span class="na">Type</span><span class="o">=</span><span class="s">nfs</span>
<span class="k">[Install]</span>
<span class="na">WantedBy</span><span class="o">=</span><span class="s">multi-user.target</span>
</code></pre></div>
<p>The additional percent-sign is needed for systemd!
The file needs to be called "srv-mydataset.mount" to satisfy the systemd requirements for filenames.
(put it in /etc/systemd/system/)</p>
<p>To enable it and start it run:</p>
<div class="highlight"><pre><span></span><code><span class="n">systemctl</span><span class="w"> </span><span class="n">daemon</span><span class="o">-</span><span class="n">reload</span>
<span class="n">systemctl</span><span class="w"> </span><span class="n">enable</span><span class="w"> </span><span class="n">srv</span><span class="o">-</span><span class="n">mydataset</span><span class="o">.</span><span class="n">mount</span>
<span class="n">systemctl</span><span class="w"> </span><span class="n">start</span><span class="w"> </span><span class="n">srv</span><span class="o">-</span><span class="n">mydataset</span><span class="o">.</span><span class="n">mount</span>
</code></pre></div>Baustelle / Neues Projekt2018-04-16T23:35:00+02:002018-04-16T23:35:00+02:00bitstackertag:blog.never-afk.de,2018-04-16:/baustelle-neues-projekt.html<p><img alt="Baustelle" src="https://blog.never-afk.de/images/baustelle.jpg"></p>Hackschuhe2018-01-05T14:00:00+01:002018-01-05T14:00:00+01:00bitstackertag:blog.never-afk.de,2018-01-05:/hackschuhe.html<img alt="Hackschuhe" src="images/hackschuhe1.jpg" />
<img alt="Hackschuhe" src="images/hackschuhe2.jpg" />
<ul class="simple">
<li><a class="reference external" href="https://www.ravelry.com/projects/bitstacker/hackschuhe">Hackschuhe on Ravelry</a></li>
<li><a class="reference external" href="https://www.youtube.com/watch?v=l-5U7rvIWLA&t=264s">Stulpen auf Youtube von Machs doch selber!</a></li>
<li><a class="reference external" href="https://www.youtube.com/watch?v=a956J1j0wC8">Elastischer Maschenanschlag von Strick dich glücklich!</a></li>
<li><a class="reference external" href="https://www.youtube.com/watch?v=R6nbNqeQLzA">Elastisch Abketten von eliZZZa</a></li>
</ul>
Garten Update2017-06-20T10:00:00+02:002017-06-20T10:00:00+02:00bitstackertag:blog.never-afk.de,2017-06-20:/garten-update.html<img alt="Hydroponische Pflanzen" src="images/hydro_update1.jpg" />
<img alt="Hydroponische Pflanzen" src="images/hydro_update2.jpg" />
<img alt="Hydroponische Pflanzen" src="images/hydro_update3.jpg" />
<img alt="Hydroponische Pflanzen" src="images/hydro_update4.jpg" />
<img alt="Hydroponische Pflanzen" src="images/hydro_update5.jpg" />
<img alt="Hydroponische Pflanzen" src="images/hydro_update6.jpg" />
Spacegardening2017-05-25T16:00:00+02:002017-05-25T16:00:00+02:00bitstackertag:blog.never-afk.de,2017-05-25:/spacegardening.html<p>Updates zu meinem Hydroponikprojekt! Nachdem ich jetzt ein paar Pflanzen gezogen habe (im Minigewächshaus), müssen diese natürlich in ein vernünftiges Hydroponiksystem umgepflanzt werden.
Mein erster Versuch war das Hydroponiksystem von <a class="reference external" href="https://www.youtube.com/channel/UCImtc28YmnTqcS4tAh367bw">Dietmar Geller</a>. Das Ganze sieht dann ungefähr so aus:</p>
<img alt="Hydroponiksystem Prototyp" src="images/hydro1.jpg" />
<p>Dabei musste ich leider feststellen, dass dieses System einige Schwachstellen hat. Einerseits ist es echt teuer (die Pflanzenkübel allein liegen bei insgesamt ca. 80€).
Außerdem kriegen die unteren Pflanzen sehr wenig Licht. Ich habe die unterste Ebene aus diesem Grund auch gar nicht bepflanzt. Man könnte das mit einem kleinem Workaround fixen, wenn man das System etwas aufbockt, damit die unteren Pflanzen auf der Höhe des Fensters/Balkonrand stehen. Der Wasserablauf zwischen den Etagen ist auch nicht so gut. Die Blähtonpellets verstopfen die Löcher, die ich als Abfluss vorgesehen habe. Und das ganze System hat nur Platz für 12 Pflanzen. Das System funktioniert zwar, ich werde aber nicht noch so eins bauen.</p>
<p>Bevor mir meine restlichen Jungpflanzen im Mini-Gewächshaus vergammeln, habe ich heute ein weiteres System gebaut (mit der freundlichen Unterstützung meines Vaters). Da er in seiner Garage eine riesige Menge an Klempner-Utensilien vorhält, konnten wir das System sehr schnell fertigstellen.</p>
<p>Das Ergebnis sieht so aus:</p>
<img alt="Hydroponiksystem, zweiter Prototyp" src="images/hydro2.jpg" />
<p>Dieses System besteht aus einer Wanne, welche durch die Pumpe gefüllt wird. Der untere Behälter dient als Reservoir. Es gibt einen Ablauf, welcher einen geringeren Durchmesser hat als der Zulauf von der Pumpe. Dadurch sammelt sich, bei eingeschalteter Pumpe, das Wasser in der Wanne. Zur Sicherheit gibt es noch einen Überlauf mit sehr großem Durchmesser. Dieser ist so gebaut, dass das Wasser maximal bis zur Höhe eines Pflanzentopfes steigen kann.</p>
<p>Eine Zeitschaltuhr startet das System (momentan dreimal täglich). Nach 10min wird die Pumpe wieder abgeschaltet, das Wasser fließt dann zurück in den Behälter.</p>
<p>Hier noch ein paar Fotos der Komponenten:</p>
<p>(Das Ding mit dem Korken ist übrigens ein Schwimmer, der mir anzeigt, ob noch genug Wasser im Tank ist, damit die Pumpe nicht trocken läuft :D)</p>
Es ist ein... Ale!2017-04-06T21:43:00+02:002017-04-06T21:43:00+02:00bitstackertag:blog.never-afk.de,2017-04-06:/es-ist-ein-ale.html<img alt="Golden Ale" src="images/golden_ale.jpg" />
<p>Moin! Mein erstes Brauexperiment ist abgeschlossen. 30 Tage nach der Abfüllung ist mein Bier endlich fertig. Da ich das ganze Bier natürlich nicht alleine trinken will, hab ich davon auch gleich etwas mit in die Firma genommen. Kam ganz gut an (Wir haben das natürlich erst nach Feierabend getrunken :D). Falls das noch nicht so die Runde gemacht hat: System-Administratoren funktionieren am besten mit Bier/Alkohol :D Auch beim Angrillen am Wochenende hatte ich etwas Bier dabei. Und falls mich mal jemand besucht, mein Plan ist es, immer etwas selbstgebrautes im Keller zu haben.</p>
<p>Das Bier ist, wie ich schon im ersten Blogeintrag dazu erwähnt habe, ein Bausatz-Bier. Das Bier ist ein "Golden Ale" von Gozdawa. Für meinen Geschmack ist es etwas zu Süß geworden. Dies ist wohl darauf zurückzuführen, dass nicht der gesamte Zucker in Alkohol umgewandelt wurde. Für den ersten Versuch ist es, denke ich, aber ganz gut geworden. Ich hatte echt Angst, dass das Bier in den Flaschen umkippt, aber da habe ich wohl ausreichend sauber gearbeitet.</p>
<p>Als nächstes werde ich dann noch einen Bausatz ausprobieren (Ich hab noch ein Pils rumliegen). Danach gehe ich wohl zum Maischebrauen über. Bierbrauen ist awesome!</p>
<p>Wo ich gerade beim Thema bin: Ich war neulich mit meinen Eltern in der Bremer <a class="reference external" href="http://brauerei-bremen.de/">Union Brauerei</a>. Deren Bier findet man im Norden auch häufig in Getränkemärkten. Ich würde deren Biere noch als Craftbier ansehen, auch wenn die schon ziemlich verbreitet sind. In der Brauerei gibt es auch ein rustikales Restaurant. Und was für eins :D Die machen dort echt geile Burger, und haben auch sonst echt interessante Sachen auf ihrer kleinen Speisekarte. Probiert auf jeden fall die Union-Pommes, hammer! Und natürlich muss man dann auch deren Bier probieren. Das geht am besten mit nem "Brett". Das ist ein kleines Brett mit allen Biersorten der Union drauf, ein Probierset sozusagen. Der ganze Laden macht einen sehr modernen Eindruck, nette, junge Leute als Bedienung, alles unkompliziert. Das hätte ich mir in Berlin vorgestellt, aber nicht in Bremen.
Die Getränkekarte fand ich auch super. Dort gibt es eine Auswahl an Craftbieren von kleinen Brauereien. Die Auswahl rotiert immer mal wieder, so dass man, falls man dort häufiger ist, immer mal was neues auf der Karte findet. Also, falls ihr mal in Bremen seid, auf zur Union Brauerei!</p>
<p>Hier noch ein paar Eindrücke:</p>
Mein schöner Indoor-Garten2017-02-22T17:26:00+01:002017-02-22T17:26:00+01:00bitstackertag:blog.never-afk.de,2017-02-22:/mein-schoner-indoor-garten.html<img alt="Mein Gewächshaus" src="images/garten_ansicht.jpg" />
<p>So langsam wird es Zeit mein Hydroponic-Projekt in Angriff zu nehmen. Orientiert habe ich mich da am Youtube-Channel von <a class="reference external" href="https://www.youtube.com/channel/UCImtc28YmnTqcS4tAh367bw">Dietmar Geller</a>. Ich könnte natürlich auch Jungpflanzen kaufen und diese in ein Hydroponic-System umtopfen. Dabei könnten aber Verunreinigungen aus der Pflanzenerde mit ins System gelangen. Aus diesem Grund habe ich mich entschlossen, die Planzen selber zu ziehen. Dafür habe ich mir ein Zimmergewächshaus und ein paar Steinwollewürfel besorgt. Um das ganze zu beleuchten habe ich LED-Stripes verwendet. Das tolle daran: Man kann die <a class="reference external" href="https://www.hswt.de/forschung/wissenstransfer/2013/april-2013/belichtung.html">Lichtfarbe variieren und damit eventuell das Wachstum beeinflussen</a>. Ich habe es zunächst mit einem Blau-Rot-Mix versucht.
Um die LED-Stripes zu fixieren, habe ich mir ein Lampengehäuse gebaut. Das ist zwar ein Wenig gepfuscht, aber erfüllt seinen Zweck ausreichend.</p>
<img alt="Das Lampengehäuse" src="images/garten_lampe.jpg" />
<p>Geliefert wurden die Stripes als 5m Rolle. Mit etwas Löten habe ich daraus 8 Streifen gemacht.</p>
<img alt="Löten an den Stripes" src="images/garten_lampe2.jpg" />
<p>Um das ganze zu steuern verwende ich eine normale Zeitschaltuhr. Ein Thermometer zeigt mir die Temperatur im Gewächshaus an (dazu habe ich mit einem Lötkolben ein Loch in das Kunststoffdach geschmolzen).</p>
<img alt="Die Zeitschaltuhr" src="images/garten_timer.jpg" />
<p>Gesät habe ich folgendes:</p>
<ul class="simple">
<li>Chicorée (Pan di Zucchero / Cichorium intybus)</li>
<li>Tomaten (Cherrola / Lycopersicon esculentum)</li>
<li>Paprika (Cayenna (Peperoni) / Capsicum annuum L.)</li>
<li>Tomaten (Gold Nugget / Lycopersicon esculentum Mill.)</li>
</ul>
<p>Laut der Angaben auf der Packung keimen die Tomaten und die Paprika in einem Bereich von ca. 22-25°C. Der Chicorée bei 18-22°C. Also habe ich über meine Heizung versucht das ganze bei etwa 22°C stabil zu halten.</p>
<p>Nach einer Woche sah das schon ganz gut aus. Die Paprika hat am längsten gebraucht, ich wollte die schon aufgeben :D</p>
<img alt="Es wächst!" src="images/garten_wachstum2.jpg" />
<img alt="Es wächst!" src="images/garten_wachstum.jpg" />
<p>There will be updates...</p>
Urlaub - Berlin2017-02-19T17:00:00+01:002017-02-19T17:00:00+01:00bitstackertag:blog.never-afk.de,2017-02-19:/urlaub-berlin.html<p>Ich war letztes Wochenende in Berlin \o/ Und es war awesome! Bei meinem Besuch dort habe ich einiges an Sightseeing unternommen. Unter anderem war ich am Platz der Republik und habe mir das Reichstagsgebäude angeschaut, ich war am Brandenburger Tor und den Checkpoint-Charlie habe ich auch gleich mitgenommen. Ich war im <a class="reference external" href="http://sdtb.de/index.php?id=623&type=0">Technikmuseum</a>. Dort gab es auch ein paar coole Sachen die man sich anschauen konnte. Meine Favouriten: Einige Computer von Konrad Zuse, eine Brauerei und einiges über Buchdruck und Stoffverarbeitung. Auch eine umgebaute Strickmaschine hatten sie dort (Yay, <a class="reference external" href="http://ayab-knitting.com/">AYAB!</a>).
Kulinarisch hatte Berlin auch einiges zu bieten. Am ersten Tag war ich Burgeressen bei <a class="reference external" href="http://www.lilyburger.com/">Lily Burger</a>. Das war echt Stark. Ich glaube ich hatte noch nie so einen guten Burger :D Am zweiten Tag gab es Törtchen. Wie cute die aussahen, sieht man in der Gallerie. Und lecker waren die auch. Abends gabs dann Sushi. Und am dritten Tag haben wir nach einem erfolgreichen Escape-Game auch noch gekocht. Die Zutaten dafür kamen aus dem <a class="reference external" href="https://www.kochhaus.de/">Kochhaus</a>. Die Idee hinter dem Kochhaus: Du kriegst dort alles, was du zum Kochen brauchst. Die Rezepte sind für 2 oder 4 Personen ausgelegt. Dabei achten die darauf, dass du nur echt gute Qualität kriegst. Kochen musst du dann aber selber. Ja, ist teuer, aber die haben echt coole Sachen dort. Ist aber nix für "normale" Mahlzeiten, sondern eher um an Wochenenden in guter Gesellschaft was zu kochen ;)
Ich hab Berlin immer für zu groß, dreckig und anstrengend gehalten. Aber jetzt bin ich doch ein wenig neidisch auf die, die dort Wohnen.</p>
<p>Die Webseite hat auch ein paar Updates bekommen. Ich habe die Template-Engine um einen Thumbnail-Generator erweitert, sowie ein Gallery-Plugin hinzugefügt.
Hier die Fotos vom Berlin Trip:</p>
And now, for something completely different...2017-01-29T09:40:00+01:002017-01-29T09:40:00+01:00bitstackertag:blog.never-afk.de,2017-01-29:/and-now-for-something-completely-different.html<img alt="Bierbrauset" src="images/bier.jpg" />
<p>Eines meiner neuesten Projekte sieht man auf dem Foto. Ich habe mir ein <a class="reference external" href="http://www.hobbybrauerversand.de/Starterset-MAXI">Bierbrau-Set</a> bestellt, da ich vorhabe, mich einfach mal mit dem Brauen auseinanderzusetzen.
So ein Set enthält eigentlich alles, was man zum herstellen von ca. 20l Bier benötigt. Das Ganze ist zwar noch auf Shake-And-Bake™-Niveau, aber ich will erst mal ein Gefühl dafür bekommen. Um das Bier dann nach der Gärung abzufüllen, habe ich mir noch zwei Kisten Bier mit 0,5l Bügelflaschen gekauft. Die müssen natürlich zunächst aufgebraucht werden damit ich anfangen kann :D</p>
<p>Kontext zum Titel:</p>
<ul class="simple">
<li><a class="reference external" href="https://www.youtube.com/watch?v=FGK8IC-bGnU">Monty Python - And Now For Something Completely Different</a></li>
</ul>
Merry Christmas!2016-12-21T18:36:00+01:002016-12-21T18:36:00+01:00bitstackertag:blog.never-afk.de,2016-12-21:/merry-christmas.html<img alt="Weihnachtliches ANSI-Art" src="images/xmas.png" />
<p>Um hier mal ein bisschen Weihnachtsstimmung zu verbreiten gibt es heute mal ein Keks-Rezept:</p>
<p>Howto: Chocolate Chip Cookies</p>
<p>Benötigte Zutaten:</p>
<ul class="simple">
<li>125g weiche Butter</li>
<li>80g braunen Zucker</li>
<li>60g weißer Zucker</li>
<li>1 Pkg. Vanillezucker</li>
<li>2 Prisen Salz</li>
<li>1 Ei</li>
<li>150g Mehl</li>
<li>1 TL Backpulver</li>
<li>100g "Schokoladen-Tröpfchen" oder Bruchschokolade (so 0,5cm³ Stückchen)</li>
</ul>
<p>Zubereitung</p>
<p>Die Butter, den Zucker, den Vanillezucker mit dem Ei und dem Salz verrühren (Mixer), bis sich der Zucker aufgelöst hat.
Dann das Mehl und das Backpulver dazu geben und weiter verrühren. Als letztes die Schokostückchen dazu. Nochmal verrühren. Dann ist der Teig fertig.</p>
<p>Zwei Bleche mit Backpapier auslegen und mit Hilfe von zwei Teelöffeln kleine Teigberge (ungefähr ein Teelöffel voll) auf die Bleche setzen.
Immer genug Abstand lassen, die Berge zerfliessen im Ofen.</p>
<p>Dann das ganze in einem aufm 200°C vorgeheizten Backofen (Umluft) für 10min Backen. Die Kekse sind dann noch weich, trotzdem raus nehmen, sonst brennen die an.
Die Kekse abkühlen lassen, dann sollten sie fest werden. Fertig!</p>
<p>Zur Unterhaltung kann ich den Yogscast Jingle Jam empfehlen (guck ich schon den ganzen Dezember):</p>
<p><a class="reference external" href="https://www.twitch.tv/yogscast">Yogscast Jingle Jam 2016</a></p>
<p>Das Ergebnis sollte ungefähr so aussehen:</p>
<img alt="Chocolate Chip Cookies (Foto)" src="images/cookies.jpg" />
<img alt="Weihnachtliches ANSI-Art (unterer Teil)" src="images/xmas_bottom.png" />
Meine neue Leinwand2016-11-27T20:23:00+01:002016-11-27T20:23:00+01:00bitstackertag:blog.never-afk.de,2016-11-27:/meine-neue-leinwand.html<img alt="Eine Leinwand als ANSI-Art" src="images/cinema.png" />
<p>Der nächste Schritt zu meinem perfekten Kinosetup ist getan. Ich habe mir eine Motorleinwand besorgt.
Die Originalsteuerung habe ich dafür entfernt ("I void warranties"). Das Steuern über ein total unbekanntes Funkprotokoll fand ich nicht so schön.
Auch wollte ich keine häßliche Plaste-Steuerung an meiner Wand hängen haben. Als Alternative habe ich mir einen Homematic-Funkaktor besorgt.
Beim Aufbau habe ich mich an dem <a class="reference external" href="http://gee-life.com/2015/01/14/beamer-leinwand-mit-homematic-jalousieaktor-steuern/">Blogeintrag von Jata auf Gee-Life</a> orientiert.
Ich bin aber echt kein Fan von Lüsterklemmen und habe das ganze mit Wago-COMPACT-Klemmen (Awesome!) gebaut. Auch waren die Kabelfarben bei meiner Steuerung anders:</p>
<img alt="Foto meiner Steuerung" src="images/leinwand_steuerung.jpg" />
<p>So sah die Originalsteuerung aus:</p>
<img alt="Foto der alten Leinwandsteuerung" src="images/leinwand_steuerung_alt.jpg" />
<p>Wie man erkennt war bei mir die Belegung etwas anders (Hoch: Rot, Runter: Blau, Neutralleiter: Braun) (ja, Neutralleiter braun... xD).
Zur Steuerung benutze ich FHEM auf einem Raspberry Pi. Um den Homematic-Aktor dort anzumelden, habe ich folgendes gemacht:</p>
<p>Erst mal den CUL (Name ist frei wählbar) konfigurieren:</p>
<pre class="code literal-block">
define CUL_USB0 CUL /dev/ttyACM0 1234
attr CUL_USB0 hmId 123456
attr CUL_USB0 rfmode HomeMatic
</pre>
<p>Dann kann man den CUL in den Pair-Mode versetzen:</p>
<pre class="code literal-block">
set CUL_USB0 hmPairForSec 600
</pre>
<p>Da ich keine Taster an den Aktor gebaut habe, konnte ich ihn nur über die Seriennummer pairen:</p>
<pre class="code literal-block">
set CUL_USB0 hmPairSerial TEST123456
</pre>
<p>Dann noch ein paar Einstellungen, um das ganze hübsch zu machen:</p>
<pre class="code literal-block">
attr HM_FF42FF alias Leinwand
attr HM_FF42FF devStateIcon on:closeG off:close
attr HM_FF42FF group Multimedia
attr HM_FF42FF room Wohnzimmer
attr HM_FF42FF webCmd on:off:stop
</pre>
<p>Im FHEM sieht das dann so aus:</p>
<img alt="Screenshot meiner FHEM Wonzimmer Seite" src="images/fhem_leinwand.png" />
<p>Das Aufhängen der Leinwand war etwas tricky (Das Ding ist nicht gerade leicht). Aber das Basteln einer Bohrschablone aus Pappe hat mir beim markieren geholfen.
Befestigt habe ich die Leinwand dann mit Fischer-SX-Dübeln. Das hält hoffentlich :D</p>
<p>Das Ergebnis sieht so aus:</p>
<img alt="Ein Foto vom fertigen Leinwandsetup" src="images/leinwand.jpg" />
<p>Die 2m Leinwand zu nehmen war, denke ich, die richtige Wahl.
Der nächste Schritt ist der Beamer, wird dann auch verbloggt.
Shiny!</p>
Stranger Things2016-11-13T20:47:00+01:002016-11-13T20:47:00+01:00bitstackertag:blog.never-afk.de,2016-11-13:/stranger-things.html<img alt="Stranger Things Logo als ANSI-Art" src="images/stranger_things.png" />
<p>Bis vor kurzem sind mir ein bisschen die Serien ausgegangen. Das meiste was mich so interessiert habe ich schon gesehen (Breaking Bad, GOT, Better Call Saul, uvm.).
Ist ja eh nur Unterhaltung, um nach der Arbeit ein bisschen runter zu kommen.
Doch dieses Wochenende habe ich "Stranger Things" entdeckt. Holy shit!
Ohne hier all zu viel zu Spoilern:
Es ist eine Mystery-Serie, welche in den 80ern spielt. Ein bisschen "The Outer Limits", ein bisschen "Wargames" gemischt mit "E.T." und dem Soundtrack von "Tron". Die Synthesizerklänge lösen bei mir Gänsehaut aus. Und alles dreht sich um eine kleine Gruppe Nerds, die in ihrer Freizeit D&D spielen, sich für Starwars interessieren und in der Schule gemobbt werden. Dazu kommen dann die abgefahrenen Ereignisse in der amerikanischen Kleinstadt Hawkins. "Gremlins", "The Goonies", alles irgendwie mit drin.
Können wir nicht einfach nochmal in die 80er zurück?</p>
<p>Da die Serie von Netflix produziert wird, kann man sie auch nur dort sehen.</p>
<ul class="simple">
<li><a class="reference external" href="https://www.youtube.com/watch?v=XWxyRG_tckY">Trailer - Stranger Things</a></li>
<li><a class="reference external" href="https://www.netflix.com/title/80057281">Netflix - Stranger Things</a></li>
</ul>
<p>Bei der Gelegenheit kann ich noch folgenden Youtube-Channel empfehlen:</p>
<ul class="simple">
<li><a class="reference external" href="https://www.youtube.com/user/adric22">The 8-Bit Guy</a></li>
</ul>
<p>Besonders die folgenden Videos sind sehr nerdy:</p>
<ul class="simple">
<li><a class="reference external" href="https://www.youtube.com/watch?v=Tfh0ytz8S0k">How "oldschool" graphics worked</a></li>
<li><a class="reference external" href="https://www.youtube.com/watch?v=q_3d1x2VPxk">How Oldschool Sound/Music worked</a></li>
</ul>
<p>Its good to be a nerd!</p>
Halloween2016-10-31T00:00:00+01:002016-10-31T00:00:00+01:00bitstackertag:blog.never-afk.de,2016-10-31:/halloween.html<img alt="Kürbis" src="images/kuerbis.jpg" />
<p>And now, something completely different. Ich habe mich mal im Kürbis-Schnitzen versucht.
Als Vorlage habe ich <a class="reference external" href="http://undertale.wikia.com/wiki/Flowey">Flowey</a> aus dem Spiel <a class="reference external" href="http://store.steampowered.com/app/391540/">Undertale</a> genommen.
Das Original sieht so aus:</p>
<img alt="Flowey" src="images/flowey.png" />
<p>Hier noch ein paar Halloween-Links:</p>
<ul class="simple">
<li><a class="reference external" href="https://youtu.be/7gsuCPDakps">The Completionist - FNAF: Sister Location</a></li>
<li><a class="reference external" href="https://youtu.be/l2zAR8vbfIw">JonTron - Howling II: Your Sister Is A Werewolf</a></li>
<li><a class="reference external" href="http://www.chefkoch.de/rezepte/552001152809779/Cremige-Kuerbissuppe.html">Kürbissuppe auf Chefkoch</a></li>
<li><a class="reference external" href="https://www.youtube.com/watch?v=cL7oFfCX-E0">Undertale Song "Megalovania" auf Diskettenlaufwerken</a></li>
<li><a class="reference external" href="https://de.wikipedia.org/wiki/Halloween">Wikipedia: Halloween</a></li>
<li><a class="reference external" href="http://scienceblogs.de/astrodicticum-simplex/2016/10/28/sternengeschichten-folge-205-der-laplacesche-daemon/">Podcast Sternengeschichten Folge 205: Der Laplacesche Dämon</a></li>
</ul>
RIPE Probe online2016-10-17T20:44:00+02:002016-10-17T20:44:00+02:00bitstackertag:blog.never-afk.de,2016-10-17:/ripe-probe-online.html<p>Heute ist meine RIPE-Probe angekommen. Die RIPE verschickt diese Probes, um damit Messungen im Bezug auf das Internet durchzuführen. Im Prinzip kann jeder am RIPE-Atlas Programm teilnehmen.
Das Bewerbungsformular findet man hier: <a class="reference external" href="https://atlas.ripe.net/landing/get-involved/">Probe-Formular</a></p>
<p>Hier sind die Daten meiner Probe: <a class="reference external" href="https://atlas.ripe.net/probes/29771/">https://atlas.ripe.net/probes/29771/</a></p>
<img alt="Foto der RIPE-Probe" src="images/ripe_probe.jpg" />
<p>Wie genau funktioniert die Probe?</p>
<p>Die Probe ist ein umgebauter TP-Link-Router, mit einer Firmware von der RIPE.
Standardmäßig misst die Probe die Verbindung zu bestimmten Internetknotenpunkten.
Auch die Verbindung zu den Root-DNS-Servern wird gemessen.
Durch das Hosten einer Probe nimmt man am RIPE-Atlas-Programm teil. Dadurch kann man selber auch Messungen durch andere Probes durchführen lassen.
So kann man beispielsweise testen, ob ein Server von bestimmten, geografischen Orten erreichbar ist. Oder die Laufzeit von beliebigen Punkten im Internet.
Zum Durchführen so einer Messung benötigt man Credits. Diese generiert man, indem man eine Probe hostet.</p>
<p>Ich habe meine Probe an meinen OpenWRT-Router angeschlossen. Die Stromversorgung habe ich über USB realisiert, da ich die USB-Ports von meinem
Router nicht verwende. So konnte ich ein Steckernetzteil einsparen.</p>
<p>Mein momentanes Internet-Setup sieht damit so aus:</p>
<img alt="Foto der RIPE-Probe mit OpenWRT Router und Kabelmodem" src="images/ripe_probe_openwrt.jpg" />
<p>(v.l.n.r: Kabel-Modem, OpenWRT-Router, Ripe-Probe)</p>
Kleine Änderungen am Layout2016-10-09T16:47:00+02:002016-10-09T16:47:00+02:00bitstackertag:blog.never-afk.de,2016-10-09:/kleine-anderungen-am-layout.html<p>Ich habe ein paar kleine Änderungen am CSS vorgenommen. Die Links werden jetzt sinnvoller dargestellt und die Listen auch.
Ausserdem habe ich festgestellt, dass wenn man einen Scriptblocker wie zB. No-Script benutzt, die Schriftart nicht angezeigt wird.</p>
<p>Kleiner Tipp: Man kann diese Seite im Browser besser lesen, wenn man mit CTRL + "+" näher heranzoomt. Ich werde das bei Gelegenheit auch mal per Javascript anpassbar machen.</p>
Webseite online2016-10-03T21:31:00+02:002016-10-03T21:31:00+02:00bitstackertag:blog.never-afk.de,2016-10-03:/webseite-online.html<p>"Is this thing on?"
Hi. Dies ist der erste Blogeintrag vom Stackspace-Blog. Ich habe mich dazu entschlossen, diese Seite jetzt online zu schalten, auch wenn ich noch nicht ganz mit dem Design fertig bin.
Es kann also sein, das sich hier immer mal wieder etwas verändert.</p>
<p>So, fangen wir mal damit an: Was ist eigentlich der Stackspace? Du hast doch schon ein <a class="reference external" href="https://blog.never-afk.de/">Blog</a>?
Naja, ich habe jetzt eine eigene Wohnung. Und ich dachte mir, ich fasse einfach alle Projekte, welche ich in dieser Wohnung realisiere, auf einer Webseite zusammen.
Mit dem Namen habe ich mich bei anderen Hackerspaces orientiert. Und der "Stack"-Teil kommt von meinem Nick.
Aber im Gegensatz zu den meisten anderen Hackerspaces ist meiner nicht öffentlich. Ist zwar etwas egoistisch, aber macht die Verwaltung auch wesentlich einfacher :D</p>
<p>Beim Design dieser Webseite habe ich mich an ANSI-Art orientiert. Das Header-Logo habe ich mit <a class="reference external" href="http://picoe.ca/products/pablodraw/">Pablo-Draw</a> erstellt. Der Stil soll in Richtung BBS-System gehen.
Als CMS für die Webseite verwende ich <a class="reference external" href="http://blog.getpelican.com/">pelican</a>. Das ist ein "statische Seiten"-Generator. Das heisst, die Webseite die da hinten raus fällt ist einfaches HTML.
Keine Datenbank, kein PHP, keine Probleme. Kann ich nur empfehlen.</p>
<p>An den folgenden Projekten arbeite ich gerade:</p>
<ul class="simple">
<li>Dashboard (Anzeige von Kalenderinformationen und Abfahrten an der nächstgelegenen Haltestelle)</li>
<li>Verkabelung der Wohnung mit Gigabit-Ethernet</li>
</ul>
<p>Wenn ich damit weit genug bin, werde ich hier dann etwas dazu schreiben.
So long.</p>