this post was submitted on 03 Jul 2025
467 points (99.6% liked)

Selfhosted

46677 readers
1792 users here now

A place to share alternatives to popular online services that can be self-hosted without giving up privacy or locking you into a service you don't control.

Rules:

  1. Be civil: we're here to support and learn from one another. Insults won't be tolerated. Flame wars are frowned upon.

  2. No spam posting.

  3. Posts have to be centered around self-hosting. There are other communities for discussing hardware or home computing. If it's not obvious why your post topic revolves around selfhosting, please include details to make it clear.

  4. Don't duplicate the full text of your blog or github here. Just post the link for folks to click.

  5. Submission headline should match the article title (don’t cherry-pick information from the title to fit your agenda).

  6. No trolling.

Resources:

Any issues on the community? Report it using the report flag.

Questions? DM the mods!

founded 2 years ago
MODERATORS
 

Hey everyone!

I'm excited to introduce Reitti, a location tracking and analysis application designed to help you gain insights about your movement patterns and significant places—all while keeping your data private on your own server.

Core Capabilities:

  • Visit Tracking: Automatically recognizes and categorizes the places where you spend time, using customizable detection algorithms
  • Trip Analysis: Analyzes your movements between locations to understand how you travel whether by walking, cycling, or driving
  • Interactive Timeline: Visualizes all your past activities on an interactive timeline with map and list views that show visit duration, transport method, and distance traveled

Photo Integration:

  • Connect your self-hosted Immich photo server to seamlessly display photos taken at specific locations right within Reitti's timeline. The interactive photo viewer lets you browse galleries for each place.

Data Import Options:

  • Multiple Formats Supported: Reitti can import existing location data from GPX, GeoJSON, and Google Takeout (JSON) backups
  • (Near) Real-time Updates: Automatically receive location info via mobile apps like OwnTracks, GPSLogger or our REST API

Customization:

  • Multi-geocoding Services: Configurable options to convert coordinates to human-readable addresses using providers like Nominatim
  • User Profiles: Customize individual display names, password management, and API token security under your own control

Self-hosting:

  • Reitti is designed to be deployed on your own infrastructure using Docker containers. We provide configuration templates to set up linked services like PostgreSQL, RabbitMQ and Redis that keep all your location data private.

Reitti is still early in development but has already developed extensive capabilities. I'd love to hear your feedback and answer any questions to tailor Reitti to meet the community's needs.

Hope this sparks some interest!

Daniel

top 50 comments
sorted by: hot top controversial new old
[–] SkaveRat@discuss.tchncs.de 2 points 58 minutes ago (1 children)
[–] douglasg14b@lemmy.world 1 points 21 minutes ago
[–] umbrella@lemmy.ml 1 points 4 hours ago (1 children)

can i use it to track vehicles too like traccar?

[–] danielgraf@discuss.tchncs.de 2 points 2 hours ago

I have no experience with traccar but it seems that it supports live tracking. This is something Reitti does not support. Depends on your usecase, but i think traccar is better suited.

[–] TheHobbyist@lemmy.zip 1 points 5 hours ago* (last edited 5 hours ago)

Congrats! Amazing project, exciting interface and you went the extra mile on the integration side with third parties. Kudos!

Edit: I'll definitely have to try it out!

[–] illusionist@lemmy.zip 5 points 8 hours ago (1 children)

That looks very neat. Thanks for starting this!

I guess this will directly compete with dawarich, right?

https://github.com/Freika/dawarich

[–] danielgraf@discuss.tchncs.de 6 points 7 hours ago (1 children)

I would not say compete. They are different in how things are done from my point of view. I want to focus more on the visits we have done in the past to relive some lost memories whereas Dwarich looks more "technical" for me. I have no better words for it, I hope you get my point in what i am trying to achieve with Reitti. So there should be enough room for both 🙂

I also do not have any intentions to offer a hosted version in the foreseeable future or even anytime.

[–] illusionist@lemmy.zip 3 points 6 hours ago* (last edited 2 hours ago)

I get what you mean. The focus is different of dawarich. I'm really looking forward into checking reitti out!

[–] warmaster@lemmy.world 12 points 10 hours ago (1 children)

This looks amazing, congratulations and thank you for making it FOSS. I was wondering if you are considering integrating with Home Assistant.

[–] danielgraf@discuss.tchncs.de 2 points 10 hours ago (2 children)

Thanks :)

No, did not occur to me. What would the integration look like? Connecting it to the message bus to receive location updates? Honestly it is a couple years ago I played with HA.

[–] pyr0ball@lemmy.dbzer0.com 5 points 7 hours ago

Home automation using geofencing, and my partner likes to get a notification when I'm heading home from the office

[–] rumba@lemmy.zip 3 points 10 hours ago

Location sensor would be a good minimum bar.

A custom card for your app that is just basically a iframe into your app with auth would also be pretty decent. Your version of a map looks really nice.

Maybe surfacing metrics of distance traveled or number of geolocations.

I'll have to install the app and play around with it to make other recommendations but those are the first things that come to mind.

[–] wise_pancake@lemmy.ca 5 points 9 hours ago

Visually this is gorgeous

Really nice work!

[–] gullmar@feddit.it 5 points 10 hours ago (1 children)

Very very cool! I see that you can import GPX files: can you also do the opposite, i.e., export a GPX file for a selected time range?

[–] danielgraf@discuss.tchncs.de 4 points 9 hours ago (1 children)

I was thinking about that, but the main problem is that we do not store all the data which comes in.

If we ingest data from an app, I am pretty sure that the quality of the data is actually usable. But for example if we import an Records.json from Google Takeout. The quality of the earlier years is somewhat sketchy. For this we filter out some points like travelling with over 2000 km/h, sudden direction changes etc and they are lost forever. At least for Reitti they are unknown.

The feature would need a lot of explanation why the data we export is not the same we import.That is the reason I did not implemented it even if it would come in handy for testing stuff. Handling GPX files is a pita ...

[–] gullmar@feddit.it 1 points 1 hour ago

I understand. Currently, I'm using the NextCloud's extension Phonetrack, and one on my main use cases is to export GPX files to use them in Darktable and add geotracking information to the pictures I shoot with my camera. It works well, actually, but Phonetrack is not too intuitive and does not offer many other features: that's why I was looking with interest at this alternative!

[–] Zagorath@aussie.zone 38 points 16 hours ago (2 children)

Fuck yeah this is awesome! The detail of Immich integration is just the icing on top of an awesome cake!

How demanding is it on server resources? Am I likely to be able to run it on an old Raspberry Pi that's also running a couple of other relatively light tasks? How much storage does it end up using over time? I'm probably going to try and get it running either on my Pi or my Synology NAS, though the latter has had issues with Docker containers in the past depending on the container's dependencies...

[–] danielgraf@discuss.tchncs.de 13 points 15 hours ago (1 children)

I have no clue if a raspberry will handle it. There a a couple of services involved to make it fast, but they are then another burden like RabbitMQ. Which make ingesting data instantaneous but you need extra processing power to handle the queues. It all comes with a tradeoff.

For size, there is mainly the PostGIS DB. I just checked and my db is around 800 MB for roughtly 8 1/2 Years of data.

Photon (the reverse geocode enabled in the compose file) is another beast. For Germany it takes 14 GB of storage while running, if you let PARALLELL updates enabled you can double that every time the index is updated. But you can remove that from the compose file and rely on external Geocoders. It is described in https://github.com/dedicatedcode/reitti?tab=readme-ov-file#reverse-geocoding-options

[–] Zagorath@aussie.zone 2 points 13 hours ago (1 children)

Oh interesting. I've just read through that link, and I was assuming that something similar to the "external only" option would have been the only way it worked. More specifically, I thought it'd just store a list of historical points and display those on an OSM overlay. But it seems like even "external only" is much more involved than that.

What happens with self-hosted Photon if you specify a country, but then also visit another country? (I assume in hybrid mode it's as simple as "use Photon in your country, use Nominatim otherwise?)

But yeah, definitely sounds like a Pi is probably not gonna cut it. I'll have to see if my Synology can do it, or if the weird OS restrictions Synology imposes prevent it.

[–] danielgraf@discuss.tchncs.de 3 points 12 hours ago (1 children)

If you use Photon and only have your main country available, it will fallback to the configured external Geo-coding-services since Photon will not return a result then. So the order of execution is:

  • first try Photon
  • if it does not return anything, try to call one or all of the available Geo coding services.
[–] Zagorath@aussie.zone 1 points 10 hours ago (1 children)

Is that true even if you're not in hybrid mode?

[–] danielgraf@discuss.tchncs.de 2 points 10 hours ago* (last edited 10 hours ago) (1 children)

Maybe the wording is confusing in the Readme. Reitti will try to fetch the data from a configured photon instance first, if this does not return anything and you have Geocoding services configured, it will try them. There is actually no switch for hybrid mode or only local. It depends on what is configured.

Photon Only: you have only photon configured and under Settings > Gecoding you deleted or disable every available service. Hybrid Mode: Photon is configured and under Settings > Geocoding there are Services available. That es is the one I use. Having Photon with the data for Germany and all the rest is handled by Geoapify.com.

External Only: You dropped Photon from the docker-compose file and only rely on services under Settings > Geocoding

If you do not configure anything, then Reitti will skip Geocoding and only display Unknown Place.

I will update the Readme to make that clear.

[–] Zagorath@aussie.zone 1 points 9 hours ago (1 children)

If you do not configure anything, then Reitti will skip Geocoding and only display Unknown Place.

Ah ok thanks. This is what I was wondering.

Two follow-ups:

Can you specify multiple COUNTRY_CODEs? (and if so, is the method

environment:
  - COUNTRY_CODE=country_one
  - COUNTRY_CODE=country_two

or

environment:
  - COUNTRY_CODE=[country_one, country_two]

or something else?)

And is this something that can seemlessly be retroactively changed? For example, if I set COUNTRY_CODE=au and it works fine for Australia, but then I move to NZ, can I add (assuming the answer to my first question is yes) or change to COUNTRY_CODE=nz and have all the NZ locations work on the already-recorded data, even if I made that change to my configuration after I had been in NZ for a few months?

[–] danielgraf@discuss.tchncs.de 2 points 9 hours ago* (last edited 9 hours ago) (1 children)

Good question, afaik you can not enter multiple countries to Photon. I was hoping it would be possible but everything i saw was it is either one country or the whole world. But maybe you can have a look here: https://github.com/komoot/photon That is the service we are using.

[–] Zagorath@aussie.zone 1 points 7 hours ago (2 children)

I just took a really quick look at it, but under Importing data from Nominatim it says "-country-codes allows to filter the data to be imported by country. Set this to a comma-separated list of two-letter language codes."

That's a different section from the Importing data from a JSON dump section, which is where it only mentions -country-code. But even that does seem to suggest it takes "all the parameters of an import from a Nominatim database". So it seems like either the documentation for one of them is wrong, or both are lacking (because in fact both the singular and plural work).

[–] danielgraf@discuss.tchncs.de 2 points 6 hours ago

I think this is not exposed when running the Docker container. But let me check later when i have time what happens if i put another country in that variable

[–] danielgraf@discuss.tchncs.de 1 points 5 hours ago

I looked at the docker image i am using in the docker-compose file and this only supports having a single country code. The actual reason can be found here: https://github.com/rtuszik/photon-docker/blob/3b63df49fbc0a77cafcbd6e6be2b8857c12b9143/start-photon.sh#L341C5-L342C7

It is probably possible if you deploy photon on its own and then import the data somehow. But that is to much hassle for me, i think and hope that most of the use case is handled by the current solution. At least for most of the potential users. But I get the point if someone is traveling a lot between countries.

If there is enough demand I could maybe try to create a PR for the Docker image to handle multiple country codes.

load more comments (1 replies)
[–] scarilog@lemmy.world 18 points 15 hours ago (1 children)

My only concern is battery usage. Google has the advantage of OS integration, which skims location data for timeline history even when another app accesses location, which uses essentially no battery (since you would've been using location for that other app anyway).

But it's awesome that a tool like this exists anyways, great work.

[–] danielgraf@discuss.tchncs.de 10 points 13 hours ago (1 children)

Thank you :)

I understand your concerns, this is something every additional app would have to deal with.

For me it is ok to have GPSLogger running all the time, I think for what it is doing it is quite easy on the battery but I do not use my phone actively that much and I am happy if it survives a day which it does.

[–] illusionist@lemmy.zip 4 points 8 hours ago

I log my position every 5 seconds for years and gpslogger is not among any of the battery consuming processes if you use the device. If you don't use the phone at all, it will consume more power but that's no reason not to use it.

[–] emrsmsrli@lemmy.world 4 points 11 hours ago (1 children)

What's the difference from Dawarich, if I may ask? Beside from a better name :)

[–] danielgraf@discuss.tchncs.de 6 points 11 hours ago (2 children)

Thanks :) As a German I really like the name Dawarich. First it sound really nice for me but also that "Da war ich" means "There have i been" in german makes, at least for me, an awesome project name.

Take this with a grain of salt because I have no idea what the plans are for Dawarich or have ever been and this is solely based on my external view. For me the main differences are:

  • visits and trips are our main data, everything else is just the way to calculate them. For Dawarich it looks to me, that it is the other way around. It displays all the location data in good way with the heatmap and so on but visits or places seems so tacked on. This should not be an offense against it. I actually still have an instance running and it was the main pushing point to finally start working on Reitti.
  • the sleek UI but this depends on your taste

In the end, they are not that far off. Maybe a matter of taste.

[–] pipariturbiini@sopuli.xyz 1 points 1 hour ago

Maybe slightly off-topic, but how did you end up with the name "reitti"? You say you're German - do you have some sort of tie to the Finnish language?

[–] emrsmsrli@lemmy.world 1 points 8 hours ago

Thanks for the reply! I will give it a go :)

The word dawarich does not produce a polite sound in my main language, meant no offense to the project :)

[–] BlueEther@no.lastname.nz 9 points 15 hours ago* (last edited 15 hours ago) (1 children)

This looks good, I'm currently using dawarich and owntracks to track our families 5 week road trip around the south island of New Zealand (https://no.lastname.nz/post/1468113). If I can find a spare moment in our travels and a good internet connection I'll try and spin up an image and test it out.

One thing that I would love is to be able to have multiple people displayed on a single map (my wife [kids when they have their own phones with data], brother, mother and a few close friends - we already use google maps for this)

[–] danielgraf@discuss.tchncs.de 7 points 15 hours ago* (last edited 15 hours ago) (1 children)

That sounds like an awesome idea, actually the data is stored for every user separately depending on the used api token or when you login and do a data import. I will create a feature request for it.

But bear in mind, reitti is not meant to be a real-time tracking app. At the moment, data is processed every 10 minutes.

load more comments (1 replies)
[–] Kernal64@sh.itjust.works 2 points 12 hours ago (1 children)

This looks really cool! I just have one question. Is it possible to just install this like normal software on a Linux machine or does it require Docker?

[–] danielgraf@discuss.tchncs.de 2 points 11 hours ago (1 children)

Thank you.

At the moment i do not have any plans of providing a way of running it without docker. Mainly because of time to support that.

Since it is a Spring-Boot-Application it would be possible to create a jar file which you can execute or deploy as a service with systemd. But then you have to make sure all prerequisites are also running. That is the one thing I like about docker and especially docker compose.

But short answer: Yes, it is possible but you are on your own at the moment. I would help and maybe we can add a section to the readme how to do it.

[–] kameecoding@lemmy.world 1 points 8 hours ago (1 children)

Not sure if you know about it and I haven't used it myself yet, but being able to create native executables could be relatively easy with this

https://docs.spring.io/spring-boot/reference/packaging/native-image/index.html

[–] danielgraf@discuss.tchncs.de 1 points 8 hours ago

I used that once on a past gig and it wasn't very pleasant to use. Especially in combination with spring boot. But that is a couple of years ago. Maybe things have changed. I personally would prefer the executable jar from spring boot. With that you do not have to make that many steps to make it work. But thanks for the suggestion :)

[–] Zagorath@aussie.zone 3 points 13 hours ago (1 children)

I love that it supports multiple formats for important location as well as multiple geocoders. But that makes me wonder, would it be feasible to support multiple image libraries? There's a bunch of different FOSS photo libraries out there. I think Nextcloud is the main other one I've heard about 'in the wild', as it were. Or is there too much bespoke Immich code in there for that to be a simple plug-and-play option?

[–] danielgraf@discuss.tchncs.de 4 points 12 hours ago (1 children)

no, that would not be a problem as soon as the other image library has an api reitti could query. It just happens that I am settled with immich and had no other needs at the moment.

If you need a specific one, drop a feature request and I will have a look.

[–] Zagorath@aussie.zone 2 points 12 hours ago (1 children)

I don't actually have any personally. I'm still with Google Photos for now and hadn't decided what to switch to, with Immich, Nextcloud, and the non-open Synology Photos being the top of my list. Legitimately, what a tool like this supports could be a factor I use to help decide.

How complicated is the code interfacing with Immich? Is it a piece someone not familiar with your overall code base could relatively easily pick up and make a pull request for?

[–] danielgraf@discuss.tchncs.de 3 points 11 hours ago

I do not think it is that complicated. The front-end sends a request to the back-end with the current selected day. This triggers a search in Immich returning all photos taken on that specific day. This is returned to the front-end and this than does the heavy lifting like filtering them to the current map bounds, displaying them on the map at a specific location. We proxy all request from the front-end through our server because of CORS issues and I did tried to avoid having to configure Immich besides creating a token for the API.

One would need to either create a specific IntegrationService like ImmichIntegrationService and then figure out a way how the user can configure that. The easiest would be that we just then call all available ones even if I do not see the use case of having multiple Photo-Servers. But it would make the code in Reitti cleaner and would not hurt if we do not configure 20 simultaneous servers :D

[–] pemptago@lemmy.ml 4 points 15 hours ago (1 children)

This looks awesome! I'd just been collect my GPS data thinking one day I'd analyze/visualize it on my own-- not expecting anyone else to make a such a comprehensive program. The UI looks really slick. I'm looking forward to testing it out. Hopefully this weekend. Thank you for this!

load more comments (1 replies)
[–] Atropos@lemmy.world 5 points 16 hours ago (2 children)

This is really neat, I'm going to spin it up tomorrow!

load more comments (2 replies)
[–] MrQuallzin@lemmy.world 6 points 17 hours ago

This is really awesome! I was just about to start looking for something like this, so great timing. Going to get this up on my Unraid server tomorrow and play around with it

[–] dan@upvote.au 3 points 14 hours ago (1 children)

I'd love to see an integration with PhotoStructure in addition to Immich.

load more comments (1 replies)
load more comments
view more: next ›