feat(traefik): setup traefik with agenix for secrets.
This commit is contained in:
parent
8202be48ab
commit
3a0f504534
7 changed files with 208 additions and 27 deletions
|
@ -2,5 +2,7 @@
|
|||
imports = [
|
||||
./openssh.nix
|
||||
./user.nix
|
||||
./traefik.nix
|
||||
./secrets.nix
|
||||
];
|
||||
}
|
||||
|
|
10
modules/servers/general/secrets.nix
Normal file
10
modules/servers/general/secrets.nix
Normal file
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
age = {
|
||||
secrets = {
|
||||
traefik = {
|
||||
file = ../../../secrets/traefik.age;
|
||||
owner = "traefik";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
44
modules/servers/general/traefik.nix
Normal file
44
modules/servers/general/traefik.nix
Normal file
|
@ -0,0 +1,44 @@
|
|||
{config, ...}: {
|
||||
services.traefik = {
|
||||
enable = true;
|
||||
staticConfigOptions = {
|
||||
log = {level = "WARN";};
|
||||
certifiedResolvers = {
|
||||
porkbun = {
|
||||
acme = {
|
||||
email = "crony@cronyakatsuki.xyz";
|
||||
storage = "/var/lib/traefik/acme.json";
|
||||
caserver = "https://acme-v02.api.letsencrypt.org/directory";
|
||||
dnsChallenge = {
|
||||
provider = "porkbun";
|
||||
resolvers = ["1.1.1.1" "8.8.8.8"];
|
||||
propagation = {
|
||||
delayBeforeChecks = 60;
|
||||
disableChecks = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
api = {};
|
||||
entryPoints = {
|
||||
web = {
|
||||
address = ":80";
|
||||
http.redirections.entryPoint = {
|
||||
to = "websecure";
|
||||
scheme = "https";
|
||||
};
|
||||
};
|
||||
websecure = {
|
||||
address = ":443";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
systemd.services.traefik.serviceConfig = {
|
||||
EnvironmentFile = ["${config.age.secrets.traefik.path}"];
|
||||
};
|
||||
|
||||
networking.firewall.allowedTCPPorts = [80 443];
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue