Ubuntu 24.04とDocker Composeで自分専用の「Google Drive」を自作する:データを100%管理下に

Ubuntu tutorial - IT technology blog
Ubuntu tutorial - IT technology blog

Big Techへの依存によるデータ消失の不安

ある朝目覚めると、10年分の写真が詰まったGoogle Driveのアカウントが「誤って」ポリシー違反でロックされていたと想像してみてください。あるいは、15GBの無料枠を使い切り、毎月数百円から数千円の維持費を払い続けているかもしれません。第三者にデータを委ねることは、コストがかかるだけでなく、プライバシーの完全な制御を失うことにも繋がります。

多くのユーザーがホームラボを構築したり、月額5ドル程度の格安VPSを借りてNextcloudを自前でインストールし始めています。しかし、PHP、Apache、データベースなどのコンポーネントを手動でインストールすると、バージョンの競合という「悪夢」に直面しがちです。コマンドを一つ間違えるだけで、システムは「依存関係の地獄(dependency hell)」に陥り、復旧に丸一日費やすことになりかねません。

なぜDocker Composeが最適な選択なのか?

OSに直接インストール(ベアメタル)する代わりに、私は常に Docker Compose を推奨しています。この方法なら、アプリケーションをホストシステムから分離し、Ubuntuを常に「クリーン」な状態に保つことができます。

私が以前手掛けたプロジェクトでは、Dockerの導入によりメンテナンス時間を90%削減できました。アップグレードが必要な場合も、新しいイメージをプルするだけで、わずか30秒で完了します。システムは以下の3つのコンポーネントで円滑に動作します:

  • Nextcloud Container: 全てのタスクを処理する「脳」の役割。
  • MariaDB Container: ユーザー情報やメタデータを極めて安定して保存する場所。
  • Redis Container: 写真の読み込みやファイル処理を2〜3倍高速化する強力な「アシスタント」。

全ての構成は一つのファイルに集約されます。サーバーを変更したい時は、プロジェクトのディレクトリを新しいマシンにコピーするだけで完了です。

Ubuntu 24.04での詳細な構築手順

ステップ 1: Dockerのインストール

まずはシステムをアップデートして、全てがスムーズに進むようにします:

sudo apt update && sudo apt upgrade -y
sudo apt install curl git -y

Ubuntuのデフォルト版Dockerは古いことが多いため、最高のパフォーマンスを得るためにDocker公式リポジトリからインストールしましょう:

# GPGキーの設定
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# リポジトリの追加
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y

ステップ 2: ワークスペースの作成

管理やバックアップを容易にするため、/opt または home 内にディレクトリを作成することをお勧めします。

mkdir ~/nextcloud-docker && cd ~/nextcloud-docker
mkdir data mysql redis

ステップ 3: Docker Composeファイルの設定

docker-compose.yml ファイルを作成します。ここがシステムの「魂」となる場所です:

services:
  db:
    image: mariadb:10.11
    restart: always
    command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
    volumes:
      - ./mysql:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=your_strong_password
      - MYSQL_PASSWORD=your_db_password
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud

  redis:
    image: redis:alpine
    restart: always

  app:
    image: nextcloud:latest
    restart: always
    ports:
      - 8080:80
    depends_on:
      - db
      - redis
    volumes:
      - ./data:/var/www/html
    environment:
      - MYSQL_PASSWORD=your_db_password
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
      - MYSQL_HOST=db
      - REDIS_HOST=redis

ヒント: your_db_password を推測されにくい強力な文字列に変更して、セキュリティを高めましょう。

ステップ 4: 「クラウド」の起動

Dockerが自動的に全てをダウンロードしてセットアップするためのコマンドは一つだけです:

sudo docker compose up -d

約1分後、sudo docker ps コマンドで確認してください。3つのコンテナ全てが「Up」状態であれば成功です。

ステップ 5: Webインターフェースからの設定完了

サーバーのIPアドレスにポート8080でアクセスします(例:http://192.168.1.10:8080)。ウェルカム画面で管理者アカウントを作成してください。Nextcloudは、設定済みの環境変数を使用して自動的にMariaDBに接続します。

パフォーマンスの最適化:Redisを忘れずに

Redisがないと、数千枚の写真をスクロールする際にNextcloudの動作が重くなります. Google Driveのようにサクサク動かすために、設定ファイルを編集しましょう:

sudo nano ~/nextcloud-docker/data/config/config.php

最後の閉じ括弧の前に、以下のコードを追加します:

  'memcache.local' => '\OC\Memcache\APCu',
  'memcache.distributed' => '\OC\Memcache\Redis',
  'memcache.locking' => '\OC\Memcache\Redis',
  'redis' => [
    'host' => 'redis',
    'port' => 6379,
  ],

最後に、変更を適用するために再起動します:sudo docker compose restart app

おわりに

正しい手順を踏めば、自分専用のストレージサーバーを持つことは決して難しくありません。Ubuntu 24.04とDocker Composeを使えば、強力で安全、かつ維持費も(電気代やVPS代を除けば)実質無料のシステムが手に入ります。

外部から安全にアクセスするために、Cloudflare TunnelやNginx Proxy Managerを使ったHTTPS化についても調べてみることをお勧めします。成功を祈っています!

Share: