Last updated on 28 April 2025
**Summary**: This comprehensive guide details the setup of the cross-seed project for self-hosting torrent downloads efficiently. Learn how to manage diverse torrent clients and connect with popular media management tools like Radarr and Sonarr. Enhance your self-hosting experience and contribute positively to the torrent community by optimizing your configuration for effective cross-seeding.
This community-driven article is supported by Discord members including ancionio, K18DLP, and geebru. For a deeper understanding, consult the cross-seed documentation.
Setting Up Cross-Seed for Self-Hosting
Cross-seeding allows users to download a torrent from one tracker while seeding it across other trackers, minimizing download time and simplifying the process of maintaining ratio. This guide focuses primarily on torrent functionality.
Get ready to set up a tailored cross-seed environment. We’ll manage the installation through straightforward configurations and Docker setups. Let’s dive in!
Creating Necessary Directories
Begin your setup by preparing dedicated folders for cross-seeding:
/volume1/docker/cross-seed
/volume1/docker/cross-seed/cross-seeds
/volume1/data/torrents/cross-seed-links
These folders will keep your cross-seed configurations organized, ensuring that your original downloads remain intact.
Initial Docker Compose Configuration
Integrate cross-seed within your existing Docker project for applications like qBittorrent or Deluge. Here’s the sample compose section:
services:
cross-seed:
image: ghcr.io/cross-seed/cross-seed:latest
container_name: cross-seed
user: 1234:5678
environment:
- TZ=Europe/London
ports:
- 2468:2468
volumes:
- /volume1/docker/cross-seed:/config
- /volume1/docker/cross-seed/cross-seeds:/cross-seeds
- /volume1/data:/data
command: daemon
network_mode: synobridge
depends_on:
qbittorrent:
condition: service_started
restart: unless-stopped
After saving, build and restart your Docker project. This will create a config.js
file in your specified directory. Use SSH to assign editing permissions:
sudo chmod o+rw /volume1/docker/cross-seed/config.js
Configuring Cross-Seed
For a basic setup, you will need to edit the config.js
file to include track settings and correctly connect your torrent clients. The default Synobridge IP used is 172.20.0.1.
Setting Up Trackers
Configure the trackers in config.js
using your Prowlarr Torznab URLs:
torznab: [
"http://172.20.0.1:9696/1/api?apikey=prowlarr-api-key",
"http://172.20.0.1:9696/2/api?apikey=prowlarr-api-key",
]
It’s essential to retrieve your indexers directly from Prowlarr to integrate seamlessly with cross-seed.
Connecting Radarr and Sonarr
Enhance your cross-seeding by connecting Radarr and Sonarr. Enter the corresponding URLs and API keys in your config.js
file:
sonarr: ["http://172.20.0.1:8989/?apikey=12345"],
radarr: ["http://172.20.0.1:7878/?apikey=67890"],
Configuring Torrent Clients
For a reliable cross-seed setup, you need to connect your torrent clients effectively. Here’s an example for both qBittorrent and Deluge:
qBittorrent Setup:
torrentClients: ["qbittorrent:http://username:password@172.20.0.1:8090/"],
Deluge Setup:
torrentClients: ["deluge:http://:password@172.20.0.1:8112/json"],
Ensure you URL encode any special characters in your passwords to avoid potential issues.
Directory Configurations
linkDirs
defines links to matched files. Set it tolinkDirs: ["/data/torrents/cross-seed-links"]
.outputDir
indicates where cross-seed saves files:outputDir: "/cross-seeds"
.- If using Deluge, configure
torrentDir
accordingly.
Save and re-run your project to solidify these changes. Finally, monitor your logs for troubleshooting and ensure everything runs smoothly.
Frequently Asked Questions
What if Cross-Seed Complains about My `torrentDir`?
As of v6.9.0, it is recommended to utilize qBittorrent’s API directly. To update, set useClientTorrents: true,
in your config file, change torrentDir
to null
, and remove unnecessary volume mounts.
How Can I Customize My Cross-Seed Setup?
Configurations can be tailored further through the config.js
file, allowing additional adjustments based on your unique media needs and project scope.