diff --git a/coturn_default_turnserver.conf b/coturn_default_turnserver.conf new file mode 100644 index 0000000..ea40824 --- /dev/null +++ b/coturn_default_turnserver.conf @@ -0,0 +1,725 @@ +# Coturn TURN SERVER configuration file +# +# Boolean values note: where a boolean value is supposed to be used, +# you can use '0', 'off', 'no', 'false', or 'f' as 'false, +# and you can use '1', 'on', 'yes', 'true', or 't' as 'true' +# If the value is missing, then it means 'true' by default. +# + +# Listener interface device (optional, Linux only). +# NOT RECOMMENDED. +# +#listening-device=eth0 + +# TURN listener port for UDP and TCP (Default: 3478). +# Note: actually, TLS & DTLS sessions can connect to the +# "plain" TCP & UDP port(s), too - if allowed by configuration. +# +listening-port=3478 + +# TURN listener port for TLS (Default: 5349). +# Note: actually, "plain" TCP & UDP sessions can connect to the TLS & DTLS +# port(s), too - if allowed by configuration. The TURN server +# "automatically" recognizes the type of traffic. Actually, two listening +# endpoints (the "plain" one and the "tls" one) are equivalent in terms of +# functionality; but Coturn keeps both endpoints to satisfy the RFC 5766 specs. +# For secure TCP connections, Coturn currently supports SSL version 3 and +# TLS version 1.0, 1.1 and 1.2. +# For secure UDP connections, Coturn supports DTLS version 1. +# +tls-listening-port=5349 + +# Alternative listening port for UDP and TCP listeners; +# default (or zero) value means "listening port plus one". +# This is needed for RFC 5780 support +# (STUN extension specs, NAT behavior discovery). The TURN Server +# supports RFC 5780 only if it is started with more than one +# listening IP address of the same family (IPv4 or IPv6). +# RFC 5780 is supported only by UDP protocol, other protocols +# are listening to that endpoint only for "symmetry". +# +#alt-listening-port=0 + +# Alternative listening port for TLS and DTLS protocols. +# Default (or zero) value means "TLS listening port plus one". +# +#alt-tls-listening-port=0 + +# Some network setups will require using a TCP reverse proxy in front +# of the STUN server. If the proxy port option is set a single listener +# is started on the given port that accepts connections using the +# haproxy proxy protocol v2. +# (https://www.haproxy.org/download/1.8/doc/proxy-protocol.txt) +# +#tcp-proxy-port=5555 + +# Listener IP address of relay server. Multiple listeners can be specified. +# If no IP(s) specified in the config file or in the command line options, +# then all IPv4 and IPv6 system IPs will be used for listening. +# +#listening-ip=172.17.19.101 +#listening-ip=10.207.21.238 +#listening-ip=2607:f0d0:1002:51::4 + +# Auxiliary STUN/TURN server listening endpoint. +# Aux servers have almost full TURN and STUN functionality. +# The (minor) limitations are: +# +# 1) Auxiliary servers do not have alternative ports and +# they do not support STUN RFC 5780 functionality (CHANGE REQUEST). +# +# 2) Auxiliary servers also are never returning ALTERNATIVE-SERVER reply. +# +# Valid formats are 1.2.3.4:5555 for IPv4 and [1:2::3:4]:5555 for IPv6. +# +# There may be multiple aux-server options, each will be used for listening +# to client requests. +# +#aux-server=172.17.19.110:33478 +#aux-server=[2607:f0d0:1002:51::4]:33478 + +# (recommended for older Linuxes only) +# Automatically balance UDP traffic over auxiliary servers (if configured). +# The load balancing is using the ALTERNATE-SERVER mechanism. +# The TURN client must support 300 ALTERNATE-SERVER response for this +# functionality. +# +#udp-self-balance + +# Relay interface device for relay sockets (optional, Linux only). +# NOT RECOMMENDED. +# +#relay-device=eth1 + +# Relay address (the local IP address that will be used to relay the +# packets to the peer). +# Multiple relay addresses may be used. +# The same IP(s) can be used as both listening IP(s) and relay IP(s). +# +# If no relay IP(s) specified, then the turnserver will apply the default +# policy: it will decide itself which relay addresses to be used, and it +# will always be using the client socket IP address as the relay IP address +# of the TURN session (if the requested relay address family is the same +# as the family of the client socket). +# +#relay-ip=172.17.19.105 +#relay-ip=2607:f0d0:1002:51::5 + +# For Amazon EC2 users: +# +# TURN Server public/private address mapping, if the server is behind NAT. +# In that situation, if a -X is used in form "-X " then that ip will be reported +# as relay IP address of all allocations. This scenario works only in a simple case +# when one single relay address is be used, and no RFC5780 functionality is required. +# That single relay address must be mapped by NAT to the 'external' IP. +# The "external-ip" value, if not empty, is returned in XOR-RELAYED-ADDRESS field. +# For that 'external' IP, NAT must forward ports directly (relayed port 12345 +# must be always mapped to the same 'external' port 12345). +# +# In more complex case when more than one IP address is involved, +# that option must be used several times, each entry must +# have form "-X ", to map all involved addresses. +# RFC5780 NAT discovery STUN functionality will work correctly, +# if the addresses are mapped properly, even when the TURN server itself +# is behind A NAT. +# +# By default, this value is empty, and no address mapping is used. +# +external-ip=193.224.22.37 +# +#OR: +# +#external-ip=60.70.80.91/172.17.19.101 +#external-ip=60.70.80.92/172.17.19.102 + + +# Number of the relay threads to handle the established connections +# (in addition to authentication thread and the listener thread). +# If explicitly set to 0 then application runs relay process in a +# single thread, in the same thread with the listener process +# (the authentication thread will still be a separate thread). +# +# If this parameter is not set, then the default OS-dependent +# thread pattern algorithm will be employed. Usually the default +# algorithm is optimal, so you have to change this option +# if you want to make some fine tweaks. +# +# In the older systems (Linux kernel before 3.9), +# the number of UDP threads is always one thread per network listening +# endpoint - including the auxiliary endpoints - unless 0 (zero) or +# 1 (one) value is set. +# +#relay-threads=0 + +# Lower and upper bounds of the UDP relay endpoints: +# (default values are 49152 and 65535) +# +min-port=49152 +max-port=65535 + +# Uncomment to run TURN server in 'normal' 'moderate' verbose mode. +# By default the verbose mode is off. +verbose + +# Uncomment to run TURN server in 'extra' verbose mode. +# This mode is very annoying and produces lots of output. +# Not recommended under normal circumstances. +# +#Verbose + +# Uncomment to use fingerprints in the TURN messages. +# By default the fingerprints are off. +# +fingerprint + +# Uncomment to use long-term credential mechanism. +# By default no credentials mechanism is used (any user allowed). +# +lt-cred-mech + +# This option is the opposite of lt-cred-mech. +# (TURN Server with no-auth option allows anonymous access). +# If neither option is defined, and no users are defined, +# then no-auth is default. If at least one user is defined, +# in this file, in command line or in usersdb file, then +# lt-cred-mech is default. +# +#no-auth + +# TURN REST API flag. +# (Time Limited Long Term Credential) +# Flag that sets a special authorization option that is based upon authentication secret. +# +# This feature's purpose is to support "TURN Server REST API", see +# "TURN REST API" link in the project's page +# https://github.com/coturn/coturn/ +# +# This option is used with timestamp: +# +# usercombo -> "timestamp:userid" +# turn user -> usercombo +# turn password -> base64(hmac(secret key, usercombo)) +# +# This allows TURN credentials to be accounted for a specific user id. +# If you don't have a suitable id, then the timestamp alone can be used. +# This option is enabled by turning on secret-based authentication. +# The actual value of the secret is defined either by the option static-auth-secret, +# or can be found in the turn_secret table in the database (see below). +# +# Read more about it: +# - https://tools.ietf.org/html/draft-uberti-behave-turn-rest-00 +# - https://www.ietf.org/proceedings/87/slides/slides-87-behave-10.pdf +# +# Be aware that use-auth-secret overrides some parts of lt-cred-mech. +# The use-auth-secret feature depends internally on lt-cred-mech, so if you set +# this option then it automatically enables lt-cred-mech internally +# as if you had enabled both. +# +# Note that you can use only one auth mechanism at the same time! This is because, +# both mechanisms conduct username and password validation in different ways. +# +# Use either lt-cred-mech or use-auth-secret in the conf +# to avoid any confusion. +# +#use-auth-secret + +# 'Static' authentication secret value (a string) for TURN REST API only. +# If not set, then the turn server +# will try to use the 'dynamic' value in the turn_secret table +# in the user database (if present). The database-stored value can be changed on-the-fly +# by a separate program, so this is why that mode is considered 'dynamic'. +# +#static-auth-secret=north + +# Server name used for +# the oAuth authentication purposes. +# The default value is the realm name. +# +#server-name=blackdow.carleon.gov + +# Flag that allows oAuth authentication. +# +#oauth + +# 'Static' user accounts for the long term credentials mechanism, only. +# This option cannot be used with TURN REST API. +# 'Static' user accounts are NOT dynamically checked by the turnserver process, +# so they can NOT be changed while the turnserver is running. +# +#user=username1:key1 +#user=username2:key2 +# OR: +#user=username1:password1 +#user=username2:password2 +# +# Keys must be generated by turnadmin utility. The key value depends +# on user name, realm, and password: +# +# Example: +# $ turnadmin -k -u ninefingers -r north.gov -p youhavetoberealistic +# Output: 0xbc807ee29df3c9ffa736523fb2c4e8ee +# ('0x' in the beginning of the key is what differentiates the key from +# password. If it has 0x then it is a key, otherwise it is a password). +# +# The corresponding user account entry in the config file will be: +# +#user=ninefingers:0xbc807ee29df3c9ffa736523fb2c4e8ee +# Or, equivalently, with open clear password (less secure): +#user=ninefingers:youhavetoberealistic +# + +# SQLite database file name. +# +# The default file name is /var/db/turndb or /usr/local/var/db/turndb or +# /var/lib/turn/turndb. +# +#userdb=/var/db/turndb + +# PostgreSQL database connection string in the case that you are using PostgreSQL +# as the user database. +# This database can be used for the long-term credential mechanism +# and it can store the secret value for secret-based timed authentication in TURN REST API. +# See http://www.postgresql.org/docs/8.4/static/libpq-connect.html for 8.x PostgreSQL +# versions connection string format, see +# http://www.postgresql.org/docs/9.2/static/libpq-connect.html#LIBPQ-CONNSTRING +# for 9.x and newer connection string formats. +# +#psql-userdb="host= dbname= user= password= connect_timeout=30" + +# MySQL database connection string in the case that you are using MySQL +# as the user database. +# This database can be used for the long-term credential mechanism +# and it can store the secret value for secret-based timed authentication in TURN REST API. +# +# Optional connection string parameters for the secure communications (SSL): +# ca, capath, cert, key, cipher +# (see http://dev.mysql.com/doc/refman/5.1/en/ssl-options.html for the +# command options description). +# +# Use the string format below (space separated parameters, all optional): +# +mysql-userdb="host=mysql dbname=coturn user=coturn password=CHANGE_ME port=3306 connect_timeout=10 read_timeout=10" + +# If you want to use an encrypted password in the MySQL connection string, +# then set the MySQL password encryption secret key file with this option. +# +# Warning: If this option is set, then the mysql password must be set in "mysql-userdb" in an encrypted format! +# If you want to use a cleartext password then do not set this option! +# +# This is the file path for the aes encrypted secret key used for password encryption. +# +#secret-key-file=/path/ + +# MongoDB database connection string in the case that you are using MongoDB +# as the user database. +# This database can be used for long-term credential mechanism +# and it can store the secret value for secret-based timed authentication in TURN REST API. +# Use the string format described at http://hergert.me/docs/mongo-c-driver/mongoc_uri.html +# +#mongo-userdb="mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]" + +# Redis database connection string in the case that you are using Redis +# as the user database. +# This database can be used for long-term credential mechanism +# and it can store the secret value for secret-based timed authentication in TURN REST API. +# Use the string format below (space separated parameters, all optional): +# +#redis-userdb="ip= dbname= password= port= connect_timeout=" + +# Redis status and statistics database connection string, if used (default - empty, no Redis stats DB used). +# This database keeps allocations status information, and it can be also used for publishing +# and delivering traffic and allocation event notifications. +# The connection string has the same parameters as redis-userdb connection string. +# Use the string format below (space separated parameters, all optional): +# +#redis-statsdb="ip= dbname= password= port= connect_timeout=" + +# The default realm to be used for the users when no explicit +# origin/realm relationship is found in the database, or if the TURN +# server is not using any database (just the commands-line settings +# and the userdb file). Must be used with long-term credentials +# mechanism or with TURN REST API. +# +# Note: If the default realm is not specified, then realm falls back to the host domain name. +# If the domain name string is empty, or set to '(None)', then it is initialized as an empty string. +# +realm=example.org + +# This flag sets the origin consistency +# check. Across the session, all requests must have the same +# main ORIGIN attribute value (if the ORIGIN was +# initially used by the session). +# +#check-origin-consistency + +# Per-user allocation quota. +# default value is 0 (no quota, unlimited number of sessions per user). +# This option can also be set through the database, for a particular realm. +# +#user-quota=0 + +# Total allocation quota. +# default value is 0 (no quota). +# This option can also be set through the database, for a particular realm. +# +#total-quota=0 + +# Max bytes-per-second bandwidth a TURN session is allowed to handle +# (input and output network streams are treated separately). Anything above +# that limit will be dropped or temporarily suppressed (within +# the available buffer limits). +# This option can also be set through the database, for a particular realm. +# +#max-bps=0 + +# +# Maximum server capacity. +# Total bytes-per-second bandwidth the TURN server is allowed to allocate +# for the sessions, combined (input and output network streams are treated separately). +# +# bps-capacity=0 + +# Uncomment if no UDP client listener is desired. +# By default UDP client listener is always started. +# +#no-udp + +# Uncomment if no TCP client listener is desired. +# By default TCP client listener is always started. +# +#no-tcp + +# Uncomment if no TLS client listener is desired. +# By default TLS client listener is always started. +# +#no-tls + +# Uncomment if no DTLS client listener is desired. +# By default DTLS client listener is always started. +# +#no-dtls + +# Uncomment if no UDP relay endpoints are allowed. +# By default UDP relay endpoints are enabled (like in RFC 5766). +# +#no-udp-relay + +# Uncomment if no TCP relay endpoints are allowed. +# By default TCP relay endpoints are enabled (like in RFC 6062). +# +#no-tcp-relay + +# Uncomment if extra security is desired, +# with nonce value having a limited lifetime. +# The nonce value is unique for a session. +# Set this option to limit the nonce lifetime. +# Set it to 0 for unlimited lifetime. +# It defaults to 600 secs (10 min) if no value is provided. After that delay, +# the client will get 438 error and will have to re-authenticate itself. +# +#stale-nonce=600 + +# Uncomment if you want to set the maximum allocation +# time before it has to be refreshed. +# Default is 3600s. +# +#max-allocate-lifetime=3600 + + +# Uncomment to set the lifetime for the channel. +# Default value is 600 secs (10 minutes). +# This value MUST not be changed for production purposes. +# +#channel-lifetime=600 + +# Uncomment to set the permission lifetime. +# Default to 300 secs (5 minutes). +# In production this value MUST not be changed, +# however it can be useful for test purposes. +# +#permission-lifetime=300 + +# Certificate file. +# Use an absolute path or path relative to the +# configuration file. +# Use PEM file format. +# +cert=/etc/ssl/certs/cert.pem + +# Private key file. +# Use an absolute path or path relative to the +# configuration file. +# Use PEM file format. +# +pkey=/etc/ssl/private/privkey.pem + +# Private key file password, if it is in encoded format. +# This option has no default value. +# +#pkey-pwd=... + +# Allowed OpenSSL cipher list for TLS/DTLS connections. +# Default value is "DEFAULT". +# +#cipher-list="DEFAULT" + +# CA file in OpenSSL format. +# Forces TURN server to verify the client SSL certificates. +# By default this is not set: there is no default value and the client +# certificate is not checked. +# +# Example: +#CA-file=/etc/ssh/id_rsa.cert + +# Curve name for EC ciphers, if supported by OpenSSL +# library (TLS and DTLS). The default value is prime256v1, +# if pre-OpenSSL 1.0.2 is used. With OpenSSL 1.0.2+, +# an optimal curve will be automatically calculated, if not defined +# by this option. +# +#ec-curve-name=prime256v1 + +# Use 566 bits predefined DH TLS key. Default size of the key is 2066. +# +#dh566 + +# Use 1066 bits predefined DH TLS key. Default size of the key is 2066. +# +#dh1066 + +# Use custom DH TLS key, stored in PEM format in the file. +# Flags --dh566 and --dh2066 are ignored when the DH key is taken from a file. +# +#dh-file= + +# Flag to prevent stdout log messages. +# By default, all log messages go to both stdout and to +# the configured log file. With this option everything will +# go to the configured log only (unless the log file itself is stdout). +# +#no-stdout-log + +# Option to set the log file name. +# By default, the turnserver tries to open a log file in +# /var/log, /var/tmp, /tmp and the current directory +# (Whichever file open operation succeeds first will be used). +# With this option you can set the definite log file name. +# The special names are "stdout" and "-" - they will force everything +# to the stdout. Also, the "syslog" name will force everything to +# the system log (syslog). +# In the runtime, the logfile can be reset with the SIGHUP signal +# to the turnserver process. +# +#log-file=/var/tmp/turn.log + +# Option to redirect all log output into system log (syslog). +# +syslog + +# This flag means that no log file rollover will be used, and the log file +# name will be constructed as-is, without PID and date appendage. +# This option can be used, for example, together with the logrotate tool. +# +#simple-log + +# Option to set the "redirection" mode. The value of this option +# will be the address of the alternate server for UDP & TCP service in the form of +# [:]. The server will send this value in the attribute +# ALTERNATE-SERVER, with error 300, on ALLOCATE request, to the client. +# Client will receive only values with the same address family +# as the client network endpoint address family. +# See RFC 5389 and RFC 5766 for the description of ALTERNATE-SERVER functionality. +# The client must use the obtained value for subsequent TURN communications. +# If more than one --alternate-server option is provided, then the functionality +# can be more accurately described as "load-balancing" than a mere "redirection". +# If the port number is omitted, then the default port +# number 3478 for the UDP/TCP protocols will be used. +# Colon (:) characters in IPv6 addresses may conflict with the syntax of +# the option. To alleviate this conflict, literal IPv6 addresses are enclosed +# in square brackets in such resource identifiers, for example: +# [2001:db8:85a3:8d3:1319:8a2e:370:7348]:3478 . +# Multiple alternate servers can be set. They will be used in the +# round-robin manner. All servers in the pool are considered of equal weight and +# the load will be distributed equally. For example, if you have 4 alternate servers, +# then each server will receive 25% of ALLOCATE requests. A alternate TURN server +# address can be used more than one time with the alternate-server option, so this +# can emulate "weighting" of the servers. +# +# Examples: +#alternate-server=1.2.3.4:5678 +#alternate-server=11.22.33.44:56789 +#alternate-server=5.6.7.8 +#alternate-server=[2001:db8:85a3:8d3:1319:8a2e:370:7348]:3478 + +# Option to set alternative server for TLS & DTLS services in form of +# :. If the port number is omitted, then the default port +# number 5349 for the TLS/DTLS protocols will be used. See the previous +# option for the functionality description. +# +# Examples: +#tls-alternate-server=1.2.3.4:5678 +#tls-alternate-server=11.22.33.44:56789 +#tls-alternate-server=[2001:db8:85a3:8d3:1319:8a2e:370:7348]:3478 + +# Option to suppress TURN functionality, only STUN requests will be processed. +# Run as STUN server only, all TURN requests will be ignored. +# By default, this option is NOT set. +# +#stun-only + +# Option to hide software version. Enhance security when used in production. +# Revealing the specific software version of the agent through the +# SOFTWARE attribute might allow them to become more vulnerable to +# attacks against software that is known to contain security holes. +# Implementers SHOULD make usage of the SOFTWARE attribute a +# configurable option (https://tools.ietf.org/html/rfc5389#section-16.1.2) +# +#no-software-attribute + +# Option to suppress STUN functionality, only TURN requests will be processed. +# Run as TURN server only, all STUN requests will be ignored. +# By default, this option is NOT set. +# +#no-stun + +# This is the timestamp/username separator symbol (character) in TURN REST API. +# The default value is ':'. +# rest-api-separator=: + +# Flag that can be used to allow peers on the loopback addresses (127.x.x.x and ::1). +# This is an extra security measure. +# +# (To avoid any security issue that allowing loopback access may raise, +# the no-loopback-peers option is replaced by allow-loopback-peers.) +# +# Allow it only for testing in a development environment! +# In production it adds a possible security vulnerability, so for security reasons +# it is not allowed using it together with empty cli-password. +# +#allow-loopback-peers + +# Flag that can be used to disallow peers on well-known broadcast addresses (224.0.0.0 and above, and FFXX:*). +# This is an extra security measure. +# +#no-multicast-peers + +# Option to set the max time, in seconds, allowed for full allocation establishment. +# Default is 60 seconds. +# +#max-allocate-timeout=60 + +# Option to allow or ban specific ip addresses or ranges of ip addresses. +# If an ip address is specified as both allowed and denied, then the ip address is +# considered to be allowed. This is useful when you wish to ban a range of ip +# addresses, except for a few specific ips within that range. +# +# This can be used when you do not want users of the turn server to be able to access +# machines reachable by the turn server, but would otherwise be unreachable from the +# internet (e.g. when the turn server is sitting behind a NAT) +# +# Examples: +# denied-peer-ip=83.166.64.0-83.166.95.255 +# allowed-peer-ip=83.166.68.45 + +# File name to store the pid of the process. +# Default is /var/run/turnserver.pid (if superuser account is used) or +# /var/tmp/turnserver.pid . +# +#pidfile="/var/run/turnserver.pid" + +# Require authentication of the STUN Binding request. +# By default, the clients are allowed anonymous access to the STUN Binding functionality. +# +#secure-stun + +# Mobility with ICE (MICE) specs support. +# +#mobility + +# Allocate Address Family according +# If enabled then TURN server allocates address family according the TURN +# Client <=> Server communication address family. +# (By default Coturn works according RFC 6156.) +# !!Warning: Enabling this option breaks RFC6156 section-4.2 (violates use default IPv4)!! +# +#keep-address-family + + +# User name to run the process. After the initialization, the turnserver process +# will attempt to change the current user ID to that user. +# +#proc-user= + +# Group name to run the process. After the initialization, the turnserver process +# will attempt to change the current group ID to that group. +# +#proc-group= + +# Turn OFF the CLI support. +# By default it is always ON. +# See also options cli-ip and cli-port. +# +#no-cli + +#Local system IP address to be used for CLI server endpoint. Default value +# is 127.0.0.1. +# +cli-ip=127.0.0.1 + +# CLI server port. Default is 5766. +# +cli-port=5766 + +# CLI access password. Default is empty (no password). +# For the security reasons, it is recommended that you use the encrypted +# form of the password (see the -P command in the turnadmin utility). +# +# Secure form for password 'qwerty': +# +#cli-password=$5$79a316b350311570$81df9cfb9af7f5e5a76eada31e7097b663a0670f99a3c07ded3f1c8e59c5658a +# +# Or unsecure form for the same password: +# +cli-password=CHANGE_ME + +# Enable Web-admin support on https. By default it is Disabled. +# If it is enabled it also enables a http a simple static banner page +# with a small reminder that the admin page is available only on https. +# +#web-admin + +# Local system IP address to be used for Web-admin server endpoint. Default value is 127.0.0.1. +# +#web-admin-ip=127.0.0.1 + +# Web-admin server port. Default is 8080. +# +#web-admin-port=8080 + +# Web-admin server listen on STUN/TURN worker threads +# By default it is disabled for security resons! (Not recommended in any production environment!) +# +#web-admin-listen-on-workers + +# Server relay. NON-STANDARD AND DANGEROUS OPTION. +# Only for those applications when you want to run +# server applications on the relay endpoints. +# This option eliminates the IP permissions check on +# the packets incoming to the relay endpoints. +# +#server-relay + +# Maximum number of output sessions in ps CLI command. +# This value can be changed on-the-fly in CLI. The default value is 256. +# +#cli-max-output-sessions + +# Set network engine type for the process (for internal purposes). +# +#ne=[1|2|3] + +# Do not allow an TLS/DTLS version of protocol +# +#no-tlsv1 +#no-tlsv1_1 +#no-tlsv1_2 diff --git a/deployer/group_vars/all/vars.yml b/deployer/group_vars/all/vars.yml index cf8a981..6105c89 100644 --- a/deployer/group_vars/all/vars.yml +++ b/deployer/group_vars/all/vars.yml @@ -166,11 +166,26 @@ sites: smtp_host: mail.gandi.net smtp_port: 587 # Clear: 25, SSL: 465, STARTTLS: 587 smtp_username: contact@zinz.dev - smtp_password: "{{ vault_smtp_contact_at_zinz_dev }}" + smtp_password: "{{ vault_smtp_contact_at_zinz_dev_password }}" # Secrets registration_shared_secret: "{{ vault_synapse_registration_shared_secret }}" # Others max_upload_size: 20M + # Coturn server + coturn: + static_auth_secret : "{{ vault_synapse_coturn_static_auth_secret }}" + min_port: 49152 + max_port: 49172 + external_ip: 92.243.8.85 + # 4 streams per video call, so 12 streams = 3 simultaneous relayed calls per user. + # Set to null if you want to disable quota + user_quota: 12 + total_quota: 1200 + denied_peer_ips: + - '10.0.0.0-10.255.255.255' + - '172.16.0.0-172.31.255.255' + allowed_peer_ips: [] + - slug: cloud # Shorthand name to use as directory/file name # The site URL (without www) diff --git a/deployer/group_vars/all/vault.yml b/deployer/group_vars/all/vault.yml index 16b24c4..9e1dbf3 100644 --- a/deployer/group_vars/all/vault.yml +++ b/deployer/group_vars/all/vault.yml @@ -1,62 +1,59 @@ $ANSIBLE_VAULT;1.1;AES256 -63396539316239353233336438626132623539363031646230646136363332613735653464363266 -6134333039643639383565363361326631346536376162630a356539653234303034303165626364 -39643037623062316237303361323037663233626464343032646265343830303932633761613335 -3464643562343235300a383839636533306537303365623438623632323765333138636631386238 -36653766393163313633396465643936316635316238656161376435623536396437323836653530 -30633232376239666336373430383163376530343230343536646266366135643962306633396337 -63386661356631373062613066383862366532396564313633646666313536326234366239353733 -30303764653332333961653331613032613066643962316464373738653231336434396634636636 -66646463613165396563373161366231633436616261306166626366656134366134616439616336 -36623266383338326230623532653336633761326663383463653933343165613935356333353432 -34366461616535303731346165333863613933363161376262393433313133626366626432303732 -31306337303163656631316130383438623963363135643963656332333535303539303230376634 -32373934643963393465336466373635613265386166366634656465653162373333303531363163 -32636563323937393866396232356238316533303164333238666135363439616166326465306365 -63363062636431663034353662623563343732313666303034613233396239366431646566366634 -62613666303532303666323765363634356232396262306332306336653532663832623438646661 -30316636616631353161383139383235316130626633383636633235613934643338326134363030 -64636366363462616535346233636162313461643637643731323837383034383835323761613764 -35383061373638643661653039393532646530303863393838316339616232396239393931343431 -33366163313966373061323961383738663662373936373561363034663263353135326237653964 -65373233626633313161323761333063616339636163336164353132323731326265323162363633 -36623235306263386431353932626432613231366163373433393530343335396464393862636436 -66613666356337373965636262666566653764353861643565613830393761333062326233643636 -32643033313530346263323034376561373863316133396534396132613861623738336161306435 -34373631326464323332343832336337656139616231386263653532326538616530626434663564 -37633332366438326132373331353337333865366639333338306565326239646331666232616431 -36323864653862386461386631306535303861336230356536393135383766636339626366316632 -63643638663962373063373361363062306339373030653661666166313234353539373466613665 -34646666613361643237306566393661383736386165613738646532386535336437313461373663 -34333530616535316333396665633864663864373762326430666138346534646430323662353663 -30636363613037313763646262376564663935663265653533313761393832393834643337633837 -33633937333439666431333563323364313664666237623764303737363963393665373237313132 -33316664323162643566323261326638643164653639333438623064643262373761383463313565 -66636433313432636366333664306161646131303831383463656132333563363134333564356363 -37613235353139353539316332646439613338623232343435323436336230303630393536663436 -34313764373439323737333761346436636266313363356533343264663831376537386138396338 -64663730313764626634343064333965346464366236326561353365353664366463353637393531 -61363532393038626631646434653933343532373430646165646135636166353066373765323235 -31323634653439316433616435623665376139613736643962323730666666316335323161666239 -30613739643737303835343563636236363565633031363737633636633433323661333032626633 -32333338323561613163393532313764323566363931653732333261653061333263313832343539 -39663438323730393061636561373935366635613531336264393261663461336532616333653762 -32306163333264336665303766633963666666313230363639363063336166396334613938643466 -62353530663032363932396165303861333461306231613430376561663536316537623366626665 -35306533373166306464623334366163386164393666663461333635613031396337386666323666 -30666435323632363238623837356139623031323765626331613139373237396161633865303739 -35653361323261613065396463663938653062376438666462666635373162336139323233303764 -38396136343365346562653933373139633030336638316535643738393036303536623231306233 -34663931366164376234376331633737613532313964633733363334306634326566626266313164 -31373133363832346462323134306634373066666266646639623832643235633432323164643934 -34353137396462313338656437653335623132623633613961656261316164303861306134653764 -61613333646539316633383166383464303830383933663765656339663836616164376135636462 -37396466616336636437383866313930633162363732623532393033366236653531396363656439 -30333433353839353861616239656537363633626333393330346666303766653962396630353238 -32373639383639333763643239393036343037383065666661643835336363333865376565663566 -30386236626362343036356136383565613837383665636463363934376134316438643561353536 -37366461393635383933633638663333666330623634363534306465363065643064333939383931 -32303366356130383135626130626335613131663966353065333464303832653535646363636566 -34386438383565663733366662373931353732393932343565646235333038313736303939616230 -34653239353832326161303531336362343765373431383032366239623135623165653637393339 -39623164633532613436353362626664356465386531643339326430623833353531 +39663730306430623937356261353934333235333538613465613362653666663861616461396561 +3161333136373463666431613030316338613662613832340a353933336234383034653461626339 +64616234363562373333646639663563613138393132373134343632353565306235656534626330 +6661393432353366310a363234333565323234666362636361303934613734356162366631633561 +63376665396539363666356163623662663864353531343535616266363132323333663333346433 +62393932373937646630656166353763323435323132623535343536323662396236393037616664 +62623466663035656263393863666632666339663765656530323730656239653137343039383866 +38393837346365353839616235383632303931656138626130326232303730666530633330313235 +35326139376363633264343561343363666364323030666336316232656538666166396362333264 +64316338653835356234373231346435383961383930383938363336663835633661663739313735 +31353235306138653931333036316438343563303430313365643165303365346461656634613261 +34636234373837653063623031653535343634306133373061363566646538643431366139653033 +61373966323239383663626134613330363131316133383261383764303732616132633531343337 +39373731303366336430343333386265376163656461626237663866373239623161636236643361 +39653038636233343234343539666339353735366331333031633939646337373762346263323837 +64333335616534626635363030353438613437336165636334613837333262326538366339363565 +63316163353636616637323337396561623063666662326331396330326364376532313066616466 +36343833663833613764653530616564636366326139346137386535373130633139363839333137 +64646534373330623133616261626563376465653863356363366263666161353434336134336439 +39303533376464616466653232666235366463313562323464636136376231323363656534616463 +34666261336537386562303536646263396164656362353631373333613762653231643063633566 +30356432346165666233386135616434343131616663346639346366656432303265373132316366 +34313863393231303033646431626332316664656234666530366663323038653736346366313838 +62346533383063353531333937613431363661666630623062623666373562353836353230356237 +31393136303938363863626365346464303738376233616264343637383766663739326630326366 +31613537353032356137643236653964623735393462383636643461643335306536643134373137 +33623335393635383636356236383339316233393834636538386239396638336361613738383231 +39306163376637666665633832623136653731303836363634336430346466393166663035323165 +61393264616139613139643566646439623335323562336264376639326464313433306230623866 +32626231363539666332346634303961313662376665653764306537373432613332663063333633 +35373234313639623139393134356336663562383237643038333034626162643137666636663061 +36663533386662316639316537666330653034643536613066643862313531336230306464663431 +66393536303863313538623637656138666261303635613661366437306538623136376233376238 +63653339346430666233613661643231356461336131643631366466336631623336336130366664 +64343263333938643737666566643165346130346231326565613134356566393463346634653737 +35353937343666393964666264626366393234313138623237383636643038393530393136656131 +63383062653066376238626135306332633035383939653730356537643761336433663338303133 +35623264373066303766653736613465353266653030373063313438323632383861653430633431 +31323262373337356631613665636339653831626238616533363466323133366631313031656630 +30636237623731366665663235663261653263656262643861313239343761326266663061373362 +37353331646639386137633766623066303463643861373766613262633431616532396462303038 +66366266653335393064353532366166393465313238656366396362313062303131343238386138 +65373561306336633235393164303831623236366531343363636530396433613233656633643032 +32396262376331653862356331363830303438373565323835336537653234633261346562323736 +30613062393465336462643963636231303363646266336236376265666132323464616332396564 +36343264656565363230336466393866646635343635383965393639396533333663653635376134 +66303133313337383861656435623931386565333965393636343437346162643238623933326266 +34316238316536353738616464363163333833326461643038343065623433613835353666393834 +31623636653031633834366238313661636261396430643433623336336265313261343633666338 +64383430373462623333333834643930616339376661336432316632383831336537303236353836 +66653666343964373736363134326364383962616339663765623032356138323130306661623832 +32613465303139396136663530383935396461656231313061353639613933643037313939353736 +63663136636466343337306533383830343564626334383335616362333530396464653035616639 +36643464653736386261626534336562303334306338303437333637396135626665633235663564 +61336364393334313764306262366666346635653061343562666232653266386134373833333737 +31616262343362303138323963363663326237633030623665613661633731323930633636643630 +61306465343366643832316162636436373735343331636161616137366534323565623332386431 +6633373537356463313935663061653333336566343131303430 diff --git a/deployer/roles/build/templates/synapse/docker-compose.yml.j2 b/deployer/roles/build/templates/synapse/docker-compose.yml.j2 index 4f462cb..5a8a37e 100644 --- a/deployer/roles/build/templates/synapse/docker-compose.yml.j2 +++ b/deployer/roles/build/templates/synapse/docker-compose.yml.j2 @@ -19,16 +19,14 @@ services: networks: net: ipv4_address: "{{ site.subnet_site_ip }}" - # db: - # image: postgres:latest - # environment: - # - POSTGRES_USER="{{ site.postgres_username }}" - # - POSTGRES_PASSWORD="{{ site.postgres_password }}" - # # ensure the database gets created correctly - # # https://github.com/matrix-org/synapse/blob/master/docs/postgres.md#set-up-database - # - POSTGRES_INITDB_ARGS=--encoding=UTF-8 --lc-collate=C --lc-ctype=C - # volumes: - # - "{{ site_data_path }}/db:/var/lib/postgresql/data" + + turn: + image: coturn/coturn:latest + restart: unless-stopped + # TODO + # network_mode == host + # give it the turnserver.conf + # Anything else? networks: net: diff --git a/deployer/roles/build/templates/synapse/turnserver.conf.j2 b/deployer/roles/build/templates/synapse/turnserver.conf.j2 new file mode 100644 index 0000000..61ac3eb --- /dev/null +++ b/deployer/roles/build/templates/synapse/turnserver.conf.j2 @@ -0,0 +1,38 @@ +#jinja2: lstrip_blocks: "True" + +# Adapted from +# https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/master/roles/matrix-coturn/templates/turnserver.conf.j2 +# in Jan. 2021 + +use-auth-secret +static-auth-secret={{ site.coturn.static_auth_secret }} +realm=turn.{{ site.url }} + +min-port={{ site.coturn.min_port }} +max-port={{ site.coturn.min_port }} +external-ip={{ site.coturn.external_ip }} + +log-file=stdout +pidfile=/var/tmp/turnserver.pid +userdb=/var/tmp/turnserver.db + +no-cli +no-tls +no-dtls + +prod +no-tcp-relay + +{% if site.coturn.user_quota != None %} +user-quota={{ site.coturn.user_quota }} +{% endif %} +{% if site.coturn.total_quota != None %} +total-quota={{ site.coturn.total_quota }} +{% endif %} + +{% for ip_range in matrix_coturn_denied_peer_ips %} +denied-peer-ip={{ ip_range }} +{% endfor %} +{% for ip_range in matrix_coturn_allowed_peer_ips %} +allowed-peer-ip={{ ip_range }} +{% endfor %} \ No newline at end of file