caddy: Ensure acme certs before start

This commit is contained in:
SebastianStork 2026-03-18 15:53:45 +01:00
parent fa06bbe9ce
commit b554146792
Signed by: SebastianStork
SSH key fingerprint: SHA256:tRrGdjYOwgHxpSc/wTOZQZEjxcb15P0tyXRsbAfd+2Q

View file

@ -13,6 +13,12 @@ let
publicHostsExist = virtualHosts |> lib.any (vHost: (!self.lib.isPrivateDomain vHost.domain)); publicHostsExist = virtualHosts |> lib.any (vHost: (!self.lib.isPrivateDomain vHost.domain));
privateHostsExist = virtualHosts |> lib.any (vHost: self.lib.isPrivateDomain vHost.domain); privateHostsExist = virtualHosts |> lib.any (vHost: self.lib.isPrivateDomain vHost.domain);
privateDomains =
virtualHosts
|> lib.filter (vHost: self.lib.isPrivateDomain vHost.domain)
|> lib.map (vHost: vHost.domain)
|> lib.unique;
mkVirtualHost = mkVirtualHost =
{ {
domain, domain,
@ -138,11 +144,7 @@ in
reloadServices = [ "caddy.service" ]; reloadServices = [ "caddy.service" ];
}; };
certs = certs = privateDomains |> lib.map (domain: lib.nameValuePair domain { }) |> lib.listToAttrs;
virtualHosts
|> lib.filter (host: self.lib.isPrivateDomain host.domain)
|> lib.map (host: lib.nameValuePair host.domain { })
|> lib.listToAttrs;
}; };
services.nebula.networks.mesh.firewall.inbound = [ services.nebula.networks.mesh.firewall.inbound = [
@ -160,7 +162,11 @@ in
systemd.services.caddy = { systemd.services.caddy = {
requires = [ netCfg.overlay.systemdUnit ]; requires = [ netCfg.overlay.systemdUnit ];
after = [ netCfg.overlay.systemdUnit ]; wants = privateDomains |> lib.map (domain: "acme-${domain}.service");
after = [
netCfg.overlay.systemdUnit
]
++ (privateDomains |> lib.map (domain: "acme-${domain}.service"));
}; };
custom.persistence.directories = [ "/var/lib/acme" ]; custom.persistence.directories = [ "/var/lib/acme" ];