system/roles/searchix-stable-container.nix (view raw)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 | {
config,
inputs,
pkgs,
...
}:
let
stableVersion = "26.05";
in
{
imports = [
../../packages/modules/nixos/goaccess.nix
];
containers.searchix-stable = {
autoStart = true;
specialArgs = { inherit inputs; };
config = {
imports = [
../settings/services/searchix-stable.nix
];
system.stateVersion = stableVersion;
services.searchix = {
environment = {
GOMEMLIMIT = "1000MiB";
};
settings = {
web = {
baseURL = "https://stable.searchix.ovh";
port = 51314;
};
};
};
};
};
systemd.services."container@searchix-stable".stopIfChanged = false;
services.caddy.virtualHosts = {
"stable.searchix.ovh" = {
extraConfig = ''
root ${pkgs.searchix}/lib/searchix
handle_errors {
rewrite * /error.html
templates
file_server
}
import goaccess "searchix-stable"
handle {
reverse_proxy localhost:51314 {
health_uri /health
health_status 2xx
}
}
encode zstd gzip {
match {
header Content-Type text/*
header Content-Type application/json*
header Content-Type application/javascript*
header Content-Type application/opensearchdescription+xml
header Content-Type application/atom+xml*
header Content-Type application/rss+xml*
header Content-Type image/svg+xml*
}
}
'';
};
};
services.goaccess.instances = {
stable-searchix = {
enable = true;
dates = "daily";
settings = {
unix-socket = "/var/run/goaccess/stable-searchix/sock";
log-file = "${config.services.caddy.logDir}/access-stable.searchix.ovh.log";
output = "/srv/http/access/searchix-stable/index.html";
log-format = "caddy";
anonymize-ip = true;
anonymize-level = 2;
persist = true;
restore = true;
keep-last = 90; # days
};
};
};
}
|