====== Deploy Jitsi with Docker + High Quality ======
Every ''%%eolab.de%%'' has to be changed to your URL.
==== Prerequisits ====
* Ubuntu Server 20.04
* Docker and Docker-Compose are installed
* Running NGINX Reverse Proxy
* A SSL certificate for the desired url
==== Downloading Jitsi ====
- git clone https://github.com/jitsi/docker-jitsi-meet.git
- mv docker-jitsi-meet/ jitsi-meet/
- cd jitsi-meet/
- cp env.example .env
- ./gen-passwords.sh
- mkdir -p ~/.jitsi-meet-cfg/{web/letsencrypt,transcripts,prosody,jicofo,jvb,jigasi,jibri}
==== Configuring Jitsi ====
- nano .env
- make sure it uses an unused port HTTP_PORT=8000
- set timezone TZ=Europe/Berlin
- set the later used public URL PUBLIC_URL=https://meet.eolab.de
==== Configuring NGINX ====
- sudo nano /etc/nginx/sites-available/eolab.de
- make sure there is a redirect from HTTP to https (port 80 to 443)
- add this to the top
upstream jitsi {
server localhost:8000;
}
change the port if needed
- add this to the bottom
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name meet.eolab.de;
ssl_certificate /etc/letsencrypt/live/meet.eolab.de/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/meet.eolab.de/privkey.pem;
include snippets/ssl-params.conf;
add_header Strict-Transport-Security "max-age=31536000; includeSubdomains; preload";
add_header X-Xss-Protection "1; mode=block";
add_header X-Content-Type-Options nosniff;
add_header Referrer-Policy same-origin;
proxy_cookie_path / "/; HTTPOnly; Secure";
add_header Expect-CT "enforce, max-age=21600";
add_header Feature-Policy "payment none";
keepalive_timeout 70;
sendfile on;
client_max_body_size 0;
gzip on;
gzip_disable "msie6";
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
location / {
log_not_found off;
proxy_cache_valid 200 120m;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Scheme $scheme;
proxy_pass http://jitsi/;
}
location ~ ^/colibri-ws/([a-zA-Z0-9-\.]+)/(.*) {
tcp_nodelay on;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_pass http://jitsi/colibri-ws/$1/$2$is_args$args;
}
location /xmpp-websocket {
tcp_nodelay on;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_pass http://jitsi/xmpp-websocket;
}
}
make sure to change the ''%%server_name%%'', ''%%ssl_certificate%%'' and ''%%ssl_certificate_key%%''
- Save and quit the file
- sudo systemctl restart nginx
==== Start Jitsi ====
- docker-compose up -d
==== Configure Jitsi with internal authentication for creating rooms ====
- make sure Jitsi was run at least once
- stop it if its running docker-compose stop
- sudo rm -r ~/.jitsi-meet-cfg
- mkdir -p ~/.jitsi-meet-cfg/{web/letsencrypt,transcripts,prosody,jicofo,jvb,jigasi,jibri}
- nano .env
- ENABLE_AUTH=1
- ENABLE_GUESTS=1
- AUTH_TYPE=internal
- Save and quit the file
- docker-compose up -d
- find the container id of the jitsi_prosody container and copy that docker ps -a
- docker exec -it CONTAINER-ID-HERE /bin/bash
- su
- change the ''%%username%%'' and ''%%password%%'' in this command: prosodyctl --config /config/prosody.cfg.lua register username meet.jitsi password
These credentials are now needed to create a new room
- exit
- exit
==== Configure Jitsi for high quality webcams and screenshares ====
- make sure Jitsi was run at least once
- stop it if its running docker-compose stop
- nano ~/.jitsi-meet-cfg/web/custom-config.js
- config.startAudioMuted = 1;
config.resolution = 1080;
config.constraints.video.height = {ideal: 1080, max: 1440, min:480};
config.startVideoMuted = 1;
config.enableNoisyMicDetection = 1;
config.desktopSharingFrameRate = {min: 5, max: 24};
config.videoQuality.maxBitratesVideo = {low: 1500000, standard: 5000000, high: 10000000}
- Save and quit the file
- docker-compose up -d
I´ve done this differently before by editing the ''%%config.js%%'' directly (see older revisions) but it seemed to me that the settings weren't saved correctly. This post helped me: [[https://community.jitsi.org/t/solved-config-js-recreated-on-every-container-start-how-to-configure/82454/6|[Solved] Config.js recreated on every container start - how to configure?]]