Deployment Overview of Jitsi on Server¶
Prerequisites and Basic Requirements¶
-
Operating System: Debian-based distribution (Ubuntu 22.04 "Jammy" or compatible).
-
Privileges: Root access or
sudoprivileges are required for installation and configuration. -
Domain: A fully qualified domain name (FQDN) pointing to the server's public IP address.
-
Network: Inbound traffic must be allowed for ports 80 (TCP), 443 (TCP), and 10000 (UDP).
-
Storage: Sufficient disk space for Jitsi packages, logs, and potential media storage.
-
Time: System time must be synchronized via NTP to ensure valid SSL certificates and XMPP operations.
FQDN of the Final Panel¶
The application is accessible via the following FQDN format on the hostkey.in domain:
-
Format:
jitsi<Server ID>.hostkey.in -
Port: 443 (HTTPS)
-
Example: If the Server ID is
123, the address isjitsi123.hostkey.in.
File and Directory Structure¶
The following directories and files are configured for the Jitsi deployment:
-
Configuration Files:
-
Nginx server block:
/etc/nginx/sites-available/jitsi<Server ID>.hostkey.in.confor/data/nginx/user_conf.d/jitsi<Server ID>.hostkey.in.conf -
Jitsi Meet configuration:
/etc/jitsi/meet/ -
Prosody configuration:
/etc/prosody/conf.avail/ -
Let's Encrypt certificates:
/etc/letsencrypt/ -
Data and Logs:
-
Logs:
/var/log/jitsi/ -
Jitsi Meet web data:
/usr/share/jitsi-meet/ -
Nginx custom configurations (if using Docker proxy):
/data/nginx/user_conf.d/ -
Certificates:
-
Managed by Certbot:
/etc/letsencrypt/live/and/etc/letsencrypt/archive/
Application Installation Process¶
The application is installed using APT package manager with the following components:
-
jitsi-meet: Core web application. -
jicofo: Jitsi Conference Focus (FOC). -
jitsi-videobridge2: Media bridge for handling video streams. -
jitsi-meet-prosody: XMPP server configuration for signaling. -
jitsi-meet-web: Static web assets. -
jitsi-meet-web-config: Web configuration management. -
jitsi-meet-turnserver: TURN server for NAT traversal (if configured). -
nginx: Web server and reverse proxy.
Installation steps involve:
-
Adding the official Jitsi repository (
https://download.jitsi.org stable/). -
Adding the Prosody repository (
https://packages.prosody.im/debian jammy main). -
Preseeding configuration values (hostname, certificate type) to automate
jitsi-meet-web-config. -
Running
apt installto deploy the packages. -
Generating a Let's Encrypt SSL certificate using the non-interactive script provided by Jitsi.
Access Rights and Security¶
-
Firewall: UFW is enabled with specific rules allowing traffic on ports 80, 443, and 10000. All other ports are blocked by default.
-
Users: The application runs under system service accounts (e.g.,
prosody,jitsi-videobridge,jicofo). Direct root access is not required for daily operation. -
Restrictions:
-
The default Nginx site is removed to ensure only the Jitsi FQDN serves traffic.
-
TLS is enforced via Nginx configuration; HTTP traffic on port 80 redirects to HTTPS.
-
Proxy settings disable SSL verification for the internal upstream (
proxy_ssl_verify off) because the internal service uses self-signed certificates managed by Jitsi.
Databases¶
-
Storage Method: Jitsi Meet primarily uses SQLite for local storage in standard configurations.
-
Location: Database files are stored within the Jitsi data directory, typically under
/var/lib/jitsi-meet/or managed by thejitsi-meetpackage defaults. -
Connection: No external database server (like MySQL or PostgreSQL) is explicitly configured in the provided deployment data; the application relies on the local file-based database.
Docker Containers and Their Deployment¶
If a Docker-based proxy is utilized, the following containers are deployed via docker compose:
-
Service:
nginx(using imagejonasal/nginx-certbot:latest). -
Deployment Location:
/root/nginx/compose.yml. -
Network Mode: Host networking (
network_mode: host). -
Volumes:
-
nginx_secretsmounted to/etc/letsencrypt. -
/data/nginx/user_conf.dmounted to/etc/nginx/user_conf.dfor custom site configurations. -
DNS: Resolvers set to
1.1.1.1and8.8.8.8.
Proxy Servers¶
Nginx is configured as the reverse proxy handling both HTTP and HTTPS traffic.
-
Ports: Listens on 80 (HTTP) and 443 (HTTPS with SSL and HTTP/2).
-
Internal Routing:
-
Traffic is proxied to
https://127.0.0.1:8443/for the main web interface. -
Websocket and signaling paths are proxied to
https://127.0.0.1:8443for specific endpoints:-
/xmpp-websocket -
/colibri-ws/ -
/http-bind
-
-
Headers: The proxy forwards
Host,X-Real-IP,X-Forwarded-For,X-Forwarded-Proto, andUpgradeheaders to the backend. -
SSL: Managed by Let's Encrypt via Certbot. Certificates are automatically issued and renewed.
Permission Settings¶
-
Configuration Files: Nginx configuration files are owned by
rootwith permissions0644. -
Directories:
-
/root/nginx/: Owned byroot, permissions0755. -
/data/nginx/user_conf.d/: Owned byroot, permissions0755. -
Service Files: Application binaries and standard configuration files follow system default permissions set by the APT packages.
Location of Configuration Files and Data¶
-
Nginx Configuration:
-
Primary:
/etc/nginx/sites-available/or/data/nginx/user_conf.d/(depending on the deployment method). -
Active: Symlinked in
/etc/nginx/sites-enabled/. -
Jitsi Configuration:
-
General config:
/etc/jitsi/meet/. -
Prosody config:
/etc/prosody/conf.avail/. -
Certificates:
-
Let's Encrypt:
/etc/letsencrypt/. -
Logs:
-
System logs:
/var/log/jitsi/. -
Nginx logs:
/var/log/nginx/.
Available Ports for Connection¶
The following ports are open and configured for client access:
-
Port 80 (TCP): HTTP traffic, redirects to HTTPS.
-
Port 443 (TCP): HTTPS traffic, serves the Jitsi web interface and WebSocket connections.
-
Port 10000 (UDP): Media traffic (RTP) for video and audio streams.
Starting, Stopping, and Updating¶
Service management is handled via systemd. The following services are active and enabled:
-
prosody -
jicofo -
jitsi-videobridge2 -
nginx
Commands for service management:
-
Start services:
-
Stop services:
-
Restart services:
-
Check status:
For Docker deployments, use docker compose within the /root/nginx directory:
-
Start:
-
Stop: