diff --git a/meet/server/config/config.js b/meet/server/config/config.js index 153c1b6c..a3e8c712 100644 --- a/meet/server/config/config.js +++ b/meet/server/config/config.js @@ -1,249 +1,250 @@ const os = require('os'); // const fs = require('fs'); const userRoles = require('../userRoles'); const { BYPASS_ROOM_LOCK, BYPASS_LOBBY } = require('../access'); const { CHANGE_ROOM_LOCK, PROMOTE_PEER, MODIFY_ROLE, SEND_CHAT, MODERATE_CHAT, SHARE_AUDIO, SHARE_VIDEO, SHARE_SCREEN, EXTRA_VIDEO, SHARE_FILE, MODERATE_FILES, MODERATE_ROOM } = require('../permissions'); module.exports = { // URI and key for requesting geoip-based TURN server closest to the client turnAPIKey : 'examplekey', turnAPIURI : 'https://example.com/api/turn', turnAPIparams : { 'uri_schema' : 'turn', 'transport' : 'tcp', 'ip_ver' : 'ipv4', 'servercount' : '2' }, turnAPITimeout : 2 * 1000, // Backup turnservers if REST fails or is not configured backupTurnServers : [ { urls : [ 'turn:turn.example.com:443?transport=tcp' ], username : 'example', credential : 'example' } ], // bittorrent tracker: please replace this if you want a more private file sharing service inside eduMEET // have a look at https://github.com/webtorrent/bittorrent-tracker for setup your own tracker fileTracker : 'wss://tracker.openwebtorrent.com', - // redis server options + // redis server options used for session storage redisOptions : { host: '127.0.0.1', //REDIS_IP port: '6379', //REDIS_PORT + db: '3' }, // session cookie secret cookieSecret : 'T0P-S3cR3t_cook!e', cookieName : 'edumeet.sid', // if you use encrypted private key the set the passphrase tls : { //cert : `${__dirname}/../certs/mediasoup-demo.localhost.cert.pem`, // passphrase: 'key_password' //key : `${__dirname}/../certs/mediasoup-demo.localhost.key.pem` cert : `/etc/pki/tls/certs/kolab.hosted.com.cert`, key : `/etc/pki/tls/certs/kolab.hosted.com.key`, }, // listening Host or IP // If omitted listens on every IP. ("0.0.0.0" and "::") //listeningHost: 'localhost', // Listening port for https server. listeningPort : 12443, // Any http request is redirected to https. // Listening port for http server. listeningRedirectPort : 12080, // Listens only on http, only on listeningPort // listeningRedirectPort disabled // use case: loadbalancer backend httpOnly : true, // WebServer/Express trust proxy config for httpOnly mode // You can find more info: // - https://expressjs.com/en/guide/behind-proxies.html // - https://www.npmjs.com/package/proxy-addr // use case: loadbalancer backend trustProxy : '', accessFromRoles : { // The role(s) will gain access to the room // even if it is locked (!) [BYPASS_ROOM_LOCK] : [ userRoles.ADMIN ], // The role(s) will gain access to the room without // going into the lobby. If you want to restrict access to your // server to only directly allow authenticated users, you could // add the userRoles.AUTHENTICATED to the user in the userMapping // function, and change to BYPASS_LOBBY : [ userRoles.AUTHENTICATED ] [BYPASS_LOBBY] : [ userRoles.NORMAL ] }, permissionsFromRoles : { // The role(s) have permission to lock/unlock a room [CHANGE_ROOM_LOCK] : [ userRoles.MODERATOR ], // The role(s) have permission to promote a peer from the lobby [PROMOTE_PEER] : [ userRoles.NORMAL ], // The role(s) have permission to give/remove other peers roles [MODIFY_ROLE] : [ userRoles.NORMAL ], // The role(s) have permission to send chat messages [SEND_CHAT] : [ userRoles.NORMAL ], // The role(s) have permission to moderate chat [MODERATE_CHAT] : [ userRoles.MODERATOR ], // The role(s) have permission to share audio [SHARE_AUDIO] : [ userRoles.NORMAL ], // The role(s) have permission to share video [SHARE_VIDEO] : [ userRoles.NORMAL ], // The role(s) have permission to share screen [SHARE_SCREEN] : [ userRoles.NORMAL ], // The role(s) have permission to produce extra video [EXTRA_VIDEO] : [ userRoles.NORMAL ], // The role(s) have permission to share files [SHARE_FILE] : [ userRoles.NORMAL ], // The role(s) have permission to moderate files [MODERATE_FILES] : [ userRoles.MODERATOR ], // The role(s) have permission to moderate room (e.g. kick user) [MODERATE_ROOM] : [ userRoles.MODERATOR ] }, // Array of permissions. If no peer with the permission in question // is in the room, all peers are permitted to do the action. The peers // that are allowed because of this rule will not be able to do this // action as soon as a peer with the permission joins. In this example // everyone will be able to lock/unlock room until a MODERATOR joins. allowWhenRoleMissing : [ CHANGE_ROOM_LOCK ], // When truthy, the room will be open to all users when as long as there // are allready users in the room activateOnHostJoin : true, // When set, maxUsersPerRoom defines how many users can join // a single room. If not set, there is no limit. // maxUsersPerRoom : 20, // Room size before spreading to new router routerScaleSize : 40, // Socket timout value requestTimeout : 20000, // Socket retries when timeout requestRetries : 3, // Mediasoup settings mediasoup : { numWorkers : Object.keys(os.cpus()).length, // mediasoup Worker settings. worker : { logLevel : 'warn', logTags : [ 'info', 'ice', 'dtls', 'rtp', 'srtp', 'rtcp' ], rtcMinPort : 40000, rtcMaxPort : 49999 }, // mediasoup Router settings. router : { // Router media codecs. mediaCodecs : [ { kind : 'audio', mimeType : 'audio/opus', clockRate : 48000, channels : 2 }, { kind : 'video', mimeType : 'video/VP8', clockRate : 90000, parameters : { 'x-google-start-bitrate' : 1000 } }, { kind : 'video', mimeType : 'video/VP9', clockRate : 90000, parameters : { 'profile-id' : 2, 'x-google-start-bitrate' : 1000 } }, { kind : 'video', mimeType : 'video/h264', clockRate : 90000, parameters : { 'packetization-mode' : 1, 'profile-level-id' : '4d0032', 'level-asymmetry-allowed' : 1, 'x-google-start-bitrate' : 1000 } }, { kind : 'video', mimeType : 'video/h264', clockRate : 90000, parameters : { 'packetization-mode' : 1, 'profile-level-id' : '42e01f', 'level-asymmetry-allowed' : 1, 'x-google-start-bitrate' : 1000 } } ] }, // mediasoup WebRtcTransport settings. webRtcTransport : { listenIps : [ // change 192.0.2.1 IPv4 to your server's IPv4 address!! { ip: '192.168.1.81', announcedIp: null } // Can have multiple listening interfaces // change 2001:DB8::1 IPv6 to your server's IPv6 address!! // { ip: '2001:DB8::1', announcedIp: null } ], initialAvailableOutgoingBitrate : 1000000, minimumAvailableOutgoingBitrate : 600000, // Additional options that are not part of WebRtcTransportOptions. maxIncomingBitrate : 1500000 } } /* , // Prometheus exporter prometheus : { deidentify : false, // deidentify IP addresses // listen : 'localhost', // exporter listens on this address numeric : false, // show numeric IP addresses port : 8889, // allocated port quiet : false // include fewer labels } */ };