PromptHub
Back to Blog
Developer Tools Privacy & Security

Freika/dawarich: Self-Hosted Location History for Privacy-Minded Developers

B

Bright Coding

Author

8 min read 153 views
Freika/dawarich: Self-Hosted Location History for Privacy-Minded Developers

Freika/dawarich: Self-Hosted Location History for Privacy-Minded Developers

Google Timeline's shifting availability and data governance concerns have left developers searching for alternatives they actually control. Freika/dawarich answers that need directly: a self-hostable Ruby application that replicates core location history functionality without third-party dependency. With 9,722 GitHub stars and active development through July 2026, it represents a mature, community-validated approach to personal geospatial data management.

This article examines what Freika/dawarich offers technically, how to deploy it, and where it fits against existing solutions.


What is Freika/dawarich?

Freika/dawarich is an open-source web application built in Ruby, licensed under GNU Affero General Public License v3.0. It is explicitly designed as a self-hostable replacement for Google Timeline (formerly Google Location History), giving individuals and families full custody of their movement data.

The project is maintained by Freika with community contributions (328 forks indicate active forking for customization). Its last commit date of 2026-07-13 confirms ongoing maintenance—a critical signal for infrastructure software that handles persistent personal data.

Technically, Dawarich occupies a specific niche: personal geospatial infrastructure. Unlike consumer SaaS location services, it requires deliberate deployment and configuration. This trade-off—operational overhead against data sovereignty—defines its user base. The application stack appears containerized (Docker↗ Bright Coding Blog Compose is the documented deployment path), with a web interface served on port 3000 by default.

The project's relevance now stems from converging pressures: Google's [INTERNAL_LINK: data-retention-policy-changes], increasing regulatory attention to geolocation privacy, and the self-hosting movement's growth among technical practitioners. Dawarich does not attempt to be a passive consumer product; it expects an operator who understands container orchestration, reverse proxy configuration, and backup procedures.


Key Features

Location Tracking & Ingestion Dawarich accepts location data from eight documented sources: its own iOS and Android apps, a community Android client, Overland, OwnTracks, GPSLogger, PhoneTrack, and Home Assistant. This breadth matters for users already embedded in specific tracking ecosystems—they need not abandon existing tooling.

Visualization Modes The map interface supports four distinct render layers: heatmap, points, connecting lines, and fog of war. The fog-of-war mode gamifies exploration by masking unvisited regions—a feature absent from mainstream alternatives.

Trip Construction & Analysis Users define temporal boundaries for trips, generating route visualizations with distance calculations and duration metrics. Notes can be attached. When Immich or Photoprism credentials are provided, trip views automatically surface geotagged photographs.

Family Sharing Location sharing operates on per-member consent. Each participant independently enables or disables sharing, with aggregated positions rendered on a shared map view.

Statistical Aggregation Yearly and monthly breakdowns cover countries visited, cities visited, total distance traveled, and time spent. A dedicated "Days in Country" view addresses practical use cases like tax residency documentation.

Automated Visit Detection (Beta) Dawarich suggests visited locations based on dwell patterns, requiring user confirmation or rejection. This reduces manual logging without removing human judgment.

Area Definition User-drawn polygons trigger visit suggestions when entered, enabling custom POI tracking beyond generic geocoding.

Data Portability Import sources include Google Maps Timeline, OwnTracks, Strava, Immich, GPX, GeoJSON, and EXIF-extracted photo geodata. Exports write to GeoJSON or GPX.


Use Cases

Privacy-First Personal Archiving Developers with existing home server infrastructure (NAS, Raspberry Pi clusters, VPS instances) can consolidate location history alongside other self-hosted services. The AGPL v3.0 license ensures source availability for audit.

Family Coordination Without Platform Lock-in Parents tracking teenage children or adult children monitoring elderly parents gain location awareness without routing sensitive data through Apple, Google, or proprietary services. The consent-based sharing model respects individual agency.

Travel Documentation & Tax Compliance The "Days in Country" feature directly supports substantial presence tests and other tax residency determinations. Combined with trip notes and photo integration, Dawarich becomes evidentiary infrastructure.

Quantified Self Analysis The insights engine surfaces patterns ("most visited place," "30 days in Paris in 2024") that feed into personal analytics workflows. Unlike generic fitness tracking, Dawarich centers geographic narrative.

Migration From Discontinued Services Google's Timeline service changes have left users with export archives and no continuation path. Dawarich's Google Takeout import preserves historical investment while establishing independent future operation.


Installation & Setup

The documented local deployment uses Docker Compose. Reproduce these commands exactly:

# 1. Clone the repository
git clone https://github.com/Freika/dawarich.git
cd dawarich

# 2. Start the application stack
docker compose -f docker/docker-compose.yml up

# 3. Access the web interface at http://localhost:3000

To stop: press Ctrl+C in the terminal running the compose process.

Configuration Options

  • Copy .env.example to .env and modify values for production deployment
  • Default credentials: demo@dawarich.app / safepassword — change immediately in account settings

Production Hardening (Documented) The project maintains guides for:

Critical Operational Note: The README explicitly warns against automatic updates. Release notes must be reviewed before upgrading, and backups are mandatory. This reflects the project's active development status—frequent updates may introduce breaking changes.


Real Code Examples

The README contains limited inline code. The following are the actual documented commands, reproduced with explanatory context.

Basic Local Startup

# Clone and launch — the complete quick-start path
docker compose -f docker/docker-compose.yml up

This single command builds and starts the full application stack. The -f flag specifies the compose file location within the docker/ subdirectory, suggesting a repository structure that separates container configuration from application source. Port 3000 exposure is handled within the compose definition, not requiring manual -p flags.

Environment Customization

# Create local configuration from template
cp .env.example .env
# Edit .env with production-appropriate values

The .env.example file is not reproduced in the README, but its existence indicates twelve-factor app configuration principles. For production deployments, this would typically include database connection strings, secret keys, and external service credentials (Immich, Photoprism).

Explicit Note: The README does not contain additional code examples beyond these Docker Compose commands. Developers should consult the environment variables documentation for configuration specifics. This limited inline documentation reflects the project's orientation toward operational guides on its dedicated documentation site rather than embedded README tutorials.


Advanced Usage & Best Practices

Backup Discipline The README's disclaimer section is unusually emphatic: backup before updates, never delete original import data, and read release notes. Treat Dawarich as infrastructure with data loss risk, not a stateless application. Implement automated backups of the Docker volumes and database.

Tracking Source Selection OwnTracks and Overland offer MQTT-based, battery-efficient options for mobile. Home Assistant integration suits users already running home automation infrastructure. Evaluate based on existing stack rather than defaulting to the native apps.

Reverse Proxy Configuration The documented reverse proxy guide is essential for production. Dawarich on localhost:3000 is not suitable for internet exposure without TLS termination and likely authentication hardening.

Resource Planning Ruby applications with geospatial data processing (map tile rendering, heatmap generation, statistical aggregation over large point datasets) can be memory-intensive. Monitor container resource usage as historical data accumulates.

Update Strategy Given the explicit warning against automatic updates, implement a staged deployment: test releases on a non-production instance, validate data integrity, then migrate production. The project's velocity (active through mid-2026) suggests frequent releases.


Comparison with Alternatives

Dimension Freika/dawarich Google Timeline OwnTracks (Standalone)
Hosting Self-hosted Google-managed Self-hosted (recorder)
Data Control Full custody Platform terms Full custody
Visualization Map, heatmap, fog, trips Map, timeline Basic map (recorder UI)
Family Sharing Consent-based, built-in Google Family Requires manual setup
Photo Integration Immich, Photoprism Google Photos None
License AGPL v3.0 Proprietary Apache 2.0 (recorder)
Mobile Apps Native iOS/Android + community Google Maps iOS/Android

Trade-offs: Dawarich requires operational investment Google Timeline does not. Against standalone OwnTracks, it offers richer visualization and trip features at the cost of complexity. OwnTracks remains superior for minimal, MQTT-focused tracking without web interface requirements.


FAQ

What license covers Freika/dawarich? GNU Affero General Public License v3.0. Network use constitutes distribution, requiring source availability for users.

Can I run Dawarich without Docker? The README documents only Docker Compose deployment. Native Ruby installation would require manual dependency resolution.

How does family sharing handle privacy? Each member independently toggles sharing. No global admin override is documented.

Is there a managed option? Dawarich Cloud exists as a hosted alternative, though this article focuses on the self-hosted project.

What database does Dawarich use? Not explicitly stated in the README; inspect docker-compose.yml or environment documentation.

How do I import Google Takeout data? Follow the dedicated tutorial. Preserve originals post-import.

Is the project stable for production? The README describes it as "under active development" with "frequent updates, bugs, and breaking changes." Production use requires operational maturity.


Conclusion

Freika/dawarich serves a specific operator: the developer or technical household willing to exchange SaaS convenience for data sovereignty. Its 9,722 stars and sustained development validate the approach, while its explicit stability warnings demand honest self-assessment.

The tool excels where Google Timeline falls short—multi-source ingestion, family sharing with consent granularity, photo integration, and export portability. It requires commitment: container management, backup discipline, and careful update practices.

For privacy-motivated individuals already running home infrastructure, Dawarich represents a credible, feature-complete alternative. For those seeking zero-configuration deployment, the managed cloud offering or consumer services remain more appropriate.

Explore the repository, review the documentation site, and evaluate against your operational capacity: https://github.com/Freika/dawarich

Comments (0)

Comments are moderated before appearing.

No comments yet. Be the first to share your thoughts!

Recommended Prompts

View All
All tools