12-reitti.md kstack: book: Centerpoint Home Lab chapter: Documents & Organization page: Reitti tags: [reitti, fitness, activity-tracking, postgis, rabbitmq, redis] Overview Reitti is a self-hosted activity and fitness tracking platform. It records GPS tracks, check-ins, and location history and displays them on interactive maps. The platform is a 6-container stack: the core Java application, a PostGIS spatial database, Redis cache, RabbitMQ message queue, a tile proxy for map tiles, and Photon for geocoding. External access is at https://reitti.jeeves5454.ddns.net. Check-in data from Foursquare/Swarm is synced into Reitti via the separate swarm-reitti-bridge service (see next page). Access Type URL Auth External https://reitti.jeeves5454.ddns.net Reitti own auth + letsencrypt No internal home.local route — external-only. Containers Container Image Role reitti-app dedicatedcode/reitti:latest Core Java application reitti-postgis postgis/postgis:17-3.5-alpine Spatial database (PostgreSQL 17 + PostGIS 3.5) reitti-redis redis:7-alpine Cache and session store reitti-rabbitmq rabbitmq:3-management-alpine Message queue for async jobs reitti-tiles nginx:alpine Map tile caching proxy reitti-photon rtuszik/photon-docker:1.3.0 Local geocoding (Nominatim-based) reitti-app The main Spring Boot application serving the Reitti web UI and REST API. Ingests location data via the OwnTracks-compatible endpoint used by swarm-reitti-bridge. Key environment variables: Variable Value / Notes POSTGIS_HOST postgis POSTGIS_PORT 5432 POSTGIS_DB reittidb POSTGIS_USER reitti POSTGIS_PASSWORD REDACTED REDIS_HOST redis REDIS_PORT 6379 RABBITMQ_HOST rabbitmq RABBITMQ_PORT 5672 RABBITMQ_USER reitti RABBITMQ_PASSWORD REDACTED PHOTON_BASE_URL http://photon:2322 Volumes: Volume / Mount Container Path Purpose Docker volume reitti_reitti-data /data Application data and uploads Traefik labels: traefik.http.routers.reitti.rule: Host(`reitti.jeeves5454.ddns.net`) traefik.http.routers.reitti.entrypoints: websecure traefik.http.routers.reitti.tls.certresolver: letsencrypt traefik.http.services.reitti.loadbalancer.server.port: 8080 reitti-postgis PostgreSQL 17 with PostGIS 3.5 spatial extension. Stores all GPS track data, waypoints, and geospatial indices. Image: postgis/postgis:17-3.5-alpine Variable Value POSTGRES_USER reitti POSTGRES_DB reittidb POSTGRES_PASSWORD REDACTED Volumes: Volume Container Path reitti_postgis-data (named) /var/lib/postgresql/data reitti-redis Redis 7 (Alpine) — used for caching and session management. Image: redis:7-alpine Volumes: Volume Container Path reitti_redis-data (named) /data No authentication configured — network-isolated to the Reitti internal stack network. reitti-rabbitmq RabbitMQ 3 with management plugin. Handles async processing of imported tracks and location events. Image: rabbitmq:3-management-alpine Variable Value RABBITMQ_DEFAULT_USER reitti RABBITMQ_DEFAULT_PASS REDACTED Volumes: Volume Container Path reitti_rabbitmq-data (named) /var/lib/rabbitmq RabbitMQ management UI is available internally on port 15672 (not exposed via Traefik). reitti-tiles NGINX-based map tile proxy/cache. Serves map tiles from upstream tile providers with local caching to reduce external requests. Image: nginx:alpine (NGINX 1.29.8) Variable Value NGINX_CACHE_SIZE 1g No persistent volumes — tile cache is in-memory. No external Traefik route. reitti-photon Local geocoding service using the Photon engine (Nominatim/OSM-based). Configured for the ca (Canada) region with parallel update strategy. Image: rtuszik/photon-docker:1.3.0 Variable Value REGION ca UPDATE_STRATEGY PARALLEL Volumes: Volume Container Path reitti_photon-data (named) /photon/data The photon data volume holds the downloaded Nominatim extract for the CA region. It can be large (several GB); allow time for the initial data download on first start. Data Flow GPS device / OwnTracks → Reitti OwnTracks ingest API Foursquare/Swarm check-ins → swarm-reitti-bridge → Reitti OwnTracks ingest API ↓ reitti-app (Spring Boot) ↓ RabbitMQ (async processing) ↓ PostGIS (spatial storage) ↓ Redis (cache) + Photon (geocoding) ↓ Web UI / Map tiles Notes / Gotchas All named Docker volumes ( reitti_reitti-data, reitti_postgis-data, reitti_redis-data, reitti_rabbitmq-data, reitti_photon-data) must be included in any backup strategy — none are bind-mounted to host paths. PostGIS 17 requires spatial extensions to be enabled in the database on first run — dedicatedcode/reitti:latest handles this automatically on startup. The Photon geocoding data download is region-specific ( REGION: ca). If geocoding stops working after a restart, check that the photon data volume is intact and the photon container started successfully. RabbitMQ management UI (port 15672) is available inside the Docker network but is not exposed externally. Access via docker exec or Portainer console if needed. Check-in data from Foursquare/Swarm flows through swarm-reitti-bridge (see next page). Reitti itself has no Foursquare integration — the bridge translates and delivers data via the OwnTracks ingestion endpoint. Last Updated: 2026-06-17