aboutsummaryrefslogtreecommitdiff
path: root/modules/services/coturn.nix
diff options
context:
space:
mode:
authorsefidel <contact@sefidel.net>2024-01-24 13:29:27 +0900
committersefidel <contact@sefidel.net>2024-01-24 18:59:54 +0900
commit8e9b074467006c76768efe04cf1fb1ef9d652c67 (patch)
treefad73c7f94a74c77714c260d1fc0a63e2d205b49 /modules/services/coturn.nix
downloadinfra-modules-8e9b074467006c76768efe04cf1fb1ef9d652c67.zip
initial commitHEADmain
Diffstat (limited to 'modules/services/coturn.nix')
-rw-r--r--modules/services/coturn.nix64
1 files changed, 64 insertions, 0 deletions
diff --git a/modules/services/coturn.nix b/modules/services/coturn.nix
new file mode 100644
index 0000000..967ba60
--- /dev/null
+++ b/modules/services/coturn.nix
@@ -0,0 +1,64 @@
+{ config, lib, ... }:
+
+with lib;
+let
+ turnRange = with config.services.coturn; [{
+ from = min-port;
+ to = max-port;
+ }];
+
+ cfg = config.modules.services.coturn;
+in
+{
+ options.modules.services.coturn = {
+ enable = mkEnableOption "coturn";
+ domain = mkOption { type = types.str; default = config.networking.hostName; };
+ shared_secret = mkOption { type = types.str; };
+ tls.acmeHost = mkOption { type = types.str; default = cfg.domain; };
+ };
+
+ config = mkIf cfg.enable {
+ services.coturn = {
+ enable = true;
+ use-auth-secret = true;
+ static-auth-secret = cfg.shared_secret;
+ realm = cfg.domain;
+ cert = "${config.security.acme.certs.${cfg.tls.acmeHost}.directory}/fullchain.pem";
+ pkey = "${config.security.acme.certs.${cfg.tls.acmeHost}.directory}/key.pem";
+
+ no-tcp-relay = true;
+ no-cli = true;
+
+ extraConfig = ''
+ user-quota=12
+ total-quota=1200
+
+ no-loopback-peers
+ no-multicast-peers
+ denied-peer-ip=0.0.0.0-0.255.255.255
+ denied-peer-ip=10.0.0.0-10.255.255.255
+ denied-peer-ip=100.64.0.0-100.127.255.255
+ denied-peer-ip=127.0.0.0-127.255.255.255
+ denied-peer-ip=169.254.0.0-169.254.255.255
+ denied-peer-ip=172.16.0.0-172.31.255.255
+ denied-peer-ip=192.0.0.0-192.0.0.255
+ denied-peer-ip=192.0.2.0-192.0.2.255
+ denied-peer-ip=192.88.99.0-192.88.99.255
+ denied-peer-ip=192.168.0.0-192.168.255.255
+ denied-peer-ip=198.18.0.0-198.19.255.255
+ denied-peer-ip=198.51.100.0-198.51.100.255
+ denied-peer-ip=203.0.113.0-203.0.113.255
+ denied-peer-ip=240.0.0.0-255.255.255.255
+ '';
+ };
+
+ systemd.services.coturn = {
+ serviceConfig.SupplementaryGroups = [ "acme" ];
+ };
+
+ networking.firewall.allowedUDPPortRanges = turnRange;
+ networking.firewall.allowedTCPPortRanges = turnRange;
+ networking.firewall.allowedTCPPorts = [ 3478 3479 5349 5350 ];
+ networking.firewall.allowedUDPPorts = [ 3478 3479 5349 5350 ];
+ };
+}