Skip to content

Connect to Transmission from local network or docker host #61

@donb55

Description

@donb55

Running Docker version 27.5.0, build a187fa5 on Ubuntu 24.04.1 LTS.
The host computer running Ubuntu/docker is on 192.168.5.254
The client computer connecting to transmission is on 192.168.5.12
I used this docker run command:

docker run --mount type=bind,src==/var/lib/transmission-daemon/downloads --env=ACTIVATION_CODE= --env=SERVER=usde --env=T_ALLOWED=<my local subnet ie. 192.168.5.*> --env=T_USERNAME=don --env=T_PASSWORD=welcome --cap-add=NET_ADMIN --device=/dev/net/tun --privileged --detach=true --tty=true -p 9091:9091 --name=expressvpn-transmission polkaned/expressvpn-transmission

This creates the container and is runs fine.

docker inspect expressvpn-transmission
[
{
"Id": "4c8803e1b9468dd7a3d7ff6fdb11d69cd6eea74f2526f2942b5785ee2ac6f3a4",
"Created": "2025-01-19T18:20:14.397960348Z",
"Path": "/bin/bash",
"Args": [
"/tmp/entrypoint.sh",
"/bin/bash",
"/tmp/transmission.sh"
],
"State": {
"Status": "running",
"Running": true,
"Paused": false,
"Restarting": false,
"OOMKilled": false,
"Dead": false,
"Pid": 6940,
"ExitCode": 0,
"Error": "",
"StartedAt": "2025-01-19T18:20:14.511772009Z",
"FinishedAt": "0001-01-01T00:00:00Z"
},
"Image": "sha256:565f06fbfc21fdde9622daf4d5b46057919200c98d30bb670c01e43c3237cf8d",
"ResolvConfPath": "/var/lib/docker/containers/4c8803e1b9468dd7a3d7ff6fdb11d69cd6eea74f2526f2942b5785ee2ac6f3a4/resolv.conf",
"HostnamePath": "/var/lib/docker/containers/4c8803e1b9468dd7a3d7ff6fdb11d69cd6eea74f2526f2942b5785ee2ac6f3a4/hostname",
"HostsPath": "/var/lib/docker/containers/4c8803e1b9468dd7a3d7ff6fdb11d69cd6eea74f2526f2942b5785ee2ac6f3a4/hosts",
"LogPath": "/var/lib/docker/containers/4c8803e1b9468dd7a3d7ff6fdb11d69cd6eea74f2526f2942b5785ee2ac6f3a4/4c8803e1b9468dd7a3d7ff6fdb11d69cd6eea74f2526f2942b5785ee2ac6f3a4-json.log",
"Name": "/expressvpn-transmission",
"RestartCount": 0,
"Driver": "overlay2",
"Platform": "linux",
"MountLabel": "",
"ProcessLabel": "",
"AppArmorProfile": "",
"ExecIDs": [
"41d8ffaafcbd5d56de304e4c201d6e318b41a82b1b2c190752ed8200a0af6183"
],
"HostConfig": {
"Binds": null,
"ContainerIDFile": "",
"LogConfig": {
"Type": "json-file",
"Config": {}
},
"NetworkMode": "bridge",
"PortBindings": {
"9091/tcp": [
{
"HostIp": "",
"HostPort": "9091"
}
]
},
"RestartPolicy": {
"Name": "no",
"MaximumRetryCount": 0
},
"AutoRemove": false,
"VolumeDriver": "",
"VolumesFrom": null,
"ConsoleSize": [
24,
80
],
"CapAdd": [
"NET_ADMIN"
],
"CapDrop": null,
"CgroupnsMode": "private",
"Dns": [],
"DnsOptions": [],
"DnsSearch": [],
"ExtraHosts": null,
"GroupAdd": null,
"IpcMode": "private",
"Cgroup": "",
"Links": null,
"OomScoreAdj": 0,
"PidMode": "",
"Privileged": true,
"PublishAllPorts": false,
"ReadonlyRootfs": false,
"SecurityOpt": [
"label=disable"
],
"UTSMode": "",
"UsernsMode": "",
"ShmSize": 67108864,
"Runtime": "runc",
"Isolation": "",
"CpuShares": 0,
"Memory": 0,
"NanoCpus": 0,
"CgroupParent": "",
"BlkioWeight": 0,
"BlkioWeightDevice": [],
"BlkioDeviceReadBps": [],
"BlkioDeviceWriteBps": [],
"BlkioDeviceReadIOps": [],
"BlkioDeviceWriteIOps": [],
"CpuPeriod": 0,
"CpuQuota": 0,
"CpuRealtimePeriod": 0,
"CpuRealtimeRuntime": 0,
"CpusetCpus": "",
"CpusetMems": "",
"Devices": [
{
"PathOnHost": "/dev/net/tun",
"PathInContainer": "/dev/net/tun",
"CgroupPermissions": "rwm"
}
],
"DeviceCgroupRules": null,
"DeviceRequests": null,
"MemoryReservation": 0,
"MemorySwap": 0,
"MemorySwappiness": null,
"OomKillDisable": null,
"PidsLimit": null,
"Ulimits": [],
"CpuCount": 0,
"CpuPercent": 0,
"IOMaximumIOps": 0,
"IOMaximumBandwidth": 0,
"Mounts": [
{
"Type": "bind",
"Source": "",
"Target": "/var/lib/transmission-daemon/downloads"
}
],
"MaskedPaths": null,
"ReadonlyPaths": null
},
"GraphDriver": {
"Data": {
"LowerDir": "/var/lib/docker/overlay2/ccdf0c1cb9e89715b2441ba74c61e22c74361c5eeb894fdc2da0d516228dae25-init/diff:/var/lib/docker/overlay2/6b05ed485c43a72295db2b6c76df9fc10bd2f4f9e8a9170a3c2fda72dc8a8d56/diff:/var/lib/docker/overlay2/c9ceabcedf2ffb82d1438166a29b1e71133aa10a579107853e668cd0f7c51731/diff:/var/lib/docker/overlay2/39ab4ebde9ec726bf4ba831ad42d4c6f1d0a617bbd3ca63bc602c8f56005a1a5/diff:/var/lib/docker/overlay2/734637fdbf3485135b13ea928f52f15f11662dfc7324c19d47a0679a0b4b76e4/diff:/var/lib/docker/overlay2/2286992a45c698410c49bde449c0bf1a330634234a09a384452264d71243d465/diff:/var/lib/docker/overlay2/2b90ab69245d10c2b650a90423c6bb8ddbec0781d53e9b3784e4d14c9b6813c4/diff",
"MergedDir": "/var/lib/docker/overlay2/ccdf0c1cb9e89715b2441ba74c61e22c74361c5eeb894fdc2da0d516228dae25/merged",
"UpperDir": "/var/lib/docker/overlay2/ccdf0c1cb9e89715b2441ba74c61e22c74361c5eeb894fdc2da0d516228dae25/diff",
"WorkDir": "/var/lib/docker/overlay2/ccdf0c1cb9e89715b2441ba74c61e22c74361c5eeb894fdc2da0d516228dae25/work"
},
"Name": "overlay2"
},
"Mounts": [
{
"Type": "bind",
"Source": "Host directory name",
"Destination": "/var/lib/transmission-daemon/downloads",
"Mode": "",
"RW": true,
"Propagation": "rprivate"
}
],
"Config": {
"Hostname": "4c8803e1b946",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"ExposedPorts": {
"9091/tcp": {}
},
"Tty": true,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"T_USERNAME=don",
"T_PASSWORD=welcome",
"ACTIVATION_CODE=EYYXUBR4NUMLCJWJ8YLZHUB",
"SERVER=usde",
"T_ALLOWED=192.168.5.*",
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"LOCATION=smart",
"PREFERRED_PROTOCOL=auto",
"LIGHTWAY_CIPHER=auto"
],
"Cmd": [
"/bin/bash",
"/tmp/transmission.sh"
],
"Image": "polkaned/expressvpn-transmission",
"Volumes": null,
"WorkingDir": "",
"Entrypoint": [
"/bin/bash",
"/tmp/entrypoint.sh"
],
"OnBuild": null,
"Labels": {
"maintainer": "benjamin@polkaned.net"
}
},
"NetworkSettings": {
"Bridge": "",
"SandboxID": "56d3b296c55391433a04a10071447acc6b53414fe1cb479e8be1afc70d03419c",
"SandboxKey": "/var/run/docker/netns/56d3b296c553",
"Ports": {
"9091/tcp": [
{
"HostIp": "0.0.0.0",
"HostPort": "9091"
}
]
},
"HairpinMode": false,
"LinkLocalIPv6Address": "",
"LinkLocalIPv6PrefixLen": 0,
"SecondaryIPAddresses": null,
"SecondaryIPv6Addresses": null,
"EndpointID": "5f59b1ef4e549b53d94dab5399cd73513a8cd596997bdd2187ae219b466b5207",
"Gateway": "172.17.0.1",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"IPAddress": "172.17.0.3",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"MacAddress": "02:42:ac:11:00:03",
"Networks": {
"bridge": {
"IPAMConfig": null,
"Links": null,
"Aliases": null,
"MacAddress": "02:42:ac:11:00:03",
"DriverOpts": null,
"NetworkID": "6f8fcc542bfeeed3e6ac95ab7924cb22ea99d1ec317e36b2c3d0835507a5b313",
"EndpointID": "5f59b1ef4e549b53d94dab5399cd73513a8cd596997bdd2187ae219b466b5207",
"Gateway": "172.17.0.1",
"IPAddress": "172.17.0.3",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"DNSNames": null
}
}
}
}
]

When I connect to a container shell:

expressvpn status: shows connected to Denver
ip address: shows the container local address is 172.17.0.3 and the tunnel address is an expressvpn assigned address and dns (peer)

When I try to connect to transmission http://192.168.5.254 the container host address> from a local host on the 192.168.5.x network I get:

403: Forbidden
Unauthorized IP Address.
Either disable the IP address whitelist or add your address to it.
If you're editing settings.json, see the 'rpc-whitelist' and 'rpc-whitelist-enabled' entries.
If you're still using ACLs, use a whitelist instead. See the transmission-daemon manpage for details.

So, I go to the Ubuntu/docker host and run Firefox. http://127.0.0.1:9091 I see the same 403 error as above.

At the docker host in Firefox httpd://172.17.0.3 returns

Unable to connect

Firefox can’t establish a connection to the server at 172.17.0.3:9091.

The site could be temporarily unavailable or too busy. Try again in a few moments.
If you are unable to load any pages, check your computer’s network connection.
If your computer or network is protected by a firewall or proxy, make sure that Firefox is permitted to access the web.

Please advise how I can connect to Transmission in this container.

Thanks.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions