On any Docker host (Linux / macOS / Windows WSL), start with one command. The image is a self-contained official build (frontend + full backend, multi-arch amd64/arm64); data lives in a named volume.
Bashmkdir -p ~/bestnav && cd ~/bestnav
curl -fsSL https://nav.bestu.top/docker-compose-en.yml -o docker-compose.yml
docker compose up -d
The image is versioned and self-contained — no local binaries needed. This English page pulls from Docker Hub; mainland-China users should switch to the Chinese page for the Tencent TCR source file (docker-compose.yml). Upgrade with docker compose pull && docker compose up -d.
The Docker container-management card is disabled by default (one less helper container). To enable it, replace the official template with the full compose below: a built-in read-only proxy allows only container list/start/stop — docker.sock is never mounted into BestNav.
After replacing, run docker compose up -d to recreate (data is kept); the card connects within ~15 seconds. To disable, remove the socket-proxy service plus the DOCKER_HOST and depends_on lines.
Data lives in the named volume bestnav_data (mounted at /app/data: local JSON + file-search SQLite index), safe across upgrades
Default port 10788 (container always listens on 3000, mapped via ports)
Open http://:10788 after start
Environment Variables
Customize the deployment via env vars (in compose environment or a .env file):
Bash# Host port: edit the compose ports mapping (e.g. "8080:3000"); the container always listens on 3000
PUBLIC_URL=https://nav.example.com
TZ=Asia/Shanghai
Synology DSM
Open Container Manager → Project → Create, import docker-compose.yml (official self-contained image, no local binaries), or follow the download-page command.
Use bridged network with a fixed port 10788
Mount volume to /volume1/docker/bestnav
Configure domain & cert via External Access for HTTPS
fnOS
Install from fnOS App Center in one click, or run the Docker Compose command above via terminal, then open it in My Apps.
FygoOS (fnOS international)
FygoOS is the international edition of fnOS. It installs exactly like fnOS (fpk package + systemd service) but needs the dedicated intl package: use the "Download FPK (FygoOS)" button on the download page, or grab bestnav-intl-*.fpk from the archive.
Both editions ship identical features — the only difference is the distribution flag injected at build time (used for regional display and international payments). Upgrading works the same as fnOS: upload the new fpk in App Center and your data is preserved.
Other NAS (Unraid / TrueNAS / QNAP)
Deploy with the same Docker Compose above: Unraid via Docker Compose/template, TrueNAS Scale via Custom App, QNAP via Container Station or SSH. Bind a fixed port and a data volume after deploy.
QNAP
On QNAP, deploy via Container Station by importing docker-compose.yml, or run the Docker Compose command over SSH. Mount the data volume to /share/Container/bestnav for easy management.
Container Station → Applications → Create → Import YAML
Fix port 10788 and allow it in Network & Virtual Switch
Reuse the env vars and reverse proxy above for HTTPS
ZSpace
ZSpace also deploys via Docker: import docker-compose.yml in App Center → Docker, or run the command over SSH. Great for home media and self-hosted nav — mount the data volume to the Docker shared folder and start.
App Center → Docker → Import compose file
Mount volume to /mnt/zspace/docker/bestnav
Open http://:10788 after start
Reverse Proxy & HTTPS
For production, put BestNav behind Nginx / Caddy with HTTPS. Caddy example (auto TLS):