Skip to content

Latest commit

 

History

History
183 lines (130 loc) · 5.6 KB

File metadata and controls

183 lines (130 loc) · 5.6 KB
title Cross Seed
description A guide on how to deploy Cross Seed
published true
date 2025-07-10 19:37:13 UTC
tags
editor markdown
dateCreated 2025-06-11 09:31:37 UTC

{class="tab-icon"} What is Cross-Seed?

Cross-seed is an app designed to help you download torrents that you can cross seed based on your existing torrents. It is designed to match conservatively to minimize manual intervention. cross-seed can inject the torrents it finds directly into your torrent client.

This container requires the ability to hardlink to your media files. If you have not read the Folder Structure Guide, I recommend you have you folders set up as-described so Cross Seed can function properly. {.is-warning}

## 1 · Deploy Cross-Seed

services:
  cross-seed:
    image: ghcr.io/cross-seed/cross-seed:6
    container_name: cross-seed
    user: 568:568
    ports:
      - "2468:2468"
    volumes:
      - /mnt/tank/configs/crossseed:/config
      - /mnt/tank/media:/media
    command: daemon
    restart: unless-stopped

2 · Configuration

This assumes Cross Seed and the other containers are within the same Docker network and can reach each other using the container name (eg http://radarr:8989) {.is-warning}

  1. Use the command below in the TrueNAS shell to open the config.js file for editing:

    nano /mnt/tank/configs/crossseed/config.js
    Instead of editing the lines one by one, you could simply copy and paste my preconfigured config.js file
    "use strict";
    module.exports = {
        apiKey: undefined,
    
        torznab: [
            "http://prowlarr:9696/1/api?apikey=12345",
            "http://prowlarr:9696/2/api?apikey=12345",
        ],
    
        sonarr: ["http://sonarr:8989/?apikey=12345"],
    
        radarr: ["http://radarr:7878/?apikey=12345"],
    
        host: "0.0.0.0",
        port: 2468,
    
        notificationWebhookUrls: [],
    
        torrentClients: ["qbittorrent:http://user:pass@qbittorrent:8080"],
    
        useClientTorrents: true,
    
        delay: 30,
    
        dataDirs: ["/media/movies", "/media/tv"],
    
        linkCategory: "cross-seed-link",
    
        linkDirs: ["/media/downloads"],
    
        linkType: "hardlink",
    
        flatLinking: false,
    
        matchMode: "flexible",
    
        skipRecheck: true,
    
        autoResumeMaxDownload: 52428800,
    
        ignoreNonRelevantFilesToResume: false,
    
        maxDataDepth: 4,
    
        torrentDir: null,
    
        outputDir: null,
    
        includeSingleEpisodes: false,
    
        includeNonVideos: false,
    
        seasonFromEpisodes: 1,
    
        fuzzySizeThreshold: 0.02,
    
        excludeOlder: "2 weeks",
    
        excludeRecentSearch: "3 days",
    
        action: "inject",
    
        duplicateCategories: false,
    
        rssCadence: "30 minutes",
    
        searchCadence: "1 day",
    
        snatchTimeout: "30 seconds",
    
        searchTimeout: "2 minutes",
    
        searchLimit: 400,
    
        blockList: [],
    };
    //# sourceMappingURL=config.template.cjs.map
  2. Edit the torznab section and add your Prowlarr info. Get the number before the API key by clicking the indexer name in Prowlarr and looking at under the Indexer Details header.

        torznab: [
            "http://prowlarr:9696/1/api?apikey=12345",
            "http://prowlarr:9696/2/api?apikey=12345",
        ],
  3. Edit the torrentClients section and add your qbittorrent info

        torrentClients: [
            "qbittorrent:http://user:pass@qbittorrent:8080",
        ],
  4. Edit the linkDirs section and use the path /media/downloads

        linkDirs: ["/media/downloads"],
  5. Edit the dataDirs section and make it look like this:

    dataDirs: ["/media/movies", "/media/tv"]
  6. Edit the Radarr/Sonarr section and add your info:

      sonarr: ["http://localhost:8989/?apikey=12345"],
      radarr: ["http://localhost:7878/?apikey=67890"],
  7. Restart the container

3 · Adding qBit Scripts

This assumes Cross Seed and qBit are within the same Docker network and can reach each other using the container name (eg http://qbittorrent:8080) {.is-warning}

I have not gotten this to work because qBit is behind a VPN and cannot reach other containers {.is-danger}

Cross Seed has the ability upon completion of a download to automatically push the torrent to other indexers instead of waiting for the scan at a later time to take advantage of earlier, larger leeching. To activate this feature follow the steps below:

  1. Get the API key for cross seed by running the command below in the TrueNAS shell as root:
    docker exec -it cross-seed cross-seed api-key
  2. In qBit, naviagte to Tools → Options → Downloads
  3. Enable Run external program on torrent completion, replacing <API_KEY> with the correct values from above and use this command:
    curl -XPOST http://cross-seed:2468/api/webhook?apikey=<API_KEY> -d "infoHash=%I"

4 · Deleting Media

Since Cross Seed will create hardlinks in your directories, to remove unwanted media you need to remove it both from Sonarr/Radarr as well as your download client or the media will remain on your hard drive.

5 · Troubleshooting

The Cross Seed docs are excellent. Follow their instructions here.

6 · Video