Synology NAS: Samba, NFS and Kerberos with FreeIPA LDAP

This work is a collaboration with my colleague Markus Opolka (@martialblog). Since we migrated our old, hacky LDAP server to a completely new FreeIPA instance, authenticating Samba and NFS users with the new LDAP server (provided by FreeIPA) was no longer possible. As we don’t have that many users, the short-term fix was to locally create the required accounts on the Synology NAS. This has the disadvantage of splitting the password management, so we wanted to fix it.


Sometimes you just need some motivation - in the morning, during the day or in the evening. Here, take this poster: Motivation Poster SVG, Motivation Poster PDF, Licensed under CC-0 (Public Domain). These are the quotes used: Discipline is Greater than Motivation. – Elliot Hulse No pain, no gain. – Arnold Schwarzenegger Success is not about the money, the fame or the big house. It’s about becoming THE BEST VERSION OF YOURSELF.

Real Life

Judge: When was the first time you met in real life? Peter Sunde: We don’t use that expression. We say AFK - we think the internet is for real. My blog mostly deals with software and hardware, i.e. the stuff computers are made of. And though one of my favorite quotes addresses how real the internet (the construct a network of computers forms) is, sometimes you really have to do something in “real life”.

netcats: libvirt Remote Daemon over SSH

For one of my university courses, I need to run a virtual machine with Kali Linux. Because it is 2018, my laptop is not really fast enough for a VM, I like cloud technology and I love tinkering with stuff, I wanted to use libvirt’s remote support to run the virtual machine on one of my cloud servers. First, I installed libvirt by apt-get installing libvirt-daemon libvirt-daemon-system qemu-kvm. Since I already have an SSH connection to the host set up, I chose the SSH transport, but got the following error message from virt-manager:

Continuous Blog Deployment: Self Hosted Edition

Initially, I wanted to run my blog from a single LXC container, set up with a web server, a static-site generator and my editor. The idea behind this was to be able to log in via SSH from anywhere remotely, write a blog post and directly publish it. This would have had the advantage of only maintaining a single instance of the blog. The clients (i.e. my computers) would not need to have any kind of local setup (web server, site generator, editor), apart from an SSH client.

Remove Nextcloud Share from Database

My Nextcloud instance is currently suuuuper slow, because one of the federated Nextcloud instances that has shared a file with me is offline. Apparently, this issue has been addressed a long time ago, but I’m still having this problem. When I try to “unshare” the file in the Web GUI, I simply get (after a looong wait) the error message Error deleting file "xyz".. The HTTP DELETE operation sent to the backend returns with a 503 Service Unavailable, as well as some WebDAV exception in XML.

Retrieve latest tag from GitHub with Go

To monitor the latest activity of Git repositories, I was using the go-github golang package to interface with GitHub’s API. While the package API is very rich and powerful, I was still missing one feature: just getting the latest tag of a specific repository. It does have an option to get the latest release, which is GitHub’s way of promoting a tag, however these are not native to Git itself.

SystemTap Syntax Highlighting in LaTeX listings

While writing a report about SystemTap in LaTeX I had to figure out how to get LaTeX to nicely color my listings, because the report featured some source code. By default, the Listings package does not support SystemTap (see chapter 2.4 of the Listings Package user guide). Since SystemTap syntax is very similar to C, I first tried that option, but alas no luck. The problem lies in the fact that SystemTap does not use semicolons to end a statement, therefore the C syntax highlighter gets very confused.

Go: Dump HTTP Request

Recently, I was implementing a Webhook for Gogs in Go. Unfortunately, the documentation is not one hundred percent complete and could be a bit more specific at times. Also, neither reading Gogs source code nor other people’s implementation is what anyone really wants here. What I ended up doing was dumping the complete request (including all HTTP Headers and Body) with the following, simple Go program: package main import ( "fmt" "net/http" "net/http/httputil" ) func main() { http.

LED Strip with Motion Sensor

LED strips are nothing new today. They come in in different lengths (up to 10m), types (waterproof and non-waterproof, 30 or 60 LEDs per meter, …) and colors. You can choose between warm or cold white LEDs and even RGB LED strips, which use three independent LEDs (Red, Green and Blue), are available. Best of all: they are ridiculously cheap! With this project I want to create a custom lighting under my bed, triggered by a motion sensor.