diff --git a/clients/quadraticserver/matrix/continuwuity.nix b/clients/quadraticserver/matrix/continuwuity.nix index d315896..33a84b5 100644 --- a/clients/quadraticserver/matrix/continuwuity.nix +++ b/clients/quadraticserver/matrix/continuwuity.nix @@ -14,10 +14,6 @@ enable = true; domain = "federated.nexus"; settings = { - cache_capacity_modifier = 1.5; - db_cache_capacity_mb = 4096; - allow_sticky_events = true; - admins_list = [ "@nexusbot:federated.nexus" "@quadradical:federated.nexus" diff --git a/clients/quadraticserver/stats/grafana.nix b/clients/quadraticserver/stats/grafana.nix index de1ae81..b3a1c77 100644 --- a/clients/quadraticserver/stats/grafana.nix +++ b/clients/quadraticserver/stats/grafana.nix @@ -23,7 +23,10 @@ in { grafana = { enable = true; - declarativePlugins = [ ]; + declarativePlugins = with pkgs.grafanaPlugins; [ + prometheus + ]; + settings = { server = { inherit domain; @@ -183,6 +186,14 @@ in hash = "sha256-6bM0mqm1nF7xadc0ojNWIxJXCHio5db97NjENHIpwdI="; }; } + { + name = "Continuwuity Stats"; + options.path = pkgs.fetchurl { + name = "continuwuity-stats.json"; + url = "https://continuwuity.org/guides/grafana-dashboard.json"; + hash = "sha256-1s7vFEaZMiqH9h//BdrBwtWuYiqlxzUmYwdpMPYyuMo="; + }; + } { name = "Caddy Hosts"; options.path = pkgs.stdenv.mkDerivation { diff --git a/clients/quadraticserver/stats/prometheus.nix b/clients/quadraticserver/stats/prometheus.nix index f66f8ee..ab548a9 100644 --- a/clients/quadraticserver/stats/prometheus.nix +++ b/clients/quadraticserver/stats/prometheus.nix @@ -1,5 +1,9 @@ { config, ... }: { + systemd.services.prometheus.serviceConfig.SupplementaryGroups = [ + config.services.matrix-continuwuity.group + ]; + services.prometheus = { enable = true; listenAddress = "127.0.0.7"; @@ -32,6 +36,19 @@ { targets = [ "localhost:2019" ]; } ]; } + { + job_name = "continuwuity"; + metrics_path = "/_continuwuity/metrics"; + static_configs = [ + { targets = [ "localhost" ]; } + ]; + relabel_configs = [ + { + target_label = "__unix_socket__"; + replacement = config.services.matrix-continuwuity.settings.global.unix_socket_path; + } + ]; + } ]; exporters = { diff --git a/flake.lock b/flake.lock index 97f3730..9af3ec5 100644 --- a/flake.lock +++ b/flake.lock @@ -163,11 +163,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1791595419, - "narHash": "sha256-RS5WNLNGkVHvGu6yHj6iPyV8kctqkddJYh/QqltcZ94=", + "lastModified": 1791801165, + "narHash": "sha256-jyUFvwEP82yuuhfZ13ei9Syq62PC9fqlKFarHpQU2X8=", "ref": "refs/heads/main", - "rev": "3af5302dd8764d8521db2030a010a80e6ea60664", - "revCount": 7917, + "rev": "7da0ef6e2b3349b7c83b006a67b5854466dbf910", + "revCount": 7945, "type": "git", "url": "https://forgejo.ellis.link/continuwuation/continuwuity" }, diff --git a/modules/server/continuwuity.nix b/modules/server/continuwuity.nix index e7adb94..85cc31d 100644 --- a/modules/server/continuwuity.nix +++ b/modules/server/continuwuity.nix @@ -18,56 +18,75 @@ }; }; - config.services = - let - subdomain = "matrix.${config.quad.matrix.domain}"; - socket = "/var/run/continuwuity/continuwuity.sock"; - in - { - matrix-continuwuity = { - enable = config.quad.matrix.enable; - package = inputs.continuwuity.packages.${pkgs.stdenv.hostPlatform.system}.default; - group = "caddy"; - settings.global = lib.recursiveUpdate { - server_name = config.quad.matrix.domain; - unix_socket_path = socket; + config = { + systemd.services.caddy.serviceConfig.SupplementaryGroups = [ + config.services.matrix-continuwuity.group + ]; - new_user_displayname_suffix = ""; + services = + let + subdomain = "matrix.${config.quad.matrix.domain}"; + socket = "/var/run/continuwuity/continuwuity.sock"; + in + { + matrix-continuwuity = { + enable = config.quad.matrix.enable; + package = inputs.continuwuity.packages.${pkgs.stdenv.hostPlatform.system}.default; + settings.global = lib.recursiveUpdate { + server_name = config.quad.matrix.domain; + unix_socket_path = socket; - forbidden_remote_server_names = [ ]; - ignore_messages_from_server_names = [ ]; + new_user_displayname_suffix = ""; - trusted_servers = [ - "starstruck.systems" - "maunium.net" - "unredacted.org" - "matrix.org" - ]; + forbidden_remote_server_names = [ ]; + ignore_messages_from_server_names = [ ]; - startup_netburst = false; - admins_from_room = false; + trusted_servers = [ + "starstruck.systems" + "maunium.net" + "unredacted.org" + "matrix.org" + ]; - url_preview_domain_explicit_allowlist = [ "*" ]; - url_preview_max_spider_size = 2097152; + startup_netburst = false; + admins_from_room = false; - max_request_size = 256000000; + url_preview_domain_explicit_allowlist = [ "*" ]; + url_preview_max_spider_size = 2097152; - dns_cache_entries = 0; + cache_capacity_modifier = 1.5; + db_cache_capacity_mb = 4096; + allow_sticky_events = true; - allow_public_room_directory_over_federation = true; - lockdown_public_room_directory = true; + allow_prometheus_metrics = true; - allow_incoming_presence = false; - allow_outgoing_presence = false; - allow_local_presence = false; + max_request_size = 256000000; - well_known = { - client = "https://${subdomain}"; - server = "${subdomain}:443"; - }; - } config.quad.matrix.settings; + dns_cache_entries = 0; + + allow_public_room_directory_over_federation = true; + lockdown_public_room_directory = true; + + allow_incoming_presence = false; + allow_outgoing_presence = false; + allow_local_presence = false; + + well_known = { + client = "https://${subdomain}"; + server = "${subdomain}:443"; + }; + } config.quad.matrix.settings; + }; + + caddy.virtualHosts."${subdomain}".extraConfig = '' + handle /_continuwuity/metrics { + respond 404 + } + + handle { + reverse_proxy unix/${socket} + } + ''; }; - - caddy.virtualHosts."${subdomain}".extraConfig = "reverse_proxy unix/${socket}"; - }; + }; }