UNIT3D: a Laravel-based private torrent tracker you host yourself
UNIT3D is a private torrent tracker built using Laravel, Livewire and AlpineJS.
At a glance
- What is it?
- UNIT3D is a private tracker application built on Laravel 12, Livewire and AlpineJS, licensed AGPL-3.0. Its official installer script is unavailable, so today you assemble the stack from the repository yourself.
- Who is it for?
- Adopt UNIT3D if you are running a private tracker community and have a PHP/Laravel engineer who can work from the repository rather than an installer. Do not adopt it if you want a one-command setup, since the README states the official installation script is no longer available, or if you cannot accept AGPL-3.0 obligations for a network service.
- Can I use it commercially?
- Yes, with strict conditions. AGPL-3.0 is a network copyleft licence: if people use a modified version over a network, for example as a hosted service, you must offer them its source code under the same licence.
- Is it still maintained?
- Yes. The repository last received commits 3 days ago.
- What is it written in?
- Mainly PHP, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 30, 2026, and from our analysis. They are not legal advice.
Editorial analysis
What UNIT3D actually is, and who it is for
UNIT3D is private torrent tracker software, not a BitTorrent client and not a public index. The README describes it as "a modern Private Torrent Tracker software built with Laravel, Livewire and AlpineJS" and says it is MySQL Strict Mode compliant and PHP 8.4 ready. The audience is narrow: people operating an invitation-only tracker who need user accounts, torrent listings, an announce endpoint and a web front end in one application. If you want to download torrents, this is the wrong repository entirely. If you want to run a tracker where registration is controlled and ratio rules apply, this is the category of tool you are looking at. The project is maintained by HDInnovations, who also sell installation, updating, server tuning and theme work, and who run an invite-only Discord with a small joining fee. That commercial layer shapes how the project is documented: some operational knowledge sits behind the paid support channel rather than in the README.
The Laravel, Livewire and AlpineJS architecture
The repository follows an MVC layout, which the README calls out explicitly as a way to keep logic and presentation apart. Top-level directories include app/, bootstrap/, config/, database/, public/, resources/, routes/, storage/ and tests/, alongside artisan, composer.json and package.json. The front end is compiled by Vite, with laravel-vite-plugin and vite-plugin-static-copy in devDependencies, and the asset build is a plain npm run build against vite.config.js. AlpineJS 3.x and Livewire provide the interactive parts, with Chart.js and chartjs-adapter-date-fns for graphs, sweetalert2 for dialogs and virtual-select-plugin for dropdowns. Realtime broadcasting is wired through laravel-echo and socket.io, and .env.example points VITE_ECHO_ADDRESS at http://localhost:8443 and sets BROADCAST_CONNECTION=redis. Search is delegated to Meilisearch: the compose file defines a meilisearch service and .env.example carries MEILISEARCH_HOST=http://127.0.0.1:7700 with MEILISEARCH_KEY. The data layer is MySQL 8.0, with Redis handling cache, sessions, queues and broadcasting. That is a four-service dependency chain before the tracker answers a single announce request, and it is the main reason this is not a weekend deployment.
Installing UNIT3D without the official script
The README is blunt about this: "The official script is no longer available at this time. A new one will be provided soon." So there is no supported one-liner, and anyone telling you otherwise is working from an older guide. What the repository does give you is a docker-compose.yml defining nginx, laravel.test, mysql, redis and meilisearch, with the Laravel service built from vendor/laravel/sail/runtimes/8.4. Start by copying the environment template and generating an application key.
cp .env.example .env
php artisan key:generateThe template sets APP_ENV=prod, DB_CONNECTION=mysql, DB_DATABASE=unit3d, CACHE_STORE=redis, SESSION_DRIVER=redis and QUEUE_CONNECTION=redis. Fill in DB_PASSWORD, REDIS_HOST and MEILISEARCH_KEY before anything else. The compose stack exposes nginx on ${HTTP_PORT:-8000} and ${SSL_PORT:-443}, and the app container on ${APP_PORT:-80} plus ${VITE_PORT:-5173}. Bring it up with the compose file at the repository root.
docker compose up -dThen run migrations and build the front-end assets, because the Blade views depend on the Vite bundle.
php artisan migrate
npm install
npm run buildThe .env.example seeds a first account through DEFAULT_OWNER_NAME, DEFAULT_OWNER_EMAIL and DEFAULT_OWNER_PASSWORD, all defaulting to UNIT3D-ish values, so change those before the instance is reachable from the internet. Optional integrations are stubbed: TMDB_API_KEY for metadata, TWITCH_CLIENT_ID and TWITCH_CLIENT_SECRET for Twitch, and MAIL_MAILER=log, which writes mail to the log rather than sending it. Leave mail on log until you have verified registration and password reset flows. The README points to https://hdinnovations.github.io/UNIT3D for the rest.
Updating an instance with git:update
The README gives exactly one upgrade command: sudo php artisan git:update, described as pulling the latest changes from the repository and updating your instance. That is a git pull wrapped in an Artisan command, which means it operates on your working tree. If you have edited Blade templates, config files or migrations in place, the command's behaviour depends on your git state, and the README does not document rollback, conflict handling or a maintenance-mode step. Run it on a staging copy first, or at minimum take a database dump and a filesystem snapshot before invoking it. The release cadence visible in the repository is modest: v9.2.0 in December 2025, v9.1.7 in September 2025, v9.1.6 in August 2025. Between releases, the master branch receives commits; the last push to the repository was on 2026-09-28, so the codebase is moving even when tagged releases are not. For an operator, that split matters: pinning to a tag is calmer than tracking master, but the only documented update path follows the branch.
Where UNIT3D is the wrong tool
Two hard limits stand out. First, there is no supported installation path right now. The README says a new script will be provided soon, and until it appears, setup means reading the repository, the compose file and the docs yourself. A team without PHP and Laravel experience will spend its time on dependency wiring rather than on tracker policy. Second, the licence is AGPL-3.0. For a network-accessible service, that licence family carries source-availability obligations toward users interacting with the software over a network, and the repository's LICENSE file is the authoritative text. Operators who intend to keep modifications private should read it before writing a single line of custom code, and should get their own legal advice rather than treating a summary as sufficient. Beyond licensing, the operational surface is wide: MySQL, Redis, Meilisearch and a socket.io process all have to stay healthy, and the README does not document what happens to announce traffic when Meilisearch is down. Search degradation and tracker degradation are coupled in ways the documentation does not spell out.
Alternatives and the difference in approach
The obvious comparison is with tracker software written in other ecosystems. UNIT3D's distinguishing choice is that it is a full Laravel application: routing, Eloquent models, queues, Blade views and an Artisan console, all in PHP 8.4, with Livewire and AlpineJS on the client instead of a separate JavaScript SPA. That buys you Laravel's ecosystem, its migration system, its queue workers and a large pool of PHP developers who already know the framework. It costs you the PHP runtime, Composer, Node for the Vite build, and a Redis-plus-Meilisearch-plus-MySQL footprint. Tracker implementations built as lighter, standalone services tend to expose fewer moving parts and less framework surface, at the price of a smaller plugin and theming ecosystem and no Laravel conventions to lean on. If your team already runs Laravel applications in production, UNIT3D fits that operational model. If your team is strongest in Go or Python and wants a single binary plus a database, the framework is a liability rather than a feature, and you should evaluate the standalone options in that space instead.
Licence, translations and ongoing cost
The project is licensed AGPL v3.0, and the README links to the LICENSE file in the repository. The practical implication for a tracker operator is that running a modified UNIT3D as a network service is not the same as running a permissively licensed library internally; the AGPL was written for exactly this case. Treat the licence text as the source of truth and get legal advice if you plan substantial private modifications. Translations are handled through Weblate at hosted.weblate.org/engage/unit3d, so localisation work happens outside the main repository and arrives through the normal update path. The upgrade cost is the git:update command plus whatever the release changed in migrations and assets; because the command pulls from the repository, your deployment discipline is really git discipline. HDInnovations sells installation, updating, server tuning and theming as paid services, which is the realistic fallback if the self-managed path stalls. The repository also carries a SECURITY.md, a CODE_OF_CONDUCT.md and a CONTRIBUTING.md, so there is a defined route for reporting problems and sending patches.
Editorial conclusion
Adopt UNIT3D if you are running a private tracker community and have a PHP/Laravel engineer who can work from the repository rather than an installer. Do not adopt it if you want a one-command setup, since the README states the official installation script is no longer available, or if you cannot accept AGPL-3.0 obligations for a network service. Before committing, verify the docs at hdinnovations.github.io/UNIT3D against your PHP 8.4 and MySQL 8.0 targets, and confirm what sudo php artisan git:update does to your git working tree.
Frequently asked questions
How do I install UNIT3D?
The README states that the official installation script is no longer available and that a new one will be provided soon, so there is no supported one-command install. In practice you configure .env from .env.example, bring up the docker-compose stack, run php artisan migrate, then npm install and npm run build.
What is UNIT3D tracker software?
It is private torrent tracker software built with Laravel, Livewire and AlpineJS, described in the README as MySQL Strict Mode compliant and PHP 8.4 ready. It is the server side of a private tracker, not a torrent client.
Does UNIT3D have API documentation?
The README does not mention an API or link to API documentation. Its documentation section points only to https://hdinnovations.github.io/UNIT3D, and no other API reference appears in the repository files reviewed here.
How do I update a UNIT3D instance?
The README gives one command, sudo php artisan git:update, which it says pulls the latest changes from the repository and updates your instance. The README does not document rollback or conflict handling for that command.
What licence does UNIT3D use?
UNIT3D is licensed under AGPL v3.0, and the README links to the LICENSE file in the repository. Because it is network-accessible software, the licence terms are worth reading in full before making private modifications.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/hdinnovations-unit3d)