Nextcloud を使えば、ファイルを大手クラウドプロバイダーに預けるのではなく、自分で管理するサーバー上で、ファイル同期、カレンダー、連絡先、ドキュメント編集が行えます。ここでは、Docker Compose を使って 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つのパスワードをすべて変更してください。長いランダムな文字列を使います。
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 アプリを有効にしてください。