July 7, 2025
A little background
Direct from its website:
Galene (or Galène) is a videoconference server (an “SFU”) that is easy to deploy and that requires very moderate server resources. It was originally designed for lectures, conferences and student tutorials, but later turned out to be useful for traditional meetings. Galene has been used in production at two major universities (Université de Paris and Sorbonne Université) for lectures, practicals, seminars, and for staff meetings
Requirements
- A recent FreeBSD install (version 14.3 at the time of this writing)
- ZFS optional, but highly recommended
Base FreeBSD Setup
First, ensure you have the latest FreeBSD system updates installed. Use the following command (as root, indicated by the leading #):
# freebsd-update fetch install
Next, update your pkg repository to use the latest
branch. Edit /etc/pkg/Freebsd.conf
and change the string quarterly
to latest
. Run the following command to get the latest pkg database:
# pkg update
Galene Installation
Before we install Galene from the package, we add a couple of ZFS datasets to hold the videoconferencing data in /var/db/galene
. This step is optional and Galene works just as well on UFS2. We use ZFS here as it offers extra features that may come in handy when running Galene in production.
Let’s say our pool is called videostar
. Let’s create the datasets under /var/db
for Galene.
Create ZFS datasets for Galene
# zfs create -p videostar/var/db/galene/data
# zfs create videostar/var/db/galene/groups
# zfs create videostar/var/db/galene/recordings
With these commands, we created the galene subdirectory with a separate dataset and below, three more datasets: recordings, data, and groups. We will populate these shortly.
Package Installation
FreeBSD’s package collection is easy to use and contains a ready-made Galene package. We install it next:
# pkg install galene
During the installation, the directories under /var/db/galene
would have been created under /var/db
. Since we created them with ZFS datasets, managing them became more flexible. For example, we can set a quota on the recordings
dataset. These tend to grow big in size for long videoconferences. The quota prevents Galene from filling up the remaining disk space in the pool.
Galene Configuration File
Before we can start Galene for the first time, we need to define what groups are available. These form the videoconferencing rooms and let multiple users join a single room or hold conferences in different rooms without interfering with one another. Also, users define what kind of permissions they have and their passwords.
A basic example file in /var/db/galene/groups
looks like this:
{
"users":
{
"bob":
{
"password": "secret",
"permissions": "op"
}
}
}
Here, we define a user called bob
, a password and operator permissions in the room. The room itself is called videostar
.
Adding a valid SSL certificate
Although we have not added it to the Ansible playbook, it’s relatively simple to add a valid SSL certificate, from letsencrypt.org. We’ll leave that as an exercise for you, dear reader. In short:
pkg install py311-certbot
certbot certonly -d YOURHOSTSFQDN --standalone
cp /usr/local/etc/letsencrypt/live/meet.fortasse.cloud/fullchain.pem /var/db/galene/data/cert.pem
cp /usr/local/etc/letsencrypt/live/meet.fortasse.cloud/privkey.pem /var/db/galene/data/key.pem
chown galene:galene /var/db/galene/data/*
service galene restart
Galene Startup Configuration
The galene package installed along with the binaries also the startup files in /usr/local/etc/rc.d
. To start Galene when the system boots, add the following line to /etc/rc.conf
using service
:
# service galene enable
Start the service afterwards by running:
# service galene start
Check that the service is running:
# service galene status
A message saying that Galene is running should be displayed along with a process ID (PID). If not, then re-trace the steps above and check /var/log/messages
for additional hints.
Testing Galene
We can find the PID of the running Galene process in the output of sockstat -l
(listening sockets):
# sockstat -l|grep galene
In the same line, you can find the default port 8443 that Galene is listening on for incoming connections. Assuming our hostname is videostar.example
, we can enter this in our browser URL bar: https://videostar.example:8443
A webpage opens asking you which group you want to join. Enter videostar
(the one from our configuration above) and click the Join
button. On the next page, enter the username and password from the configuration file. Select what kind of devices (camera, microphone) to allow and then click the Connect
button. If all went well, you are now in videoconferencing room with full permissions. Give that url to other people after adding more users in the videostar.json
file and restarting the galene process. Congratulations and happy video conferencing!

We’re dropping new posts — and videos — for technical topics regularly. So make sure you’re subscribed to the YouTube channel and following this feed in your favorite RSS reader. There’s also the newsletter, if you’d like to receive updates by email.
We’d like this content series to be interactive too — so what would you like to see us cover? What FreeBSD questions can we help you tackle? Get in touch with your ideas.
Contributed by Benedict Reuschling