339 lines
9.0 KiB
Markdown
339 lines
9.0 KiB
Markdown
# Jitsi Meet - Complete Video Conferencing Platform
|
|
|
|
**🟡 Communication Service**
|
|
|
|
## 📋 Service Overview
|
|
|
|
| Property | Value |
|
|
|----------|-------|
|
|
| **Service Name** | Jitsi Meet (Complete Stack) |
|
|
| **Host** | Atlantis (192.168.0.200) |
|
|
| **Category** | Communication |
|
|
| **Difficulty** | 🟡 |
|
|
| **Docker Images** | `jitsi/web`, `jitsi/prosody`, `jitsi/jicofo`, `jitsi/jvb` |
|
|
| **Compose File** | `Atlantis/jitsi/jitsi.yml` |
|
|
| **Directory** | `Atlantis/jitsi` |
|
|
| **External Domain** | `meet.thevish.io` |
|
|
|
|
## 🎯 Purpose
|
|
|
|
Jitsi Meet is a complete open-source video conferencing platform that provides secure, high-quality video calls and meetings. It includes web interface, XMPP server, conference focus, and video bridge components.
|
|
|
|
## 🌐 Port Forwarding Configuration
|
|
|
|
### **External Access (Router Port Forwards)**
|
|
| Service | External Port | Internal Port | Protocol | Purpose |
|
|
|---------|---------------|---------------|----------|---------|
|
|
| **Jitsi Web** | 4443 | 4443 | TCP | HTTPS web interface |
|
|
| **STUN Server** | 3478 | 3478 | All | NAT traversal for WebRTC |
|
|
| **TURN Server** | 5349 | 5349 | All | Relay for restricted networks |
|
|
| **RTP Media** | 49160-49200 | 49160-49200 | All | Media streams (40 port range) |
|
|
|
|
### **Internal Container Ports**
|
|
| Component | Container Port | Host Port | Purpose |
|
|
|-----------|----------------|-----------|---------|
|
|
| **Jitsi Web** | 80, 443 | 5080, 5443 | HTTP/HTTPS interface |
|
|
| **JVB** | 10000/udp | 10000/udp | Video bridge |
|
|
| **Prosody** | 5222, 5347 | Internal | XMPP server |
|
|
|
|
## 🚀 Quick Start
|
|
|
|
### Prerequisites
|
|
- Docker and Docker Compose installed
|
|
- Port forwarding configured on router
|
|
- Domain name pointing to external IP
|
|
- SSL certificates (Let's Encrypt recommended)
|
|
|
|
### Deployment
|
|
```bash
|
|
# Navigate to service directory
|
|
cd Atlantis/jitsi
|
|
|
|
# Start the complete Jitsi Meet stack
|
|
docker-compose up -d
|
|
|
|
# Check all services status
|
|
docker-compose ps
|
|
|
|
# View logs for all components
|
|
docker-compose logs -f
|
|
```
|
|
|
|
### External Access
|
|
```bash
|
|
# Primary access URL
|
|
https://meet.thevish.io
|
|
|
|
# Alternative domain access
|
|
https://meet.vish.gg
|
|
|
|
# Direct port access (if needed)
|
|
https://meet.thevish.io:4443
|
|
```
|
|
|
|
## 🔧 Configuration
|
|
|
|
### Docker Compose Services
|
|
|
|
#### **Jitsi Web (Frontend)**
|
|
```yaml
|
|
web:
|
|
image: jitsi/web:stable
|
|
container_name: jitsi-web
|
|
ports:
|
|
- "5080:80" # HTTP (redirects to HTTPS)
|
|
- "5443:443" # HTTPS web interface
|
|
environment:
|
|
- PUBLIC_URL=https://meet.thevish.io
|
|
- ENABLE_P2P=0
|
|
- ENABLE_TURN=1
|
|
- TURN_HOST=turn.thevish.io
|
|
- TURN_PORT=3478
|
|
- DISABLE_HTTPS=0
|
|
```
|
|
|
|
#### **Prosody (XMPP Server)**
|
|
```yaml
|
|
prosody:
|
|
image: jitsi/prosody:stable
|
|
container_name: jitsi-prosody
|
|
environment:
|
|
- XMPP_DOMAIN=meet.jitsi
|
|
- XMPP_AUTH_DOMAIN=auth.meet.jitsi
|
|
- XMPP_MUC_DOMAIN=muc.meet.jitsi
|
|
```
|
|
|
|
#### **Jicofo (Conference Focus)**
|
|
```yaml
|
|
jicofo:
|
|
image: jitsi/jicofo:stable
|
|
container_name: jitsi-jicofo
|
|
environment:
|
|
- XMPP_DOMAIN=meet.jitsi
|
|
- XMPP_AUTH_DOMAIN=auth.meet.jitsi
|
|
- JICOFO_AUTH_USER=focus
|
|
```
|
|
|
|
#### **JVB (Video Bridge)**
|
|
```yaml
|
|
jvb:
|
|
image: jitsi/jvb:stable
|
|
container_name: jitsi-jvb
|
|
ports:
|
|
- "10000:10000/udp" # Video bridge
|
|
environment:
|
|
- JVB_PORT=10000
|
|
- JVB_STUN_SERVERS=stun.l.google.com:19302
|
|
- DOCKER_HOST_ADDRESS=meet.thevish.io
|
|
```
|
|
|
|
### Key Environment Variables
|
|
| Variable | Value | Description |
|
|
|----------|-------|-------------|
|
|
| `PUBLIC_URL` | `https://meet.thevish.io` | External access URL |
|
|
| `DOCKER_HOST_ADDRESS` | `meet.thevish.io` | Host address for WebRTC |
|
|
| `ENABLE_P2P` | `0` | Disable peer-to-peer (force through server) |
|
|
| `ENABLE_TURN` | `1` | Enable TURN server for NAT traversal |
|
|
| `TURN_HOST` | `turn.thevish.io` | TURN server hostname |
|
|
| `TURN_PORT` | `3478` | TURN server port |
|
|
|
|
## 🌐 Network Architecture
|
|
|
|
### **External Access Flow**
|
|
```
|
|
Internet → Router (Port Forward) → Atlantis → Docker Container
|
|
↓
|
|
Port 4443 → 192.168.0.200:5443 → jitsi-web:443
|
|
Port 3478 → 192.168.0.200:3478 → STUN/TURN server
|
|
Port 5349 → 192.168.0.200:5349 → TURN server
|
|
Port 49160-49200 → 192.168.0.200:49160-49200 → RTP media
|
|
```
|
|
|
|
### **Internal Container Network**
|
|
```
|
|
meet.jitsi (Docker Network)
|
|
├── jitsi-web (Frontend)
|
|
├── jitsi-prosody (XMPP Server)
|
|
├── jitsi-jicofo (Conference Focus)
|
|
└── jitsi-jvb (Video Bridge)
|
|
```
|
|
|
|
## 🔒 Security Considerations
|
|
|
|
### **External Exposure Assessment**
|
|
- **✅ High Security**: HTTPS encryption on port 4443
|
|
- **✅ Standard Protocols**: STUN/TURN are industry standard
|
|
- **⚠️ Media Ports**: RTP range 49160-49200 exposed for media
|
|
- **✅ Authentication**: Meeting rooms can be password protected
|
|
|
|
### **Security Recommendations**
|
|
```bash
|
|
# 1. Enable meeting passwords
|
|
- Configure lobby mode for meetings
|
|
- Require passwords for sensitive meetings
|
|
- Use waiting rooms for additional control
|
|
|
|
# 2. Monitor access logs
|
|
- Review Nginx/web server logs regularly
|
|
- Monitor for unusual connection patterns
|
|
- Set up alerts for failed authentication attempts
|
|
|
|
# 3. Keep services updated
|
|
- Regular updates for all Jitsi components
|
|
- Monitor security advisories
|
|
- Implement automated security scanning
|
|
|
|
# 4. Network security
|
|
- Firewall rules for specific IP ranges if needed
|
|
- Consider VPN access for internal meetings
|
|
- Implement rate limiting on web interface
|
|
```
|
|
|
|
## 🚨 Troubleshooting
|
|
|
|
### **Common Issues**
|
|
|
|
#### **Can't Access Web Interface**
|
|
```bash
|
|
# Check external access
|
|
curl -I https://meet.thevish.io
|
|
curl -I https://meet.vish.gg
|
|
|
|
# Verify port forwarding
|
|
nmap -p 4443 meet.thevish.io
|
|
|
|
# Check container status
|
|
docker-compose ps
|
|
docker-compose logs web
|
|
```
|
|
|
|
#### **Video/Audio Not Working**
|
|
```bash
|
|
# Check STUN/TURN servers
|
|
nmap -p 3478,5349 meet.thevish.io
|
|
|
|
# Verify RTP port range
|
|
nmap -p 49160-49200 meet.thevish.io
|
|
|
|
# Test WebRTC connectivity
|
|
# Use browser developer tools → Network tab
|
|
# Look for STUN/TURN connection attempts
|
|
```
|
|
|
|
#### **Meeting Connection Issues**
|
|
```bash
|
|
# Check JVB (Video Bridge) status
|
|
docker-compose logs jvb
|
|
|
|
# Verify XMPP server
|
|
docker-compose logs prosody
|
|
|
|
# Check conference focus
|
|
docker-compose logs jicofo
|
|
|
|
# Test internal connectivity
|
|
docker-compose exec web ping prosody
|
|
```
|
|
|
|
### **Performance Optimization**
|
|
```bash
|
|
# Monitor resource usage
|
|
docker stats
|
|
|
|
# Check bandwidth usage
|
|
iftop -i eth0
|
|
|
|
# Optimize JVB settings for concurrent users
|
|
# Edit JVB configuration for higher capacity
|
|
```
|
|
|
|
## 📊 Resource Requirements
|
|
|
|
### **Recommended Resources**
|
|
- **Minimum RAM**: 4GB total for all components
|
|
- **Recommended RAM**: 8GB+ for production use
|
|
- **CPU**: 4+ cores for multiple concurrent meetings
|
|
- **Network**: High bandwidth for media streaming
|
|
- **Storage**: 10GB+ for logs and configuration
|
|
|
|
### **Scaling Considerations**
|
|
- **Small meetings (2-4 people)**: Default configuration sufficient
|
|
- **Medium meetings (5-15 people)**: Increase JVB memory allocation
|
|
- **Large meetings (15+ people)**: Consider multiple JVB instances
|
|
- **Enterprise scale**: Implement Jitsi cluster with load balancing
|
|
|
|
## 🔍 Health Monitoring
|
|
|
|
### **Service Health Checks**
|
|
```bash
|
|
# Check all components
|
|
docker-compose ps
|
|
|
|
# Test web interface
|
|
curl -f https://meet.thevish.io/config.js
|
|
|
|
# Verify XMPP server
|
|
docker-compose exec prosody prosodyctl status
|
|
|
|
# Check video bridge
|
|
curl -f http://localhost:8080/colibri/stats
|
|
```
|
|
|
|
### **Monitoring Metrics**
|
|
- **Active meetings**: Number of concurrent conferences
|
|
- **Participant count**: Total users across all meetings
|
|
- **Bandwidth usage**: Network utilization for media streams
|
|
- **CPU/Memory**: Resource consumption per component
|
|
- **Connection success rate**: WebRTC connection establishment
|
|
|
|
## 🌐 Integration with Homelab
|
|
|
|
### **Tailscale Access**
|
|
```bash
|
|
# Internal access via Tailscale
|
|
https://atlantis.tail.vish.gg:5443
|
|
|
|
# Secure admin access
|
|
https://atlantis.tail.vish.gg:5080/admin
|
|
```
|
|
|
|
### **Reverse Proxy Integration**
|
|
```bash
|
|
# If using Nginx Proxy Manager or Traefik
|
|
# Configure reverse proxy for clean URLs
|
|
# Handle SSL termination at proxy level
|
|
# Load balance multiple Jitsi instances
|
|
```
|
|
|
|
### **Monitoring Integration**
|
|
```bash
|
|
# Prometheus metrics (if enabled)
|
|
http://atlantis.tail.vish.gg:8080/metrics
|
|
|
|
# Grafana dashboard
|
|
# Import Jitsi Meet dashboard for monitoring
|
|
# Set up alerts for service failures
|
|
```
|
|
|
|
## 📚 Additional Resources
|
|
|
|
- **Official Documentation**: [Jitsi Meet Handbook](https://jitsi.github.io/handbook/)
|
|
- **Docker Hub**: [Jitsi Docker Images](https://hub.docker.com/u/jitsi)
|
|
- **Community**: [Jitsi Community Forum](https://community.jitsi.org/)
|
|
- **Security Guide**: [Jitsi Security Best Practices](https://jitsi.github.io/handbook/docs/devops-guide/secure)
|
|
|
|
## 🔗 Related Services
|
|
|
|
- **Prosody**: XMPP server component
|
|
- **Jicofo**: Conference focus component
|
|
- **JVB**: Video bridge component
|
|
- **Nginx**: Reverse proxy for web interface
|
|
- **Coturn**: STUN/TURN server (if separate)
|
|
|
|
---
|
|
|
|
*This documentation covers the complete Jitsi Meet platform including external access configuration and port forwarding requirements.*
|
|
|
|
**Last Updated**: 2025-11-17
|
|
**Configuration Source**: `Atlantis/jitsi/jitsi.yml`
|
|
**External Access**: `https://meet.thevish.io` |