mirror of
https://github.com/9001/copyparty.git
synced 2025-08-17 09:02:15 -06:00
improve PKGBUILD based on stuff in https://github.com/9001/copyparty/issues/17
This commit is contained in:
parent
4de61defc9
commit
c4191de2e7
|
@ -1,39 +1,47 @@
|
||||||
# Maintainer: John Smith <devnull@need.moe>
|
# Maintainer: icxes <dev.null@need.moe>
|
||||||
pkgname=copyparty-git
|
pkgname=copyparty
|
||||||
_pkgname=copyparty
|
pkgver="1.6.3"
|
||||||
pkgver=3866e6a
|
|
||||||
pkgrel=1
|
pkgrel=1
|
||||||
pkgdesc="Portable file sharing hub"
|
pkgdesc="Portable file sharing hub"
|
||||||
arch=("any")
|
arch=("any")
|
||||||
url="https://github.com/9001/copyparty"
|
url="https://github.com/9001/${pkgname}"
|
||||||
license=('MIT')
|
license=('MIT')
|
||||||
depends=("python3")
|
depends=("python3" "python-jinja")
|
||||||
makedepends=("git" "curl" "python3")
|
optdepends=("ffmpeg: thumbnails for videos, images (slower) and audio, music tags"
|
||||||
optdepends=("python-mutagen" "python-pillow" "python-pyvips" "ffmpeg" "python-pyftpdlib" "python-pyopenssl" "impacket"==0.10.0)
|
"python-mutagen: music tags (alternative)"
|
||||||
conflicts=("copyparty")
|
"python-pillow: thumbnails for images"
|
||||||
source=("git+https://github.com/9001/${_pkgname}.git")
|
"python-pyvips: thumbnails for images (higher quality, faster, uses more ram)"
|
||||||
sha256sums=("SKIP")
|
"libkeyfinder-git: detection of musical keys"
|
||||||
|
"qm-vamp-plugins: BPM detection"
|
||||||
prepare() {
|
"python-pyftpdlib: ftp functionality"
|
||||||
cd "${srcdir}/${_pkgname}"
|
"python-pyopenssl: sftp functionality"
|
||||||
cp "contrib/systemd/${_pkgname}.service" "contrib/package/arch/${_pkgname}.service"
|
"impacket: smb support (bad idea)"
|
||||||
sed -i 's/\/usr\/local\/bin\/copyparty-sfx.py/\/usr\/bin\/copyparty/' "contrib/package/arch/${_pkgname}.service"
|
"python-impacket-git: smb support (bad idea)"
|
||||||
}
|
)
|
||||||
|
source=("${url}/releases/download/v${pkgver}/${pkgname}-sfx.py"
|
||||||
pkgver() {
|
"${pkgname}.conf"
|
||||||
cd "${srcdir}/${_pkgname}"
|
"${pkgname}.service"
|
||||||
git rev-parse --short HEAD
|
"https://raw.githubusercontent.com/9001/${pkgname}/hovudstraum/LICENSE"
|
||||||
}
|
)
|
||||||
|
backup=("etc/${pkgname}.conf" )
|
||||||
build() {
|
sha256sums=("56c02d43a0e6c18d71295268674454b4c6f5ff2ccef30fb95f81d58d2d1e260d"
|
||||||
cd "${srcdir}/${_pkgname}/scripts"
|
"c19df8d0b6cd32d0b37c68e4f170d8634644e7fe7d99c9030cc6f20622ef95b5"
|
||||||
./make-sfx.sh gz
|
"2ab7598e5150facb4f63bf5433b25b60874603f7a408bb37b24186c54a331b37"
|
||||||
}
|
"cb2ce3d6277bf2f5a82ecf336cc44963bc6490bcf496ffbd75fc9e21abaa75f3"
|
||||||
|
)
|
||||||
|
|
||||||
package() {
|
package() {
|
||||||
cd "${srcdir}/${_pkgname}"
|
cd "${srcdir}/"
|
||||||
install -Dm755 "dist/copyparty-sfx-gz.py" "${pkgdir}/usr/bin/${_pkgname}"
|
mkdir -p /etc/${pkgname}.d
|
||||||
install -Dm644 "contrib/package/arch/${_pkgname}.service" "${pkgdir}/usr/lib/systemd/system/${_pkgname}.service"
|
|
||||||
install -Dm644 "LICENSE" "${pkgdir}/usr/share/licenses/${_pkgname}/LICENSE"
|
install -Dm755 "${pkgname}-sfx.py" "${pkgdir}/usr/bin/${pkgname}"
|
||||||
echo "If this is your first time installing copyparty, you'll want to copy the systemd service file to /etc/systemd/system and edit it to suit your needs"
|
install -Dm644 "${pkgname}.conf" "${pkgdir}/etc/${pkgname}.conf"
|
||||||
|
install -Dm644 "${pkgname}.service" "${pkgdir}/usr/lib/systemd/system/${pkgname}.service"
|
||||||
|
install -Dm644 "LICENSE" "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
|
||||||
|
|
||||||
|
echo "------------"
|
||||||
|
echo "If this is your first time installing ${pkgname}, you'll want to copy the systemd service file"
|
||||||
|
echo "from /usr/lib/systemd/system/${pkgname}.service to /etc/systemd/system and edit /etc/${pkgname}.conf"
|
||||||
|
echo "to suit your needs"
|
||||||
|
echo "------------"
|
||||||
}
|
}
|
||||||
|
|
70
contrib/package/arch/copyparty.conf
Normal file
70
contrib/package/arch/copyparty.conf
Normal file
|
@ -0,0 +1,70 @@
|
||||||
|
## load /etc/copyparty.d/*.conf
|
||||||
|
## paths are relative from the location of each included file unless the path is absolute, for example % /etc/copyparty.d, max include depth is 64
|
||||||
|
% copyparty.d
|
||||||
|
|
||||||
|
## append some arguments to the commandline;
|
||||||
|
## the first space in a line counts as a separator,
|
||||||
|
## any additional spaces are part of the value
|
||||||
|
|
||||||
|
#-e2dsa
|
||||||
|
#-e2ts
|
||||||
|
#-i 127.0.0.1
|
||||||
|
|
||||||
|
## create users:
|
||||||
|
## u username:password
|
||||||
|
|
||||||
|
#u ed:password
|
||||||
|
#u user2:password2
|
||||||
|
|
||||||
|
## leave a blank line between volumes
|
||||||
|
## (and also between users and volumes)
|
||||||
|
|
||||||
|
## create a volume:
|
||||||
|
## share "." (the current directory)
|
||||||
|
## as "/" (the webroot) for the following users:
|
||||||
|
## "r" grants read-access for anyone
|
||||||
|
## "rw ed" grants read-write to ed
|
||||||
|
|
||||||
|
#.
|
||||||
|
#/
|
||||||
|
#r
|
||||||
|
#rw ed
|
||||||
|
|
||||||
|
## custom permissions for the "priv" folder:
|
||||||
|
## user "user2" can only see/read the contents
|
||||||
|
## user "ed" gets read-write access
|
||||||
|
|
||||||
|
#./priv
|
||||||
|
#/priv
|
||||||
|
#r user2
|
||||||
|
#rw ed
|
||||||
|
|
||||||
|
## this does the same thing,
|
||||||
|
## and will cause an error on startup since /priv is already taken:
|
||||||
|
|
||||||
|
#./priv
|
||||||
|
#/priv
|
||||||
|
#r ed user2
|
||||||
|
#w ed
|
||||||
|
|
||||||
|
## share /home/ed/Music/ as /music and let anyone read it
|
||||||
|
## (this will replace any folder called "music" in the webroot)
|
||||||
|
|
||||||
|
#/home/ed/Music
|
||||||
|
#/music
|
||||||
|
#r
|
||||||
|
|
||||||
|
## and a folder where anyone can upload
|
||||||
|
## but nobody can see the contents
|
||||||
|
## and set the e2d flag to enable the uploads database
|
||||||
|
## and set the nodupe flag to reject duplicate uploads
|
||||||
|
|
||||||
|
#/home/ed/inc
|
||||||
|
#/dump
|
||||||
|
#w
|
||||||
|
#c e2d
|
||||||
|
#c nodupe
|
||||||
|
|
||||||
|
## this entire config file can be replaced with these arguments (in the systemd file or the copyparty command):
|
||||||
|
## -u ed:password -u user2:password2 -v .::r:a,ed -v priv:priv:r,user2:rw,ed -v /home/ed/Music:music:r -v /home/ed/inc:dump:w:c,e2d,nodupe
|
||||||
|
## but note that the config file always wins in case of conflicts
|
61
contrib/package/arch/copyparty.service
Normal file
61
contrib/package/arch/copyparty.service
Normal file
|
@ -0,0 +1,61 @@
|
||||||
|
# this will start `/usr/local/bin/copyparty-sfx.py`
|
||||||
|
# and share '/mnt' with anonymous read+write
|
||||||
|
#
|
||||||
|
# installation:
|
||||||
|
# cp -pv copyparty.service /etc/systemd/system
|
||||||
|
# restorecon -vr /etc/systemd/system/copyparty.service
|
||||||
|
# firewall-cmd --permanent --add-port={80,443,3923}/tcp # --zone=libvirt
|
||||||
|
# firewall-cmd --reload
|
||||||
|
# systemctl daemon-reload && systemctl enable --now copyparty
|
||||||
|
#
|
||||||
|
# you may want to:
|
||||||
|
# change "User=cpp" and "/home/cpp/" to another user
|
||||||
|
# remove the nft lines to only listen on port 3923
|
||||||
|
# and in the ExecStart= line:
|
||||||
|
# change '/usr/bin/python3' to another interpreter
|
||||||
|
# change '/mnt::rw' to another location or permission-set
|
||||||
|
# add '-q' to disable logging on busy servers
|
||||||
|
# add '-i 127.0.0.1' to only allow local connections
|
||||||
|
# add '-e2dsa' to enable filesystem scanning + indexing
|
||||||
|
# add '-e2ts' to enable metadata indexing
|
||||||
|
#
|
||||||
|
# with `Type=notify`, copyparty will signal systemd when it is ready to
|
||||||
|
# accept connections; correctly delaying units depending on copyparty.
|
||||||
|
# But note that journalctl will get the timestamps wrong due to
|
||||||
|
# python disabling line-buffering, so messages are out-of-order:
|
||||||
|
# https://user-images.githubusercontent.com/241032/126040249-cb535cc7-c599-4931-a796-a5d9af691bad.png
|
||||||
|
#
|
||||||
|
# unless you add -q to disable logging, you may want to remove the
|
||||||
|
# following line to allow buffering (slightly better performance):
|
||||||
|
# Environment=PYTHONUNBUFFERED=x
|
||||||
|
#
|
||||||
|
# keep ExecStartPre before ExecStart, at least on rhel8
|
||||||
|
|
||||||
|
[Unit]
|
||||||
|
Description=copyparty file server
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=notify
|
||||||
|
SyslogIdentifier=copyparty
|
||||||
|
Environment=PYTHONUNBUFFERED=x
|
||||||
|
ExecReload=/bin/kill -s USR1 $MAINPID
|
||||||
|
|
||||||
|
# user to run as + where the TLS certificate is (if any)
|
||||||
|
User=cpp
|
||||||
|
Environment=XDG_CONFIG_HOME=/home/cpp/.config
|
||||||
|
|
||||||
|
# setup forwarding from ports 80 and 443 to port 3923
|
||||||
|
ExecStartPre=+/bin/bash -c 'nft -n -a list table nat | awk "/ to :3923 /{print\$NF}" | xargs -rL1 nft delete rule nat prerouting handle; true'
|
||||||
|
ExecStartPre=+nft add table ip nat
|
||||||
|
ExecStartPre=+nft -- add chain ip nat prerouting { type nat hook prerouting priority -100 \; }
|
||||||
|
ExecStartPre=+nft add rule ip nat prerouting tcp dport 80 redirect to :3923
|
||||||
|
ExecStartPre=+nft add rule ip nat prerouting tcp dport 443 redirect to :3923
|
||||||
|
|
||||||
|
# stop systemd-tmpfiles-clean.timer from deleting copyparty while it's running
|
||||||
|
ExecStartPre=+/bin/bash -c 'mkdir -p /run/tmpfiles.d/ && echo "x /tmp/pe-copyparty*" > /run/tmpfiles.d/copyparty.conf'
|
||||||
|
|
||||||
|
# copyparty settings
|
||||||
|
ExecStart=/usr/bin/python3 /usr/bin/copyparty -c /etc/copyparty.conf
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
Loading…
Reference in a new issue