This repository contains centralized setup guides for server operators of a PrivateIndexer swarm.
PrivateIndexer is a self-hosted private tracker and indexer designed for small, trusted groups who want to seamlessly and automatically share media (Linux ISOs etc.) with each other.
It allows you and your friends to form your own private torrent swarm — where you are the release groups. Instead of granting full library access through media servers, PrivateIndexer enables decentralized sharing using torrents generated directly from your existing media collection.
PrivateIndexer is primarily built for users running their own media stacks (e.g., Plex, Jellyfin, Emby, and the *arr suite) who want efficient, automated sharing between peers.
PrivateIndexer consists of three components:
servertrackerclient
Each component has a clearly defined role within the swarm.
The server manages users and torrents.
Core functions:
- Accepts uploaded
.torrentfiles from clients - Stores and indexes torrent metadata
- Responds to Torznab search queries
- Serves torrent files to authorized users
The server acts as the indexer and API layer for the swarm.
The tracker handles peer coordination.
Core functions:
- Maintains a record of peers per torrent
- Facilitates peer discovery within the swarm
Important
Each swarm should operate with one server and one tracker.
Server operators are responsible for maintaining both components.
The client is installed by trusted members of the swarm.
Core functions:
- Scans connected *arr applications (Radarr, Sonarr, Lidarr) for media
- Automatically generates torrents based on content type:
- Single-file torrents (movies, episodes, individual tracks)
- Multi-file torrents (seasons, full albums)
- Uploads generated torrents to the
server - Seeds content using an internal libtorrent-based engine
- Announces torrents to the
tracker
Once torrents are indexed, users can:
- Query the
servervia Torznab - Retrieve matching torrent files
- Download content directly from peers in the swarm
First, review the example docker-compose-stack.yml file, then follow the guides for each component.
The privateindexer-server guide walks you through configuring and running the server.
Next, follow the privateindexer-tracker guide to complete the tracker setup.
Note
These guides assume you are using the provided MySQL and Redis Docker container configurations.
Have your users review the example docker-compose-client.yml file
They should then follow the privateindexer-client guide to configure and run their client.
Each client will need the following information from you (the server operator):
- Your externally accessible
serverURL - example:https://indexer.example.com(same value asEXTERNAL_SERVER_URLon the server container) - Your externally accessible
trackerURL - example:https://tracker.example.com - Their unique API key (available in the server admin panel — see the bottom of the server guide)
Once configured, the client will scan media, upload torrents to the server, and automatically announce to the tracker.
