- FediMeteo é um serviço global de informações meteorológicas que começou em um VPS FreeBSD de 4 euros e publica automaticamente o clima de cada cidade por meio do Fediverse
- Cada país é administrado separadamente em um FreeBSD jail, usando o software snac e a Open-Meteo API para buscar os dados e publicá-los em formato Markdown
- O sistema é atualizado automaticamente a cada 6 horas, suporta 39 jails, 2937 cidades em 38 países e cresceu para mais de 7700 seguidores
- O projeto enfrentou vários problemas operacionais, como vazamento de chave de API, erros no cálculo de coordenadas e problemas de tradução de idioma, mas se estabilizou com melhorias em cache e suporte multilíngue
- É visto como um caso que mostra que, mesmo com infraestrutura de baixo custo, é possível construir um serviço global eficiente e autônomo
Visão geral do projeto
- O FediMeteo é um serviço automatizado de alertas meteorológicos baseado no Fediverse que nasceu de um interesse pessoal
- O criador começou com a ideia de querer ver o clima da própria cidade diretamente na timeline
- O serviço cria contas por cidade (bots) e publica periodicamente o clima de cada uma
- O sistema operacional escolhido foi o FreeBSD, com jails separados por país para facilitar a administração e reforçar a segurança
- Os testes iniciais foram feitos em um VPS na Alemanha, e hoje o serviço roda em um VPS de 4 euros em Milão, na Itália
Princípios de design
- Separação de instâncias por país para reforçar gestão e segurança, com possibilidade de mover cada uma individualmente quando necessário
- A fonte de dados é escolhida entre wttr.in e Open-Meteo, priorizando compatibilidade com open source e confiabilidade
- Maior acessibilidade: idioma local, compatibilidade com navegadores em modo texto, uso de emojis e sem dependência de JavaScript
- Manutenção de uma estrutura em que pequenos componentes cooperam entre si, seguindo a filosofia Unix
- Adoção do snac como software central, com suporte a ActivityPub, geração de RSS, baixo uso de recursos e compilação rápida
Implementação técnica
- Cada jail funciona de forma independente, e um script em Python busca os dados de cada cidade e os converte em Markdown
- Usa geopy para calcular coordenadas e depois chama a Open-Meteo API
- Envia as postagens com o comando
note do snac, sem necessidade de gerenciar chaves de API externas
- O script post.sh percorre todas as cidades e gera/publica automaticamente as postagens
- O cron roda a cada 6 horas, com monitoramento de status via Uptime-Kuma
- Os nomes das cidades são gerenciados em um arquivo (
cities.txt), e novas cidades passam a ser refletidas automaticamente quando adicionadas
Crescimento e reação
- No começo, os testes foram centrados na Itália e depois o serviço se expandiu para vários países da Europa
- Depois que o FediFollows apresentou o projeto, o número de seguidores disparou e aumentaram os pedidos de usuários de vários países
- Foram adicionados suporte multilíngue, expressões com emojis e a função de postagens não listadas (unlisted)
- Melhorias de funcionalidade continuam sendo feitas com feedback rápido da comunidade de desenvolvedores
Expansão e desafios técnicos
- Na expansão global surgiram problemas como conversão de unidades (Celsius/Fahrenheit), diferenças de fuso horário e distinção entre cidades com o mesmo nome
- Ao entrar em EUA e Canadá, foram adicionadas mais de 1200 cidades, usando o separador
__ para diferenciar por estado/província
- Depois de exceder o limite gratuito da Open-Meteo API, o projeto passou a receber uma chave de API dedicada
- Graças à eficiência do FreeBSD e do snac, é possível operar muitos países mesmo em um único VPS
Desempenho do sistema e infraestrutura
- Especificações do VPS: FreeBSD 14.3-RELEASE, com gerenciamento de jails via BastilleBSD
- Total de 39 jails, snapshots ZFS a cada 15 minutos e backup externo feito de hora em hora
- Uso de RAM de 501 MB, com pequeno aumento durante as atualizações
- Carga média de CPU abaixo de 10%, subindo para 70–75% em atualizações de grande escala
- A instância dos EUA publica com intervalos de 5 segundos entre cidades, e o processamento completo leva cerca de 2 horas e meia
Casos de resolução de problemas
- Vazamento de chave de API: exposta por causa de código de depuração; o problema foi corrigido imediatamente e uma nova chave foi emitida
- Erro no geopy: quando a resposta do Nominatim falhava, a solução foi introduzir cache de coordenadas
- Problemas de idioma: foram corrigidas falhas em traduções multilíngues e erros na escolha do idioma local
Estado atual (em dezembro de 2025)
- Países atendidos: 38, com 2937 cidades
- Mais de 7707 seguidores no Fediverse; o número de assinantes de RSS não pode ser estimado
- Inclui grandes cidades da Europa, América do Norte, Ásia e Oceania
- O sistema segue operando de forma estável e ainda tem margem para expansão para mais países
Conclusão
- O FediMeteo comprova que é possível construir um serviço global mesmo com infraestrutura de baixo custo
- É um caso que mostra o valor da soberania de dados, da estrutura simples e da colaboração open source
- O criador destaca que, por meio do projeto, o clima se tornou um meio social de conectar pessoas
1 comentários
Comentários do Hacker News
É muito prazeroso ver projetinhos assim crescerem com sucesso
Tenho a impressão de que o FreeBSD tem menos coisas desnecessárias e menor latência do que distribuições Linux
Configurei uma VM FreeBSD de 4 dólares por mês na Vultr (1GB de RAM, 1 vCPU) e, mesmo rodando Caddy, o uso de RAM fica em apenas 12%
Uma VM com 4GB de RAM e 4 vCPU provavelmente aguentaria bastante tráfego
Quero fazer um blog pessoal como um webapp textual em estilo BBS retrô — algo com servidor multithread em Nim + sqlite, rodando no FreeBSD como um único binário de 4MB, sem containers nem bibliotecas JS
Este post me deixou mais confiante em seguir pelo caminho do FreeBSD
Testei hoje com mkosi(https://github.com/systemd/mkosi) e, em instalação mínima, o Fedora 43 usa cerca de 130MiB de RAM, enquanto o Debian fica em torno de 100MiB
Quando testei uma instalação mínima do FreeBSD no passado, lembro que era parecido, ou um pouco mais dependendo da configuração de ZFS
Talvez a transição para x64 seja uma das causas
Achei curioso passarmos a usar o dobro de RAM para fazer a mesma coisa, mas em compensação agora dá para tratar RAM como algo praticamente ilimitado
Até o login por SSH é muito mais rápido do que no Ubuntu, e o gerenciador de pacotes apk também é extremamente ágil
Prefiro o modelo de licença do lado GNU, mas gosto mais do estilo do código BSD
Se for o segundo caso, vale dar uma olhada no FlaskBB
Também estou fazendo algo parecido com open-meteo para um sistema pessoal de previsão de surf
Cobre só uma região, mas é fácil de expandir
Combino os dados marítimos do open-meteo com previsão do tempo de curto e longo prazo, e então uso um LLM para transformar dados quantitativos em descrição qualitativa
No fim, automatizei o que eu fazia mentalmente
Se alguém tiver ideias, seria ótimo ouvir
https://surfrash.xyz/
Gosto da interface centrada em explicações em vez de um paredão de dados
Também peço a adição da região de Manly (NSW, Austrália)
Foi uma leitura divertida
Queria ter me interessado mais por *BSD quando era mais novo, mas hoje já estou acostumado demais com Linux para mudar com facilidade
Parece que o ZFS e o recurso de jails deixam a administração bem fluida
Eu uso podman, mas ainda não testei ZFS no Linux
Estou planejando um arquivo pessoal e pretendo aproveitar a deduplicação do ZFS
Estou tentando reduzir stacks complexas como Docker e, embora exista systemd, a ideia de jails ou sandbox é bem atraente
Prefiro ferramentas que funcionem bem só com a configuração padrão
As especificações desse “VPS de 4 euros” impressionam
Por exemplo, o VPS mais barato da Hetzner tem 2 vCPU, 4GB de RAM, 40GB de SSD NVMe, mas não oferece conexão de 1Gb/s
O mais barato que encontrei foi a Contabo
Servidores baratos muitas vezes são de gerações antigas ou excessivamente compartilhados
4 vCPU podem ser mais lentos que 2 vCPU de um servidor moderno
Ainda assim, para apps mais focados em RAM, pode ser uma boa escolha
Dizem que é difícil conseguir instâncias, mas eu uso há mais de 2 anos sem problemas
Como a conta gratuita pode ser encerrada, é mais seguro migrar para o plano pago
É legal ver alguém construindo um projeto simples por conta própria sem recorrer a uma infraestrutura gigante (Kubernetes, AWS, DynamoDB etc.)
O próprio Hacker News roda em um servidor FreeBSD de 4 núcleos
Link relacionado
Também comprei um servidor com especificações parecidas por cerca de 5 dólares
Tem 400~500GB de armazenamento, e começou com uma promoção de 8 dólares por 3 meses
Depois vai passar para 5 dólares por mês, e há algo muito envolvente e divertido em operar seu próprio VPS
A OVH tem preços baixos e a vantagem de uma política de egress ilimitado
A Upcloud também teve uma equipe de suporte excelente
Também ouvi a dica de que, no caso da OVH, é melhor falar com o suporte via Twitter ou Discord
Comparar preço de servidor e qualidade do suporte, e ir otimizando isso, já é divertido por si só
Já pensei em comprar o domínio “freeofcharge.org” e oferecer, em subdomínios, serviços gratuitos que cabem na RAM
A ideia era reunir serviços úteis que dessem para operar por menos de 10 dólares por mês
Também queria fazer algo parecido: uma ferramenta que converta alertas meteorológicos de uma região específica em HTML/Markdown fácil de ler
Não seria para o fediverso, apenas para alertas de clima mais acessíveis
Sobre a opinião de que “as previsões precisam ser fornecidas no idioma local”,
acho desnecessário sobrescrever o idioma padrão do navegador, já que há muitos usuários que não conhecem o idioma local
Em vez disso, ele usa emoji como expressão intuitiva para reduzir a barreira do idioma