ffcom Entrar

Em testes · acesso por convite

Sua comunidade, no seu servidor.

O FFCom organiza a conversa do jeito que você já conhece: servidores, categorias e canais de texto, voz e fórum. A diferença está em quem guarda tudo isso, porque cada servidor roda na máquina de quem cria a comunidade, e nenhuma empresa pode desligar, vender ou mudar as regras dele por você.

Esqueci minha senha

No app para Windows, o próprio app avisa quando há versão nova. Ao instalar, o Windows pode mostrar "O Windows protegeu o computador": clique em Mais informações e em Executar assim mesmo.

No Android, o app vem como APK, fora da Play Store. Ao abrir o arquivo, o Android pede para permitir instalar apps desta fonte (o navegador ou o app de arquivos), e o Play Protect pode avisar que o app é desconhecido: toque em Mais detalhes e em Instalar mesmo assim. Depois, o próprio app avisa quando há versão nova. Todas as versões do APK, com as notas de cada uma, ficam nas releases do app no GitHub.

O que já funciona

Tudo abaixo já está implementado e no ar na instância de testes.

Texto em tempo real

Canais de texto com histórico, anexos, edição e exclusão de mensagens, e indicador de não lidas em todos os servidores ao mesmo tempo.

Voz, vídeo e tela

Canais de voz com câmera, compartilhamento de tela, push-to-talk e atalho para mutar, rodando num LiveKit que fica no seu próprio servidor.

Fórum

Para o que não pode se perder no meio do chat: tópicos com respostas, organizados como qualquer outro canal.

Cargos e permissões

Cargos com permissões por servidor e ajustes por canal, além de convites, expulsão e banimento de membros.

Amigos e mensagens diretas

Lista de amigos com presença, e mensagens diretas cifradas de ponta a ponta: nem o servidor que entrega a mensagem consegue lê-la.

No navegador ou instalado

Funciona no navegador e pode ser instalado como aplicativo (PWA). A versão desktop em Electron está em preparação.

Como funciona

São três peças, e só uma delas é central, a que guarda a sua conta.

server-central · uma instância oficial

Sua conta

Login, perfil, amigos, mensagens diretas cifradas e a lista dos servidores em que você entrou. Não guarda as conversas dos servidores.

client · web e desktop

O aplicativo

Um só aplicativo conversa com quantos servidores você quiser, cada um no endereço de quem o hospeda.

server-channel

A casa da família

server-channel

O grupo do RPG

server-channel

A sua comunidade

Cada server-channel guarda os próprios canais, mensagens, arquivos e chamadas de voz. Se um deles sair do ar, os outros seguem funcionando, e ninguém de fora decide quem entra: só se chega a um servidor por convite ou pelo endereço dele.

Hospede o seu

Um servidor FFCom é um diretório com um docker-compose.yml e um arquivo .env. Ele sobe o serviço, o banco Postgres, o LiveKit para voz e vídeo e um servidor TURN para atravessar NAT, sem compilar nada na sua máquina.

Depois de instalado, o servidor se atualiza sozinho: ele consulta um índice de versões assinado, confere a assinatura e o hash de cada binário e volta para a versão anterior se a nova não subir.

Hoje a imagem é publicada para linux/amd64. Na frente do servidor vai um proxy reverso com HTTPS; o guia recomenda o Caddy, que emite o certificado sozinho.

Guia completo de hospedagem

# no diretório server-channel do repositório
$ cp .env.example .env
$ nano .env  # senhas, chaves do LiveKit, IP público
$ docker compose up -d
[+] Running 4/4
 ✔ Container server-channel-postgres-1  Healthy
 ✔ Container server-channel-livekit-1   Started
 ✔ Container server-channel-coturn-1    Started
 ✔ Container server-channel-app-1       Started
$ curl -s localhost:8080/healthz
{"status":"ok","version":"0.7.1"}
Logo do FFCom: dois f minúsculos unidos pela mesma barra, dentro de um balão de conversa

Por que FFCom

FFCom quer dizer Friends & Family Communication.

A turma para quem você liga sem avisar merece um lugar para conversar que seja de vocês, e não um espaço alugado de uma empresa que pode mudar as regras amanhã. O FFCom nasceu daí: para conversar com quem importa, num servidor que você controla.

O logo conta a mesma história. São dois f que dividem a mesma barra, como na ligadura clássica da tipografia, dentro de um balão de conversa: a barra que atravessa os dois é o laço entre as pessoas.

Onde estamos

O FFCom está em testes com usuários reais na instância oficial, e cada conta nova passa por aprovação: peça a sua aqui. O código é público no GitHub, sob a licença AGPL-3.0, e o que falta fazer está no TODO do projeto. As decisões técnicas, com as alternativas consideradas e o motivo de cada escolha, ficam em docs/architecture.md.

Participe

Peça sua conta na instância oficial do FFCom. Cada pedido é lido por uma pessoa antes de ser aprovado.

Tenha um server-channel

A conta sozinha dá acesso às mensagens diretas com amigos. Canais de texto, voz, vídeo e fórum vivem nos servidores de comunidade (server-channel): para usar o FFCom por inteiro, você precisa do seu próprio ou de um convite para o servidor de alguém.

Como hospedar o seu

Depois da aprovação, chega um e-mail para você escolher a senha. Se o pedido não for aprovado, nenhum e-mail é enviado.

Já tem conta em outro serviço da infra A3S? Marque a opção no formulário: aprovado o pedido, você entra no FFCom com o mesmo usuário e senha, sem e-mail novo.

Marque se você já entra em outro serviço da A3S. Aí não precisa escolher usuário nem apelido: a sua conta só ganha acesso ao FFCom.

Ideias para o FFCom

Sugira o que você quer ver no FFCom e vote nas ideias das outras pessoas. As mais votadas entram primeiro no próximo ciclo de desenvolvimento.

    Uma sugestão por pessoa por dia. Like vale 2 pontos e dislike tira 1. Sugestões ofensivas são descartadas, e as que a verificação automática não liberar só aparecem depois de um moderador aprovar.

    Histórico de versões

    O que cada versão publicada trouxe. App, servidor central e servidor de comunidade têm versões independentes.

    1. O histórico fica no CHANGELOG.md do projeto no GitHub.

    Privacidade

    O que a instância oficial do FFCom guarda e por onde passa cada coisa.

    Conta. O pedido de cadastro (nome, nome de usuário, apelido, e-mail, o motivo e o endereço IP de onde veio) fica no servidor central para a análise. Aprovada a conta, o login e a senha ficam no Authentik da instância. O servidor central guarda o perfil (nome de exibição, avatar e idioma), a lista de servidores, as amizades e as mensagens diretas, que são cifradas de ponta a ponta: ele guarda só o texto cifrado e não consegue ler.

    Comunidades. Mensagens, anexos e membros de cada comunidade ficam no servidor de comunidade (server-channel) dela, sob o controle de quem o hospeda, e não no servidor central. Voz, vídeo e tela compartilhada passam pelo servidor de mídia dessa comunidade e não são gravados pelo FFCom.

    Notificações no app Android. Para avisar de mensagens com o app fechado, o app usa o Firebase Cloud Messaging, do Google. O aparelho registra no servidor central o identificador de notificação dele. A cada mensagem nova num canal, o servidor central manda pelo Firebase o nome do servidor e do canal, o nome de quem escreveu e até 300 caracteres do texto; nas mensagens diretas, que são cifradas, vai só o nome de quem mandou. Esse conteúdo não fica guardado no servidor central e passa pelo Google só em trânsito (o Firebase segura a mensagem por até 24 horas enquanto o celular está sem conexão). Todos os avisos (de canal, de mensagem direta e de amizade) levam também um link temporário para a foto de perfil de quem mandou, que o app baixa do servidor central. O link vale por até 48 horas e usa um identificador aleatório, impossível de adivinhar.

    Dá para silenciar um servidor ou um canal pelo menu dele, desligar as notificações do FFCom nas configurações do Android ou sair da conta, que tira o aparelho da lista. No navegador e no app para computador nada passa pelo Firebase.