Galene
Galene is a video conferencing software like Jitsi Meet. The website for it can
be found at https://galene.org/
.
Install Golang and Git if you haven't already.
pkg_add go git
Add a login class to /etc/login.conf, make sure to use tabs for indentation, not spaces:
galene:\ :openfiles-cur=8182:\ :openfiles-max=8182:\ :openfiles=8182:\ :stacksize-cur=512M:\ :stacksize-max=512M:\ :maxproc-max=infinity:\ :maxproc-cur=8182:\ :tc=daemon:
Create a new user for Galene to run under and change to that user.
useradd -m -L galene _galene doas -u galene sh
Download and compile Galene:
git clone https://github.com/jech/galene cd galene CGO_ENABLED=0 go build -ldflags='-s -w'
Create your groups and configuration:
mkdir groups mkdir data vi data/config.json # replace meet.cowsrule.fyi with your domain { "users":{"cow": {"password":"yourpasswordhere", "permissions": "admin"}}, "proxyURL": "https://meet.cowsrule.fyi", "canonicalHost": "meet.cowsrule.fyi" } # if you are not already running a turn server, you can skip this step as galene will autostart one. vi data/ice-servers.json # replace turn.cowsrule.fyi with your domain and yourauthsecret with the auth secret in /etc/turnserver.conf [ { "urls": [ "turn:turn.cowsrule.fyi?transport=tcp" ], "username": "galene", "credential": "yourauthsecret", "credentialType": "hmac-sha1" } ]
Configuring groups: Groups are defined by files in the ./groups directory. The definition for the group called groupname is in the file groups/groupname.json; it does not contain the group name, which makes it easy to copy or link group definitions. You may use subdirectories: a file groups/teaching/networking.json defines a group called teaching/networking. Examples:
A typical group definition file looks like this:
{ "users":{ "jch": {"password":"1234", "permissions": "op"} }, "allow-recording": true, "auto-subgroups": true }
This defines a group with the operator (administrator) username jch and password 1234. The allow-recording entry says that the operator is allowed to record videos to disk, and the auto-subgroups entry says that subgroups will be created automatically. This particular group does not allow password login for ordinary users, and is suitable if you use invitations (see Stateful Tokens below) for ordinary users.
In order to allow password login for ordinary users, add password entries with the permission present:
{ "users":{ "jch": {"password": "1234", "permissions": "op"} "john": {"password": "secret", "permissions": "present"} } }
If the group is to be publicly accessible, you may allow logins with any username using the wildcard-user entry::
{ "users":{ "jch": {"password":"1234", "permissions": "op"} }, "wildcard-user": {"password": "1234", "permissions": "present"}, "public": true }
If you want to allow users to use any password, use a wildcard password:
{ "users":{ "jch": {"password":"1234", "permissions": "op"} }, "wildcard-user": {"password": {"type": "wildcard"}, "permissions": "present"}, "public": true }
Create a script to start Galene:
cat << EOF > ~/start.sh #!/bin/sh cd ~/galene while true; do ./galene -insecure -http :8444 done EOF
Start galene on boot:
crontab -e @reboot tmux new -d "ksh ~/start.sh"