summaryrefslogtreecommitdiff
path: root/flora/services/ntfy.nix
blob: 25ae8f8602c4a0bdd3bd464d8c3b71a8a01f6807 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
{ config, ... }:

{
  services.ntfy-sh = {
    enable = true;
    settings = {
      base-url = "https://ping.stuebinm.eu";
      behind-proxy = true;
      listen-http = "";
      listen-unix = "/run/ntfy-sh/ntfy.sock";
      listen-unix-mode = 511; ## lossy nix->yaml conversion eats octal literals (equal to 0777)

      smtp-server-listen = ":25";
      smtp-server-domain = "mail.stuebinm.eu";

      auth-file = "/var/lib/ntfy-sh/user.db";
      auth-default-access = "deny-all";

      enable-signup = false;
      visitor-email-limit-burst = 0;
    };
  };

  networking.firewall.allowedTCPPorts = [ 25 ];

  services.mollysocket = {
    enable = true;
    settings = {
      allowed_endpoints = [ "https://ping.stuebinm.eu" ];
      port = 8020;
      host = "::";
    };
    environmentFile = "/run/secrets/mollysocket/config.toml";
  };

  sops.secrets."mollysocket/config.toml" = {};

  services.nginx.virtualHosts."ping.stuebinm.eu" = {
    enableACME = true;
    forceSSL = true;
    locations."/" = {
      proxyPass = "http://unix:/run/ntfy-sh/ntfy.sock";
      proxyWebsockets = true;
    };
  };

  systemd.services.ntfy-sh = {
    serviceConfig = {
      RuntimeDirectory = [ "ntfy-sh" ];
    };
  };

  environment.etc."ntfy/client.yml".text = ''
    default-host: https://ping.stuebinm.eu
  '';
}