INSTALL JITSI WITH DROPBOX AND SERVER RECORDING, WHITEBOARD, AUTO OR MANUAL SCALING, MULTIPLE RECORDING AND GRAFANA MONITORING WITH CUSTOMIZATION ON UBUNTU 20.04
Install Jitsi with recording
apt update && apt upgrade -y
sudo apt install ca-certificates curl gnupg lsb-release nginx python3-certbot-nginx unzip zip linux-image-extra-virtual apt-transport-https software-properties-common
echo “options snd-aloop enable=1,1,1,1,1,1 index=0,1,2,3,4,5” > /etc/modprobe.d/alsa-loopback.conf
echo “snd_aloop” >> /etc/modules
echo “snd_aloop” > /etc/modules-load.d/snd_aloop.conf
modprobe snd_aloop
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg –dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo “deb [arch=$(dpkg –print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable” | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
apt update
sudo apt install docker-ce docker-ce-cli containerd.io
sudo curl -L “https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)” -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
wget https://github.com/jitsi/docker-jitsi-meet/archive/refs/tags/stable-6726-1.zip
unzip stable-6726-1.zip
cd docker-jitsi-meet-stable-6726
cp env.example .env
./gen-passwords.sh
nano docker-compose.yml
add below code to prosody section
ports:
- "5222:5222"
add below code to jvb ports section
- '8080:8080'
save the file
nano .env and do changes in file
add below line in .env file
COLIBRI_REST_ENABLED = true
change below variable value
JIBRI_FINALIZE_RECORDING_SCRIPT_PATH=/usr/bin/jitsi_uploader.sh
docker-compose -f docker-compose.yml -f etherpad.yml -f jibri.yml up -d
cd /root
mkdir wbo-boards
chown -R 1000:1000 wbo-boards
docker run -d -it –publish 5001:80 –restart always –volume “$(pwd)/wbo-boards:/opt/app/server-data” lovasoa/wbo:latest
wget -qO- https://repos.influxdata.com/influxdb.key | gpg –dearmor > /etc/apt/trusted.gpg.d/influxdb.gpg
export DISTRIB_ID=$(lsb_release -si); export DISTRIB_CODENAME=$(lsb_release -sc)
echo “deb [signed-by=/etc/apt/trusted.gpg.d/influxdb.gpg] https://repos.influxdata.com/${DISTRIB_ID,,} ${DISTRIB_CODENAME} stable” > /etc/apt/sources.list.d/influxdb.list
sudo apt update && sudo apt install influxdb
wget -qO- https://repos.influxdata.com/influxdb.key | sudo tee /etc/apt/trusted.gpg.d/influxdb.asc >/dev/null
source /etc/os-release
echo “deb https://repos.influxdata.com/${ID} ${VERSION_CODENAME} stable” | sudo tee /etc/apt/sources.list.d/influxdb.list
sudo apt update && sudo apt install telegraf
nano /etc/telegraf/telegraf.conf
change some settings
[global_tags]
###############################################################################
# GLOBAL #
###############################################################################
[agent]
interval = "10s" debug = false hostname = "jitsi_host" round_interval = true flush_interval = "10s" flush_jitter = "0s" collection_jitter = "0s" metric_batch_size = 1000 metric_buffer_limit = 10000 quiet = false logfile = "" omit_hostname = false
nano /etc/telegraf/telegraf.d/jitsi.conf
add below code
###############################################################################
# INPUTS #
###############################################################################
[[inputs.http]]
name_override = "jitsi_stats"
urls = [
"http://localhost:8080/colibri/stats"
]
data_format = "json"
###############################################################################
# OUTPUTS #
###############################################################################
[[outputs.influxdb]]
urls = ["http://localhost:8086"]
database = "jitsi"
timeout = "0s"
retention_policy = ""
nano /etc/telegraf/telegraf.d/system.conf
add below code
###############################################################################
# INPUTS #
###############################################################################
[[inputs.cpu]]
## Whether to report per-cpu stats or not
## percpu = true
## Whether to report total system cpu stats or not
totalcpu = true
[[inputs.mem]]
###############################################################################
# OUTPUTS #
###############################################################################
[[outputs.influxdb]]
urls = ["http://localhost:8086"]
database = "jitsi"
timeout = "0s"
retention_policy = ""
wget -q -O – https://packages.grafana.com/gpg.key | sudo apt-key add –
echo “deb https://packages.grafana.com/oss/deb stable main” | sudo tee -a /etc/apt/sources.list.d/grafana.list
apt update
sudo apt install grafana
nano /etc/grafana/grafana.ini
change below lines
domain = example.com
root_url = %(protocol)s://%(domain)s:%(http_port)s/monitor/
serve_from_sub_path = true
settings.json
systemctl restart telegraf
systemctl restart grafana-server
docker-jitsi-meet-stable-6726-1_etherpad_1
docker run -d -p 8000:8000 -p 9443:9443 –name portainer –restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data cr.portainer.io/portainer/portainer-ce:2.9.3
adduser netdata
usermod -aG sudo netdata
nano /etc/nginx/sites-enabled/jitsi
add below code to nginx proxy file
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
server {
server_name example.com;
location / {
proxy_pass http://127.0.0.1:8000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $remote_addr;
tcp_nodelay on;
}
location /whiteboard/ {
proxy_pass http://127.0.0.1:5001/;
client_max_body_size 1024M;
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-Host $server_name;
proxy_set_header X-Forwarded-Proto $scheme;
}
location ~/monitor {
proxy_pass http://127.0.0.1:3000;
}
location ~/monitor/api/live {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $http_host;
proxy_pass http://127.0.0.1:3000;
}
location /netdata/ {
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:19999/;
proxy_http_version 1.1;
proxy_pass_request_headers on;
proxy_set_header Connection "keep-alive";
proxy_store off;
}
location /portainer/ {
proxy_pass https://127.0.0.1:9443/;
client_max_body_size 1024M;
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-Host $server_name;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email you@example.com -d nextcloud.example.com
add below file code in grafana
{
"annotations": {
"list": [
{
"builtIn": 1,
"datasource": "-- Grafana --",
"enable": true,
"hide": true,
"iconColor": "rgba(0, 211, 255, 1)",
"name": "Annotations & Alerts",
"type": "dashboard"
}
]
},
"description": "Jitsi Meet Statistics Grafana Dashboard",
"editable": true,
"gnetId": null,
"graphTooltip": 0,
"id": 3,
"iteration": 1612363361762,
"links": [],
"panels": [
{
"datasource": "InfluxDB",
"description": "Number of conferences currently held",
"fieldConfig": {
"defaults": {
"custom": {},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "blue",
"value": null
}
]
}
},
"overrides": []
},
"gridPos": {
"h": 8,
"w": 4,
"x": 0,
"y": 0
},
"id": 2,
"options": {
"colorMode": "value",
"graphMode": "area",
"justifyMode": "auto",
"orientation": "auto",
"reduceOptions": {
"calcs": [
"lastNotNull"
],
"fields": "",
"values": false
},
"textMode": "auto"
},
"pluginVersion": "7.3.7",
"targets": [
{
"groupBy": [
{
"params": [
"$interval"
],
"type": "time"
}
],
"measurement": "jitsi_stats",
"orderByTime": "ASC",
"policy": "default",
"query": "SELECT last(\"conferences\") FROM \"jitsi_stats\" WHERE (\"host\" =~ /^$jitsi_host$/) AND $timeFilter GROUP BY time($interval)",
"rawQuery": true,
"refId": "A",
"resultFormat": "time_series",
"select": [
[
{
"params": [
"conferences"
],
"type": "field"
},
{
"params": [],
"type": "mean"
}
]
],
"tags": [
{
"key": "host",
"operator": "=~",
"value": "/^$jitsi_host$/"
}
]
}
],
"timeFrom": null,
"timeShift": null,
"title": "Conferences",
"type": "stat"
},
{
"datasource": "InfluxDB",
"description": "Number of participants in all conferences",
"fieldConfig": {
"defaults": {
"custom": {},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "orange",
"value": null
}
]
}
},
"overrides": []
},
"gridPos": {
"h": 8,
"w": 4,
"x": 4,
"y": 0
},
"id": 65085,
"options": {
"colorMode": "value",
"graphMode": "area",
"justifyMode": "auto",
"orientation": "auto",
"reduceOptions": {
"calcs": [
"lastNotNull"
],
"fields": "",
"values": false
},
"textMode": "auto"
},
"pluginVersion": "7.3.7",
"targets": [
{
"groupBy": [
{
"params": [
"$interval"
],
"type": "time"
}
],
"measurement": "jitsi_stats",
"orderByTime": "ASC",
"policy": "default",
"query": "SELECT last(\"participants\") FROM \"jitsi_stats\" WHERE (\"host\" =~ /^$jitsi_host$/) AND $timeFilter GROUP BY time($interval)",
"rawQuery": true,
"refId": "A",
"resultFormat": "table",
"select": [
[
{
"params": [
"participants"
],
"type": "field"
},
{
"params": [],
"type": "mean"
}
]
],
"tags": [
{
"key": "host",
"operator": "=~",
"value": "/^$jitsi_host$/"
}
]
}
],
"timeFrom": null,
"timeShift": null,
"title": "Attendees",
"type": "stat"
},
{
"datasource": "InfluxDB",
"description": "Number of participants in the currently largest conference.",
"fieldConfig": {
"defaults": {
"custom": {},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
}
]
}
},
"overrides": []
},
"gridPos": {
"h": 8,
"w": 2,
"x": 8,
"y": 0
},
"id": 5,
"options": {
"colorMode": "value",
"graphMode": "area",
"justifyMode": "auto",
"orientation": "auto",
"reduceOptions": {
"calcs": [
"lastNotNull"
],
"fields": "",
"values": false
},
"textMode": "auto"
},
"pluginVersion": "7.3.7",
"targets": [
{
"groupBy": [
{
"params": [
"$interval"
],
"type": "time"
}
],
"measurement": "jitsi_stats",
"orderByTime": "ASC",
"policy": "default",
"refId": "A",
"resultFormat": "time_series",
"select": [
[
{
"params": [
"largest_conference"
],
"type": "field"
},
{
"params": [],
"type": "mean"
}
]
],
"tags": [
{
"key": "host",
"operator": "=~",
"value": "/^$jitsi_host$/"
}
]
}
],
"timeFrom": null,
"timeShift": null,
"title": "Biggest Conference",
"type": "stat"
},
{
"datasource": "InfluxDB",
"description": "Total number of activated webcam or screen transmissions.",
"fieldConfig": {
"defaults": {
"custom": {},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
}
]
}
},
"overrides": []
},
"gridPos": {
"h": 4,
"w": 2,
"x": 10,
"y": 0
},
"id": 13,
"options": {
"colorMode": "value",
"graphMode": "none",
"justifyMode": "center",
"orientation": "auto",
"reduceOptions": {
"calcs": [
"lastNotNull"
],
"fields": "",
"values": false
},
"textMode": "auto"
},
"pluginVersion": "7.3.7",
"targets": [
{
"groupBy": [],
"measurement": "jitsi_stats",
"orderByTime": "ASC",
"policy": "default",
"query": "SELECT last(\"endpoints_sending_video\") FROM \"jitsi_stats\" WHERE (\"host\" =~ /^$jitsi_host$/) AND $timeFilter",
"rawQuery": true,
"refId": "A",
"resultFormat": "time_series",
"select": [
[
{
"params": [
"videostreams"
],
"type": "field"
},
{
"params": [],
"type": "last"
}
]
],
"tags": [
{
"key": "host",
"operator": "=~",
"value": "/^$jitsi_host$/"
}
]
}
],
"timeFrom": null,
"timeShift": null,
"title": "Video Broadcasts",
"type": "stat"
},
{
"datasource": "InfluxDB",
"fieldConfig": {
"defaults": {
"custom": {},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
}
]
},
"unit": "ms"
},
"overrides": []
},
"gridPos": {
"h": 4,
"w": 2,
"x": 12,
"y": 0
},
"id": 23,
"options": {
"colorMode": "value",
"graphMode": "area",
"justifyMode": "auto",
"orientation": "auto",
"reduceOptions": {
"calcs": [
"lastNotNull"
],
"fields": "",
"values": false
},
"textMode": "auto"
},
"pluginVersion": "7.3.7",
"targets": [
{
"alias": "Jitter",
"groupBy": [
{
"params": [
"$interval"
],
"type": "time"
},
{
"params": [
"none"
],
"type": "fill"
}
],
"measurement": "jitsi_stats",
"orderByTime": "ASC",
"policy": "default",
"refId": "A",
"resultFormat": "time_series",
"select": [
[
{
"params": [
"jitter_aggregate"
],
"type": "field"
},
{
"params": [],
"type": "mean"
}
]
],
"tags": [
{
"key": "host",
"operator": "=~",
"value": "/^$jitsi_host$/"
}
]
}
],
"timeFrom": null,
"timeShift": null,
"title": "Jitter Aggregate",
"type": "stat"
},
{
"datasource": null,
"fieldConfig": {
"defaults": {
"custom": {},
"mappings": [],
"max": 100,
"thresholds": {
"mode": "percentage",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "#EAB839",
"value": 80
},
{
"color": "red",
"value": 90
}
]
},
"unit": "percent"
},
"overrides": []
},
"gridPos": {
"h": 8,
"w": 5,
"x": 14,
"y": 0
},
"id": 25,
"options": {
"orientation": "auto",
"reduceOptions": {
"calcs": [
"mean"
],
"fields": "",
"values": false
},
"showThresholdLabels": false,
"showThresholdMarkers": true
},
"pluginVersion": "7.3.7",
"targets": [
{
"groupBy": [
{
"params": [
"$__interval"
],
"type": "time"
},
{
"params": [
"null"
],
"type": "fill"
}
],
"measurement": "mem",
"orderByTime": "ASC",
"policy": "default",
"query": "SELECT mean(\"used_percent\") FROM \"mem\" WHERE (\"host\" = 'jitsi_host') AND $timeFilter GROUP BY time($__interval) fill(null)",
"rawQuery": true,
"refId": "A",
"resultFormat": "time_series",
"select": [
[
{
"params": [
"used_percent"
],
"type": "field"
},
{
"params": [],
"type": "mean"
}
]
],
"tags": [
{
"key": "host",
"operator": "=",
"value": "jitsi_host"
}
]
}
],
"timeFrom": null,
"timeShift": null,
"title": "Random Access Memory (RAM)",
"type": "gauge"
},
{
"datasource": null,
"description": "",
"fieldConfig": {
"defaults": {
"custom": {},
"mappings": [],
"max": 100,
"thresholds": {
"mode": "percentage",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "#EAB839",
"value": 80
},
{
"color": "red",
"value": 90
}
]
},
"unit": "percent"
},
"overrides": []
},
"gridPos": {
"h": 8,
"w": 5,
"x": 19,
"y": 0
},
"id": 65084,
"options": {
"orientation": "auto",
"reduceOptions": {
"calcs": [
"mean"
],
"fields": "",
"values": false
},
"showThresholdLabels": false,
"showThresholdMarkers": true
},
"pluginVersion": "7.3.7",
"targets": [
{
"groupBy": [
{
"params": [
"$__interval"
],
"type": "time"
},
{
"params": [
"null"
],
"type": "fill"
}
],
"measurement": "cpu",
"orderByTime": "ASC",
"policy": "default",
"query": "SELECT last(\"usage_idle\") * -1 + 100 FROM \"cpu\" WHERE (\"host\" = 'jitsi_host' AND \"cpu\" = 'cpu-total')",
"rawQuery": true,
"refId": "A",
"resultFormat": "time_series",
"select": [
[
{
"params": [
"usage_system"
],
"type": "field"
},
{
"params": [],
"type": "mean"
}
]
],
"tags": [
{
"key": "host",
"operator": "=",
"value": "jitsi_host"
}
]
}
],
"timeFrom": null,
"timeShift": null,
"title": "Processor (CPU)",
"type": "gauge"
},
{
"datasource": "InfluxDB",
"description": "Sum of activated audio transmissions.",
"fieldConfig": {
"defaults": {
"custom": {},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
}
]
}
},
"overrides": []
},
"gridPos": {
"h": 4,
"w": 2,
"x": 10,
"y": 4
},
"id": 12,
"options": {
"colorMode": "value",
"graphMode": "none",
"justifyMode": "center",
"orientation": "auto",
"reduceOptions": {
"calcs": [
"mean"
],
"fields": "",
"values": false
},
"textMode": "auto"
},
"pluginVersion": "7.3.7",
"targets": [
{
"groupBy": [],
"measurement": "jitsi_stats",
"orderByTime": "ASC",
"policy": "default",
"query": "SELECT last(\"endpoints_sending_audio\") FROM \"jitsi_stats\" WHERE (\"host\" =~ /^$jitsi_host$/) AND $timeFilter",
"rawQuery": true,
"refId": "A",
"resultFormat": "time_series",
"select": [
[
{
"params": [
"p2p_conferences"
],
"type": "field"
},
{
"params": [],
"type": "last"
}
]
],
"tags": [
{
"key": "host",
"operator": "=~",
"value": "/^$jitsi_host$/"
}
]
}
],
"timeFrom": null,
"timeShift": null,
"title": "Audio Broadcasts",
"type": "stat"
},
{
"datasource": "InfluxDB",
"fieldConfig": {
"defaults": {
"custom": {},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
}
]
},
"unit": "ms"
},
"overrides": []
},
"gridPos": {
"h": 4,
"w": 2,
"x": 12,
"y": 4
},
"id": 17,
"options": {
"colorMode": "value",
"graphMode": "area",
"justifyMode": "auto",
"orientation": "auto",
"reduceOptions": {
"calcs": [
"lastNotNull"
],
"fields": "",
"values": false
},
"textMode": "auto"
},
"pluginVersion": "7.3.7",
"targets": [
{
"alias": "RTT",
"groupBy": [
{
"params": [
"$interval"
],
"type": "time"
},
{
"params": [
"none"
],
"type": "fill"
}
],
"measurement": "jitsi_stats",
"orderByTime": "ASC",
"policy": "default",
"refId": "A",
"resultFormat": "time_series",
"select": [
[
{
"params": [
"rtt_aggregate"
],
"type": "field"
},
{
"params": [],
"type": "mean"
}
]
],
"tags": [
{
"key": "host",
"operator": "=~",
"value": "/^$jitsi_host$/"
}
]
}
],
"timeFrom": null,
"timeShift": null,
"title": "RTT Aggregate",
"type": "stat"
},
{
"aliasColors": {},
"bars": false,
"dashLength": 10,
"dashes": false,
"datasource": "InfluxDB",
"decimals": 0,
"fieldConfig": {
"defaults": {
"custom": {},
"links": []
},
"overrides": []
},
"fill": 1,
"fillGradient": 5,
"gridPos": {
"h": 8,
"w": 24,
"x": 0,
"y": 8
},
"hiddenSeries": false,
"id": 9,
"legend": {
"avg": true,
"current": true,
"max": true,
"min": false,
"show": true,
"total": false,
"values": true
},
"lines": true,
"linewidth": 1,
"nullPointMode": "null",
"options": {
"alertThreshold": true
},
"percentage": false,
"pluginVersion": "7.3.7",
"pointradius": 2,
"points": false,
"renderer": "flot",
"seriesOverrides": [
{
"alias": "Subscriber",
"color": "#FF9830"
},
{
"alias": "Conferences",
"color": "#1F60C4"
}
],
"spaceLength": 10,
"stack": false,
"steppedLine": false,
"targets": [
{
"alias": "Subscriber",
"groupBy": [
{
"params": [
"$__interval"
],
"type": "time"
},
{
"params": [
"null"
],
"type": "fill"
}
],
"measurement": "jitsi_stats",
"orderByTime": "ASC",
"policy": "default",
"refId": "A",
"resultFormat": "time_series",
"select": [
[
{
"params": [
"participants"
],
"type": "field"
},
{
"params": [],
"type": "mean"
}
]
],
"tags": [
{
"key": "host",
"operator": "=~",
"value": "/^$jitsi_host$/"
}
]
},
{
"alias": "Conferences",
"groupBy": [
{
"params": [
"$__interval"
],
"type": "time"
},
{
"params": [
"null"
],
"type": "fill"
}
],
"measurement": "jitsi_stats",
"orderByTime": "ASC",
"policy": "default",
"refId": "B",
"resultFormat": "time_series",
"select": [
[
{
"params": [
"conferences"
],
"type": "field"
},
{
"params": [],
"type": "mean"
}
]
],
"tags": [
{
"key": "host",
"operator": "=~",
"value": "/^$jitsi_host$/"
}
]
}
],
"thresholds": [],
"timeFrom": null,
"timeRegions": [],
"timeShift": null,
"title": "Chronology - Conferences & Participants",
"tooltip": {
"shared": true,
"sort": 0,
"value_type": "individual"
},
"type": "graph",
"xaxis": {
"buckets": null,
"mode": "time",
"name": null,
"show": true,
"values": []
},
"yaxes": [
{
"decimals": 0,
"format": "short",
"label": null,
"logBase": 1,
"max": null,
"min": null,
"show": true
},
{
"decimals": null,
"format": "short",
"label": null,
"logBase": 1,
"max": null,
"min": null,
"show": true
}
],
"yaxis": {
"align": false,
"alignLevel": null
}
},
{
"aliasColors": {},
"bars": false,
"dashLength": 10,
"dashes": false,
"datasource": "InfluxDB",
"fieldConfig": {
"defaults": {
"custom": {},
"links": []
},
"overrides": []
},
"fill": 1,
"fillGradient": 0,
"gridPos": {
"h": 7,
"w": 12,
"x": 0,
"y": 16
},
"hiddenSeries": false,
"id": 7,
"legend": {
"alignAsTable": true,
"avg": true,
"current": true,
"max": true,
"min": true,
"show": true,
"total": false,
"values": true
},
"lines": true,
"linewidth": 1,
"nullPointMode": "null",
"options": {
"alertThreshold": true
},
"percentage": false,
"pluginVersion": "7.3.7",
"pointradius": 2,
"points": false,
"renderer": "flot",
"seriesOverrides": [
{
"alias": "bit_rate_download",
"transform": "negative-Y"
}
],
"spaceLength": 10,
"stack": false,
"steppedLine": false,
"targets": [
{
"alias": "bit_rate_download",
"groupBy": [
{
"params": [
"$__interval"
],
"type": "time"
},
{
"params": [
"null"
],
"type": "fill"
}
],
"measurement": "jitsi_stats",
"orderByTime": "ASC",
"policy": "default",
"refId": "A",
"resultFormat": "time_series",
"select": [
[
{
"params": [
"bit_rate_download"
],
"type": "field"
},
{
"params": [],
"type": "mean"
}
]
],
"tags": [
{
"key": "host",
"operator": "=~",
"value": "/^$jitsi_host$/"
}
]
},
{
"alias": "bit_rate_upload",
"groupBy": [
{
"params": [
"$__interval"
],
"type": "time"
},
{
"params": [
"null"
],
"type": "fill"
}
],
"measurement": "jitsi_stats",
"orderByTime": "ASC",
"policy": "default",
"refId": "B",
"resultFormat": "time_series",
"select": [
[
{
"params": [
"bit_rate_upload"
],
"type": "field"
},
{
"params": [],
"type": "mean"
}
]
],
"tags": [
{
"key": "host",
"operator": "=~",
"value": "/^$jitsi_host$/"
}
]
}
],
"thresholds": [],
"timeFrom": null,
"timeRegions": [],
"timeShift": null,
"title": "Network",
"tooltip": {
"shared": true,
"sort": 0,
"value_type": "individual"
},
"type": "graph",
"xaxis": {
"buckets": null,
"mode": "time",
"name": null,
"show": true,
"values": []
},
"yaxes": [
{
"format": "Kbits",
"label": null,
"logBase": 1,
"max": null,
"min": null,
"show": true
},
{
"format": "short",
"label": null,
"logBase": 1,
"max": null,
"min": null,
"show": true
}
],
"yaxis": {
"align": false,
"alignLevel": null
}
},
{
"aliasColors": {},
"bars": false,
"dashLength": 10,
"dashes": false,
"datasource": "InfluxDB",
"fieldConfig": {
"defaults": {
"custom": {},
"links": []
},
"overrides": []
},
"fill": 1,
"fillGradient": 0,
"gridPos": {
"h": 7,
"w": 12,
"x": 12,
"y": 16
},
"hiddenSeries": false,
"id": 18,
"legend": {
"alignAsTable": true,
"avg": true,
"current": true,
"max": true,
"min": true,
"show": true,
"total": false,
"values": true
},
"lines": true,
"linewidth": 1,
"nullPointMode": "null",
"options": {
"alertThreshold": true
},
"percentage": false,
"pluginVersion": "7.3.7",
"pointradius": 2,
"points": false,
"renderer": "flot",
"seriesOverrides": [
{
"alias": "loss_rate_download",
"transform": "negative-Y"
}
],
"spaceLength": 10,
"stack": false,
"steppedLine": false,
"targets": [
{
"alias": "loss_rate_download",
"groupBy": [
{
"params": [
"$__interval"
],
"type": "time"
},
{
"params": [
"null"
],
"type": "fill"
}
],
"measurement": "jitsi_stats",
"orderByTime": "ASC",
"policy": "default",
"query": "SELECT mean(\"incoming_loss\") FROM \"jitsi_stats\" WHERE (\"host\" =~ /^$jitsi_host$/) AND $timeFilter GROUP BY time($__interval) fill(null)",
"rawQuery": true,
"refId": "A",
"resultFormat": "time_series",
"select": [
[
{
"params": [
"loss_rate_download"
],
"type": "field"
},
{
"params": [],
"type": "mean"
}
]
],
"tags": [
{
"key": "host",
"operator": "=~",
"value": "/^$jitsi_host$/"
}
]
},
{
"alias": "loss_rate_upload",
"groupBy": [
{
"params": [
"$__interval"
],
"type": "time"
},
{
"params": [
"null"
],
"type": "fill"
}
],
"measurement": "jitsi_stats",
"orderByTime": "ASC",
"policy": "default",
"query": "SELECT mean(\"outgoing_loss\") FROM \"jitsi_stats\" WHERE (\"host\" =~ /^$jitsi_host$/) AND $timeFilter GROUP BY time($__interval) fill(null)",
"rawQuery": true,
"refId": "B",
"resultFormat": "time_series",
"select": [
[
{
"params": [
"loss_rate_upload"
],
"type": "field"
},
{
"params": [],
"type": "mean"
}
]
],
"tags": [
{
"key": "host",
"operator": "=~",
"value": "/^$jitsi_host$/"
}
]
}
],
"thresholds": [],
"timeFrom": null,
"timeRegions": [],
"timeShift": null,
"title": "Packet Loss",
"tooltip": {
"shared": true,
"sort": 0,
"value_type": "individual"
},
"type": "graph",
"xaxis": {
"buckets": null,
"mode": "time",
"name": null,
"show": true,
"values": []
},
"yaxes": [
{
"format": "percent",
"label": null,
"logBase": 1,
"max": null,
"min": null,
"show": true
},
{
"format": "short",
"label": null,
"logBase": 1,
"max": null,
"min": null,
"show": true
}
],
"yaxis": {
"align": false,
"alignLevel": null
}
}
],
"refresh": "5s",
"schemaVersion": 26,
"style": "dark",
"tags": [
"jitsi"
],
"templating": {
"list": [
{
"allValue": null,
"current": {
"selected": false,
"text": "jitsi_host",
"value": "jitsi_host"
},
"datasource": "InfluxDB",
"definition": "show tag values from \"jitsi_stats\" with key=\"host\"",
"error": null,
"hide": 0,
"includeAll": false,
"label": null,
"multi": false,
"name": "jitsi_host",
"options": [],
"query": "show tag values from \"jitsi_stats\" with key=\"host\"",
"refresh": 1,
"regex": "",
"skipUrlSync": false,
"sort": 0,
"tagValuesQuery": "",
"tags": [],
"tagsQuery": "",
"type": "query",
"useTags": false
}
]
},
"time": {
"from": "now-6h",
"to": "now"
},
"timepicker": {
"refresh_intervals": [
"10s",
"30s",
"1m",
"5m",
"15m",
"30m",
"1h",
"2h",
"1d"
]
},
"timezone": "",
"title": "Jitsi Meet Statistics",
"uid": "XXXYYYXXX",
"version": 5
}
copy watermark and favicon in root folder
docker cp watermark.png docker-jitsi-meet-stable-6726_web_1:/usr/share/jitsi-meet/images/
docker cp favicon.ico docker-jitsi-meet-stable-6726_web_1:/usr/share/jitsi-meet/images/
docker cp favicon.ico docker-jitsi-meet-stable-6726_web_1:/usr/share/jitsi-meet/
docker cp welcome-background.png docker-jitsi-meet-stable-6726_web_1:/usr/share/jitsi-meet/images/
docker cp jitsiLogo_square.png docker-jitsi-meet-stable-6726_web_1:/usr/share/jitsi-meet/images/
docker cp docker-jitsi-meet-stable-6726_etherpad_1:/opt/etherpad-lite/settings.json /root/
docker cp docker-jitsi-meet-stable-6726_web_1:/usr/share/jitsi-meet/css/all.css /root/
docker cp docker-jitsi-meet-stable-6726_web_1:/usr/share/jitsi-meet/libs/app.bundle.min.js /root/
docker cp docker-jitsi-meet-stable-6726_web_1:/usr/share/jitsi-meet/title.html /root/
After doing all changes in files
docker cp settings.json docker-jitsi-meet-stable-6726_etherpad_1:/opt/etherpad-lite/
docker cp all.css docker-jitsi-meet-stable-6726_web_1:/usr/share/jitsi-meet/css/
docker cp app.bundle.min.js docker-jitsi-meet-stable-6726_web_1:/usr/share/jitsi-meet/libs/
docker cp title.html docker-jitsi-meet-stable-6726_web_1:/usr/share/jitsi-meet/
After that do changes in config files
nano /root/.jitsi-meet-cfg/web/interface_config.js
nano /root/.jitsi-meet-cfg/web/config.js
Auto scaling
Average Network Out at 875000000
Click to rate this post!
[Total: 0 Average: 0]