Hi @binhex another great docker - thanks!
I keep having problems where rtorrent becomes unavailable - sometimes it recovers but it can take literally a day (if I'm patient and wait that long). I'm noticed that I can avoid this by waiting for the "working" animation to finish when e.g. changing labels, moving torrent locations etc. But, it's still very delicate and locks me out frequently. Restarting the docker doesn't fix the problem and I just have to wait it out - rebooting unRAID helps, but isn't ideal.
I get errors like this in my logs:
2021-08-04 08:42:03,544 DEBG 'rutorrent-script' stderr output:
2021/08/04 08:42:03 [error] 2333#2333: *8409 upstream prematurely closed connection while reading response header from upstream, client: 172.17.0.1, server: localhost, request: "POST /RPC2 HTTP/1.1", upstream: "scgi://127.0.0.1:5000", host: "192.168.1.1:9080"
2021-08-04 08:40:15,939 DEBG 'watchdog-script' stdout output:
[warn] Wait for rTorrent process to start aborted, too many retries
[warn] Failed to start rTorrent, skipping initialisation of ruTorrent Plugins...
2021-08-04 08:40:53,117 DEBG 'rutorrent-script' stderr output:
2021/08/04 08:40:53 [error] 2333#2333: *8397 connect() failed (111: Unknown error) while connecting to upstream, client: 172.17.0.1, server: localhost, request: "POST /RPC2 HTTP/1.1", upstream: "scgi://127.0.0.1:5000", host: "192.168.1.1:9080"
2021-08-04 08:38:43,583 DEBG 'watchdog-script' stdout output:
[warn] Wait for rTorrent process to start aborted, too many retries
[warn] Failed to start rTorrent, skipping initialisation of ruTorrent Plugins...
2021-08-04 08:46:27,001 DEBG 'rutorrent-script' stderr output:
2021/08/04 08:46:27 [error] 2333#2333: *8450 connect() failed (111: Unknown error) while connecting to upstream, client: 172.17.0.1, server: localhost, request: "POST /RPC2 HTTP/1.1", upstream: "scgi://127.0.0.1:5000", host: "192.168.1.1:9080"
Any ideas what's wrong? Thanks in advance.
# This is an example resource file for rTorrent. Copy to
# ~/.rtorrent.rc and enable/modify the options as needed. Remember to
# uncomment the options you wish to enable.
# rTorrent log file locations
execute = {/bin/bash,-c,mkdir -p /config/rtorrent/logs}
log.open_file = "rtorrent", /config/rtorrent/logs/rtorrent.log
log.open_file = "tracker", /config/rtorrent/logs/tracker.log
log.open_file = "storage", /config/rtorrent/logs/storage.log
# rTorrent logging verbosity for rtorrent, comment out if logs are too chatty
log.add_output = "info", "rtorrent"
log.add_output = "critical", "rtorrent"
log.add_output = "error", "rtorrent"
log.add_output = "warn", "rtorrent"
log.add_output = "notice", "rtorrent"
log.add_output = "debug", "rtorrent"
# rTorrent logging for dht and tracker traffic
log.add_output = "dht_debug", "tracker"
log.add_output = "tracker_debug", "tracker"
# rTorrent logging for storage
log.add_output = "storage_debug", "storage"
# Maximum number of simultaneous downloads and uploads slots (global slots!) (`max_downloads_global`, `max_uploads_global`)
#
throttle.max_downloads.global.set = 10
throttle.max_uploads.global.set = 3000
# Global upload and download rate in KiB. "0" for unlimited.
#
# throttle.global_down.max_rate.set_kb = 0
throttle.global_up.max_rate.set_kb = 3000
throttle.global_down.max_rate.set_kb = 0
# Maximum number of simultaneous downloads and uploads slots per torrent (`max_uploads`) Default: `50` for both
#
#throttle.max_downloads.set = 50
#throttle.max_uploads.set = 8
# Maximum and minimum number of peers to connect to per torrent.
#
#throttle.min_peers.normal.set = 100
#throttle.max_peers.normal.set = 200
# Same as above but for seeding completed torrents (-1 = same as downloading)
#
#throttle.min_peers.seed.set = 10
#throttle.max_peers.seed.set = 50
# Maximum number of connections rtorrent can accept/make (`sockets`)
#
#network.max_open_sockets.set = 1200
# Maximum number of open files rtorrent can keep open (you have to modify the system wide settings with ulimit!) (`set_max_open_files`)
#
network.max_open_files.set = 600
# Default directory to save the downloaded torrents.
#
execute = {/bin/bash,-c,mkdir -p /data/incomplete}
directory.default.set = /user/mount_mergerfs/tdrive_vfs/downloads/intermediate/rtorrent
# Default session directory. Make sure you don't run multiple instance
# of rtorrent using the same session directory. Perhaps using a
# relative path?
#
execute = {/bin/bash,-c,mkdir -p /config/rtorrent/session}
session.path.set = /config/rtorrent/session/
# Watch a directory for new torrents, and stop those that have been
# deleted.
#
#schedule2 = watch_directory,5,5,load.start=./watch/*.torrent
#schedule2 = untied_directory,5,5,stop_untied=
# Close torrents when diskspace is low.
#
schedule2 = low_diskspace,5,60,close_low_diskspace=100G
# The ip address reported to the tracker.
#
#network.local_address.set = 127.0.0.1
#network.local_address.set = rakshasa.no
# The ip address the listening socket and outgoing connections is
# bound to.
#
#network.bind_address.set = 127.0.0.1
#network.bind_address.set = rakshasa.no
# Port range to use for listening.
#
network.port_range.set = 42565-42565
# Start opening ports at a random position within the port range.
#
network.port_random.set = no
# Disable check for SSL cert for tracker
#
network.http.ssl_verify_peer.set = 0
# Check hash for finished torrents. Might be useful until the bug is
# fixed that causes lack of diskspace not to be properly reported.
#
#pieces.hash.on_completion.set = no
# Set whether the client should try to connect to UDP trackers.
#
trackers.use_udp.set = yes
# Set the maximum permitted single file size in a torrent.
# Note if you do not set this and attempt to start a torrent that
# contains a file larger than 512 GB (default) then the torrent will
# not start.
#
#system.file.max_size.set = 1024G
# Alternative calls to bind and ip that should handle dynamic ip's.
#
#schedule2 = ip_tick,0,1800,ip=rakshasa
#schedule2 = bind_tick,0,1800,bind=rakshasa
# Encryption options, set to none (default) or any combination of the following:
# allow_incoming, try_outgoing, require, require_RC4, enable_retry, prefer_plaintext
#
# allow_incoming - Allow incoming encrypted connections from other peers
# try_outgoing - Attempt to set up encryption when initiating a connection
# require - Require encryption, and reject to peers who don't support it
# require_RC4 - Require RC4 encryption specifically
# enable_retry - If a peer is rejected for not supporting the encryption we need, retry the handshake
# prefer_plaintext - Prefer plaintext encryption
#
protocol.encryption.set = allow_incoming,try_outgoing,enable_retry
# Enable DHT support for trackerless torrents or when all trackers are down.
# May be set to "disable" (completely disable DHT), "off" (do not start DHT),
# "auto" (start and stop DHT as needed), or "on" (start DHT immediately).
# The default is "off". For DHT to work, a session directory must be defined.
#
dht.mode.set = auto
# UDP port to use for DHT.
#
dht.port.set = 58124
# Enable peer exchange (for torrents not marked private)
#
protocol.pex.set = yes
# Set downlad list layout style. ("full", "compact")
#
#ui.torrent_list.layout.set = "full"
# SCGI Connectivity (for alternative rtorrent interfaces, XMLRPC)
#
# Use a IP socket with scgi_port, or a Unix socket with scgi_local.
# schedule can be used to set permissions on the unix socket.
#
scgi_port = 0.0.0.0:5000
#scgi_local = /home/user/rtorrent/rpc.socket
#schedule = scgi_permission,0,0,"execute.nothrow=chmod,\"g+w,o=\",/home/user/rtorrent/rpc.socket"
# Initialise ruTorrent plugins (required for rss and scheduler plugins) on startup
# (normally triggered by a browser opening the web ui).
#
# The command below in practice does NOT always trigger (possible race condition?) and thus
# the same command has been added to the script /home/nobody/initplugins.sh in order to
# attempt to ensure all plugins are initialised.
#
# NOTE - Do not double quote or curly brackets env var for 'WEBUI_USER'
#
execute = {/bin/bash,-c,/usr/bin/sleep 10s && /usr/bin/php /usr/share/webapps/rutorrent/php/initplugins.php $WEBUI_USER &}
root@Highlander:~# docker run --rm -v /var/run/docker.sock:/var/run/docker.sock red5d/docker-autocompose rtorrentvpn
version: "3"
services:
rtorrentvpn:
command:
- '/bin/bash /usr/local/bin/init.sh'
container_name: rtorrentvpn
cpuset: 1,2,3,4,8,9,13,14,15,17,18,19,20,24,25,29,30,31,
entrypoint:
- /usr/bin/tini
- -g
- --
environment:
- VPN_CLIENT=openvpn
- ENABLE_PRIVOXY=yes
- ENABLE_RPC2_AUTH=yes
- PGID=100
- PHP_TZ=UTC
- PUID=99
- VPN_ENABLED=yes
- ENABLE_RPC2=yes
- ENABLE_WEBUI_AUTH=yes
- NAME_SERVERS=209.222.18.222,84.200.69.80,37.235.1.174,1.1.1.1,209.222.18.218,37.235.1.177,84.200.70.40,1.0.0.1
- VPN_PROV=airvpn
- RPC2_USER=admin
- WEBUI_USER=admin
- WEBUI_PASS=###############
- VPN_OPTIONS=
- VPN_OUTPUT_PORTS=
- STRICT_PORT_FORWARD=yes
- RPC2_PASS=######################
- UMASK=000
- TZ=Europe/London
- HOST_OS=Unraid
- 'VPN_PASS=vpn password'
- LAN_NETWORK=192.168.1.0/24
- DEBUG=false
- 'VPN_USER=vpn username'
- ENABLE_AUTODL_IRSSI=no
- VPN_INPUT_PORTS=
- PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/nobody/bin
- HOME=/home/nobody
- TERM=xterm
- LANG=en_GB.UTF-8
hostname: 63ae208be953
image: binhex/arch-rtorrentvpn
ipc: private
logging:
driver: json-file
options:
max-file: 3
max-size: 50m
mac_address: 02:42:ac:11:00:0e
networks:
- bridge
ports:
- 19182:19182/tcp
- 42565:42565/tcp
- 42565:42565/udp
- 5000:5000/tcp
- 58124:58124/tcp
- 8118:8118/tcp
- 9080:9080/tcp
- 9443:9443/tcp
privileged: true
security_opt:
- label=disable
volumes:
- /mnt/user/downloads/rutorrent:/data:rw
- /mnt/user/:/user:rw
- /mnt/user/appdata/dockers/rtorrentvpn:/config:rw
networks:
bridge:
external: true
logs.txt