Dawarich: Alternativa autohospedada a Google Timeline

Publicado por


dawarich
Open Source

Dawarich: Alternativa autohospedada a Google Timeline

Aplicación web para rastrear y visualizar tu historial de ubicaciones con control total de tus datos

Vídeo tutorial en YouTube

Mira el vídeo completo sobre cómo instalar y usar Dawarich: Alternativa autohospedada a Google Timeline en el canal GENBYTE:

¿Qué es Dawarich: Alternativa autohospedada a Google Timeline?

Dawarich es una aplicación web de código abierto diseñada para reemplazar Google Timeline (Google Location History). Permite rastrear tu ubicación, visualizar los datos en un mapa interactivo, crear viajes, analizar tu historial de viajes, compartir la ubicación con familiares e integrarse con aplicaciones de gestión de fotos como Immich y Photoprism para visualizar fotos georreferenciadas. El proyecto está licenciado bajo AGPL-3.0 y desarrollado principalmente en Ruby.

Control total de tus datos de ubicación sin depender de servicios de terceros, con soporte para múltiples fuentes de importación y visualización avanzada en mapa.

Características principales

Rastreo de ubicación en vivo

Compatible con aplicaciones móviles oficiales (iOS y Android) y clientes de terceros como Overland, OwnTracks, GPSLogger, PhoneTrack y Home Assistant para enviar actualizaciones de ubicación a tu instancia.

Visualización del historial en mapa

Mapa interactivo con capas personalizables: mapa de calor, puntos, líneas entre puntos y niebla de guerra para explorar tu historial de ubicaciones.

Compartir en familia

Permite compartir tu ubicación con miembros de la familia y ver sus ubicaciones en el mapa con su consentimiento. Cada miembro puede activar o desactivar el compartir individualmente.

Áreas y visitas (Beta)

Dibuja áreas en el mapa para que Dawarich sugiera visitas. El sistema puede sugerir lugares visitados y permitir confirmar o rechazarlos.

Estadísticas e insights

Análisis de viajes: países y ciudades visitados, distancia total recorrida, tiempo invertido, desglosado por año y mes. Insights automáticos como 'Tu lugar más visitado es casa con 120 visitas'.

Días por país

Visualiza cuántos días has pasado en cada país, útil para propósitos de residencia fiscal o para ver dónde pasas la mayor parte del tiempo.

Viajes

Crea viajes para visualizar desplazamientos entre dos puntos temporales: ruta, distancia, tiempo e notas. Con integración Immich o Photoprism, muestra también las fotos del viaje.

Integraciones con fotos

Proporciona credenciales de Immich o Photoprism para importar automáticamente geodatos de tus fotos y visualizarlas en el mapa.

Importación y exportación de datos

Importa desde Google Maps Timeline, OwnTracks, Strava, Immich, archivos GPX/GeoJSON y datos EXIF de fotos. Exporta a GeoJSON o GPX.

Requisitos del sistema

  • Docker y Docker Compose
  • PostgreSQL (configurado vía variables de entorno: host, puerto, base de datos, usuario, contraseña)
  • Redis (configurado vía REDIS_URL)
  • Claves secretas JWT: JWT_SECRET_KEY y AUTH_JWT_SECRET_KEY (generables con `bundle exec rails secret`)
  • Node.js 18.17.1 y npm 9.6.7 para compilación de assets frontend
  • Ruby (versión definida en .ruby-version)

Instalación con Docker Compose

Clonar el repositorio

Clona el repositorio oficial de Dawarich en tu servidor o máquina local.

git clone https://github.com/Freika/dawarich.git
cd dawarich

Configurar variables de entorno

Copia el archivo de ejemplo y edita los valores obligatorios: base de datos PostgreSQL, Redis, claves JWT y opcionalmente SMTP, geocodificación inversa y límites de vídeos de ruta.

cp .env.example .env
# Edita .env con tus valores

Levantar la aplicación con Docker Compose

El proyecto incluye un archivo docker-compose.yml en el directorio docker/. Úsalo para iniciar todos los servicios necesarios.

docker compose -f docker/docker-compose.yml up -d

Verificar el estado

Comprueba que los contenedores estén en ejecución y revisa los logs si es necesario.

docker compose -f docker/docker-compose.yml ps
docker compose -f docker/docker-compose.yml logs -f

Acceder al proyecto

Acceso web

Una vez levantados los contenedores, la aplicación está disponible en http://localhost:3000 (o el puerto configurado en tu reverse proxy).

Credenciales por defecto

Usuario: [email protected] | Contraseña: safepassword. Se recomienda cambiarlas en la configuración de la cuenta tras el primer acceso.

Casos de uso

  • Sustituir Google Timeline manteniendo la privacidad y propiedad de los datos de ubicación
  • Rastrear rutas diarias, viajes y desplazamientos con visualización en mapa
  • Compartir ubicación en tiempo real con familiares de forma consentida
  • Analizar estadísticas de viajes: países visitados, distancias, tiempo por año/mes
  • Integrar fotos georreferenciadas de Immich o Photoprism en el mapa de ubicaciones
  • Importar historial previo desde Google Takeout, OwnTracks, Strava, GPX/GeoJSON
  • Exportar datos propios a formatos abiertos (GeoJSON, GPX) para portabilidad
  • Uso en homelab o servidor personal con control total sobre la infraestructura

Configuración avanzada

Configuración de geocodificación inversa

Define proveedor y límites de tasa para convertir coordenadas en direcciones. Soporta Photon, Nominatim, Geoapify y LocationIQ. Las variables fijan los valores en la interfaz de administración como solo lectura.

# Ejemplo en .env
PHOTON_API_HOST=https://photon.komoot.io
PHOTON_API_KEY=
PHOTON_API_USE_HTTPS=true
REVERSE_GEOCODING_RPS=1
REVERSE_GEOCODING_CONCURRENCY=5

Configuración de correo SMTP

Habilita envío de correos para notificaciones, recuperación de contraseña, etc. Soporta TLS implícito (puerto 465) y STARTTLS. Permite desactivar verificación de certificado para servidores locales con certificado autofirmado.

# Ejemplo en .env
SMTP_SERVER=smtp.ejemplo.com
SMTP_PORT=587
SMTP_USERNAME=usuario
SMTP_PASSWORD=contraseña
SMTP_SSL=false
SMTP_OPENSSL_VERIFY_MODE=none

Límites de vídeos de ruta

Controla retención y cantidad máxima de vídeos de reproducción de ruta por usuario. Los vídeos son pesados (~17 MB por 15s vertical). La expiración borra solo el archivo, manteniendo la configuración para volver a renderizar.

# Ejemplo en .env
VIDEO_RETENTION_DAYS=30
VIDEO_MAX_PER_USER=10

Ajuste de tiempo de espera de teselas vectoriales

Aumenta el tiempo límite de consulta para teselas vectoriales en rangos de fechas grandes. Por defecto 5000 ms. Útil en instancias autohospedadas con grandes volúmenes de datos.

VECTOR_TILES_QUERY_TIMEOUT_MS=10000

Configuración de macOS para desarrollo

Evita advertencias y fallos de fork() en Sidekiq al desarrollar en macOS estableciendo la variable de entorno correspondiente.

OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES

Gestión y mantenimiento

Actualizaciones

No actualices automáticamente. Lee las notas de cada versión antes de actualizar. Las actualizaciones automáticas pueden romper tu configuración. Haz siempre copia de seguridad antes de actualizar.

# Ejemplo de actualización manual
git pull
docker compose -f docker/docker-compose.yml pull
docker compose -f docker/docker-compose.yml up -d –build

Copia de seguridad y restauración

Realiza copias de seguridad de la base de datos PostgreSQL y de los volúmenes de datos (fotos, vídeos, archivos subidos) antes de cualquier actualización. Consulta la guía oficial de backup y restore.

# Ejemplo backup PostgreSQL
docker exec -t <contenedor_postgres> pg_dump -U postgres dawarich_production > backup_$(date +%F).sql
# Restaurar
docker exec -i <contenedor_postgres> psql -U postgres dawarich_production < backup_2024-01-15.sql

Limpieza de recursos

Elimina imágenes Docker no utilizadas y limpia volúmenes huérfanos periódicamente para liberar espacio en disco.

docker image prune -a
docker volume prune

Monitoreo de logs

Revisa los logs de la aplicación y de Sidekiq para detectar errores en trabajos en segundo plano, ingestión de puntos o geocodificación.

docker compose -f docker/docker-compose.yml logs -f app
docker compose -f docker/docker-compose.yml logs -f sidekiq

Stack técnico

  • Ruby (backend principal)
  • Ruby on Rails (framework web)
  • PostgreSQL (base de datos relacional)
  • Redis (caché y colas de trabajos)
  • Sidekiq (procesamiento en segundo plano)
  • Node.js 18.17.1 / npm 9.6.7 (compilación assets)
  • MapLibre GL (renderizado de mapas vectoriales)
  • DaisyUI / Tailwind CSS (interfaz de usuario)
  • Hotwire / Turbo Rails (SPA-like navigation)
  • Trix / ActionText (editor de texto enriquecido)
  • Docker / Docker Compose (despliegue)
  • AGPL-3.0 (licencia)

Referencias oficiales

Apoya el canal GENBYTE

Sígueme en mis redes sociales

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *