No description
Find a file
2022-02-10 12:57:28 +01:00
.github/workflows Update develop-deb.yml 2022-01-22 20:25:20 +01:00
app Set production port to standard 433, and documentation update 2022-02-10 10:47:12 +01:00
compose typo 2021-06-03 13:11:18 +02:00
docs Revert "Add new demo video" 2022-02-03 05:19:11 +01:00
LTI Fixes #546 2020-09-27 10:49:06 +02:00
munin Rename to edumeet, ref #492 2020-06-26 12:40:39 +02:00
server Set production port to standard 433, and documentation update 2022-02-10 10:47:12 +01:00
.gitignore Fix installing/building using npm 2021-07-28 02:20:51 +02:00
CHANGELOG.md Update CHANGELOG.md 2022-02-10 12:57:28 +01:00
CONTRIBUTING.md Mention contributing against the develop, not master branch. 2020-11-17 14:18:59 +01:00
edumeet.service Update edumeet.service 2021-05-05 13:14:16 +02:00
LICENSE.md MIT License 2020-05-04 07:49:09 +02:00
prom.md Some more renaming, ref #492 2020-06-26 12:44:13 +02:00
README.md Set production port to standard 433, and documentation update 2022-02-10 10:47:12 +01:00

edumeet logo

A WebRTC meeting service using mediasoup.

Official website: edumeet.org

https://user-images.githubusercontent.com/37835902/152279867-639db9bc-bf78-430f-b96f-d17733527474.mp4

Try it online at letsmeet.no

Main features

Feature Description
A/V streaming You can share your microphone and camera + additional video stream
Video layouts You can choose between Democratic and Filmstrip views. More in progress.
Screen sharing You can share your screen to make some presentation right from your desktop
File sharing You can share your files with the peers (torrent solution under the hood)
Chat messages You can make a text conversation with peers
Local Recording Record window/tab/screen content in browser supported formats with room audio and save them (disabled by default)
Authorization Supported types: OIDC, SAML, local db (text-based)

Internationalization (22 languages)

Help us with translations
How to contribute?
  1. take a certain language file you want to translate
  2. find the null values

"settings.language": null,

  1. replace them based on the en.json file

"settings.language": "Select language",

  1. make a Pull Request, or send us a e-mail with file

Thanks so much in advance!

Local Recording

See more
  • Local Recording records the browser window video and audio. From the list of media formats that your browser supports you can select your preferred media format in the settings menu advanced video menu setting. MediaRecorder makes small chucks of recording and these recorded blob chunks temporary stored in IndexedDB, if IndexedDB implemented in your browser. Otherwise it stores blobs in memory in an array of blobs. Local Recording creates a local IndexedDB with the name of the starting timestamp (unix timestamp format) And a storage called chunks. All chunks read in an array and created a final blob that you can download. After blobs array concatenation as a big blob, this big blob saved as file, and finally we delete the temporary local IndexedDB.

  • Local recording is disabled by default. You can enable it by setting localRecordingEnabled to true in (./app/public/config/config.js)

  • WARNINIG: Take care that You need for local recording extra cpu, memory and disk space. You need to have good enough free disk space!! Keep in mind that Browsers don't allow to use all the disk free capacity! See more info about browsers storage limits:

Docker

Get docker image here

Ansible (based on Docker)

See more.

.deb package (for debian-based systems)

If you want to install it on the Debian & Ubuntu based operating systems.

  • Prerequisites: node v16.x (tested with v16.13.2 version)

  • Get package here (job artifact)

# Unzip the file
unzip edumeet.zip

# Install the package
sudo apt install edumeet/edumeet.deb

# After package installation, don't forget the configure ip address in config file.
sudo nano /etc/meeting/server-config.js

# Finally, start the service by (it's enabled by default)
sudo systemctl start edumeet

Manual installation (build)

install

Note: We strongly recommend to always use a yarn package manager.

# Install all the required dependencies and NodeJS v14 (Debian/Ubuntu) and Yarn package manager:
sudo apt update && sudo apt install -y curl git python python3-pip build-essential redis openssl libssl-dev pkg-config
curl -fsSL https://deb.nodesource.com/setup_14.x | sudo bash -
curl -sL https://dl.yarnpkg.com/debian/pubkey.gpg | gpg --dearmor | sudo tee /usr/share/keyrings/yarnkey.gpg >/dev/null
echo "deb [signed-by=/usr/share/keyrings/yarnkey.gpg] https://dl.yarnpkg.com/debian stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
sudo apt update && sudo apt install -y yarn nodejs

# get version
git clone https://github.com/edumeet/edumeet.git

cd edumeet

# switch to the "develop" branch to get the latest version for developing
git checkout develop 

build

cd app
yarn && yarn build

cd ../server
yarn && yarn build

configure

Note: Edumeet will start on the default settings (if you don't create your own configuration files)

Important! You must always rebuild the edumeet when you change something in the configuration files.

use template (example)

Just clone the example files and adjust them if required.

cp server/config/config.example.js server/config/config.js
cp app/public/config/config.example.js app/public/config/config.js

To change default options, create your own server config file (yaml or json)

Example when usingi config.yaml file

turnAPIKey: "<YOUR_API_KEY>"
turnAPIURI: "https://api.turn.geant.org/turn"
mediasoup:
  webRtcTransport:
    listenIps:
    - ip: "<serverip>"
      announcedIp: ""

Example when using config.json file

{
  [
    {
      "urls": [
        "turn:turn.example.com:443?transport=tcp"
      ],
      "username": "example",
      "credential": "example"
    }
  ]
};

Full documentation and list of all settings:

destination location
app side ./app/README.md
srv side ./server/README.md

Run

locally (for development)

  • The newest build is always in develop branch if you want to make a contribution/pull request use it instead of master branch.
# You can run a live build from app folder and running :
app$ yarn start

# Also you need to start a server in server folder too. 
server$ yarn start

locally

# Run the Node.js server application in a terminal:
cd server
yarn start

Note: Do not run the server as root. Instead, do redirects on the firewall:

sudo iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-ports 8443
sudo iptables -t nat -A OUTPUT -p tcp --dport 443 -o lo -j REDIRECT --to-port 8443
sudo iptables -t nat -A PREROUTING -p tcp --dport 3443 -j REDIRECT --to-ports 8443
sudo iptables -t nat -A OUTPUT -p tcp --dport 3443 -o lo -j REDIRECT --to-port 8443

# make it persistent
sudo apt install iptables-persistent
sudo iptables-save > /etc/iptables/rules.v4
sudo ip6tables-save > /etc/iptables/rules.v6
  • Test your service in a webRTC enabled browser: https://yourDomainOrIPAdress:3443/roomname

as a service (systemd)

# Stop your locally running server. Copy systemd-service file `edumeet.service` to `/etc/systemd/system/` and check location path settings:
cp edumeet.service /etc/systemd/system/

# modify the install paths, if required
sudo edit /etc/systemd/system/edumeet.service

# Reload systemd configuration and start service:
sudo systemctl daemon-reload
sudo systemctl start edumeet

# If you want to start edumeet at boot time:
sudo systemctl enable edumeet

Ports and firewall

Port protocol description
443 tcp default https webserver and signaling - adjustable in server/config.js)
4443 tcp default yarn start port for developing with live browser reload, not needed in production environments - adjustable in app/package.json)
40000-49999 udp, tcp media ports - adjustable in server/config.js

Load balanced installation

To deploy this as a load balanced cluster, have a look at HAproxy.

Learning management integration

To integrate with an LMS (e.g. Moodle), have a look at LTI.

TURN configuration

If you are part of the GEANT eduGAIN, you can request your turn api key at https://turn.geant.org/

You need an additional TURN-server for clients located behind restrictive firewalls! Add your server and credentials to server/config/config.js

Community-driven support

Type
Open mailing list community@lists.edumeet.org
Subscribe lists.edumeet.org/sympa/subscribe/community/
Open archive lists.edumeet.org/sympa/arc/community/

Authors

  • Håvar Aambø Fosstveit
  • Stefan Otto
  • Mészáros Mihály
  • Roman Drozd
  • Rémai Gábor László
  • Piotr Pawałowski

This started as a fork of the work done by:

License

MIT License (see LICENSE.md)

Contributions to this work were made on behalf of the GÉANT project, a project that has received funding from the European Unions Horizon 2020 research and innovation programme under Grant Agreement No. 731122 (GN4-2). On behalf of GÉANT project, GÉANT Association is the sole owner of the copyright in all material which was developed by a member of the GÉANT project.

GÉANT Vereniging (Association) is registered with the Chamber of Commerce in Amsterdam with registration number 40535155 and operates in the UK as a branch of GÉANT Vereniging. Registered office: Hoekenrode 3, 1102BR Amsterdam, The Netherlands. UK branch address: City House, 126-130 Hills Road, Cambridge CB2 1PQ, UK.