Blog: Aktuelle Einträge

KGeoTag 1.0.0 out now

Just to also announce this somewhere in a weblog (as KGeoTag currently lacks a "real" homepage other than the GitLab one): Some days ago, I did the first official release of KGeoTag, the new KDE/Linux geotagging program!

The original release announcement was posted on KGeoTag's mailing list, the release tarball can be downloaded from KDE's download servers.

Let's see if the distributors adopt it ;-)

KGeoTag 1.0 coming soon

This isn't just something about a new release of some software. This is a milestone in my personal "FLOSS carrer". KGeoTag, a photo geotagging program based on KDE and Qt technology, is the very first program I wrote that will be an official part of the KDE SC, thus potentially finding it's way into the repos of the big (and small?!) Linux distributions!

I have been a KDE developer since 2014 now, after joining the KPhotoAlbum project. I barely knew C++ or Qt back then, but with a lot of help and most of all forbearing coaching of Johannes Zarl-Zierl, I learned a lot about "real" software development and finally did the step from script languages towards C++ and Qt (which is something I literally should have done at least a decade earlier).

But let's talk about what this is actually about ;-)

KGeoTag: A new Linux geotagging program

Due to the "geolocation" KIPI plugin being gone for quite some time now, the lack of a decent geotagging program for the Linux ecosystem worried me quite a lot. I used GpsPrune and played around with some GUIs for CLI-driven geotagging programs like GPS correlate, but none was – in my humble opinion – really good or usable in a nice way.

So I decided to start writing a new geotagging program. Placed into the KDE ecosystem, I chose the obvious name "KGeoTag" and did the first commit on 07.10.2020, in a new private repository on KDE invent, KDE's recently introduced GitLab infrastructure.

After implementing the basic functionality, I wrote to the kde-devel mailing list, introduced the project and asked if this was something KDE would need. Apparently, I was not the only one thinking this would enrich the KDE SC. On 31.10.2020, the repo was moved from my private projects to it's new "official" location graphics/kgeotag (still being a "playground" project). After passing the KDE review process, it finally became an official "extragear/graphics" project on 28.12.2020.

Thank you, guys :-)

I'm really, really proud of KGeoTag being accepted as a part of KDE. After all, I'm just a dentist and only a hobby programmer. I don't earn my money with writing code, like most of the other KDE devs do.

I want to thank again Johannes for making all this possible (after all, he's the very reason I know a bit C++/Qt now ;-), as well as the KDE community for giving me such a warm reception for this project. I also want to thank Ben Cooksley, the KDE Sysadmin, for supporting me via moving stuff around, setting up the IRC channel #kde-kgeotag on Freenode, creating a mailing list, setting up CI and so on. Also thanks to Isaac Wismer, the first "real" beta tester of KGeoTag, adding precious ideas as well as code. Let's also not forget the diligent and enthusiastic KDE translators, first of all Yuri Chornoivan, who already translated KGeoTag into several languages despite the whole thing being not even being officially released yet!

All you guys really rock :-D That's how that Open Source thingy works.

I'm really looking forward to finally do the first release of KGeoTag. Let's see how far I (we) will get ;-) überarbeitet

Nach gut 15 Jahren habe ich es – ob man’s glaubt oder nicht – tatsächlich geschafft, zu überarbeiten. Gut, die Seite sieht im Großen und Ganzen noch fast genauso aus wie vorher, aber die Internas erstrahlen in neuem Glanz.

Da der ganze Web-2.0-Kram eh bloß sinnlose Kommentare und zugespammte Gästebücher produziert, gibt es jetzt wieder – wie in den guten, alten Zeiten – eine statische Homepage. Nur statische HTML-Dateien und sonst nix. Generiert von Jekyll.

Als KDE beschlossen hat, man solle jetzt statische Seiten benutzen, die von Jekyll generiert werden, fand ich das zunächst höchst suspekt. Allein schon deswegen, weil Jekyll in Ruby geschrieben ist. Und damit hatte ich bisher nichts zu tun. Nach ein bisschen Einarbeiten habe ich Jekyll aber wirklich liebgewonnen. Ich verwende es mittlerweile auch für und und jetzt eben auch endlich für

Endlich Schluss mit dem PHP-Kram, den ich noch vor der Währung geschrieben habe ;-)

Howto: Virtual users for vsftpd

I recently noticed that this howto was gone due to the "Linux Know How" section being removed some time ago. This one is actually useful though, thus I re-add it as a blog post now.

Virtual users (users with no real account on the system) can be easily set up for vsftpd. We will use PAM's pam_userdb module to authenticate the virtual users.

We need one real user for this to work. I simply used the ftp user, as this one is normally already there and has no shell login anyway. Of course, you can use or create any user you want for this. Set the home directory of this user to the root of the FTP directories we want to serve. E. g.:

usermod -d /srv/ftp ftp

Here we have the relevant part of the /etc/vsftpd/vsftpd.conf I use:





Of course, you are free to add other options, like logging, umask, etc.

The config says it uses vsftpd.virtual to authenticate the virtual users. So let's also create the respective PAM config file /etc/pam.d/vsftpd.virtual:

auth    required db=/etc/vsftpd/users crypt=crypt
account required db=/etc/vsftpd/users crypt=crypt
session required

Notice the reference to /etc/vsftpd/users, not /etc/vsftpd/users.db (which will be the actual filename used). We append crypt=crypt to indicate we want to use crypted passwords (nobody wants to store clear text passwords, does anybody?).

Finally, we need to add one or more virtual users to the userdb. I wrote a script called userdbadm to do this in an easy way. Of course, you can create the database in whatever way you want to. When using userdbadm, it's something like:

userdbadm /etc/vsftpd/users.db add virtual_user

Notice the .db here! You will be prompted for a password. The user and the salted crypted password will be stored in the database.

Finally, the virtual user needs a home directory which will be served by vsftpd when the user logs in. It has to be owned by the real user vsftpd uses. For the above example, we simply do

mkdir /srv/ftp/virtual_user
chown ftp:ftp /srv/ftp/virtual_user

That's it :-) Restart vsftpd and have fun with virtual users now!