← All articles
a screenshot of a web page with the words make data driven decision, in

Dawarich: Self-Hosted Google Maps Timeline Alternative

Privacy 2026-03-04 · 3 min read dawarich location tracking privacy self-hosted docker google maps timeline open-source
By Selfhosted Guides Editorial TeamSelf-hosting practitioners covering open source software, home lab infrastructure, and data sovereignty.

Google Maps Timeline records everywhere you've been — every trip, every stop, every route. It's genuinely useful for recalling where you were. But the data stays in Google's hands, and losing your Google account means losing years of location history. Dawarich is a self-hosted alternative that imports your historical location data and provides the same browsable map interface, under your control.

Photo by Team Nocoloco on Unsplash

What Dawarich Does

Docker Compose Setup

services:
  dawarich_app:
    image: freikin/dawarich:latest
    container_name: dawarich_app
    restart: unless-stopped
    ports:
      - 3000:3000
    volumes:
      - dawarich_public:/var/app/public
      - dawarich_watched:/var/app/tmp/imports/watched
    environment:
      RAILS_ENV: development
      REDIS_URL: redis://dawarich_redis:6379/0
      DATABASE_HOST: dawarich_db
      DATABASE_USERNAME: postgres
      DATABASE_PASSWORD: changeme
      DATABASE_NAME: dawarich
      MIN_MINUTES_SPENT_IN_CITY: 60
      APPLICATION_HOSTS: localhost,dawarich.yourdomain.com
      TIME_ZONE: America/Los_Angeles
      APPLICATION_PROTOCOL: http
    depends_on:
      - dawarich_db
      - dawarich_redis

  dawarich_sidekiq:
    image: freikin/dawarich:latest
    container_name: dawarich_sidekiq
    restart: unless-stopped
    command: sidekiq
    volumes:
      - dawarich_public:/var/app/public
      - dawarich_watched:/var/app/tmp/imports/watched
    environment:
      RAILS_ENV: development
      REDIS_URL: redis://dawarich_redis:6379/0
      DATABASE_HOST: dawarich_db
      DATABASE_USERNAME: postgres
      DATABASE_PASSWORD: changeme
      DATABASE_NAME: dawarich
      APPLICATION_HOSTS: localhost,dawarich.yourdomain.com
    depends_on:
      - dawarich_db
      - dawarich_redis

  dawarich_db:
    image: postgres:15
    container_name: dawarich_db
    restart: unless-stopped
    volumes:
      - dawarich_db:/var/lib/postgresql/data
    environment:
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: changeme
      POSTGRES_DB: dawarich

  dawarich_redis:
    image: redis:7
    container_name: dawarich_redis
    restart: unless-stopped

volumes:
  dawarich_public:
  dawarich_watched:
  dawarich_db:

Navigate to http://your-server:3000. Create an account on first run.

Importing Google Location History

  1. Go to Google Takeout → select "Location History (Timeline)" → export
  2. Google sends a download link (can take hours for large histories)
  3. Extract the ZIP — find Takeout/Location History/Records.json (the main file)
  4. In Dawarich: Settings → Import → upload the file

The import processes asynchronously via Sidekiq. Large files (years of location data) take 10-60 minutes.

Supported import formats:

Ongoing Tracking

For continuous location logging after the initial import:

OwnTracks (iOS/Android)

OwnTracks is an open-source mobile location app:

  1. Install OwnTracks from the App Store / Play Store
  2. Configure HTTP mode:
    • Host: https://dawarich.yourdomain.com
    • Port: 443
    • Path: /api/v1/points
    • Authentication: your API key from Dawarich settings

OwnTracks sends location updates whenever you move significantly, using minimal battery.

Overland (iOS)

Overland is a GPS logger app by Aaron Parecki:

Browsing Location History

The main map view:

The reverse geocoding feature (Nominatim or Photon) converts coordinates to place names — "Home," "Office," city names — rather than showing raw coordinates.

Reverse Geocoding Setup

Dawarich uses a geocoding API to resolve coordinates to names. Options:

Photon (self-hosted, recommended):

# Add to docker-compose.yml
photon:
  image: cottonpaperback/photon:latest
  restart: unless-stopped
  # Requires ~50GB for the full dataset

Nominatim (self-hosted OpenStreetMap geocoding): heavier resource requirements.

External APIs: Configure OpenCage or similar in Dawarich settings (incurs API costs).

For most homelabs, using the Photon public API (https://photon.komoot.io) works without self-hosting, though it sends coordinate queries externally.

Privacy Considerations

The whole point is keeping location data off Google. With Dawarich self-hosted:

Resource Usage

Runs comfortably on any server with 1GB RAM available.

Backup

# Backup the PostgreSQL database
docker exec dawarich_db pg_dump -U postgres dawarich | gzip > dawarich-$(date +%Y%m%d).sql.gz

# Backup uploaded files
docker run --rm -v dawarich_public:/data -v $(pwd):/backup alpine \
  tar czf /backup/dawarich-public-$(date +%Y%m%d).tar.gz /data

The project is at github.com/Freika/dawarich. For anyone who values their location history but doesn't want Google keeping it, Dawarich is the most polished self-hosted alternative available.

Get free weekly tips in your inbox. Subscribe to Self-Hosted Weekly