Com a suspensão do compartilhamento de tela no Discord, muita gente ficou sem uma forma rápida de mostrar a própria tela pra outra pessoa. Se você já tem (ou quer montar) uma infraestrutura self-hosted, o Screego resolve exatamente esse problema, com baixa latência e sem depender de terceiros.

Neste tutorial vou mostrar o passo a passo completo pra subir o Screego usando Coolify, uma plataforma self-hosted de deploy que simplifica bastante o processo.

Documentação oficial: https://screego.net/#/

O que é o Screego

Screego é um software open source feito com um único propósito: compartilhamento de tela. Sem chat, sem webcam, sem gravação e sem precisar criar conta. Você compartilha a tela direto do navegador, gera um link, manda pra quem precisa ver, e pronto.

Principais características:

  • Licença GPL-3.0, código aberto
  • Usa WebRTC para transmissão em tempo real, com latência bem baixa
  • Um stream, viewers ilimitados
  • Suporta múltiplas salas simultâneas e senha de acesso
  • Roda em um único container Docker

Se você também precisa de áudio junto com o compartilhamento de tela, o Screego não é a ferramenta certa (ele não suporta áudio por decisão de projeto). Nesse caso, vale considerar o Jitsi Meet como alternativa, mas essa é uma stack bem mais pesada e foge do escopo deste tutorial.

Pré-requisitos

Antes de começar, você vai precisar de:

  • Um servidor com Coolify já instalado e funcionando
  • Um domínio (ou subdomínio) apontando para o IP público do seu servidor, via registro DNS tipo A. Recomendo o duckdns caso não queira pagar um domínio
  • Acesso SSH ou ao terminal web do Coolify
  • O IP público do seu servidor (rode curl https://api.ipify.org pra descobrir)

Passo 1: criar o recurso no Coolify

No dashboard do Coolify, vá em Projects → seu projeto → Add New Resource → Docker Compose.

Cole o seguinte docker-compose.yml:

services:
  screego:
    image: 'ghcr.io/screego/server:1.12.4'
    restart: unless-stopped
    ports:
      - '3478:3478/udp'
      - '50000-50100:50000-50100/udp'
    environment:
      SCREEGO_EXTERNAL_IP: SEU_IP_PUBLICO_AQUI
      SCREEGO_SECRET: GERE_UMA_STRING_ALEATORIA_AQUI
      SCREEGO_SERVER_TLS: 'false'
      SCREEGO_TRUST_PROXY_HEADERS: 'true'
      SCREEGO_TURN_ADDRESS: '0.0.0.0:3478'
      SCREEGO_TURN_PORT_RANGE: '50000:50100'
      SCREEGO_SERVER_ADDRESS: '0.0.0.0:5050'

Por que essas variáveis

  • SCREEGO_EXTERNAL_IP: o IP público do servidor. Sem isso, o compartilhamento funciona na rede local mas falha pra quem está fora dela.
  • SCREEGO_SECRET: assina os cookies de sessão. Gere com openssl rand -hex 32 e nunca reutilize esse valor em outro projeto.
  • SCREEGO_SERVER_TLS: false: o Coolify (via Traefik) já cuida do HTTPS por fora, então o Screego não precisa (nem deve) gerenciar TLS internamente.
  • SCREEGO_TRUST_PROXY_HEADERS: true: essencial, já que o tráfego passa pelo proxy do Coolify antes de chegar no container.

Passo 2: gerar o SCREEGO_SECRET

No terminal do servidor (SSH ou terminal web do Coolify):

openssl rand -hex 32

Copie o resultado e cole no lugar de GERE_UMA_STRING_ALEATORIA_AQUI no compose.

Passo 3: configurar as portas UDP do TURN

Esse é o ponto mais importante e o que mais gera dor de cabeça em deploys assim. O Screego usa WebRTC, que depende de um servidor TURN para atravessar NAT, e isso exige portas UDP abertas.

O Traefik (proxy interno do Coolify) só lida bem com HTTP/HTTPS, então as portas UDP do TURN precisam ser publicadas diretamente no host, como já está no compose acima (3478:3478/udp e 50000-50100:50000-50100/udp). Não tente rotear essas portas pelo domínio do Coolify.

Se seu servidor tiver firewall (ufw, iptables, ou grupo de segurança de nuvem), libere manualmente(no meu caso eu não precisei):

  • 3478/udp
  • 50000-50100/udp

Sem isso, o compartilhamento trava em "conectando" e nunca estabelece a conexão P2P.

Passo 4: configurar o domínio

No Coolify, dentro do recurso Screego, vá em Domains → Add Domain:

  • Service application: screego
  • Protocol: https
  • Domain: o subdomínio real que você quer usar (ex: screego.seudominio.com)
  • Port: 5050 (a porta interna que o Screego escuta, conforme SCREEGO_SERVER_ADDRESS)
  • Path: deixe em branco

Antes de salvar, confirme que o DNS do subdomínio já está apontando (registro A) para o IP do servidor, senão a emissão do certificado Let's Encrypt vai falhar.

Alternativa: domínio automático

Se você não tem um domínio próprio configurado ainda, use o botão Generate domain. Ele funciona se o seu servidor tiver um Wildcard Domain configurado em Servers → seu servidor → Configuration. Muitos servidores Coolify já vêm com um wildcard padrão baseado em sslip.io, então o botão pode funcionar sem nenhuma configuração extra.

Um detalhe importante: mesmo usando domínio automático, o SCREEGO_EXTERNAL_IP nas variáveis de ambiente precisa continuar sendo o IP público real do servidor, senão o WebRTC falha mesmo com o domínio funcionando via HTTPS.

Passo 5: deploy

Clique em Deploy no Coolify. Aguarde a emissão do certificado SSL (pode levar de alguns segundos a 1-2 minutos).

Passo 6: testar

Acesse https://screego.seudominio.com (ou o domínio que você configurou), crie uma sala e copie o link gerado.

Teste abrindo esse link em outro dispositivo, idealmente em outra rede (4G no celular, por exemplo), pra confirmar que o NAT traversal via TURN está funcionando de verdade e não só na rede local.

Bônus: monitorando quantas pessoas estão usando

O Screego expõe um endpoint nativo de métricas Prometheus, incluindo dados de uso real (não só métricas genéricas de runtime).

Adicione ao compose:

    volumes:
      - ./screego-users:/app/users
    environment:
      # ...variáveis anteriores...
      SCREEGO_PROMETHEUS: 'true'
      SCREEGO_USERS_FILE: /app/users

O endpoint /metrics exige autenticação básica. Gere a credencial:

docker run --rm ghcr.io/screego/server:1.12.4 hash --name "metrics" --pass "sua_senha_aqui"

Isso gera uma linha tipo metrics:$2a$12$.... Coloque essa linha (só ela) dentro de um arquivo chamado screego-users, na mesma pasta do docker-compose.yml no servidor:

echo 'metrics:$2a$12$SEU_HASH_AQUI' > screego-users

Use aspas simples nesse comando, senão o shell tenta interpretar o $ do hash bcrypt como variável.

Depois do redeploy, acesse https://screego.seudominio.com/metrics com a credencial gerada. Procure pelas métricas que começam com screego_, como:

  • screego_user_joined_total e screego_user_left_total: subtraindo um do outro, você descobre quantas pessoas estão conectadas agora
  • screego_room_created_total e screego_room_closed_total: subtraindo um do outro, você descobre quantas salas estão ativas

Conclusão

Com isso você tem um substituto direto e leve pro compartilhamento de tela do Discord, totalmente sob seu controle, sem depender de infraestrutura de terceiros. O deploy inteiro cabe em um único container, e a parte que exige mais atenção é garantir que as portas UDP do TURN estejam corretamente expostas, já que é isso que garante que a conexão funcione fora da sua rede local.

Last Update: August 21, 2026

Tagged in:

Self-Hosting