Degoogling Location Timeline with Owntracks

Over the past few years, I’ve been moving to more of a self-hosted model instead of using free services where I am the product (aka my data). After receiving my latest google timeline email, I realized this was a good next area to focus on. I had already set the auto-delete to any activity over 3 months, but I really do like seeing all that data. Hence my quest to find a replacement.

Ultimately I think I’ve landed on owntracks. This is primarily due to a few things a) decent updates b) a mobile app that only updates when it needs to…saving battery. I do feel as if I need to take another look at traccar, but the table is below – you can mix/match the clients and the backends to a certain extent:

Client AppOverland– Pretty basic
– Reports based on location change
– Doesn’t seem to be updated anymore
Owntracks– Reports based on location change
– Friends/family function
– Map visualization
– Supports POST and MQTT
Traccar– Basic, no frills– Only does time-base reporting
BackendPhonetrack (NextCloud)– Already had nextcloud
– Lots of filtering and sharing features
– Nextcloud is clunky
– Only support POST
Owntracks– Supports POST and MQTT
– Containerized backend and frontend
– Recorder is complex for advanced usage
– Documentation is rough
Traccar– Supports lots of clients OOTB– Only supports POST
– PWA frontend not containerized

There’s a lot of complaints about how difficult it is to get Owntracks setup. I’m not going to lie, the documentation definitely leaves a bit to the reader to figure out. Once I’ve gotten my setup a bit more production ready I’ll probably post the code. In the interim, here are some quick things I learned along the way:

  • If you want to use HTTP POST method instead of MQTT on the Owntracks recorder, set OTR_PORT=0
  • For versions > 2.0 in eclipse mosquitto MQTT, you need to define a config file for accessing the broker from anywhere other than localhost
  • On the owntracks client, flipping between MQTT and HTTP changes all of the settings – including the locationDisplacement and locationInterval settings
  • When using MQTT, be sure to set the Tracker ID to something you want in the Identification section. Otherwise it defaults to something random
  • The owntracks script to import your Google Timeline doesn’t work anymore. See this PR for a working script. It appears as if they changed the timestamp name and/or no longer include the unix epoch timestamp anymore
  • Unless you want realtime tracking, you don’t need to expose your MQTT broker to the internet. The Owntracks client will buffer requests until it can sync.
  • Nginx-ingress controller allows exposing of TCP ports, but doesn’t have a way of securing them with TLS protections (via ACME/Let’s Encrypt automation)