A lightweight BitTorrent Tracker written in PHP, with an SQL backend, for people that just want to host a tracker — with an optional public index, stats, and admin panel, but not a full torrent listing site.
Upgrading from 3.2.x? The document root, configuration and cron paths have all moved, and the database schema and storage engine have changed. Follow the Migration Guide before deploying. See CHANGELOG.md for the full list of changes.
- PHP 8.2+ (the latest supported release recommended) with the
mysqliextension. The bundledfilter,json,session,xml,pcre, anddateextensions are also used and enabled by default. - A MySQL-compatible database — MariaDB recommended.
- Apache 2.4 or Nginx 1.18+.
Use this path when you control the web server configuration (VPS, dedicated server, etc.).
- Upload Phoenix to your server.
- Point your web server's document root at the
public/directory. Onlypublic/should be web-reachable;src/,bin/,config/, andtests/must remain outside the document root so configuration (including database credentials) is never served. See APACHE.md or NGINX.md for vhost examples and.phpextension-stripping rules. - Load
public/admin.phpin your browser and run Setup. To prove you control the server, setup asks for a one-time token that Phoenix writes toconfig/.phoenix-setup-tokenon first load — open that file (over SSH or your host's file manager) and paste in its contents. Setup then creates the database tables and writesconfig/phoenix.custom.php; the token is removed once setup completes. - After setup, secure
admin.php— the simplest approach is to remove it frompublic/(mv public/admin.php src/admin.php). Move it back temporarily if you ever need to re-run setup. Alternatively, rate-limit the endpoint; see APACHE.md or NGINX.md.
Use this path when you use a cPanel-style host with no direct web server configuration access.
- Upload Phoenix to your server.
- Set the site's document root to
public/via your hosting control panel where possible. If the panel does not allow changing the document root, put the contents ofpublic/in the web root and keepsrc/,config/,bin/, andtests/outside (above) it. - Apache hosts: add the
.php-stripping rewrite rules from APACHE.md topublic/.htaccessso clients can reach/announcewithout the.phpsuffix. - Create the database in your hosting control panel.
- Set up the tracker — choose one:
- Load
public/admin.phpin your browser and run Setup. It asks for the one-time token Phoenix writes toconfig/.phoenix-setup-token(open it in your host's file manager and paste it in), then creates the tables and writesconfig/phoenix.custom.phpwith your database credentials. - Or import the schema files manually (
sql/peers.sql,sql/torrents.sql,sql/tasks.sql,sql/events.sql), copyconfig/phoenix.default.phptoconfig/phoenix.custom.php, and fill in your database credentials.
- Load
- After setup, secure
admin.phpas described above.
Configuration should take place in config/phoenix.custom.php, NOT config/phoenix.default.php. Phoenix will attempt to use the default configuration if yours is missing.
CONFIGURATION.md covers every option in detail: stat-tracking and geo enrichment, two-factor authentication, admin password policy, reverse proxies and client IP address, error reporting, and the backup and maintenance cron jobs. Every settable value is listed with its default in config/phoenix.default.php.
Phoenix ships with example web server configurations covering document root location, .php extension stripping, admin endpoint rate limiting, https redirection, and auth passthrough:
Every HTTP endpoint Phoenix exposes is documented in API.md — the tracker protocol (announce, scrape), the public read endpoints (torrent index, tracker stats), and the authenticated management API for adding and editing torrents. Each entry lists its parameters, response shape in JSON and XML, and the errors it can return.
- CONFIGURATION.md — every configuration option, with defaults.
- RECOVERY.md — admin lockout, disabling 2FA, and restoring the database from a backup.
- API.md — every HTTP endpoint: announce, scrape, the public index, and the management API.
- MIGRATING.md — upgrading from 3.2.x to 5.0.
- LIMITS.md — how many peers and torrents an install carries, and what binds first.
- APACHE.md — web server configuration for Apache 2.4.
- NGINX.md — web server configuration for Nginx.
- CONTRIBUTING.md — development environment, project structure, and contribution conventions.
- ALTERNATIVES.md — other BitTorrent tracker projects.
- CHANGELOG.md — release history.
- LICENSE.md — MIT licence.
