Skip to content

How to run TrueConf Server in a Docker container

Author10/23/26Writing DateAbout 19 minReading TimeServer InstallationCategoryAdministrationDeploymentTag

TrueConf Server video conferencing platform can be installed both on Windows OS and on Linux-family operating systems (Debian, CentOS Stream). For even more convenient deployment you can use our Docker container that already contains TrueConf Server. The Docker container is available in a public repository, follow this link to download:

https://hub.docker.com/r/trueconf/trueconf-server

If you are using other containers and managing them via Docker Compose, do not include TrueConf Server container management in your YAML file. Restarting Compose with the up / down commands will cause the server license to be invalidated (because the container is recreated). Therefore, either run TrueConf Server separately in a container and manage it outside of Compose, or restart Compose using the start / stop commands instead:

docker compose start

docker compose stop

What is Docker?

Docker is software package designed for delivering applications to physical and virtual machines and running these applications in an isolated environment (so-called container). In its turn, the container is created from the image, which contains packaged software and all the necessary dependencies. The machine where you installed the docker engine and the environment where your containers operate is called host (e.g. your computer).

A number of popular images are hosted in public repositories on the Docker Hub official portal.

This way of software deployment is often used thanks to its versatility, lower system resources usage, quick and easy launch, simple maintenance and rich database of publicly available images. Additionally, containers are independent and isolated from each other.

This article shows how to install Docker on Debian 13 and run TrueConf Server container.

If you want to learn how to install Docker on Windows and macOS, check out the official guide.

In order to run the following commands you should have sudo app, while user’s name has to belong to the respective group. If you’d like to check whether you have sudo installed, please run sudo -V command. If you don’t have sudo by default, you can install it by using apt install sudo (it should be run under the root account). To add another user with user login to the sudo group, please run sudo usermod -a -G sudo user. You should also add this user to the docker group as shown in the official guide.

Step 1. Docker installation

In order to install Docker on Debian from the official repository you should run the following commands in your console:

  • Install necessary software package to work with the repositories via HTTPS:

    sudo apt update && sudo apt install -yq apt-transport-https ca-certificates curl gnupg lsb-release
  • Import official Docker GPG key:

    curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
  • Use the following command to set up the stable repository:

    echo \
      "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian \
      $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
  • Install Docker and all the relevant packages:

    sudo apt update && sudo apt install -yq docker-ce docker-ce-cli containerd.io
  • Verify that the installation has been successful:

    sudo docker run hello-world

This command downloads a test image, opens the image in an isolated container, displays relevant information in the terminal console and stops the container automatically.

Step 2. Downloading and running TrueConf Server container

In order to create and run TrueConf Server container from an image automatically, the docker run command is used. If you don’t have image file in your system it will be downloaded automatically from the public repository:

sudo docker run [OPTIONS] trueconf/trueconf-server:stable

where [OPTIONS] are additional parameters. For instance, a command which is run the first time:

sudo docker run -d -p 80:80 -p 443:443 -p 4307:4307 -p 4310:4310 -e ADMIN_USER=tc_admin -e ADMIN_PASSWORD=12345 -v /home/$USER/trueconf/server/lib:/opt/trueconf/server/var/lib trueconf/trueconf-server:stable --name vcs_server

downloads TrueConf Server image, then creates and runs the container in the background, and returns control of the terminal to the user. Meanwhile, all the necessary ports for TrueConf Server operation will be open. The control panel access is given to the admin with username tc_admin and password 12345, while TrueConf Server working directory will be mounted to the host directory by the path /home/$USER/trueconf/server. This user (admin in our example) will not be linked to the users of the host OS. So, it can have any login data. This user will be created in the container and will be added as the administrator with full access to the control panel.

Below we will review some of the used parameters which we can combine with the standard Docker options described in the official guide. For instance, you can enter key --name in order to give name to the container for more convenient usage (previously we set the container name --name vcs_server, this name will be used in later examples).

$USER is an environment variable in Linux distributions; when used in commands, it’s automatically replaced with the current user’s login in the system.

Host network connection (--network=host)

In order to establish the container connection with the network run the command --network=host. It allows you to use the host network connection.

If you have specified this parameter, it will not be necessary to configure port forwarding described below. However, you have to make sure that the required ports are opened on the host machine, at least 80, 443, and 4307.

Port forwarding (-p [host_port]:[container_port]/[protocol])

Binding of the host machine port [host_port] to port [container_port] of the container using [protocol] (if not specified, tcp is used by default). Port ranges are specified in the same way, e.g. -p 53000-55000:53000-55000/udp.

It is required to forward ports mandatory for TrueConf Server: 80, 443, 4307.

If you need to provide access for TrueConf Server additional ports, (e.g. for WebRTC), you should also specify them:

sudo docker run -d -p 80:80 -p 443:443 -p 4307:4307 -p 4310:4310 -p 53000-55000:53000-55000/udp -e ADMIN_USER=tc_admin -e ADMIN_PASSWORD=12345 -v /home/$USER/trueconf/server/lib:/opt/trueconf/server/var/lib trueconf/trueconf-server:stable --name vcs_server

Setting environment variables (-e [variable]=[value])

Setting environment variables for the container. You can set:

  • -e ADMIN_USER=tc_admin -e ADMIN_PASSWORD=password – creates a TrueConf Server admin account with login tc_admin and password password inside the container. Please note that this user is not related to host OS users, which is why you can use any authorization data.

  • -e INIT_DB=true – creates a database cluster for initial use in the force mode. The database is mounted on the host volume. This option erases all the previous TrueConf Server settings and data such as chat history, registration information, user and group list, conferences profiles, etc. Only video conference recordings will be saved, however they won’t be displayed in the control panel. This action is irreversible, use this option only if you are sure that it is necessary to clear the database and you have a backup copy!

  • -e ServerID=xxxx -e Serial=xxxx -e ServerName=xxxx – automatic TrueConf Server registration (if you have already received TrueConf Server registration key), where:

    • ServerID – Server ID

    • Serial – registration key without the first four or five characters, e.g., if your registration key is AAAAA-BBBB-CCCC-DDDD, you should enter BBBB-CCCC-DDDD

    • ServerName – domain name (FQDN) to get the access to the server, e.g., video.company.name.

  • -e ServiceAddress – external video conferencing server address to get access outside the corporate network. If it’s not set, it will be ServerName by default.

Mounting directories (-v [host_path]:[container_path])

Mounting [host_path] directory on the host to the [container_path] container directory. You can use a directory mounting to save log files and other generated server data to the [host_path] path. It includes such data as server settings, accounts, conferences list, recordings, SSL certificates and user scripts, etc. After the container stops, the data is saved and is available next time the container is running. If the [host_path] doesn’t exist on the host, it will be created automatically.

We will show available paths for mounting with examples below:

  • -v /home/$USER/trueconf/server/lib:/opt/trueconf/server/var/lib – saving all the files (including database files) in TrueConf Server working directory except for the log files in the /home/$USER/trueconf/server host directory.

    To make sure that the data and settings are not lost when the Docker container is updated, we recommend mounting and starting TrueConf Server at the path /opt/trueconf/server/var/lib.

  • -v /home/$USER/trueconf/server/log:/opt/trueconf/server/var/log – saves the log files that are generated only when the server is running. The log files will be saved in the host directory /home/$USER/trueconf/server/log.

  • -v /home/$USER/trueconf/server/etc/webmanager:/opt/trueconf/server/etc/webmanager – saves the following web manager settings on the host machine: SSL certificates, settings for the ports used to access the control panel, HTTPS port settings, and IP-based restrictions on the ability to control the server, etc. In order to apply new SSL certificates after the mounting, please open the TrueConf Server control panel, go to Web → HTTPS section and select Use custom certificate in the HTTPS Mode drop-down list. Click Test configuration and Apply to save changes.

  • -v /path/to/custom/scripts:/setup.d – command for /path/to/custom/scripts volume mounting with additional sh scripts files to be run at the container startup.

Please take two details into account when mounting the directory with the certificates:

  • TrueConf Server works only with the .crt format. So, the folder should include two files with the following extensions: .crt for the certificate file and .key for the key file. If your certificate is in a different format, convert into .crt as it is described in our article about HTTPS configuration.

  • The files should be named in the following way: the certificate — tls.crt, the key — tls.key.

Container name and ID

To use a number of commands, one has to know the name and identifier (ID) of the container. To get this information, run this command:

sudo docker ps -a

You will get the list of all containers and their statuses. To display only running containers, execute this command:

You will get the list of all containers and their statuses. To display only running containers, execute this command:

sudo docker ps

In the Docker documentation, you can find more examples of how the ps command can be used.

Stopping and restarting the container

To stop the container, please run the command:

sudo docker stop vcs_server

where vcs_server is the name or identifier of your container.

To restart the container that has been stopped earlier, please run the command:

sudo docker start vcs_server

One-time container running

For testing purposes you may need to run one-time container. This container will be deleted automatically after its stop. You can do it by running --rm.

Here’s how one-time container launch command with an admin’s login and password specified will look like:

sudo docker run --rm --network=host -e ADMIN_USER=tc_admin -e ADMIN_PASSWORD=12345 trueconf/trueconf-server:stable --name vcs_server

Step 3. Registering TrueConf Server

Open TrueConf Server control panel in the browser on any of your local network computers and enter the IP address of the server where the container is running.

If you didn’t register your TrueConf Server earlier by using -e key , you can register it via the TrueConf Server control panel. Open the control panel in the browser on any of your local network computers and enter the IP address of the server where the container is running.

Step 4. Adding TrueConf Server administrators

Before adding new users with admin access to the TrueConf Server control panel, please make sure that the container has been run, and its directory /opt/trueconf/server/var/lib has already been mounted to the /home/$USER/trueconf/server/lib directory on the host as shown before.

These are the three authorization files which have to be created by executing the following command:

  • passwd – a login and an encrypted password

  • tcadmins – a list of server administrator logins with full access

  • tcsecadmins – a list of server administrator logins with Security Admin access level.

Therefore, you first need to create them using the command:

sudo touch /home/$USER/trueconf/server/lib/docker/passwd /home/$USER/trueconf/server/lib/docker/tcadmins /home/$USER/trueconf/server/lib/docker/tcsecadmins

After that please follow the next steps:

  • Install apache2-utils utility package which contains htpasswd to manage secret passwords:

    sudo apt install -yq apache2-utils
  • Generate a password for a new login. The password will be saved as passwd file in the directory from which the terminal has been run:

    htpasswd -c -d -b passwd new_admin password

${**PARAM_NAME**:-**POSS_VAL**}

  • new_admin – a new admin’s login

  • password – password

  • Add content from the generated passwd file to the /home/$USER/trueconf/server/lib/docker/passwd file. The file is on the volume which is mounted on the host. For this purpose you can use a text editor such as vim or nano. Please run it under the root account or using sudo. You can also run the command:

    sudo bash -c 'cat passwd >> /home/$USER/trueconf/server/lib/docker/passwd'
  • Add the admin login you have created either to tcadmins or tcsecadmins file, depending on the level access you want to grant to the admin:

    sudo bash -c 'echo new_admin >> /home/$USER/trueconf/server/lib/docker/tcadmins'

The same command is used to change the password of an existing user. If the user does not exist, they will be created; otherwise, the password will be updated.

  • To check if you have added admins successfully, please visit TrueConf Server guest page, click Administrator login and sign in with a new account.

Step 5. Adding container to run automatically

In order to start TrueConf Server container automatically, e.g, after host machine reboot, please use --restart key. You can specify the key by running the update command:

sudo docker container update --restart always vcs_server

where vcs_server is the name or identifier of your container.

You can view information about the container which is running by using sudo docker pscommand.

Updating TrueConf Server in the container

For a correct update, please consider the following important rules:

  • from version 5.3.x you can update (in a single operation) only to 5.4.x;

  • the release version 5.5.6 can only be updated to from 5.4.x.

That is, to update, for example, from 5.3.10 to 5.5.8, you must first update to 5.4.9, and only then to 5.5.8. Each update stage is shown below.

The ability to update major versions (changing the 2nd digit, e.g. from 5.4.x to 5.5.8) depends on your support package, see here for details.

From 5.5.x to 5.5.8, the update is performed simply on top of the existing version, just like from 5.3 to 5.4 (see below).

For updating from TrueConf Server 5.3.x to 5.4.9 inclusive, or from 5.5.x to 5.5.8

If the container runs TrueConf Server 5.3.x (up to 5.3.10 inclusive), the update requires downloading the image with the 5.4.9 tag.

  • Download the image with the following command:

    sudo docker pull trueconf/trueconf-server:5.4.9.10019
  • Stop the current container with TrueConf Server as it is described before:

    sudo docker stop vcs_server
  • Run the new container from the image downloaded at step 1 (with the 5.4.9 tag), specifying the same directory mounting paths and administrator data that were used earlier, for example:

    sudo docker run -d --network=host -e ADMIN_USER=tc_admin -e ADMIN_PASSWORD=12345 -v /home/$USER/trueconf/server/lib:/opt/trueconf/server/var/lib trueconf/trueconf-server:5.4.9.10019

If everything started successfully, the previous container and image can be deleted as shown below.

For updating TrueConf Server from version 5.4.x to 5.5.8

If you need to update TrueConf Server from 5.4.x or 5.5.x to 5.5.8, you must first transfer the information from the database. This is due to the major database changes introduced in 5.5.8. Use the following commands:

  • Download the image of the release version with the stable tag:

    sudo docker pull trueconf/trueconf-server:stable
  • Open the terminal of the current (old) container with TrueConf Server:

    sudo docker exec -it vcs_server bash

    where vcs_server is the name or identifier of your container.

  • Create a backup of the TrueConf Server database:

    install -d -o postgres -g postgres /opt/trueconf/server/var/lib/database/backup
    su -s /bin/sh postgres --command='/opt/trueconf/server/bin/database/pg_dumpall -p 5444 -U postgres --globals-only -f /opt/trueconf/server/var/lib/database/backup/globals.sql'
    su -s /bin/sh postgres --command='/opt/trueconf/server/bin/database/pg_dump -p 5444 -U postgres -d tcs -Fd -f /opt/trueconf/server/var/lib/database/backup/tcs_db'
  • The backup will be saved in the mounted directory at the path [mounted_lib_path]/database/backup, where [mounted_lib_path] is the path specified when starting the container. Example of the backup directory path:

    /home/$USER/trueconf/server/lib/database/backup
  • Exit the container terminal:

    exit
  • Copy the database backup file to any convenient location, e.g. /home/$USER/backup:

    sudo cp -r /home/$USER/trueconf/server/lib/database/backup /home/$USER/backup
  • Create and start the container with the new TrueConf Server version using the command (specifying the same parameters as before, such as -e, -v, etc.) and add the new ones starting with -e INIT_DB=TRUE:

    sudo docker run -d --network=host -e ADMIN_USER=tc_admin -e ADMIN_PASSWORD=12345 -v /home/$USER/trueconf/server/lib:/opt/trueconf/server/var/lib -e INIT_DB=TRUE -e DUMP_PATH=/opt/backup -v /home/$USER/backup:/opt/backup trueconf/trueconf-server:stable --name vcs_server

    where /home/$USER/backup is the directory with the database backup file.

    Also, in addition to the database backup path, specify in the -v key the same directory mounting paths that were used earlier.

    Note that the additional parameters starting with -e INIT_DB=TRUE are only needed to restore the backup; afterwards, work with the container as usual.

  • Go to the server guest page at the IP address of the machine with the running container and make sure that the settings have been transferred. If everything started successfully, the previous container and image can be deleted as shown below.

Deleting the container and image

If you no longer need the container, you can delete it with the rm command:

sudo docker rm vcs_server

where vcs_server is the name or identifier of your container. The corresponding image will remain even if all containers are deleted. Besides, the directory which was used for mounting will also remain in the OS.

To delete a running container, add the key --force:

sudo docker rm --force vcs_server

To delete an image (e.g., if you have downloaded a new image and the old one is no longer needed):

  • Check the list of all images together with their tags and identifiers:

    sudo docker images
  • To delete the selected image, run the rmi command, for example:

    sudo docker rmi trueconf/trueconf-server:5.2.8.10213

    In this case, you will delete the image with the repository and tag trueconf/trueconf-server:5.2.8.10213. If this image no longer has any tags, it will also be deleted. To learn more about the use of this command, read the official Docker documentation.

  • Since the rmi command does not free up space on the OS storage, you will need to execute system prune command to delete unnecessary images and containers:

    sudo docker system prune -a

🆘 How to solve typical problems

The container does not start after update

Run the following command to view logs:

docker logs vcs_server

where vcs_server is the name or identifier of your container.

If you see a message about an incorrect version of Postgres, export the information from the database as shown for updating from the version 5.2.8 or above.