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 encrypted secrets such as passwords and private keys. To support this, you must set an encryption key using the POCKETBASE_ENCRYPTION_KEY environment variable. You can generate one using:
openssl rand -hex 16# Example output: ce7f0ddb97100c42e6409a8537c11e23Once you have set the encryption key, you can proceed to install wanderer.
After cloning the repository, you will find a docker-compose.yml file in the root directory. This file sets up all necessary components. 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: vODkljPcfFANYNepCHyDyGjzAMPcdHnrb6X5KyXQPWo
services: search: container_name: wanderer-search image: getmeili/meilisearch:v1.11.3 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> ORIGIN: http://localhost:3000 ports: - "8090:8090" networks: - wanderer restart: unless-stopped volumes: - ./data/pb_data:/pb_data 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 PUBLIC_POCKETBASE_URL: http://db:8090 PUBLIC_DISABLE_SIGNUP: "false" UPLOAD_FOLDER: /app/uploads UPLOAD_USER: UPLOAD_PASSWORD: PUBLIC_OVERPASS_API_URL: https://overpass-api.de PUBLIC_VALHALLA_URL: https://valhalla1.openstreetmap.de PUBLIC_NOMINATIM_URL: https://nominatim.openstreetmap.org 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
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, two volumes are mounted:
- Meilisearch index data:
./data/data.ms - PocketBase data:
./data/pb_data
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!