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

私のホームラボのセットアップ

概要

  • Fujifilm RAWファイル のバックアップとストレージ問題の解決策を模索
  • TrueNAS を中心とした自宅サーバー(homelab)環境の構築
  • 主要な 自宅ホスティングアプリ の紹介と活用法
  • Tailscale による安全なリモートアクセスの実現
  • 今後の課題として カスタムドメイン の導入を検討

Fujifilm RAWファイルのバックアップとストレージ戦略

  • 長年、 Fujifilm RAWファイル のバックアップ方法に悩み続けた経験
  • 以前は 2台の外付けSSD に手動で写真をコピーしていた手間
  • オフサイトバックアップの不在によるリスク
  • AIデータセンター需要 によるHDD価格高騰のニュースを受け、早急な対策を決断
  • 新たに Western Digital 8TB HDD を購入し、既存のゲーミングPCを活用したhomelab環境を構築

ハードウェア構成

  • 2018年に自作した ゲーミングPC を再利用
    • CPU: AMD Ryzen 5 2600X 3.6GHz 6コア
    • マザーボード: ASRock B450 Pro4 ATX AM4
    • RAM: G.Skill Flare X 16GB (8GB×2) DDR4-3200
    • GPU: EVGA FTW2 GAMING iCX GeForce GTX 1070 Ti 8GB
    • ケース: Fractal Design Meshify C ATX
    • 電源: SeaSonic PRIME Gold 650W 80+ Gold
    • HDD: Western Digital Red Plus 8TB×2台(RAID 1構成)
    • SSD: Samsung 850 Evo 500GB
    • NVMe: Western Digital Blue SN550 500GB

TrueNASの導入と運用

  • TrueNAS Community Edition をNVMeドライブにインストール
  • LinuxベースOS でネットワーク経由のファイル共有(NAS)に最適化
  • スナップショット機能 によるデータ損失防止
    • 毎時・毎日・毎週 のスナップショット自動取得
    • 一定期間経過後の 古いスナップショット自動削除 による容量管理
  • RAID 1 による冗長化でHDD1台故障時もデータ保全
  • SSD は高速な読み書きが必要な自宅ホストサービス用に活用

自宅ホスティング中のアプリ

  • TrueNAS はファイルストレージだけでなく、アプリの自宅ホスティングも可能

  • コミュニティ提供の アプリカタログ からインストール

    • Scrutiny

      • ストレージドライブの健康状態を監視するWebダッシュボード
      • S.M.A.R.T.情報 (温度・稼働時間・エラー数など)を可視化し、故障予兆を把握
    • Backrest

      • コマンドラインバックアップツール restic のWebフロントエンド
      • Backblaze B2 のオブジェクトストレージに毎日自動バックアップ
    • Immich

      • オープンソースの写真・動画管理アプリ
      • iOS/Androidアプリ も提供、スマホ写真の自動バックアップを実現
      • Google PhotosやiCloud からの脱却を目指すユーザーに最適
    • Mealie

      • レシピ管理ツール、Webサイトからのレシピ自動取得・保存機能
      • NYT Cooking などからURL入力で材料・手順を自動取得し、レシピライブラリ化
    • Ollama

      • 各種AIモデルをローカルで実行できるバックエンド
      • qwen3.5:4b、gemma3:4b など8GB VRAMで動作可能なモデルを検証
      • ベクトル埋め込み( qwen3-embedding:4b 等)も試用
      • ノートPCでなくhomelabでAIモデルを動かすメリットを実感

リモートアクセスの仕組み

  • Tailscale による簡単・安全なVPN接続
    • WireGuard ベースの安全なトンネルで、宅内ネットワークへのリモートアクセスを実現
    • ホストPCをインターネットに直接公開する必要がないセキュリティメリット
    • 利用端末ごとに Tailscaleアプリ をインストールし、認証済みデバイスのみがアクセス可能

今後の課題と展望

  • 現状、各アプリへのアクセスには IPアドレス+ポート番号 の入力が必要
  • すべてのサービスが同一IPを共有するため、 パスワード管理ツール でのログイン識別が困難
  • 今後は カスタムドメイン名 の割り当てを検討し、利便性向上を目指す方針

Hackerたちの意見

「すべてのサービスが同じIPアドレスを共有しているから、パスワードマネージャーがどのログインを使うべきか区別するのが難しいんだ。Bitwardenではマッチングアルゴリズムを設定できて、デフォルトから「始まり」で切り替えるのが、間違ったエントリーとマッチしてる時の対処法なんだ。だから、この場合はサービスのURLにポート番号が含まれていることを確認して、マッチしている項目をすべて「始まり」に切り替えてね。ただ、「始まり」に切り替えると大きな「これをやりたかったわけじゃないかも」って警告が出るのがちょっと怖い。これをオフにできたらいいのに。」

1Passwordでこれがいつもイライラするんだ。前はサブドメインを追加してたけど、今はほとんどすべてをTailscaleの背後でホストしてるから、ポートだけでの区別がさらに悪化してる。

なんで各サービスが異なるサブドメインを持たないんだろうね。

いいね!そんなこと知らなかった。次回試してみるよ。

AdGuard-Homeを設定して、広告をブロックしたり内部DNSやスプリットDNSを使ったり、Caddyや他のリバースプロキシを使って、ドメイン名を買う(またはリサイクル/再利用)と、LetsEncryptを通じてSSL証明書が取得できるよ。そのドメインに実際のDNSレコードは必要ないから、ドメインを所有してればLetsEncryptが確認してSSL証明書を発行してくれる。AdGuardでローカルDNSのリライトを設定して、すべてのサービスやサブドメインを自宅サーバーのIPに向ける。サーバー上のCaddy(または同様のもの)が正しいポートやコンテナに向ける。TailScaleや似たようなものを使えば、すべてのTailScaleクライアントがAdGuardをDNSとして使うように設定できるから、これで自宅の外でも動くよ。例えば、こんな感じで:https://portainer.myhome.top https://jellyfin.myhome.top ...とか。

Cloudflareトンネルも使えるよ。その場合は、1. 1passwordが毎回違うエントリーを取得できる 2. 無料でHTTPSが手に入る 3. Tailscaleなしでリモートアクセスができる 4. トンネルの前にCloudflare Accessを置けば、GoogleやGithubを使った適切な認証ができる。

「俺のサービスは全部同じIPアドレスを共有してる」DNS。SNI。マジで?

ホスト名を付けるだけの方が簡単だよ。ホームラボのスペースでは、dnsmasqでワイルドカードDNSを簡単に作れるし、ルーターも「所有」してるならね。そうでなければ、hostsファイルでも十分だよ。同じ理由でmdnsを使う選択肢もあるけど、もう少し設定が必要。

面白いトリックは、(公開)サブドメインをtailscaleのIPに向けることだね。

それとも、すべてに同じパスワードを使っちゃうとか。 ;)

著者はResticとBackblaze B2ストレージを使ってるんだね。最近、俺も自宅のバックアップを設定してて、ResticとBorgBaseにしたよ。[0] これには特に関係ないけど、シンプルな価格モデルでいいサービスだと思う。彼らは素晴らしいPikapodsの会社でもあるから、ホームラボの人たちには興味深いかも。[0] https://www.borgbase.com [1] https://www.pikapods.com

私もNASでbackrest/restic使ってるけど、HetznerのStorageBoxにしたよ。1TBでちょっと安いし、月5ドル(VAT込み)で、月ごとに請求される感じ。

Hacker Newsで議論の続きを見る