Manual Docker Setup
You can install wanderer components either via Docker (Quick Setup or Manual Setup) or from source.
Prerequisites
Section titled “Prerequisites”wanderer uses several secrets for database access, to encrypt passwords, private keys, and to secure communication. The secrets are: MEILI_MASTER_KEY, POCKETBASE_ENCRYPTION_KEY and POCKETBASE_PROXY_SECRET. You need to generate these secrets. For example using:
# MEILI_MASTER_KEY and POCKETBASE_PROXY_SECRET (one each)openssl rand -hex 32# Example output: 1e85a99427bd2543aacc24c99419183756eaeccd0e3485c9ac2ac2ab110e72f1
# POCKETBASE_ENCRYPTION_KEY (must be exactly 32 characters)openssl rand -hex 16# Example output: ce7f0ddb97100c42e6409a8537c11e23After cloning the repository, you will find a docker-compose.yml file in the root directory. This file sets up all necessary components. Update the secrets in your copy, then start everything by running:
docker compose up -dConfiguration Notes
Section titled “Configuration Notes”If you’re not hosting wanderer at http://localhost:3000, update the ORIGIN environment variable accordingly:
ORIGIN=http(s)://<your_domain>:<your_port>If this is not set correctly, you may encounter CORS-related issues.
Docker Compose Overview
Section titled “Docker Compose Overview”Here’s a minimal docker-compose.yml example with explanations:
version: '3'
x-common-env: &cenv MEILI_URL: http://search:7700 MEILI_MASTER_KEY: <YOUR_MEILI_KEY_HERE>
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: <YOUR_ENCRYPTION_KEY_HERE> POCKETBASE_PROXY_SECRET: <YOUR_PROXY_KEY_HERE> ORIGIN: http://localhost:3000 ports: - "127.0.0.1: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: ${BODY_SIZE_LIMIT:-2G} POCKETBASE_PROXY_SECRET: <YOUR_PROXY_KEY_HERE> 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 # Optional: trust private CAs for server-side API calls # NODE_EXTRA_CA_CERTS: /etc/ssl/private-ca/ca.pem volumes: - ./data/uploads:/app/uploads # - ./certs/ca.pem:/etc/ssl/private-ca/ca.pem:ro # - ./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
networks: wanderer: driver: bridgeNetworking
Section titled “Networking”All services must be part of the same Docker network. This is handled by the default wanderer network in the configuration above.
Make sure to set the ORIGIN environment variable to the full public URL (including port) where your instance is reachable. If misconfigured, the frontend will show this error:
Cross-site POST form submissions are forbidden
Volumes
Section titled “Volumes”By default, four volumes are mounted:
- Meilisearch index data:
./data/data.ms - PocketBase data:
./data/pb_data - Installed plugins:
./data/plugins - Uploads:
./data/uploads
These can be changed to bind mounts or other volume strategies if needed.
Environment
Section titled “Environment”The default Docker configuration defines all necessary environment variables. You can extend or override them as needed. For advanced options, refer to the environment configuration documentation.
Updating
Section titled “Updating”To update your instance to the latest version:
docker compose pulldocker compose up -dAlways consult the changelog before updating, in case of breaking changes.
Verify the Installation
Section titled “Verify the Installation”Regardless of the installation method, once everything is running you should be able to access wanderer at:
http://localhost:3000If you see the UI and no errors in the logs, you’re all set!