mirror of https://gitlab.crans.org/nounous/nixos
67 lines
1.7 KiB
Nix
67 lines
1.7 KiB
Nix
{ config, lib, ... }:
|
|
|
|
{
|
|
age.secrets = {
|
|
coturn_auth_secret = {
|
|
file = ../../../secrets/common/coturn_auth_secret.age;
|
|
mode = "440";
|
|
owner = "turnserver";
|
|
group = "turnserver";
|
|
};
|
|
};
|
|
|
|
# Taken from https://wiki.nixos.org/wiki/Matrix#Coturn_with_Synapse
|
|
services.coturn = rec {
|
|
enable = true;
|
|
no-cli = true;
|
|
no-tcp-relay = true;
|
|
min-port = 48000;
|
|
max-port = 50000;
|
|
use-auth-secret = true;
|
|
static-auth-secret-file = config.age.secrets.coturn_auth_secret.path;
|
|
secure-stun = true;
|
|
realm = "coturn.crans.org";
|
|
cert = "${config.security.acme.certs.${realm}.directory}/full.pem";
|
|
pkey = "${config.security.acme.certs.${realm}.directory}/key.pem";
|
|
extraConfig = ''
|
|
# for debugging
|
|
verbose
|
|
# ban private IP ranges
|
|
no-multicast-peers
|
|
'';
|
|
};
|
|
|
|
networking.firewall =
|
|
let
|
|
range = with config.services.coturn; lib.singleton {
|
|
from = min-port;
|
|
to = max-port;
|
|
};
|
|
in
|
|
{
|
|
allowedUDPPortRanges = range;
|
|
allowedUDPPorts = [ 3478 5349 ];
|
|
allowedTCPPortRanges = range;
|
|
allowedTCPPorts = [ 3478 5349 ];
|
|
};
|
|
|
|
users.users.turnserver.extraGroups = [ "nginx" ];
|
|
|
|
security.acme.certs.${config.services.coturn.realm} = {
|
|
postRun = "systemctl restart coturn.service";
|
|
};
|
|
|
|
services.nginx.virtualHosts = {
|
|
${config.services.coturn.realm} = {
|
|
forceSSL = true;
|
|
enableACME = true;
|
|
};
|
|
};
|
|
|
|
# services.matrix-synapse.settings = with config.services.coturn; {
|
|
# turn_uris = ["turn:${realm}:3478?transport=udp" "turn:${realm}:3478?transport=tcp"];
|
|
# turn_shared_secret = static-auth-secret;
|
|
# turn_user_lifetime = "1h";
|
|
# };
|
|
}
|