# Quadlet unit: Copyparty file server (rootless, boot-persistent). # # Install path on dankserver: ~/.config/containers/systemd/copyparty.container # Unit name: copyparty.service (podman 5.x drops the container- prefix) # # The image's default entrypoint is /bin/ash /z/cpp.sh -c /z/initcfg; the # Command= line below reproduces the compose-era argv exactly: the admin # account is passed as -a :. ${COPAY_ACCOUNT} and # ${COPAY_PASSWORD} are expanded by systemd at ExecStart time from the # host-local env file /home/dank/Containers/copyparty/env (mode 0600). # This file holds no secrets. The deployer refuses to start this unit before # that env file exists, so a missing env file fails the unit instead of # creating an admin account with a garbage password. # # /w is the entropy volume, mounted read-only: nothing writes into /mnt/entropy # anymore; every consumer of the share is a read-only client. [Unit] Description=Copyparty file server container After=network.target [Container] ContainerName=copyparty # Digest-pinned: upstream stopped publishing version tags after 1.19.15, so # the pin rides :latest@digest (the tag in the reference is cosmetic; the # digest is the pull). Pinned 2026-10-21 at the build whose label is # 1.20.26 - closes GHSA-3c88-p299-7hvr (1.20.25) and GHSA-hg99-jqfp-rf76 # (1.20.26); the previously running build was the rolling :latest at # 1.20.24 (issue #73 on command-center). Image=ghcr.io/9001/copyparty-ac:latest@sha256:7f77459160a4bf34fdca79f2965dff4f0c1d7069a3d9cdfb3632acb041dd2f6a Network=dankserver_appnet EnvironmentFile=/home/dank/Containers/copyparty/env Exec=-a ${COPAY_ACCOUNT}:${COPAY_PASSWORD} -v /w::r:ra,dank Volume=/mnt/entropy:/w:ro Volume=/home/dank/Containers/copyparty/cfg:/cfg PublishPort=3923:3923 [Service] EnvironmentFile=/home/dank/Containers/copyparty/env Restart=always RestartSec=5 [Install] WantedBy=default.target