- FediMeteo は、4ユーロの FreeBSD VPS から始まった 世界規模の気象情報サービス で、Fediverse を通じて各都市の天気を自動投稿している
- 各国は FreeBSD jail で分離して管理され、snac ソフトウェアと Open-Meteo API を使ってデータを取得し、Markdown 形式で投稿
- システムは 6時間ごとに自動更新 され、39個の jail、38か国2937都市をサポートし、フォロワー数は7700人以上に成長
- APIキー漏えい、座標計算エラー、言語翻訳の問題 などさまざまな運用上の課題を経験したが、キャッシュや多言語対応の改善によって安定化
- 低コストのインフラでも 効率的で自律的なグローバルサービスの構築が可能 であることを示す事例として評価されている
プロジェクト概要
- FediMeteo は個人的な関心から始まった Fediverse ベースの自動気象通知サービス
- 作者は、自分の街の天気をタイムラインで直接見たいという発想から着手
- サービスは 都市ごとのアカウント(bot) を作成し、各都市の天気を定期的に投稿
- OS として FreeBSD を選択し、国ごとに jail を分離して運用・セキュリティを確保
- 初期テストはドイツの VPS で行われ、現在は イタリア・ミラノの4ユーロVPS で運用中
設計原則
- 国別インスタンス分離 により運用性とセキュリティを強化し、必要に応じて個別移設も可能
- データソース は wttr.in と Open-Meteo から選択し、オープンソース親和性と信頼性を重視
- アクセシビリティ強化:現地言語、テキストブラウザ互換、絵文字の使用、JavaScript 非依存
- Unix 哲学 に従い、小さな構成要素が連携する構造を維持
- snac を中核ソフトウェアとして採用し、ActivityPub 対応、RSS 生成、低リソース使用、高速コンパイルを備える
技術実装
- 各 jail は独立して動作し、Python スクリプト が都市ごとのデータを取得して Markdown に変換
- geopy で座標を計算した後に Open-Meteo API を呼び出し
- snac の
note コマンドで投稿を送信し、外部 API キー管理は不要
- post.sh スクリプトがすべての都市を巡回し、投稿を自動生成して公開
- cron が6時間ごとに実行し、Uptime-Kuma で状態を監視
- 都市名はファイル(
cities.txt)で管理され、新しい都市を追加すると自動的に反映
成長と反応
- 初期はイタリア中心にテストし、その後ヨーロッパ各国へ拡大
- FediFollows がプロジェクトを紹介したことでフォロワーが急増し、各国ユーザーからの要望も増加
- 多言語対応、絵文字表現、限定公開投稿(unlisted) 機能を追加
- 開発者コミュニティからの迅速なフィードバックにより、機能改善が継続
拡張と技術的課題
- 単位変換(摂氏/華氏)、タイムゾーン差、同名都市の識別 など、グローバル展開時に問題が発生
- 米国・カナダ 進出時には1200以上の都市を追加し、州ごとの区別のため
__ 区切りを使用
- Open-Meteo 無料 API の上限超過問題が発生した後、専用 API キーの提供を受けた
- FreeBSD と snac の効率性 により、単一の VPS でも多数の国を運用可能
システム性能とインフラ
- VPS 仕様:FreeBSD 14.3-RELEASE、BastilleBSD で jail を管理
- 合計 39個の jail、ZFS スナップショットを15分ごと、外部バックアップを毎時実行
- RAM 使用量 501MB、更新時にはやや増加
- CPU 負荷平均は10%未満、大規模更新時には70〜75%まで上昇
- 米国インスタンス は都市間を5秒間隔で投稿し、全体処理に約2時間半を要する
問題解決の事例
- API キー漏えい:デバッグコードにより露出し、即座に修正して新しいキーを再発行
- geopy エラー:Nominatim の応答失敗時に座標キャッシュを導入して解決
- 言語問題:多言語翻訳の欠落や現地言語選択の誤りを修正
現在の状況(2025年12月時点)
- 対応国:38か国、都市数 2937都市
- Fediverse のフォロワー数 7707人以上、RSS 購読者数は推定不可
- ヨーロッパ、北米、アジア、オセアニア の主要都市を含む
- システムは安定稼働中で、さらに対応国を拡張する余地あり
結論
- FediMeteo は 低コストのインフラでもグローバルサービスを構築できることを実証
- データ主権、シンプルな構造、オープンソース協業 の価値を示す事例
- 作者は、このプロジェクトを通じて 天気が人々をつなぐ社会的な媒介 になったことを強調している
1件のコメント
Hacker Newsのコメント
こういう小さなプロジェクトがうまく成長していくのを見るのは本当に楽しい
FreeBSD は Linux ディストリビューションより余計なものが少なく、レイテンシも低い印象がある
Vultr で月 4 ドルの FreeBSD VM(1GB RAM、1vCPU)を設定したが、Caddy を動かしても RAM 使用率は 12% しかない
4GB RAM、4vCPU の VM ならかなりのトラフィックをさばけそう
個人ブログをレトロな BBS スタイルのテキストベース Web アプリにしたいと思っている — Nim のマルチスレッドサーバー + sqlite の組み合わせで、コンテナや JS ライブラリなしに 4MB のバイナリ 1 つで FreeBSD 上で動かす感じで
この記事のおかげで FreeBSD に進む決心がついた
今日 mkosi(https://github.com/systemd/mkosi) で試したところ、最小インストール基準で Fedora 43 は約 130MiB、Debian は 100MiB ほど RAM を使っていた
以前 FreeBSD の最小インストールも試したが、それも同程度か、ZFS の設定次第で少し多かった記憶がある
おそらく x64 への移行も原因の 1 つかもしれない
同じことをするのに RAM を 2 倍使うようになったのは不思議だったが、その代わり今では事実上無制限の RAM を使えるようになった
SSH ログインですら Ubuntu よりずっと速く、apk パッケージマネージャーも非常に高速だ
ライセンスモデルは GNU のほうが好みだが、コード自体は BSD スタイルのほうが好きだ
後者なら FlaskBB を参考にしてみるとよいかもしれない
私も似たように open-meteo を使って個人用のサーフィン予報システムを作っている
1 地域だけを扱っているが、拡張も簡単だ
open-meteo の海洋データを短期・長期の気象予報と組み合わせ、その結果を LLM で定量データから定性的な説明へ変換している
自分が頭の中でやっていたことを自動化したようなものだ
アイデアがあれば教えてほしい
https://surfrash.xyz/
データの壁ではなく説明中心のインターフェースが気に入った
Manly(NSW, Australia)地域の追加もお願いしたい
面白く読んだ
若い頃に *BSD にもっと関心を持っていればよかったのにと思うが、今では Linux に慣れすぎていて簡単には乗り換えにくい
ZFS とjail 機能のおかげで運用がスムーズになっているようだ
私は podman を使っているが、Linux ではまだ ZFS を使ったことがない
個人用アーカイブを作る予定なので、ZFS の deduplication 機能を活用してみるつもりだ
Docker のような複雑なスタックを減らそうとしていて、systemd はあるものの、jail や sandbox の概念はかなり魅力的だ
デフォルト設定だけでもしっかり動くツールを好む
「4 ユーロ VPS」のスペックには驚いた
たとえば Hetzner の最安 VPS は 2 vCPU、4GB RAM、40GB NVMe SSD だが、1Gb/s 接続はない
自分が見つけた最安は Contabo だった
格安サーバーは世代が古かったり、過剰に共有されていたりすることが多い
4 vCPU が最新サーバーの 2 vCPU より遅いこともありうる
ただし RAM 中心のアプリなら良い選択肢になりうる
インスタンス確保が難しいという話もあるが、私は 2 年以上問題なく使っている
無料アカウントが終了する可能性があるので、有料へ切り替えるほうが安全だ
Kubernetes、AWS、DynamoDB などの巨大なインフラなしにシンプルなプロジェクトを自分で構築しているのが良い
Hacker News 自体もFreeBSD ベースの 4 コアサーバーで動いている
関連リンク
私も似たスペックのサーバーを 5 ドル程度で契約した
400〜500GB のストレージがあり、3 か月間 8 ドルのプロモーションで始めた
その後は月 5 ドルに切り替わる予定だが、VPS を自分で運用する楽しさと没入感が大きい
OVH は価格が安く、無制限 egress ポリシーが利点だ
Upcloud もサポートチームが素晴らしかった
OVH のサポートには Twitter や Discord 経由で問い合わせるとよいという話も聞いた
サーバー価格とサポート品質を比較しながら最適化する過程そのものが楽しい
“freeofcharge.org” というドメインを買って、RAM に収まる無料サービスをサブドメインとして提供するアイデアを考えたことがある
月 10 ドル以下で運用できる便利なサービスを集める構想だった
私も似たように、特定地域の気象特報を HTML/Markdown 形式で見やすく変換するツールを作りたい
fediverse 向けではなく、単にアクセシビリティの高い天気アラート用だ
「現地言語で予報を提供すべきだ」という意見については、
現地言語がわからないユーザーも多いので、ブラウザの既定言語設定を上書きするのは不要だと思う
その代わり、絵文字で直感的な表現を提供して言語の壁を下げている