Wanderer
Trail database for saving and sharing routes and hikes.
- Replaces
-
Paid trail map services, such as AllTrails.
All open-source alternatives to AllTrails
- Difficulty
-
Difficulty: Medium
3 services (1 database or broker: meilisearch), 4 volume mounts, 2 env values to set, no elevated host access. Heuristic score 5 of 11: medium.
- Stack
Go (language)
- Deployment
docker_compose
- Requirements
Not stated.
- License
-
AGPL-3.0(OSI-approved open source)Read from github.com/open-wanderer/wanderer/blob/298d336/LICENSE
- Business model
-
Unknown
The README at the pinned commit does not state a business model, so it stays unknown.
Source: github.com/open-wanderer/wanderer/blob/298d336/README.md, read on .
- Repository
GitHub stats
- Stars
- 4,014
- Forks
- 201
- Open issues and pull requests
- 92
- Last push
- 2026-10-21
- Latest release
- v0.21.0
- Released
- 2026-09-28
From the GitHub API on . These numbers are a snapshot, not live. GitHub detected the license as AGPL-3.0.
Compose file
version: '3'
x-common-env: &cenv
MEILI_URL: http://search:7700
MEILI_MASTER_KEY: vODkljPcfFANYNepCHyDyGjzAMPcdHnrb6X5KyXQPWo
services:
search:
container_name: wanderer-search
image: getmeili/meilisearch:v1.36.0
environment:
<<: *cenv
MEILI_NO_ANALYTICS: "true"
ports:
- 7700:7700
networks:
- wanderer
volumes:
- ./data/data.ms:/meili_data/data.ms
restart: unless-stopped
healthcheck:
test: curl --fail http://localhost:7700/health || exit 1
interval: 15s
retries: 10
start_period: 20s
timeout: 10s
db:
container_name: wanderer-db
image: flomp/wanderer-db
depends_on:
search:
condition: service_healthy
environment:
<<: *cenv
POCKETBASE_ENCRYPTION_KEY: fde406459dc1f6ca6f348e1f44a9a2af
POCKETBASE_PROXY_SECRET: dev-proxy-secret-change-me
ORIGIN: http://localhost:3000
ports:
- "8090:8090"
networks:
- wanderer
restart: unless-stopped
volumes:
- ./data/pb_data:/pb_data
- ./data/plugins:/data/plugins
healthcheck:
test: ["CMD", "/curl", "--fail", "http://localhost:8090/health"]
interval: 15s
retries: 10
start_period: 20s
timeout: 10s
web:
container_name: wanderer-web
image: flomp/wanderer-web
depends_on:
search:
condition: service_healthy
db:
condition: service_healthy
environment:
<<: *cenv
ORIGIN: http://localhost:3000
BODY_SIZE_LIMIT: Infinity
POCKETBASE_PROXY_SECRET: dev-proxy-secret-change-me
PUBLIC_POCKETBASE_URL: http://db:8090
PUBLIC_DISABLE_SIGNUP: "false"
UPLOAD_FOLDER: /app/uploads
UPLOAD_USER:
UPLOAD_PASSWORD:
OVERPASS_API_URL: https://overpass-api.de
VALHALLA_URL: https://valhalla1.openstreetmap.de
NOMINATIM_URL: https://nominatim.openstreetmap.org
PUBLIC_MAP_MAX_POLYLINES: 100
volumes:
- ./data/uploads:/app/uploads
# - ./data/about.md:/app/build/client/md/about.md
ports:
- "3000:3000"
networks:
- wanderer
restart: unless-stopped
healthcheck:
test: ["CMD", "curl", "--fail", "http://localhost:3000/"]
interval: 15s
retries: 10
start_period: 20s
timeout: 10s
# valhalla:
# image: ghcr.io/gis-ops/docker-valhalla/valhalla:latest
# ports:
# - "8002:8002"
# volumes:
# - ./data/valhalla:/custom_files
# environment:
# - tile_urls=https://download.geofabrik.de/europe/germany/bayern/oberbayern-latest.osm.pbf
# - use_tiles_ignore_pbf=True
# - force_rebuild=False
# - force_rebuild_elevation=False
# - build_elevation=True
# - build_admins=True
# - build_time_zones=True
networks:
wanderer:
driver: bridge
From the app's own repository: github.com/open-wanderer/wanderer/blob/298d336/docker-compose.yml.
Compose file from the app repository.
Install
- Docker with the Compose plugin (github.com/open-wanderer/wanderer/blob/298d336/docker-compose.yml)
A host with Docker and the Docker Compose plugin. This entry runs from a compose file.
- Save the compose file as docker-compose.yml (github.com/open-wanderer/wanderer/blob/298d336/docker-compose.yml)
Use the compose file shown above.
- Set the values the compose file needs (github.com/open-wanderer/wanderer/blob/298d336/docker-compose.yml)
These variables have no default in the compose file: UPLOAD_PASSWORD, UPLOAD_USER. Compose reads them from the shell or from a .env file next to the compose file. Replace the placeholder values listed under Gotchas.
- Start it (github.com/open-wanderer/wanderer/blob/298d336/docker-compose.yml)
docker compose up -d - Open the app (github.com/open-wanderer/wanderer/blob/298d336/docker-compose.yml)
Open http://localhost:3000. The compose file publishes host port 3000 for the web service.
Compose file check: config_ok on 2026-10-22.
Gotchas and maintenance
Gotchas
- Some images use the latest tag or no tag. Images without a pinned version: db: flomp/wanderer-db (no tag), web: flomp/wanderer-web (no tag). A later pull can get a different version. (github.com/open-wanderer/wanderer/blob/298d336/docker-compose.yml, checked 2026-10-22)
- The compose file has placeholder values. Placeholder values: POCKETBASE_PROXY_SECRET is "dev-proxy-secret-change-me" (db), POCKETBASE_PROXY_SECRET is "dev-proxy-secret-change-me" (web). (github.com/open-wanderer/wanderer/blob/298d336/docker-compose.yml, checked 2026-10-22)
- The compose file publishes host ports. Host ports: 7700 (search), 8090 (db), 3000 (web). A port without a host address listens on all host network interfaces. (github.com/open-wanderer/wanderer/blob/298d336/docker-compose.yml, checked 2026-10-22)
- The compose file mounts host folders. Host paths mounted into containers: ./data/data.ms at /meili_data/data.ms (search), ./data/pb_data at /pb_data (db), ./data/plugins at /data/plugins (db), ./data/uploads at /app/uploads (web). (github.com/open-wanderer/wanderer/blob/298d336/docker-compose.yml, checked 2026-10-22)
Signals
- Open issues and pull requests: 92
- Last push: 2026-10-21 (0 days before this page was built)
- Latest release: v0.21.0 on 2026-09-28 (23 days before this page was built)