Configuring OpenTalk RoomServer
The OpenTalk RoomServer can be configured using environment variables and a configuration file. Environment variables take precedence over the configuration file.
Environment variables
Settings in the configuration file can be overwritten by environment variables,
nested fields are separated by two underscores __. The pattern looks like
this:
OPENTALK_ROOM_<field>__<nested-field>…
Arrays
Some configuration options allow to configure multiple values.
OPENTALK_ROOM_METRICS__ALLOWLISTexpects a coma separated list172.0.0.0/8,192.168.0.0/16
OPENTALK_ROOM_HTTP__API_KEYSexpects a coma separated list where key and secret are separated by a colon:roomserver:secret1,recorder:secret2
Sections in the configuration file
Example configuration file
This file can be found in the source code distribution under example/roomserver.toml
[http]
# HTTP server settings
# The IPv4/IPv6 address to bind the HTTP server to.
# Binds to all interfaces by default:
#address = "0.0.0.0"
# All IPv6 interfaces:
#address = "::"
# Localhost only:
#address = "127.0.0.1"
#address = "::1"
# The URL of the roomserver that is reachable by internal services
# service_url = "http://localhost:13333"
# The publicly reachable URL of this server
public_url = "http://localhost:11333"
# The api keys for internal service endpoints
#
# The roomserver can have multiple api keys configured. An api key can be configured as string ("<key_id>:<key_secret>")
# or as key/value pair ({id = "<key_id>", secret = "<key_secret>"}).
api_keys = [{ id = "roomserver", secret = "secret" }]
# The port to bind the HTTP server to (defaults to 11333)
#port = 11333
# Disable the OpenAPI endpoint under `/docs/openapi.json` and the corresponding
# swagger endpoint under `/swagger`.
#enable_openapi = false
[controller]
# Controller settings
#
# If not configured, assets and module resources will be saved in memory.
# The URL of the controller
url = "http://localhost:8000"
# The api key for the controllers service API
api_key = { "id" = "controller", "secret" = "secret" }
[monitoring]
# Monitoring settings
# Monitoring is optional and disabled by default
#addr = "0.0.0.0"
#port = 11411
[metrics]
# Metrics settings
# Metrics is optional and disabled by default
#port = 11412
# IP addresses allowed to access the metrics endpoint
#allowlist = []
# Allow access from localhost
#allowlist = ["127.0.0.0/24", "::ffff:0:0/96"]
#[tracing]
# Tracing settings
# Tracing is optional and disabled by default
#otlp_tracing_endpoint = "http://localhost:4317"
# Conference settings are optional
#[conference]
# Conference settings
# Used to derive participant ids from device secrets.
# A random salt is generated at startup when not set. This value must be kept secret.
# signaling_salt = "random string at least 24 characters long"
# [defaults]
# When true, participants can't share their screens unless permission is granted by a moderator.
# Moderators can always share their screen.
# screen_share_requires_permission = true
#[reports.typst]
# The location where typst looks for packages.
#packages_path = "/usr/share/typst/packages"
# Optional orchestrator configuration
#[orchestrator]
# If configured, the roomserver will register at the orchestrator when started.
#
# If the `http.service_url` is configured, the roomserver will include that URL in the orchestrators registration
# request. If not, the roomserver will only provide its `http.port` in the registration and the orchestrator must build
# the roomservers URL by using the received websocket address and the provided port.
#
# The API key of the orchestrator
#api_key = { id = "orchestrator", secret = "secret" }
# The orchestrator URL
#url = "http://127.0.0.1:11222"
# Internal settings are optional and use default values if not set.
# [internal]
# The number of rooms to modify in parallel when receiving a storage quota POST request.
# Higher numbers will reduce the time it takes to update the storage quota for all rooms,
# but will increase server load while the requests are running.
# parallel_storage_quota_requests = 5