copyparty/scripts/docker
2023-12-14 10:47:52 +00:00
..
devnotes.md build docker for x32 aarch64 armhf ppc64 s390x 2023-02-18 23:04:55 +00:00
Dockerfile.ac docker: persist autogenerated seeds, disable certgen, and 2023-08-15 15:07:33 +00:00
Dockerfile.dj v1.9.7 2023-09-30 23:32:51 +00:00
Dockerfile.djd docker: exploring alternative base images for performance 2023-09-24 22:26:51 +00:00
Dockerfile.djf v1.9.7 2023-09-30 23:32:51 +00:00
Dockerfile.djff v1.9.7 2023-09-30 23:32:51 +00:00
Dockerfile.dju docker: exploring alternative base images for performance 2023-09-24 22:26:51 +00:00
Dockerfile.im docker: persist autogenerated seeds, disable certgen, and 2023-08-15 15:07:33 +00:00
Dockerfile.iv v1.9.7 2023-09-30 23:32:51 +00:00
Dockerfile.min docker: persist autogenerated seeds, disable certgen, and 2023-08-15 15:07:33 +00:00
Dockerfile.min.pip v1.9.7 2023-09-30 23:32:51 +00:00
make.sh update pkgs to 1.9.16 2023-11-04 23:30:07 +00:00
Makefile docker: add annotations 2023-02-11 21:10:28 +00:00
README.md cleanup 2023-12-14 10:47:52 +00:00

copyparty is availabe in these repos:

getting started

run this command to grab the latest copyparty image and start it:

docker run --rm -it -u 1000 -p 3923:3923 -v /mnt/nas:/w -v $PWD/cfgdir:/cfg copyparty/ac
  • /w is the path inside the container that gets shared by default, so mount one or more folders to share below there
  • /cfg is an optional folder with zero or more config files (*.conf) to load
  • copyparty/ac is the recommended image edition
  • you can download the image from github instead by replacing copyparty/ac with ghcr.io/9001/copyparty-ac
  • if you are using rootless podman, remove -u 1000
  • if you have selinux, append :z to all -v args (for example -v /mnt/nas:/w:z)

this example is also available as a podman-compatible docker-compose yaml; example usage: docker-compose up (you may need to systemctl enable --now podman.socket or similar)

i'm not very familiar with containers, so let me know if this section could be better 🙏

configuration

this section basically explains how the docker-compose yaml works, so you may look there instead

the container has the same default config as the sfx and the pypi module, meaning it will listen on port 3923 and share the "current folder" (/w inside the container) as read-write for anyone

the recommended way to configure copyparty inside a container is to mount a folder which has one or more config files inside; -v /your/config/folder:/cfg

  • but you can also provide arguments to the docker command if you prefer that
  • config files must be named something.conf to get picked up

editions

with image size after installation and when gzipped

  • min (57 MiB, 20 gz) is just copyparty itself
  • im (70 MiB, 25 gz) can thumbnail images with pillow, parse media files with mutagen
  • ac (163 MiB, 56 gz) is im plus ffmpeg for video/audio thumbs + audio transcoding + better tags
  • iv (211 MiB, 73 gz) is ac plus vips for faster heif / avic / jxl thumbnails
  • dj (309 MiB, 104 gz) is iv plus beatroot/keyfinder to detect musical keys and bpm

ac is recommended since the additional features available in iv and dj are rarely useful

most editions support x86, x86_64, armhf, aarch64, ppc64le, s390x

  • dj doesn't run on ppc64le, s390x, armhf
  • iv doesn't run on ppc64le, s390x

detecting bpm and musical key

the dj edition comes with keyfinder and beatroot which can be used to detect music bpm and musical keys

enable them globally in a config file:

[global]
e2dsa, e2ts  # enable filesystem indexing and multimedia indexing
mtp: .bpm=f,t30,/mtag/audio-bpm.py  # should take ~10sec
mtp: key=f,t190,/mtag/audio-key.py  # should take ~50sec

or enable them for just one volume,

[/music]  # share name / URL
  music   # filesystem path inside the docker volume `/w`
  flags:
    e2dsa, e2ts
    mtp: .bpm=f,t30,/mtag/audio-bpm.py
    mtp: key=f,t190,/mtag/audio-key.py

or using commandline arguments,

-e2dsa -e2ts -mtp .bpm=f,t30,/mtag/audio-bpm.py -mtp key=f,t190,/mtag/audio-key.py

build the images yourself

basically ./make.sh hclean pull img push but see devnotes.md