Files
nixarr/README.md
T
2024-02-25 11:15:29 +01:00

133 lines
3.5 KiB
Markdown

# Nixarr
![Logo](./docs/img/logo-2.png)
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](https://discord.gg/n9ga99KwWC).
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](https://nixarr.rasmuskirk.com/options)
## 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:
```nix {.numberLines}
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:
```nix {.numberLines}
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:
```nix {.numberLines}
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](https://airvpn.org/), since they accept Monero, but you can
use whatever you want.
## Domain Registrars
If you need a domain registrar I suggest [Njalla](https://njal.la/), they
are privacy oriented, support DDNS and accept Monero.