Skip to content

nielshh/sqtracker

 
 

Repository files navigation

■ sqtracker (Fork)

Note: This is a modified fork of the original tdjsnelling/sqtracker.

Custom modifications:

  • Torznab API Integration: Full support for external indexers like Sonarr and Radarr via the /api endpoint, featuring optimized routing and automated rate-limit bypass.
  • Smart API Key Management: Context-aware "Generate/Reset" passkey mechanism on the account page.
  • Enhanced Search Engine: Replaced traditional n-gram fuzzy searching with a high-relevance hybrid regex and bigram intersection model, significantly improving accuracy for specific queries (e.g. version numbers, special characters).
  • Automated Season Pack Management: Intelligently detects and removes individual TV show episodes upon season pack upload, featuring robust string parsing to handle various torrent naming conventions and separators.
  • Auto-Invite Claiming: Streamlined registration flow that automatically marks invites as claimed for accounts with verified statuses.
  • Resilient Reliability: Implemented a "Partial Success" pattern for user communication (e.g. email resending), allowing the system to proceed with clear fallback warnings even during intermittent SMTP failures.
  • Wiki Index Synchronization: Resolved synchronization bugs where new wiki pages wouldn't appear in the main index, ensuring searchability and discoverability.
  • Performance & Logic Fixes: Optimized torrent browsing with stable secondary sorting and corrected pagination math to ensure distinct, reliable results across large libraries.
  • SSR Robustness: Patched critical React Context crashes during Server-Side Rendering (SSR) with a global CookiesProvider and universal-cookie integration.
  • Security & Performance Overhaul: Upgraded core stack (Node.js 18, React 18, Next.js 13.5, Mongoose 6) and audited all NPM dependencies to patch high-risk vulnerabilities.
  • Privacy-First UI: Removed "Powered by" branding and language selectors for a cleaner, professional look.
  • Modernized Deployment: Optimized Docker environments and Traefik configurations for better reliability.

Latest stable release License GPLv3 Client Docker image API Docker image

sqtracker is a modern private BitTorrent tracker platform.

It implements all of the features required to run a private (or public) tracker and does not focus on any one specific type of content. It is suitable for running a tracker site of any kind.

Features

  • Accounts
    • Registration modes (open / closed / invite only)
    • Sending of invites
    • Account management (2FA, password resets etc.)
    • Bonus points system (purchase invites, upload etc.)
    • Option to browse torrents without logging in (for search engine discovery)
  • Torrent management
    • Uploading torrents with rich metadata (title, description, source, mediainfo, category, tags etc.)
    • Searching torrents or browsing by category or tags
    • Freeleech options (specific torrents, site-wide)
    • Torrent grouping (e.g. different formats of same movie)
    • Bookmarks
  • Upload / download tracking
    • Track how much content each user has uploaded / downloaded
    • Track ratios
    • Track hit'n'runs
    • Limit downloading per user based on ratio, HnRs, or both
    • Award bonus points based on upload
  • User interaction
    • Commenting on torrents and announcements
    • Up / down voting torrents
    • Requests system
  • Moderation
    • Staff / admin privileges
    • Reporting torrents to be reviewed by staff
    • Detailed stats available to admins
    • Wiki system
    • Announcements / news posts
    • Ban / unban users
  • Tracker appearance
    • Configurable theme / CSS

Roadmap

The roadmap is still being expanded.

  • Forum support & direct messages
  • Better profiles (avatar, bio etc.)
  • Premoderation option
  • Anti-cheat

Configuration

All configuration is provided via a single JavaScript file named config.js. This file must export an object containing 2 keys: envs and secrets.

An example configuration can be found in config.example.js. This file contains examples and explanations for each config value.

If your configuration is not valid, sqtracker will fail to start.

The initial admin user

On first start up, sqtracker will create a user named admin with the password admin. A confirmation email will be sent to the admin email address you specified in your config file. Once logged in for the first time, you should change the admin password immediately. This admin user can be used to send other admin invites (normal accounts cannot send admin invites). This user cannot be deleted/banned.

Deploying

Components

An sqtracker deployment is made up of 4 separate components. These are:

1. The sqtracker API service

The sqtracker API service handles all actions taken by users (authentication, uploads, searching etc.), implements the BitTorrent tracker specification to handle announces and scrapes, and provides the RSS feed.

2. The sqtracker client service

The sqtracker client service provides the modern, responsive web interface that users interact with.

3. A MongoDB database

MongoDB is a popular and powerful document-oriented database. Version 5.2 or higher is required.

4. A HTTP proxy server

The HTTP proxy allows the client, API, and BitTorrent tracker to all be accessible via a single endpoint.

Traefik is recommended and is configured by default. An Nginx config file is also provided for those that prefer it and the docker-compose.yml file contains an Nginx block that can be enabled.

Deploying with Docker compose

The sqtracker platform is designed to be deployed via Docker. Once a configuration file is created, deploying is as simple as running docker compose up -d at the root of the project.

To get HTTPS working, you will need to change a few values:

  • In docker-compose.yml: --certificatesresolvers.tlsresolver.acme.email= needs to have a valid email address.
  • In traefik.yml: 2 instances of Host(`example.com`) need to contain your domain name.

If you change the name of any services in docker-compose.yml, you will also need to update the relevant host names in your config.js and traefik.yml files.

sqtracker is reasonably light-weight, but you should still invest in a VPS with decent resources if you want to run a fast and performant tracker.

Deploying with a PaaS platform

Alternatively, you can deploy each service individually on a PaaS cloud platform such as Northflank.

You will need to deploy each of the 4 components listed above. The Docker images for the client and API services are published in this repository.

Screenshots

Splash screen splash

Home home

Torrent torrent

Upload upload

Categories categories

Profile profile

Account account

Announcement announcement

Request request

Report report

License

GNU GPLv3

About

A modern private BitTorrent tracker platform

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • JavaScript 99.7%
  • Dockerfile 0.3%