mirror of
				https://github.com/linuxserver/docker-transmission.git
				synced 2025-10-31 17:05:48 +01:00 
			
		
		
		
	Rebase transmission to 3.16, migrate to s6v3
This commit is contained in:
		
							
								
								
									
										2
									
								
								.github/workflows/external_trigger.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/workflows/external_trigger.yml
									
									
									
									
										vendored
									
									
								
							| @@ -18,7 +18,7 @@ jobs: | ||||
|           fi | ||||
|           echo "**** External trigger running off of master branch. To disable this trigger, set a Github secret named \"PAUSE_EXTERNAL_TRIGGER_TRANSMISSION_MASTER\". ****" | ||||
|           echo "**** Retrieving external version ****" | ||||
|           EXT_RELEASE=$(curl -sL "http://dl-cdn.alpinelinux.org/alpine/v3.15/community/x86_64/APKINDEX.tar.gz" | tar -xz -C /tmp \ | ||||
|           EXT_RELEASE=$(curl -sL "http://dl-cdn.alpinelinux.org/alpine/v3.16/community/x86_64/APKINDEX.tar.gz" | tar -xz -C /tmp \ | ||||
|             && awk '/^P:'"transmission-daemon"'$/,/V:/' /tmp/APKINDEX | sed -n 2p | sed 's/^V://') | ||||
|           if [ -z "${EXT_RELEASE}" ] || [ "${EXT_RELEASE}" == "null" ]; then | ||||
|             echo "**** Can't retrieve external version, exiting ****" | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| FROM ghcr.io/linuxserver/baseimage-alpine:3.15 | ||||
| FROM ghcr.io/linuxserver/baseimage-alpine:3.16 | ||||
|  | ||||
| ARG UNRAR_VERSION=6.1.7 | ||||
| ARG BUILD_DATE | ||||
| @@ -16,9 +16,7 @@ RUN \ | ||||
|   echo "**** install packages ****" && \ | ||||
|   apk add --no-cache \ | ||||
|     ca-certificates \ | ||||
|     curl \ | ||||
|     findutils \ | ||||
|     jq \ | ||||
|     openssl \ | ||||
|     p7zip \ | ||||
|     python3 \ | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| FROM ghcr.io/linuxserver/baseimage-alpine:arm64v8-3.15 | ||||
| FROM ghcr.io/linuxserver/baseimage-alpine:arm64v8-3.16 | ||||
|  | ||||
| ARG UNRAR_VERSION=6.1.7 | ||||
| ARG BUILD_DATE | ||||
| @@ -16,9 +16,7 @@ RUN \ | ||||
|   echo "**** install packages ****" && \ | ||||
|   apk add --no-cache \ | ||||
|     ca-certificates \ | ||||
|     curl \ | ||||
|     findutils \ | ||||
|     jq \ | ||||
|     openssl \ | ||||
|     p7zip \ | ||||
|     python3 \ | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| FROM ghcr.io/linuxserver/baseimage-alpine:arm32v7-3.15 | ||||
| FROM ghcr.io/linuxserver/baseimage-alpine:arm32v7-3.16 | ||||
|  | ||||
| ARG UNRAR_VERSION=6.1.7 | ||||
| ARG BUILD_DATE | ||||
| @@ -16,9 +16,7 @@ RUN \ | ||||
|   echo "**** install packages ****" && \ | ||||
|   apk add --no-cache \ | ||||
|     ca-certificates \ | ||||
|     curl \ | ||||
|     findutils \ | ||||
|     jq \ | ||||
|     openssl \ | ||||
|     p7zip \ | ||||
|     python3 \ | ||||
|   | ||||
							
								
								
									
										4
									
								
								Jenkinsfile
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								Jenkinsfile
									
									
									
									
										vendored
									
									
								
							| @@ -25,8 +25,8 @@ pipeline { | ||||
|     DEV_DOCKERHUB_IMAGE = 'lsiodev/transmission' | ||||
|     PR_DOCKERHUB_IMAGE = 'lspipepr/transmission' | ||||
|     DIST_IMAGE = 'alpine' | ||||
|     DIST_TAG = '3.15' | ||||
|     DIST_REPO = 'http://dl-cdn.alpinelinux.org/alpine/v3.15/community/' | ||||
|     DIST_TAG = '3.16' | ||||
|     DIST_REPO = 'http://dl-cdn.alpinelinux.org/alpine/v3.16/community/' | ||||
|     DIST_REPO_PACKAGES = 'transmission-daemon' | ||||
|     MULTIARCH='true' | ||||
|     CI='true' | ||||
|   | ||||
| @@ -275,6 +275,7 @@ Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64 | ||||
|  | ||||
| ## Versions | ||||
|  | ||||
| * **02.11.22:** - Rebase to Alpine 3.16, migrate to s6v3. | ||||
| * **12.08.22:** - Bump unrar to 6.1.7. | ||||
| * **03.04.22:** - Add Transmissionic as a UI option. | ||||
| * **21.02.22:** - Build unrar from source, rebase to Alpine 3.15, add symlinks neeeded for TWC. Credit @alexbelgium | ||||
|   | ||||
| @@ -15,8 +15,8 @@ repo_vars: | ||||
|   - DEV_DOCKERHUB_IMAGE = 'lsiodev/transmission' | ||||
|   - PR_DOCKERHUB_IMAGE = 'lspipepr/transmission' | ||||
|   - DIST_IMAGE = 'alpine' | ||||
|   - DIST_TAG = '3.15' | ||||
|   - DIST_REPO = 'http://dl-cdn.alpinelinux.org/alpine/v3.15/community/' | ||||
|   - DIST_TAG = '3.16' | ||||
|   - DIST_REPO = 'http://dl-cdn.alpinelinux.org/alpine/v3.16/community/' | ||||
|   - DIST_REPO_PACKAGES = 'transmission-daemon' | ||||
|   - MULTIARCH='true' | ||||
|   - CI='true' | ||||
|   | ||||
| @@ -83,6 +83,7 @@ app_setup_block: | | ||||
|  | ||||
| # changelog | ||||
| changelogs: | ||||
|   - { date: "02.11.22:", desc: "Rebase to Alpine 3.16, migrate to s6v3." } | ||||
|   - { date: "12.08.22:", desc: "Bump unrar to 6.1.7." } | ||||
|   - { date: "03.04.22:", desc: "Add Transmissionic as a UI option." } | ||||
|   - { date: "21.02.22:", desc: "Build unrar from source, rebase to Alpine 3.15, add symlinks neeeded for TWC. Credit @alexbelgium" } | ||||
|   | ||||
| @@ -2,10 +2,10 @@ | ||||
|  | ||||
| BLOCKLIST_ENABLED=$(jq -r '.["blocklist-enabled"]' /config/settings.json) | ||||
|  | ||||
| if [ "$BLOCKLIST_ENABLED" == true ]; then | ||||
|   if [ -n "$USER" ] && [ -n "$PASS" ]; then | ||||
|     /usr/bin/transmission-remote -n "$USER":"$PASS" --blocklist-update | ||||
|   else | ||||
|     /usr/bin/transmission-remote --blocklist-update | ||||
|   fi | ||||
| if [[ "$BLOCKLIST_ENABLED" == true ]]; then | ||||
|     if [[ -n "$USER" ]] && [[ -n "$PASS" ]]; then | ||||
|         /usr/bin/transmission-remote -n "$USER":"$PASS" --blocklist-update | ||||
|     else | ||||
|         /usr/bin/transmission-remote --blocklist-update | ||||
|     fi | ||||
| fi | ||||
|   | ||||
| @@ -1,49 +0,0 @@ | ||||
| #!/usr/bin/with-contenv bash | ||||
|  | ||||
| # make folders | ||||
| mkdir -p \ | ||||
| 	/downloads/{complete,incomplete} /watch | ||||
|  | ||||
| # copy config | ||||
| [[ ! -f /config/settings.json ]] && cp \ | ||||
| 	/defaults/settings.json /config/settings.json | ||||
|  | ||||
| if [ ! -z "$USER" ] && [ ! -z "$PASS" ]; then | ||||
| 	sed -i '/rpc-authentication-required/c\    "rpc-authentication-required": true,' /config/settings.json | ||||
| 	sed -i "/rpc-username/c\    \"rpc-username\": \"$USER\"," /config/settings.json | ||||
| 	sed -i "/rpc-password/c\    \"rpc-password\": \"$PASS\"," /config/settings.json | ||||
| else | ||||
| 	sed -i '/rpc-authentication-required/c\    "rpc-authentication-required": false,' /config/settings.json | ||||
| 	sed -i "/rpc-username/c\    \"rpc-username\": \"$USER\"," /config/settings.json | ||||
| 	sed -i "/rpc-password/c\    \"rpc-password\": \"$PASS\"," /config/settings.json | ||||
| fi | ||||
|  | ||||
| if [ ! -z "$WHITELIST" ]; then | ||||
| 	sed -i '/rpc-whitelist-enabled/c\    "rpc-whitelist-enabled": true,' /config/settings.json | ||||
| 	sed -i "/\"rpc-whitelist\"/c\    \"rpc-whitelist\": \"$WHITELIST\"," /config/settings.json | ||||
| else | ||||
| 	sed -i '/rpc-whitelist-enabled/c\    "rpc-whitelist-enabled": false,' /config/settings.json | ||||
| 	sed -i "/\"rpc-whitelist\"/c\    \"rpc-whitelist\": \"$WHITELIST\"," /config/settings.json | ||||
| fi | ||||
|  | ||||
| if [ ! -z "$HOST_WHITELIST" ]; then | ||||
| 	sed -i '/rpc-host-whitelist-enabled/c\    "rpc-host-whitelist-enabled": true,' /config/settings.json | ||||
| 	sed -i "/\"rpc-host-whitelist\"/c\    \"rpc-host-whitelist\": \"$HOST_WHITELIST\"," /config/settings.json | ||||
| else | ||||
| 	sed -i '/rpc-host-whitelist-enabled/c\    "rpc-host-whitelist-enabled": false,' /config/settings.json | ||||
| 	sed -i "/\"rpc-host-whitelist\"/c\    \"rpc-host-whitelist\": \"$HOST_WHITELIST\"," /config/settings.json | ||||
| fi | ||||
|  | ||||
| if [ ! -z "${PEERPORT}" ]; then | ||||
|     sed -i "/\"peer-port\"/c\    \"peer-port\": ${PEERPORT}," /config/settings.json | ||||
|     sed -i '/peer-port-random-on-start/c\     "peer-port-random-on-start": false,' /config/settings.json | ||||
| fi | ||||
|  | ||||
|  | ||||
| # permissions | ||||
| chown abc:abc \ | ||||
| 	/config/settings.json \ | ||||
| 	/downloads \ | ||||
| 	/downloads/complete \ | ||||
| 	/downloads/incomplete \ | ||||
| 	/watch | ||||
							
								
								
									
										49
									
								
								root/etc/s6-overlay/s6-rc.d/init-transmission-config/run
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										49
									
								
								root/etc/s6-overlay/s6-rc.d/init-transmission-config/run
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,49 @@ | ||||
| #!/usr/bin/with-contenv bash | ||||
|  | ||||
| # make folders | ||||
| mkdir -p \ | ||||
|     /downloads/{complete,incomplete} /watch | ||||
|  | ||||
| # copy config | ||||
| if [[ ! -f /config/settings.json ]]; then | ||||
|     cp /defaults/settings.json /config/settings.json | ||||
| fi | ||||
|  | ||||
| if [[ -n "$USER" ]] && [[ -n "$PASS" ]]; then | ||||
|     sed -i '/rpc-authentication-required/c\    "rpc-authentication-required": true,' /config/settings.json | ||||
|     sed -i "/rpc-username/c\    \"rpc-username\": \"$USER\"," /config/settings.json | ||||
|     sed -i "/rpc-password/c\    \"rpc-password\": \"$PASS\"," /config/settings.json | ||||
| else | ||||
|     sed -i '/rpc-authentication-required/c\    "rpc-authentication-required": false,' /config/settings.json | ||||
|     sed -i "/rpc-username/c\    \"rpc-username\": \"$USER\"," /config/settings.json | ||||
|     sed -i "/rpc-password/c\    \"rpc-password\": \"$PASS\"," /config/settings.json | ||||
| fi | ||||
|  | ||||
| if [[ -n "$WHITELIST" ]]; then | ||||
|     sed -i '/rpc-whitelist-enabled/c\    "rpc-whitelist-enabled": true,' /config/settings.json | ||||
|     sed -i "/\"rpc-whitelist\"/c\    \"rpc-whitelist\": \"$WHITELIST\"," /config/settings.json | ||||
| else | ||||
|     sed -i '/rpc-whitelist-enabled/c\    "rpc-whitelist-enabled": false,' /config/settings.json | ||||
|     sed -i "/\"rpc-whitelist\"/c\    \"rpc-whitelist\": \"$WHITELIST\"," /config/settings.json | ||||
| fi | ||||
|  | ||||
| if [[ -n "$HOST_WHITELIST" ]]; then | ||||
|     sed -i '/rpc-host-whitelist-enabled/c\    "rpc-host-whitelist-enabled": true,' /config/settings.json | ||||
|     sed -i "/\"rpc-host-whitelist\"/c\    \"rpc-host-whitelist\": \"$HOST_WHITELIST\"," /config/settings.json | ||||
| else | ||||
|     sed -i '/rpc-host-whitelist-enabled/c\    "rpc-host-whitelist-enabled": false,' /config/settings.json | ||||
|     sed -i "/\"rpc-host-whitelist\"/c\    \"rpc-host-whitelist\": \"$HOST_WHITELIST\"," /config/settings.json | ||||
| fi | ||||
|  | ||||
| if [[ -n "${PEERPORT}" ]]; then | ||||
|     sed -i "/\"peer-port\"/c\    \"peer-port\": ${PEERPORT}," /config/settings.json | ||||
|     sed -i '/peer-port-random-on-start/c\     "peer-port-random-on-start": false,' /config/settings.json | ||||
| fi | ||||
|  | ||||
| # permissions | ||||
| chown abc:abc \ | ||||
|     /config/settings.json \ | ||||
|     /downloads \ | ||||
|     /downloads/complete \ | ||||
|     /downloads/incomplete \ | ||||
|     /watch | ||||
| @@ -0,0 +1 @@ | ||||
| oneshot | ||||
							
								
								
									
										1
									
								
								root/etc/s6-overlay/s6-rc.d/init-transmission-config/up
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								root/etc/s6-overlay/s6-rc.d/init-transmission-config/up
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | ||||
| /etc/s6-overlay/s6-rc.d/init-transmission-config/run | ||||
							
								
								
									
										4
									
								
								root/etc/s6-overlay/s6-rc.d/svc-cron/run
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								root/etc/s6-overlay/s6-rc.d/svc-cron/run
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,4 @@ | ||||
| #!/usr/bin/with-contenv bash | ||||
|  | ||||
| exec \ | ||||
|     /usr/sbin/crond -f -S -l 0 -c /etc/crontabs | ||||
							
								
								
									
										1
									
								
								root/etc/s6-overlay/s6-rc.d/svc-cron/type
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								root/etc/s6-overlay/s6-rc.d/svc-cron/type
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | ||||
| longrun | ||||
							
								
								
									
										1
									
								
								root/etc/s6-overlay/s6-rc.d/svc-transmission/down
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								root/etc/s6-overlay/s6-rc.d/svc-transmission/down
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | ||||
| /etc/s6-overlay/s6-rc.d/svc-transmission/finish | ||||
							
								
								
									
										11
									
								
								root/etc/s6-overlay/s6-rc.d/svc-transmission/finish
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										11
									
								
								root/etc/s6-overlay/s6-rc.d/svc-transmission/finish
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,11 @@ | ||||
| #!/usr/bin/with-contenv bash | ||||
|  | ||||
| pid=$(pidof transmission-daemon) | ||||
|  | ||||
| if [[ -n "$USER" ]] && [[ -n "$PASS" ]]; then | ||||
|     /usr/bin/transmission-remote -n "$USER":"$PASS" --exit | ||||
| else | ||||
|     /usr/bin/transmission-remote --exit | ||||
| fi | ||||
|  | ||||
| tail --pid=${pid} -f /dev/null | ||||
| @@ -0,0 +1 @@ | ||||
| 3 | ||||
							
								
								
									
										5
									
								
								root/etc/s6-overlay/s6-rc.d/svc-transmission/run
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										5
									
								
								root/etc/s6-overlay/s6-rc.d/svc-transmission/run
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,5 @@ | ||||
| #!/usr/bin/with-contenv bash | ||||
|  | ||||
| s6-notifyoncheck -d -n 300 -w 1000 -c "nc -z localhost 9091" \ | ||||
|     s6-setuidgid abc /usr/bin/transmission-daemon \ | ||||
|     -g /config -c /watch -f | ||||
							
								
								
									
										1
									
								
								root/etc/s6-overlay/s6-rc.d/svc-transmission/type
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								root/etc/s6-overlay/s6-rc.d/svc-transmission/type
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | ||||
| longrun | ||||
| @@ -1,4 +0,0 @@ | ||||
| #!/usr/bin/with-contenv bash | ||||
|  | ||||
| exec \ | ||||
|   /usr/sbin/crond -f -S -l 0 -c /etc/crontabs | ||||
| @@ -1,21 +0,0 @@ | ||||
| #!/usr/bin/with-contenv bash | ||||
|  | ||||
| _term() { | ||||
|   echo "Caught SIGTERM signal!" | ||||
|   echo "Tell the transmission session to shut down." | ||||
|   pid=$(pidof transmission-daemon) | ||||
|   if [ ! -z "$USER" ] && [ ! -z "$PASS" ]; then | ||||
|     /usr/bin/transmission-remote -n "$USER":"$PASS" --exit | ||||
|   else | ||||
|     /usr/bin/transmission-remote --exit | ||||
|   fi | ||||
|   # terminate when the transmission-daemon process dies | ||||
|   tail --pid=${pid} -f /dev/null | ||||
| } | ||||
|  | ||||
|         trap _term SIGTERM | ||||
| 	 | ||||
| 	s6-setuidgid abc /usr/bin/transmission-daemon \ | ||||
| 	-g /config -c /watch -f & | ||||
|  | ||||
| 	wait | ||||
		Reference in New Issue
	
	Block a user