masive rewriting and setup of server files

This commit is contained in:
2024-09-28 23:10:03 -06:00
parent f9399c51fa
commit 9151ca5971
39 changed files with 756 additions and 556 deletions

View File

@@ -5,28 +5,43 @@
...
}:
let
setup = import ./servers/base.nix { inherit lib config; };
setup = import ./servers/setup.nix { inherit lib config; };
proxy = locations: {
inherit locations;
forceSSL = true;
enableACME = true;
http2 = true;
};
proxyReverse = port: proxy { "/".proxyPass = "http://${config.my.localhost}:${toString port}/"; };
proxyReverse =
host: port:
let
useLocalhost = host == config.networking.hostName;
proxyTarget = if useLocalhost then config.my.localhost else config.my.ips."${host}";
in
proxy { "/".proxyPass = "http://${proxyTarget}:${toString port}/"; };
proxyReverseArr =
port:
proxyReverse port
// {
extraConfig = ''
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
host: port:
let
useLocalhost = host == config.networking.hostName;
headers = ''
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $http_connection;
proxy_redirect off;
proxy_http_version 1.1;
'';
localHeaders = ''
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
'';
in
proxyReverse host port
// {
extraConfig = ''
${if useLocalhost then localHeaders else ""}
${headers}
'';
};
enableContainers = lib.any (opt: opt) [
config.my.servers.collabora.enable
@@ -36,6 +51,7 @@ let
config.my.servers.maloja.enable
config.my.servers.multi-scrobbler.enable
config.my.servers.flame.enable
config.my.servers.flameSecret.enable
config.my.servers.metube.enable
config.my.servers.go-vod.enable
];
@@ -43,7 +59,7 @@ in
{
imports = [
./servers/adguardhome.nix
./servers/paperless.nix
(import ./servers/paperless.nix { inherit lib config; })
./servers/postgres.nix
(import ./servers/audiobookshelf.nix {
inherit
@@ -53,14 +69,28 @@ in
setup
;
})
(import ./servers/bazarr.nix { inherit lib config proxyReverse; })
(import ./servers/flame.nix { inherit lib config proxyReverse; })
(import ./servers/bazarr.nix {
inherit
lib
config
proxyReverse
setup
;
})
(import ./servers/flame.nix {
inherit
lib
config
proxyReverse
setup
;
})
(import ./servers/homepage.nix {
inherit
lib
config
pkgs
proxyReverse
setup
;
})
(import ./servers/jellyfin.nix {
@@ -75,11 +105,18 @@ in
inherit
lib
config
pkgs
proxyReverse
setup
;
})
(import ./servers/lidarr.nix {
inherit
lib
config
proxyReverseArr
setup
;
})
(import ./servers/lidarr.nix { inherit lib config proxyReverseArr; })
(import ./servers/maloja.nix {
inherit
lib
@@ -88,9 +125,30 @@ in
setup
;
})
(import ./servers/mealie.nix { inherit lib config proxyReverse; })
(import ./servers/metube.nix { inherit lib config proxyReverse; })
(import ./servers/microbin.nix { inherit lib config proxyReverse; })
(import ./servers/mealie.nix {
inherit
lib
config
proxyReverse
setup
;
})
(import ./servers/metube.nix {
inherit
lib
config
proxyReverse
setup
;
})
(import ./servers/microbin.nix {
inherit
lib
config
proxyReverse
setup
;
})
(import ./servers/multi-scrobbler.nix {
inherit
lib
@@ -99,27 +157,63 @@ in
setup
;
})
(import ./servers/nextcloud.nix { inherit lib config pkgs; })
(import ./servers/prowlarr.nix { inherit lib config proxyReverseArr; })
(import ./servers/qbittorrent.nix { inherit lib config pkgs; })
(import ./servers/sabnzbd.nix { inherit lib config pkgs; })
(import ./servers/radarr.nix { inherit lib config proxyReverseArr; })
(import ./servers/ryot.nix { inherit lib config proxyReverse; })
(import ./servers/shiori.nix {
(import ./servers/nextcloud.nix {
inherit
lib
config
pkgs
proxyReverse
setup
;
})
(import ./servers/prowlarr.nix {
inherit
lib
config
proxyReverseArr
setup
;
})
(import ./servers/qbittorrent.nix { inherit lib config pkgs; })
(import ./servers/sabnzbd.nix { inherit lib config; })
(import ./servers/radarr.nix {
inherit
lib
config
proxyReverseArr
setup
;
})
(import ./servers/ryot.nix {
inherit
lib
config
proxyReverse
setup
;
})
(import ./servers/shiori.nix {
inherit
lib
config
proxyReverse
setup
;
})
(import ./servers/sonarr.nix {
inherit
lib
config
proxyReverse
setup
;
})
(import ./servers/sonarr.nix { inherit lib config proxyReverse; })
(import ./servers/vaultwarden.nix {
inherit
lib
config
pkgs
proxyReverse
setup
;
})
(import ./servers/firefly-iii.nix { inherit lib config; })
@@ -135,10 +229,19 @@ in
default = "servidos.lat";
description = "The domain name.";
};
miniserver-ip = lib.mkOption {
ips = lib.mkOption {
type = lib.types.attrsOf lib.types.str;
default = {
server = "192.168.1.69";
miniserver = "192.168.1.100";
workstation = "192.168.1.64";
};
description = "Set of IP's for all my computers.";
};
mainServer = lib.mkOption {
type = lib.types.str;
default = "192.168.1.100";
description = "The miniserver ip.";
default = "miniserver";
description = "The hostname of the main server.";
};
postgresSocket = lib.mkOption {
type = lib.types.str;
@@ -165,6 +268,11 @@ in
default = "CaptainJawZ@protonmail.com";
description = "localhost smtp email";
};
timeZone = lib.mkOption {
type = lib.types.str;
default = "America/Mexico_City";
description = "Timezone";
};
enableContainers = lib.mkEnableOption "enable";
enableProxy = lib.mkEnableOption "enable";
};
@@ -182,31 +290,88 @@ in
enableCron = lib.mkDefault false;
};
adguardhome.enable = lib.mkDefault false;
audiobookshelf.enable = lib.mkDefault false;
bazarr.enable = lib.mkDefault false;
collabora.enable = lib.mkDefault false;
flame.enable = lib.mkDefault false;
flameSecret.enable = lib.mkDefault false;
audiobookshelf = {
enable = lib.mkDefault false;
enableProxy = lib.mkDefault false;
};
bazarr = {
enable = lib.mkDefault false;
enableProxy = lib.mkDefault false;
};
collabora = {
enable = lib.mkDefault false;
enableProxy = lib.mkDefault false;
};
flame = {
enable = lib.mkDefault false;
enableProxy = lib.mkDefault false;
};
flameSecret = {
enable = lib.mkDefault false;
enableProxy = lib.mkDefault false;
};
go-vod.enable = lib.mkDefault false;
homepage.enable = lib.mkDefault false;
kavita.enable = lib.mkDefault false;
lidarr.enable = lib.mkDefault false;
maloja.enable = lib.mkDefault false;
mealie.enable = lib.mkDefault false;
metube.enable = lib.mkDefault false;
microbin.enable = lib.mkDefault false;
multi-scrobbler.enable = lib.mkDefault false;
homepage = {
enable = lib.mkDefault false;
enableProxy = lib.mkDefault false;
};
kavita = {
enable = lib.mkDefault false;
enableProxy = lib.mkDefault false;
};
lidarr = {
enable = lib.mkDefault false;
enableProxy = lib.mkDefault false;
};
maloja = {
enable = lib.mkDefault false;
enableProxy = lib.mkDefault false;
};
mealie = {
enable = lib.mkDefault false;
enableProxy = lib.mkDefault false;
};
metube = {
enable = lib.mkDefault false;
enableProxy = lib.mkDefault false;
};
microbin = {
enable = lib.mkDefault false;
enableProxy = lib.mkDefault false;
};
multi-scrobbler = {
enable = lib.mkDefault false;
enableProxy = lib.mkDefault false;
};
paperless.enable = lib.mkDefault false;
postgres.enable = lib.mkDefault false;
prowlarr.enable = lib.mkDefault false;
prowlarr = {
enable = lib.mkDefault false;
enableProxy = lib.mkDefault false;
};
sabnzbd.enable = lib.mkDefault false;
qbittorrent.enable = lib.mkDefault false;
unpackerr.enable = lib.mkDefault false;
radarr.enable = lib.mkDefault false;
ryot.enable = lib.mkDefault false;
shiori.enable = lib.mkDefault false;
sonarr.enable = lib.mkDefault false;
vaultwarden.enable = lib.mkDefault false;
radarr = {
enable = lib.mkDefault false;
enableProxy = lib.mkDefault false;
};
ryot = {
enable = lib.mkDefault false;
enableProxy = lib.mkDefault false;
};
shiori = {
enable = lib.mkDefault false;
enableProxy = lib.mkDefault false;
};
sonarr = {
enable = lib.mkDefault false;
enableProxy = lib.mkDefault false;
};
vaultwarden = {
enable = lib.mkDefault false;
enableProxy = lib.mkDefault false;
};
firefly-iii.enable = lib.mkDefault false;
};
};
@@ -242,7 +407,6 @@ in
];
in
{
enable = true;
allowedTCPPorts = ports;
allowedUDPPorts = ports;
};