Own Your Location Data Before Someone Else Does
Google Maps Timeline, Apple’s Significant Locations, and similar services have been quietly collecting years of your movement data – where you sleep, where you work, which coffee shops you frequent on Tuesday mornings. That data lives on someone else’s server, subject to their retention policies, their security practices, and their legal obligations to third parties. Dawarich is an open-source, self-hosted alternative that puts that entire history under your direct control, running on hardware you own, with no outside party involved.
The appeal goes beyond privacy. Dawarich lets you import existing location history from Google Takeout, Owntracks, and other sources, then visualizes everything on an interactive map with timeline views, trip statistics, and heatmaps. Once it is running, your phone continues logging to your own server instead of a corporate one. The setup process is straightforward for anyone comfortable with Docker, and the result is a complete location intelligence platform that answers only to you.

What You Need Before Starting
Dawarich runs as a Docker Compose stack, so the baseline requirement is a machine with Docker and Docker Compose installed. A home server, a Raspberry Pi 4 or newer, a VPS, or any Linux box with at least 1GB of RAM will handle it without trouble. You will also want a domain name or local DNS entry if you plan to access Dawarich from outside your home network, and a reverse proxy like Nginx Proxy Manager or Caddy to handle HTTPS termination.
If you are running other self-hosted tools already – a media stack, a finance tracker, or a design suite – Dawarich slots into that same infrastructure without conflict. The stack uses PostgreSQL for its database and Redis for background job processing, both of which are defined inside the Compose file, so you do not need to set those up separately unless you want to share existing database instances.

Installing Dawarich with Docker Compose
Start by creating a directory for the project and pulling the official Compose file. Navigate to your preferred app directory and run mkdir dawarich && cd dawarich. From there, create a docker-compose.yml file. The official Dawarich repository on GitHub includes a ready-to-use Compose example that defines the app service, the PostgreSQL database, and Redis in a single file – copy that as your starting point.
Inside the Compose file, locate the environment variables block for the app service. You need to set SECRET_KEY_BASE to a long random string, which you can generate with openssl rand -hex 64 in your terminal. Set APPLICATION_HOST to the domain or IP address you will use to access Dawarich. The database credentials in the app service must match those defined in the PostgreSQL service block – keep them consistent or the container will fail to connect on first boot.
With the file saved, run docker compose up -d to pull the images and start the stack. On first run, Dawarich needs a minute to initialize the database. Watch the logs with docker compose logs -f dawarich_app and wait until you see a message indicating the web server is ready. At that point, open a browser and navigate to your configured host address on port 3000 (unless you have remapped it in the Compose file).
Create your admin account through the registration page that appears on first access. After logging in, go to Settings and review the API key listed there – you will need this key to connect mobile apps and configure automated location updates. It is also worth setting the application timezone in Settings to match your local timezone, because Dawarich uses it when calculating visit times and daily summaries.
Connecting Your Phone to Log Location Continuously
Dawarich supports the Owntracks protocol natively, which means the free Owntracks mobile app for iOS and Android works as the logging client out of the box. Inside Owntracks, switch the connection mode to HTTP rather than MQTT, then enter your Dawarich host URL followed by /api/v1/owntracks/points as the endpoint. Add your username and API key in the authentication fields. Once saved, Owntracks will begin posting location updates to your server at whatever frequency you configure – every 30 seconds for high detail, or every few minutes to preserve battery.
If you prefer a different client, Dawarich also accepts points through its own REST API, so any app capable of sending HTTP POST requests with a JSON payload can feed data into it. The API documentation is available directly within the Dawarich interface under the API section of Settings, with example payloads and field descriptions. Some users run lightweight scripts on their home router or on a secondary device to supplement phone tracking with network presence data.
Importing Your Existing Location History
The most satisfying early step after installation is importing years of existing history from Google Maps. Go to Google Takeout, select only Location History, and choose JSON format for the export. Once the archive downloads, extract it and find the Records.json file inside the Location History folder. In Dawarich, navigate to Imports, select Google Records as the import type, upload the file, and start the import job. Depending on how many years of data you have, the background processing may take anywhere from a few minutes to over an hour.
Dawarich also supports GPX file imports, which covers data exported from fitness trackers, dedicated GPS devices, and apps like Strava or Komoot. Each import type has its own parser, so the format selection on the import screen matters – choosing the wrong type will produce parsing errors rather than useful data. After any large import finishes, the map view and statistics dashboard update automatically to reflect the full dataset.

Reading the Map and Making Sense of Your Data
The main map view in Dawarich displays your movement as a heatmap overlay by default, with denser colors marking places you have visited frequently. Switching to the Points view shows individual logged locations as dots, and clicking any dot displays its timestamp, coordinates, and speed at the time of logging. The timeline panel on the left lets you filter by date range, so you can isolate a specific trip or look at a single month of movement in isolation.
The Statistics section breaks down your data numerically – total distance traveled, countries and cities visited, days with active tracking, and average daily distance. These figures update each time new points arrive or an import completes. For users who have imported a full Google history, the city and country counts can surface places from years ago that never registered consciously at the time.
One detail worth flagging: Dawarich’s reverse geocoding – the process that converts raw coordinates into readable city and country names – depends on an external geocoding service. By default it uses Photon, which is free and open-source, but if you are running Dawarich on a machine without reliable outbound internet access, those city labels will not populate. You can configure an alternative geocoding API in the Settings panel, including options that allow fully offline reverse geocoding if you host a local Nominatim instance alongside the stack.





