Added caddyfile generation
This commit is contained in:
@@ -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 {
|
||||
|
@@ -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;
|
||||
};
|
||||
};
|
||||
|
@@ -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";
|
||||
};
|
||||
|
||||
|
Reference in New Issue
Block a user