Nextcloudのメイン画像

自家製クラウドストレージ (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までを一つの経路として設計する経験を得ました。また、サービスを開始することだけでなく、役割を終えた時点で停止し、現在の状態を正しく記録することも運用の一部だと考えています。