Files
2026-08-28 14:59:35 +02:00

49 lines
1.8 KiB
YAML

services:
copyparty:
# Variants differ by what's bundled: `min` is the bare server, `ac` adds
# ffmpeg for thumbnails and media tags, `iv`/`dj` add more. `ac` is the
# sensible default and what the config's e2ts flag needs.
image: copyparty/ac:1.20.21
container_name: copyparty
restart: unless-stopped
# Runs as root unless told otherwise. It reads no PUID/PGID.
user: "${PUID:-1000}:${PGID:-1000}"
# The thumbnailer gets ~10s to finish after the stop signal.
stop_grace_period: 15s
environment:
- TZ=${TZ:-Etc/UTC}
# Keeps log lines from being buffered.
- PYTHONUNBUFFERED=1
# Without this, copyparty cannot write its config dir (/cfg is read-only)
# and falls back to /tmp -- which silently regenerates the filekeys behind
# every share link on each restart.
- XDG_CONFIG_HOME=/data
# Replace NOPE with 2 to enable mimalloc: faster, roughly double the RAM.
- LD_PRELOAD=/usr/lib/libmimalloc-secure.so.NOPE
# Accounts live here, not in the committed config file. The name must match
# the one in init/copyparty.conf's `accs:` block.
command: ["-a", "${CP_USER:-admin}:${CP_PASSWORD:?set a password - the config grants access to this account only}"]
volumes:
- ./init:/cfg:ro
# Index, thumbnails and copyparty's own config dir. Back this up.
- ${DATA_PATH:-./data}:/data
# What you're sharing. Add `:ro` for a download-only server.
- "${SHARE_PATH:?set SHARE_PATH to the directory you want to share}:/w"
ports:
- "${PORT:-3923}:3923"
healthcheck:
# The "/._" suffix matches copyparty's default log filter, so the probe
# doesn't fill the log.
test: ["CMD-SHELL", "wget --spider -q 127.0.0.1:3923/?reset=/._"]
interval: 1m
timeout: 2s
retries: 5
start_period: 15s