Compare commits
No commits in common. "df14a9a5134faedb415bff6b9fa1c33cb86bdc4d" and "e347273e5bdb209733aee1e87b4352787e39da9b" have entirely different histories.
df14a9a513
...
e347273e5b
4 changed files with 8 additions and 47 deletions
|
@ -32,10 +32,7 @@ in
|
||||||
owner = "acme";
|
owner = "acme";
|
||||||
};
|
};
|
||||||
|
|
||||||
security.acme.acceptTerms = true;
|
|
||||||
security.acme.maxConcurrentRenewals = 0;
|
|
||||||
security.acme.defaults = {
|
security.acme.defaults = {
|
||||||
email = depot.lib.meta.adminEmail;
|
|
||||||
extraLegoFlags = lib.flatten [
|
extraLegoFlags = lib.flatten [
|
||||||
(map (x: [ "--dns.resolvers" x ]) authoritativeServers)
|
(map (x: [ "--dns.resolvers" x ]) authoritativeServers)
|
||||||
"--dns-timeout" "30"
|
"--dns-timeout" "30"
|
||||||
|
@ -45,38 +42,4 @@ in
|
||||||
EXEC_ENV_FILE=${config.age.secrets.acmeDnsApiKey.path}
|
EXEC_ENV_FILE=${config.age.secrets.acmeDnsApiKey.path}
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
systemd.services = lib.mapAttrs' (name: value: {
|
|
||||||
name = "acme-${name}";
|
|
||||||
value = {
|
|
||||||
distributed.enable = value.dnsProvider != null;
|
|
||||||
preStart = let
|
|
||||||
serverList = lib.pipe authoritativeServers [
|
|
||||||
(map (x: "@${x}"))
|
|
||||||
(map (lib.replaceStrings [":53"] [""]))
|
|
||||||
lib.escapeShellArgs
|
|
||||||
];
|
|
||||||
domainList = lib.pipe ([ value.domain ] ++ value.extraDomainNames) [
|
|
||||||
(map (x: "${x}."))
|
|
||||||
(map (lib.replaceStrings ["*"] ["x"]))
|
|
||||||
lib.unique
|
|
||||||
lib.escapeShellArgs
|
|
||||||
];
|
|
||||||
in ''
|
|
||||||
echo Testing availability of authoritative DNS servers
|
|
||||||
for i in {1..60}; do
|
|
||||||
${pkgs.dig}/bin/dig +short ${serverList} ${domainList} >/dev/null && break
|
|
||||||
echo Retry [$i/60]
|
|
||||||
sleep 10
|
|
||||||
done
|
|
||||||
echo Available
|
|
||||||
'';
|
|
||||||
serviceConfig = {
|
|
||||||
Restart = "on-failure";
|
|
||||||
RestartMaxDelaySec = 30;
|
|
||||||
RestartStesp = 5;
|
|
||||||
RestartMode = "direct";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}) config.security.acme.certs;
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,10 @@
|
||||||
{ config, ... }:
|
{ config, depot, ... }:
|
||||||
|
|
||||||
{
|
let
|
||||||
|
inherit (depot.lib.meta) adminEmail;
|
||||||
|
in {
|
||||||
|
security.acme.defaults.email = adminEmail;
|
||||||
|
security.acme.acceptTerms = true;
|
||||||
services.nginx = {
|
services.nginx = {
|
||||||
enable = true;
|
enable = true;
|
||||||
recommendedProxySettings = true;
|
recommendedProxySettings = true;
|
||||||
|
|
|
@ -69,16 +69,11 @@ in
|
||||||
{
|
{
|
||||||
source = let
|
source = let
|
||||||
upstreams = lib.mapAttrsToList (_: cfg: ''
|
upstreams = lib.mapAttrsToList (_: cfg: ''
|
||||||
{{ if ne (len (service "${cfg.consulService}~_agent")) 0 }}
|
|
||||||
# ${cfg.consulService}
|
|
||||||
upstream ${cfg.nginxUpstreamName} {
|
upstream ${cfg.nginxUpstreamName} {
|
||||||
{{ range $i, $e := service "${cfg.consulService}~_agent" -}}
|
{{ range $i, $e := service "${cfg.consulService}~_agent" -}}
|
||||||
server {{ .Address }}:{{ .Port }}{{ if ne $i 0 }} backup{{ end }};
|
server {{ .Address }}:{{ .Port }}{{ if ne $i 0 }} backup{{ end }};
|
||||||
{{ end }}
|
{{end}}
|
||||||
}
|
}
|
||||||
{{ else }}
|
|
||||||
# upstream ${cfg.nginxUpstreamName} (${cfg.consulService}): no servers available
|
|
||||||
{{ end }}
|
|
||||||
'') consulServiceWays;
|
'') consulServiceWays;
|
||||||
in pkgs.writeText "ways-upstreams.ctmpl" (lib.concatStringsSep "\n" (lib.unique upstreams));
|
in pkgs.writeText "ways-upstreams.ctmpl" (lib.concatStringsSep "\n" (lib.unique upstreams));
|
||||||
destination = "/run/consul-template/nginx-ways-upstreams.conf";
|
destination = "/run/consul-template/nginx-ways-upstreams.conf";
|
||||||
|
|
|
@ -36,8 +36,7 @@
|
||||||
|
|
||||||
proxyGhost = scheme: target: basic // {
|
proxyGhost = scheme: target: basic // {
|
||||||
locations."/".extraConfig = ''
|
locations."/".extraConfig = ''
|
||||||
set $nix_proxy_ghost_target "${scheme}://${target}";
|
proxy_pass ${scheme}://${target};
|
||||||
proxy_pass $nix_proxy_ghost_target;
|
|
||||||
proxy_set_header Host ${target};
|
proxy_set_header Host ${target};
|
||||||
proxy_set_header Referer ${scheme}://${target};
|
proxy_set_header Referer ${scheme}://${target};
|
||||||
proxy_cookie_domain ${target} domain.invalid;
|
proxy_cookie_domain ${target} domain.invalid;
|
||||||
|
|
Loading…
Add table
Reference in a new issue