Getting Started
Introduction
Cross-seeding is the practice of downloading a torrent from one tracker and using that data to seed across other trackers. This results in minimal downloads and instant seeding, making it a great way to build ratio and contribute to the community.
This software is designed primarily for private trackers. If you plan on cross-seeding on public trackers, please see our FAQ for more details.
Setting Up the Daemon
The most efficient way to use cross-seed
is to run it in daemon mode,
which continuously monitors for new downloads and cross-seeds them
automatically. Here's how to get everything up and running.
1. Install cross-seed
You can install cross-seed
using one of the following methods:
With npm
(recommended if you're not using Docker)
You'll need Node.js 20 or greater.
npm install -g cross-seed
cross-seed --version
With Unraid
For Unraid installation, see the Unraid guide.
With Docker
docker run ghcr.io/cross-seed/cross-seed:6 --version
Here you go:
version: "2.1"
services:
cross-seed:
image: ghcr.io/cross-seed/cross-seed:6
container_name: cross-seed
user: 1000:1000 # optional but recommended
ports:
- "2468:2468"
volumes:
- /path/to/config/folder:/config
- /path/to/torrent_dir:/path/to/torrent_dir:ro # your torrent clients .torrent cache, can and should be mounted read-only (e.g. qbit:`BT_Backup` | deluge: `state` | transmission: `transmission/torrents` | rtorrent: session dir from `.rtorrent.rc`)
- /path/to/output/folder:/cross-seeds
command: daemon
restart: unless-stopped
- Run the container once which will generate the config file.
- Then skip to Step 3: Edit the Config File.
Otherwise, continue with the following steps.
2. Create a Config File
You'll need to generate a configuration file before running the daemon. Both Docker and non-Docker users will use the same method for this.
For non-Docker users:
Run the following command to generate a config file:
cross-seed gen-config
This will create a basic config.js
file at ~/.cross-seed/config.js
or
AppData\Local\cross-seed\config.js
. You can then edit this file to add the
necessary configurations.
For Docker users:
Docker users can generate the config file by running the following command:
docker run \
-v /path/to/config:/config \
ghcr.io/cross-seed/cross-seed gen-config
This will create a config.js
file inside the /config
directory you
specified. You'll need to open this file and edit it as described below.
3. Edit the Config File
Once you've created your config file, you'll need to fill in the necessary fields to connect to your torrent client and indexer. At a minimum, you should configure the following:
torznab
: URLs of your Torznab indexers (from Prowlarr or Jackett).torrentDir
: The directory where your .torrent files are located (from your torrent client).outputDir
: Create a new directory somewhere to house the torrent filescross-seed
outputs.- Connection to your torrent client: Depending on your client, you'll need
to specify one of the following:
rtorrentRpcUrl
: For rTorrent users. Often looks likehttp://user:pass@localhost:8080/RPC2
qbittorrentUrl
: For qBittorrent users. Often looks likehttp://user:pass@localhost:8080
transmissionRpcUrl
: For Transmission users. Often looks likehttp://user:pass@localhost:9091/transmission/rpc
delugeRpcUrl
: For Deluge users. Often looks likehttp://:pass@localhost:8112/json
(the colon before pass is intentional)
Here's an example of what your config.js
might look like:
module.exports = {
torznab: ["http://localhost:9696/1/api?apikey=123456"],
torrentDir: "/path/to/torrent_dir",
outputDir: "/path/to/output_dir",
qbittorrentUrl: "http://username:password@localhost:8080",
... several other settings you can read later ...
};
For more details on configuring the connection to your torrent client, refer to the reference guide on torrent client configuration.
4. Run the Daemon
Once you've set up your configuration, you're ready to run the daemon. Start the daemon with this command:
cross-seed daemon
Or, if you are using Docker, make sure to expose the paths cross-seed needs to access:
docker run \
-v /path/to/config:/config \
-v /path/to/torrent_dir:/path/to/torrent_dir \
-v /path/to/output:/path/to/output \
ghcr.io/cross-seed/cross-seed daemon
After a few moments, you should see cross-seed
automatically starting to
search for things in your catalog. It will also automatically scan your
trackers' RSS feeds for new releases you can cross-seed.
By default, RSS scans will happen every 30 minutes (determined by the
rssCadence
option).
Bulk searches of 400 torrents in your catalog (determined by
searchLimit
,
excludeRecentSearch
, and
excludeOlder
) will run daily (determined by
searchCadence
).
For now, you can leave the terminal open to keep the daemon running.
Troubleshooting
If any configuration issues arise, cross-seed
will provide feedback in the
terminal, which helps guide you through fixing them. To see more detailed
output, which may help you debug your errors, you can use the --verbose
flag:
cross-seed daemon --verbose
Regardless of the --verbose
flag, cross-seed
will also always log the
verbose output to <your cross-seed config dir>/logs/verbose.current.log
.
Some common errors are also listed in the FAQ and Troubleshooting page.
Next Steps
Once you have the daemon up and running, here are a few additional features you might want to explore:
- Managing the daemon with Docker or systemd for long-term use.
- Notifying cross-seed of completed downloads to search for new things more quickly.
- Listening for announces (external link) to join new swarms as an uploader.
- Setting up partial matches to increase your seed size even more (at the cost of downloading a few extra NFO files).
- Setting up ID-based searching for better match rates by configuring Sonarr and Radarr
- Explore cross-seed's configuration options to customize
cross-seed
's behavior to your liking.