Files
nixarr/README.md
T
2024-02-25 00:37:02 +01:00

3.4 KiB

Nixarr

Logo

This is a nixos module that aims to make the installation and management of running the "*Arrs" as easy, and pain free, as possible.

If you have problems or feedback, feel free to join the discord.

Note that this is still in a somewhat alpha state and options are still subject to change.

Options

The documentation for the options can be found here

Features

  • Run services through a VPN: You can run any service that this module supports through a VPN, fx nixarr.*.vpn.enable = true;
  • Automatic Directories, Users and Permissions: The module automatically creates directories and users for your media library. It also sets sane permissions.
  • State Management: All services support state management and all state that they manage is by default in /data/.state/nixarr/*
  • Optional Automatic Port Forwarding: This module has a UPNP module that lets services request ports from your router automatically, if you enable it.

To run services through a VPN, you must provide a wg-quick config file:

nixarr.vpn = {
  enable = true;
  # IMPORTANT: This file must _not_ be in the config git directory
  # You can usually get this wireguard file from your VPN provider
  wgConf = "/data/.secret/wg.conf";
}

Examples

Full example can be seen below:

nixarr = {
  enable = true;
  # These two values are also the default, but you can set them to whatever
  # else you want
  mediaDir = "/data/media";
  stateDir = "/data/media/.state";

  vpn = {
    enable = true;
    # IMPORTANT: This file must _not_ be in the config git directory
    # You can usually get this wireguard file from your VPN provider
    wgConf = "/data/.secret/wg.conf";
  };

  jellyfin = {
    enable = true;
    # These options set up a nginx HTTPS reverse proxy, so you can access
    # Jellyfin on your domain with HTTPS
    expose = {
      enable = true;
      domainName = "your.domain.com";
      acmeMail = "your@email.com"; # Required for ACME-bot
    };
  };

  transmission = {
    enable = true;
    vpn.enable = true;
    peerPort = 50000; # Set this to the port forwarded by your VPN
  };

  # It is possible for this module to run the *Arrs through a VPN, but it
  # is generally not recommended, as it can cause rate-limiting issues.
  sonarr.enable = true;
  radarr.enable = true;
  prowlarr.enable = true;
  readarr.enable = true;
  lidarr.enable = true;
};

Another example where port forwarding is not an option. This could be useful for example if you're living in a dorm without access to port forwarding:

nixarr = {
  enable = true;

  vpn = {
    enable = true;
    wgConf = "/data/.secret/wg.conf";
  };

  jellyfin = {
    enable = true;
    vpn = {
      enable = true;
      # Access the Jellyfin web-ui from the internet
      openWebPort = true;
    };
  };

  transmission = {
    enable = true;
    vpn.enable = true;
    peerPort = 50000; # Set this to the port forwarded by your VPN
  };

  sonarr.enable = true;
  radarr.enable = true;
  prowlarr.enable = true;
  readarr.enable = true;
  lidarr.enable = true;
};

VPN

It's recommended that the VPN you're using has support for port forwarding. I suggest AirVpn, since they accept Monero, but you can use whatever you want.