server.nix/caddy.nix

100 lines
2.5 KiB
Nix
Raw Permalink Normal View History

2024-05-02 14:09:52 +03:00
{ config
, pkgs
, inputs
, ...
2025-04-19 04:23:06 +03:00
}: {
systemd.services.caddy = {
serviceConfig = {
# Required to use ports < 1024
AmbientCapabilities = "cap_net_bind_service";
CapabilityBoundingSet = "cap_net_bind_service";
EnvironmentFile = "/etc/secrets/caddy.env";
TimeoutStartSec = "5m";
};
};
2024-02-23 01:56:51 +02:00
services.caddy = {
enable = true;
2024-03-22 13:52:30 +02:00
email = "ssl@catnip.ee";
package = pkgs.caddy.withPlugins {
# https://github.com/NixOS/nixpkgs/pull/358586#issuecomment-2564016652
plugins = [ "github.com/caddy-dns/cloudflare@v0.2.1" ];
hash = "sha256-saKJatiBZ4775IV2C5JLOmZ4BwHKFtRZan94aS5pO90=";
};
2024-02-23 01:56:51 +02:00
virtualHosts = {
2025-01-15 02:46:55 +02:00
"kaya.ee".extraConfig = ''
tls {
dns cloudflare {env.CLOUDFLARE_API_TOKEN}
resolvers 1.1.1.1
}
2024-11-27 19:12:36 +02:00
2025-04-27 14:01:32 +03:00
root * ${inputs.kaya-website}
file_server browse {
hide .git
}
2025-01-15 02:46:55 +02:00
'';
2024-10-25 20:12:49 +03:00
"http://syncthing.internal".extraConfig = ''
@local remote_ip private_ranges 100.64.0.0/10
reverse_proxy @local http://${config.services.syncthing.guiAddress}
'';
"http://files.internal".extraConfig = ''
2024-02-23 01:56:51 +02:00
@local remote_ip private_ranges 100.64.0.0/10
root * /mnt/media
file_server @local browse {
hide .Trash-1000
}
'';
2025-01-15 02:46:55 +02:00
"files.catnip.ee".extraConfig = ''
tls {
dns cloudflare {env.CLOUDFLARE_API_TOKEN}
resolvers 1.1.1.1
}
2025-01-15 02:46:55 +02:00
basic_auth {
mrow {env.FILES_PASSWORD_HASH}
}
2024-03-05 21:21:27 +02:00
2025-01-15 02:46:55 +02:00
root * /mnt/media
file_server browse {
hide .Trash-1000
}
'';
"catnip.ee".extraConfig = ''
tls {
dns cloudflare {env.CLOUDFLARE_API_TOKEN}
resolvers 1.1.1.1
}
2025-01-15 02:46:55 +02:00
root * ${inputs.catnip-website}
file_server browse {
hide .git
}
2024-03-27 15:26:19 +02:00
2025-01-15 02:46:55 +02:00
handle /.well-known/matrix/client {
header Content-Type application/json
header Access-Control-Allow-Origin *
respond `{"m.homeserver":{"base_url":"https://matrix.catnip.ee/"}}`
2025-01-15 02:46:55 +02:00
}
handle /.well-known/matrix/server {
header Content-Type application/json
header Access-Control-Allow-Origin *
respond `{"m.server": "matrix.catnip.ee:443"}`
}
'';
"www.catnip.ee".extraConfig = ''
tls {
dns cloudflare {env.CLOUDFLARE_API_TOKEN}
resolvers 1.1.1.1
}
2025-01-15 02:46:55 +02:00
redir https://catnip.ee{uri} permanent
'';
2024-02-23 01:56:51 +02:00
":80".extraConfig = ''
respond awawaw
'';
};
};
}