Todos os sistemas operando normalmente 21 criptomoedas aceitas · Monero bem-vindo Política No-KYC
ChainVPS

Chat · sem KYC

Hospede Matrix (Synapse) em um VPS offshore

Execute seu próprio homeserver Matrix em uma VPS offshore e sem KYC, e tenha em mãos as chaves da sua própria rede de chat federada e criptografada de ponta a ponta.

O que é

Synapse é a implementação de referência do servidor Matrix, um protocolo aberto para chat, voz e vídeo em tempo real, descentralizados e criptografados de ponta a ponta. Hospedar o próprio Synapse te dá um homeserver próprio, que pode se federar com toda a rede Matrix ou permanecer totalmente privado, com cada mensagem, arquivo de mídia e conta hospedados em hardware sob seu controle.

Por que hospedar offshore

Metadados de chat (quem fala com quem, quando e de onde) são exatamente o tipo de dado que plataformas centralizadas e as jurisdições onde estão hospedadas registram e repassam. Em uma VPS offshore, sem KYC e paga em cripto, o homeserver que guarda as mensagens e as chaves de criptografia da sua comunidade não está registrado em nome de nenhuma identidade do mundo real e fica em uma jurisdição favorável à privacidade, fora do alcance do seu país de origem.

A implantação

Uma configuração de referência funcional

Copie isto para uma instância nova do ChainVPS. Substitua os placeholders e depois coloque no ar.

docker-compose.yml
# ── Configuração única, executada nesta ordem no Ubuntu 24.04 (Docker + compose-plugin instalados) ──
#
# 1. Gere a configuração do Synapse (substitua matrix.example.com pelo seu domínio real):
#    mkdir -p synapse-data pgdata
#    docker run --rm -v "$(pwd)/synapse-data:/data" \
#      -e SYNAPSE_SERVER_NAME=matrix.example.com \
#      -e SYNAPSE_REPORT_STATS=no \
#      ghcr.io/element-hq/synapse:latest generate
#
# 2. Em synapse-data/homeserver.yaml, SUBSTITUA o bloco sqlite `database:`
#    gerado pelo bloco postgres mostrado no final deste arquivo, e adicione
#    `x_forwarded: true` no listener da porta 8008 (você está atrás de um proxy).
#
# 3. Suba a stack:  docker compose up -d
#
# 4. Crie seu usuário admin:
#    docker compose exec synapse register_new_matrix_user \
#      -u admin -a -c /data/homeserver.yaml http://localhost:8008
#
# 5. Coloque um proxy reverso TLS (Caddy/nginx) na porta 443 -> 127.0.0.1:8008 e sirva
#    /.well-known/matrix/server + /.well-known/matrix/client para federação.

services:
  db:
    image: postgres:16-alpine
    restart: unless-stopped
    environment:
      POSTGRES_USER: synapse
      POSTGRES_PASSWORD: CHANGE_ME_STRONG_DB_PASSWORD
      POSTGRES_DB: synapse
      # O Synapse EXIGE que o banco use locale C — isto é um requisito obrigatório:
      POSTGRES_INITDB_ARGS: "--encoding=UTF8 --locale=C"
    volumes:
      - ./pgdata:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U synapse"]
      interval: 10s
      timeout: 5s
      retries: 5

  synapse:
    image: ghcr.io/element-hq/synapse:latest
    restart: unless-stopped
    depends_on:
      db:
        condition: service_healthy
    environment:
      SYNAPSE_SERVER_NAME: matrix.example.com
      SYNAPSE_REPORT_STATS: "no"
    volumes:
      - ./synapse-data:/data
    ports:
      # HTTP de cliente + federação. Vinculado a localhost — o TLS é encerrado pelo
      # seu proxy reverso. Nunca exponha a porta 8008 para a internet em texto puro.
      - "127.0.0.1:8008:8008"

# ── Cole isto em synapse-data/homeserver.yaml, substituindo o bloco sqlite ──
# database:
#   name: psycopg2
#   args:
#     user: synapse
#     password: CHANGE_ME_STRONG_DB_PASSWORD
#     dbname: synapse
#     host: db
#     port: 5432
#     cp_min: 5
#     cp_max: 10

Firewall

Portas a abrir

PortaProtocoloFinalidade
443TCPProxy reverso HTTPS: API do Element/cliente + delegação de federação via /.well-known (a única porta que precisa ficar exposta à internet)
8008TCPListener HTTP de cliente+federação do Synapse — vincule somente a 127.0.0.1, com o TLS tratado pelo proxy
8448TCPPorta opcional de federação direta; necessária apenas se você NÃO usar a delegação via .well-known (exige seu próprio TLS)
5432TCPPostgreSQL — apenas na rede interna do Docker, nunca publique para o host ou para a internet

Dimensionamento adequado

Qual plano você precisa

Leve

VPS Nano / Small (2 vCPU, 2-4 GB RAM)

Servidor pessoal ou familiar, com menos de ~10 usuários, com pouca ou nenhuma federação. O Synapse consome bastante memória — 2 GB é o mínimo realista, 4 GB se você participar de salas públicas grandes.

Médio

VPS Pro (4 vCPU, 8 GB RAM)

Comunidade pequena, de dezenas a algumas centenas de usuários, com federação ativa. Ajuste os caches do Synapse e o shared_buffers do Postgres; armazenamento SSD é importante para mídia e banco de dados.

Alto

Dedicated (8+ cores, 16-32 GB RAM)

Centenas a milhares de usuários, ou participação em salas federadas muito grandes. Divida o Synapse em workers (federation sender, sync, media) e faça um ajuste dedicado no Postgres; a largura de banda ilimitada mantém o tráfego de mídia/federação sem limites.

Melhores localizações: Escolha uma localização de nível privacidade para um servidor de comunicação: Suíça e Islândia oferecem jurisdições fortes em proteção de dados e são um lar natural para um homeserver que guarda metadados de mensagens e chaves, enquanto Holanda e Luxemburgo oferecem rotas de baixa latência e bem conectadas (peering) para a Europa, garantindo chat e voz em tempo real mais fluidos. Como o Matrix funciona em tempo real, priorize a região de nível privacidade mais próxima dos seus usuários principais; largura de banda ilimitada e proteção contra DDoS incluída são importantes, pois um homeserver federado e exposto à internet é um alvo constante.

Bloqueie tudo

Checklist de hardening

  • Desative o registro aberto: defina enable_registration: false, ou restrinja os cadastros com registration_requires_token e tokens por convite — um servidor Matrix aberto é encontrado e inundado por bots de spam em poucos dias.
  • Controle de federação: use a delegação via /.well-known/matrix/server para manter seu server_name limpo (@user:example.com) e, se o servidor for privado, defina federation_domain_whitelist (ou desative a federação por completo) para impedir que servidores desconhecidos cheguem até você.
  • Restrinja as pré-visualizações de URL e a mídia: url_preview_enabled busca URLs arbitrárias no lado do servidor (risco de SSRF) — mantenha o padrão url_preview_ip_range_blacklist para faixas privadas, limite o max_upload_size e execute retenção/limpeza periódica de mídia, pois o armazenamento de mídia cresce sem limite.
  • Reforce os limites de taxa (rate limits) atrás do proxy: defina x_forwarded: true no listener da porta 8008 para que o Synapse veja os IPs reais dos clientes, e então ajuste rc_login, rc_registration e rc_message para conter força bruta e abusos; a proteção DDoS da ChainVPS cobre a camada L3/4 abaixo disso.
  • Faça backup do Postgres e da chave de assinatura: gere dumps do banco regularmente e copie synapse-data/*.signing.key para um local externo — perder a chave de assinatura significa que a identidade do seu servidor e toda a confiança de federação se perdem para sempre.
  • Mantenha tudo atualizado: fixe e atualize regularmente a tag ghcr.io/element-hq/synapse, mantenha report_stats: no e nunca publique as portas 8008 ou 5432 para a internet — apenas a 443 (e opcionalmente a 8448) deve ficar acessível.

Perguntas

Hospedagem Matrix (Synapse) — FAQ

Preciso ter meu próprio domínio?

Sim. Os IDs de usuário do Matrix e a federação estão vinculados a um domínio (ex.: @you:example.com). Você precisa de um domínio com DNS sob seu controle para apontar para a VPS e servir os registros de federação /.well-known. O domínio pode ser registrado por meio de um registrador que respeite a privacidade; o servidor em si continua sem KYC.

Posso rodar o Synapse totalmente privado, sem federação?

Sim. Defina um federation_domain_whitelist vazio ou omita o listener de federação para que seu homeserver nunca se comunique com a rede pública do Matrix. Seus usuários continuam tendo chat, voz e vídeo totalmente criptografados de ponta a ponta entre si, inteiramente no seu servidor offshore.

Por que PostgreSQL em vez do SQLite padrão?

O Synapse vem com SQLite apenas para testes rápidos. Ele não lida bem com concorrência ou carga de federação e não pode ser escalado com workers. Qualquer implantação real deve usar PostgreSQL criado com locale C (o arquivo compose acima faz isso automaticamente para você); migrar depois é doloroso, então comece direto no Postgres.

De quanta RAM o Synapse realmente precisa?

Mais do que as pessoas esperam. Um servidor tranquilo, de um único usuário, cabe em ~1,5-2 GB, mas assim que você entra em salas federadas grandes, os caches por sala fazem a memória disparar. Reserve 4 GB para uma comunidade pequena e ajuste os caches (caches: global_factor) conforme sua RAM, em vez de deixá-los crescer sem controle.

Qual cliente meus usuários devem instalar?

O Element (web, desktop, iOS, Android) é o cliente padrão do Matrix e se conecta ao seu homeserver a partir da URL informada. O registro /.well-known/matrix/client que você serve na porta 443 permite que o Element descubra seu servidor automaticamente apenas a partir do ID Matrix do usuário.

Hospedar offshore prejudica a federação ou a qualidade das chamadas?

Não. A federação funciona sobre HTTPS padrão independentemente da localização, e a proteção DDoS incluída mantém o servidor exposto à internet estável. Para voz/vídeo em tempo real, escolha a localização de nível privacidade mais próxima dos seus usuários para minimizar a latência; Holanda e Luxemburgo têm boa conectividade (peering) para tráfego europeu.

Implante Matrix (Synapse)
nos próximos 60 segundos.

Banda ilimitada · DDoS incluído · 21 criptomoedas · sem KYC.