1
Fork 0
galene/README

133 lines
4.2 KiB
Plaintext
Raw Normal View History

2020-05-29 17:49:23 +02:00
# Installation
2020-04-29 18:31:54 +02:00
Build the server binary:
CGO_ENABLED=0 go build -ldflags='-s -w'
Create a server certificate:
2020-05-03 15:09:02 +02:00
mkdir data
2020-04-29 18:31:54 +02:00
openssl req -newkey rsa:2048 -nodes -keyout data/key.pem -x509 -days 365 -out data/cert.pem
Set the server administrator's username and password (optional):
echo 'god:topsecret' > data/passwd
Configure the list of STUN and TURN servers (optional):
vi data/ice-servers.json
2020-04-29 18:31:54 +02:00
2020-05-03 15:09:02 +02:00
Set up a group
2020-04-29 18:31:54 +02:00
mkdir groups
vi groups/public.json
{
"public":true,
"op":[{"username":"jch","password":"1234"}],
"presenter":[{}],
"max-users":100
}
Copy the necessary files to your server:
rsync -a sfu static data groups server.example.org:/home/sfu/
Run the server binary:
ssh server.example.org
cd /home/sfu/
nohup ./sfu &
2020-05-29 17:49:23 +02:00
2020-05-31 23:16:08 +02:00
# Locations
There is a landing page at the root of the server. It contains a form
for typing the name of a group, and a clickable list of public groups.
Groups are available under `/group/groupname`. You may share this URL
with others, there is no need to go through the landing page.
Recordings can be accessed under `/recordings/groupname`. This is only
available to the administrator of the group.
Some statistics are available under `/stats`. This is only available to
the server administrator.
2020-05-29 17:49:23 +02:00
# Group definitions
Groups are defined by files in the directory defined by the `-groups`
command-line option, one per group. The group definition file does not
contain the name of the group -- that makes it possible to set up a new
group just by copying a template file.
The group definition file contains a JSON directory with the following
fields, all of which are optional.
- `op`, `presenter`, `other`: each of these is an array of user
definitions (see below) and specifies the users allowed to connect
respectively with operator privileges, with presenter privileges, and
as passive listeners;
2020-05-30 01:18:00 +02:00
- `public`: if true, then the group is visible on the landing page;
2020-05-29 17:49:23 +02:00
- `max-clients`: the maximum number of clients that may join the group at
a time;
2020-05-30 01:18:00 +02:00
- `allow-recording`: if true, then recording is allowed in this group;
- `allow-anonymous`: if true, then users may connect with an empty
2020-05-29 17:49:23 +02:00
username; this is not recommended, since anonymous users are not
2020-09-10 13:55:57 +02:00
allowed to participate in the chat;
- `redirect`: if set, then attempts to join the group will be redirected
to the given URL; most other fields are ignored in this case.
2020-05-29 17:49:23 +02:00
A user definition is a dictionary with the following fields:
- `username`: the username of the user; if omitted, any username is
allowed;
- `password`: the password of the user; if omitted, then any password
(including the empty paassword) is allowed.
For example
2020-05-31 23:16:08 +02:00
{"username":"jch", "password":"topsecret"}
2020-05-29 17:49:23 +02:00
specifies user *jch* with password *topsecret*, while
{"password":"topsecret"}
specifies that any username will do. The empty dictionary
{}
2020-05-31 23:16:08 +02:00
specifies that any username will do and that password are not verified.
2020-05-29 17:49:23 +02:00
# Commands
Typing a line starting with a slash `/` in the chat dialogue causes
a command to be sent to the server. The following commands are available
to all users:
- `/me text`: sends a chat message starting with the sender's username;
- `/leave`: equivalent to clicking the *Disconnect* button.
2020-09-23 21:01:29 +02:00
- `/set var val`: sets the value of a configuration variable without any
error checking. Without parameters, displays the current configuration.
- `/unset var`: removes a configuration variable.
2020-05-29 17:49:23 +02:00
The following commands are only available to users with operator
privileges:
- `/clear`: clears the chat history for all users;
2020-09-18 11:40:00 +02:00
- `/lock message`: prevents any new users from connecting to the group unless
2020-05-29 17:49:23 +02:00
they have operator privileges;
- `/unlock`: reverts the effect of `/lock`;
2020-05-30 01:18:00 +02:00
- `/record`: start recording;
- `/unrecord`: stop recording;
2020-05-29 17:49:23 +02:00
- `/op user`: gives operator privileges to a user;
- `/unop user`: takes away operator privileges;
- `/present user`: gives presenter privileges to a user;
- `/unpresent user`: takes away presenter privileges from a user and
forcibly closes any presentations from that user that may be taking place;
- `/kick user`: forcibly disconnects a user from the group.
--- Juliusz Chroboczek <https://www.irif.fr/~jch/>