cross-seed
cross-seed is a tool that searches your indexers for torrents matching the data you already seed, so you can cross-seed the same content on more trackers. This guide walks you through installing, configuring, and running cross-seed on your Ultra service using the source build method. The install script is provided by the developer.
Prerequisites
- Python: Version 3.10 or newer
- Node.js: Version 22 LTS
Features
- Automatic Cross-Seeding: Scans your existing torrents and searches indexers for matches, enabling you to cross-seed with minimal effort.
- Flexible Matching: Offers multiple matching modes (strict, flexible, partial) to suit your accuracy and performance preferences.
- Client Integration: Injects matched torrents directly into your supported torrent client, streamlining the seeding process.
Installation
- Connect to your Ultra service via SSH. For help, refer to Connect to your Ultra slot via SSH.
- Install Node.js with the Node.js installer script:
bash <(wget -qO- https://scripts.ultra.cc/util-v2/LanguageInstaller/Node-Installer/main.sh)- The installer sets up nvm and installs the latest Node.js LTS release. The cross-seed install script requires Node.js 22, so install it and set it as your default version:
nvm install 22
nvm alias default 22- Install Python v3.10+ (recommended to run 3.10 unless another version is specifically needed):
bash <(wget -qO- https://scripts.ultra.cc/util-v2/LanguageInstaller/Python-Installer/main.sh)- Log out of your SSH session and log back in, or restart your terminal. This ensures Python and Node are available in your environment.
- Install cross-seed using the script provided by the developer specifically for the Ultra environment:
bash <(wget -qO- https://raw.githubusercontent.com/zakkarry/cross-seed-source-build/refs/heads/master/install_shared_env_xs.sh)- Follow the prompts in the script. Each install option includes a brief description to help you choose the best version.
Configuration
- Once successfully installed, you need to generate a configuration file.
- Run the following command to generate a
config.js:
cross-seed gen-config- Generate an API key and copy it into your
config.js:
cross-seed api-key- Edit
config.jswithnano:
nano ~/.cross-seed/config.js- Add all your application URLs (Prowlarr Torznab URLs, Jackett RSS feeds, *Arr apps, and download clients) to your
config.js. - Ensure you configure your
dataDirswith the download directory of your torrent client. - (Optional) You can change the matching mode with
matchMode, butflexibleis recommended. - For further configuration and customization, refer to the official documentation or the links displayed at each option in
config.js.
Run cross-seed
- Once you have configured
config.jswith your applications (you need at least a download client and one indexing application, e.g. qBittorrent and Prowlarr), run the following command to search your indexers for cross-seeds of your existing torrents:
cross-seed search- For other options for managing your application, refer to the official documentation.
Notes
- Restart your terminal session after you install or change Node.js or Python so that your environment recognizes them.
- You can rerun the
install_shared_env_xs.shscript to upgrade or reconfigure your cross-seed install. - The daemon method is not recommended on Ultra.
- Known compatibility issue with The Lounge: If you have The Lounge installed, cross-seed may fail or behave unexpectedly due to conflicting Node.js versions in
~/.bashrc. The Lounge's app-manager installs its own nvm and Node.js version at~/.nvm-thelounge, while cross-seed uses the default~/.nvm(Node v22 LTS). Depending on the order of the lines in.bashrc, one overrides the other, causing dependency version conflicts. This also works in reverse: cross-seed can setNODE_OPTIONS="--disable-wasm-trap-handler"which breaks The Lounge.
To resolve this, create a wrapper script that explicitly sources the correct nvm before running cross-seed. Run the following after completing the installation steps above:
cat << 'EOF' > ~/bin/cross-seed-wrapper
#!/bin/bash
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && source "$NVM_DIR/nvm.sh"
nvm use 22 > /dev/null 2>&1
NODE_OPTIONS=--disable-wasm-trap-handler node "$HOME/.xs-git/dist/cmd.js" "$@"
EOF
chmod +x ~/bin/cross-seed-wrapperUse cross-seed-wrapper in place of cross-seed for all commands going forward. This ensures cross-seed always runs with the correct Node.js version regardless of what .bashrc has set.