Ahoy, me hearties!
Listen well, me brethren! I've just acquired a fine NAS, and I be lookin' to bolster our magnificent pirate community by sharing me digital plunder far and wide. But alas, it's come to me attention that the uploads on all me torrents be as small as a speck of sand on the ocean floor, or worse, a big fat zero!
Now, I beseech ye, me shipmates, lend me yer wisdom. How can I fortify our pirate brotherhood? What be the proper settings for me NAS? Be there any trusty trackers or tools to help me upload and distribute the most crucial booty to aid our cause on the high seas?
Speak up, ye seasoned scallywags, and together we shall chart a course toward a stronger, more formidable pirate crew! 🏴☠️🦜⚓
Ahoy, matey! If ye be lookin' to improve the seedin' of yer torrents, I've got a few tips that'll make yer digital treasure spread faster than a sailor's rumor in a tavern. First off, make sure ye be havin' a proper port open on yer ship – aye, that's the port-forwardin' business. Next, check if yer ship's crew, I mean, yer torrent client, be allowed through the firewall. Ye don't want no scallywag blockin' yer signal.
Now, here be the trick to gettin' more swashbucklers to join yer crew – keep that torrent active, savvy? No need to be a lazy landlubber and abandon ship as soon as ye finish downloadin'. The more ye be sharin', the more likely others'll join the ranks.
And let's not forget about those trackers, the navigational stars of yer torrentin' voyage. Find yerself some trackers with plenty of hearties on 'em, and add 'em to yer torrent – that'll give ye more chances to connect with fellow buccaneers sailin' the same waters.
Last but not least, be mindful of yer upload rate, matey. Don't be a hog, sharin' is carin' in the high seas of torrentin'. Set yer upload rate to a fair share, and ye'll be well on yer way to becomin' a respected seeder in the pirate bay. Arrr, happy torrentin' and smooth sailin', ye digital pirate! 🏴☠️
Spoken with the spirit of a genuine sea rover, me matey, but listen here, we must band together as brethren to stand strong against the mighty organizations that threaten our way of life on the vast and treacherous ocean!
If no one seeds... then logically no one can leech. Seeding is what keeps torrents alive.
What software/OS are you running on your NAS? If you're running some goofy software on a private tracker your client might not be whitelisted.
Besides that - this NAS is attached to your home network I assume? Is it behind a router? Are the ports you're using for torrenting port-forwarded?
What tracker are you testing this on? A bunch of trackers will have a "Connectivity check" that will tell you whether or not your client is connectable
I be sailin' the digital seas with a trusty QNAP OS and the mighty QBittorrent, but I be a greenhorn in this life on the high seas. Me heart's desire be to contribute to our pirate brotherhood by becoming a proper seederman.
Be ye privy to a treasure map, a definitive guide, that can steer me in the right direction to turn me NAS into a fearsome seedin' contraption fit for the high seas?
I don't know if there's a "definitive guide" - it's not that complicated to get a torrent client up and running. What kind of content are you looking for? Movies, Series, Music, Games, Books..?
Best is probably to try to get access to a decent private tracker, and an "easy" one - one with a bonus point system for seeding and uptime - that makes it much easier to keep a good ratio with a NAS, if you're just permanently seeding everything you download, you'll get points and "rise the ranks" of that tracker.
Once you're a high enough rank on that tracker, you'll get access to their "Invite Forums" where other private trackers advertise and give out invites to their trackers
There are two low level tricks that make a huge difference for seeding, even if you can't open ports. These are generic Linux tweaks, you may have to adapt them for QNAP depending on how customized it is. Ask me if you need help. As far as I can tell you need to ssh to the "admin" acount, so open a command line and type
ssh admin@
your-nas
.To make both tweaks permanent you need to edit
/etc/sysctl.conf
. you can try editing them withnano
. If you don't havenano
you'll have to try withvi
, butvi
is not intuitive at all to use.nano /etc/sysctl.conf
-
The first tweak makes you a lot more effective to peers that are on unstable connections and on wi-fi. Google uses it for most of their infrastructure, originally on YouTube. You can read their article for more info on how it works.
Add this line to
/etc/sysctl.conf
, closenano
with ctrl-X, and reboot:net.ipv4.tcp_congestion_control = bbr
-
The second tweak decides how fast you can upload to people far away from you. If you calculate 2 * this value / your latency to them, you get the max speed you can upload to them. For simplicity I set it to be the same as my upload speed: let's say you have 10 MB/s upload, that's 10000000 bytes / second:
Add this line to
/etc/sysctl.conf
, closenano
with ctrl-X, and reboot:net.core.wmem_max = 10000000
This way even someone in Australia with 500 ms of latency can download at 10 MB/s from you, (2 * 10000000 bytes / 0.500s = 10 MB/s)
After rebooting you can check if the setting stuck with the command
sysctl net.ipv4.tcp_congestion_control
andsysctl net.core.wmem_max
respectively.For any of this to make a difference you should disable µTP in your torrent client, or make it prefer TCP over µTP.
To me it makes an enormous difference, from barely any upload at all to 100 GB per day. And I'm sure it's nice for whoever is downloading on the other side to get what they're looking for super fast.
For any of this to make a difference you should disable µTP in your torrent client, or make it prefer TCP over µTP.
Just as a caveat, people disabling/throttling µTP may want to manually set appropriate global rate limits (upload/download bandwidth) otherwise it's possible the torrent client will actually hit the maximum upload/download limits of the ISP or router forcing everything else on the network to slow down/time out during other internet usage. You're obviously more advanced so you already know all this :)
Mainly it's extra info for noobs messing around with their settings, often times noobs mess around with settings, disable things, etc. & then wonder why their torrent client keeps "crashing" their internet :P Making changes to µTP should be more of a last resort IMO.
µTP itself is a pretty big topic, there are a fair amount of people testing different settings in the qBittorrent / Libtorrent Github Issues but I'm not sure there's even a consensus on a proper default setting. e.g. qBittorrent's devs specifically chose different µTP defaults vs the Libtorrent library's own defaults. qBittorrent defaults to having µTP enabled with preferring TCP (throttles µTP), Libtorrent defaults to having µTP enabled with peer_proportional (does not throttle µTP). The qBittorrent default is reasonable though I wonder if the Libtorrent default is the more "correct" approach but that's certainly up to much debate. In both cases µTP is never disabled completely.
With my own testing I tend to keep settings at Libtorrent defaults just to observe behavior, with mainly private tracker peers I've noticed at least ~60% of my incoming connections are from µTP peers so at least for me it seems reasonable to keep it enabled.
The big problem with disabling µTP is that because it uses UDP, under some kinds of NAT you can get incoming connections despite being NATted. So you will loose some peers if you're behind a NAT. If you're not NATted there's no connectability advantage, because every client that implements µTP can fall back to TCP.
The big advantage to disabling it that you can tweak these things. I don't know of any client that lets you choose which congestion control algorithm that µTP uses. They all use one called LEDBAT that's one of the first attempts to design one that avoids "bufferbloat", i.e. that problem where the torrents fill up the buffers in routers and "clog up the Internet". That's nice however it doesn't work well with networks with a lot of jitter like wi-fi, and it "loses" to algorithms that do fill up the buffer like the default TCP CUBIC. BBR avoids bufferbloat and is designed to keep working well with high jitter—Google's intention was to make YouTube load faster on mobile phones. It also it wins over CUBIC, which is why almost every seedbox comes configured with no µTP and BBR congestion control. However, because it wins over CUBIC it will "clog up the Internet" in a different way: you may get lower speeds on everything else but don't lose interactivity.
Linux comes with a different version of BBR that's tuned to always yield to other traffic called lp. You enable it with
net.ipv4.tcp_congestion_control = lp
. I think lp is the optimal choice for seeding public torrents: you give full speed to faraway peers, but only when there's nobody else that can do it.
-
I use automatic torrent management mode with qBittorrent for most things and set it to seed every torrent for 40 days (iirc). If I had unlimited storage space, I'd probably seed forever, but I found that 40 days works well for me.
Also, don't use a Debrid service. These services just leech requested torrents and then instantly stop seeding (if they even upload during download, not sure). This is bad for torrent health on public trackers, and will quickly get you banned on private trackers.
There's very little info to work with so it's unlikely you'll receive any specific advice.
But mainly you do want to be fully connectable (port forwarded) so check that. Go to any port test website (https://www.canyouseeme.org/, https://www.yougetsignal.com/tools/open-ports/, etc.) and enter your torrent client's incoming connection port there. (for qBittorrent that is in Tools / Options / Connection / Listening Port)
If that test fails then you need to figure out what is blocking your torrent client's incoming connection port.
- If you're using a proxy that's the issue, won't get an incoming connection port via proxy
- If you're using a VPN service that does not support port forwarding then that's the issue, it is impossible to port forward on a VPN without port forwarding support
- If you're using a VPN service with port forwarding support then go to their website & figure out how to configure it, each VPN service is slightly different
- If you're not using a VPN/Proxy then most likely you'll need to log into your network router/firewall & configure a port forward there. Basically create a port forward for your torrent client's incoming connection port & point it to your local system on the network (your NAS)
Also make sure to whitelist your torrent client in any anti-virus/malware software you are using, those will definitely slow you down and/or block connections to your torrent client.
There's potentially other issues but everyone starts with being connectable first.
Can someone explain to me what port forwarding in the context of torrenting is about? I use qbittorrent and nordvpn in docker containers and have never exposed/forwarded a port but get more than adequate upload/download speeds.
Port forwarding allows you to bypass your NAT firewall which will naturally block all unsolicited traffic on a closed port. What that means for a torrent download is peers cannot introduce themselves to you and create a new connection, you can only connect to active peers who have their ports open.
Just to add more background to that, before your torrent can begin downloading pieces from various peers, you need to know the address of the peers sharing the pieces you need. Typically that is handled by the tracker and/or DHT. A tracker acts as sort of a logistics middle-man. It helps facilitate efficient transmission between peers by tracking what each peer has and needs. If peer B needs piece X, the tracker will supply peer B with the address to peer A who has piece X. Assuming peer A has their incoming port open, they will accept the request for piece X and send it to peer B. If their port is closed, the request will simply be denied and no traffic will be shared between the peers. The tracker's address, as well as the data hash and some other misc data is coded into the torrent file. DHT is a little more unique and complicated. It is a fully distributed hash table on a P2P network and does not rely on a tracker at all, it's strictly P2P. The only little catch to that is to initially introduce yourself into the network you need to bootstrap your connection using some hardcoded addresses, often from a very centralized source. Port forwarding becomes much more important for DHT because after the initial bootstrap, there is no middle-man, it's strictly peer to peer and by having your ports closed, your client can't effectively communicate across the network. Without two-way communication across peers, your client will generally be stuck with a very limited pool of peers it can communicate with. Magnet links as well as most torrent clients utilize DHT.
One reason it's not so noticeable these days when ports are closed is because many torrent peers exist in big data centers with virtually unlimited bandwidth. When torrents were still young, most if not all peers were hosted on consumer grade hardware at a residence so you needed every connection you could get.
If your torrent download happens to be a well-known Linux ISO, chances are very likely that there will be at least two or three peers you'll connect to that exist in a data center, they will most likely account for 80%+ of your download speed.
Blocking ports ultimately hurts seeding the most which can effect the overall "health" of a torrent. Say a peer labeled A can't connect to those giant data center peers for whatever reason, they now have to seek out other peers that may have the data they are looking for. If all the other peers have their ports closed, well then the torrent is essentially dead for peer A and they'll have to either wait for someone with open ports to come online and start seeding or search for an entirely new torrent.
Sorry, this was a bit of an on-the-go mind dump so please anyone correct me if I'm wrong anywhere here but that's pretty much the gist of port forwarding in the context of torrenting.
I'm immensely appreciative of this explanation, thank you. I believe I understand now.