Ich habe gerade die Android App Transportr für öffentliche Verkehrsmittel gefunden. Gut gemacht und m.E. besser als die VRR-App. Außerdem FOSS!


Die Idee, Mac OS X auszuprobieren, hatte ich schon über einen langen Zeitraum. Eigentlich wehre ich mich gegen alle Apple-Produkte, weil ich sie zu stark einschränkend und beschneidend finde. Als gestern ein Kollege Werbung für Hackintosh gemacht hat, habe ich mich entschieden, es auch mal wirklich auszuprobieren. In letzter Zeit friert mein GNOME unter ArchLinux gelegentlich (alle zwei Wochen 1x) ein und reagiert auf keine Befehle mehr. Ich habe die Vermutung, dass es an X.org liegt oder an NVIDIA, bin mir natürlich nicht sicher. Es war also genau nach so einem Freeze, wo ich dann endgültig den Entschluss gefasst habe, meinen Horizont zu erweitern und Mac OS X auszuprobieren. Für diejenigen, die Hackintosh nicht kennen, ein paar kurze Stichworte:

  • 1:1 Mac OS X
  • jede Funktionalität des OS so wie man es in einem Mac auch hat
  • Treiber für "Nicht-Macs" werden injiziert durch den Bootloader Clover
  • Clover erlaubt auch Triple-Boot (wie bei mir mit ArchLinux, Windows, Mac OS X)

Hackintosh ist bekannt dafür, dass es nicht auf jeder Hardware läuft, weil Mac OS X nur für bestimmte eigene Hardware entwickelt wird. Ich hatte aber Glück, denn mein Gigabyte Motherboard, mein Intel i7 Haswell Prozessor und meine Geforce GTX770 Grafikkarte werden per driverinjection direkt unterstützt und ich musste keine nichts anpassen außer NVIDIA Web Driver. Den Schritt, den man benötigt, um erst einmal an ein Mac OS X Sierra Image zu kommen, werde ich hier nicht weiter beschreiben, da der Vergleich hinkt, wenn man einen normalen Mac kaufen würde. Zusammenfassend war es aber anstrengend den bootbaren USB-Stick zu erzeugen, schade, dass die Community hier keine fertigen create bootable mac os stick.sh für Linux/Windows anbietet.

Installation

Die eigentliche Installationsprozedur ist schlicht und intuitiv gestaltet. Vom Stick booten und ich konnte direkt die mit HFS+ formatierte Partition benutzen, die ich beim Platzschaffen für Mac

…mehr lesen

Linux is highly user friendly, it is just highly selective who it is friends with.

Das fand ich gut. :-)


Seit einiger Zeit bin ich auf Let's Encrypt umgestiegen für die vollautomatisierte Generierung aller meiner Zertifikate. Das ist sehr angenehm. Ich starte alles monatlich über systemd-Timer und systemd-Services. Dabei gab es aber ein Problem: manche Services brauchen die neuen Zertifikate und können mit den alten nichts mehr anfangen, so z.B. nginx, den man aber leicht neustarten kann mit einem systemctl reload. Komplexere Aktionen sind aber schwierig.

Das Zauberwort heißt --renew-hook "action". Das wird direkt von certbot Programm zur Verfügung gestellt und damit lässt sich hervorragend alles realisieren, was man benötigt.

Als Beispiel für den ganzen Prozess möchte ich hier einmal den Fluss nach der Erstellung des Zertifikates für mein XMPP/Jabber/Weechat Relay vorstellen, welches ich über Glowing Bear nutze, um überall auf IRC und Jabber zuzugreifen ohne mehrere Sessions zu öffnen. Denkbar ist das natürlich auch für Postfix und Dovecot, eben alles: --renew-hook "systemctl restart postfix dovecot".

Beginnen wir mit dem systemd-Service, der für das Starten von /usr/bin/weechat zuständig ist. Dies ist nur zu Vollständigkeit, es ist irrelevant, wie der Client für das Relay neugestartet wird. Zu sehen ist das auch später im eigentlichen Script. Ich benutze screen für meinen Weechat.

[Unit]
Description=weechat-screen-myuser

[Service]
Type=forking
User=myuser
ExecStart=/usr/bin/screen -d -m -S weechat /usr/bin/weechat
ExecStop=/usr/bin/screen -S weechat -X quit
WorkingDirectory=/home/myuser

[Install]
WantedBy=multi-user.target

Was soll nun aber passieren, wenn Let's Encrypt ein neues Zertifikat für das im Weechat verwendete Relay generiert hat? Genau:

  • Zusammenfügen von privkey und fullchain für die spezifizierte Domain,
  • chown, da certbot als root in einem systemd-Service ausgeführt wird und
  • Neustart von Weechat.

Dies erledigt folgendes Script, dass beliebig abgelegt werden kann, z.B. in /home/myuser/.weechat/ssl/weechat-certbot-renew-relay.sh.

#!/bin/bash
# Execute this with
#
# --renew-hook "sh path/to/script/weechat-certbot-renew-relay.sh" in certbot for $DOMAIN
#
# This script renews the relay weechat certificate if Let's Encrypt renewed it.
#
…mehr lesen

Wegen WhatsApp und Facebook bin ich mir nun echt wieder unentschlossen. Jabber war bei uns ja leider kein Erfolg, aber Signal/TextSecure könnte vielleicht doch wieder etwas sein.

Update: Das hat tatsächlich schon Auswirkungen. Hätte ich nie gedacht, auch wenn Threema jetzt nicht Open Source ist, leider. :-(


Oha, das ist bei Ausweispflicht in Deutschland echt großer Mist, wenn auch irgendwie nicht unerwartet: Whatsapp teilt alle Telefonnummern mit Facebook.


Puh, da wird einem übel. Es ist einfach wirklich sehr traurig anzusehen, wie hier mit Daten umgegangen wird.

How to NOT do a crypto messenger:

Deshalb: Do it yourself - Use XMPP with OTR/PGP!

Update: Posts wurden zensiert und sind nicht mehr erreichbar. Oha! :-) Hier zu BubCon.


Ich besitze keinen SMART-TV. Das ist natürlich ein Problem, wenn ich vom Homeserver/Fileserver (Datenhost, zentraler MPD, vgl. Ohne Musik Blogeintrag) Medien abspielen möchte, da der TV Netzwerkprotokolle wie z.B. samba oder NFS nur rudimentär unterstützt. Unser Haushalt besitzt zwar eine Popcornhour, die genau für diesen Zweck gedacht ist, aber irgendwie ist das Gerät mittlerweile sehr alt und wird bald ausdienen. Außerdem haben wir gemeinsam beschlossen, dass wir, wenn das Schlafzimmer fertig renoviert ist, auch im Bett per Monitor Filme sowie Serien vom Homeserver schauen möchten. Getestet wird das ganze Unterfangen mit einem alten ausrangiertem Monitor, der momentan auf meinem Schreibtisch steht. Daneben das Bett im Wohnzimmer durch die Renovierungsarbeiten.

Aus diesem Grund habe ich - auch weil ich gerne mit neuen Systemen bastel - mir einen Raspberry Pi 3 bestellt. Ein Mini-PC, der in Version 3 mittlerweile auch genug Power besitzt, um alltägliche Anforderungen locker zu erfüllen. Das Gerät ist einfach so klein, es passt in meine Handfläche. Ich war dermaßen buff.

Raspberry Pi 3 Set

Das nächste war natürlich eine Art Fernbedienung. Herkömmliche Fernbedienungen haben mir meist zu wenig Funktionen, vor allem dann, wenn dieser kleine MiniPC eigentlich alles kann, da brauche ich eine richtige. Die Wahl fiel dann auf die nachfolgende kabellose Tastatur im Miniformat mit integrierter Maus und 2,4GHz Funknetz. Auch das war kein Fehlgriff. Die Tastatur ist super, funktioniert out of the box und lässt sich bequem zur Navigation und Eingabe nutzen.

Wireless Keyboard

Die nächste Entscheidung war natürlich das Betriebssystem. Ich selbst bin großer ArchLinux Fan. Deshalb ist klar, was ich zunächst probiert habe: ArchLinux ARM. Die Installation war nur das Kopieren des ARM Images auf die SD Karte mit vorherigem Partitionen der SD Karte. Sehr intuitiv. Danach habe ich einfach viele meiner privaten Config Files kopiert und es war fertig.

ArchLinux ARM SSH

So sah der erste Login aus. Der

…mehr lesen

Mal wieder eine kleine Neuentdeckung, absolut super, wenn man auf Stoner steht. :-)

Don't slow me down
Roadking on the run
Riding in the sun

Roadking wears the crown
Never slow me down

Sun Rider "Roadking"


Playlist MTP Sync

18.07.2016 12:39 | keine Kommentare

Eigentlich benutze ich mobil immer Spotify. In der letzten Zeit fällt mir aber auf, dass ich es eben kaum noch nutze bzw. die Käufe von bandcamp nicht bei Spotify verfügbar sind. Aus diesem Grund brauchte ich ein kleines Script, dass Musikdateien mit meinem Smartphone synchronisiert und das möglichst unkompliziert.

Auf mobilen Geräten gibt es aber meist ein Problem: Speicherplatz. Außerdem möchte ich eine möglichst große Vielfalt an Musik mit diesem Platzproblem. Die einfachste Lösung ist also die Synchronisierung von Playlists und nicht von ganzen Alben/Ordnern. Playlists können bequem am PC erstellt werden und das Script fragt nach einer Auswahl der zu synchronisierenden Playlists. Pfade müssen ggf. angepasst werden. Benötigt wird außerdem fzf, gvfs-mtp und natürlich rsync. Hier das Script:

#!/usr/bin/env bash

DEVICE_MUSIC_ROOT="Interner Speicher/Music" # Where the music will live on your phone, without slash

MUSIC_ROOT="${HOME}/Musik"          # music lib
MUSIC_PLAYLIST_ROOT="${HOME}/Musik/Playlists"   # playlist folder
SYNC_MUSIC_ROOT="${HOME}/Downloads/mpd_sync"    # Staging folder (receives all files prior to sync)
SYNC_PLAYLIST_ROOT="${SYNC_MUSIC_ROOT}/playlists"   # Where to place playlist files (m3u) for sync
SYNC_DELETE_AFTER=true

# Output stuff to stdout if $DEBUG evaluates to anything
# $ DEBUG=1 ./script.sh
function debug()
{
    [[ ! -z "$DEBUG" ]] && echo $*
}

# check dependencies
function checkDependencies()
{
    type rsync >/dev/null 2>&1 || { echo >&2 "Require rsync but it's not installed.  Aborting."; exit 1; }
    type fzf >/dev/null 2>&1 || { echo >&2 "Require fzf but it's not installed.  Aborting."; exit 1; }
    type gvfs-mount >/dev/null 2>&1 || { echo >&2 "Require gvfs-mount (for MTP) but it's not installed.  Aborting."; exit 1; }
}

# Sync stuff with phone over rsync
function sync() 
{
    list_usb="$(lsusb | fzf --reverse)"

    read -r -a info <<< "$list_usb"

    if [ -z "$list_usb" ]; then
        echo "No device selected. Aborting.";
        exit 1;
    fi

    bus="${info[1]}"
    device="${info[3]::-1}"

    DEVICE_MOUNT="/run/user/${UID}/gvfs/mtp:host=%5Busb%3A${bus}%2C${device}%5D/${DEVICE_MUSIC_ROOT}"

    confirm "Syncing to ${DEVICE_MOUNT}" && doSync
}

function doSync()
…mehr lesen