自家製クラウドストレージ (Nextcloud)
セルフホスト / インフラ / Docker / セキュリティ
- 役割
- インフラ設計・構築、サーバー管理
- 使用技術
- Nextcloud, Docker, MariaDB, Cloudflare Tunnel, Nginx
- ステータス
- 運用終了・構築経験として掲載
- 更新日
当時の目的
商用クラウドストレージの容量に制限を感じたことをきっかけに、個人で管理できる保存・共有環境を構築しました。外部から利用できることに加え、データと認証情報を自分で管理できることを要件としていました。
Dockerによるコンテナ構成
運用していた当時は、アプリケーションの管理を容易にするためDocker Composeを用いて環境を構築していました。構成は次のように役割を分けていました。
- アプリケーションサービス (`app`)
Nextcloud本体を公式イメージから起動し、ホスト側のNginxから到達できるポートへ接続していました。
- データベースサービス (`db`)
ユーザー情報やファイルメタデータを保存するMariaDBを、Nextcloud本体とは別のコンテナとして管理していました。
- データ永続化 (`volumes`)
Nextcloud本体とデータベースのデータをそれぞれボリュームへ分離し、コンテナを作り直してもデータが残る構成にしていました。
- サービス間連携 (`environment`)
データベースの接続先や認証情報は環境変数から渡し、Compose内のサービス名を使ってコンテナ間を接続していました。
Cloudflare Tunnelによるセキュアな公開
外部へ直接ポートを公開せずにアクセス経路を作るため、Cloudflare Tunnelを導入していました。
- 仕組み
サーバー側からCloudflareへトンネルを確立し、サーバーの待受ポートをインターネットへ直接公開しない経路を構成しました。
- Nginxリバースプロキシ
Cloudflare TunnelからのアクセスをNginxで受け、Nextcloudコンテナへ転送していました。公開経路とアプリケーションを分離することで、同じサーバー上のサービスを整理しやすくしました。
運用終了と現在
現在Nextcloudは停止しており、この環境をNASや個人向けクラウドストレージとしては利用していません。このページは稼働中サービスの案内ではなく、データ永続化、データベース連携、リバースプロキシ、外部公開経路を自分で構築・運用した経験の記録として残しています。
今後は保存容量を提供するNAS用途に限定せず、必要なサービスを運用するサーバーとして活用していく方針です。
構築を通じて得たこと
アプリケーションだけでなく、データベース、永続化領域、Nginx、Cloudflare Tunnelまでを一つの経路として設計する経験を得ました。また、サービスを開始することだけでなく、役割を終えた時点で停止し、現在の状態を正しく記録することも運用の一部だと考えています。