diff --git a/modules/zabbix-server.nix b/modules/zabbix-server.nix index bc0bdb7..321ba6a 100644 --- a/modules/zabbix-server.nix +++ b/modules/zabbix-server.nix @@ -1,37 +1,39 @@ -{ pkgs, lib, ... }: +{ pkgs, lib, config, ... }: let cfg = import ./vars.nix; db = cfg.zabbix.db; db_host = cfg.podman.hostIP; + dbport = cfg.zabbix.dbport; 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"; + + imports = [ + ./podman-postgresql.nix # for the database + #./podman.nix + ./nginx.nix # for the webserver + ]; + + sops.secrets."zabbix/db" = {}; + + services.podman-postgresql."zabbix" = { + enable = true; + image = "docker.io/timescale/timescaledb:2.15.3-pg14"; + port = (lib.strings.toInt dbport); + passwordFile = config.sops.secrets."zabbix/db".path; + backupInterval = "daily"; + backupRetention = 2; }; virtualisation.oci-containers.containers.zabbix-server = { - image = "docker.io/zabbix/zabbix-server-pgsql:alpine-6.4-latest"; + image = "docker.io/zabbix/zabbix-server-pgsql:alpine-7.0-latest"; environment = { - DB_SERVER_HOST = db_host; + #DB_SERVER_HOST = db_host; + DB_SERVER_HOST = "10.88.0.1"; + DB_SERVER_PORT = dbport; POSTGRES_USER = db; TZ = "Europe/Berlin"; }; @@ -40,9 +42,11 @@ in }; virtualisation.oci-containers.containers.zabbix-web = { - image = "docker.io/zabbix/zabbix-web-nginx-pgsql:alpine-6.4-latest"; + image = "docker.io/zabbix/zabbix-web-nginx-pgsql:alpine-7.0-latest"; environment = { - DB_SERVER_HOST = db_host; + #DB_SERVER_HOST = db_host; + DB_SERVER_HOST = "10.88.0.1"; + DB_SERVER_PORT = dbport; POSTGRES_USER = db; ZBX_SERVER_HOST = server_ip; ZBX_SERVER_NAME = "Superbly Managed Networks and Hosting";