OffshoreVps
チュートリアル2026年10月10日読了時間 9 分執筆:OffshoreVps チーム

Docker Compose で VPS に Nextcloud をセルフホストする

ファイル、カレンダー、連絡先のための自分専用プライベートクラウドを運用:Compose ファイル、HTTPS リバースプロキシ、信頼済みドメイン、cron ジョブ、バックアップ。

Nextcloud を使えば、ファイルを大手クラウドプロバイダーに預けるのではなく、自分で管理するサーバー上で、ファイル同期、カレンダー、連絡先、ドキュメント編集が行えます。ここでは、Docker Compose を使って VPS 上で実行する方法を説明します。

Nextcloud をセルフホストするために使うコマンドを、「mkdir -p ~/nextcloud && cd ~/nextcloud」から始めて表示している VPS のターミナルウィンドウ
このガイドでサーバー上で実行するコマンドの例。

始める前に

  • 2 vCPU と 4 GB RAM の VPS なら、無理のない出発点になります。主な制約はストレージなので、ファイルに見合ったディスクサイズを選んでください。
  • サーバーを指すドメイン。DNS ガイドで説明しています。
  • インストール済みの Docker。Ubuntu に Docker をインストールするをご覧ください。

1. Compose ファイル

mkdir -p ~/nextcloud && cd ~/nextcloud
cat > compose.yaml <<'EOF'
services:
  db:
    image: mariadb:11
    restart: unless-stopped
    command: --transaction-isolation=READ-COMMITTED --log-bin=binlog --binlog-format=ROW
    environment:
      MYSQL_ROOT_PASSWORD: change-me-root
      MYSQL_PASSWORD: change-me-db
      MYSQL_DATABASE: nextcloud
      MYSQL_USER: nextcloud
    volumes:
      - db:/var/lib/mysql
  redis:
    image: redis:7-alpine
    restart: unless-stopped
  app:
    image: nextcloud:stable
    restart: unless-stopped
    depends_on: [db, redis]
    ports:
      - "127.0.0.1:8080:80"
    environment:
      MYSQL_HOST: db
      MYSQL_DATABASE: nextcloud
      MYSQL_USER: nextcloud
      MYSQL_PASSWORD: change-me-db
      REDIS_HOST: redis
    volumes:
      - nc:/var/www/html
volumes:
  db:
  nc:
EOF
docker compose up -d

実行する前に、3つのパスワードをすべて変更してください。長いランダムな文字列を使います。

このガイドの手順(順番どおり):1. 始める前に;2. 1. Compose ファイル;3. 2. 前段に HTTPS を置く;4. 3. セットアップを完了する;5. 4. 健全な状態を保つ
このガイドの手順(順番どおり)。

2. 前段に HTTPS を置く

127.0.0.1:8080 にプロキシする Nginx の server ブロックを追加し、Nginx ガイドのとおり Certbot を実行します。Nextcloud が正しいプロトコルを認識し、大きなアップロードも動作するよう、プロキシブロックには次の行が必要です。

client_max_body_size 2G;
location / {
    proxy_pass http://127.0.0.1:8080;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Real-IP $remote_addr;
}

3. セットアップを完了する

ドメインを開いて管理者アカウントを作成します。その後、ドメインを信頼済みリストに追加し、プロキシの設定を行います。

docker compose exec -u www-data app php occ config:system:set trusted_domains 1 --value=cloud.example.com
docker compose exec -u www-data app php occ config:system:set overwriteprotocol --value=https

4. 健全な状態を保つ

  • アップデート: docker compose pull && docker compose up -d。メジャーバージョンは1つずつ上げてください。
  • バックグラウンドジョブ: 管理設定で Cron に切り替え、cron.php を5分ごとに実行するホストの cron エントリーを追加します。
  • バックアップ: 両方のボリュームとデータベースのダンプを保存します。VPS のバックアップ方法をご覧ください。
  • 2要素ログイン: すべてのアカウントで TOTP アプリを有効にしてください。