Created module for caddy with plugins

This commit is contained in:
pazpi 2024-09-10 19:48:40 +02:00
parent ecbf722032
commit f4935560a4
3 changed files with 100 additions and 34 deletions

View file

@ -0,0 +1,58 @@
{
config,
pkgs,
lib,
...
}:
with lib;
let
cfg = config.my.networking.caddy;
in
{
options.my.networking.caddy = {
enable = lib.mkEnableOption "Enable caddy as reverse proxy";
};
config = lib.mkIf cfg.enable {
age.secrets = {
cloudflare-tegola-apiKey = {
file = ../../secrets/cloudflare-tegola-apiKey.age;
owner = config.services.caddy.user;
group = config.services.caddy.group;
};
};
services.caddy = {
enable = true;
package = pkgs.caddy-custom;
# acmeCA = "https://acme-staging-v02.api.letsencrypt.org/directory"; # ONLY FOR DEVELOPMENT!
extraConfig = ''
(cloudflare) {
tls {
dns cloudflare {env.CLOUDFLARE_KEY}
resolvers 1.1.1.1 100.100.100.100
}
}
'';
};
systemd.services.caddy.serviceConfig = {
EnvironmentFile = config.age.secrets.cloudflare-tegola-apiKey.path;
AmbientCapabilities = "CAP_NET_BIND_SERVICE";
};
networking.firewall.allowedTCPPorts = [
80
443
];
networking.firewall.allowedUDPPorts = [
80
443
];
};
}

View file

@ -1,6 +1,7 @@
{ {
imports = [ imports = [
./avahi.nix ./avahi.nix
./caddy.nix
./tailscale.nix ./tailscale.nix
]; ];
} }

View file

@ -3,7 +3,11 @@
with pkgs; with pkgs;
caddy.override { caddy.override {
buildGoModule = args: buildGoModule (args // { buildGoModule =
args:
buildGoModule (
args
// {
src = stdenv.mkDerivation rec { src = stdenv.mkDerivation rec {
pname = "caddy-using-xcaddy-${xcaddy.version}"; pname = "caddy-using-xcaddy-${xcaddy.version}";
inherit (caddy) version; inherit (caddy) version;
@ -16,10 +20,7 @@ caddy.override {
go go
]; ];
plugins = [ plugins = [ "github.com/caddy-dns/cloudflare@89f16b99c18ef49c8bb470a82f895bce01cbaece" ];
# https://github.com/caddy-dns/cloudflare
"github.com/caddy-dns/cloudflare@89f16b99c18ef49c8bb470a82f895bce01cbaece"
];
configurePhase = '' configurePhase = ''
export GOCACHE=$TMPDIR/go-cache export GOCACHE=$TMPDIR/go-cache
@ -28,7 +29,9 @@ caddy.override {
''; '';
buildPhase = '' buildPhase = ''
${xcaddy}/bin/xcaddy build "${caddy.src.rev}" ${lib.concatMapStringsSep " " (plugin: "--with ${plugin}") plugins} ${xcaddy}/bin/xcaddy build "${caddy.src.rev}" ${
lib.concatMapStringsSep " " (plugin: "--with ${plugin}") plugins
}
cd buildenv* cd buildenv*
go mod vendor go mod vendor
''; '';
@ -42,7 +45,11 @@ caddy.override {
}; };
subPackages = [ "." ]; subPackages = [ "." ];
ldflags = [ "-s" "-w" ]; ## don't include version info twice ldflags = [
"-s"
"-w"
]; # # don't include version info twice
vendorHash = null; vendorHash = null;
}); }
);
} }