Fixed jellyfin expose bug and improved docs

This commit is contained in:
rasmus-kirk
2024-02-26 17:37:37 +01:00
parent f178465200
commit b49cae6b20
10 changed files with 40 additions and 605 deletions
-225
View File
@@ -1,225 +0,0 @@
{
"text-color": "#282828",
"background-color": "#fbf1c7",
"line-number-color": "#3c3836",
"line-number-background-color": "#fbf1c7",
"text-styles": {
"Alert": {
"text-color": "#9d0006",
"background-color": null,
"bold": true,
"italic": false,
"underline": false
},
"Annotation": {
"text-color": "#b16286",
"background-color": null,
"bold": false,
"italic": false,
"underline": false
},
"Attribute": {
"text-color": "#076678",
"background-color": null,
"bold": false,
"italic": false,
"underline": false
},
"BaseN": {
"text-color": "#b57614",
"background-color": null,
"bold": false,
"italic": false,
"underline": false
},
"BuiltIn": {
"text-color": "#8f3f71",
"background-color": null,
"bold": true,
"italic": false,
"underline": false
},
"Char": {
"text-color": "#98971a",
"background-color": null,
"bold": false,
"italic": false,
"underline": false
},
"Comment": {
"text-color": "#7c6f64",
"background-color": null,
"bold": false,
"italic": false,
"underline": false
},
"CommentVar": {
"text-color": "#7c6f64",
"background-color": null,
"bold": false,
"italic": false,
"underline": false
},
"Constant": {
"text-color": "#cc241d",
"background-color": null,
"bold": false,
"italic": false,
"underline": false
},
"ControlFlow": {
"text-color": "#282828",
"background-color": null,
"bold": true,
"italic": false,
"underline": false
},
"DataType": {
"text-color": "#458588",
"background-color": null,
"bold": false,
"italic": false,
"underline": false
},
"DecVal": {
"text-color": "#458588",
"background-color": null,
"bold": false,
"italic": false,
"underline": false
},
"Documentation": {
"text-color": "#98971a",
"background-color": null,
"bold": false,
"italic": false,
"underline": false
},
"Error": {
"text-color": "#9d0006",
"background-color": null,
"bold": false,
"italic": false,
"underline": true
},
"Extension": {
"text-color": "#458588",
"background-color": null,
"bold": true,
"italic": false,
"underline": false
},
"Float": {
"text-color": "#b57614",
"background-color": null,
"bold": false,
"italic": false,
"underline": false
},
"Function": {
"text-color": "#b16286",
"background-color": null,
"bold": false,
"italic": false,
"underline": false
},
"Import": {
"text-color": "#d65d0e",
"background-color": null,
"bold": false,
"italic": false,
"underline": false
},
"Information": {
"text-color": "#d65d0e",
"background-color": null,
"bold": false,
"italic": false,
"underline": false
},
"Keyword": {
"text-color": "#282828",
"background-color": null,
"bold": true,
"italic": false,
"underline": false
},
"Normal": {
"text-color": "#282828",
"background-color": null,
"bold": false,
"italic": false,
"underline": false
},
"Operator": {
"text-color": "#282828",
"background-color": null,
"bold": false,
"italic": false,
"underline": false
},
"Other": {
"text-color": "#79740e",
"background-color": null,
"bold": false,
"italic": false,
"underline": false
},
"Preprocessor": {
"text-color": "#79740e",
"background-color": null,
"bold": false,
"italic": false,
"underline": false
},
"RegionMarker": {
"text-color": "#076678",
"background-color": null,
"bold": false,
"italic": false,
"underline": false
},
"SpecialChar": {
"text-color": "#79740e",
"background-color": null,
"bold": false,
"italic": false,
"underline": false
},
"SpecialString": {
"text-color": "#79740e",
"background-color": null,
"bold": false,
"italic": false,
"underline": false
},
"String": {
"text-color": "#98971a",
"background-color": null,
"bold": false,
"italic": false,
"underline": false
},
"Variable": {
"text-color": "#076678",
"background-color": null,
"bold": false,
"italic": false,
"underline": false
},
"VerbatimString": {
"text-color": "#9d0006",
"background-color": null,
"bold": false,
"italic": false,
"underline": false
},
"Warning": {
"text-color": "#b57614",
"background-color": null,
"bold": false,
"italic": false,
"underline": false
}
}
}
+20 -13
View File
@@ -19,8 +19,9 @@ in {
}; };
vpn.enable = mkEnableOption '' vpn.enable = mkEnableOption ''
Route Jellyfin traffic through the VPN. Requires that `nixarr.vpn` **Required options:** [`nixarr.vpn.enable`](/options.html#nixarr.vpn.enable)
is configured
Route Jellyfin traffic through the VPN.
''; '';
expose = { expose = {
@@ -28,8 +29,9 @@ in {
enable = mkEnableOption '' enable = mkEnableOption ''
**Required options:** **Required options:**
- `nixarr.jellyfin.vpn.enable` - [`nixarr.jellyfin.vpn.enable`](/options.html#nixarr.jellyfin.vpn.enable)
- `nixarr.jellyfin.expose.vpn.port` - [`nixarr.jellyfin.expose.vpn.port`](/options.html#nixarr.jellyfin.expose.vpn.port)
- [`nixarr.jellyfin.expose.vpn.accessibleFrom`](/options.html#nixarr.jellyfin.expose.vpn.accessibleFrom)
Expose the Jellyfin web service to the internet, allowing anyone to Expose the Jellyfin web service to the internet, allowing anyone to
access it. access it.
@@ -42,12 +44,17 @@ in {
type = with types; nullOr port; type = with types; nullOr port;
default = null; default = null;
description = '' description = ''
**Required options:** `nixarr.jellyfin.expose.vpn.enable` The port to access jellyfin on. Get this port from your VPN
provider.
'';
};
The port to access jellyfin on. Get this port from your VPN provider. accessibleFrom = mkOption {
type = with types; nullOr str;
**Important:** Do _not_ enable this without setting up Jellyfin default = null;
authentication through localhost first! example = "jellyfin.airvpn.org";
description = ''
The IP or domain that Jellyfin should be able to be accessed from.
''; '';
}; };
}; };
@@ -56,10 +63,10 @@ in {
enable = mkEnableOption '' enable = mkEnableOption ''
**Required options:** **Required options:**
- `nixarr.jellyfin.expose.https.acmeMail` - [`nixarr.jellyfin.expose.https.acmeMail`](/options.html#nixarr.jellyfin.expose.https.acmeMail)
- `nixarr.jellyfin.expose.https.domainName` - [`nixarr.jellyfin.expose.https.domainName`](/options.html#nixarr.jellyfin.expose.https.domainName)
**Conflicting options:** `nixarr.jellyfin.vpn.enable` **Conflicting options:** [`nixarr.jellyfin.vpn.enable`](/options.html#nixarr.jellyfin.vpn.enable)
Expose the Jellyfin web service to the internet with https support, Expose the Jellyfin web service to the internet with https support,
allowing anyone to access it. allowing anyone to access it.
@@ -148,7 +155,7 @@ in {
}; };
}; };
virtualHosts."${config.util-nixarr.vpn.address}:${builtins.toString cfg.expose.vpn.port}" = mkIf cfg.expose.vpn.enable { virtualHosts."${cfg.expose.vpn.accessibleFrom}:${builtins.toString cfg.expose.vpn.port}" = mkIf cfg.expose.vpn.enable {
enableACME = true; enableACME = true;
forceSSL = true; forceSSL = true;
locations."/" = { locations."/" = {
+3 -2
View File
@@ -18,8 +18,9 @@ in {
}; };
vpn.enable = mkEnableOption '' vpn.enable = mkEnableOption ''
Route Lidarr traffic through the VPN. Requires that `nixarr.vpn` **Required options:** [`nixarr.vpn.enable`](/options.html#nixarr.vpn.enable)
is configured
Route Lidarr traffic through the VPN.
''; '';
}; };
+2
View File
@@ -11,6 +11,8 @@ in {
type = types.bool; type = types.bool;
default = false; default = false;
description = '' description = ''
**Required options:** [`nixarr.vpn.enable`](/options.html#nixarr.vpn.enable)
Run the openssh service through a vpn. Run the openssh service through a vpn.
**Note:** This option does _not_ enable the sshd service you still **Note:** This option does _not_ enable the sshd service you still
+3 -2
View File
@@ -24,8 +24,9 @@ in {
}; };
vpn.enable = mkEnableOption '' vpn.enable = mkEnableOption ''
Route Prowlarr traffic through the VPN. Requires that `nixarr.vpn` **Required options:** [`nixarr.vpn.enable`](/options.html#nixarr.vpn.enable)
is configured.
Route Prowlarr traffic through the VPN.
''; '';
}; };
+3 -2
View File
@@ -20,8 +20,9 @@ in {
}; };
vpn.enable = mkEnableOption '' vpn.enable = mkEnableOption ''
Route Radarr traffic through the VPN. Requires that `nixarr.vpn` **Required options:** [`nixarr.vpn.enable`](/options.html#nixarr.vpn.enable)
is configured.
Route Radarr traffic through the VPN.
''; '';
}; };
+3 -2
View File
@@ -18,8 +18,9 @@ in {
}; };
vpn.enable = mkEnableOption '' vpn.enable = mkEnableOption ''
Route Readarr traffic through the VPN. Requires that `nixarr.vpn` **Required options:** [`nixarr.vpn.enable`](/options.html#nixarr.vpn.enable)
is configured.
Route Readarr traffic through the VPN.
''; '';
}; };
+3 -2
View File
@@ -24,8 +24,9 @@ in {
}; };
vpn.enable = mkEnableOption '' vpn.enable = mkEnableOption ''
Route Readarr traffic through the VPN. Requires that `nixarr.vpn` **Required options:** [`nixarr.vpn.enable`](/options.html#nixarr.vpn.enable)
is configured.
Route Sonarr traffic through the VPN.
''; '';
}; };
+3 -5
View File
@@ -18,9 +18,6 @@ in {
default = "${nixarr.stateDir}/nixarr/transmission"; default = "${nixarr.stateDir}/nixarr/transmission";
description = '' description = ''
The state directory for Transmission. The state directory for Transmission.
**BUG**: Only works when the `nixarr.transmission.vpn.enable` option
is set.
''; '';
}; };
@@ -33,8 +30,9 @@ in {
}; };
vpn.enable = mkEnableOption '' vpn.enable = mkEnableOption ''
**Recommended!** Route Transmission traffic through the VPN. Requires that `nixarr.vpn` **Required options:** [`nixarr.vpn.enable`](/options.html#nixarr.vpn.enable)
is configured.
**Recommended:** Route Transmission traffic through the VPN.
''; '';
flood.enable = mkEnableOption "Use the flood web-UI"; flood.enable = mkEnableOption "Use the flood web-UI";
-352
View File
@@ -1,352 +0,0 @@
/*
* I add this to html files generated with pandoc.
*/
:root {
--bg: #fbf1c7;
--bgt: #fbf1c7;
--bge: #fbf8e4;
--bg0: #f9f5d7;
--fg0: #282828;
--ltred: #cc241d;
--ltgreen: #98971a;
--ltyellow: #d79921;
--ltblue: #458588;
--ltpurple: #b16286;
--ltaqua: #689da6;
--ltorange: #d65d0e;
--ltgrey: #7c6f64;
--dkred: #9d0006;
--dkgreen: #79740e;
--dkyellow: #b57614;
--dkblue: #076678;
--dkpurple: #8f3f71;
--dkaqua: #427b58;
--dkgrey: #3c3836;
}
html {
font-size: 100%;
overflow-y: scroll;
-webkit-text-size-adjust: 100%;
-ms-text-size-adjust: 100%;
}
body {
color: var(--fg0);
font-family: Georgia, Palatino, 'Palatino Linotype', Times, 'Times New Roman', serif;
font-size: 12px;
line-height: 1.7;
padding: 1em;
margin: auto;
max-width: 38em;
background: var(--bg0);
}
a {
color: var(--ltblue);
text-decoration: none;
}
a:visited {
color: var(--dkblue);
}
a:hover {
color: var(--ltblue);
}
a:active {
color: var(--ltblue);
}
a:focus {
outline: thin dotted;
}
*::-moz-selection {
/* background: var(--ltred); */
background: rgba(255, 255, 0, 0.3);
color: var(--fg0);
}
*::selection {
background: rgba(255, 255, 0, 0.3);
color: var(--fg0);
}
a::-moz-selection {
background: rgba(255, 255, 0, 0.3);
color: var(--ltblue);
}
a::selection {
background: rgba(255, 255, 0, 0.3);
color: var(--ltblue);
}
p {
margin: 1em 0;
}
img {
max-width: 100%;
}
h1, h2, h3, h4, h5, h6 {
color: var(--fg0);
line-height: 125%;
margin-top: 1em;
font-weight: normal;
}
h4, h5, h6 {
font-weight: bold;
}
h1 {
font-size: 2.5em;
}
h2 {
font-size: 2em;
}
h3 {
font-size: 1.5em;
}
h4 {
font-size: 1.2em;
}
h5 {
font-size: 1em;
}
h6 {
font-size: 0.9em;
}
blockquote {
color: var(--ltgrey);
margin: 0;
padding-left: 3em;
border-left: 0.5em var(--fg0) solid;
}
hr {
display: block;
height: 2px;
border: 0;
border-top: 1px solid #aaa;
border-bottom: 1px solid #eee;
margin: 1em 0;
padding: 0;
}
pre, code, kbd, samp {
color: var(--fg0);
font-family: monospace, monospace;
_font-family: 'courier new', monospace;
font-size: 0.98em;
}
pre {
white-space: pre;
white-space: pre-wrap;
word-wrap: break-word;
}
b, strong {
font-weight: bold;
}
dfn {
font-style: italic;
}
ins {
background: #ff9;
color: #000;
text-decoration: none;
}
mark {
background: #ff0;
color: #000;
font-style: italic;
font-weight: bold;
}
sub, sup {
font-size: 75%;
line-height: 0;
position: relative;
vertical-align: baseline;
}
sup {
top: -0.5em;
}
sub {
bottom: -0.25em;
}
ul, ol {
margin: 1em 0;
padding: 0 0 0 2em;
}
li p:last-child {
margin-bottom: 0;
}
ul ul, ol ol {
margin: .3em 0;
}
dl {
margin-bottom: 1em;
}
dt {
font-weight: bold;
margin-bottom: .8em;
}
dd {
margin: 0 0 .8em 2em;
}
dd:last-child {
margin-bottom: 0;
}
img {
border: 0;
-ms-interpolation-mode: bicubic;
vertical-align: middle;
}
figure {
display: block;
text-align: center;
margin: 1em 0;
}
figure img {
border: none;
margin: 0 auto;
}
figcaption {
font-size: 0.8em;
font-style: italic;
margin: 0 0 .8em;
}
table {
margin-bottom: 2em;
border-bottom: 1px solid #ddd;
border-right: 1px solid #ddd;
border-spacing: 0;
border-collapse: collapse;
}
table th {
padding: .2em 1em;
background-color: #eee;
border-top: 1px solid #ddd;
border-left: 1px solid #ddd;
}
table td {
padding: .2em 1em;
border-top: 1px solid #ddd;
border-left: 1px solid #ddd;
vertical-align: top;
}
.author {
font-size: 1.2em;
text-align: center;
}
@media only screen and (min-width: 480px) {
body {
font-size: 14px;
}
}
@media only screen and (min-width: 768px) {
body {
font-size: 16px;
}
}
@media print {
* {
background: transparent !important;
color: black !important;
filter: none !important;
-ms-filter: none !important;
}
body {
font-size: 12pt;
max-width: 100%;
}
a, a:visited {
text-decoration: underline;
}
hr {
height: 1px;
border: 0;
border-bottom: 1px solid black;
}
a[href]:after {
content: " (" attr(href) ")";
}
abbr[title]:after {
content: " (" attr(title) ")";
}
.ir a:after, a[href^="javascript:"]:after, a[href^="#"]:after {
content: "";
}
pre, blockquote {
border: 1px solid #999;
padding-right: 1em;
page-break-inside: avoid;
}
tr, img {
page-break-inside: avoid;
}
img {
max-width: 100% !important;
}
@page :left {
margin: 15mm 20mm 15mm 10mm;
}
@page :right {
margin: 15mm 10mm 15mm 20mm;
}
p, h2, h3 {
orphans: 3;
widows: 3;
}
h2, h3 {
page-break-after: avoid;
}
}