ハクソク

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

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つの専用コアだからね。