XIVO may be needed to get a GUI for Asterisk and a REST API to get all line extensions for the Kurento Agent. You can also build your own REST API.
This project depends on Kurento so it has to be installed first.
- Basic installation
$ echo "deb http://ubuntu.kurento.org trusty kms6" | tee /etc/apt/sources.list.d/kurento.list
$ wget -O - http://ubuntu.kurento.org/kurento.gpg.key | apt-key add -
$ apt-get update
$ apt-get install kurento-media-server-6.0
- Installation via Docker
$ docker build --file=kms6 -t kms:6 .
$ docker run --restart=always --net=host --name=kms6 kms:6
A Kurento Client is needed to process the information given by the users. In this project, the Kurento client mixes all user streams into 1 stream. It also enables 1 person in a room to do a screenshare.
- Configuration (application.yml)
server:
port: 8080
kurento:
# for instance: ws://localhost:8888/ws
websocket: KMS_WEBSOCKET_URI
xivo:
# for instance: ws://localhost:8082/ws
# please see /etc/asterisk/http.conf
websocket: XIVO_WEBSOCKET_URI
rest:
# for instance: https://localhost:9486/1.1/lines_sip
uri: XIVO_REST_API_URI
login: XIVO_REST_API_LOGIN
password: XIVO_REST_API_PASSWORD
- Basic installation
Requirements: Java 7, Maven
$ mvn clean package
$ mvn exec:java
- Installation via Docker
$ docker build --file=kurento-agent -t kurento-agent:6 .
$ docker run --restart=always --net=host --name=kurento-agent -v /root/conf:/webrtc/kurento-agent/config/ kurento-agent:6
This little nodejs module enables to do an upload speed test on port 8081 to adapt the quality before going in a room.
- Basic installation
Requirements: Node.js
$ npm install
$ node server.js
- Installation via Docker
$ docker build --file=upload-speed-tester -t upload-speed-tester:1 .
$ docker run --restart=always --net=host --name=upload-speed-tester upload-speed-tester:1
- Configuration (config.json)
{
"ws_uri": "KMS_WEBSOCKET_URI",
"wss_uri": "KMS_SECURE_WEBSOCKET_URI",
"upload_speed_tester_uri": "UPLOAD_SPEED_TESTER_URI"
}
Example:
{
"ws_uri": "ws://localhost:8080/groupcall",
"wss_uri": "wss://localhost/groupcall",
"upload_speed_tester_uri": "http://localhost:8081/upload"
}
- Basic installation
Requirements: Node.js, Bower, http-server
$ bower install --allow-root
$ http-server -p 80
- Installation via Docker
$ docker build --file=angular-webpage -t angular-webpage:1 .
$ docker run --restart=always --net=host --name=angular-webpage -v /root/conf:/conf/ angular-webpage:1
nginx may be needed to redirect ports and/or to enable SSL on the domain (which is mandatory to enable screensharing)
server {
listen 443 ssl default_server;
server_name _;
ssl on;
ssl_certificate /etc/nginx/ssl/server.crt;
ssl_certificate_key /etc/nginx/ssl/server.key;
location / {
proxy_pass http://127.0.0.1:80;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /names {
proxy_pass http://127.0.0.1:8080/names;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /groupcall {
proxy_pass http://127.0.0.1:8080/groupcall;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
#fail_timeout 0;
proxy_http_version 1.1;
#proxy_read_timeout ;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
location /upload {
proxy_pass http://127.0.0.1:8081/upload;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
An easy way to install the project is using docker-compose.
- First, install docker-compose
- Edit the configuration files in docker-compose/conf/
- Launch the project in the docker-compose folder:
$ docker-compose up