ULogger: Self-hosted privacy-friendly open source tracking solution


This article uses the open source projects Ulogger, Easer, LineageOS (or Android), AFWall + and OpenVPN.

As already described in an earlier articles, a tracking solution for mobile devices was sought and in 2018 a start with Traccar was made. This solution, which is sure to be quite good for a fleet of vehicles, never fully met my requirements including tracking trips by bike and on foot. I wanted to be able to record and export individual trips so that I could store cycle routes and much more.

As already described in another article mobile phones and tablets used are already set up in such a way that neither Google’s (gapps) services are used nor data is transmitted to third parties. Of course, the solution described also works on Android.

In addition, the automation on the mobile phone with Easer was described in other articles. With Easer, OpenVPN is automatically started on the devices when leaving the HOME WLAN and terminated again when you return. In this article, the automatic start and stop of the tracking is integrated into the Easer Profile, because this is the only way not to forget to start the tracking. Each start of tracking creates a new tour.

The Ulogger components can be found here:

Easer can be found preferably on F-Droid here https://f-droid.org/en/packages/ryey.easer/. If Android is used with Google Play, Easer can also be found there. I generally recommend setting up the F-Droid Store (https://f-droid.org/) even with Android and avoid other stores.

Server Setup

First you set up the Ulogger server on a web server. The setup can be done in a subdirectory or a virtual host. The use of a different port, e.g. 88443 instead of 443 for SSL is not a problem and also makes sense in terms of attacks by bots. Ulogger supports SQLite, MySQL and Postgres as databases and SQLite is completely sufficient for pure private use. This means that the server does not need an extra database setup. If you have 10 or more devices you should use MySQL or Postgres. The setup steps on the project side are very easy to carry out and after a few minutes the Ulogger server is ready for use in a subdirectory. The display looks like this with data:

As an administrator, you can set up as many users as you want to be able to set up an account on each mobile device. It is best to start with one account and device, test and then follow up with all devices.

Setup Client

The best way to load the software is via F-Droid on the LineageOS or Android device. Then you set the desired type of tracking, as well as the server URL and the user name. The type of tracking can vary depending on the application, just try out which setting best suits your own habits.

Set up automation

The general setup of the automation with Easer was described in the article “Professional enterprise-grade VoIP telephony with home office and mobile phone support” already. Here is the adjusted process for OpenVPN and Ulogger to start tracking automatically. The profiles have been renamed to Profile Leaving Home and Profile Coming Home:

Due to the internationality, the details are in English (the language can also be changed to English in the Easer):

Open settings

  • enable ‚Use root features‘

  • Check ‚Activated skills‘, where the minimum is: Wi-Fi, Connectivity Type, Wi-Fi Connection

Open Data

  • Create Condition -> Choose a Condition – > WiFi Connection

Condition Title: At-Home

Match SSID: Your Home SSID

  • Create Event -> Choose an Event -> Connection Type

Event Title: HaveConnection

Selected Types: Wi-Fi and Mobile

  • Create Profile:

Profile Title: Profile Leaving Home

From plus(+) icon select ‚Run Command‘


am start -a android.intent.action.MAIN -n de.blinkt.openvpn/.LaunchVPN -e de.blinkt.openvpn.shortcutProfileName PROFILENAME

From plus(+) icon select ‚Run Command‘


am broadcast -a net.fabiszewski.ulogger.intent.action.COMMAND -e "command" "start new logger" net.fabiszewski.ulogger net.fabiszewski.ulogger.ExternalCommandReceiver
  • Create Profile

Profile Title: Profile Coming Home

From plus(+) icon select ‚Run Command‘


am broadcast -a net.fabiszewski.ulogger.intent.action.COMMAND -e "command" "stop logger" net.fabiszewski.ulogger net.fabiszewski.ulogger.ExternalCommandReceiver

From plus(+) icon select ‚Run Command‘


am start –user 0 -n de.blinkt.openvpn/.api.DisconnectVPN


  • Create Pivot

Script Title: Online


Event: HaveConnection

  • Online->Add child

Script title: Home WLAN

Profile: Profile Coming Home

Condition: At-Home

Reverse Scenario: disabled

  • Online->Add child

Script title: Insecure Network

Profile: Profile Leaving Home

Condition: At-Home

Reverse Scenario: enabled

  • Finally

Start Rules

If everything has been done correctly, OpenVPN will start automatically and Ulogger will start a new track as soon as the home WiFi is no longer available. When you return, the Ulogger and the VPN are deactivated and the track can be called up immediately in the web interface. If LinPhon is used in connection with Asterisk, LinPhone logs on again immediately after the change and thus the functionality is always given without any manual intervention. A really cool solution that should look like this:

Enterprise Support and Setup

EURAFRI Matrix Group Chat

We look forward to active participation in the EURAFRI project and ask you to also visit the EURAFRI reception in the matrix.



Author: Karl M. Joch