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:
Component | Product | Pros | Cons |
---|---|---|---|
Client App | Overland | – 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 | |
Backend | Phonetrack (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
andlocationInterval
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)