feat: implement security enhancements for Jitsi integration, including JWT token generation and automatic blocking of detected attacks, improving system resilience and user authentication
This commit is contained in:
621
docs/JITSI_CONFIGURACAO.md
Normal file
621
docs/JITSI_CONFIGURACAO.md
Normal file
@@ -0,0 +1,621 @@
|
||||
# Configuração do Jitsi Meet no SGSE
|
||||
|
||||
## Introdução
|
||||
|
||||
O sistema de videochamadas do SGSE utiliza o Jitsi Meet, uma solução open-source para comunicação por vídeo e áudio. Este documento fornece um guia completo para configurar o Jitsi Meet no sistema SGSE.
|
||||
|
||||
### Benefícios
|
||||
|
||||
- **Chamadas de vídeo e áudio** em tempo real
|
||||
- **Autenticação JWT** para controle de acesso
|
||||
- **Suporte a múltiplos ambientes** (desenvolvimento, staging, produção)
|
||||
- **Gravação de chamadas** (quando habilitado no servidor)
|
||||
- **Integração nativa** com o sistema de chat
|
||||
|
||||
### Visão Geral da Arquitetura
|
||||
|
||||
```
|
||||
┌─────────────┐ ┌──────────────┐ ┌─────────────┐
|
||||
│ Cliente │────────▶│ Backend │────────▶│ Jitsi │
|
||||
│ (Navegador)│ │ (Convex) │ │ Servidor │
|
||||
└─────────────┘ └──────────────┘ └─────────────┘
|
||||
│ │ │
|
||||
│ │ │
|
||||
└─────────────────────────┴────────────────────────┘
|
||||
Token JWT (opcional)
|
||||
```
|
||||
|
||||
## Requisitos do Sistema
|
||||
|
||||
### Requisitos de Hardware
|
||||
|
||||
- **CPU**: Mínimo 2 cores (recomendado: 4+ cores)
|
||||
- **RAM**: Mínimo 4GB (recomendado: 8GB+)
|
||||
- **Largura de Banda**: Mínimo 1 Mbps por participante (recomendado: 2+ Mbps)
|
||||
|
||||
### Requisitos de Software
|
||||
|
||||
- **Docker** e **Docker Compose** (para instalação self-hosted)
|
||||
- **Node.js** 18+ (já incluído no SGSE)
|
||||
- **Navegador moderno** com suporte a WebRTC (Chrome, Firefox, Safari, Edge)
|
||||
|
||||
### Requisitos de Rede
|
||||
|
||||
- **Portas necessárias**:
|
||||
- `80` (HTTP) ou `443` (HTTPS) - Web
|
||||
- `4443` (TURN/TCP) - Retransmissão de mídia
|
||||
- `10000/udp` (RTP/RTCP) - Streaming de mídia
|
||||
- **Firewall**: Permitir tráfego UDP e TCP nas portas acima
|
||||
- **DNS**: Configurar registro A ou CNAME para o domínio (produção)
|
||||
|
||||
### Requisitos de Certificados SSL
|
||||
|
||||
- **Produção**: Certificado válido (Let's Encrypt recomendado)
|
||||
- **Desenvolvimento**: Certificado autoassinado aceitável
|
||||
|
||||
## Tipos de Instalação
|
||||
|
||||
### 1. Jitsi Self-Hosted com Docker
|
||||
|
||||
Esta é a opção recomendada para produção e oferece controle total sobre o servidor.
|
||||
|
||||
#### Pré-requisitos
|
||||
|
||||
1. Servidor com Docker e Docker Compose instalados
|
||||
2. Domínio configurado (para produção) ou acesso a `localhost` (desenvolvimento)
|
||||
3. Certificado SSL (para produção)
|
||||
|
||||
#### Passo a Passo
|
||||
|
||||
1. **Instalar Docker e Docker Compose**
|
||||
|
||||
```bash
|
||||
# Ubuntu/Debian
|
||||
sudo apt-get update
|
||||
sudo apt-get install docker.io docker-compose
|
||||
|
||||
# Verificar instalação
|
||||
docker --version
|
||||
docker-compose --version
|
||||
```
|
||||
|
||||
2. **Criar diretório para configuração**
|
||||
|
||||
```bash
|
||||
mkdir -p ~/jitsi-meet
|
||||
cd ~/jitsi-meet
|
||||
```
|
||||
|
||||
3. **Baixar arquivos de configuração**
|
||||
|
||||
```bash
|
||||
# Baixar docker-compose.yml oficial
|
||||
curl -L https://github.com/jitsi/docker-jitsi-meet/archive/refs/heads/master.zip -o jitsi.zip
|
||||
unzip jitsi.zip
|
||||
cd docker-jitsi-meet-master
|
||||
```
|
||||
|
||||
4. **Configurar variáveis de ambiente**
|
||||
|
||||
```bash
|
||||
# Copiar arquivo de exemplo
|
||||
cp env.example .env
|
||||
|
||||
# Editar .env com suas configurações
|
||||
nano .env
|
||||
```
|
||||
|
||||
Configurações importantes no `.env`:
|
||||
|
||||
```env
|
||||
# Domínio
|
||||
CONFIG=~/.jitsi-meet-cfg
|
||||
TZ=America/Recife
|
||||
HTTP_PORT=8000
|
||||
HTTPS_PORT=8443
|
||||
PUBLIC_URL=https://meet.example.com
|
||||
DOMAIN=meet.example.com
|
||||
|
||||
# Autenticação
|
||||
ENABLE_AUTH=1
|
||||
ENABLE_GUESTS=0
|
||||
|
||||
# JWT
|
||||
JWT_APP_ID=sgse-app
|
||||
JWT_APP_SECRET=seu-jwt-secret-aqui-minimo-32-caracteres
|
||||
|
||||
# Gravação (opcional)
|
||||
ENABLE_RECORDING=0
|
||||
|
||||
# Outras configurações
|
||||
ENABLE_PREJOIN_PAGE=0
|
||||
START_AUDIO_MUTED=0
|
||||
START_VIDEO_MUTED=0
|
||||
ENABLE_XMPP_WEBSOCKET=1
|
||||
ENABLE_P2P=1
|
||||
MAX_NUMBER_OF_PARTICIPANTS=10
|
||||
```
|
||||
|
||||
5. **Gerar JWT Secret seguro**
|
||||
|
||||
```bash
|
||||
# Gerar secret aleatório de 64 caracteres
|
||||
openssl rand -hex 32
|
||||
```
|
||||
|
||||
6. **Criar diretório de configuração**
|
||||
|
||||
```bash
|
||||
mkdir -p ~/.jitsi-meet-cfg/{web/letsencrypt,transcripts,prosody/config,prosody/prosody-plugins-custom,jicofo,jvb,jigasi,jibri}
|
||||
```
|
||||
|
||||
7. **Iniciar containers**
|
||||
|
||||
```bash
|
||||
docker-compose up -d
|
||||
```
|
||||
|
||||
8. **Verificar status**
|
||||
|
||||
```bash
|
||||
docker-compose ps
|
||||
```
|
||||
|
||||
9. **Verificar logs**
|
||||
|
||||
```bash
|
||||
docker-compose logs -f
|
||||
```
|
||||
|
||||
#### Configuração de Certificados SSL
|
||||
|
||||
**Para Produção (Let's Encrypt):**
|
||||
|
||||
O Jitsi Docker suporta Let's Encrypt automaticamente. Configure:
|
||||
|
||||
```env
|
||||
ENABLE_LETSENCRYPT=1
|
||||
LETSENCRYPT_DOMAIN=meet.example.com
|
||||
LETSENCRYPT_EMAIL=admin@example.com
|
||||
```
|
||||
|
||||
**Para Desenvolvimento (Autoassinado):**
|
||||
|
||||
```env
|
||||
ENABLE_LETSENCRYPT=0
|
||||
```
|
||||
|
||||
E aceite o certificado no navegador na primeira conexão.
|
||||
|
||||
### 2. Jitsi as a Service (JaaS/8x8)
|
||||
|
||||
JaaS é uma solução gerenciada pela 8x8 que oferece Jitsi como serviço.
|
||||
|
||||
#### Passo a Passo
|
||||
|
||||
1. **Criar conta no JaaS**
|
||||
- Acesse https://jaas.8x8.vc
|
||||
- Crie uma conta ou faça login
|
||||
|
||||
2. **Obter credenciais**
|
||||
- No painel do JaaS, vá em "Settings" > "API Keys"
|
||||
- Copie o **Application ID** e **Application Secret**
|
||||
|
||||
3. **Configurar no SGSE**
|
||||
- Use o domínio: `8x8.vc` ou seu domínio personalizado
|
||||
- App ID: O Application ID do JaaS
|
||||
- JWT Secret: O Application Secret do JaaS
|
||||
|
||||
4. **Domínio personalizado (opcional)**
|
||||
- No painel JaaS, configure um domínio personalizado
|
||||
- Atualize o domínio no SGSE
|
||||
|
||||
### 3. Desenvolvimento Local
|
||||
|
||||
Para desenvolvimento rápido sem Docker:
|
||||
|
||||
1. **Usar Jitsi Meet público** (não recomendado para produção)
|
||||
- Domínio: `meet.jit.si`
|
||||
- Não requer configuração de servidor
|
||||
- Limitações: Sem JWT, sem controle total
|
||||
|
||||
2. **Docker local simplificado**
|
||||
- Siga os passos do "Jitsi Self-Hosted"
|
||||
- Use `localhost:8443` como domínio
|
||||
- Configure certificado autoassinado
|
||||
|
||||
## Configuração de JWT no Servidor Jitsi
|
||||
|
||||
### Para Jitsi Self-Hosted
|
||||
|
||||
#### 1. Gerar JWT Secret
|
||||
|
||||
```bash
|
||||
# Gerar secret seguro
|
||||
openssl rand -hex 32
|
||||
```
|
||||
|
||||
#### 2. Configurar Prosody
|
||||
|
||||
Edite `~/.jitsi-meet-cfg/prosody/config/conf.d/jitsi-meet.cfg.lua`:
|
||||
|
||||
```lua
|
||||
-- Habilitar autenticação JWT
|
||||
authentication = "token";
|
||||
|
||||
-- Configurar verificação de token
|
||||
asap_accepted_audiences = "sgse-app"
|
||||
asap_accepted_issuers = "sgse-app"
|
||||
|
||||
-- Módulo de verificação de token
|
||||
Component "conference.meet.example.com" "muc"
|
||||
modules_enabled = {
|
||||
"token_verification";
|
||||
}
|
||||
```
|
||||
|
||||
#### 3. Configurar Jicofo
|
||||
|
||||
Edite `~/.jitsi-meet-cfg/jicofo/sip-communicator.properties`:
|
||||
|
||||
```properties
|
||||
org.jitsi.jicofo.auth.URL=XMPP:meet.example.com
|
||||
org.jitsi.jicofo.jwt.secret=seu-jwt-secret-aqui
|
||||
org.jitsi.jicofo.jwt.appId=sgse-app
|
||||
```
|
||||
|
||||
#### 4. Reiniciar serviços
|
||||
|
||||
```bash
|
||||
docker-compose restart prosody jicofo
|
||||
```
|
||||
|
||||
### Para JaaS
|
||||
|
||||
JWT já está configurado. Apenas use as credenciais fornecidas no painel.
|
||||
|
||||
## Configuração no Painel SGSE
|
||||
|
||||
### Acesso ao Painel
|
||||
|
||||
1. Faça login como usuário com permissão de TI (TI_MASTER, TI_USUARIO ou ADMIN)
|
||||
2. Navegue para: **TI** > **Configurações do Jitsi**
|
||||
|
||||
### Preenchimento de Campos
|
||||
|
||||
#### Domínio
|
||||
|
||||
- **Formato**: FQDN (ex: `meet.example.com`) ou `localhost:porta` (ex: `localhost:8443`)
|
||||
- **Exemplos**:
|
||||
- Produção: `meet.example.com`
|
||||
- Desenvolvimento: `localhost:8443`
|
||||
- JaaS: `8x8.vc` ou seu domínio personalizado
|
||||
|
||||
#### App ID
|
||||
|
||||
- **Formato**: Alfanumérico, pode conter hífens e underscores
|
||||
- **Exemplos**: `sgse-app`, `my-app`, `app_123`
|
||||
- **Onde encontrar**:
|
||||
- Self-hosted: Configurado no `.env` como `JWT_APP_ID`
|
||||
- JaaS: Application ID no painel do JaaS
|
||||
|
||||
#### JWT Secret
|
||||
|
||||
- **Requisitos**: Mínimo 16 caracteres (recomendado: 32+)
|
||||
- **Onde encontrar**:
|
||||
- Self-hosted: Configurado no `.env` como `JWT_APP_SECRET`
|
||||
- JaaS: Application Secret no painel do JaaS
|
||||
- **Segurança**: O secret será criptografado antes de ser armazenado
|
||||
|
||||
#### Prefixo de Sala
|
||||
|
||||
- **Formato**: Apenas letras, números e hífens
|
||||
- **Exemplo**: `sgse`, `meeting`, `call-123`
|
||||
- **Uso**: Prefixo usado para gerar nomes únicos de salas
|
||||
|
||||
#### Ambiente
|
||||
|
||||
- **Opções**: Desenvolvimento, Staging, Produção
|
||||
- **Uso**: Permite múltiplas configurações para diferentes ambientes
|
||||
- **Padrão**: Deixe vazio para configuração padrão
|
||||
|
||||
#### JWT Audience e Issuer (Opcionais)
|
||||
|
||||
- **Audience**: Padrão é o domínio do servidor
|
||||
- **Issuer**: Padrão é o App ID
|
||||
- **Quando configurar**: Apenas se necessário para compatibilidade com configurações específicas do servidor
|
||||
|
||||
### Teste de Conexão
|
||||
|
||||
1. Preencha os campos básicos (Domínio, App ID)
|
||||
2. Clique em **"Testar Conexão"**
|
||||
3. Aguarde a validação
|
||||
4. Se houver erros, verifique:
|
||||
- Servidor está online
|
||||
- Domínio está correto
|
||||
- Portas estão acessíveis
|
||||
- Certificado SSL (se HTTPS)
|
||||
|
||||
### Geração de Token de Teste
|
||||
|
||||
1. Configure o JWT Secret
|
||||
2. Clique em **"Gerar Token de Teste"**
|
||||
3. O token será gerado automaticamente quando você criar uma chamada
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Problemas de Conexão
|
||||
|
||||
#### Servidor não acessível
|
||||
|
||||
**Sintomas**: Timeout ou erro de conexão
|
||||
|
||||
**Soluções**:
|
||||
1. Verificar se o servidor está online: `ping meet.example.com`
|
||||
2. Verificar portas: `telnet meet.example.com 443`
|
||||
3. Verificar firewall: Permitir portas 80, 443, 4443, 10000/udp
|
||||
4. Verificar DNS: `nslookup meet.example.com`
|
||||
|
||||
#### Timeout de conexão
|
||||
|
||||
**Sintomas**: Conexão demora muito ou falha
|
||||
|
||||
**Soluções**:
|
||||
1. Verificar largura de banda
|
||||
2. Verificar latência de rede
|
||||
3. Verificar se há proxy ou firewall bloqueando
|
||||
4. Testar de outra rede
|
||||
|
||||
#### Erro de DNS
|
||||
|
||||
**Sintomas**: "DNS resolution failed"
|
||||
|
||||
**Soluções**:
|
||||
1. Verificar se o domínio está configurado corretamente
|
||||
2. Verificar registros DNS (A ou CNAME)
|
||||
3. Aguardar propagação DNS (até 48 horas)
|
||||
|
||||
### Problemas de Certificado SSL
|
||||
|
||||
#### Certificado inválido
|
||||
|
||||
**Sintomas**: Aviso de certificado não confiável
|
||||
|
||||
**Soluções**:
|
||||
1. **Produção**: Usar certificado válido (Let's Encrypt)
|
||||
2. **Desenvolvimento**: Habilitar "Aceitar Certificados Autoassinados" no painel
|
||||
|
||||
#### Certificado autoassinado não aceito
|
||||
|
||||
**Sintomas**: Erro mesmo com opção habilitada
|
||||
|
||||
**Soluções**:
|
||||
1. Aceitar certificado manualmente no navegador na primeira conexão
|
||||
2. Adicionar exceção no navegador
|
||||
3. Para produção, usar certificado válido
|
||||
|
||||
#### Erro de cadeia de certificados
|
||||
|
||||
**Sintomas**: "Certificate chain incomplete"
|
||||
|
||||
**Soluções**:
|
||||
1. Verificar se o certificado inclui a cadeia completa
|
||||
2. Reinstalar certificado com cadeia completa
|
||||
3. Verificar configuração do servidor web
|
||||
|
||||
### Problemas com JWT
|
||||
|
||||
#### Token inválido
|
||||
|
||||
**Sintomas**: Erro de autenticação ao conectar
|
||||
|
||||
**Soluções**:
|
||||
1. Verificar se JWT Secret está correto no servidor e no SGSE
|
||||
2. Verificar se App ID corresponde
|
||||
3. Verificar se token não expirou (padrão: 1 hora)
|
||||
4. Regenerar token
|
||||
|
||||
#### Token expirado
|
||||
|
||||
**Sintomas**: Conexão funciona inicialmente, depois falha
|
||||
|
||||
**Soluções**:
|
||||
1. Tokens são regenerados automaticamente
|
||||
2. Verificar se o relógio do servidor está sincronizado (NTP)
|
||||
3. Aumentar tempo de expiração (se necessário)
|
||||
|
||||
#### Secret incorreto
|
||||
|
||||
**Sintomas**: Erro de autenticação persistente
|
||||
|
||||
**Soluções**:
|
||||
1. Verificar JWT Secret no servidor (`.env` ou configuração)
|
||||
2. Verificar JWT Secret no painel SGSE
|
||||
3. Garantir que são idênticos (sem espaços extras)
|
||||
4. Reiniciar serviços do Jitsi após alterar secret
|
||||
|
||||
#### Claims incorretos
|
||||
|
||||
**Sintomas**: Conexão estabelecida mas sem permissões
|
||||
|
||||
**Soluções**:
|
||||
1. Verificar claims do token (iss, aud, room, moderator)
|
||||
2. Verificar configuração do Prosody
|
||||
3. Verificar logs do servidor Jitsi
|
||||
|
||||
### Problemas de Firewall
|
||||
|
||||
#### Portas bloqueadas
|
||||
|
||||
**Sintomas**: Conexão HTTP funciona, mas mídia não
|
||||
|
||||
**Soluções**:
|
||||
1. Abrir portas necessárias:
|
||||
- `80/tcp`, `443/tcp` (HTTP/HTTPS)
|
||||
- `4443/tcp` (TURN)
|
||||
- `10000/udp` (RTP/RTCP)
|
||||
2. Verificar regras de firewall
|
||||
3. Testar com `telnet` ou `nc`
|
||||
|
||||
#### UDP não funcionando
|
||||
|
||||
**Sintomas**: Áudio/vídeo cortando ou não funcionando
|
||||
|
||||
**Soluções**:
|
||||
1. Verificar se UDP está habilitado no firewall
|
||||
2. Verificar se NAT está configurado corretamente
|
||||
3. Configurar TURN server para fallback
|
||||
|
||||
#### WebRTC bloqueado
|
||||
|
||||
**Sintomas**: Navegador não consegue estabelecer conexão WebRTC
|
||||
|
||||
**Soluções**:
|
||||
1. Verificar se WebRTC está habilitado no navegador
|
||||
2. Verificar se não há extensões bloqueando WebRTC
|
||||
3. Verificar configurações de proxy/VPN
|
||||
|
||||
### Problemas de Performance
|
||||
|
||||
#### Qualidade de vídeo ruim
|
||||
|
||||
**Sintomas**: Vídeo pixelado ou com baixa resolução
|
||||
|
||||
**Soluções**:
|
||||
1. Verificar largura de banda disponível
|
||||
2. Reduzir número de participantes simultâneos
|
||||
3. Ajustar resolução nas configurações do Jitsi
|
||||
4. Verificar recursos do servidor (CPU, RAM)
|
||||
|
||||
#### Áudio cortando
|
||||
|
||||
**Sintomas**: Áudio intermitente ou com atraso
|
||||
|
||||
**Soluções**:
|
||||
1. Verificar latência de rede
|
||||
2. Verificar recursos do servidor
|
||||
3. Configurar codec de áudio adequado
|
||||
4. Verificar dispositivos de áudio do cliente
|
||||
|
||||
#### Alta latência
|
||||
|
||||
**Sintomas**: Atraso perceptível entre áudio/vídeo
|
||||
|
||||
**Soluções**:
|
||||
1. Verificar latência de rede (ping)
|
||||
2. Verificar localização do servidor (usar servidor próximo)
|
||||
3. Configurar TURN server próximo aos usuários
|
||||
4. Otimizar configurações de codec
|
||||
|
||||
## Exemplos de Configuração
|
||||
|
||||
### Exemplo 1: Desenvolvimento Local
|
||||
|
||||
```yaml
|
||||
Domínio: localhost:8443
|
||||
App ID: sgse-app
|
||||
Prefixo de Sala: sgse-dev
|
||||
HTTPS: Sim
|
||||
Certificados Autoassinados: Sim
|
||||
JWT Secret: (opcional para desenvolvimento)
|
||||
Ambiente: desenvolvimento
|
||||
```
|
||||
|
||||
### Exemplo 2: Produção Self-Hosted
|
||||
|
||||
```yaml
|
||||
Domínio: meet.example.com
|
||||
App ID: sgse-app
|
||||
Prefixo de Sala: sgse
|
||||
HTTPS: Sim
|
||||
Certificados Autoassinados: Não
|
||||
JWT Secret: [secret de 32+ caracteres]
|
||||
JWT Audience: meet.example.com
|
||||
JWT Issuer: sgse-app
|
||||
Ambiente: producao
|
||||
```
|
||||
|
||||
### Exemplo 3: JaaS com Domínio Personalizado
|
||||
|
||||
```yaml
|
||||
Domínio: meet.seudominio.com
|
||||
App ID: [Application ID do JaaS]
|
||||
Prefixo de Sala: sgse
|
||||
HTTPS: Sim
|
||||
Certificados Autoassinados: Não
|
||||
JWT Secret: [Application Secret do JaaS]
|
||||
Ambiente: producao
|
||||
```
|
||||
|
||||
### Exemplo 4: Múltiplos Ambientes
|
||||
|
||||
**Desenvolvimento:**
|
||||
```yaml
|
||||
Ambiente: desenvolvimento
|
||||
Domínio: localhost:8443
|
||||
```
|
||||
|
||||
**Staging:**
|
||||
```yaml
|
||||
Ambiente: staging
|
||||
Domínio: meet-staging.example.com
|
||||
```
|
||||
|
||||
**Produção:**
|
||||
```yaml
|
||||
Ambiente: producao
|
||||
Domínio: meet.example.com
|
||||
```
|
||||
|
||||
## Boas Práticas
|
||||
|
||||
### Segurança
|
||||
|
||||
1. **Use HTTPS em produção**: Sempre use certificados válidos
|
||||
2. **JWT Secret forte**: Mínimo 32 caracteres, use gerador seguro
|
||||
3. **Rotação de secrets**: Rotacione JWT secrets periodicamente
|
||||
4. **Limitação de acesso**: Configure firewall para permitir apenas IPs necessários (opcional)
|
||||
5. **Logs de auditoria**: Monitore logs para atividades suspeitas
|
||||
|
||||
### Performance
|
||||
|
||||
1. **Recursos do servidor**: Aloque recursos adequados (CPU, RAM, largura de banda)
|
||||
2. **Otimização de codecs**: Use codecs eficientes (VP8, Opus)
|
||||
3. **Configuração de P2P**: Habilite P2P para reduzir carga no servidor
|
||||
4. **Monitoramento**: Monitore métricas de CPU, RAM, largura de banda
|
||||
|
||||
### Monitoramento
|
||||
|
||||
1. **Logs importantes**:
|
||||
- Logs do Prosody (XMPP)
|
||||
- Logs do Jicofo (conferências)
|
||||
- Logs do JVB (vídeo bridge)
|
||||
- Logs do nginx (web server)
|
||||
|
||||
2. **Métricas a acompanhar**:
|
||||
- Número de participantes ativos
|
||||
- Largura de banda utilizada
|
||||
- CPU e RAM do servidor
|
||||
- Latência de conexão
|
||||
|
||||
3. **Alertas recomendados**:
|
||||
- Alta utilização de CPU/RAM
|
||||
- Falhas de conexão
|
||||
- Certificados próximos do vencimento
|
||||
- Erros de autenticação JWT
|
||||
|
||||
## Referências
|
||||
|
||||
- **Documentação oficial do Jitsi Meet**: https://jitsi.github.io/handbook/
|
||||
- **Especificação JWT do Jitsi**: https://github.com/jitsi/lib-jitsi-meet/blob/master/doc/tokens.md
|
||||
- **Guia de instalação Docker**: https://jitsi.github.io/handbook/docs/devops-guide/devops-guide-docker
|
||||
- **Comunidade Jitsi**: https://community.jitsi.org/
|
||||
- **JaaS (8x8)**: https://jaas.8x8.vc
|
||||
|
||||
## Suporte
|
||||
|
||||
Para problemas ou dúvidas:
|
||||
1. Consulte a seção de Troubleshooting acima
|
||||
2. Verifique os logs do servidor Jitsi
|
||||
3. Consulte a documentação oficial do Jitsi
|
||||
4. Entre em contato com a equipe de TI
|
||||
Reference in New Issue
Block a user