浏览代码

added support for uid/gid ... by default transmission will still run as root so as to not break backwards compatibility.

master
Branden Cash 7 年前
父节点
当前提交
8cb81cc588
共有 6 个文件被更改,包括 64 次插入7 次删除
  1. 7
    3
      Dockerfile
  2. 7
    2
      Dockerfile.armhf
  3. 10
    0
      README.md
  4. 4
    1
      transmission/environment-variables.tmpl
  5. 3
    1
      transmission/start.sh
  6. 33
    0
      transmission/userSetup.sh

+ 7
- 3
Dockerfile 查看文件

@@ -20,9 +20,11 @@ RUN apt-get update \
&& dpkg -i dumb-init_*.deb \
&& rm -rf dumb-init_*.deb \
&& apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* \
&& curl -L https://github.com/jwilder/dockerize/releases/download/v0.0.2/dockerize-linux-amd64-v0.0.2.tar.gz | tar -C /usr/local/bin -xzv
&& curl -L https://github.com/jwilder/dockerize/releases/download/v0.0.2/dockerize-linux-amd64-v0.0.2.tar.gz | tar -C /usr/local/bin -xzv \
&& groupmod -g 1000 users \
&& useradd -u 911 -U -d /config -s /bin/false abc \
&& usermod -G users abc

# Add configuration and scripts
ADD openvpn/ /etc/openvpn/
ADD transmission/ /etc/transmission/

@@ -100,7 +102,9 @@ ENV OPENVPN_USERNAME=**None** \
"TRANSMISSION_UTP_ENABLED=true" \
"TRANSMISSION_WATCH_DIR=/data/watch" \
"TRANSMISSION_WATCH_DIR_ENABLED=true" \
"TRANSMISSION_HOME=/data/transmission-home"
"TRANSMISSION_HOME=/data/transmission-home" \
PUID=\
PGID=

# Expose port and run
EXPOSE 9091

+ 7
- 2
Dockerfile.armhf 查看文件

@@ -16,7 +16,10 @@ RUN apt-get update \
&& dpkg -i dumb-init_*.deb \
&& rm -rf dumb-init_*.deb \
&& apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* \
&& curl -L https://github.com/jwilder/dockerize/releases/download/v0.2.0/dockerize-linux-armhf-v0.2.0.tar.gz | tar -C /usr/local/bin -xzv
&& curl -L https://github.com/jwilder/dockerize/releases/download/v0.2.0/dockerize-linux-armhf-v0.2.0.tar.gz | tar -C /usr/local/bin -xzv \
&& groupmod -g 1000 users \
&& useradd -u 911 -U -d /config -s /bin/false abc \
&& usermod -G users abc

# Add configuration and scripts
ADD openvpn/ /etc/openvpn/
@@ -96,7 +99,9 @@ ENV OPENVPN_USERNAME=**None** \
"TRANSMISSION_UTP_ENABLED=true" \
"TRANSMISSION_WATCH_DIR=/data/watch" \
"TRANSMISSION_WATCH_DIR_ENABLED=true" \
"TRANSMISSION_HOME=/data/transmission-home"
"TRANSMISSION_HOME=/data/transmission-home" \
PUID=\
PGID=

# Expose port and run
EXPOSE 9091

+ 10
- 0
README.md 查看文件

@@ -84,6 +84,16 @@ As you can see the variables are prefixed with `TRANSMISSION_`, the variable is
PS: `TRANSMISSION_BIND_ADDRESS_IPV4` will be overridden to the IP assigned to your OpenVPN tunnel interface.
This is to prevent leaking the host IP.

### User configuration options

By default everything will run as the root user. However, it is possible to change who runs the transmission process.
You may set the following parameters to customize the user id that runs transmission.

| Variable | Function | Example |
|----------|----------|-------|
|`PUID` | Sets the user id who will run transmission | `PUID=1003`|
|`PGID` | Sets the group id for the transmission user | `PGID=1003` |

## Access the WebUI
But what's going on? My http://my-host:9091 isn't responding?
This is because the VPN is active, and since docker is running in a different ip range than your client the response

+ 4
- 1
transmission/environment-variables.tmpl 查看文件

@@ -73,4 +73,7 @@ export TRANSMISSION_WATCH_DIR={{ .Env.TRANSMISSION_WATCH_DIR }}
export TRANSMISSION_WATCH_DIR_ENABLED={{ .Env.TRANSMISSION_WATCH_DIR_ENABLED }}

# Transmission needs to know which VPN provider is used
export OPENVPN_PROVIDER={{ .Env.OPENVPN_PROVIDER }}
export OPENVPN_PROVIDER={{ .Env.OPENVPN_PROVIDER }}

export PUID={{ .Env.PUID }}
export PGID={{ .Env.PGID }}

+ 3
- 1
transmission/start.sh 查看文件

@@ -19,8 +19,10 @@ if [ ! -e "/dev/random" ]; then
ln -s /dev/urandom /dev/random
fi

. /etc/transmission/userSetup.sh

echo "STARTING TRANSMISSION"
exec /usr/bin/transmission-daemon -g ${TRANSMISSION_HOME} --logfile ${TRANSMISSION_HOME}/transmission.log &
exec sudo -u ${RUN_AS} /usr/bin/transmission-daemon -g ${TRANSMISSION_HOME} --logfile ${TRANSMISSION_HOME}/transmission.log &

if [ "$OPENVPN_PROVIDER" = "PIA" ]
then

+ 33
- 0
transmission/userSetup.sh 查看文件

@@ -0,0 +1,33 @@
#!/bin/sh

# More/less taken from https://github.com/linuxserver/docker-baseimage-alpine/blob/3eb7146a55b7bff547905e0d3f71a26036448ae6/root/etc/cont-init.d/10-adduser

RUN_AS=root

if [ -n "$PUID" ] && [ ! "$(id -u root)" -eq "$PUID" ]; then
RUN_AS=abc
if [ ! "$(id -u ${RUN_AS})" -eq "$PUID" ]; then usermod -o -u "$PUID" ${RUN_AS} ; fi
if [ ! "$(id -g ${RUN_AS})" -eq "$PGID" ]; then groupmod -o -g "$PGID" ${RUN_AS} ; fi

echo "Setting owner for transmission paths to ${PUID}:${PGID}"
chown -R ${RUN_AS}:${RUN_AS} ${TRANSMISSION_HOME}
chown ${RUN_AS}:${RUN_AS} \
/config \
${TRANSMISSION_DOWNLOAD_DIR} \
${TRANSMISSION_INCOMPLETE_DIR} \
${TRANSMISSION_WATCH_DIR}
fi

echo "
-------------------------------------
Transmission will run as
-------------------------------------
User name: ${RUN_AS}
User uid: $(id -u ${RUN_AS})
User gid: $(id -g ${RUN_AS})
-------------------------------------
"

export PUID
export PGID
export RUN_AS

正在加载...
取消
保存