SELF-HOSTING
Run the BanditKin relay yourself, on a machine you control. Your circle keeps end-to-end encrypted location sharing and messaging, plus signed public map and routing data — and no BanditKin cloud subscription, ever.
You provide the hardware, electricity, Internet connection, storage, and any domain, VPN, or reverse proxy you choose. BanditKin provides the software.
WHAT CHANGES, WHAT DOESN'T
Self-hosting doesn't change how BanditKin protects you. It changes who owns the box.
Your phone encrypts circle information end to end before it leaves the device. The self-hosted relay stores and forwards opaque encrypted records. It does not receive your circle encryption key or readable location history.
Your circle key is created on your device and shared in person by QR scan. No relay — ours or yours — ever receives it.
The relay's job is to hold and pass along opaque encrypted records, so members who were offline still get them later.
Self-hosting keeps connection metadata on hardware you control rather than on a BanditKin server. See exactly what a relay can and can't see.
BEFORE YOU START
Self-hosting is free, but it isn't free of work. Here's the honest split.
The hardware, the electricity, the Internet connection and the storage. Docker. And an HTTPS address — plus any domain, VPN, or reverse proxy you choose in order to get one. You run the box, and you keep the backups.
The relay server, the installer, the updater and the self-host web interface — plus publisher-signed public map, routing, search, road, U-turn and reviewed ALPR data, delivered automatically. Free forever, with no subscription. Compare with cloud circles.
DOWNLOAD
Recommended for most people. The download is small; the installer fetches the exact signed container during setup.
BanditKin-SelfHost-Online-29680293.zip
SHA-256fd152dc0834da05ce369a98dcdbc75845f413b4994809a2cdd34c12c10419268
Signed container imageghcr.io/auditurbo2/banditkin-selfhost@sha256:fcd0175fa487a55f29ad269b942a67656086a35a22b2e7c0ab2070bc7e471074
OFFLINE AND ADVANCED
Each Offline package includes the complete BanditKin container image, so installation does not require a GHCR registry pull. It is not an air-gapped package: the first selected public-map and routing-data synchronization, and later public-data updates, still require outbound HTTPS access to maps.banditkin.com.
BanditKin-SelfHost-Offline-amd64-29680293.zip
SHA-256d5a5f847cc6df7234a373dbbf9a8450fe3a6fd91963787db5811ed37f86ed296
BanditKin-SelfHost-Offline-arm64-29680293.zip
SHA-2566fdd8b7c45b295a5a362bd072f872a2de1141d72629c58dcfcfa3e75a0a900a4
32-bit ARM systems are not supported. If you aren't sure which package you need, use the online installer above — it selects the right image for your machine automatically.
HOW IT WORKS
Docker runs the BanditKin containers. The included doctor.sh and doctor.ps1 scripts are read-only diagnostics that check the installation; they do not install, reconfigure, or delete anything. An HTTPS address is required for phones using the Google Play app.
STEP 1
Download and unzip the online installer above. Use an offline package only when the server cannot reach the Internet during setup. Keep the extracted release folder and its .env file for later updates or region changes.
STEP 2
Docker Desktop on Windows and macOS, Docker Engine on Linux, or the built-in container manager on Synology and QNAP.
STEP 3
From the extracted folder, run Windows: .\install.ps1 -Regions "connecticut,massachusetts". Linux/macOS: chmod +x install.sh doctor.sh, then ./install.sh connecticut,massachusetts. Replace the examples with the complete comma-separated region list you want. The catalog may display every U.S. region, but only your selected regions plus required shared routing files are downloaded. A first sync can be several GB.
STEP 4
Tailscale with HTTPS and MagicDNS, or a domain you control behind a maintained HTTPS reverse proxy.
STEP 5
On the relay computer, open http://127.0.0.1:<your-port>/app (or the relay HTTPS /app page). Under “First device on this self-host?”, enter the relay address the phone can reach and the BANDITKIN_ADMIN_TOKEN value from .env, create the QR code, then scan it in BanditKin. Later devices use the normal circle invite.
STEP 6
Leave Docker running while the updater retrieves signed data. To add or remove regions later, rerun the same installer from the same extracted release folder with the complete desired list. This preserves .env, the operator credential, and circle data. Run ./doctor.sh or .\doctor.ps1 in another terminal to check progress.
ALREADY RUNNING A RELAY?
Self-Host Server 2026.08.1 fixes self-hosted member pins that could jump backward or “leapfrog” when live and delayed encrypted location uploads arrived out of order. Delayed fixes remain available in encrypted history, but can no longer replace a newer live member location or roll live battery and stationary status backward. The same rule is enforced for both file-backed and PostgreSQL storage. Existing relay data and .env files remain compatible.
STEP 1
Unpack Self-Host Server 2026.08.1 into a new protected folder. Don't extract it over the release you're currently running.
STEP 2
Copy the running release's exact private .env file into the new folder.
STEP 3
Run update.ps1 on Windows, or update.sh on Linux and macOS.
Do not delete or regenerate your .env, and do not remove the banditkin_circle-data volume.
Recent Android improvements — client 0.2.43 (Build 295), delivered through the app's own in-app updater. Both reach BanditKin-hosted and self-hosted Android clients: they arrive with the app, not as a server package, container, or separate download.
Anonymous Online rerouting now uses the vehicle's current direction and a short maneuver-avoidance distance when calculating a new route. This helps the route continue forward from the road being traveled instead of pulling the driver back toward the old route. It is live for both BanditKin-hosted and self-hosted Android clients, because both use the same Anonymous Online routing service.
Improved location reliability when Google Play Services stops delivering location updates. BanditKin can temporarily use Android's alternate location source, avoids waking GPS during normal device idle, and automatically returns to the usual location source after it recovers.
SUPPORTED SYSTEMS
Anything that runs Docker on 64-bit Intel, AMD, or ARM hardware. The guide has step-by-step instructions for each of these.
With Docker Desktop, including Apple Silicon Macs.
Docker Engine on any modern 64-bit distribution.
64-bit Raspberry Pi OS on Pi hardware that supports it.
Through Container Manager, on x86-64 and ARM64 models.
Through Container Station.
For a supported Unraid deployment, run a small Debian or Ubuntu virtual machine and follow the Linux installation instructions. A community Compose manager is an advanced, unsupported alternative that is not maintained by BanditKin or Unraid.
In a VM or container guest running Docker.
32-bit ARM systems. Older Pi models and 32-bit operating systems can't run the image.
HOSTING AND RETENTION
Self-hosting hands you one real decision: whose hardware your relay lives on.
The relay runs wherever you choose — a private home server, a Raspberry Pi or NAS, a virtual machine, or a rented VPS. BanditKin does not choose or operate that host. A normal VPS is a private virtual server running on shared physical hardware; dedicated physical hosting is only used if you specifically purchase or supply it.
Your circle's content is encrypted end to end on the phones, so the relay only ever holds encrypted records. Current defaults for how long it holds them:
Persisted location history.
Messages, voice clips and events.
Support feedback.
Device and circle configuration.
Backups, server logs, disk encryption and infrastructure metadata are controlled by you and your hosting provider, and may carry their own separate retention policies. On a rented VPS, the provider may see account, IP and traffic metadata, plus the encrypted bytes — but not your decrypted circle content. For maximum infrastructure privacy, run the relay on hardware you personally control, with encrypted storage and encrypted backups.
HTTPS IS REQUIRED
The BanditKin app requires an HTTPS relay address. There are two well-trodden ways to get one.
Tailscale with HTTPS and MagicDNS gives the relay a valid certificate and keeps it reachable from your phone without opening a port on your router.
Point a domain you control at the relay and terminate HTTPS with Caddy, Nginx Proxy Manager, or another maintained HTTPS reverse proxy.
Do not expose unencrypted port 8090 directly to the Internet. Docker and HTTPS setup are genuinely required here — we'd rather tell you that up front than promise a one-click install and leave you on an open port.
SIGNED PUBLIC DATA
The installed updater checks BanditKin's publisher-signed catalog roughly every six hours and retrieves only the regions you selected.
The Ed25519 catalog signature, the generation number, the file size, the SHA-256 digest, and the expected data format — before anything is installed.
Maps, address search and geocoding, road information, offline routing grids, U-turn information, and reviewed public ALPR snapshots.
The updater has no access to your private circle-data volume. An interrupted or invalid update leaves the last known-good generation active.
Live catalog: maps.banditkin.com/v1/catalog.json · current public-data generation 2026080202. The catalog digest is listed in the release information below.
DOCUMENTATION
Covers Windows and macOS with Docker Desktop, Linux, Raspberry Pi, Synology DSM 7 Container Manager, QNAP Container Station, Unraid, Proxmox and other hypervisors, online and offline installation, HTTPS and remote access, pairing BanditKin, automatic public-data updates, backup and recovery, container updates, and troubleshooting.
All three formats are covered by SHA256SUMS.txt, along with every other file in the release — see Verify your download below.
SOURCE AND LICENSING
Corresponding source ships alongside every release, in the same folder as the installers.
The BanditKin self-host server, installer, updater, and included self-host web interface are licensed under AGPL-3.0-only. BanditKin trademarks, the Android app, managed hosted service, infrastructure, signing keys, production configuration, and private data pipeline are not included in the self-host source release.
BanditKin-SelfHost-Source-29680293.zip
SHA-256845e8735c093625a0eef5d6a727e3d1d2aa38ddaaa655966e2da3f4d86dc8ec6
VERIFY YOUR DOWNLOAD
Every release payload is covered by SHA256SUMS.txt and ships with its own Sigstore bundle. The two signed control files close the verification chain. Here’s how to confirm you got exactly what we published.
STEP 1
Hash the file you downloaded and compare it against SHA256SUMS.txt — and against the digests printed on this page.
STEP 2
Every file has a matching .sigstore.json bundle. Verify it with cosign against the identity and issuer below.
STEP 3
The SPDX SBOMs list every component inside each architecture's image; the vulnerability summaries record what scanners flagged, and why.
https://github.com/auditurbo2/banditkin-app/.github/workflows/sign-banditkin-release.yml@refs/tags/banditkin-selfhost-29680293-policy-payload
Expected issuerhttps://token.actions.githubusercontent.com
Verify a payload file (swap in any payload filename)cosign verify-blob --bundle BanditKin-SelfHost-Online-29680293.zip.sigstore.json --certificate-identity "https://github.com/auditurbo2/banditkin-app/.github/workflows/sign-banditkin-release.yml@refs/tags/banditkin-selfhost-29680293-policy-payload" --certificate-oidc-issuer "https://token.actions.githubusercontent.com" BanditKin-SelfHost-Online-29680293.zip
Android client 0.2.43 (Build 295) — available through the in-app updater
Server release2026.08.1
Platformslinux/amd64 and linux/arm64
Container digestsha256:fcd0175fa487a55f29ad269b942a67656086a35a22b2e7c0ab2070bc7e471074
Public-data generation2026080202
Public-data catalog SHA-256365d28b970522135aafea75e2526db364bde20cf3d7a0a117cbb65e350099283
Container vulnerability summaries for this release report 0 critical findings and 3 high scanner matches. All three are documented as not affected — the implicated Python modules and execution paths are not used by BanditKin. The raw scanner output and the policy that classifies them are both below, so you can check that call yourself.
Payload files use the payload identity above. SHA256SUMS.txt and release-manifest.json use this control identity: https://github.com/auditurbo2/banditkin-app/.github/workflows/sign-banditkin-release.yml@refs/tags/banditkin-selfhost-29680293-policy-control. Every public file has a matching Sigstore bundle; SHA256SUMS.txt covers the payloads, their bundles, and release-manifest.json.
FAQ
Yes. Self-hosting the BanditKin relay is free forever — no subscription, and no device cap imposed by us. Cloud circles are the paid option: a 30-day full free trial with no card and no account, then $4.99/month, $39.99/year, or a one-time $99.99 for lifetime access, one plan for the whole circle. See pricing.
Yes. The relay is the server half. For the first phone, use the relay computer’s /app page to create the self-host QR code with the operator token, then scan it in BanditKin. Add later phones with the normal circle invite.
No. Your phone encrypts circle information end to end before it leaves the device. The self-hosted relay stores and forwards opaque encrypted records; it does not receive your circle encryption key or readable location history.
Anything 64-bit that runs Docker — a spare PC, a Linux server or VPS, a modern NAS, or a 64-bit Raspberry Pi. You provide the hardware, electricity, Internet connection and storage; 32-bit ARM systems are not supported.
Account, IP and traffic metadata, plus the encrypted bytes on disk — but not your decrypted circle content, because the circle key never leaves your phones. A normal VPS is a private virtual server on shared physical hardware; dedicated physical hosting applies only if you specifically purchase or supply it. Backups, server logs and disk encryption are controlled by you and your provider and may carry their own retention. For maximum infrastructure privacy, run the relay on hardware you personally control, with encrypted storage and encrypted backups.
The Google Play app requires a trusted HTTPS relay address. Tailscale with HTTPS/MagicDNS or your own domain behind a maintained reverse proxy works. The public / and /health routes expose only minimal service status; /app, /map, and /admin are static shells with no credentials or circle data, and their API calls remain authenticated. Keep /health reachable to phones. A VPN-only relay may keep every route private; do not apply a blanket LAN-only rule unless every phone always uses that VPN. Never expose unencrypted port 8090 directly to the Internet.
Not as a whole, and we won't claim otherwise. The self-host release is licensed AGPL-3.0-only and ships with its corresponding source. The Android app, managed hosted service, infrastructure, signing keys, production configuration and private data pipeline are not included in that release. Here's what is public, and what isn't.
Yes. The updater mirrors signed map, search, road, routing, U-turn, and reviewed public ALPR files only for the regions selected by the operator. A statewide map is intentionally coarse for through-travel and major roads; save the counties you need for detailed local streets, search, and navigation. In Anonymous Online mode, live traffic affects active routes and congestion is shown on the route line, not as a general traffic overlay.
Nothing breaks. An interrupted or invalid update leaves the last known-good generation active, and the updater has no access to your private circle-data volume.
Download the installer, follow the guide, and your circle's relay lives on hardware you control — free, forever.
Stuck? The guide's troubleshooting section covers the common cases first. If it doesn't, write to privacy@banditkin.com.