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 (defaulttrue).[reports.typst]withpackages_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"