From 8aec83c485d017fba00fb2e7874f8fe9fc0856fc Mon Sep 17 00:00:00 2001 From: yourok <8yourok8@mail.ru> Date: Sat, 13 Jan 2024 12:02:27 +0300 Subject: [PATCH] add docker file --- docker/Dockerfile | 6 ++++ docker/README.md | 86 +++++++++++++++++++++++++++++++++++++++++++++++ docker/start.sh | 61 +++++++++++++++++++++++++++++++++ 3 files changed, 153 insertions(+) create mode 100644 docker/Dockerfile create mode 100644 docker/README.md create mode 100755 docker/start.sh diff --git a/docker/Dockerfile b/docker/Dockerfile new file mode 100644 index 0000000..d5edf75 --- /dev/null +++ b/docker/Dockerfile @@ -0,0 +1,6 @@ +FROM alpine +LABEL maintainer "yourok" +RUN apk add --no-cache wget +COPY start.sh /start.sh +ENTRYPOINT /start.sh + diff --git a/docker/README.md b/docker/README.md new file mode 100644 index 0000000..4193afb --- /dev/null +++ b/docker/README.md @@ -0,0 +1,86 @@ +## TorrServer + +After starting the container, the latest server is downloaded from GitHub.\ +If you need update server to latest, repull container + +Source code: https://github.com/YouROK/TorrServer + +-------- + +Author of docker file and scripts [butaford (aka Pavel)](https://github.com/butaford) + +-------- + +### Support platforms +* TorrServer-linux-386 +* TorrServer-linux-amd64 +* TorrServer-linux-arm5 +* TorrServer-linux-arm64 +* TorrServer-linux-arm7 + +-------- +### Support env +TS_PORT: TS web port\ +TS_PATH: config path and other\ +TS_LOGPATHDIR: log path\ +TS_LOGFILE: log file name\ +TS_WEBLOGFILE: web log file name\ +TS_RDB: read only config\ +TS_HTTPAUTH: auth for server, accs.db should be in the TS_PATH\ +TS_DONTKILL: don't kill server by signal\ +TS_TORRENTSDIR: torrents listen directory\ +TS_TORRENTADDR: torrents peer listen port\ +TS_PUBIPV4: the IP addresses as our peers should see them. May differ from the local interfaces due to NAT or other network configurations\ +TS_PUBIPV6: the IP addresses as our peers should see them. May differ from the local interfaces due to NAT or other network configurations\ +TS_SEARCHWA: disable auth for search torrents if auth is enable + +-------- +### Docker run example +``` +docker run -p 8090:8090 \ +-e TS_PORT=8090 \ +-e TS_PATH="/opt/torrserver/config" \ +-e TS_LOGPATHDIR="/opt/torrserver/log/" \ +-e TS_LOGFILE="ts.log" \ +-e TS_WEBLOGFILE="tsweb.log" \ +-e TS_RDB=true \ +-e TS_HTTPAUTH=true \ +-e TS_DONTKILL=true \ +-e TS_TORRENTSDIR="/opt/torrserver/torrents" \ +-e TS_TORRENTADDR=32000 \ +-e TS_PUBIPV4=publicIP \ +-e TS_PUBIPV6=publicIP \ +-e TS_SEARCHWA=true \ +yourok/torrserver +``` + +-------- +### Docker compose example +``` +version: '3.6' +services: + torrserver: + container_name: torrserver + image: yourok/torrserver + restart: unless-stopped + environment: + - TS_PORT=8090 + - TS_PATH=/opt/torrserver/config + - TS_LOGPATHDIR=/opt/torrserver/log + - TS_LOGFILE=ts.log + - TS_WEBLOGFILE=tsweb.log + - TS_RDB=false + - TS_HTTPAUTH=true + - TS_DONTKILL=true + - TS_TORRENTSDIR=/opt/torrserver/torrents + - TS_TORRENTADDR=:32000 + - TS_PUBIPV4=publicIP + - TS_PUBIPV6=publicIP + - TS_SEARCHWA=true + ports: + - 8090:8090 + volumes: + - ./torrserver/config:/opt/torrserver/config + - ./torrserver/log:/opt/torrserver/log + - ./torrserver/torrents:/opt/torrserver/torrents +``` diff --git a/docker/start.sh b/docker/start.sh new file mode 100755 index 0000000..6524ac8 --- /dev/null +++ b/docker/start.sh @@ -0,0 +1,61 @@ +#!/bin/sh + +case $(uname -m) in + i386) architecture="386" ;; + i686) architecture="386" ;; + x86_64) architecture="amd64" ;; + aarch64) architecture="arm64" ;; + armv7|armv7l) architecture="arm7" ;; + armv6|armv6l) architecture="arm5" ;; +# armv5|armv5l) architecture="arm5" ;; + *) echo "Unsupported Arch. Can't continue."; exit 1 ;; +esac + +binName="TorrServer-linux-${architecture}" + +mkdir -p /opt/torrserver +cd /opt/torrserver + +wget "https://github.com/YouROK/TorrServer/releases/latest/download/$binName" +chmod +x $binName + +FLAGS="" + +echo "TS_PORT:$TS_PORT" +echo "TS_PATH:$TS_PATH" +echo "TS_LOGPATHDIR:$TS_LOGPATHDIR" +echo "TS_LOGFILE:$TS_LOGPATHDIR/$TS_LOGFILE" +echo "TS_WEBLOGFILE:$TS_LOGPATHDIR/$TS_WEBLOGFILE" +echo "TS_RDB:$TS_RDB" +echo "TS_HTTPAUTH:$TS_HTTPAUTH" +echo "TS_DONTKILL:$TS_DONTKILL" +echo "TS_TORRENTSDIR:$TS_TORRENTSDIR" +echo "TS_TORRENTADDR:$TS_TORRENTADDR" +echo "TS_PUBIPV4:$TS_PUBIPV4" +echo "TS_PUBIPV6:$TS_PUBIPV6" +echo "TS_SEARCHWA:$TS_SEARCHWA" + +#sets start flags +[ ! -z "$TS_PORT" ] && FLAGS="${FLAGS} --port ${TS_PORT}" +[ ! -z "$TS_PATH" ] && FLAGS="${FLAGS} --path ${TS_PATH}" +[ ! -z "$TS_LOGFILE" ] && FLAGS="${FLAGS} --logpath $TS_LOGPATHDIR/${TS_LOGFILE}" +[ ! -z "$TS_WEBLOGFILE" ] && FLAGS="${FLAGS} --weblogpath $TS_LOGPATHDIR/${TS_WEBLOGFILE}" +[ ! -z "$TS_RDB" ] && FLAGS="${FLAGS} --rdb" +[ ! -z "$TS_HTTPAUTH" ] && FLAGS="${FLAGS} --httpauth" +[ ! -z "$TS_DONTKILL" ] && FLAGS="${FLAGS} --dontkill" +[ ! -z "$TS_TORRENTSDIR" ] && FLAGS="${FLAGS} --torrentsdir ${TS_TORRENTSDIR}" +[ ! -z "$TS_TORRENTADDR" ] && FLAGS="${FLAGS} --torrentaddr ${TS_TORRENTADDR}" +[ ! -z "$TS_PUBIPV4" ] && FLAGS="${FLAGS} --pubipv4 ${TS_PUBIPV4}" +[ ! -z "$TS_PUBIPV6" ] && FLAGS="${FLAGS} --pubipv6 ${TS_PUBIPV6}" +[ ! -z "$TS_SEARCHWA" ] && FLAGS="${FLAGS} --searchwa" + +#make directories +[ ! -z "$TS_PATH" ] && [ ! -d "$TS_PATH" ] && mkdir -p $TS_PATH +[ ! -z "$TS_LOGPATHDIR" ] && [ ! -d "$TS_LOGPATHDIR" ] && mkdir -p $TS_LOGPATHDIR +[ ! -z "$TS_TORRENTSDIR" ] && [ ! -d "$TS_TORRENTSDIR" ] && mkdir $TS_TORRENTSDIR + +echo "Running with: ${FLAGS}" +export GODEBUG=madvdontneed=1 + +/opt/torrserver/${binName} ${FLAGS} +