goTorrent
goTorrent is a torrenting server built with Go (Golang) with websocket API that comes with a React web frontend.
The current release is an alpha release which means there may be bugs, please open issues to help me improve this software!
Image of the frontend UI
- Windows
- Linux
- MacOS - (untested as I do not have a Mac)
Supported Arch:
Features:
- Responsive React based WebUI
- Download torrents from File upload or Magnet Link
- Start/Stop/Delete Multiple Torrents
- Add RSS feeds and automatically download new torrents from feed
- Detailed information for each torrent
- Automatic stop after seeding ratio reached
- Pushbullet notification on torrent complete
- Automatic move of completed torrent to new directory (leave symlink behind for seeding)
- Symlinks don't work on Windows yet, have to copy file for now
Roadmap
-
Early-Mid 2018
-
Ability to modify storage path of torrent after it has been added
-
Backend to frontend notification messages
-
Global Rate Limiting for Upload/Download Speed
-
Add torrents from watch folder (cron job every 5 minutes)
-
Authentication from client to server (done via JWT, will add functionality for 3rd party clients later)
-
Reverse Proxy Support with SSL upgrade added (with provided config for nginx)
-
Mostly generated client config from toml.config on first run
-
Ability to view TOML settings from WebUI (and perhaps change a few as well)
-
Ability to set priority for individual files (needs more testing!)
-
Unit testing completed for a large portion of the package
-
Stability/bug fixing/Optimization rewrite of some of the core structures of the WebUI and base server
-
Put the "Move torrent after download" into own goroutine with checks so the WebUI doesn't freeze when moving torrent
-
Late 2018
-
Define the websocket API for users to write their own clients/extensions
-
React-native Android app (I don't own any Mac products so there will be no iPhone version)
Documentation
All the documentation is available here
Special Thanks
I viewed cloud-torrent source to construct my project:
Cloud-Torent:Cloud torrent is a a self-hosted remote torrent client, written in Go (golang)
Anacrolix BitTorrent client package and utilities
goreleaser: Deliver Go binaries as fast and easily as possible
Viper: Go configuration with fangs
logrus: Structured, pluggable logging for Go.
boltdb: An embedded key/value database for Go.
storm: Simple and powerful toolkit for BoltDB
Gorilla: web toolkit for the Go programming language
gofeed: Parse RSS and Atom feeds in Go
pushbullet-go: A library to call Pushbullet HTTP API for Golang