Added caddyfile generation

This commit is contained in:
2025-05-22 08:01:31 +02:00
parent bace54a43d
commit f3bf8d650a
5 changed files with 83 additions and 52 deletions

View File

@@ -4,6 +4,29 @@ with lib;
let
cfg = config.settings.containers.caddy;
generateRoutes = entries: lib.concatMapStrings (route: ''
@${route.name} host ${route.host}
handle @${route.name} {
reverse_proxy ${route.url}
}
'') entries;
routesOption = lib.mkOption {
type = types.listOf (types.submodule {
options = {
name = mkOption {
type = types.str;
};
url = mkOption {
type = types.str;
};
host = mkOption {
type = types.str;
};
};
});
};
in {
options = {
settings.containers.caddy.enable = lib.mkOption {
@@ -13,6 +36,9 @@ in {
Enable caddy container
'';
};
settings.containers.caddy.routes.tbmrs = routesOption;
settings.containers.caddy.routes.tbmrs-local = routesOption;
};
config = mkIf cfg.enable {
@@ -33,6 +59,49 @@ in {
];
};
settings.containers.caddy.routes.tbmrs = [
{
name = "kanidm";
host = "auth";
url = "https://auth.tbmrs.nl";
}
{
name = "forgejo";
host = "git";
url = "forgejo:3000";
}
{
name = "immich";
host = "photos";
url = "immich-server:2283";
}
{
name = "homepage";
host = "home";
url = "homepage:3000";
}
{
name = "uptime-kuma";
host = "uptime";
url = "uptime-kuma:3001";
}
{
name = "pingvin-share";
host = "share";
url = "pingvin-share:3000";
}
{
name = "dufs";
host = "files";
url = "dufs:5000";
}
{
name = "stalwart";
host = "mail";
url = "stalwart:8000";
}
];
home.file."containers/caddy/Caddyfile".text = ''
*.tbmrs.nl, tbmrs.nl {
tls {
@@ -40,50 +109,7 @@ in {
resolvers 1.1.1.1
}
@root host tbmrs.nl
handle @root {
respond "Hello there"
}
@kanidm host auth.tbmrs.nl
handle @kanidm {
reverse_proxy https://auth.tbmrs.nl
}
@forgejo host git.tbmrs.nl
handle @forgejo {
reverse_proxy forgejo:3000
}
@immich host photos.tbmrs.nl
handle @immich {
reverse_proxy immich-server:2283
}
@homepage host home.tbmrs.nl
handle @homepage {
reverse_proxy homepage:3000
}
@uptime-kuma host uptime.tbmrs.nl
handle @uptime-kuma {
reverse_proxy uptime-kuma:3001
}
@pingvin-share host share.tbmrs.nl
handle @pingvin-share {
reverse_proxy pingvin-share:3000
}
@dufs host files.tbmrs.nl
handle @dufs {
reverse_proxy dufs:5000
}
@stalwart host mail.tbmrs.nl
handle @stalwart {
reverse_proxy stalwart:8080
}
${generateRoutes cfg.routes.tbmrs}
}
*.local.tbmrs.nl {

View File

@@ -3,7 +3,7 @@
with lib;
let
cfg = config.settings.containers.nginx;
cfg = config.settings.containers.network;
in {
options = {
settings.containers.network.enable = lib.mkOption {
@@ -18,6 +18,7 @@ in {
config = mkIf cfg.enable {
services.podman.networks.proxy = {
description = "Container network for the proxy";
driver = "bridge";
autoStart = true;
};
};

View File

@@ -19,7 +19,7 @@ in {
settings.services.sops.enable = true;
services.podman.containers.wrbapp = {
image = "gitea.xeovalyte.dev/xeovalyte/wrbapp:latest";
image = "gitea.xeovalyte.dev/xeovalyte/wrbapp:latest-arm";
network = "proxy";
environmentFile = [
"${config.sops.templates."container-wrbapp.env".path}"
@@ -27,17 +27,17 @@ in {
};
services.podman.containers.hunshin = {
image = "gitea.xeovalyte.dev/xeovalyte/hunshin:latest";
image = "gitea.xeovalyte.dev/xeovalyte/hunshin:latest-arm";
network = "proxy";
};
services.podman.containers.bijlobke = {
image = "gitea.xeovalyte.dev/xeovalyte/bijlobke:latest";
image = "gitea.xeovalyte.dev/xeovalyte/bijlobke:latest-arm";
network = "proxy";
};
services.podman.containers.ardsite = {
image = "gitea.xeovalyte.dev/ardsite/ardsite:latest";
image = "gitea.xeovalyte.dev/ardsite/ardsite:latest-arm";
network = "proxy";
};