This commit is contained in:
parent
f68bd065f8
commit
c443c2b354
3 changed files with 61 additions and 15 deletions
|
@ -15,8 +15,7 @@ in
|
||||||
};
|
};
|
||||||
|
|
||||||
config = lib.mkIf (cfg.enable ||
|
config = lib.mkIf (cfg.enable ||
|
||||||
config.services.binary-cache.enable ||
|
config.services.binary-cache.enable) {
|
||||||
config.suites.nas.media.enable) {
|
|
||||||
services.traefik = {
|
services.traefik = {
|
||||||
enable = true;
|
enable = true;
|
||||||
staticConfigOptions = {
|
staticConfigOptions = {
|
||||||
|
|
|
@ -26,6 +26,12 @@ in
|
||||||
default = "localhost";
|
default = "localhost";
|
||||||
description = "NAS Reachable Domain Name";
|
description = "NAS Reachable Domain Name";
|
||||||
};
|
};
|
||||||
|
options.suites.nas.debug = lib.mkOption {
|
||||||
|
type = with lib.types; uniq bool;
|
||||||
|
default = false;
|
||||||
|
description = "Insecure, shows Traefik Dashboard";
|
||||||
|
};
|
||||||
|
|
||||||
options.suites.nas.media.enable = lib.mkOption {
|
options.suites.nas.media.enable = lib.mkOption {
|
||||||
type = with lib.types; uniq bool;
|
type = with lib.types; uniq bool;
|
||||||
default = true;
|
default = true;
|
||||||
|
@ -49,8 +55,8 @@ in
|
||||||
#########
|
#########
|
||||||
# Users #
|
# Users #
|
||||||
#########
|
#########
|
||||||
users.groups.media = {};
|
users.groups.media = lib.mkForce {}; # kavita wants to create user too
|
||||||
users.users.media = {
|
users.users.media = lib.mkForce {
|
||||||
isSystemUser = true;
|
isSystemUser = true;
|
||||||
createHome = true;
|
createHome = true;
|
||||||
description = "Media User";
|
description = "Media User";
|
||||||
|
@ -105,6 +111,50 @@ in
|
||||||
};
|
};
|
||||||
networking.firewall.allowPing = true;
|
networking.firewall.allowPing = true;
|
||||||
|
|
||||||
|
#################
|
||||||
|
# Reverse Proxy #
|
||||||
|
#################
|
||||||
|
# Firewall
|
||||||
|
networking.firewall.allowedTCPPorts = [ 80 443 8080 ];
|
||||||
|
services.traefik = {
|
||||||
|
enable = true;
|
||||||
|
staticConfigOptions = {
|
||||||
|
api = {
|
||||||
|
dashboard = true;
|
||||||
|
insecure = true;
|
||||||
|
};
|
||||||
|
entryPoints = {
|
||||||
|
http = {
|
||||||
|
address = ":80";
|
||||||
|
# http.redirections.entrypoint = {
|
||||||
|
# to = "https";
|
||||||
|
# scheme = "https";
|
||||||
|
# };
|
||||||
|
};
|
||||||
|
https = {
|
||||||
|
address = ":443";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
services.traefik.dynamicConfigOptions = {
|
||||||
|
# Traefik Dashbaord
|
||||||
|
http.routers.dashboard.rule = "Host(`traefik.mow0m`)";
|
||||||
|
http.routers.dashboard.service = "api@internal";
|
||||||
|
# Jellyfin
|
||||||
|
http.services.jellyfin.loadBalancer.servers = [ { url = "http://localhost:8096/"; } ];
|
||||||
|
http.routers.jellyfin.entrypoints = "http";
|
||||||
|
http.routers.jellyfin.tls = false;
|
||||||
|
http.routers.jellyfin.rule = "Host(`jellyfin.${config.suites.nas.domain}`)";
|
||||||
|
http.routers.jellyfin.service = "jellyfin";
|
||||||
|
# Kavita
|
||||||
|
http.services.kavita.loadBalancer.servers = [ { url = "http://localhost:5000/"; } ];
|
||||||
|
http.routers.kavita.entrypoints = "http";
|
||||||
|
http.routers.kavita.tls = false;
|
||||||
|
http.routers.kavita.rule = "Host(`kavita.${config.suites.nas.domain}`)";
|
||||||
|
http.routers.kavita.service = "kavita";
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
#################
|
#################
|
||||||
# Media Servers #
|
# Media Servers #
|
||||||
|
@ -112,14 +162,10 @@ in
|
||||||
# Jellyfin
|
# Jellyfin
|
||||||
services.jellyfin.enable = cfg.media.servers.enable;
|
services.jellyfin.enable = cfg.media.servers.enable;
|
||||||
services.jellyfin.user = "media";
|
services.jellyfin.user = "media";
|
||||||
services.traefik.dynamicConfigOptions = {
|
# Kavita
|
||||||
http.services.jellyfin.loadBalancer.servers = [ { url = "http://localhost:8096/"; } ];
|
services.kavita.enable = cfg.media.servers.enable;
|
||||||
http.routers.jellyfin.entrypoints = "websecure";
|
services.kavita.user = "media";
|
||||||
http.routers.jellyfin.tls = true;
|
services.kavita.tokenKeyFile = "/home/media/kavitaKeyToken";
|
||||||
#http.routers.jellyfin.tls.certresolver = "letsencrypt";
|
|
||||||
http.routers.jellyfin.rule = "Host(`jellyfin.${config.suites.nas.domain}`)";
|
|
||||||
http.routers.jellyfin.service = "jellyfin";
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
];
|
];
|
||||||
|
|
||||||
# Configure Nix
|
# Configure Nix
|
||||||
nix.package = pkgs.lix.override { aws-sdk-cpp = null; };
|
nix.package = pkgs.lix;
|
||||||
nix.settings = {
|
nix.settings = {
|
||||||
experimental-features = [ "nix-command" "flakes" ];
|
experimental-features = [ "nix-command" "flakes" ];
|
||||||
};
|
};
|
||||||
|
@ -75,10 +75,11 @@
|
||||||
|
|
||||||
# Enable NAS Suite
|
# Enable NAS Suite
|
||||||
suites.nas.enable = true;
|
suites.nas.enable = true;
|
||||||
suites.nas.domain = "mow0m.lan";
|
suites.nas.debug = true;
|
||||||
|
suites.nas.domain = "mow0m";
|
||||||
suites.nas.media.enable = true;
|
suites.nas.media.enable = true;
|
||||||
suites.nas.media.folder = "/laowu/media";
|
suites.nas.media.folder = "/laowu/media";
|
||||||
suites.nas.media.servers.enable = false;
|
suites.nas.media.servers.enable = true;
|
||||||
|
|
||||||
# Firewall
|
# Firewall
|
||||||
# networking.firewall.allowedTCPPorts = [ ... ];
|
# networking.firewall.allowedTCPPorts = [ ... ];
|
||||||
|
|
Loading…
Add table
Reference in a new issue