Files
nix-config/hosts/nas/apps/crowdsec/default.nix
2025-02-20 09:27:37 -06:00

44 lines
1.2 KiB
Nix

{ outputs, pkgs, ... }:
{
services = {
crowdsec = let
yaml = (pkgs.formats.yaml {}).generate;
acquisitions_file = yaml "acquisitions.yaml" {
source = "journalctl";
journalctl_filter = ["_SYSTEMD_UNIT=sshd.service"];
labels.type = "syslog";
};
in {
enable = true;
enrollKeyFile = "/media/nas/ssd/nix-app-data/crowdsec/enroll.key";
settings = {
crowdsec_service.acquisition_path = acquisitions_file;
api.server = {
listen_uri = "0.0.0.0:9898";
};
};
};
crowdsec-firewall-bouncer = {
enable = true;
settings = {
api_key = "1daH89qmJ41r2Lpd9hvDw4sxtOAtBzaj3aKFOFqE";
api_url = "http://10.0.1.18:9898";
};
};
};
systemd.services.crowdsec.serviceConfig = {
ExecStartPre = let
script = pkgs.writeScriptBin "register-bouncer" ''
#!${pkgs.runtimeShell}
set -eu
set -o pipefail
if ! cscli bouncers list | grep -q "nas-bouncer"; then
cscli bouncers add "nas-bouncer" --key "1daH89qmJ41r2Lpd9hvDw4sxtOAtBzaj3aKFOFqE"
fi
'';
in ["${script}/bin/register-bouncer"];
};
}