diff --git a/morph/grid/local/config.json b/morph/grid/local/config.json index 8b23b6f1152be4fa94e8935342bf11f7706d036c..8bd686a023b704688c8708b2408d0c3df8287f13 100644 --- a/morph/grid/local/config.json +++ b/morph/grid/local/config.json @@ -5,6 +5,7 @@ , "monitoringvpnEndpoint": "192.168.67.24:51820" , "passValue": 1000000 , "issuerDomains": ["payments.localdev"] +, "monitoringDomains": ["monitoring.localdev"] , "letsEncryptAdminEmail": "florian@privatestorage.io" , "allowedChargeOrigins": [ "http://localhost:5000" diff --git a/morph/grid/local/grid.nix b/morph/grid/local/grid.nix index 5502b8faa622b8af1e967978b714d4693961c603..4a1524c6b6b7f5e085766aec6a79af5b569e72ba 100644 --- a/morph/grid/local/grid.nix +++ b/morph/grid/local/grid.nix @@ -116,7 +116,7 @@ let nodeExporterTargets paymentExporterTargets blackboxExporterHttpsTargets; - inherit (grid-config) letsEncryptAdminEmail; + inherit (grid-config) letsEncryptAdminEmail monitoringDomains; googleOAuthClientID = grid-config.monitoringGoogleOAuthClientID; enableSlackAlert = false; monitoringvpnIPv4 = "172.23.23.1"; diff --git a/morph/grid/production/config.json b/morph/grid/production/config.json index fcae1563a8fc0d3a8a11324fc6667105ae3179c8..1696b5fb3c45df94b8bf69aae9ca323e6bac2266 100644 --- a/morph/grid/production/config.json +++ b/morph/grid/production/config.json @@ -8,6 +8,10 @@ "payments.privatestorage.io" , "payments.private.storage" ] +, "monitoringDomains": [ + "monitoring.privatestorage.io" + , "monitoring.private.storage" + ] , "letsEncryptAdminEmail": "jean-paul@privatestorage.io" , "allowedChargeOrigins": [ "https://privatestorage.io" diff --git a/morph/grid/production/grid.nix b/morph/grid/production/grid.nix index b42f4a3e40f56bf3d1b9808b3e87d3f769c8e2a7..4f410abb2e53a1991f09f4fa30e377e252c5ca0d 100644 --- a/morph/grid/production/grid.nix +++ b/morph/grid/production/grid.nix @@ -49,7 +49,7 @@ let nodeExporterTargets paymentExporterTargets blackboxExporterHttpsTargets; - inherit (grid-config) letsEncryptAdminEmail; + inherit (grid-config) letsEncryptAdminEmail monitoringDomains; googleOAuthClientID = grid-config.monitoringGoogleOAuthClientID; enableSlackAlert = true; monitoringvpnIPv4 = "172.23.23.1"; diff --git a/morph/grid/testing/config.json b/morph/grid/testing/config.json index a10840db52e8cd74bbac2a0ad38f4887c1a03258..7c3775df55ce76cf6048712e644a3f2669b6f07c 100644 --- a/morph/grid/testing/config.json +++ b/morph/grid/testing/config.json @@ -8,6 +8,10 @@ "payments.privatestorage-staging.com" , "payments.extra.privatestorage-staging.com" ] +, "monitoringDomains": [ + "monitoring.privatestorage-staging.com" + , "monitoring.extra.privatestorage-staging.com" + ] , "letsEncryptAdminEmail": "jean-paul@privatestorage.io" , "allowedChargeOrigins": [ "http://localhost:5000" diff --git a/morph/grid/testing/grid.nix b/morph/grid/testing/grid.nix index ea4cd56a0b7b17c168114579a287f57e03e96914..334518774851c22738c93b323223f255d871a394 100644 --- a/morph/grid/testing/grid.nix +++ b/morph/grid/testing/grid.nix @@ -62,7 +62,7 @@ let nodeExporterTargets paymentExporterTargets blackboxExporterHttpsTargets; - inherit (grid-config) letsEncryptAdminEmail; + inherit (grid-config) letsEncryptAdminEmail monitoringDomains; googleOAuthClientID = grid-config.monitoringGoogleOAuthClientID; enableSlackAlert = true; monitoringvpnIPv4 = "172.23.23.1"; diff --git a/morph/lib/customize-monitoring.nix b/morph/lib/customize-monitoring.nix index ef89119f7f54d1b644c86f7a72129ebd6a79cae6..2899d9940d4309b81a31f96590f0d3df1d632dc4 100644 --- a/morph/lib/customize-monitoring.nix +++ b/morph/lib/customize-monitoring.nix @@ -11,6 +11,7 @@ # See ``customize-issuer.nix``. , monitoringvpnIPv4 , letsEncryptAdminEmail +, monitoringDomains # A list of VPN IP addresses as strings indicating which clients will be # allowed onto the VPN. @@ -119,7 +120,7 @@ in { inherit letsEncryptAdminEmail; inherit googleOAuthClientID; inherit enableSlackAlert; - domain = "${config.networking.hostName}.${config.networking.domain}"; + domains = monitoringDomains; }; system.stateVersion = stateVersion; diff --git a/nixos/modules/issuer.nix b/nixos/modules/issuer.nix index da3eed73e59349b4faaf64ebb32c067e952917ae..98192fabd29ab6c2051c770a3398377e9df3e117 100644 --- a/nixos/modules/issuer.nix +++ b/nixos/modules/issuer.nix @@ -111,7 +111,6 @@ in { # We'll refer to this collection of domains by the first domain in the # list. domain = builtins.head cfg.domains; - certServiceName = "acme-${domain}"; # Payment server internal http port (arbitrary, non-priviledged): internalHttpPort = "1061"; diff --git a/nixos/modules/monitoring/server/grafana.nix b/nixos/modules/monitoring/server/grafana.nix index 1b51abd4b795a7d6dd8c4c4319beecae4162bb53..bbded5e99ebb578f0f2b7a930185951a35fe91b8 100644 --- a/nixos/modules/monitoring/server/grafana.nix +++ b/nixos/modules/monitoring/server/grafana.nix @@ -20,10 +20,10 @@ let in { options.services.private-storage.monitoring.grafana = { - domain = lib.mkOption - { type = lib.types.str; - example = lib.literalExample "grafana.grid.private.storage"; - description = "The FQDN of the Grafana host"; + domains = lib.mkOption + { type = lib.types.listOf lib.types.str; + example = [ "grafana.grid.private.storage" ]; + description = "The domain names at which the server is reachable."; }; prometheusUrl = lib.mkOption { type = lib.types.str; @@ -79,13 +79,18 @@ in { }; }; - config = { + config = + let + # We'll refer to this collection of domains by the first domain in the list. + domain = builtins.head cfg.domains; + + in { # Port 80 for ACME ssl retrieval only. 443 for nginx -> grafana. networking.firewall.allowedTCPPorts = [ 80 443 ]; services.grafana = { enable = true; - domain = cfg.domain; + domain = domain; port = 2342; addr = "127.0.0.1"; @@ -144,7 +149,7 @@ in { is_default = true; send_reminder = false; settings = { - username = "${cfg.domain}"; + username = "${domain}"; uploadImage = true; }; secure_settings = { @@ -170,7 +175,8 @@ in { # Only allow PFS-enabled ciphers with AES256: sslCiphers = "AES256+EECDH:AES256+EDH:!aNULL"; - virtualHosts.${config.services.grafana.domain} = { + virtualHosts."${domain}" = { + serverAliases = builtins.tail cfg.domains; enableACME = true; forceSSL = true; locations."/" = {