Changed caddy config

This commit is contained in:
Timo Boomers 2025-06-03 19:24:29 +02:00
parent 9fd98e97fe
commit 5da7636a42
19 changed files with 97 additions and 54 deletions

View File

@ -2,7 +2,7 @@
# your system. Help is available in the configuration.nix(5) man page # your system. Help is available in the configuration.nix(5) man page
# and in the NixOS manual (accessible by running nixos-help). # and in the NixOS manual (accessible by running nixos-help).
{ modulesPath, ... }: { modulesPath, lib, ... }:
{ {
imports = [ imports = [
@ -12,6 +12,8 @@
../../modules/system/default.nix ../../modules/system/default.nix
]; ];
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
settings = { settings = {
hostname = "v-th-ctr-01"; hostname = "v-th-ctr-01";
display-manager = "none"; display-manager = "none";

View File

@ -57,6 +57,7 @@
vikunja.enable = true; vikunja.enable = true;
stalwart.enable = true; stalwart.enable = true;
linkding.enable = true; linkding.enable = true;
jellyfin.enable = true;
}; };
}; };

View File

@ -49,11 +49,10 @@ in {
}; };
}; };
settings.containers.caddy.routes.tbmrs-local.routes = [{ settings.containers.caddy.routes.tbmrs-local.routes.beszel = {
name = "beszel";
host = "monitor"; host = "monitor";
url = "beszel:8090"; url = "beszel:8090";
}]; };
sops.secrets = { sops.secrets = {
"containers/beszel/key" = { }; "containers/beszel/key" = { };

View File

@ -5,6 +5,12 @@ with lib;
let let
cfg = config.settings.containers.caddy; cfg = config.settings.containers.caddy;
toInternal = name: routesDef: {
name = name;
host = routesDef.host;
url = routesDef.url;
};
generateRoutes = domain: entries: lib.concatMapStrings (route: '' generateRoutes = domain: entries: lib.concatMapStrings (route: ''
@${route.name} host ${route.host}.${domain} @${route.name} host ${route.host}.${domain}
handle @${route.name} { handle @${route.name} {
@ -13,11 +19,8 @@ let
'') entries; '') entries;
routesOption = lib.mkOption { routesOption = lib.mkOption {
type = types.listOf (types.submodule { type = types.attrsOf (types.submodule {
options = { options = {
name = mkOption {
type = types.str;
};
url = mkOption { url = mkOption {
type = types.str; type = types.str;
}; };
@ -79,7 +82,7 @@ in {
resolvers 1.1.1.1 resolvers 1.1.1.1
} }
${generateRoutes cfg.routes.tbmrs.domain cfg.routes.tbmrs.routes} ${generateRoutes cfg.routes.tbmrs.domain (mapAttrsToList toInternal cfg.routes.tbmrs.routes)}
} }
*.local.tbmrs.nl { *.local.tbmrs.nl {
@ -88,7 +91,7 @@ in {
resolvers 1.1.1.1 resolvers 1.1.1.1
} }
${generateRoutes cfg.routes.tbmrs-local.domain cfg.routes.tbmrs-local.routes} ${generateRoutes cfg.routes.tbmrs-local.domain (mapAttrsToList toInternal cfg.routes.tbmrs-local.routes)}
} }
''; '';
}; };

View File

@ -29,10 +29,9 @@ in {
}; };
}; };
settings.containers.caddy.routes.tbmrs.routes = [{ settings.containers.caddy.routes.tbmrs.routes.forgejo = {
name = "forgejo";
host = "git"; host = "git";
url = "forgejo:3000"; url = "forgejo:3000";
}]; };
}; };
} }

View File

@ -28,10 +28,9 @@ in {
}; };
}; };
settings.containers.caddy.routes.tbmrs-local.routes = [{ settings.containers.caddy.routes.tbmrs-local.routes.home-assistant = {
name = "homeassistant";
host = "home-assistant"; host = "home-assistant";
url = "homeassistant:8123"; url = "homeassistant:8123";
}]; };
}; };
} }

View File

@ -32,6 +32,11 @@ in {
}; };
}; };
settings.containers.caddy.routes.tbmrs.routes.homepage = {
host = "home";
url = "homepage:3000";
};
home.file."containers/homepage/config/settings.yaml".source = (pkgs.formats.yaml { }).generate "settings" { home.file."containers/homepage/config/settings.yaml".source = (pkgs.formats.yaml { }).generate "settings" {
title = "Timo's Server"; title = "Timo's Server";
description = "server from Timo"; description = "server from Timo";
@ -125,12 +130,21 @@ in {
}; };
} }
{ {
"Karakeep" = { "Linkding" = {
href = "https://karakeep.local.tbmrs.nl"; href = "https://links.local.tbmrs.nl";
description = "Data hoarder"; description = "Bookmarks";
icon = "karakeep"; icon = "linkding";
server = "podman"; server = "podman";
container = "karakeep"; container = "linkding";
};
}
{
"Stalwart" = {
href = "https://mail.tbmrs.nl";
description = "Mailserver";
icon = "stalwart";
server = "podman";
container = "stalwart";
}; };
} }
]; ];

View File

@ -72,10 +72,9 @@ in {
exec = ''postgres -c shared_preload_libraries=vectors.so -c 'search_path="$$user", public, vectors' -c logging_collector=on -c max_wal_size=2GB -c shared_buffers=512MB -c wal_compression=on''; exec = ''postgres -c shared_preload_libraries=vectors.so -c 'search_path="$$user", public, vectors' -c logging_collector=on -c max_wal_size=2GB -c shared_buffers=512MB -c wal_compression=on'';
}; };
settings.containers.caddy.routes.tbmrs.routes = [{ settings.containers.caddy.routes.tbmrs.routes.immich = {
name = "immich";
host = "photos"; host = "photos";
url = "immich-server:2283"; url = "immich-server:2283";
}]; };
}; };
} }

View File

@ -0,0 +1,36 @@
{ config, lib, ... }:
with lib;
let
cfg = config.settings.containers.jellyfin;
in {
options = {
settings.containers.jellyfin.enable = lib.mkOption {
type = lib.types.bool;
default = false;
description = ''
Enable jellyfin container
'';
};
};
config = mkIf cfg.enable {
services.podman.containers.jellyfin = {
image = "jellyfin:jellyfin";
network = "proxy";
volumes = [
"%h/containers/jellyfin/data:/data"
"%h/containers/jellyfin/cache:/cache"
"%h/media:/media"
];
userNS = "keep-id";
};
settings.containers.caddy.routes.tbmrs.routes.jellyfin = {
name = "jellyfin";
host = "watch";
url = "jellyfin:8096";
};
};
}

View File

@ -37,10 +37,9 @@ in {
}; };
}; };
settings.containers.caddy.routes.tbmrs.routes = [{ settings.containers.caddy.routes.tbmrs.routes.kanidm = {
name = "kanidm";
host = "auth"; host = "auth";
url = "https://auth.tbmrs.nl"; url = "https://auth.tbmrs.nl";
}]; };
}; };
} }

View File

@ -36,11 +36,10 @@ in {
]; ];
}; };
settings.containers.caddy.routes.tbmrs-local.routes = [{ settings.containers.caddy.routes.tbmrs-local.routes.linkding = {
name = "linkding";
host = "links"; host = "links";
url = "linkding:9090"; url = "linkding:9090";
}]; };
settings.services.sops.enable = true; settings.services.sops.enable = true;

View File

@ -88,11 +88,10 @@ in {
]; ];
}; };
settings.containers.caddy.routes.tbmrs-local.routes = [{ settings.containers.caddy.routes.tbmrs-local.routes.paperless-ngx = {
name = "paperless-ngx";
host = "paperless"; host = "paperless";
url = "paperless-ngx:8000"; url = "paperless-ngx:8000";
}]; };
sops.secrets = { sops.secrets = {
"containers/paperless-ngx/db-password" = { }; "containers/paperless-ngx/db-password" = { };

View File

@ -39,11 +39,10 @@ in {
}; };
}; };
settings.containers.caddy.routes.tbmrs.routes = [{ settings.containers.caddy.routes.tbmrs.routes.pingvin = {
name = "pingvin-share";
host = "share"; host = "share";
url = "pingvin-share:3000"; url = "pingvin-share:3000";
}]; };
sops.templates = { sops.templates = {
"container-pingvin.yaml" = { "container-pingvin.yaml" = {

View File

@ -34,10 +34,9 @@ in {
]; ];
}; };
settings.containers.caddy.routes.tbmrs.routes = [{ settings.containers.caddy.routes.tbmrs.routes.stalwart = {
name = "stalwart";
host = "mail"; host = "mail";
url = "stalwart:8080"; url = "stalwart:8080";
}]; };
}; };
} }

View File

@ -44,16 +44,14 @@ in {
]; ];
}; };
settings.containers.caddy.routes.tbmrs-local.routes = [{ settings.containers.caddy.routes.tbmrs-local.routes.sycnthing = {
name = "syncthing";
host = "syncthing"; host = "syncthing";
url = "syncthing:8384"; url = "syncthing:8384";
}]; };
settings.containers.caddy.routes.tbmrs.routes = [{ settings.containers.caddy.routes.tbmrs.routes.dufs = {
name = "dufs";
host = "files"; host = "files";
url = "dufs:5000"; url = "dufs:5000";
}]; };
}; };
} }

View File

@ -24,10 +24,9 @@ in {
]; ];
}; };
settings.containers.caddy.routes.tbmrs.routes = [{ settings.containers.caddy.routes.tbmrs.routes.uptime-kuma = {
name = "uptime-kuma";
host = "uptime"; host = "uptime";
url = "uptime-kuma:3001"; url = "uptime-kuma:3001";
}]; };
}; };
} }

View File

@ -28,11 +28,10 @@ in {
}; };
}; };
settings.containers.caddy.routes.tbmrs-local.routes = [{ settings.containers.caddy.routes.tbmrs-local.routes.vaultwarden = {
name = "vaultwarden";
host = "vault"; host = "vault";
url = "vaultwarden:80"; url = "vaultwarden:80";
}]; };
}; };
} }

View File

@ -26,10 +26,9 @@ in {
]; ];
}; };
settings.containers.caddy.routes.tbmrs-local.routes = [{ settings.containers.caddy.routes.tbmrs-local.routes.vikunja = {
name = "vikunja";
host = "tasks"; host = "tasks";
url = "vikunja:3456"; url = "vikunja:3456";
}]; };
}; };
} }

View File

@ -46,6 +46,7 @@
./containers/stalwart.nix ./containers/stalwart.nix
./containers/static.nix ./containers/static.nix
./containers/linkding.nix ./containers/linkding.nix
./containers/jellyfin.nix
]; ];
config = { config = {