Skip to main content

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.

info

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:

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
TLDR—just show me the Docker Compose copypasta.

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

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 files cross-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 like http://user:pass@localhost:8080/RPC2
    • qbittorrentUrl: For qBittorrent users. Often looks like http://user:pass@localhost:8080
    • transmissionRpcUrl: For Transmission users. Often looks like http://user:pass@localhost:9091/transmission/rpc
    • delugeRpcUrl: For Deluge users. Often looks like http://: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.

info

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: