I remember how tricky the Jitsi setup was, at the time. When we used it, system load for my small server jumped up to seven or eight. And in the end, we all ended up on Discord. But with Discord showing annoying ads even to paying customers, I'm taking another look at the alternatives.
From my point of view, Galène has the benefits of requiring just a single binary for installation. Sure, deployment is trickier, but in typical Go fashion, you get a huge binary that you copy over to the server and you're essentially ready to test it.
So what did I do?
I created a system user `galene` with home directory `/home/galene`. There is no `galene` group.
This is where the binary lives.
I copied the example `galene.service` from the website and adapted it (by changing `Group=galene` to `Group=nogroup`).
My Galène installation does not live behind a reverse proxy, so there is no logging of bots trying to access it. Perhaps a problem to solve for later.
I had to add a bunch of lines to my `/etc/apache2/hook.sh` that runs whenever `mod_md` gets new certificates. When that happens, Galène also gets a copy, with permissions set appropriately. And it gets restarted.
I created a JSON file to define a single group, making me the operator (with a password), and allowing wildcard users (all sharing the same password). I handed out this password on the IRC channel we use to chat and hang out.
Should we end up with two dozen people or more, then I'll write a web app to administrate users and groups via the web. An API to do this already exists. Or if I'm feeling evil, I'll add the functionality to administer them to an IRC bot. 😂
#Jitsi #Galène #Discord #Administration
#!/bin/sh # -*- sh -*- : <<=cut =head1 NAME galene - Munin plugin to monitor number of rooms and clients on a Galène server. =head1 USAGE This plugin connects to a Galène server. It requires curl and jq. =head1 CONFIGURATION There is no default configuration. This is an example: [galene] env.host campaignwiki.org env.port 8443 env.user root env.password secret =head1 AUTHOR Alex Schroeder =head1 LICENSE CC0, dedicated to the public domain =head1 MAGIC MARKERS #%# family=manual =cut . "$MUNIN_LIBDIR/plugins/plugin.sh" if [ "$1" = "autoconf" ]; then if [ -z "$host" ]; then echo "no (Configuration required)" exit 0 fi echo yes exit 0 fi if [ -z "$host" ] || [ -z "$port" ] || [ -z "$user" ] || [ -z "$password" ]; then echo "Configuration required" exit 1 fi if [ "$1" = "config" ]; then echo "graph_title Galene status - $host:$port" echo "graph_category chat" echo "graph_order clients channels" echo "graph_args -l 0" echo "clients.label clients" echo "clients.draw LINE2" echo "channels.label channels" echo "channels.draw LINE2" exit 0 fi data=$(curl --silent --user "$user:$password" "https://$host:$port/galene-api/v0/.stats") channels=$(echo "$data" | jq '.|length') echo "channels.value $channels" clients=$(echo "$data" | jq '[.[].clients|length]|add') echo "clients.value $clients"