ハクソク

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

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

概要

  • 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込み)で、月ごとに請求される感じ。
俺も似たような感じで、同じケースに入れてるよ。日常のワークステーションとしても使ってるから、スペックはちょっといい感じ。* letsencryptのワイルドカードを使ったnginxで、サブドメインがたくさんある * tailscaleは使ってなくて、家族の数軒の間で純粋なwireguardだけ * 映画やテレビ用にJellyfinを使ってて、TizenのjellyfinアプリでSamsung TVに配信してる * Mopidyで音楽コレクションを管理してて、家のスピーカーやホームステレオにsnapcast経由で配信してる(クライアントはraspberry pi 3) * OSはubuntuで、NAS用にZFSミラーリングして、sambaとNFSで配信中 * ZigbeeとZ-waveのドングルを使ったホームオートメーション用のHome Assistant * セキュリティカメラから録画するNVRとしてFrigateを使ってて、ローカルで物体検出してHome Assistant経由でアラートを送信 * 自分のリポジトリホスト用にForgejo * SDRに接続したtar1090で地元の飛行機追跡(アンテナは屋根裏) これらは、メインのopenwrtルーターとダムAPの2台といい感じに連携してる。ハードワイヤートランクラインで接続して、いくつかのVLANを使ってる。家の中には、iotawattの全館エネルギーモニター、ホリデーライトストリップを動かすESPがいくつか、レーザー微粒子センサーとCO2モニターを搭載した室内外の自作気象ステーション(通常のセンサーも一緒に)、水道のメインカットオフ(zwave)、スマートバルブ、ドアセンサー、モーションセンサー、サイレンやドアベル、火災警報器を聞いてアラートを送るデバイスもあるよ。あ、そういえば、妻が買ったpuraの香り拡散器をフラッシュして、クラウドと通信できないようにしたけど、まだ自動化できるんだ。これが大好きで、いじるのが楽しい。
一台のマシンでそれが全部動くなんてすごいね。スペック教えてくれる?
サムスンのテレビから音を流すのにsnapcastを使ってみたことある?俺は試してみたけど、遅延がひどくてA/Vのズレが許容できなかったんだ。君はうまくいった?
これを考えてる人には、こういうやり方はあまり良くないよ。もし家族がこれらのサービスに依存してるなら、ワークステーションを再起動するたびに全部殺さなきゃいけないから。デスクトップとサーバーをこうやって混ぜるのは本当に良くないよ。(経験から言うと、自己ホストのために別のボックスを用意する必要があるんだ)
正直、まだ元のFreeBSDベースのTrueNASを使ってるし、変わったのがちょっと残念。新しいLinuxベースのバージョンが明らかに優れている例を見るのは面白いね。今は「セルフホスティング」と「ホームラボ」の間で、かなり「セルフホスティング」寄りになってきて、役割をまた分けるようになった。俺のNASはただのNASで、仮想化は別のハードウェアでproxmoxを使って、ストレージはiSCSI経由でNASにバックアップしてる。OPNsense用に別のボックスもある。最初に比較した時は、新しいTrueNASは遅かったけど(今は同じかそれ以上になってるのかな?)、古い方にあった特定の機能が欠けてたけど、SynologyやDockerスタイルの「アプリ」を使うのがずっと簡単だった。俺はNASにはNAS以外の役割を持たせたくなかったから、興味はなかったけど、始める人や小規模ビジネスにはずっとフレンドリーだと思う。よりオープンでサポートされた「オープンSynology」みたいな感じだね(xpenologyプロジェクトとは違って)。ここではうまくいってるみたいで、嬉しいよ。もしかしたら、バグが本当に彼らを襲うかもしれないけど、今はすごく優れたハードウェアが手頃な価格で手に入るから、新しい人が中央集権的なプロバイダーから物を持ち出す実験をするのを見るのは素晴らしい。編集:これが自分を育てる幸せなことの一つだと思う。インフラを発展させると、新しいことをするための限界コストが下がる。例えば、安いマネージドスイッチと自分のルーターがあれば、著者が説明しているようなことをすると、すべてのサービスにIPやDNSを与えたり、リバースプロキシを使ったり、異なるものをそれぞれのVLANに置いたりして、ネットワークの隔離を「無料」で始められる。新しいことに挑戦するハードルが下がるから、始め方に間違いはないと思う。すべてが役に立つし、以前の運用経験や古いシステム管理の経験がなくても、途中で解決する様々な問題が新しい問題を解決するための知識やスキルを育てると思う。
>「役割をまた分けるようになった」 修正や更新、変更を試みるときに起こる混乱が、これが一番好きな理由だね。家庭生活は一般的に、夕方や週末は「リラックス」モードだから、インターネットや映画がないのはあまり好まれない。AppleがサーバーやLinuxにもう少しサポートしてくれたらいいのに、miniは本当に素晴らしいボックスなんだ。電力を節約するために使ってる。最近確認したら、過去30日間の平均は4.7Wだった。UTMでUbuntuサーバーを動かしてるけど、これが電力使用量を増やすんだよね。ただ、Dockerデスクトップがないのは利点だ。
BSDに留まる理由は特になかったよ、特にNASからホームサーバーへの進化を考えると。実際、こういったデバイスの名前をHSSS(Home Service Storage Server)に変えるべきだね。
その変更は後悔してる。Linuxに移行した後の大きなダウングレードだね。 - https://vermaden.wordpress.com/2024/04/20/truenas-core-versu...
自宅でセルフホスティングを試しているときに気づいたことの一つは、NASには特別な魔法があるわけじゃないってこと。特別なNASソフトウェアは必要ないし、特別なファイルシステムやコンテナ、VM、マネージャーやウェブUIも必要ない。ほとんどの人にはLinuxとNFS、またはLinuxとSMBがあれば十分なんだ。それだけでいい。レイヤーが多いほど、失敗する可能性も増えるしね。公式のPi-holeソフトウェアも本当に必要ない。dnsmasqのラッパーに過ぎないから、実際にはdnsmasqだけで大丈夫。アプリケーションを最も基本的なニーズに絞る習慣があれば、もっと多くのことを自宅で安定して運用できるようになるよ。
あなたと似たような感じだよ。俺もFreeBSD TrueNASを使ってるけど、ただのNASだね。たまにVMを動かすこともあるけど、ハードは余裕があるからね。他のことはxcp-ngボックスでやってる。ちょっとホームラボっぽい感じで、無駄にKubernetesクラスターも動かしてるけど、学習目的だよ。ストレージはストレージであってほしいな。セキュリティ的にもそれが一番理にかなってる。俺のネットワーク上のものはNFS経由でしかストレージにアクセスできないから、もしネットワークにマルウェアが入ってデータが壊れたとしても(ランサムウェアみたいに)、毎時作ってるZFSのスナップショットには手が届かないんだ。TrueNASはよく設計されてるし、Dockerとかも使ってるけど、やっぱりちょっと不安だな。NASを交換する時が来たらLinuxに移行することになるだろうけど、それでも俺にとってはただのNASだよ。
確かにその通り!最初に始めたときは、いろんなセットアップ方法を探るのにかなり深く入り込んじゃった。結局、手元にあったハードウェアでシンプルに始めることにしたよ。将来的には専用のNASマシンと計算用のサーバーを持ちたいと思ってる。RAMの価格が元に戻ったら、もっと調べてみようかな。
同じことをする前に考慮すべきことがあるよ。ホームラボ用のコンピュータは消費電力がかなり低いからね。記事にあるセットアップは年間平均600kWhだけど、私のホームラボのHP EliteDeskは年間100kWhだよ。GPUはないけど、用途を考えたらノートパソコンでも十分かもね。
自分の古いゲーミングデスクトップ(OPと同じ)を解体して、2014年のMacbook Proを使おうかなって考えてる。まさにその理由で。
デスクトップを再利用する理由の一つは、フルATXマザーボードにSATAポートが付いてるからだよ!HDDを使ったDIY NASを作るなら、ちゃんとしたSATAポートが必要だし、ラップトップやマイクロPCに接続できるようなPCIカードも必要だよね。確かに、サンダーボルトを使って外部PCIシャーシを接続することもできるけど、その時点でNASを買った方がいいか、ATXマザーボードのフルタワーケースを使った方がいいよね!古いゲーミングPCを使うのは、TrueNASやOMVにはすごく良い選択肢だと思う。僕は古い10世代のIntelゲーミングPCを使っていて、Core i9のCPUを売って、eBayで見つけたi7-10700Tに交換したんだ。このセットアップは、過去に使った様々なリース落ちのDellマイクロPCよりも自分のニーズに合ってると感じてる。主にSATAポートの信頼性のおかげだね。外部のSamsung T5 SSDは、TrueNASでUSB経由でもすごく信頼性が高いと思う。でも、HDDはNAS用にUSBで使うのは本当に厄介だった。やっとスピニングラストから解放される年になるかと思ったけど、AIデータセンターは別の考えがあったみたい!:-) ただ、仮想化されたLinuxサーバーや似たようなものを動かしたいだけなら、リース落ちのマイクロPCは素晴らしいお得な選択肢だし、ProxmoxやTrueNASを設定して学ぶのも楽しいよ。
ここでみんなバックアップストレージの話をしてるけど、ほとんどが企業のクラウドプロバイダーについてだね。友達の家でオフプレミスのストレージを使ってる人がいるのか気になるな。つまり、ハードウェアは安いし、ソフトウェアはオープンだし、プライバシーはなかなか手に入らない。だから、クラウドプロバイダーを使わずに友達のところに複製システムを置いて、もちろんお返しもするつもり。これでプライバシーが増えて、かなりの冗長性も得られるよ。WireGuard(あとTailscaleもかな)のおかげで、つながりを保ちながらプライベートにするのが簡単になった。ソーシャルな関係に頼るのはテック界ではあまり流行ってないけど、他に考えてる人いる?やったことある人いる?ここではあまり話題にされてない気がする。
> ハードウェアは安い ハードウェアは1年前は安かったね。安いRAMやHDDで自分のボックスを作った人は素晴らしい。そういう機会がまた来るまで、しばらく時間がかかるだろうね。
私のオフプレミスバックアップは、親の家にあるTailscale接続のNASにあるよ。友達にもTailscaleを設定してもらって、彼の家でもオフプレミスバックアップを増やそうとしてるところ。写真ライブラリ管理のためにiCloudからImmichに移行中なんだ。写真や動画を失いたくないから、オフプレミスバックアップが必要なんだ。Tailscaleはこの用途にとって本当に助かってる。
「大きなクラウド」に依存せずに3-2-1バックアップを取ってるよ。 - 自分のMac - 自分のNAS(RAID1)でSyncthing使用 - rsync.netへの増分borgバックアップ(地理的冗長プラン)をcronジョブで。
私もそんな感じのことやってる!NYにいるけど、父はLAにいるんだ。rpi5と5xSATAハットを組み合わせて、10TBのWDレッドドライブを3つ使ってzraid1を構築したよ(ホリデー中に値上がりする前に手に入れたから、1台160ドルだった!)。ケースは3Dプリントして、TailscaleとZFSスナップショットレプリケーション用のdiskless alpineイメージを動かしてる。父の家の隅に置いておいて、触らないように言っておいたよ(笑)。全体で約500ドルかかった。前はGoogle Workspaceに月35ドル払って5TBのドライブスペースを使ってた。過去には月15ドルで「無制限」のスペースもあったんだ。これで数年以内に元が取れると思う。実際、10TBプールの初期レプリケーションが終わったばかりなんだ。zreplがソースプールの初期スナップショットを同期が終わった直後に消してしまうという厄介な状況に遭遇して、新しい偽の「マッチング」スナップショットをパッチしなきゃならなかった。ここにClaudeに投稿を書いてもらったんだけど、完全にAI生成の「ブログ投稿」だから許してね。かなりいい解決策が出てきたよ。 https://gist.github.com/evanpurkhiser/7663b7cabf82e6483d2d29...
そうだね、絶対に。俺は2つのサイトを行き来してるし、兄弟の家でもいくつか機器を動かしてるから、3つのサイトをうまく管理できてる。ECC + RAID1 + borgで各サイトにアーカイブ機能を追加してる。Syncthingには「信頼できないピア」機能があって、俺は一度だけ、うっかり使ったことがあるけど、友達にプライバシーを保ちながらディスクを提供するのに優れた方法だと思う。
タウンのいろんな家でWireGuardを使ってKubernetesクラスター(Talos Linux)を構築し始めたよ。各「ゾーン」にZFSボックスを使って永続ボリューム(democratic-csi)を配置して、クロスサイトのスナップショットレプリケーションを行ってる。ISPの後ろにはGateway(Traefik)を設置してるんだ。CrunchyPGOを使えば、リーダーとフォロワーを簡単に分けられるストレージクラスが作れるよ。
クラスタにホストが増えてくると、住宅用WANでk8sをやるのは問題が出てきたよ(ただし、ホスト同士はアメリカの反対側にいたけどね)。
NAS OSを使って非NASサービスをホスティングするのが理解できないんだ。逆転してる感じがする。俺はNASサービスを動かす一般的なサーバーOSの方がいいな。同じことがProxmoxにも言える。
ProxmoxはDebianにqemuとlxcのWeb UIがついてるだけだよ。何でもできる。
同意だね。「ホムラボ」の意味がよくわからない。多くの人とは違って、僕はDebianみたいな普通のディストリビューションを使ったシンプルなセットアップが好きなんだ。多くのサービスをベアメタルで動かしていて、nginxやメールスタック、DNSサーバー、ゲームサーバーなんかも含まれてる。アプライアンスとして扱うものには仮想化やコンテナを使ってるよ。Home Assistant、Nextcloud、Matrix、Jellyfinなんかがその例だね。
ホムラボのセットアップのほとんどは負荷があまりないから、実際には利用可能なRAMと消費電力の問題だね。こういうセットアップをしている人は、たぶんアイドル時の消費が約5-10Wの4コアの低消費電力マシンがあれば十分だと思うよ。
AI/LLMアシスタントのおかげで、ホムラボをセットアップして運用するハードルがすごく低くなったよ。過去6ヶ月で、Claudeに手伝ってもらって、今は5台のRaspberry Piを完全に再構成したんだ。3台はDockerを動かしていて、家庭用や本番テスト、別の管理レイヤー(以前は面倒で放置してたバックアップも含めて)に分けて使ってる。ドキュメントも忘れずにね。楽しい時代だよ!