2025-02-17 20:28:19 -05:00
2025-02-17 20:28:19 -05:00
2025-02-16 11:08:29 -05:00
2025-02-16 11:10:14 -05:00
2025-02-16 11:10:14 -05:00
2025-02-16 11:10:14 -05:00
2025-02-16 11:10:14 -05:00
2025-02-16 11:21:05 -05:00
2025-02-17 20:28:19 -05:00
2025-02-16 12:25:08 -05:00

vitvid Torrent Seeder

Simple Torrent Seeder is a Node.js application that uses WebTorrent to seed torrents from the command line and provides a modern web interface to manage them. The app saves torrent metadata to a JSON file so that torrents can be resumed automatically when the server restarts. It supports adding, pausing/resuming, and removing torrents, and displays details such as progress, peer count, and upload/download amounts.

Features

  • Add Torrents: Enter a magnet link to add a new torrent.
  • Active/Paused View: See a list of active torrents and paused ones.
  • Pause/Resume: Pause a torrent (which removes it from active seeding) and resume it later.
  • Remove Torrents: Remove a torrent from the client and delete its files.
  • Detailed Status: View progress, peer count, downloaded, and uploaded amounts.
  • Persistent Storage: Torrent metadata is saved to a JSON file for persistence.
  • Responsive UI: A modern, desktop- and mobile-friendly interface built with Bootstrap.

Prerequisites

  • Node.js (v18 or later recommended)
  • npm (comes with Node.js)

Installation

  1. Clone the Repository:

    git clone https://github.com/yourusername/simple-torrent-seeder.git
    cd simple-torrent-seeder
    
  2. Install Dependencies:

    npm install
    

    This command installs the following packages:

    • express
    • webtorrent
    • express-rate-limit
    • winston

Configuration

  • The app uses a config.json file to store settings. If one does not exist, it will be created automatically with the default storage directory set to ./downloads.
  • You can change the storage directory either via the web interface under Storage Settings or by editing the config.json file directly.

Running the App

Start the server with:

node server.js

Then open your web browser and navigate to http://localhost:3000.

Usage

Adding a Torrent

  • Enter a magnet link into the Add New Torrent form and click Add Torrent.
  • The torrent will be added and saved to the torrents.json file.

Viewing Torrents

  • The active torrents are displayed in a table that shows:
    • Name
    • Progress
    • Peer Count
    • Downloaded (in human-readable format)
    • Uploaded (in human-readable format)
    • Status (Active or Paused)
  • The table refreshes automatically every 5 seconds.

Pause/Resume

  • Pause: Click the Pause button to stop seeding a torrent (its metadata remains saved).
  • Resume: Click the Resume button to re-add a paused torrent (if files exist, it will be seeded).

Removing a Torrent

  • Click the Remove button to delete a torrent from the client and remove its files from disk.

Changing Storage Settings

  • Update the storage directory in the Storage Settings form and click Update Storage Directory.
  • The current storage directory is displayed below the form.

Graceful Shutdown

The application handles termination signals (SIGINT, SIGTERM) by closing the HTTP server and destroying the WebTorrent client, ensuring that all active processes are terminated properly.

Troubleshooting

  • Max Listeners Warning:
    If you receive a "MaxListenersExceededWarning" message, the default maximum has been increased by setting:

    import { EventEmitter } from 'events';
    EventEmitter.defaultMaxListeners = 50;
    

    at the top of the code.

  • Torrent Not Resuming:
    Ensure that the file/folder names in your downloads directory match the name property stored in the torrents.json file.

License

This project is licensed under the MIT License.

S
Description
bitvid webtorrent-cli torrent seeder
Readme
2.3 MiB
0 Stars 1 Watchers 0 Forks
Languages
HTML 45.1%
JavaScript 44.2%
CSS 10.7%