nixos-config/modules/zabbix-server.nix
2023-04-29 01:16:57 +02:00

72 lines
1.9 KiB
Nix

{ pkgs, lib, ... }:
let
cfg = import ./vars.nix;
db = cfg.zabbix.db;
db_host = cfg.podman.hostIP;
port = cfg.zabbix.port;
domain = cfg.zabbix.domain;
server_ip = "10.88.1.0";
web_ip = "10.88.1.1";
in
{
services.postgresql = {
ensureDatabases = [ db ];
ensureUsers = [
{
name = db;
ensurePermissions = {
"DATABASE ${db}" = "ALL PRIVILEGES";
};
}
];
extraPlugins = [
(pkgs.callPackage ../packages/timescaledb/timescaledb.nix {})
];
settings = {
shared_preload_libraries = "timescaledb";
};
authentication = "host ${db} ${db} 10.88.0.0/16 md5";
};
virtualisation.oci-containers.containers.zabbix-server = {
image = "docker.io/zabbix/zabbix-server-pgsql:alpine-6.4-latest";
environment = {
DB_SERVER_HOST = db_host;
POSTGRES_USER = db;
TZ = "Europe/Berlin";
};
environmentFiles = [ /etc/nixos/keys/zabbix-env ];
extraOptions = cfg.podman.extraOptions ++ [ "--ip=${server_ip}" ];
};
virtualisation.oci-containers.containers.zabbix-web = {
image = "docker.io/zabbix/zabbix-web-nginx-pgsql:alpine-6.4-latest";
environment = {
DB_SERVER_HOST = db_host;
POSTGRES_USER = db;
ZBX_SERVER_HOST = server_ip;
ZBX_SERVER_NAME = "Superbly Managed Networks and Hosting";
TZ = "Europe/Berlin";
PHP_TZ = "Europe/Berlin";
};
environmentFiles = [ /etc/nixos/keys/zabbix-env ];
extraOptions = cfg.podman.extraOptions ++ [ "--ip=${web_ip}" ];
ports = [ "${port}:8080" ];
};
services.nginx.virtualHosts.${domain} = {
forceSSL = true;
enableACME = true;
locations."/" = {
proxyPass = "http://localhost:${port}";
};
extraConfig = ''
access_log /var/log/nginx/${domain}_access.log;
error_log /var/log/nginx/${domain}_error.log;
'';
};
networking.firewall.interfaces.podman0.allowedTCPPorts = [ 5432 10050 ];
}
# vim: set et ts=2 sw=2 ai: