{"id":13454708,"url":"https://github.com/YouROK/TorrServer","last_synced_at":"2025-03-24T06:31:26.155Z","repository":{"id":38857599,"uuid":"146576102","full_name":"YouROK/TorrServer","owner":"YouROK","description":"Torrent stream server","archived":false,"fork":false,"pushed_at":"2025-03-21T21:14:35.000Z","size":37182,"stargazers_count":1854,"open_issues_count":34,"forks_count":219,"subscribers_count":58,"default_branch":"master","last_synced_at":"2025-03-21T22:23:10.282Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://yourok.ru","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/YouROK.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-08-29T09:21:00.000Z","updated_at":"2025-03-20T05:56:13.000Z","dependencies_parsed_at":"2023-10-12T10:25:24.796Z","dependency_job_id":"a0f3b47a-95b5-4a48-9580-8fa10a2d53c9","html_url":"https://github.com/YouROK/TorrServer","commit_stats":{"total_commits":1789,"total_committers":38,"mean_commits":"47.078947368421055","dds":0.6171045276690889,"last_synced_commit":"9388b723fd01fb4f84af50dab72c0c0827a4129e"},"previous_names":[],"tags_count":136,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YouROK%2FTorrServer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YouROK%2FTorrServer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YouROK%2FTorrServer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YouROK%2FTorrServer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/YouROK","download_url":"https://codeload.github.com/YouROK/TorrServer/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245222534,"owners_count":20580179,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-07-31T08:00:57.183Z","updated_at":"2025-03-24T06:31:21.384Z","avatar_url":"https://github.com/YouROK.png","language":"Go","funding_links":[],"categories":["Go","JavaScript","Debrid Services"],"sub_categories":["Self-Hosted Cloud Torrent"],"readme":"\u003cp align=\"center\" style=\"text-align: center\"\u003e\n  \u003cimg src=\"https://github.com/YouROK/TorrServer/assets/144587546/53f7175a-cda4-4a06-86b6-2ac07582dcf1\" width=\"33%\"\u003e\u003cbr/\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  Simple and powerful tool for streaming torrents.\n  \u003cbr/\u003e\n  \u003cbr/\u003e\n  \u003ca href=\"https://github.com/YouROK/TorrServer/blob/master/LICENSE\"\u003e\n    \u003cimg alt=\"GitHub\" src=\"https://img.shields.io/github/license/YouROK/TorrServer\"/\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://goreportcard.com/report/github.com/YouROK/TorrServer\"\u003e\n    \u003cimg src=\"https://goreportcard.com/badge/github.com/YouROK/TorrServer\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://pkg.go.dev/github.com/YouROK/TorrServer\"\u003e\n    \u003cimg src=\"https://pkg.go.dev/badge/github.com/YouROK/TorrServer.svg\" alt=\"Go Reference\"/\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/YouROK/TorrServer/issues\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/contributions-welcome-brightgreen.svg?style=flat\" alt=\"CodeFactor\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/YouROK/TorrServer/actions/workflows/github-actions-docker.yml\" rel=\"nofollow\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/actions/workflow/status/YouROK/TorrServer/github-actions-docker.yml?logo=Github\" alt=\"Build\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/YouROK/TorrServer/tags\" rel=\"nofollow\"\u003e\n    \u003cimg alt=\"GitHub tag (latest SemVer pre-release)\" src=\"https://img.shields.io/github/v/tag/YouROK/TorrServer?include_prereleases\u0026label=version\"/\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n## Introduction\n\nTorrServer is a program that allows users to view torrents online without the need for preliminary file downloading.\nThe core functionality of TorrServer includes caching torrents and subsequent data transfer via the HTTP protocol,\nallowing the cache size to be adjusted according to the system parameters and the user's internet connection speed.\n\n## Features\n\n- Caching\n- Streaming\n- Local and Remote Server\n- Viewing torrents on various devices\n- Integration with other apps through API\n- Cross-browser modern web interface\n- Optional DLNA server\n\n## Getting Started\n\n### Installation\n\nDownload the application for the required platform in the [releases](https://github.com/YouROK/TorrServer/releases) page. After installation, open the link \u003chttp://127.0.0.1:8090\u003e in the browser.\n\n#### Windows\n\nRun `TorrServer-windows-amd64.exe`.\n\n#### Linux\n\nRun in console\n\n```bash\ncurl -s https://raw.githubusercontent.com/YouROK/TorrServer/master/installTorrServerLinux.sh | sudo bash\n```\n\n#### macOS\n\nRun in Terminal.app\n\n```bash\ncurl -s https://raw.githubusercontent.com/YouROK/TorrServer/master/installTorrServerMac.sh -o installTorrserverMac.sh \u0026\u0026 chmod 755 installTorrServerMac.sh \u0026\u0026 bash ./installTorrServerMac.sh\n```\n\nAlternative install script for Intel Macs: \u003chttps://github.com/dancheskus/TorrServerMacInstaller\u003e\n\n#### IOCage Plugin (Unofficial)\n\nOn FreeBSD (TrueNAS/FreeNAS) you can use this plugin: \u003chttps://github.com/filka96/iocage-plugin-TorrServer\u003e\n\n#### NAS Systems (Unofficial)\n\n- Several releases are available through this link: \u003chttps://github.com/vladlenas\u003e\n- **Synology NAS** packages repo source: \u003chttps://grigi.lt\u003e\n\n### Server args\n\n- `--port PORT`, `-p PORT` - web server port (default 8090)\n- `--ssl` - enables https for web server\n- `--sslport PORT` -  web server https port (default 8091). If not set, will be taken from db (if stored previously) or the default will be used.\n- `--sslcert PATH` -  path to ssl cert file. If not set, will be taken from db (if stored previously) or default self-signed certificate/key will be generated.\n- `--sslkey PATH` - path to ssl key file. If not set, will be taken from db (if stored previously) or default self-signed certificate/key will be generated.\n- `--path PATH`, `-d PATH` - database and config dir path\n- `--logpath LOGPATH`, `-l LOGPATH` - server log file path\n- `--weblogpath WEBLOGPATH`, `-w WEBLOGPATH` - web access log file path\n- `--rdb`, `-r` - start in read-only DB mode\n- `--httpauth`, `-a` - enable http auth on all requests\n- `--dontkill`, `-k` - don't kill server on signal\n- `--ui`, `-u` - open torrserver page in browser\n- `--torrentsdir TORRENTSDIR`, `-t TORRENTSDIR` - autoload torrents from dir\n- `--torrentaddr TORRENTADDR` - Torrent client address (format [IP]:PORT, ex. :32000, 127.0.0.1:32768 etc)\n- `--pubipv4 PUBIPV4`, `-4 PUBIPV4` - set public IPv4 addr\n- `--pubipv6 PUBIPV6`, `-6 PUBIPV6` - set public IPv6 addr\n- `--searchwa`, `-s` - allow search without authentication\n- `--help`, `-h` - display this help and exit\n- `--version` - display version and exit\n\nExample:\n\n```bash\nTorrServer-darwin-arm64 [--port PORT] [--path PATH] [--logpath LOGPATH] [--weblogpath WEBLOGPATH] [--rdb] [--httpauth] [--dontkill] [--ui] [--torrentsdir TORRENTSDIR] [--torrentaddr TORRENTADDR] [--pubipv4 PUBIPV4] [--pubipv6 PUBIPV6] [--searchwa]\n```\n\n### Running in Docker \u0026 Docker Compose\n\nRun in console\n\n```bash\ndocker run --rm -d --name torrserver -p 8090:8090 ghcr.io/yourok/torrserver:latest\n```\n\nFor 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:\n\n```bash\ndocker run --rm -d --name torrserver -v ~/ts:/opt/ts -p 8090:8090 ghcr.io/yourok/torrserver:latest\n```\n\n#### Environments\n\n- `TS_HTTPAUTH` - 1, and place auth file into `~/ts/config` folder for enabling basic auth\n- `TS_RDB` - if 1, then the enabling `--rdb` flag\n- `TS_DONTKILL` - if 1, then the enabling `--dontkill` flag\n- `TS_PORT` - for changind default port to **5555** (example), also u need to change `-p 8090:8090` to `-p 5555:5555` (example)\n- `TS_CONF_PATH` - for overriding torrserver config path inside container. Example `/opt/tsss`\n- `TS_TORR_DIR` - for overriding torrents directory. Example `/opt/torr_files`\n- `TS_LOG_PATH` - for overriding log path. Example `/opt/torrserver.log`\n\nExample with full overrided command (on default values):\n\n```bash\ndocker 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 ghcr.io/yourok/torrserver:latest\n```\n\n#### Docker Compose\n\n```yml\n# docker-compose.yml\n\nversion: '3.3'\nservices:\n    torrserver:\n        image: ghcr.io/yourok/torrserver\n        container_name: torrserver\n        network_mode: host    # to allow DLNA feature\n        environment:\n            - TS_PORT=5665\n            - TS_DONTKILL=1\n            - TS_HTTPAUTH=0\n            - TS_CONF_PATH=/opt/ts/config\n            - TS_TORR_DIR=/opt/ts/torrents\n        volumes:\n            - './CACHE:/opt/ts/torrents'\n            - './CONFIG:/opt/ts/config'\n        ports:\n            - '5665:5665'\n        restart: unless-stopped\n        \n\n```\n\n### Smart TV (using Media Station X)\n\n1. Install **Media Station X** on your Smart TV (see [platform support](https://msx.benzac.de/info/?tab=PlatformSupport))\n\n2. Open it and go to: **Settings -\u003e Start Parameter -\u003e Setup**\n\n3. Enter current ip and port of the TorrServe(r), e.g. `127.0.0.1:8090`\n\n## Development\n\n#### Go server\n\nTo run the Go server locally, just run\n\n```bash\ncd server\ngo run ./cmd\n```\n\n#### Web development\n\nTo run the web server locally, just run\n\n```bash\nyarn start\n```\n\nMore info at https://github.com/YouROK/TorrServer/tree/master/web#readme\n\n### Build\n\n#### Server\n\n- Install [Golang](https://golang.org/doc/install) 1.20+\n- Go to the TorrServer source directory\n- Run build script under linux or macOS `build-all.sh`\n\n#### Web\n\n- Install **npm** and **yarn**\n- Go to the web directory\n- Run `NODE_OPTIONS=--openssl-legacy-provider yarn build`\n\n#### Android\n\nTo build an Android server you will need the Android Toolchain.\n\n#### Swagger\n\n`swag` must be installed on the system to [re]build Swagger documentation.\n\n```bash\ngo install github.com/swaggo/swag/cmd/swag@latest\ncd server; swag init -g web/server.go\n\n# Documentation can be linted using\nswag fmt\n```\n## API\n\n### API Docs\n\nAPI documentation is hosted as Swagger format available at path `/swagger/index.html`.\n\n## Authentication\n\nThe users data file should be located near to the settings. Basic auth, read more in wiki \u003chttps://en.wikipedia.org/wiki/Basic_access_authentication\u003e.\n\n`accs.db` in JSON format:\n\n```json\n{\n    \"User1\": \"Pass1\",\n    \"User2\": \"Pass2\"\n}\n```\nNote: You should enable authentication with -a (--httpauth) TorrServer startup option.\n\n## Whitelist/Blacklist IP\n\nThe lists file should be located in the same directory with config.db.\n\n- Whitelist file name: `wip.txt`\n- Blacklist file name: `bip.txt`\n\nWhitelist has priority over everything else.\n\nExample:\n\n```text\nlocal:127.0.0.0-127.0.0.255\n127.0.0.0-127.0.0.255\nlocal:127.0.0.1\n127.0.0.1\n# at the beginning of the line, comment\n```\n\n## Donate\n\n- [YooMoney](https://yoomoney.ru/to/410013733697114/200)\n- SberBank Card: **5484 4000 2285 7839**\n\n\n## Thanks to everyone who tested and helped\n\n- [anacrolix](https://github.com/anacrolix) Matt Joiner\n- [tsynik](https://github.com/tsynik)\n- [dancheskus](https://github.com/dancheskus) for react web GUI and PWA code\n- [kolsys](https://github.com/kolsys) for initial Media Station X support\n- [damiva](https://github.com/damiva) for Media Station X code updates\n- [vladlenas](https://github.com/vladlenas) for NAS builds\n- [Nemiroff](https://github.com/Nemiroff) Tw1cker\n- [spawnlmg](https://github.com/spawnlmg) SpAwN_LMG for testing\n- [TopperBG](https://github.com/TopperBG) Dimitar Maznekov for Bulgarian web translation\n- [FaintGhost](https://github.com/FaintGhost) Zhang Yaowei for Simplified Chinese web translation\n- [Anton111111](https://github.com/Anton111111) Anton Potekhin for sleep on Windows fixes\n- [lieranderl](https://github.com/lieranderl) Evgeni for adding SSL support code\n- [cocool97](https://github.com/cocool97) for openapi API documentation and torrent categories\n- [shadeov](https://github.com/shadeov) for README improvements\n- [butaford](https://github.com/butaford) Pavel for make docker file and scripts\n- [filimonic](https://github.com/filimonic) Alexey D. Filimonov\n- [leporel](https://github.com/leporel) Viacheslav Evseev\n- and others\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FYouROK%2FTorrServer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FYouROK%2FTorrServer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FYouROK%2FTorrServer/lists"}