Your road data.
Your place to host it.

You don’t need a server to use You’re Flocked. But if you’d rather serve the road data yourself, everything you need is in the same repository as the app.

Files, not your routes.

The tile server builds downloadable road-data packs. Your phone downloads a region, then calculates routes locally. The server doesn’t need to know where you’re starting or where you’re going.

Build road dataHost region packsRoute on your phone

Start small.

You’ll need Docker with Compose and enough space to build the regions you want. Pick a single state for your first run rather than the whole country.

  • Memory: two build threads need roughly 5 GB of RAM.
  • Disk: a single state can take a few GB of scratch space. A full US build can peak around 250 GB and leave roughly 45 GB of finished data.
  • Time: expect minutes for a small build and hours for a national one. These are estimates, not guarantees.
  • Coverage: the supplied catalog covers the 50 US states and DC.

The published image supports both x86-64 and ARM64. It includes the builder, public tile endpoint, and Valhalla tools.

Bring up the server.

Save the downloaded file as compose.yml in an empty directory. It keeps the builder on localhost and uses separate persistent volumes for private build data and public packs.

View the Compose file
compose.yml
services:
  server:
    image: ghcr.io/flckdapp/flckd/server:latest
    restart: unless-stopped
    ports:
      - "127.0.0.1:8642:8642"
      - "8080:8080"
    volumes:
      - data:/data
      - site:/site
    stop_grace_period: 30s
    cap_drop: [ALL]
    security_opt: [no-new-privileges:true]
    healthcheck:
      test: [CMD-SHELL, "curl -fsS http://127.0.0.1:8080/health && curl -fsS http://127.0.0.1:8642/health"]
      interval: 5s
      timeout: 3s
      retries: 12
volumes:
  data:
  site:
Start the server
docker compose up -d

Keep the builder private. Port 8642 has no login. Don’t expose it to the internet. Port 8080 is the public tile endpoint. For a remote machine, reach the builder with SSH port forwarding.

Optional SSH tunnel
ssh -L 8642:127.0.0.1:8642 user@your-server

Then open http://localhost:8642 in your browser. The public index is at http://localhost:8080, but it won’t have packs until a build finishes.

Pick a region. Build a pack.

In the builder, choose the states you want, save your settings, and select Build now. You can set a schedule later. Starting the container alone does not start a build.

Keep both volumes. They hold your settings, build data, and published files. A normal docker compose down preserves them; adding -v deletes them.

For public use, put the tile endpoint behind HTTPS. Keep byte-range downloads working and don’t enable compression for the binary pack files.

Point the app at your server.

  1. Open Settings → Offline Routing in the app.
  2. Under Tile Server, enter your public HTTPS base URL.
  3. Tap Check Server to load your catalog.
  4. Download a region. Routes will still be calculated on your phone.

Your phone needs to be able to reach that URL. A private instance over Tailscale is another option if the server is only for your own devices.

You don’t have to leave the builder running.

The output is ordinary static files. Publish them to Cloudflare R2, S3, or compatible storage from the builder, or serve the generated directory with an independent web server.

To serve existing packs from the Docker image without the builder, use BUILDER_ENABLED=false and mount only the public site volume read-only. The full guide covers bucket credentials, schedules, environment settings, and standalone hosting.

Continue with the server docs