2 pontos por GN⁺ 2025-12-31 | 1 comentários | Compartilhar no WhatsApp
  • 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

 
GN⁺ 2025-12-31
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

    • Linux varia conforme a distribuição e a configuração
      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
    • Lembro que, 20 anos atrás, o Linux usava metade dos recursos que usa hoje
      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
    • Também existem distribuições leves como o Alpine
      Até o login por SSH é muito mais rápido do que no Ubuntu, e o gerenciador de pacotes apk também é extremamente ágil
    • Os utilitários BSD são muito mais fáceis de ler para entender o funcionamento interno do que os utilitários GNU
      Prefiro o modelo de licença do lado GNU, mas gosto mais do estilo do código BSD
    • Quando você diz “retro BBS-like web app”, quer dizer aquelas BBS antigas de acesso discado, ou um fórum em estilo bulletin board?
      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/

    • Muito legal. Parece útil para qualquer praia
      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

    • Penso o mesmo
      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

    • O LowEndBox é um site popular que reúne informações desse tipo de VPS
    • Também vale olhar o Netcup VPS 500 G11s
    • É preciso tomar cuidado ao comparar o desempenho de vCPU entre provedores de VPS
      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
    • A Oracle Cloud oferece gratuitamente 4 oCPU (ARM), 24GB de RAM, 200GB de SSD NVMe e 4Gb/s de banda
      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
    • Antigamente usei um VPS da buyvm de 5 dólares por ano (256MB de RAM), e para usos simples era bem útil
  • É 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

    • Na verdade, a estrutura é de 2 pacotes de CPU × 4 núcleos × 2 threads, totalizando 16 threads
    • Mesmo assim, são núcleos dedicados, sem compartilhamento com outros tenants
  • 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

    • O objetivo do projeto não é oferecer suporte multilíngue, e sim entregar a previsão diretamente ao usuário
      Em vez disso, ele usa emoji como expressão intuitiva para reduzir a barreira do idioma