docs: require hardlink-safe route mount topology
This commit is contained in:
@@ -13,10 +13,35 @@ initial x1/x2/lithium topology.
|
||||
`archive_control_token`, `qb_password`, and `syncthing_api_key`, each a
|
||||
regular non-empty file with mode `0600`.
|
||||
|
||||
The Syncthing mounts intentionally reproduce each instance's `/var/syncthing`
|
||||
layout, including nested data binds. This lets route discovery and route
|
||||
provisioning use one safe API-to-local path mapping without altering an
|
||||
existing Syncthing configuration.
|
||||
## Hardlink-safe bind-mount topology
|
||||
|
||||
For an archive source, the qB content path and every Syncthing route used for
|
||||
staging must resolve through the **same container mount**. Matching host
|
||||
filesystem device IDs alone is insufficient: two separate Docker bind mounts
|
||||
have different mount IDs and `link(2)` may return `EXDEV` across them. The
|
||||
client deliberately treats that case as copy-only and performs a full payload
|
||||
free-space check.
|
||||
|
||||
When a Syncthing route is physically nested below the qB root, mount the qB
|
||||
root once and map the exact Syncthing API folder through it:
|
||||
|
||||
```yaml
|
||||
volumes:
|
||||
- /srv/downloads:/data/qb
|
||||
- /srv/syncthing-config:/data/sync
|
||||
```
|
||||
|
||||
```toml
|
||||
[syncthing]
|
||||
api_root = "/var/syncthing"
|
||||
local_root = "/data/sync"
|
||||
local_path_overrides = { "/var/syncthing/DownloadsSync-X2" = "/data/qb/Sync" }
|
||||
```
|
||||
|
||||
Do **not** additionally mount `/srv/downloads/Sync` at a path beneath
|
||||
`/data/sync`. The override is the authoritative mapping for that folder and
|
||||
keeps qB source files and staging destinations in one mount namespace. Use
|
||||
the folder ID returned by Syncthing's configuration as the override key.
|
||||
|
||||
Before starting a stack, validate it with:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user