Convert Figma logo to code with AI

jpillora logocloud-torrent

☁️ Cloud Torrent: a self-hosted remote torrent client

5,794
1,810
5,794
147

Top Related Projects

5,528

Full-featured BitTorrent client package and utilities

☁️ Simple Torrent: a self-hosted remote torrent client (rebranded from Cloud Torrent)

⚡️ Streaming torrent client for the web

Official Transmission BitTorrent client repository

qBittorrent BitTorrent client

Quick Overview

The jpillora/cloud-torrent project is a self-hosted web application that allows users to search, download, and stream torrent files directly from their web browser. It provides a simple and user-friendly interface for managing and accessing torrent content.

Pros

  • Cross-Platform Compatibility: The application can be run on various operating systems, including Windows, macOS, and Linux, making it accessible to a wide range of users.
  • Lightweight and Efficient: The project is designed to be lightweight and efficient, with a small footprint and fast performance.
  • Integrated Media Player: The application includes a built-in media player, allowing users to stream torrent content directly within the web interface.
  • Remote Access: Users can access their torrent content from anywhere with an internet connection, making it a convenient solution for remote file management.

Cons

  • Legal Concerns: The use of torrent technology may raise legal concerns in some jurisdictions, and users should be aware of the applicable laws and regulations in their area.
  • Security Risks: As with any self-hosted application, there are potential security risks that users should be aware of and take appropriate measures to mitigate.
  • Limited Customization: The project's user interface and functionality are relatively basic, and users with more advanced needs may find the options limited.
  • Dependency on Third-Party Services: The application relies on third-party torrent search engines and indexers, which may be subject to changes or disruptions beyond the project's control.

Getting Started

To get started with jpillora/cloud-torrent, follow these steps:

  1. Download the latest release of the application from the project's GitHub repository.
  2. Extract the downloaded file and navigate to the extracted directory.
  3. Run the application using the appropriate command for your operating system:
    • Windows: cloud-torrent.exe
    • macOS/Linux: ./cloud-torrent
  4. Open your web browser and navigate to http://localhost:3000 to access the web interface.
  5. Use the search functionality to find and download torrent files, or add existing torrent files to the application.
  6. Enjoy streaming or downloading your content directly within the web interface.

Please note that the use of this application may be subject to legal restrictions in your area, and it is the user's responsibility to ensure compliance with applicable laws and regulations.

Competitor Comparisons

5,528

Full-featured BitTorrent client package and utilities

Pros of torrent

  • More actively maintained with frequent updates
  • Offers a comprehensive Go BitTorrent client library
  • Provides lower-level control and flexibility for developers

Cons of torrent

  • Lacks a built-in web interface for easy management
  • Requires more setup and integration work for end-user applications
  • May have a steeper learning curve for non-developers

Code Comparison

cloud-torrent:

engine := torrent.NewEngine(config)
engine.Start()

torrent:

client, _ := torrent.NewClient(nil)
t, _ := client.AddMagnet(magnetLink)
<-t.GotInfo()
t.DownloadAll()

Summary

While cloud-torrent offers a more user-friendly, out-of-the-box solution with a web interface, torrent provides a more flexible and comprehensive BitTorrent library for developers. cloud-torrent is better suited for end-users looking for a simple torrent management solution, whereas torrent is ideal for developers building custom BitTorrent applications or integrating torrent functionality into existing projects.

☁️ Simple Torrent: a self-hosted remote torrent client (rebranded from Cloud Torrent)

Pros of simple-torrent

  • More actively maintained with recent updates and bug fixes
  • Improved UI with a modern, responsive design
  • Enhanced features like stream support and DLNA streaming

Cons of simple-torrent

  • Larger codebase, potentially more complex to understand and modify
  • May have higher resource usage due to additional features

Code Comparison

cloud-torrent:

func (s *Server) startHTTP() error {
    s.http = &http.Server{
        Addr:    s.Config.ListenAddr,
        Handler: http.HandlerFunc(s.handle),
    }
    return s.http.ListenAndServe()
}

simple-torrent:

func (s *Server) Run(host string, port int) error {
    addr := fmt.Sprintf("%s:%d", host, port)
    s.log.Printf("Listening at %s", addr)
    return s.engine.Server.Run(addr)
}

Both projects use Go and implement HTTP servers, but simple-torrent's implementation appears more modular and flexible, utilizing a separate engine component for server functionality.

⚡️ Streaming torrent client for the web

Pros of WebTorrent

  • Browser-based streaming: WebTorrent allows for streaming torrents directly in the browser without additional software
  • Wider ecosystem: Offers a more extensive set of tools and libraries for developers
  • Active development: More frequent updates and larger community support

Cons of WebTorrent

  • Higher resource usage: May consume more system resources due to its browser-based nature
  • Limited server-side functionality: Primarily focused on client-side operations

Code Comparison

WebTorrent (client-side usage):

const WebTorrent = require('webtorrent')
const client = new WebTorrent()

client.add(torrentId, function (torrent) {
  torrent.files.forEach(file => {
    file.appendTo('body')
  })
})

Cloud-torrent (server-side configuration):

engine := torrent.NewEngine(&torrent.Config{
    DataDir:  "./downloads",
    Port:     50007,
    Seed:     true,
    UploadKB: 1024,
})

Both projects serve different purposes: WebTorrent focuses on browser-based torrent streaming and downloading, while Cloud-torrent is designed for server-side torrent management and web-based remote control. The choice between them depends on specific use cases and deployment requirements.

Official Transmission BitTorrent client repository

Pros of Transmission

  • More mature and feature-rich BitTorrent client with a longer development history
  • Supports multiple platforms (Windows, macOS, Linux) and offers native desktop applications
  • Provides advanced features like bandwidth scheduling, encryption, and remote control

Cons of Transmission

  • Requires installation and setup on the local machine
  • May have a steeper learning curve for new users compared to Cloud-torrent's web-based interface
  • Lacks built-in cloud storage integration

Code Comparison

Transmission (C++):

int tr_torrentSetLocation(tr_torrent* tor, const char* location, bool move_from_old_path, bool * set_location_error)
{
    // Implementation details
}

Cloud-torrent (Go):

func (s *Server) serveFiles(w http.ResponseWriter, r *http.Request) {
    // Implementation details
}

While both projects are BitTorrent clients, they have different focuses. Transmission is a full-featured, traditional BitTorrent client written in C++, offering a wide range of capabilities and platform support. Cloud-torrent, on the other hand, is a lightweight, web-based torrent client written in Go, designed for easy deployment and cloud integration. The code snippets highlight the different languages and approaches used in each project.

qBittorrent BitTorrent client

Pros of qBittorrent

  • Full-featured desktop application with a rich GUI
  • Supports advanced features like RSS feeds, IP filtering, and sequential downloading
  • Cross-platform compatibility (Windows, macOS, Linux)

Cons of qBittorrent

  • Requires local installation and setup
  • Not designed for remote or cloud-based usage
  • Larger resource footprint compared to lightweight alternatives

Code Comparison

qBittorrent (C++):

void TorrentHandle::addTrackers(const QVector<QUrl> &trackers)
{
    const lt::torrent_handle nativeHandle = m_nativeHandle;
    for (const QUrl &tracker : trackers)
        nativeHandle.add_tracker(tracker.toString().toStdString());
}

cloud-torrent (Go):

func (e *Engine) NewTorrent(magnetURI string) error {
    t, err := torrent.NewFromMagnetURI(magnetURI)
    if err != nil {
        return err
    }
    e.client.Start(t)
    return nil
}

The code snippets demonstrate different approaches to handling torrents. qBittorrent uses C++ and libtorrent, while cloud-torrent is written in Go with a simpler implementation. qBittorrent's code shows more advanced functionality for managing trackers, whereas cloud-torrent focuses on a straightforward method to add a new torrent from a magnet link.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

screenshot

Cloud torrent is a a self-hosted remote torrent client, written in Go (golang). You start torrents remotely, which are downloaded as sets of files on the local disk of the server, which are then retrievable or streamable via HTTP.

Features

  • Single binary
  • Cross platform
  • Embedded torrent search
  • Real-time updates
  • Mobile-friendly
  • Fast content server

See Future Features here

Install

Binaries

Releases Releases

See the latest release or download and install it now with

curl https://i.jpillora.com/cloud-torrent! | bash

Tip: Auto-run cloud-torrent on boot

Docker

Docker Pulls

$ docker run -d -p 3000:3000 -v /path/to/my/downloads:/downloads jpillora/cloud-torrent

Source

Go is required to install from source

$ go get -v github.com/jpillora/cloud-torrent

VPS

Digital Ocean

  1. Sign up with free $10 credit
  2. "Create Droplet"
  3. "One-Click Apps"
  4. "Docker X.X.X on X.X"
  5. Choose server size ("$5/month" is enough)
  6. Choose server location
  7. OPTIONAL Add your SSH key
  8. "Create"
  9. You will be emailed the server details (IP Address: ..., Username: root, Password: ...)
  10. SSH into the server using these details (Windows: Putty, Mac: Terminal)
  11. Follow the prompts to set a new password
  12. Run cloud-torrent with:
docker run --name ct -d -p 63000:63000 \
  --restart always \
  -v /root/downloads:/downloads \
  jpillora/cloud-torrent --port 63000

13. Visit http://<IP Address from email>:63000/ 14. OPTIONAL In addition to --port you can specify the options below

Vultr

AWS

Heroku (Heroku is no longer supported)

Usage

$ cloud-torrent --help

  Usage: cloud-torrent [options]

  Options:
  --title, -t        Title of this instance (default Cloud Torrent, env TITLE)
  --port, -p         Listening port (default 3000, env PORT)
  --host, -h         Listening interface (default all)
  --auth, -a         Optional basic auth in form 'user:password' (env AUTH)
  --config-path, -c  Configuration file path (default cloud-torrent.json)
  --key-path, -k     TLS Key file path
  --cert-path, -r    TLS Certicate file path
  --log, -l          Enable request logging
  --open, -o         Open now with your default browser
  --help
  --version, -v

  Version:
    0.X.Y

  Read more:
    https://github.com/jpillora/cloud-torrent

Future features

The next set of core features can be tracked here. This feature set requires large structural changes and therefore requires a complete rewrite for best results. This rewrite is in progress in the 0.9 branch though it will take quite some time.

In summary, the core features will be:

  • Remote backends

    It's looking like 0.9 will be more of a general purpose cloud transfer engine. It will be capable of transfering files from and source file-system to any destination file-system. A torrent can be viewed a folder with files, just like your local disk, and Dropbox. As long as it has a concept of files and folders, it could potentially be a cloud-torrent file-system backend. Track this issue https://github.com/jpillora/cloud-torrent/issues/24 for the list of proposed backends.

  • File Transforms

    During a file tranfer, one could apply different transforms against the byte stream for various effect. For example, supported transforms might include: video transcoding (using ffmpeg), encryption and decryption, media sorting (file renaming), and writing multiple files as a single zip file.

  • Automatic updates Binary will upgrade itself, adding new features as they get released.

  • RSS Automatically add torrents, with smart episode filter.

Once completed, cloud-torrent will no longer be a simple torrent client and most likely project be renamed.

Donate

If you'd like to buy me a coffee or more, you can donate via PayPal or BitCoin 1AxEWoz121JSC3rV8e9MkaN9GAc5Jxvs4.

Notes

This project is the rewrite of the original Node version.

overview

Credits to @anacrolix for https://github.com/anacrolix/torrent

Copyright (c) 2017 Jaime Pillora