
自宅サーバー構築記録①──環境と全体構成
老朽化した自作PCをUbuntu 24.04の自宅サーバーとして再活用した記録です。ハードウェア・ネットワーク・稼働サービスの全体構成を紹介します。
はじめに
これまで、こんな構成でファイル共有とVPNを運用していました。
Dropbox(有料サブスクリプション) ── ObsidianのVault同期、ファイルの共有
さくらVPS ── VPNサーバーとして契約・運用
悪い構成ではなかったのですが、使い続けるうちに気になり始めたことがありました。月額のサブスクコストが積み重なること、そしてデータとインフラを外部サービスに依存していること。
「自前で運用できないか」——そう考え始めたのが、今回の自宅サーバー構築のきっかけです。
自宅サーバーに移行することで、DropboxとさくらVPS、両方の月額を解約できる。費用の削減と、データを自分の手元に置くこと。この2つが決め手でした。
24時間稼働への不安は杞憂だった
踏み切れずにいた最大の理由は「自宅PCを24時間つけっぱなしにすることへの抵抗感」でした。電気代が膨らむのではないか、騒音が気になるのではないか——漠然とした不安がありました。
実際に運用してみると、これらは思っていたほど問題ではありませんでした。古いデスクトップPCでも静音性は許容範囲で、電気代も実測 49.1W(Sanwa Supply ワットモニター計測)、月換算で 約950円ほどの増加にとどまっています。
「やってみたら案外大丈夫だった」という経験を、この記事に残しておきたかった理由のひとつです。
この記事は、老朽化した自作PCをUbuntu 24.04の自宅サーバーとして再活用した記録です。同じように「外部サービスを自前に置き換えたい」と考えている方の参考になれば幸いです。
シリーズ構成はこのようになっています。
①この記事 ── 環境・ハードウェア・全体構成
② ── WireGuard VPN構築(v6プラス・二重NAT環境)
③ ── OpenCloud導入(Docker + Nginx + Cloudflare Tunnel)
④ ── Home Assistant導入(SwitchBot連携・外部公開)
構築の進め方
作業を始めるにあたって、ツールの組み合わせをひと工夫しました。
Obsidian ── メモと作業記録の拠点
構築中に発生した設定値・コマンド・エラーと対処法を、すべてObsidianのノートに書き溜めました。このシリーズの記事も、そのメモをベースに整理したものです。
Obsidian Agent Client(Claude Code)── わからないことをその場で相談
ObsidianにClaude Codeのクライアントを入れ、メモを取りながら、わからないことをClaudeに相談しながら進められるようにしました。エラーログをそのまま貼り付けて原因を確認し、設定が合っているか確認し、メモをまとめてもらう。コンテキストを切り替えずに済むので、作業の流れが途切れません。
Obsidianのターミナル ── SSH接続をObsidian内で完結
ObsidianのTerminalプラグインを使うと、ノートの横にターミナルを表示できます。サーバーへのSSH接続を開いたまま、ノートを参照しながらコマンドを打つ——ウィンドウを切り替える手間がなくなりました。
Vivaldi ── Claudeへのスクリーンショット共有
ブラウザにはVivaldiを使っています。Vivaldiのページキャプチャ機能が使いやすく、設定画面やエラー表示をキャプチャしてClaudeに渡す場面で重宝しました。
構築した環境の全体像
構築が完了した状態で、以下のサービスが稼働しています。
OpenCloud(クラウドストレージ) ── https://cloud.your-domain.com(Cloudflare Tunnel)
Home Assistant(スマートホーム) ── https://ha.your-domain.com(Cloudflare Tunnel)
WireGuard VPN ── your-domain.com:13472(ポート転送 / UDP)
DDNS ── your-domain.com → 自動更新(ddclient + Cloudflare)
外部公開には Cloudflare Tunnel と WireGuard VPN を用途に応じて使い分けています。
Cloudflare Tunnel はポート開放不要で、OpenCloudやHome AssistantのWeb UIへのアクセスに使います。HTTPS証明書もCloudflareが自動管理します。ただし100MBのアップロード制限があります。
WireGuard VPN は100MBを超える大容量ファイルの転送や、SSH・Sambaなど自宅LAN全体へのアクセスに使います。
ハードウェア構成
使用しているのは手元に余っていた古いデスクトップPCです。新しく購入したものではありません。
CPU: Intel Celeron G1620 @ 2.70GHz(2コア / 2スレッド)
メモリ: 16GB RAM(DDR3)+ Swap 3.5GB
OS: Ubuntu 24.04 LTS
性能は控えめですが、OpenCloud・Home Assistant・WireGuard・DDNSを同時稼働させても CPU 使用率は通常5〜15%程度で、用途には十分です。
ストレージ構成
3本のHDDを役割ごとに分けています。
500GB ── OSドライブ
3TB ── データ用(/media/DATA)
3TB ── バックアップ用(/media/Backup)
データとバックアップを分け、毎日深夜3時にrsyncで自動同期しています。
ネットワーク構成
インターネット(WAN)
│
NTT CTU(192.168.1.1) ← NTT提供の回線終端装置
│
IPoEルーター(192.168.10.1) ← 二重NAT
│
└─ Ubuntu 24.04 : 192.168.10.138 ← サーバー(固定IP)
回線: ドコモ光(戸建て) / IPoE(v6プラス / MAP-E方式)
v6プラス環境の制約と対策
IPoE(v6プラス)はポート80・443・51820が使用不可です。一般的な設定がそのままでは使えません。
HTTP/HTTPS公開(ポート80/443不可): Cloudflare Tunnelでポート開放なしに公開
WireGuard(ポート51820不可): ポート13472/UDPに変更してポート転送
グローバルIPが変動する: DDNS(ddclient + Cloudflare)で自動更新
この制約への対処が、②・③記事のメインテーマになります。
ソフトウェアの変遷
当初はNextcloudのsnapパッケージで始めましたが、パーミッション問題やチューニングの難しさから手動構成へ移行し、最終的にOpenCloud(Nextcloudの後継プロジェクト)のDockerイメージに落ち着きました。
Dockerにしたことで、サービスごとに環境が独立し、docker composeで起動・停止・更新が統一コマンドでできるようになっています。
まとめ
古いPCで十分動く ── Celeronでも複数サービスを同時稼働でき、CPU使用率は通常5〜15%程度
電気代の増加は月約950円 ── 24時間稼働への不安は、実測してみると杞憂だった
外部公開はCloudflare TunnelとWireGuard VPNを使い分ける ── Tunnelはポート開放不要、VPNは大容量転送に
v6プラス環境の制約に注意 ── ポート80・443・51820が使えないため、各サービスで工夫が必要
Dockerで構成を統一 ── サービスごとに環境が独立し、起動・停止・更新がコマンド一発
次の記事
②では、v6プラス・二重NAT環境でWireGuard VPNを構築し、外出先から自宅LANに接続できるようにするまでの手順を紹介します。DDNSの設定や2段階のポート転送など、ハマりやすいポイントも含めて解説します。