main
 1{
 2  den,
 3  lib,
 4  ...
 5}: {
 6  den.aspects.services.webserver = {
 7    settings = {
 8      external = lib.mkOption {
 9        description = ''
10          Whether this host's webserver is publicly reachable. Every host serves
11          its own Tailscale-only reverse proxies. When true, caddy additionally
12          serves the fleet-wide public reverse proxies on every interface
13          (0.0.0.0/::), and its Tailscale-only vhosts are kept off the public
14          interface by rejecting non-Tailscale source IPs. When false, caddy
15          only serves the host's own Tailscale reverse proxies, bound to the
16          host's own Tailscale IP.
17        '';
18        type = lib.types.bool;
19        default = false;
20      };
21    };
22
23    includes = [
24      den.aspects.services.webserver.reverse-proxy-processer
25      den.aspects.services.webserver.reverse-proxy-tailscale-processer
26
27      den.aspects.services.webserver.caddy
28    ];
29  };
30}