diff options
| author | Gregor Kleen <gkleen@yggdrasil.li> | 2022-02-25 11:38:55 +0100 |
|---|---|---|
| committer | Gregor Kleen <gkleen@yggdrasil.li> | 2022-02-25 11:38:55 +0100 |
| commit | cede6c96f08088211341e69c4a20d7d130cf6f79 (patch) | |
| tree | 40e4c8921176bdfc8a034f18b7ca99383f30607c /hosts/surtr/matrix/default.nix | |
| parent | 7018d9d0ac8ff3ce348e233981c629f5502179e2 (diff) | |
| download | nixos-cede6c96f08088211341e69c4a20d7d130cf6f79.tar nixos-cede6c96f08088211341e69c4a20d7d130cf6f79.tar.gz nixos-cede6c96f08088211341e69c4a20d7d130cf6f79.tar.bz2 nixos-cede6c96f08088211341e69c4a20d7d130cf6f79.tar.xz nixos-cede6c96f08088211341e69c4a20d7d130cf6f79.zip | |
surtr: matrix: turn server
Diffstat (limited to 'hosts/surtr/matrix/default.nix')
| -rw-r--r-- | hosts/surtr/matrix/default.nix | 78 |
1 files changed, 77 insertions, 1 deletions
diff --git a/hosts/surtr/matrix/default.nix b/hosts/surtr/matrix/default.nix index 6b580bea..2ef78b3d 100644 --- a/hosts/surtr/matrix/default.nix +++ b/hosts/surtr/matrix/default.nix | |||
| @@ -31,12 +31,22 @@ | |||
| 31 | tls_private_key_path = "/run/credentials/matrix-synapse.service/synapse.li.key.pem"; | 31 | tls_private_key_path = "/run/credentials/matrix-synapse.service/synapse.li.key.pem"; |
| 32 | tls_dh_params_path = config.security.dhparams.params.matrix-synapse.path; | 32 | tls_dh_params_path = config.security.dhparams.params.matrix-synapse.path; |
| 33 | 33 | ||
| 34 | extraConfigFiles = ["/run/credentials/matrix-synapse.service/registration.yaml"]; | 34 | turn_uris = ["turns:turn.synapse.li?transport=udp" "turns:turn.synapse.li?transport=tcp"]; |
| 35 | turn_user_lifetime = "1h"; | ||
| 36 | |||
| 37 | extraConfigFiles = [ | ||
| 38 | "/run/credentials/matrix-synapse.service/registration.yaml" | ||
| 39 | "/run/credentials/matrix-synapse.service/turn-secret.yaml" | ||
| 40 | ]; | ||
| 35 | }; | 41 | }; |
| 36 | sops.secrets."matrix-synapse-registration.yaml" = { | 42 | sops.secrets."matrix-synapse-registration.yaml" = { |
| 37 | format = "binary"; | 43 | format = "binary"; |
| 38 | sopsFile = ./registration.yaml; | 44 | sopsFile = ./registration.yaml; |
| 39 | }; | 45 | }; |
| 46 | sops.secrets."matrix-synapse-turn-secret.yaml" = { | ||
| 47 | format = "binary"; | ||
| 48 | sopsFile = ./coturn-auth-secret.yaml; | ||
| 49 | }; | ||
| 40 | 50 | ||
| 41 | systemd.services.matrix-synapse = { | 51 | systemd.services.matrix-synapse = { |
| 42 | serviceConfig = { | 52 | serviceConfig = { |
| @@ -44,6 +54,7 @@ | |||
| 44 | "synapse.li.key.pem:${config.security.acme.certs."synapse.li".directory}/key.pem" | 54 | "synapse.li.key.pem:${config.security.acme.certs."synapse.li".directory}/key.pem" |
| 45 | "synapse.li.pem:${config.security.acme.certs."synapse.li".directory}/fullchain.pem" | 55 | "synapse.li.pem:${config.security.acme.certs."synapse.li".directory}/fullchain.pem" |
| 46 | "registration.yaml:${config.sops.secrets."matrix-synapse-registration.yaml".path}" | 56 | "registration.yaml:${config.sops.secrets."matrix-synapse-registration.yaml".path}" |
| 57 | "turn-secret.yaml:${config.sops.secrets."matrix-synapse-turn-secret.yaml".path}" | ||
| 47 | ]; | 58 | ]; |
| 48 | }; | 59 | }; |
| 49 | }; | 60 | }; |
| @@ -110,6 +121,11 @@ | |||
| 110 | }; | 121 | }; |
| 111 | "turn.synapse.li" = { | 122 | "turn.synapse.li" = { |
| 112 | zone = "synapse.li"; | 123 | zone = "synapse.li"; |
| 124 | certCfg = { | ||
| 125 | postRun = '' | ||
| 126 | ${pkgs.systemd}/bin/systemctl try-restart coturn.service | ||
| 127 | ''; | ||
| 128 | }; | ||
| 113 | }; | 129 | }; |
| 114 | "synapse.li".certCfg = { | 130 | "synapse.li".certCfg = { |
| 115 | postRun = '' | 131 | postRun = '' |
| @@ -131,5 +147,65 @@ | |||
| 131 | ]; | 147 | ]; |
| 132 | }; | 148 | }; |
| 133 | }; | 149 | }; |
| 150 | |||
| 151 | services.coturn = rec { | ||
| 152 | enable = true; | ||
| 153 | no-cli = true; | ||
| 154 | no-tcp-relay = true; | ||
| 155 | min-port = 49000; | ||
| 156 | max-port = 50000; | ||
| 157 | use-auth-secret = true; | ||
| 158 | static-auth-secret-file = config.sops.secrets."coturn-auth-secret".path; | ||
| 159 | realm = "turn.synapse.li"; | ||
| 160 | cert = "/run/credentials/coturn.service/turn.synapse.li.pem"; | ||
| 161 | pkey = "/run/credentials/coturn.service/turn.synapse.li.key.pem"; | ||
| 162 | dh-file = config.security.dhparams.params.coturn.path; | ||
| 163 | relay-ips = ["202.61.241.61" "2a03:4000:52:ada::"]; | ||
| 164 | extraConfig = '' | ||
| 165 | # for debugging | ||
| 166 | verbose | ||
| 167 | # ban private IP ranges | ||
| 168 | no-multicast-peers | ||
| 169 | denied-peer-ip=0.0.0.0-0.255.255.255 | ||
| 170 | denied-peer-ip=10.0.0.0-10.255.255.255 | ||
| 171 | denied-peer-ip=100.64.0.0-100.127.255.255 | ||
| 172 | denied-peer-ip=127.0.0.0-127.255.255.255 | ||
| 173 | denied-peer-ip=169.254.0.0-169.254.255.255 | ||
| 174 | denied-peer-ip=172.16.0.0-172.31.255.255 | ||
| 175 | denied-peer-ip=192.0.0.0-192.0.0.255 | ||
| 176 | denied-peer-ip=192.0.2.0-192.0.2.255 | ||
| 177 | denied-peer-ip=192.88.99.0-192.88.99.255 | ||
| 178 | denied-peer-ip=192.168.0.0-192.168.255.255 | ||
| 179 | denied-peer-ip=198.18.0.0-198.19.255.255 | ||
| 180 | denied-peer-ip=198.51.100.0-198.51.100.255 | ||
| 181 | denied-peer-ip=203.0.113.0-203.0.113.255 | ||
| 182 | denied-peer-ip=240.0.0.0-255.255.255.255 | ||
| 183 | denied-peer-ip=::1 | ||
| 184 | denied-peer-ip=64:ff9b::-64:ff9b::ffff:ffff | ||
| 185 | denied-peer-ip=::ffff:0.0.0.0-::ffff:255.255.255.255 | ||
| 186 | denied-peer-ip=100::-100::ffff:ffff:ffff:ffff | ||
| 187 | denied-peer-ip=2001::-2001:1ff:ffff:ffff:ffff:ffff:ffff:ffff | ||
| 188 | denied-peer-ip=2002::-2002:ffff:ffff:ffff:ffff:ffff:ffff:ffff | ||
| 189 | denied-peer-ip=fc00::-fdff:ffff:ffff:ffff:ffff:ffff:ffff:ffff | ||
| 190 | denied-peer-ip=fe80::-febf:ffff:ffff:ffff:ffff:ffff:ffff:ffff | ||
| 191 | |||
| 192 | denied-peer-ip=2a03:4000:52:ada::1-2a03:4000:52:ada:ffff:ffff:ffff:ffff | ||
| 193 | ''; | ||
| 194 | }; | ||
| 195 | systemd.services.coturn = { | ||
| 196 | serviceConfig = { | ||
| 197 | LoadCredential = [ | ||
| 198 | "turn.synapse.li.key.pem:${config.security.acme.certs."turn.synapse.li".directory}/key.pem" | ||
| 199 | "turn.synapse.li.pem:${config.security.acme.certs."turn.synapse.li".directory}/fullchain.pem" | ||
| 200 | ]; | ||
| 201 | }; | ||
| 202 | }; | ||
| 203 | |||
| 204 | sops.secrets."coturn-auth-secret" = { | ||
| 205 | format = "binary"; | ||
| 206 | sopsFile = ./coturn-auth-secret; | ||
| 207 | owner = "turnserver"; | ||
| 208 | group = "turnserver"; | ||
| 209 | }; | ||
| 134 | }; | 210 | }; |
| 135 | } | 211 | } |
