Jump to content

Rtorrent: Difference between revisions

From NixOS Wiki
Makefu (talk | contribs)
add server category
Makefu (talk | contribs)
remove jesec-rtorrent
 
Line 15: Line 15:
     enable = true;
     enable = true;
     port = peer-port;
     port = peer-port;
     package = pkgs.jesec-rtorrent; # currently (2024-12-30) rtorrent 0.15.0 in nixpkgs unstable is incompatible with flood, this is why a fork is used
     package = pkgs.rtorrent; # (2025-07-28) upstream develop of rtorrent continued, jesec-rtorrent does not build in nixpkgs
     openFirewall = true;
     openFirewall = true;
   };
   };

Latest revision as of 12:06, 28 July 2025

rtorrent is a bittorrent client. This article discusses integrations of rtorrent with other graphical interfaces such as flood.

Integration with flood-js via UNIX sockets

rtorrent can open a socket which other software can use to interface with. No unprotected RPC socket of rtorrent is required with this setup and it therefore provides a higher security standard.

{ config, lib, pkgs, ... }:

let
  peer-port = 51412;
  web-port = 8112;
in {
  
  services.rtorrent = {
    enable = true;
    port = peer-port;
    package = pkgs.rtorrent; # (2025-07-28) upstream develop of rtorrent continued, jesec-rtorrent does not build in nixpkgs
    openFirewall = true;
  };

  services.flood = {
    enable = true;
    port = web-port;
    openFirewall = true;
    extraArgs = ["--rtsocket=${config.services.rtorrent.rpcSocket}"];
  };
  # allow access to the socket by putting it in the same group as rtorrent service
  # the socket will have g+w permissions
  systemd.services.flood.serviceConfig.SupplementaryGroups = [ config.services.rtorrent.group ];
}

Sample configuration is to be put into rtorrent.nix and imported in your configuration.nix via:

{
  imports = [ ./rtorrent.nix ];
}

After performing nixos-rebuild switch on port http://localhost:8112 the flood service should run.