What it does
できること
用途ごとに環境を分離
Proxmox VEを土台に、ファイルサーバー、ゲームサーバー、検証環境を別々の仮想マシンまたはコンテナとして管理します。ひとつの障害や更新が全サービスへ波及しにくい構成です。
- 用途ごとのCPU・メモリ割り当て
- スナップショットで変更前へ戻しやすい
- 管理画面から稼働状況を一覧確認
Nextcloudでファイル共有
PCやスマートフォンから同じファイルへアクセスできる個人クラウドを構築しました。Nginxは入口として通信を適切なサービスへ渡し、アプリ本体と役割を分けています。
- データ領域とアプリ領域を分離
- HTTPSを前提にした入口設計
- 容量、更新、バックアップを運用項目にする
Tailscaleで外出先から接続
賃貸回線でグローバルIPやポート開放を自由に使えない条件に対し、TailscaleのメッシュVPNを採用しました。公開インターネットへ管理画面を直接さらさず、許可した端末同士で接続します。
- 端末ごとの認証と失効
- IP公開ではなくプライベートな接続
- 接続元・DNS・アクセス制御を記録
Why I made it
きっかけと課題
複数のPC間でファイルを移す手間を減らしたいこと、クラウドサービスの仕組みを利用者側ではなく運用者側から理解したいことが出発点でした。
単に一度動かすことではなく、更新、障害、容量不足が起きても原因を切り分けられる構成を目標にしました。そのため、サービスをひとつのOSへ直接詰め込まず、仮想化して責任範囲を分けました。
Process
進め方・実装手順
- 01
要件と脅威を整理
使う人、接続する場所、保存容量、停止してよい時間、外部公開の必要性を整理し、管理画面は公開しない方針にしました。
OUTPUT — 構成図とアクセス方針 - 02
Proxmox VEを導入
インストール用メディアから専用PCへ導入し、管理用アドレスを固定します。BIOSの仮想化支援とストレージ状態も確認します。
OUTPUT — 仮想化ホスト - 03
サービスを分割
Nextcloud、Nginx、ゲーム用途を役割別に作成し、必要最小限のリソースとネットワークだけを割り当てます。
OUTPUT — サービス別VM・コンテナ - 04
遠隔接続を追加
Tailscaleへホストと利用端末を参加させ、同一ネットワーク外から疎通、名前解決、アクセス権を順に確認します。
OUTPUT — プライベート接続経路 - 05
復旧手順を試す
設定変更前のスナップショット、別媒体へのデータバックアップ、復元確認を分けて実施します。
OUTPUT — バックアップと復旧メモ
Problems & decisions
苦労したこと
01外から接続できない+
宅内では動作しても、賃貸回線の制約により外部から同じアドレスへ接続できませんでした。
ポート開放を前提にせずTailscaleを導入し、経路、ファイアウォール、名前解決を一段ずつ確認しました。
許可した端末だけが参加するプライベートな経路で、外出先から利用できるようにしました。
02どこで失敗しているか分からない+
ブラウザ、Nginx、アプリ、ストレージが連なるため、エラー画面だけでは原因を判断できませんでした。
外側から順に疎通、ポート、プロキシ、アプリ、保存先を確認し、各層のログと時刻を対応させました。
再起動を繰り返すのではなく、層ごとに切り分ける手順が定着しました。
03スナップショットをバックアップと思ってしまう+
同じストレージ上のスナップショットだけでは、ディスク故障時に同時に失われます。
設定を戻すスナップショットと、別媒体へ退避するバックアップを別物として運用しました。
復元まで試して初めてバックアップが完成するという理解につながりました。
Reproduction guide
再現するための手順
未来の自分や、同じものを作りたい人が迷わないように、最短の再現手順を残します。
1. 先に構成図を書く
インターネット、ルーター、Proxmox、各サービス、利用端末の関係と、どこを公開するかを書きます。管理画面の公開は避けます。
2. 小さなサービスから作る
最初は一つの検証用環境を作り、宅内接続、再起動、バックアップを確認します。問題がない状態を基準として残します。
3. Tailscaleを両端へ導入
サーバー側とクライアント側を同じtailnetへ参加させ、IP、端末名、アクセス制御を確認します。TailscaleはグローバルIPを作るものではなく、端末間の安全な経路を作るものとして扱います。
4. 更新と復元を予定に入れる
OSとアプリの更新前にバックアップし、失敗したときの戻し方、管理者アカウント、容量警告を運用メモへ残します。
Reflection
振り返り
WHAT I LEARNED
- 構築よりも、更新・監視・復元を含む運用設計に時間がかかる
- ネットワーク問題は層を分けて確認すると原因を絞れる
- 便利さと公開範囲を同時に設計し、管理画面を安易に外へ出さない