jellyfin changes
This commit is contained in:
@@ -6,13 +6,11 @@ An example where port forwarding is not an option. This is useful if,
|
|||||||
for example, you're living in a dorm that does not allow it. This
|
for example, you're living in a dorm that does not allow it. This
|
||||||
example does the following:
|
example does the following:
|
||||||
|
|
||||||
- Runs Jellyfin and exposes it to the internet on a set port
|
- Runs Jellyfin
|
||||||
- Starts openssh and runs it through the VPN so that it can be accessed
|
- Starts openssh and runs it through the VPN so that it can be accessed
|
||||||
outside your home network
|
outside your home network
|
||||||
- Runs all the supported "*Arrs"
|
- Runs all the supported "*Arrs"
|
||||||
|
|
||||||
> **Warning:** This is largely untested ATM!
|
|
||||||
|
|
||||||
```nix {.numberLines}
|
```nix {.numberLines}
|
||||||
nixarr = {
|
nixarr = {
|
||||||
enable = true;
|
enable = true;
|
||||||
@@ -22,17 +20,7 @@ example does the following:
|
|||||||
wgConf = "/data/.secret/wg.conf";
|
wgConf = "/data/.secret/wg.conf";
|
||||||
};
|
};
|
||||||
|
|
||||||
jellyfin = {
|
jellyfin.enable = true;
|
||||||
enable = true;
|
|
||||||
vpn.enable = true;
|
|
||||||
|
|
||||||
# Access the Jellyfin web-ui from the internet.
|
|
||||||
# Get this port from your VPN provider
|
|
||||||
expose.vpn = {
|
|
||||||
enable = true;
|
|
||||||
port = 12345;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# Setup SSH service that runs through VPN.
|
# Setup SSH service that runs through VPN.
|
||||||
# Lets you connect through ssh from the internet without having access to
|
# Lets you connect through ssh from the internet without having access to
|
||||||
@@ -60,7 +48,7 @@ example does the following:
|
|||||||
enable = true;
|
enable = true;
|
||||||
settings.PasswordAuthentication = false;
|
settings.PasswordAuthentication = false;
|
||||||
# Get this port from your VPN provider
|
# Get this port from your VPN provider
|
||||||
ports = [ 54321 ]
|
ports = [ 34567 ]
|
||||||
};
|
};
|
||||||
# Adds your public keys as trusted devices
|
# Adds your public keys as trusted devices
|
||||||
users.extraUsers.username.openssh.authorizedKeys.keyFiles = [
|
users.extraUsers.username.openssh.authorizedKeys.keyFiles = [
|
||||||
@@ -87,6 +75,5 @@ can use SSH tunneling. Simply run:
|
|||||||
-L 6007:localhost:6767
|
-L 6007:localhost:6767
|
||||||
```
|
```
|
||||||
|
|
||||||
Replace `user` with your user and `ip` with the public ip, or domain if set
|
Replace `user` with your user and `ip` with the VPN ip. This lets you access
|
||||||
up, of your server. This lets you access the services on `localhost:6001`
|
the services on `localhost:6001` through `localhost:6007`.
|
||||||
through `localhost:6007`.
|
|
||||||
|
|||||||
@@ -64,46 +64,6 @@ in
|
|||||||
};
|
};
|
||||||
|
|
||||||
expose = {
|
expose = {
|
||||||
vpn = {
|
|
||||||
enable = mkOption {
|
|
||||||
type = types.bool;
|
|
||||||
default = false;
|
|
||||||
example = true;
|
|
||||||
description = ''
|
|
||||||
**Required options:**
|
|
||||||
|
|
||||||
- [`nixarr.jellyfin.vpn.enable`](#nixarr.jellyfin.vpn.enable)
|
|
||||||
- [`nixarr.jellyfin.expose.vpn.port`](#nixarr.jellyfin.expose.vpn.port)
|
|
||||||
- [`nixarr.jellyfin.expose.vpn.accessibleFrom`](#nixarr.jellyfin.expose.vpn.accessiblefrom)
|
|
||||||
|
|
||||||
Expose the Jellyfin web service to the internet, allowing anyone to
|
|
||||||
access it.
|
|
||||||
|
|
||||||
> **Warning:** Do _not_ enable this without setting up Jellyfin
|
|
||||||
> authentication through localhost first!
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
port = mkOption {
|
|
||||||
type = with types; nullOr port;
|
|
||||||
default = null;
|
|
||||||
example = 12345;
|
|
||||||
description = ''
|
|
||||||
The port to access jellyfin on. Get this port from your VPN
|
|
||||||
provider.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
accessibleFrom = mkOption {
|
|
||||||
type = with types; nullOr str;
|
|
||||||
default = null;
|
|
||||||
example = "jellyfin.airvpn.org";
|
|
||||||
description = ''
|
|
||||||
The IP or domain that Jellyfin should be able to be accessed from.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
https = {
|
https = {
|
||||||
enable = mkOption {
|
enable = mkOption {
|
||||||
type = types.bool;
|
type = types.bool;
|
||||||
@@ -184,23 +144,6 @@ in
|
|||||||
- nixarr.jellyfin.expose.acmeMail
|
- nixarr.jellyfin.expose.acmeMail
|
||||||
'';
|
'';
|
||||||
}
|
}
|
||||||
{
|
|
||||||
assertion =
|
|
||||||
cfg.expose.vpn.enable
|
|
||||||
-> (
|
|
||||||
cfg.vpn.enable
|
|
||||||
&& (cfg.expose.vpn.port != null)
|
|
||||||
&& (cfg.expose.vpn.accessibleFrom != null)
|
|
||||||
);
|
|
||||||
message = ''
|
|
||||||
The nixarr.jellyfin.expose.vpn.enable option requires the
|
|
||||||
following options to be set, but one of them were not:
|
|
||||||
|
|
||||||
- nixarr.jellyfin.vpn.enable
|
|
||||||
- nixarr.jellyfin.expose.vpn.port
|
|
||||||
- nixarr.jellyfin.expose.vpn.accessibleFrom
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
];
|
];
|
||||||
|
|
||||||
users = {
|
users = {
|
||||||
@@ -276,18 +219,10 @@ in
|
|||||||
locations."/" = {
|
locations."/" = {
|
||||||
recommendedProxySettings = true;
|
recommendedProxySettings = true;
|
||||||
proxyWebsockets = true;
|
proxyWebsockets = true;
|
||||||
proxyPass = "http://192.168.15.1:${builtins.toString defaultPort}";
|
proxyPass = if cfg.expose.vpn.enable then
|
||||||
};
|
"http://192.168.15.1:${builtins.toString cfg.expose.vpn.port}"
|
||||||
};
|
else
|
||||||
})
|
"http://192.168.15.1:${builtins.toString defaultPort}";
|
||||||
(mkIf cfg.expose.vpn.enable {
|
|
||||||
virtualHosts."${builtins.toString cfg.expose.vpn.accessibleFrom}:${builtins.toString cfg.expose.vpn.port}" = {
|
|
||||||
enableACME = true;
|
|
||||||
forceSSL = true;
|
|
||||||
locations."/" = {
|
|
||||||
recommendedProxySettings = true;
|
|
||||||
proxyWebsockets = true;
|
|
||||||
proxyPass = "http://192.168.15.1:${builtins.toString defaultPort}";
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
})
|
})
|
||||||
@@ -313,10 +248,6 @@ in
|
|||||||
to = defaultPort;
|
to = defaultPort;
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
openVPNPorts = optional cfg.expose.vpn.enable {
|
|
||||||
port = cfg.expose.vpn.port;
|
|
||||||
protocol = "tcp";
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user