Use domain instead of IP, add TLS endpoints

This commit is contained in:
Râu Cao 2023-12-17 17:57:49 +01:00
parent ca3f06f831
commit 8a97ebf4f8
Signed by: raucao
GPG Key ID: 37036C356E56CC51
6 changed files with 40 additions and 13 deletions

View File

@ -17,7 +17,7 @@
"public_url": "https://drone.kosmos.org"
},
"ejabberd": {
"turn_ip_address": "148.251.83.201"
"turn_domain": "turn.kosmos.org"
},
"garage": {
"replication_mode": "2",

View File

@ -1,8 +1,8 @@
node.default["ejabberd"]["version"] = "23.10"
node.default["ejabberd"]["package_version"] = "1"
node.default["ejabberd"]["checksum"] = "1b02108c81e22ab28be84630d54061f0584b76d5c2702e598352269736b05e77"
node.default["ejabberd"]["stun_auth_realm"] = "kosmos.org"
node.default["ejabberd"]["turn_domain"] = "turn.kosmos.org"
node.default["ejabberd"]["stun_turn_port"] = 3478
node.default["ejabberd"]["stun_turn_port_tls"] = 5349
node.default["ejabberd"]["turn_min_port"] = 50000
node.default["ejabberd"]["turn_max_port"] = 50999
node.default["ejabberd"]["turn_ip_address"] = nil

View File

@ -5,19 +5,27 @@
apt_package 'coturn'
domain = node["ejabberd"]["turn_domain"]
credentials = data_bag_item("credentials", "ejabberd")
tls_cert_for domain do
auth "gandi_dns"
action :create
end
template "/etc/turnserver.conf" do
source "turnserver.conf.erb"
mode 0644
variables listening_port: node["ejabberd"]["stun_turn_port"],
tls_listening_port: node["ejabberd"]["stun_turn_port"],
listening_ip: node["ejabberd"]["turn_ip_address"],
relay_ip: node["ejabberd"]["turn_ip_address"],
tls_listening_port: node["ejabberd"]["stun_turn_port_tls"],
listening_ip: node["ipaddress"],
relay_ip: node["ipaddress"],
min_port: node["ejabberd"]["turn_min_port"],
max_port: node["ejabberd"]["turn_max_port"],
static_auth_secret: credentials["stun_secret"],
realm: node["ejabberd"]["stun_auth_realm"]
realm: domain,
cert: "/etc/letsencrypt/live/#{domain}/fullchain.pem",
pkey: "/etc/letsencrypt/live/#{domain}/privkey.pem"
notifies :restart, "service[coturn]", :delayed
end
@ -27,6 +35,12 @@ firewall_rule 'ejabberd_stun_turn' do
command :allow
end
firewall_rule 'ejabberd_stun_turn_tls' do
port node["ejabberd"]["stun_turn_port_tls"]
protocol :udp
command :allow
end
firewall_rule 'ejabberd_turn' do
port node["ejabberd"]["turn_min_port"]..node["ejabberd"]["turn_max_port"]
protocol :udp

View File

@ -183,10 +183,11 @@ template "/opt/ejabberd/conf/ejabberd.yml" do
sensitive true
variables hosts: hosts,
admin_users: admin_users,
stun_auth_realm: node["ejabberd"]["stun_auth_realm"],
stun_auth_realm: node["ejabberd"]["turn_domain"],
stun_secret: ejabberd_credentials['stun_secret'],
turn_ip_address: node["ejabberd"]["turn_ip_address"],
stun_turn_port: node["ejabberd"]["stun_turn_port"],
stun_turn_port_tls: node["ejabberd"]["stun_turn_port_tls"],
turn_min_port: node["ejabberd"]["turn_min_port"],
turn_max_port: node["ejabberd"]["turn_max_port"],
private_ip_address: node["knife_zero"]["host"],

View File

@ -233,17 +233,29 @@ modules:
secret: <%= @stun_secret %>
services:
-
host: <%= @turn_ip_address %>
host: <%= @turn_domain %>
port: <%= @stun_turn_port %>
type: stun
transport: udp
restricted: false
-
host: <%= @turn_ip_address %>
host: <%= @turn_domain %>
port: <%= @stun_turn_port_tls %>
type: stuns
transport: udp
restricted: false
-
host: <%= @turn_domain %>
port: <%= @stun_turn_port %>
type: turn
transport: udp
restricted: true
-
host: <%= @turn_domain %>
port: <%= @stun_turn_port_tls %>
type: turns
transport: tcp
restricted: true
mod_vcard:
search: false
mod_vcard_xupdate: {}

View File

@ -436,14 +436,14 @@ realm=<%= @realm %>
# Use an absolute path or path relative to the
# configuration file.
#
#cert=/usr/local/etc/turn_server_cert.pem
cert=<%= @cert %>
# Private key file.
# Use an absolute path or path relative to the
# configuration file.
# Use PEM file format.
#
#pkey=/usr/local/etc/turn_server_pkey.pem
pkey=<%= @pkey %>
# Private key file password, if it is in encoded format.
# This option has no default value.
@ -642,7 +642,7 @@ syslog
# By default it is always ON.
# See also options cli-ip and cli-port.
#
#no-cli
no-cli
#Local system IP address to be used for CLI server endpoint. Default value
# is 127.0.0.1.