I have tried three private torrent tracker scripts out of bunch possible:

What i tried:

TorrentTrader - https://sourceforge.net/p/torrenttrader/wiki/Home/
Long time not updated script likely with some vulnerabilities: https://www.ecosia.org/search?q=torrenttrader+vulnerability+or+XS
It may show an error in wrong PHP version.
Somehow it do not let me into admin control panel!!
Added torrent was not visible on the Browse Torrents section immediately, after some minutes appeared though. Tt recognized 1 seeder and announce seems to be working!
I tried to edit the torrent, but it fails saying nothing was entered.

BTITracker script - https://sourceforge.net/projects/btit-tracker/
Long time not updated script likely with some vulnerabilities: https://www.ecosia.org/search?q=btitracker+vulnerability+or+XS
It failed to add mi PID into announce URL (i doubt if due to me set https instead of http in default sit epath) in the .torrent file. Also it does not show my torrent in the list (maybe due to no seeder), only in user control panel after a while.

Maybe above issues can be fixed, but maybe not easily for someone who is not a developer.

NexusPHP - https://sourceforge.net/p/nexusphp
Also quite old and no longer updated private torrent tracker script.
Feature rich tracker with a nice UI.
Setup is much more difficult, one needs some webmaster experience or do a research.
1. it limits people to use only certain selected trackers (possibly outdated list), to remove this limit, go to Hosting account / PHPMyadmin , go to database and to mysql table "agent_allowed_family", there ticks some entry and click to Copy it. Customize the name and into the "agent_pattern" and "peer_id_pattern" field input the: /^.*/
1.b - then after uploading torrent, there is one-time notice about maintaining ratio + limitting torrent clients to be used (no longer valid after the previous tweak). So i disabled whole notice in downloads.php file by replacing:
if (!$letdown && $CURUSER['showdlnotice'] == 1)
if (!$letdown && $CURUSER['showdlnotice'] == 0)
2. in the main settings, do NOT enable IMDb system. It caused index.php and torrents.php page be blank :-(
3. newly added torrents does not appear for a few minutes in the torrents list as they are marked as dead for this time. I do not know how to dispaly active and dead by default, Currently only active are displayed.
4. Setting new language takes time, it needs to edit lang table in mysql PHPMyAdmin. Duplicate "en" directory in lang folder and also duplicate "en" directory in pic/category/chd/scenetorrents in order for the catergory icons to show on Torrents page. Categores can be managed in client area / Staff panel / Category manage. There is hidden menu under "Manage" text.
5. all categories on Torrents page searchbox checked by default. In torrents.php replace:
value="1" />".($showimg ? return_category_image
value="1" checked/>".($showimg ? return_category_image
Around line 930 is defined the look of the categories and dropdown menus for shoing active/dead torrents.
6. E-mails was not delivered to users. In site settings in admin account, SMTP area, need to set working external SMTP account (i used local one). Though message ended in SPAM now. The X-SPAM header value is:
7. possibly the caching mechanism is using memcached, but it is problematic since it is caching the dynamic page slike a stati HMTL, it does not immediately reflect the changes made on page, it is problem, have to discover how to decrease cached time..
./viewpeerlist.php:header("Cache-Control: no-cache, must-revalidate" );
./suggest.php:header("Cache-Control: no-cache, must-revalidate" );
./download.php:header ("Cache-Control: no-store, no-cache, must-revalidate");
./download.php:header ("Cache-Control: post-check=0, pre-check=0", false);
./getextinfoajax.php:header("Cache-Control: no-cache, must-revalidate" );
./getusertorrentlistajax.php:header("Cache-Control: no-cache, must-revalidate" );
./include/functions.php: header("Content-Type: text/html; charset=utf-8; Cache-controlrivate");
./viewfilelist.php:header("Cache-Control: no-cache, must-revalidate" );
./bookmark.php:header("Cache-Control: no-cache, must-revalidate" );

takeupload.php - line number 193 approximately: comment out the line (add // at the beginning) to prevent tracker adding source tag into torrent and thus making new hash for the torrent. Some people share on multiple trackers and this would allow them just add tracker to their existing torrent and not needing to have two torrents for same payload.

File lsit in torrent is not shown on torrent page if torrent has only one file inside. Fix this by replacing in details.php:
if ($row["type"] == "multi")
//if ($row["type"] == "multi")
if (!empty($row["type"]))

UNIT3D - another more modern, open source?, good looking and up to date tracker script (not tried):