Skip to content


Switch branches/tags


TorrServer, stream torrent to http


Just download server from releases and exec file
After open browser link
On linux systems you need to set the environment variable before run
export GODEBUG=madvdontneed=1

Unofficial TorrServer iocage plugin

On FreeBSD (TrueNAS/FreeNAS) you can use this plugin


Install golang 1.16+ by instruction:
Goto dir to source
Run build script under linux
For build web page need install npm and yarn
For instal yarn: npm i -g yarn after install npm
For build android server need android toolchain
Download android ndk and change NDK_TOOLCHAIN in to

Server args:


TorrServer [--port PORT] [--path PATH] [--logpath LOGPATH] [--rdb] [--httpauth] [--dontkill] [--ui]


  • --port PORT, -p PORT web server port
  • --path PATH, -d PATH database and settings path
  • --logpath LOGPATH, -l LOGPATH log path
  • --rdb, -r start in read-only DB mode
  • --httpauth, -a http auth on all requests
  • --dontkill, -k dont kill server on signal
  • --ui, -u run page torrserver in browser
  • --version display version and exit

Http Api of TorrServer:



Return version of server


Shutdown server



  • link - magnet/hash/link to torrent
  • index - index of file
  • preload - preload torrent
  • stat - return stat of torrent
  • save - save to db
  • m3u - return m3u
  • fromlast - return m3u from last play
  • play - start stream torrent
  • title - set title of torrent
  • poster - set poster link of torrent

get stat

get m3u

stream torrent

only save



  • hash - hash of torrent
  • index - index of file

Get all http links of all torrents in m3u list


Get http link of torrent in m3u list


  • hash - hash of torrent
  • fromlast - from last play file


Send json:

"action": "add/get/set/rem/list/drop",
"link": "hash/magnet/link to torrent",
"hash": "hash of torrent",
"title": "title of torrent",
"poster": "link to poster of torrent",
"data": "custom data of torrent, may be json",
"save_to_db": true/false

Return json of torrent(s)
Send multipart/form data

Only one file support


  • title - set title of torrent
  • poster - set poster link of torrent
  • data - set custom data of torrent, may be json
  • save - save to db
Send json:

"action": "get"
"hash" : ""hash": "hash of torrent",

Return cache stat

Send json:

"action": "get/set/def",
fields of BTSets

Return json of BTSets

Send json:

"action": "set/rem/list",
"hash": "hash of torrent",
"file_index": int, id of file,


if hash is empty, return all viewed files
if hash is not empty, return viewed file of torrent

Json struct see in


The user data file should be located near to the settings.
Basic auth, read more in wiki

File name: accs.db
File format:

"User1": "Pass1",
"User2": "Pass2"

Whitelist/Blacklist ip

The lists file should be located near to the settings.

whitelist file name: wip.txt
blacklist file name: bip.txt

whitelist has prior

# at the beginning of the line, comment

MSX Install:

Open msx and goto: Settings -> Start Parameter -> Setup
Enter current ip address and port of server e.g.

Running in docker

Just run: docker run --rm -d --name torrserver -p 8090:8090
For running in persistence mode, just mount volume to container by adding -v ~/ts:/opt/ts, where ~/ts folder path is just example, but you could use it anyway... Result example command: docker run --rm -d --name torrserver -v ~/ts:/opt/ts -p 8090:8090
Other options:

  • add -e TS_HTTPAUTH=1 and place auth file into ~/ts/config forlder for enabling basic auth
  • add -e TS_RDB=1 for enabling --rdb flag
  • add -e TS_DONTKILL=1 for enabling --dontkill flag
  • add -e TS_PORT=5555 for changind default port to 5555(example), also u need to change -p 8090:8090 to -p 5555:5555 (example)
  • add -e TS_CONF_PATH=/opt/tsss for overriding torrserver config path inside container
  • add -e TS_TORR_DIR=/opt/torr_files for overriding torrents directory
  • add -e TS_LOG_PATH=/opt/torrserver.log for overriding log path

Example with full overrided command(on default values):

docker run --rm -d -e TS_PORT=5665 -e TS_DONTKILL=1 -e TS_HTTPAUTH=1 -e TS_RDB=1 -e TS_CONF_PATH=/opt/ts/config -e TS_LOG_PATH=/opt/ts/log -e TS_TORR_DIR=/opt/ts/torrents --name torrserver -v ~/ts:/opt/ts -p 5665:5665



SberBank card: 5484 4000 2285 7839

YooMoney card: 4048 4150 1812 8179

Thanks to everyone who tested and helped

Anacrolix Matt Joiner
Tw1cker Руслан Пахнев