Install jitsi-meet for a local network

Ok. If I add noSSL: true then client able to make a call to the server but it will give no ‘audio’/‘video’ found error. Is that mandatory to add https connection in the local network without internet? Because I’m trying to access using network IP (ex: 192.168.0.100).

Yes, this is a webrtc requirement, webrtc is working only when your browser uses https.

1 Like

Hi @damencho ,

I have setup the selfsigned certificate in my server with nginx proxy. My nginx proxy settings looks like below,

server {
    listen       80;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name  192.168.0.100;
    root /Users/apple/workspace/webapp/build;
   
    ssl_certificate /etc/ssl/certs/nginx-selfsigned.crt;
    ssl_certificate_key /etc/ssl/private/nginx-selfsigned.key;

    ssl_protocols TLSv1.2 TLSv1.1 TLSv1;

    location / {
                root /Users/apple/workspace/webapp/build;
                try_files $uri /index.html;

                # kill cache
                add_header Last-Modified $date_gmt;
                #add_header Cache-Control 'no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0';
                #if_modified_since off;
                #expires off;
                #etag off;
        }
location ~* (service-worker\.js)$ {
    add_header 'Cache-Control' 'no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0';
    expires off;
    proxy_no_cache 1;
}
        location /api/ {
            # First attempt to serve request as file, then
            # as directory, then fall back to displaying a 404.
            # try_files $uri $uri/ =404;
            rewrite ^/api/?(.*) /$1 break;
            proxy_pass http://localhost:5000;
            proxy_redirect off;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection 'upgrade';
            proxy_set_header Host $host;
            proxy_cache_bypass $http_upgrade;
            proxy_read_timeout 5m;
            proxy_connect_timeout 5m;
            proxy_buffer_size   128k;
            proxy_buffers   4 256k;
            proxy_busy_buffers_size   256k;
        }
        location /ws/ {
            proxy_pass http://localhost:5001/;
            proxy_redirect off;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "Upgrade";
            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 /meet/ {
            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-NginX-Proxy true;
            proxy_pass http://localhost:8000/;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
        }

        location ~ ^/([a-zA-Z0-9]+)$ {
            rewrite ^/(.*)$ / break;
        }
        # BOSH
        location /http-bind {
            proxy_pass      http://localhost:5280/http-bind;
            proxy_set_header X-Forwarded-For $remote_addr;
            proxy_set_header Host $http_host;
        }
        # xmpp websockets
        location /xmpp-websocket {
            proxy_pass http://localhost:5280;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_set_header Host $host;
            tcp_nodelay on;
        }
}

After adding this configuration I’m getting below error in my console while accessing the conference.


Please help me.

Thank you.

You are accessing your bosh connection with ip-address not with dns. Did you use ip-address to setup or dns?
Try accessing directly the bosh address and see it working.

1 Like

The thing is I’m using LAN IP for accessing the server. I have an application running on 192.168.0.100 port 80 and inside this application, I’m using jitsi external API to load the embedded video stream. The jitsi web application running on 8080 port. I’m using nginx server for proxy redirection. (Jitsi server running in 192.168.0.100/meet)

But the problem here is, BOSH request not calling the actual endpoint (the client request going to https://192.168.0.100/http-bind instead it should be https://192.168.0.100/meet/http-bind).

09%20AM

My jitsi external api conf looks like below,

const domain = '192.168.0.100/meet'; 
    const options = {
        roomName: 'sample',
        width: '100%',
        height: '100%',
        parentNode: document.querySelector('#meet'),
        configOverwrite: {
            disableThirdPartyRequests: true
        },
        interfaceConfigOverwrite: {
            TOOLBAR_BUTTONS: [],
            SHOW_WATERMARK_FOR_GUESTS: false,
            SHOW_BRAND_WATERMARK: false,
            SHOW_JITSI_WATERMARK: false
        },
        noSSL: false
    };
    const api = new JitsiMeetExternalAPI(domain, options);

36%20PM

No idea whats going on.:pensive:

Change your config.js and change the bosh url to match your setup.

1 Like

After spending many days, I have fixed the issue and now streaming works great. Thank you very much @damencho for the help.

I have updated bosh proxy config like below,

location /meet/ {
            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-NginX-Proxy true;
            proxy_pass http://localhost:8000/;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
        }

        location ~ ^/([a-zA-Z0-9]+)$ {
            rewrite ^/(.*)$ / break;
        }
        # BOSH
        location /http-bind {
            proxy_pass      http://localhost:8000/http-bind;
            proxy_set_header X-Forwarded-For $remote_addr;
            proxy_set_header Host $http_host;
        }
        # xmpp websockets
        location /xmpp-websocket {
            rewrite ^/xmpp-websocket/?(.*) /$1 break;
            proxy_pass http://localhost:8000;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_set_header Host $host;
            tcp_nodelay on;
        }

and also I have updated the client config like below,

@damencho Thank you once again.

Hi @dashohoxha i have installed jitsi-meet server on a VPS on the cloud and i follow the NAT configuration mentione in the quick install but when there are more than 2 participants in the same room there is no audio no video (black screen ). can you help me fix this please .Thanks

I don’t really know the intricacies of jitsi-meet, but I suspect that it may be some firewall issue.

You can try to install it with my scripts. If this works, probably you are missing something on the configuration.

Anyway, this discussion is a bit off topic. Maybe you should start another discussion topic.

1 Like

I looked again at this issue, and after trying several things, the most easy solution is to use a domain like <hostname>.local, where <hostname> is the name of the local host (which can be found with the command hostname). If you have avahi-daemon installed (in debian/ubuntu), then the other hosts on the LAN can access the local jitsi server with https://hostname.local (this is called mDNS), and everything seems to work fine.

By the way, Android does not support yet mDNS, so you will not be able to access such a local server from Android devices.

I have noticed something:
When the server and the client (on the LAN) have access to internet, then both chat and video work.
When the LAN is isolated from the internet, then chat works, but video does not.

Does it make sense? Is the video connection using a middle server? Is there something that can be done to fix this?