Galene
Galene is a self-hosted video conferencing server. It features advanced networking and video algorithms and automatic subtitling.
Declared in: projects/Galene/default.nix
Try the service in a VM
- 
    Install Nix
    
- Bash
 - 
  
$ apt install --yes curl git jq nix 
- Bash
 - 
  
$ apt install --yes curl git jq nix 
- Bash
 - 
  
$ pacman --sync --refresh --noconfirm curl git jq nix 
 - 
    Download a configuration file
    
# default.nix { ngipkgs ? import (fetchTarball "https://github.com/ngi-nix/ngipkgs/tarball/main") { }, }: ngipkgs.demo-vm ( { lib, pkgs, ... }: let galeneTestGroupsDir = "/var/lib/galene/groups"; galeneTestGroupFile = "galene-test-config.json"; galenePort = 8443; galeneTestGroupAdminName = "admin"; galeneTestGroupAdminPassword = "1234"; in { services.galene = { enable = true; insecure = true; openFirewall = true; httpPort = galenePort; groupsDir = galeneTestGroupsDir; }; # https://galene.org/INSTALL.html environment.etc.${galeneTestGroupFile}.source = (pkgs.formats.json { }).generate galeneTestGroupFile { op = [ { username = galeneTestGroupAdminName; password = galeneTestGroupAdminPassword; } ]; other = [ { } ]; }; environment.systemPackages = with pkgs; [ ffmpeg galene-stream ]; } )
 - 
    Enable binary substituters
    
- Bash
 - 
  
$ export NIX_CONFIG='substituters = https://cache.nixos.org/ https://ngi.cachix.org/ trusted-public-keys = cache.nixos.org-1:6nchdd59x431o0gwypbmraurkbj16zpmqfgspcdshjy= ngi.cachix.org-1:n+cal72roc3qqulxihpv+tw5t42whxmmhpragkrsrow=' 
 - 
    Build and run a virtual machine
    
- Bash
 - 
  
$ nix-build ./default.nix && ./result 
- Bash
 - 
  
$ nix-build ./default.nix && ./result 
- Bash
 - 
  
$ rev=$(nix-instantiate --eval --attr sources.nixpkgs.rev https://github.com/ngi-nix/ngipkgs/archive/master.tar.gz | jq --raw-output)$ nix-shell -I nixpkgs=https://github.com/NixOS/nixpkgs/archive/$rev.tar.gz --packages nix --run "nix-build ./default.nix && ./result" 
- Bash
 - 
  
$ nix-build ./default.nix && ./result 
 - 
  Usage Instructions
  
- 
To use Galène, you have to set up a group, and permissions & users within this group. For full details, take a look at: https://galene.org/README.html#group-definitions
 - 
After Galène has finished starting up, the on-screen text in the VM will inform you about the exact directory that your group configs need to be put into.
 - 
An example config is available within the VM under
/etc/galene-test-config.json. If you copy this file to the group directory and name ittest.json, then a group namedtestwill be available in the web interface for you to use. - 
A known issue with specifically this demo is that WebRTC doesn't seem to be working: You can join the group and get familiar with the interface, but audio and video is unlikely to work. Installing Galène properly on a local system will get rid of this issue.
 
 - 
 
Options
services.galene
- 
  
  
Path to the server's certificate. The file is copied at runtime to Galene's data directory where it needs to reside.
- Type:
 null or absolute path- Default:
 null- Declared in:
 - nixos/modules/services/web-apps/galene.nix
 
 - 
  
  
Data directory.
- Type:
 absolute path- Default:
 "${config.services.galene.stateDir}/data"- Declared in:
 - nixos/modules/services/web-apps/galene.nix
 
 - 
  
  
Whether to enable Galene Service.
- Type:
 boolean- Default:
 false- Declared in:
 - nixos/modules/services/web-apps/galene.nix
 
 - 
  
  
Group under which galene runs.
- Type:
 string- Default:
 "galene"- Declared in:
 - nixos/modules/services/web-apps/galene.nix
 
 - 
  
  
Web server directory.
- Type:
 absolute path- Default:
 "${config.services.galene.stateDir}/groups"- Declared in:
 - nixos/modules/services/web-apps/galene.nix
 
 - 
  
  
HTTP listen address for galene.
- Type:
 string- Default:
 ""- Declared in:
 - nixos/modules/services/web-apps/galene.nix
 
 - 
  
  
HTTP listen port.
- Type:
 16 bit unsigned integer; between 0 and 65535 (both inclusive)- Default:
 8443- Declared in:
 - nixos/modules/services/web-apps/galene.nix
 
 - 
  
  
Whether Galene should listen in http or in https. If left as the default value (false), Galene needs to be fed a private key and a certificate.
- Type:
 boolean- Default:
 false- Declared in:
 - nixos/modules/services/web-apps/galene.nix
 
 - 
  
  
Path to the server's private key. The file is copied at runtime to Galene's data directory where it needs to reside.
- Type:
 null or absolute path- Default:
 null- Declared in:
 - nixos/modules/services/web-apps/galene.nix
 
 - 
  
  
Whether to open the service's ports in the firewall.
- Type:
 boolean- Default:
 false- Declared in:
 - projects/Galene/module.nix
 
 - 
  
  
The galene package to use.
- Type:
 package- Default:
 pkgs.galene- Declared in:
 - nixos/modules/services/web-apps/galene.nix
 
 - 
  
  
Recordings directory.
- Type:
 absolute path- Default:
 "${config.services.galene.stateDir}/recordings"- Declared in:
 - nixos/modules/services/web-apps/galene.nix
 
 - 
  
  
The directory where Galene stores its internal state. If left as the default value this directory will automatically be created before the Galene server starts, otherwise the sysadmin is responsible for ensuring the directory exists with appropriate ownership and permissions.
- Type:
 absolute path- Default:
 "/var/lib/galene"- Declared in:
 - nixos/modules/services/web-apps/galene.nix
 
 - 
  
  
Web server directory.
- Type:
 absolute path- Default:
 "${package.static}/static"- Declared in:
 - nixos/modules/services/web-apps/galene.nix
 
 - 
  
  
Built-in TURN server listen address and port. Set to "" to disable.
- Type:
 string- Default:
 "auto"- Declared in:
 - nixos/modules/services/web-apps/galene.nix
 
 - 
  
  
User account under which galene runs.
- Type:
 string- Default:
 "galene"- Declared in:
 - nixos/modules/services/web-apps/galene.nix
 
 
services.galene.certFile
services.galene.dataDir
services.galene.enable
services.galene.group
services.galene.groupsDir
services.galene.httpAddress
services.galene.httpPort
services.galene.insecure
services.galene.keyFile
services.galene.openFirewall
services.galene.package
services.galene.recordingsDir
services.galene.stateDir
services.galene.staticDir
services.galene.turnAddress
services.galene.user
Examples
Enable Galene
{ lib, pkgs, ... }: let galeneTestGroupsDir = "/var/lib/galene/groups"; galeneTestGroupFile = "galene-test-config.json"; galenePort = 8443; galeneTestGroupAdminName = "admin"; galeneTestGroupAdminPassword = "1234"; in { services.galene = { enable = true; insecure = true; openFirewall = true; httpPort = galenePort; groupsDir = galeneTestGroupsDir; }; # https://galene.org/INSTALL.html environment.etc.${galeneTestGroupFile}.source = (pkgs.formats.json { }).generate galeneTestGroupFile { op = [ { username = galeneTestGroupAdminName; password = galeneTestGroupAdminPassword; } ]; other = [ { } ]; }; environment.systemPackages = with pkgs; [ ffmpeg galene-stream ]; }
Declared in: projects/Galene/example.nix
This project is funded by NLnet through these subgrants: