世界を動かす技術を、日本語で。

FediMeteo: €4のFreeBSD VPSがグローバル気象サービスに変貌した

概要

  • FediMeteo は、天気予報を ActivityPub タイムラインに自動投稿するプロジェクト
  • インスピレーションは 祖父 と個人的な天気への関心から
  • FreeBSD jailssnac を活用した設計、国ごとに分離管理
  • アクセシビリティ重視、 多言語・絵文字・テキストブラウザ対応
  • 2025年12月時点で 38カ国 に拡大、安定運用中

FediMeteoの誕生と背景

  • 天気が生活に与える影響を実感した経験、特に スポーツ時代や通学 の判断
  • 祖父が 家庭の気象予報士、その影響を受けてプロジェクトを発案
  • ふとしたきっかけで ドメイン取得、計画を開始
  • 目標: 自分のタイムラインで定期的に天気情報を受け取る 仕組み

設計思想と選択

  • 国ごとにインスタンスを分離、FreeBSD jailによる管理
  • VPS は低コスト(4ユーロ/月)のものをイタリア・ミラノで利用
  • 各国を分離することで 管理性・セキュリティ・移設性 を確保
  • 天気データは wttr.in または Open-Meteo から取得
  • アクセシビリティ重視
    • 地元言語対応、テキストブラウザ閲覧可、絵文字で直感的理解
    • JavaScript不要、母語での情報提供
  • UNIX哲学 :小さな部品の連携でシンプルに構築
  • インスタンス管理は snac を採用
    • ActivityPub対応、RSS出力、低リソース消費、安定性
    • 開発者の対応力も高評価
  • 自己満足のためにも運用、反響がなくても継続する心構え

技術的実装

  • 各jailが全て内包、Pythonスクリプトで都市ごとにデータ取得・Markdown生成
  • 都市座標は geopy で計算し、APIコールで天気取得
  • ローカル保存なし、都度取得・投稿
  • snacの snac note コマンドで直接投稿、APIキー管理不要

イタリア用セットアップ

  • 主要都市リストを正規化(例:La Spezia→la_spezia、Forlì→forli)
  • スクリプトで都市ごとにsnacユーザー作成、プロフィール自動設定
  • 都市追加もスクリプトで簡単に対応、cities.txtに自動反映

コアアプリ開発

  • Pythonアプリで都市名・国コードを受け取り、 現在・12時間後・7日間 の天気を取得
  • Markdownで出力、snacに直接渡して投稿
  • 更新用の post.sh (shスクリプト)で全都市巡回・自動投稿
  • Uptime-Kuma で監視、失敗時はアラート通知
  • cronで 6時間ごと に自動実行、都市ごとに順次投稿

拡大と反響

  • イタリア全都市でテスト、調整を重ねて運用安定化
  • 投稿の言語設定問題も snac開発者の迅速な対応 で解決
  • 他国展開を開始し、 多言語・絵文字 でアクセシビリティ確保
  • ユーザーからのフィードバックで 翻訳ミスや多言語対応 を改善
  • FediFollows による紹介で一気に認知度拡大、追加要望も増加
  • 非公開投稿(unlisted) 要望もsnac開発者の対応で実現

スケール課題とグローバル対応

  • 新規国追加で 単位系(C/F)・タイムゾーン ・同名都市問題が発生
  • 都市名__州名 の形式で都市区別(例:new_york__new_york)
  • VPSリソースの限界に挑戦、 snacとFreeBSDの効率性 を実感
  • Open-Meteo のAPI制限も、運営側の協力で専用キーを取得

北米展開と運用状況

  • アメリカ・カナダ 主要都市1200超をカバー
  • 初期の米国での反応は意外にも低調、カナダ・ドイツ・英国で人気
  • VPSは安定稼働、 日本・オーストラリア・ニュージーランド にも展開
  • 2025年12月末時点で 38カ国 対応、安定した自動運用体制

今後の展望

  • ユーザー要望・多国語対応 の継続的改善
  • VPS・APIリソースの監視と最適化
  • シンプルかつ堅牢な設計 を維持しつつ、さらなる拡大を模索

Hackerたちの意見

プロジェクトの詳細な説明、めっちゃいいね!小さなVPSでも色々できるよね。

ありがとう!

ドイツのプロバイダーで、4つの共有コア、4GBのRAM、120GBのSSDディスクスペース、1Gbit/secのインターネット接続。こんなスペックの€4のVPS、どこで見つけたんだろう?例えば、Hetznerの一番安いVPSは2つの共有vCPU、4GBのRAM、40GBのNVME SSDだよ。私が見つけた一番安いのは https://contabo.com/en/vps/ だけど、その値段で1gb/sの接続はないね。追記:タイプミス。

これだね:https://www.netcup.com/de/server/vps/vps-500-g11s

https://www.lowendbox.com/ は人気の情報源だよ。

buyvmは昔、256MBで年$5くらいのやつを持ってたんだよね(そのスペックじゃなかったけど)。シンプルなことに使うために、1つか2つ買うのが好きだったな。

今はミラノ、イタリアで月4ユーロのVPSがあるよ - 4つの共有コア、8GBのRAM、75GBのディスクスペース。彼はそれを見つけたわけじゃなくて、その価格でイタリアにもっとスペックの良いものを見つけたんだ。

€1や€2のVPSもあるよ: https://www.strato.nl/server/vps-linux/ (品質はよくわからないけど ¯_(ツ)_/¯)

すごいプロジェクトだね!FediFollowsがもっと目立つように手助けした理由がわかるよ。 https://social.growyourown.services/@FediFollows/11565141936...

ありがとう!

これ、めっちゃいいね!こういう小さなプロジェクトが成功するのを見るのは楽しい。もしかしたら勘違いかもしれないけど、FreeBSDってLinuxディストロに比べて無駄が少ない気がするし、レイテンシも良さそう。Vultrで1G RAMと1vCPUの$4/月のFreeBSD VMをセットアップしたけど、Caddy使ってもRAMの12%しか使ってないよ。4GBのRAMと4 vCPUのVMなら、かなりのトラフィックを捌けそう。レトロなBBS風のテキストファーストインターフェースの個人ブログを作りたいんだ。マルチスレッドのNimサーバーとsqliteを使って。もう似たようなものはあるかもしれないけど、自分の遊びのためにやりたいんだ。コンテナも非同期処理もJavaScriptライブラリもなしで、ただ4MBのバイナリとFreeBSDだけ。この記事を見て、FreeBSDの道を進む勇気が出たよ!

ありがとう!

無駄のないディストロは存在するよ、Alpineがその一例。めっちゃサクサク動くのに驚いた。余計な遅延もなく、SSHでログインするだけでも、Ubuntuみたいにプロンプトが出るまで待たなくていいから速く感じる。apkも超速いし。

Linuxの場合、ディストリビューションや設定によって変わるよね。例えば、今日mkosiを使ってテストした結果、ベアボーンのFedora 43のインストールは約130 MiBのRAMを使って、Debianのインストールはちょっと100 MiBを超えるくらいだった。確か、前にベアボーンのFreeBSDを試したときも同じくらいのメモリを使ってたと思うけど、ZFSの設定によってはもう少し多くなるかもね。 [1]: https://github.com/systemd/mkosi

「アクセシビリティには注意が必要だね:予報は現地の言語で表示されるべきだ…」現地の天気に興味があるのに、その言語が話せない人もいるからね。なんでブラウザの設定した言語を上書きするの?

そうじゃないよ。好きな言語にテキストを翻訳できるから。プロジェクトはユーザーに予報を送ることを目指しているから、多言語にはできないんだ。まあ、だからこそ絵文字があるんだよね。あれは国際的だから。

4ユーロのサーバーはいいね。似たようなスペックのサーバーを5ドルくらいで手に入れたと思うけど、ストレージが400GBか500GBあって、全体的に見てお得かも。ただ、正直言うと、8ドルのバウチャー付きの3ヶ月間の特別価格だったから、まだ1ヶ月しか経ってないけど、3ヶ月後は5ドル/5ユーロ払わなきゃいけない。でも、もしかしたらそれだけの価値があるかも。VPSを持ち始めると、なかなか手放せないっていう感覚があるよね。OVHは市場で一番安い方だし、いい会社だと思う。中にはOVHのサーバーを転売している人もいるし、彼らはその点でリラックスしていると思う。OVHの無制限の出口ポリシーも利点の一つだね。UpcloudとOVHが似たようなサービスを提供しているけど、OVHの方が安いと思う。Upcloudのサポートチームは素晴らしかったけど(彼らにスポンサーされたいくらい)。プロのアドバイスだけど、OVHにはTwitterで連絡するといいって聞いたことがある。私はTwitter使ってないけど、サポートのために彼らのDiscordに参加するのもいいかも。コアメンバーの一人が、私の簡単な質問に答えてくれたことがあるし(OVHサーバーでDockerを動かす方法/自動化する方法)。でも、OVHの利用規約に関する質問には答えてくれなかったから、開発者に聞くべきかどうかは微妙だけど、全体的にこれらは選択肢としてはかなり良いと思う!サーバーの価格やサポートを最適化するのって、なんか楽しいよね。頭の中でグリッドのような最適化が起こる感じ。

やばい、めっちゃいい記事だね!自分も似たようなものを作り始めたところなんだけど、こっちはCloudflare Workersでステートレスにしてるんだ。これ、最高!

すごい!それに、snacについても今日初めて知ったよ。fediverseやActivityPubのコンポーネントがこんなに小さくて実用的だなんて、ほんとに面白いデザインとアーキテクチャだね。シェアしてくれてありがとう!

Kubernetesとか、AWSのAZを4つも使わないで何かを作ってる人を見るのは嬉しいね。DynamoDBやS3、Lambdaとかもなしで。

確か、HN自体も控えめなハードウェアで動いてるはずだよ(4コアで、FreeBSD使ってる)。 https://news.ycombinator.com/item?id=28479595

そうそう、それは他のテナントと共有してない4つの専用コアだからね。