diff --git a/README.webrtc b/README.webrtc index 546de8e..fae4f49 100644 --- a/README.webrtc +++ b/README.webrtc @@ -1,88 +1,138 @@ SylkServer WebRTC gateway ------------------------- The WebRTC gateway application enables web based clients to communicate transparently with SIP endpoints using WebRTC suite of standards and protocols. To perform this function SylkServer must run on a computer with a public reachable IP adddress. A ready to go client is available, see Sylk WebRTC client for more information. Architecture ------------ +--------+ +-------------+ +----------+ +-------------+ | | | | | | | SIP | | WebRTC | SylkRTC API | | | Janus +<--->+ audio/video | | client +<------------->+ SylkServer | | | | calls | | | | WebRTC | +----------+ +-------------+ +--------+ | gateway | +----------+ +-------------+ | | | Presence | | SIMPLE | | | | and chat +<--->+ IM | | | | gateway | | Presence | +-------------+ +----------+ +-------------+ End-point requirements ---------------------- The WebRTC gateway doesn't do media transcoding, so after taking care of the WebRTC-specific media features (ICE and DTLS mainly), endpoints will exchange plain RTP media between them, therefore SIP end-points must have a set of compatible audio (Opus) and video codecs (H.264 and VP8). As a WebRTC client, a standard browser with WebRTC support can be used (e.g. Firefox or Google Chrome). Features -------- * SIP account registration * Audio / video calling * Codec agnostic SylkRTC API ----------- A JavaScript library implementing SylkRTC API is available at: https://github.com/AGProjects/sylkrtc.js Janus ----- For implementing WebRTC capabilities, SylkServer uses an external component called Janus. https://github.com/meetecho/janus-gateway Janus can be installed by following the instructions on its README file: https://github.com/meetecho/janus-gateway/blob/master/README.md The only requirement is that Janus is compiled with WebSocket supports, since that's the transport SylkServer uses in order to communicate with Janus. Note: libsrtp >= 1.5.0 is recommended. +To configure janus the following settings are relevant for WebRTC gateway +(read their description in the janus configuration files): + +1. janus.cfg + +[general] +api_secret = some_secret_key_shared_with_sylkserver +;debug_level = 5 + +[nat] +ice_lite = true +ice_tcp = true +;ice_enforce_list = ip_or_interface +;ice_ignore_list = vmnet + +[media] +force-bundle = true +force-rtcp-mux = true + +[plugins] +disable = libjanus_voicemail.so,libjanus_recordplay.so,libjanus_streaming.so,libjanus_echotest.so,libjanus_videocall.so,libjanus_textroom.so + +[transports] +disable = libjanus_http.so,libjanus_rabbitmq.so,libjanus_pfunix.so + +2. janus.plugin.sip.cfg + +[general] +;local_ip = ip_for_sip +keepalive_interval = 0 +user_agent = SylkServer (WebRTC gateway) +register_ttl = 600 +;rtp_port_range = 20000-40000 + +3. janus.plugin.videoroom.cfg + +; comment out the rooms defined in this file to prevent janus from +; creating some static rooms (having an empty file for it is fine) + +4. janus.transport.websockets.cfg + +[general] +ws = yes +ws_interface = lo +ws_port = 8188 +wss = no + +[admin] +admin_ws = no + Running ------- After installing SylkServer with WebRTC capability, start the server and point your web browser to: https://hostname:10888/webrtcgateway/ It's recommended to change the API secret used between SylkServer and Janus, check the webrtcgateway.ini and janus.cfg configuration files. diff --git a/debian/rules b/debian/rules index 79b7d9f..12377e3 100755 --- a/debian/rules +++ b/debian/rules @@ -1,14 +1,10 @@ #!/usr/bin/make -f #export DH_VERBOSE=1 %: dh $@ --with python2,systemd override_dh_clean: dh_clean rm -rf build dist MANIFEST - -override_dh_install: - install -m 0644 janus-config/* debian/sylkserver-webrtc-gateway/etc/janus/ - dh_install diff --git a/debian/sylkserver-webrtc-gateway.dirs b/debian/sylkserver-webrtc-gateway.dirs deleted file mode 100644 index f22849c..0000000 --- a/debian/sylkserver-webrtc-gateway.dirs +++ /dev/null @@ -1 +0,0 @@ -etc/janus diff --git a/janus-config/janus.cfg b/janus-config/janus.cfg deleted file mode 100644 index 749cd11..0000000 --- a/janus-config/janus.cfg +++ /dev/null @@ -1,44 +0,0 @@ -; Janus configuration file for use with SylkServer - -[general] -; Configuration files folder -configs_folder = /etc/janus - -; Plugins folder -plugins_folder = /usr/lib/janus/plugins - -; Transports folder -transports_folder = /usr/lib/janus/transports - -; Interface to use (will be used in SDP) -;interface = - -; Debug/logging level, valid values are 0-7 -debug_level = 3 - -; API secret. Clients will need to specify this value for each request. -; Any kind of value is acceptable, but some random UUID is recommended. -; A new UUID value can be generated with the following command: -; python -c 'import uuid; print(uuid.uuid4().hex)' -api_secret = 0745f2f74f34451c89343afcdcae5809 - -[nat] -ice_lite = true -ice_tcp = true - -[media] -force-bundle = true -force-rtcp-mux = true - -[certificates] -; Certificate and key to use for DTLS -; (we leave these empty so Janus autogenerates them) -;cert_pem = -;cert_key = - -[plugins] -disable = libjanus_voicemail.so,libjanus_recordplay.so,libjanus_streaming.so,libjanus_echotest.so,libjanus_videocall.so,libjanus_textroom.so - -[transports] -disable = libjanus_http.so,libjanus_rabbitmq.so,libjanus_pfunix.so - diff --git a/janus-config/janus.plugin.sip.cfg b/janus-config/janus.plugin.sip.cfg deleted file mode 100644 index f634880..0000000 --- a/janus-config/janus.plugin.sip.cfg +++ /dev/null @@ -1,18 +0,0 @@ -; Janus configuration file for use with SylkServer - -[general] -; Specify which local IP address to use. If not set it will be automatically -; guessed from the system -; local_ip = - -; Enable local keep-alives to keep the registration open. Keep-alives are -; sent in the form of OPTIONS requests, at the given interval inseconds. -; (0 to disable) -keepalive_interval = 0 - -; User-Agent string to be used -user_agent = SylkServer (WebRTC gateway) - -; Default expiration time for registrations -register_ttl = 600 - diff --git a/janus-config/janus.plugin.videoroom.cfg b/janus-config/janus.plugin.videoroom.cfg deleted file mode 100644 index e69de29..0000000 diff --git a/janus-config/janus.transport.websockets.cfg b/janus-config/janus.transport.websockets.cfg deleted file mode 100644 index 4b4c5c5..0000000 --- a/janus-config/janus.transport.websockets.cfg +++ /dev/null @@ -1,7 +0,0 @@ - -[general] -ws = yes -ws_ip = 127.0.0.1 -ws_port = 8188 -wss = no -