概要
- Digital OceanからHetzner VPSへの移行体験談
- Ubuntu 16.04からFreeBSDへのシステム刷新
- FreeBSD JailsとBastilleによるサイト分離運用
- Caddy導入によるSSL自動化と運用効率化
- サイト移行とベンチマーク結果の紹介
10年越しVPS運用からFreeBSD Jailsへの刷新記録
- Digital Ocean VPS で10年以上運用していたブログの移行体験
- Ubuntu 16.04 LTS (5年以上サポート終了)で稼働、セキュリティリスク増大
- Hetzner VPS (ドイツ拠点)への移行決断、料金半減・性能大幅向上
- 旧サーバ: 2GB RAM, 1 vCPU, 50GBディスク, 2TB/月トラフィック, $13/月
- 新サーバ: 4GB RAM, 2 vCPU, 40GBディスク, 20TB/月トラフィック, €6/月
- サイトは主に 静的サイト、nginxで運用、Hugoで生成
- 旧VPSは約4年間(1491日)無停止稼働実績
FreeBSD選択の動機と特徴
- 新しい技術への挑戦 としてFreeBSDを選択
- FreeBSD Jails :25年以上前から存在する軽量な仮想化・サンドボックス機能
- Dockerのような「パッケージ型」ではなく、 サブシステム型 の分離運用
- システムごとに 独立した環境 を構築可能
- ZFSファイルシステム 採用
- Btrfsと比較して成熟度・信頼性が高い
- 独自でスナップショット・バックアップ運用が可能
- サイトごとにJailを分離、メインWebサーバ(Caddy)がリバースプロキシとして機能
- 1つのJailが侵害されても復旧が容易
Hetzner VPSでのFreeBSDセットアップ
- Hetznerの標準イメージ一覧にはFreeBSDが表示されないが、 ISOイメージ から導入可能
- FreeBSD公式YouTubeチャンネルのガイドを参考にインストール
- FreeBSD 14.3-RELEASEを選択
- Bastille を利用してJailsの管理を効率化
pkg install bastilleでインストールbastille createで簡単にJailを作成・管理
FreeBSD JailsとBastilleによるスタック構成
- CaddyサーバJail :全サイトのリバースプロキシ・SSL証明書自動管理
- nginxと異なり、 SSL証明書の自動更新 が標準機能
- 設定ファイルはホスト側と nullfsマウント で共有・管理
- 各サイトごとに 独立したJail を構築
- 必要なビルドツール(例: Hugo)を個別インストール
- 内部ネットワーク(bastille0)上で通信
- PF(Packet Filter) によるファイアウォール・NAT・リダイレクト設定
- 内部Jailからの外部アクセスや、HTTP/HTTPSトラフィックの振り分けを制御
Caddy Jailの構築手順(抜粋)
bastille bootstrap 14.3-RELEASEでベースイメージ取得bastille create caddy 14.3-RELEASE 10.0.0.5 bastille0でJail作成bastille console caddyでJail内シェルにアクセスpkg install caddyでCaddyサーバをインストール・起動- 設定ファイルのマウント例:
bastille mount caddy /usr/local/etc/my-caddy-config /usr/local/etc/caddy nullfs ro 0 0
まとめと今後
- FreeBSD Jails と Bastille の組み合わせで安全かつ効率的なサイト運用を実現
- Caddyサーバ によるSSL自動化でメンテナンス負担を大幅軽減
- サイトごとに 分離された環境 でセキュリティと復旧性を強化
- 今後は各Jailの運用詳細や、パフォーマンスベンチマークの結果も紹介予定