Skip to content

Updating to OpenTalk Controller v0.33.0

New optional service_api_keys under [http]

The controller can now serve internal service APIs that are currently used exclusively by the roomserver. When a roomserver is configured, this setting is mandatory:

[http]
service_api_keys = [{ "id" = "roomserver", "secret" = "secret" }]

Roomserver api_token replaced by api_key

The roomserver authentication changed from a single token to an id/secret pair.

Previous:

[roomserver]
url = "http://localhost:11333"
api_token = "secret"

New:

[roomserver]
url = "http://localhost:11333"
api_key = { id = "controller", secret = "secret" }

New roomserver rate limiting sections

Two optional rate limiting configurations were added for the roomserver:

# Websocket rate limiting
#[roomserver.websocket_rate_limit]
#disabled = false
#tokens_per_second = 10
#token_bucket_size = 30

# Chat rate limiting. Limits the number of chat messages a user can send.
#[roomserver.modules.chat.rate_limit]
# The number of sustained messages per second.
#tokens_per_second = 3
# The burst size. A user can send 10 messages within a second without being throttled.
#token_bucket_size = 10
# If 80% of the token bucket is used, the RoomServer will signal the frontend to slow down.
# The frontend will enforce a slight delay before another message can be sent.
#slow_down_threshold = 0.8

[etcd] is now optional

The [etcd] section is no longer part of the base configuration and can be omitted entirely if not used.

New optional settings

  • call_in.mask_unmapped_numbers — mask unmapped phone numbers to protect privacy (default true).
  • [reports.typst] with packages_path — the location where typst looks for packages.

PDF generation with typst

The RoomServer uses typst to generate PDFs. For this, a specific set of typst packages are required. These packages are already included in the docker image, but need to be installed manually when executing the RoomServer/Controller natively. The required packages can be copied out of our base image, that contains them using the following script:

#!/usr/bin/env bash

# pull the image with the typst packages
docker pull git.opentalk.dev:5050/opentalk/backend/containers/typst-plugins:scratch-dev
# create a new container
# sh is necessary because creating containers without entry point is not possible
CONTAINER_NAME=typst-plugins
docker create --name "$CONTAINER_NAME" git.opentalk.dev:5050/opentalk/backend/containers/typst-plugins:scratch-dev sh >/dev/null 2>&1 || true
# create the typst package directory
TYPST_DIR=${XDG_CACHE_HOME:-$HOME/.cache}/typst/packages/preview/
mkdir -p "$TYPST_DIR"
# remove existing package
rm -r "$TYPST_DIR/linguify" >/dev/null 2>&1 || true
# copy the typst packages from the container
docker cp typst-plugins:/usr/share/typst/packages/preview/linguify/ "$TYPST_DIR"
# delete the container
docker container rm "$CONTAINER_NAME"