docs(dankserver): copyparty doc matches the ac edition's real interface
The page claimed an env-var interface (COPAY_PASS/COPAY_MODE) and a /data volume convention that this image does not implement: the ac edition consumes accounts and volumes as argv flags (-a USER:PASS, -v SRC:DST:PERMS), serves the LUKS array at /w, and answers HTTP 500 with its own error page when zero volumes are configured. Image ref corrected to copyparty-ac (bare latest tag does not exist on ghcr).
This commit is contained in:
@@ -9,7 +9,7 @@ Copyparty is a lightweight file server and media streamer that runs as a single
|
||||
| Item | Value |
|
||||
|------|-------|
|
||||
| Latest version | v1.20.21 (2026-08) |
|
||||
| Image | `ghcr.io/9001/copyparty:latest` (official Dockerfile in repo) |
|
||||
| Image | `ghcr.io/9001/copyparty-ac:latest` (ac = full edition; the bare `copyparty:latest` tag does not exist — ghcr answers 403 on the token request for nonexistent repos) |
|
||||
| Port | 3923 (host) → 3923 (container) |
|
||||
| Volume | bind mount the shared root directory |
|
||||
| Auth | Per-directory `.cpy` config files, HTTP basic auth, `dirkeys`, `filekeys` |
|
||||
@@ -18,12 +18,20 @@ Copyparty is a lightweight file server and media streamer that runs as a single
|
||||
|
||||
## Configuration
|
||||
|
||||
### Environment Variables
|
||||
### Command-line interface (ac edition)
|
||||
|
||||
| Variable | Description |
|
||||
|----------|-------------|
|
||||
| `COPAY_PASS` | Master password for the web UI |
|
||||
| `COPAY_MODE` | Set to `rw` for read-write shares |
|
||||
The ac edition's entrypoint is `/bin/ash /z/cpp.sh -c /z/initcfg` — it parses
|
||||
a config file, then `exec`s `python3 -m copyparty "$@"`, so accounts and
|
||||
volumes are passed as **argv flags**, not env vars. `COPAY_PASS`/`COPAY_MODE`
|
||||
envs are *not* consumed by this image (zero `COPAY_` references in the
|
||||
package). The deployed interface:
|
||||
|
||||
```
|
||||
command: ["-a", "dank:${COPAY_PASS}", "-v", "/w::A"]
|
||||
```
|
||||
|
||||
`-a` takes `USER:PASS`; `-v` takes `SRC:DST:PERMS:FLAGS` — here volume `/w`
|
||||
with the `A` ("all") flag for the `dank` account, nothing for anonymous.
|
||||
|
||||
### Configuration File Options
|
||||
|
||||
@@ -47,9 +55,11 @@ The `iv` edition is no longer available for arm32/armv6. Use `dj` for maximum co
|
||||
|
||||
## Volumes
|
||||
|
||||
| Container path | Host path (convention) |
|
||||
|----------------|------------------------|
|
||||
| `/data` | `/opt/copyparty/data` |
|
||||
Live deployment (2026-08-29): the whole LUKS array is served at URL root `/w`
|
||||
via the `-v /w::A` flag — account `dank` holds the `A` (all) flag, anonymous
|
||||
gets nothing. The compose bind mount is
|
||||
`/mnt/entropy:/w` (host path → container path); the ac edition serves its
|
||||
volume roots from argv, not from a `/data` convention.
|
||||
|
||||
## Docker Compose
|
||||
|
||||
@@ -95,6 +105,11 @@ Upgrade to v1.20.19+ to cover all known CVEs. The dirkey fix (v1.20.17) matters
|
||||
|
||||
- **Large transfers:** Disable TLS inside the app and let Caddy terminate TLS. This avoids double encryption overhead.
|
||||
- **Dedicated share directory:** Do not give Copyparty the whole disk. Mount only the intended share path.
|
||||
- **Whole-disk share (live choice):** this deployment *does* serve the whole
|
||||
91 T array (`-v /w::A`). Safe only because anonymous gets zero permissions —
|
||||
every request authenticates against the `dank` account first, and Caddy +
|
||||
Anubis + authentik sit in front (see [[Anubis]], [[Authentik]]). Strip the
|
||||
`A` flag or drop the account and the array becomes world-writable again.
|
||||
- **Upload tokens scoped per folder:** Prevents accidental global write access.
|
||||
- **CSP nonces (v1.20.17+):** Security hardening for JavaScript execution. May break third-party JS plugins (`--js-browser` / `--html-head`).
|
||||
- **Custom thumbnail extractors (v1.20.19+):** New `thumbex` framework. Requires configuration in `initcfg`.
|
||||
|
||||
Reference in New Issue
Block a user