{ config, containerCfg, pkgs, lib, builder, name, ... }: let serverCfg = config.syscfg.server; version = "latest"; in { requires = { secrets = [ name ]; databases = [ name ]; }; runtime = { paths = [{ path = "${serverCfg.path.config}/influxdb/"; owner = "1500:1500"; mode = "0700"; }{ path = "${serverCfg.path.data}/influxdb/"; owner = "1500:1500"; mode = "0700"; }]; containers = { db = builder.mkContainer { subdomain = containerCfg.subdomain; image = "influxdb:3-core"; port = 8181; secret = name; extraEnv = { INFLUXD_DB_PATH = "/db"; INFLUXD_CONFIG_PATH = "/config"; }; overrides = { cmd = [ "influxdb3" "serve" "--node-id=node0" "--data-dir=/var/lib/influxdb3/data" "--admin-token-file=/var/lib/influxdb3/token.json" ]; ports = [ "8181:8181" ]; volumes = [ "${serverCfg.path.data}/influxdb:/var/lib/influxdb3/data:rw" "${serverCfg.path.config}/influxdb/admin-token.json:/var/lib/influxdb3/token.json:ro" ]; }; }; server = builder.mkContainer { tmpfs = true; subdomain = containerCfg.subdomain; image = "influxdata/influxdb3-ui:${version}"; port = 8080; secret = name; extraEnv = { DATABASE_URL = "/db/sqlite.db"; DEFAULT_INFLUX_SERVER = "http://influx-db:8181"; }; overrides = { cmd = [ "--mode=admin" ]; volumes = [ "${serverCfg.path.data}/influxdb:/db:rw" "${serverCfg.path.config}/influxdb/:/app-root/config:ro" ]; }; }; }; setup = { trigger = "server"; script = pkgs.writeShellScript "setup" '' cat > ${serverCfg.path.config}/influxdb/config.json << 'EOF' { "DEFAULT_INFLUX_SERVER": "http://${builder.host}:8181", "DEFAULT_INFLUX_DATABASE": "main", "DEFAULT_API_TOKEN": "$INFLUXDB_TOKEN", "DEFAULT_SERVER_NAME": "${serverCfg.domain}" } EOF cat > ${serverCfg.path.config}/influxdb/admin-token.json <