cross-seed
This guide walks you through installing cross-seed using the source build method on your Ultra.cc slot. This script is provided by the developer.
Prerequisites
- Python: Version 3.10 or newer
- Node.js: Version 22 LTS (latest LTS release)
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.
- Install the latest version of Node.js LTS (v22.x)
bash <(wget -qO- https://scripts.ultra.cc/util-v2/LanguageInstaller/Node-Installer/main.sh)- 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) If you want, you can change matching flexibility, but
flexibleis recommended. - For further configuration and customization, refer to the official documentation or the links displayed at each option in
config.js.
Usage
- Once you have configured
config.jswith your applications (you need at least a download client and one indexing application, e.g. qBittorrent and Prowlarr), cross-seed begins scanning and matching torrents automatically. - For other options for managing your application, refer to the official documentation.
Notes
- You must restart your terminal session after installing Node and Python for the environment to be recognized any time you change 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 due it being unauthenticated which could lead to security concerns.
- 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 at~/.nvm-thelounge(Node v20), 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
command cross-seed "$@"
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.