Configuring OpenTalk Orchestrator
The OpenTalk Orchestrator can be configured using environment variables and a configuration file. Environment variables take precedence over the configuration file.
Part of the orchestrator configuration is done in the OpenTalk Controller configuration and in the
orchestrator sections of the proxied services, see Deployment.
Environment variables
Settings in the configuration file can be overridden by environment variables. Nested fields are separated by two
underscores __. The pattern looks like this:
OT_ORCHESTRATOR_<field>__<nested-field>…
Arrays
Some configuration options accept multiple values.
OT_ORCHESTRATOR_SERVICES__KEYSexpects a comma-separated list where key id and secret are separated by a colon:roomserver:secret,recorder:secret
OT_ORCHESTRATOR_HTTP__API_KEYSexpects a comma-separated list where key id and secret are separated by a colon:orchestrator:secret,another_key:secret2
Configuration file location
The path of the configuration file can be passed with the --config argument. Without it, the orchestrator uses the
first file it finds in these locations:
orchestrator.tomlin the current working directory<XDG_CONFIG_HOME>/opentalk/orchestrator.toml(whereXDG_CONFIG_HOMEis usually~/.config)/etc/opentalk/orchestrator.toml
Sections in the configuration file
Example configuration file
This file can be found under example/orchestrator.toml.
# SPDX-FileCopyrightText: OpenTalk Team <mail@opentalk.eu>
# SPDX-License-Identifier: EUPL-1.2
[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 port to bind the HTTP server to (defaults to 11222)
#port = 11222
# The publicly reachable URL of the orchestrator.
#
# Clients reach both the RoomServer signaling and the LiveKit endpoints through this URL. The
# orchestrator injects it as the signaling URL in RoomServer token responses. The LiveKit URL
# configured in the controller (`roomserver.modules.livekit.public_url`) needs to point to
# `<public_url>livekit/`.
#
# When the orchestrator is served under a sub path, include that path here and terminate it with a
# trailing slash, for example `https://example.com/orchestrator/`.
public_url = "http://localhost:11222"
# The api keys for requests towards the orchestrator
#
# When setting the api keys through the environment, a string notation ("<key_id>:<key_secret>") must be used:
#
# OT_ORCHESTRATOR_HTTP__API_KEYS="orchestrator:secret,another_key:secret2"
#
api_keys = [{ id = "orchestrator", secret = "secret" }]
#[monitoring]
# Monitoring settings are optional and disabled by default
#
# When enabled, the service probe endpoints /health and /ready are available under the configured monitoring address.
# These endpoints can be used to monitor the health of the orchestrator.
# The address of the monitoring endpoint (defaults to 0.0.0.0)
#address = "0.0.0.0"
# The port of the monitoring endpoint (defaults to 11221)
#port = 11221
[services]
# Service settings
# The api keys that will be used to authorize requests towards orchestrated services.
#
# When a service instance attempts to register at the orchestrator, the service needs to include its configured api key
# ids in the registration request. A service can only be accepted when the orchestrator knows at least one of the api
# keys that were sent by the service.
#
# When setting the api keys through the environment, a string notation ("<key_id>:<key_secret>") must be used:
#
# OT_ORCHESTRATOR_SERVICES__KEYS="roomserver:secret,recorder:secret2"
#
# A single key:
keys = [{ id = "roomserver", secret = "secret" }]
# Multiple keys:
#keys = [
# { id = "roomserver", secret = "secret" },
# { id = "recorder", secret = "secret" },
#]