Skip to main content
Version: DEV

Provisioning

Provisioning via JSON files

PILOS provides a command to provision servers, server pools, room types, roles, users and settings with JSON files.

Example

docker compose exec app pilos-cli provision:all provisioning_data.json

The provided file must be readable inside the container. You can place it in a mounted folder or copy it into the container. Remember that this file contains sensitive data - you probably want to delete it after provisioning.

An example JSON file showcasing most capabilities can be found in test data.

The following sections form a complete specification of the file format.

Top-level sections

FieldTypeDefaultDescription
serversobject{}Creating and/or wiping of servers
server_poolsobject{}Creating and/or wiping of server pools
room_typesobject{}Creating and/or wiping of room types
rolesobject{}Creating and/or wiping of user roles
usersobject{}Creating and/or wiping of users
settingsobject{}Configuration of application settings

Section servers

FieldTypeDefaultDescription
wipebooleanfalseIf set to true, all existing servers are deleted before creating new ones.
add[object][]A list of new servers to create.

All items in the add array have the following format:

FieldTypeDescription
namestringServer name shown in frontend
descriptionstringServer description shown in frontend
endpointstringBBB worker API URL
secretstringBBB worker API secret
strengthintegerServer strength [1 .. 10]
statusstringServer status [enabled, disabled]

All fields are required and do not have default values.

Section server_pools

FieldTypeDefaultDescription
wipebooleanfalseIf set to true, all existing server pools are deleted before creating new ones.
add[object][]A list of new server pools to create.

All items in the add array have the following format:

FieldTypeDescription
namestringServer pool name shown in frontend
descriptionstringServer pool description shown in frontend
servers[string]Names of all servers belonging to the pool

All fields are required and do not have default values.

Section room_types

FieldTypeDefaultDescription
wipebooleanfalseIf set to true, all existing room types are deleted before creating new ones.
add[object][]A list of new room types to create.

All items in the add array have the following format:

FieldTypeDescription
namestringRoom type name shown in frontend
descriptionstringRoom type description shown in frontend
colorstringColor used for the room type in frontend, given as hex-string, e.g. #f00baa
server_poolstringName of the server pool to use for meetings

All fields are required and do not have default values.

Section roles

FieldTypeDefaultDescription
wipebooleanfalseIf set to true, all existing roles are deleted before creating new ones.
add[object][]A list of new roles to create.

All items in the add array have the following format:

FieldTypeDescription
namestringRole name shown in frontend
permissionsobjectPermissions granted to users

All fields are required and do not have default values. The permissions object has the following format:

FieldTypeDefaultAvailable permissions
rooms[string][]viewAll, create, manage
meetings[string][]viewAny
settings[string][]viewAny, update
users[string][]viewAny, view, update, create, delete, updateOwnAttributes
roles[string][]viewAny, view, update, create, delete
roomTypes[string][]view, update, create, delete
servers[string][]viewAny, view, update, create, delete
serverPools[string][]viewAny, view, update, create, delete

Section users

FieldTypeDefaultDescription
wipebooleanfalseIf set to true, all existing users are deleted before creating new ones.
add[object][]A list of new users to create.

All items in the add array have the following format:

FieldTypeDescription
firstnamestringFirst name
lastnamestringLast name
emailstringEmail address
passwordstringPassword (plain text!)
authenticatorstringOne of [local, ldap, shibboleth]
roles[string]List of role names
localestringOne of the ENABLED_LOCALES in .env; see User Interface and Localization Configuration
timezonestringTimezone, e.g. Europe/Berlin

All fields are required and do not have default values.

Section settings

FieldTypeDefaultDescription
generalobject{}General application settings
recordingobject{}Recording settings
roomobject{}Room settings
userobject{}User settings

Subsection general

FieldTypeDescription
namestringName of the application
pagination_page_sizeintegerPagination page size
default_timezonestringDefault timezone
help_urlstringURL to the help page
legal_notice_urlstringURL to the legal notice
privacy_policy_urlstringURL to the privacy policy
toast_lifetimeintegerDisplay duration of pop-up messages
no_welcome_pagebooleanHide welcome page

Subsection recording

FieldTypeDescription
server_usage_enabledbooleanRecord server utilisation
server_usage_retention_periodintegerRetention period of the server utilisation in days
meeting_usage_enabledbooleanRecord utilisation of meetings
meeting_usage_retention_periodintegerRetention period of the meeting utilisation in days
attendance_retention_periodintegerRetention period of the attendance logging in days
recording_retention_periodintegerStorage duration of the recordings in days

Subsection room

FieldTypeDescription
limitintegerRoom limit
token_expirationintegerExpiration time for personalized room links
auto_delete_inactive_periodintegerPeriod until inactive rooms are deleted
auto_delete_never_used_periodintegerPeriod until never used rooms are deleted
auto_delete_deadline_periodintegerDeadline for deletion
file_terms_of_usestringTerms of use for file download

Subsection user

FieldTypeDescription
password_change_allowedbooleanGive local users the possibility to change their password