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

私のセルフホスティング環境

2025年7月19日原文(codecaptured.com)

概要

  • 数年間の試行錯誤を経て、自己ホスティング環境を「十分良い」状態で安定運用
  • NixOS、ZFS、Tailscaleなど重要技術の選定と具体的な構成
  • プライバシー重視と家族・友人の使いやすさを両立した設計
  • 各種課題への対応策や実際の運用ノウハウの共有
  • 今後の展望と、他者への知見提供の意図

自己ホスティング環境の完成までの道のり

  • Docker ComposeAnsible など様々な手法を数年間試行
  • 完璧を求めて無限に構成をいじることから、「十分良い」を目指すことに方向転換
  • 目標・要件を明確化し、段階的な計画を作成
  • 半年以上大きな問題なく安定運用中
  • 得られた知見や具体的な課題解決策を、他者の参考になるようまとめて公開

目的と要件

  • 主な目的は データとサービスのコントロール によるプライバシー確保と安心感
  • 家族や友人にも同じ恩恵を提供
  • 要件(優先順):
    • できる限り インターネット非公開 運用(攻撃リスク低減)
    • コアインフラ障害 のリスク低減と復旧容易性
    • オープンソース重視 でコア要素を自前運用
    • 家族・友人が 簡単に使える (理想はSSO/一人一アカウント)
    • 宣言的な設定管理 (バージョン管理・バックアップ・変更追跡)
    • 安全で簡単なアップデート手順
  • 逆に「完璧なモジュール性」や「全てOSSであること」にはこだわりすぎない方針

主要技術選定

  • NixOS
    • OSやサービスの設定をnix言語で一元管理
    • 設定ファイルは Git管理 し、他人の事例も参考にしやすい
    • 不足パッケージは Podman/Docker で補完
  • ZFS
    • データ保護・スナップショット・ロールバックが容易
    • 4台の10TB HDDによる RAIDZ2 構成+256GB SSDキャッシュ
    • データ消失リスクを最小化しつつ、拡張性も確保
  • Tailscale(+headscale)
    • メッシュVPN で拠点間安全接続
    • 企業依存回避のためOSS版 headscale を自前運用
    • 利用者はクライアントインストール必須だが、セキュリティ重視
  • Authelia & LLDAP
    • 認証・認可 基盤(SSO/LDAP両対応)
    • nginxリバースプロキシと連携し、非対応サービスも保護
    • 設定は難しいが、軽量かつ連携性良好

構成設計

  • サーバー名は Star Warsの惑星 由来
  • Primary Public Server(taris)
    • Authelia、headscaleなど中核サービスを限定運用
    • 必要最小限のみ公開し、リスクと障害範囲を縮小
    • Status監視やFoundry VTTのプロキシも担当
  • Primary Private Server(kuat)
    • TrueNAS 上でNixOS VMとZFSプールを運用
    • データセットは「files(重要データ)」と「media(再取得可能)」で分離
    • メインVM(bespin)が各種サービスを担当、テスト用VM(alderaan)も用意
  • 専用アプライアンス機器
    • Home Assistant OS(tython):スマートホーム用途
    • Matrixサーバー(coruscant):Ansible Playbook活用
    • メール・パスワード管理は ProtonMail/Bitwarden に完全委託(可用性重視)

主な課題と解決策

  • 設定ミスや障害時の ロールバック はZFSスナップショットで対応
  • 家族・友人の 利用負担 はSSOやシンプルなアカウント管理で軽減
  • 一部サービスの公開は利便性とリスクを天秤にかけて判断
  • 依存関係の循環やインフラ障害リスクを設計段階で排除
  • 他人の設定事例や公式ドキュメントを徹底活用し、ノウハウ蓄積

今後の展望とコミュニティへの還元

  • 運用経験から得たナレッジ・設定例・リンク集の公開
  • OSSコミュニティや同じ悩みを持つ人への情報提供・助力
  • 「完璧」より「実用性・持続性」を重視した自己ホスティング文化の推進

Hackerたちの意見

みんな、こんにちは!「正しい」セットアップを見つけるのって、結構大変だよね。目標や技術の好みもそれぞれだし。私がやっと満足できるセットアップを作った過程をブログに書いたから、シェアしたいと思ったんだ。目標や要件、技術の選択、レイアウト、解決した具体的な問題についても触れてるよ。私の到達点がみんなと同じとは限らないけど、参考になればいいな。みんなが自由にシェアしてくれたコンテンツやソフトウェアには本当に助けられたから、私もそれを続けて他の人を助けられたらいいなと思ってる。

Nixをホームラボで使ってみてどう?毎回試すたびに混乱しちゃうんだけど、次こそはうまくいくかな。聞いた理由は、私は「ハードコア」なホームラボをやってるから。25Uのラックがあって、小さなKubernetesクラスターとTalos Linux経由でCephを運用してるんだ。いろんな理由から、約7年間k8sを使ってきたけど、そろそろ変えたい、統合したい、シンプルにしたいと思ってる。要件を考えると、結局あなたと同じところに行き着いちゃうんだよね:NixとZFS。そういうサービスや問題にはすごく詳しいから、何か質問があれば気軽に聞いてね。

どこかでCoolifyを見かけたり、使おうと思ったことある?私はもう1年以上使ってて、Herokuみたいな使いやすさとGitHubからの自動デプロイが気に入ってるよ。 https://coolify.io/

こんにちは!あなたの作品にすごくワクワクしてます!私もNixOSを使った似たようなプロジェクトに取り組んでいて、あなたの意見が気になります。目標は、ほぼゼロコンフィグのAppleデバイスみたいな小さなボックスを作ることです。誰でもモデムにプラグを差し込んで、ウェブベースのインストールを進めるだけで使えるようにしたいんです。まだまだ初期段階ですが、家ではすでに動かしています。これはハイブリッドルーター(OPNSense/PFSenseみたいな)とアプリサーバー(Nextcloud、Synology、Yunohostなど)を組み合わせたものです。設定はすべて一つのNixモジュールで管理しています。動的DNSやLetsencryptのTLS証明書、各アプリのサブドメインも自動で設定されます。内蔵の広告ブロック機能やHeadscaleも搭載しています。今はSSOに取り組んでいます。あなたの作品も見て、アイデアを盗むかもしれません。プロジェクトは今、自分のクローゼットでホスティング中です:https://homefree.host

暗号化されたZFSを使っていますか?以前、FreeIPAや他のVMをDebianホストでZFSを使って試したことがあります。シンプルさを求めて、暗号化されたライブラリでSeafileをVPS上で運用し、それをZFSの送受信でローカルサーバーにバックアップすることに切り替えました。そのローカルサーバーは毎晩自動で起動して、更新や同期を行った後、再びスリープします。追加の耐障害性を考えて、Linuxデスクトップ(現在はFedora)でZFSに切り替えようと思っています。Steam以外は完全に暗号化して、同じマシンの別のドライブに毎時間同期し、ローカルサーバーにはあまり頻繁に同期しない予定です。データセットはすでに暗号化されているので、外部ドライブやクラウドサービスに同期することもできます。こうする理由の一つは、VPS上のSeafileにフルフォトアーカイブを保存するのが高すぎるからです。

家族や友達が使いやすい > これは、できるだけ多くのサービスで、理想的にはSSOを使って、1人1つのログインを維持することを意味する。 本当にSランクの目標だね。すごく難しいけど、すごく素晴らしい。ずっと前から、Linuxとオープンソースは一種のパラドックスだと言ってるんだ。どこにでも行けるし、あらゆるプロトコルを話す。でもクライアントとして、エンドユーザーとしては、全体の調整、グループウェアの構築、ネットワークの統合はすごく難しいし、定義する必要がある。多くのシステムを連携させたり、ディレクトリインフラを持つことは本当に素晴らしい。何年も前から、いつかFreeIPAやWindows互換のディレクトリサービスを運用するだろうと思ってたけど、もしかしたらOpenID的な世界が形になりつつあるのかも。

そのパラドックスには完全に同意だよ。昨日、FOSSが非技術者にはアクセスできないって問題検証プラットフォームに投稿したばかりなんだ。[1] 技術者と非技術者をつなぐプラットフォームがそれを解決できるか考えてるんだ。個人向けのシステムインテグレーターみたいな感じで。

ありがとう!シンプルなログインとアクセスは確かに一番難しい要件だったけど、それがあるかないかで人が使うかどうかが変わるからね。オープンソースはどこにでもあるって感じには同意するけど、普通のユーザーが何かを手に取るまでの話だよね。あなたが言ってるパラドックスの一部は、各プロジェクトが自分のことに取り組んでいるから素晴らしいけど、同時にすべてを一方向に進める単一の存在がないってことだと思う。でも、それが良いユーザー体験を得られない理由にはならないよ。自己ホスティングの分野だけでも、ここ5年でセットアップや使用の観点からずっと使いやすくなったから。

正直、そんなに難しくないよ。特定のサービスにこだわらず、SSOの互換性をメインの選定基準にすれば、かなり実現可能で難しくないよ。自分のホストシステムを設定したときは経験がほとんどなかったけど、CaddyとAuthentikを使ってすぐに設定できた。代わりに、YunoHostはSSOを使ってすべてをセットアップするのがとても簡単なディストリビューションだよ。

自分のホームネットワークについて考えると、死んだ後に家族に何を残すか、設定が壊れたときにどれだけ迷惑をかけるかを考えちゃうことがある。警察の鑑識チームがそれを理解するのにどれだけかかるかとか。ホームラボって、昔の人たち(言いたくないけど、ほとんどが男性だね)が地下室で詳細なスケールモデルの鉄道を作るのと同じような欲求を満たしてると思う。特に否定的な意味ではなくて、ただ、コントロールできるポケットワールドを持ちたいっていう深い欲求がある人がいるんだと思う。

あなたのセットアップが気になるな。すごく管理が難しいのか、それともわざわざそうしてるの?

これについてはかなり考えたよ。NASとそのDockerサービスは、他の誰かのために起動することはないと思う。オフサイトの暗号化バックアップは、誰かを雇わないと復元できないかも。だから、- cronが毎日変更されたスナップショットを新しいフォルダーにコピーするために、NTFSフォーマットの外付けUSBドライブを持ってる。紙なしや、seafileライブラリのフラットファイルコピーみたいなもの。サイズは小さくて<50GB、複製は安い。もし死んだり、バラバラになったりしたら…そのドライブは別のマシンに接続する必要がある。各種ノートパソコンにも、反復的な変更なしのseafile全ライブラリのコピーがある。同期が切れたら…ノートパソコンを使い続けて。- 友達のところや職場に、同じハードドライブを持った小さなPC/Raspberry Piを置こうと思ってる。- メールドメインは10年間更新されていて、更新が簡単なiCloudでホストされてる。ただ、ストレージがいっぱいになると家族の写真のメールがバウンスするのはあまり良くないから、migaduに戻るかもしれない。

Hacker Newsで議論の続きを見る