VPSにNextcloudをインストールする方法

ApexVPSチーム執筆 • 最終更新:2026年7月 • 9分で読めます

このNextcloud VPSセットアップガイドでは、完全に制御できるサーバー上で、ファイル、カレンダー、連絡先、写真など、プライベートクラウドを自分でホストする方法を説明します。VPS上のNextcloudは、専用リソース、完全なルートアクセス、ユーザーごとのサブスクリプション不要を実現し、データは自分のものです。以下に、前提条件、実証済みの2つのインストール方法(Docker Composeまたは手動LAMPスタック)、Let's EncryptでのHTTPS追加、サーバーを高速かつ安全に保つチューニングとバックアップ手順を示します。すべてのコマンドは、新しいUbuntuまたはDebianサーバーを対象としています。

なぜVPS上でNextcloudをセルフホストするのか?

Nextcloudは、Google Drive、Dropbox、および多くの生産性スイートを、あなた自身で実行するソフトウェアに置き換えるオープンソースプラットフォームです。VPSはその自然なホームです。共有ホスティングとは異なり、ルートアクセス、固定の月額費用、予測可能なパフォーマンスが得られます。真に専用のVPSでは、CPUを競うノイジーネイバーがいないため、複数の人が同時にファイルを同期する場合に重要です。どのサービスを自分で実行する価値があるかを検討している場合、セルフホスティング用VPSの選択に関する概要では、一般的なワークロードと、それぞれが必要とするヘッドルームを比較しています。

始める前の前提条件

必要なものは3つです:Ubuntu 22.04/24.04またはDebian 12を搭載したVPS、DNSを編集できるドメイン名、そしてsudoを持つユーザーとしてサーバーへのSSHアクセス。ドメインはテストには厳密には必須ではありませんが、信頼できるTLS証明書を発行するにはドメインが必要なので、実際の使用には必須と見なしてください。

適切なVPSサイズの選択

サイズは、サーバーを使用する人数と、メディアを保存するかどうかによって異なります。単一ユーザーまたは家族がドキュメントを同期する場合、2 vCPUと4 GB RAMで快適です。Photos、Memories、またはメディアアプリを追加したり、アクティブなアカウントが多数になったりしたら、Businessクラスのプラン以上にアップグレードしてください。追加のRAM、高速なNVMe、および時間単位のスナップショットにより、サムネイル生成とプレビューがはるかにスムーズになります。階層はVPS価格ページで比較できます。後でスケールアップするのは簡単なので、控えめに始めて成長するのがよいでしょう。

ドメインをサーバーに向ける

サーバーのパブリックIPにcloud.example.comなどのホスト名を指すAレコード(IPv6を使用する場合はAAAAレコードも)を作成します。DNSの伝播には少し時間がかかることがあります。証明書をリクエストする前に解決されることを確認してください:

dig +short cloud.example.com

パス1 — Docker ComposeでのNextcloud

コンテナは、クリーンで再現可能なインストールを最も速く行う方法であり、Nextcloud、データベース、キャッシュをシステムの他の部分から分離します。コンテナに慣れていない場合は、VPS上のDocker初心者ガイドで基本を確認してください。Dockerを公式の便利スクリプトを使用してインストールし、ユーザーをdockerグループに追加します:

curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER
# log out and back in so the group change takes effect

NextcloudをMariaDBとRedisで実行するプロジェクトフォルダーとcompose.yamlを作成します。アプリは127.0.0.1:8080にバインドされているため、後で追加するリバースプロキシを介してのみ到達可能で、インターネットから直接は到達できません:

mkdir ~/nextcloud && cd ~/nextcloud
nano compose.yaml
services:
  db:
    image: mariadb:10.11
    restart: always
    command: --transaction-isolation=READ-COMMITTED --log-bin=binlog --binlog-format=ROW
    volumes:
      - db:/var/lib/mysql
    environment:
      - MARIADB_ROOT_PASSWORD=change-this-root-password
      - MYSQL_PASSWORD=change-this-db-password
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud

  redis:
    image: redis:alpine
    restart: always

  app:
    image: nextcloud:apache
    restart: always
    ports:
      - "127.0.0.1:8080:80"
    depends_on:
      - db
      - redis
    volumes:
      - nextcloud:/var/www/html
    environment:
      - MYSQL_HOST=db
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
      - MYSQL_PASSWORD=change-this-db-password
      - REDIS_HOST=redis

volumes:
  db:
  nextcloud:

スタックを起動し、3つのコンテナすべてが起動することを確認します:

docker compose up -d
docker compose ps

Nextcloudは現在localhost:8080でリッスンしています。HTTPSで安全に公開するには、TLSセクションに進んでください。

パス2 — LAMPスタックでの手動インストール

コンポーネントを自分で管理したい場合は、従来のLinux、Apache、MariaDB、PHP(LAMP)インストールで完全な制御が可能です。システムを更新し、Webサーバー、データベース、Nextcloudが必要とするPHP拡張機能をインストールします:

sudo apt update && sudo apt upgrade -y
sudo apt install -y apache2 mariadb-server libapache2-mod-php unzip \
  php php-gd php-mysql php-curl php-mbstring php-intl php-xml \
  php-zip php-bcmath php-gmp php-imagick

データベースをロックダウンし、専用のデータベースとユーザーを作成します:

sudo mysql_secure_installation
sudo mysql -u root -p
CREATE DATABASE nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
CREATE USER 'nextcloud'@'localhost' IDENTIFIED BY 'change-this-db-password';
GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextcloud'@'localhost';
FLUSH PRIVILEGES;
EXIT;

最新リリースをウェブルートにダウンロードし、Apacheが書き込めるように所有権を設定します。

cd /var/www
sudo wget https://download.nextcloud.com/server/releases/latest.zip
sudo unzip latest.zip
sudo chown -R www-data:www-data /var/www/nextcloud

ドメイン用のApache仮想ホストを作成し、Nextcloudが必要とするモジュールとともに有効にして、リロードします。

sudo a2enmod rewrite headers env dir mime
sudo a2ensite nextcloud.conf
sudo systemctl reload apache2

TLS(Let's Encrypt)で保護する

Nextcloudを平文HTTPで実行しないでください。ログインとファイルが暗号化されずに送信されます。Let's EncryptプロジェクトのCertbotは、無料で信頼された証明書を発行し、自動更新します。手動Apacheインストールでは、Apacheプラグインを使用します。

sudo apt install -y certbot python3-certbot-apache
sudo certbot --apache -d cloud.example.com

Dockerパスの場合は、Nginxをリバースプロキシとして前面に配置し、127.0.0.1:8080に転送してから、Certbotで保護します。

sudo apt install -y nginx certbot python3-certbot-nginx
sudo certbot --nginx -d cloud.example.com

Certbotは、証明書が期限切れになる前に更新するsystemdタイマーをインストールします。ドライランで更新が機能することを確認できます。

sudo certbot renew --dry-run

初回セットアップ

ブラウザでhttps://cloud.example.comを開きます。セットアップ画面で管理者アカウントを作成し、手動インストールの場合は、以前作成したデータベース名、ユーザー、パスワードを入力します(Dockerイメージはすでにデータベースに接続されているため、この手順はスキップされます)。ウィザードを完了すると、Nextcloudはファイルビューに移動します。警告が表示された場合は、すぐにtrusted_domainsのリストにドメインを追加します。Dockerの場合は、コンテナ内の設定を編集します。

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

手動インストールでは、同じコマンドをsudo -u www-data php /var/www/nextcloud/occ ...を使用してインストールディレクトリから実行します。今後はoccコマンドラインツールが主要な管理エントリポイントになります。

チューニングとバックグラウンドジョブ

デフォルトのインストールでも動作しますが、いくつかの変更で大きな違いが生まれます。バックグラウンドジョブをAJAXからシステムcronに切り替えて、誰もログインしていなくてもタスクが確実に実行されるようにします。手動インストールでは、Webユーザーにcronエントリを追加します。

sudo crontab -u www-data -e
# add this line, then save:
*/5 * * * * php -f /var/www/nextcloud/cron.php

次に、管理→基本設定で「Cron」オプションを設定します。その他の有用な調整:PHP memory_limitを少なくとも512Mに引き上げ、ファイルロックとキャッシュ用にRedisを有効にし(上記のComposeファイルに含まれています)、メンテナンスウィンドウを設定して重いジョブが夜間に実行されるようにします。組み込みチェックを実行すると、不足しているものを見つけるのに役立ちます。

sudo -u www-data php /var/www/nextcloud/occ status
sudo -u www-data php /var/www/nextcloud/occ setupchecks

実際に復元できるバックアップ

VPSスナップショットは最初の防御線です。Starter Proでは毎日、BusinessおよびEnterpriseでは毎時のスナップショットを提供しますが、ファイル単位で復元できるアプリケーションレベルのバックアップを別に作成することをお勧めします。Nextcloudをメンテナンスモードにし、データベースをダンプし、データディレクトリをアーカイブし、メンテナンスモードをオフにします。

sudo -u www-data php /var/www/nextcloud/occ maintenance:mode --on
mysqldump --single-transaction -u nextcloud -p nextcloud > nextcloud-db.sql
sudo tar -czf nextcloud-data.tar.gz /var/www/nextcloud/data
sudo -u www-data php /var/www/nextcloud/occ maintenance:mode --off

Dockerインストールの場合、docker compose exec -u www-data app php occ ...を介して同じocc呼び出しを実行し、名前付きボリュームをバックアップします。サーバー外に少なくとも1つのコピーを保存し、定期的に復元をテストします。テストされていないバックアップは希望にすぎません。

稼働し続けるために

各リリース後に組み込みのアップデータまたはWebインターフェースでNextcloudを更新し、sudo apt upgradeでOSのパッチを適用し、管理エリアの「セキュリティとセットアップの警告」パネルを確認します。インフラストラクチャ側ではDDoS保護、プライベートネットワーク、24時間365日の監視、アプリケーション側ではLet's Encryptと定期的な更新により、セルフホストされたNextcloudは大規模クラウドスイートの真に信頼できる代替手段です。

よくある質問

Nextcloud VPSセットアップにはどのくらいのRAMが必要ですか?

ドキュメントを同期する1人のユーザーまたは家族の場合、4 GB RAMと2 vCPUで快適です。写真やビデオライブラリ、プレビュー生成、または複数のアクティブユーザーを追加する場合は、8 GB RAMと高速NVMeを備えたBusinessプランが適しています。Enterpriseは16 GBとNVMe RAIDを追加し、大規模なチーム向けです。

Dockerと手動LAMPインストールのどちらを選択すべきですか?

クリーンで再現可能な構成を求め、簡単に移行や再構築をしたいならDocker Composeを、Apache、PHP、MariaDBを直接管理したいなら手動のLAMP構成を選択してください。どちらもrootアクセス付きVPSで完全にサポートされており、最終結果は同じNextcloudです。

セルフホストのNextcloudは安全ですか?

はい、適切に設定すれば安全です。すべてのトラフィックをLet's Encryptの証明書でHTTPS経由にし、OSとNextcloudを最新に保ち、二要素認証付きの強力なパスワードを使用し、VPSのバックアップに依存します。自分でホストするため、第三者があなたのファイルに恒常的にアクセスすることはありません。

ドメイン名は必要ですか?

実質的には必要です。生のIPアドレスでテストすることはできますが、信頼できるTLS証明書にはドメインが必要であり、モバイルおよびデスクトップの同期クライアントは適切なHTTPSホスト名を期待します。サーバーを指すAレコードを持つ低コストのドメインが1つあれば十分です。

クレジットカードなしで支払うことはできますか?

はい。ApexVPSのチェックアウトはOxaPayを通じて暗号通貨のみで、Bitcoin、Ethereum、USDT、および30以上のコインに対応しています。クレジットカードや銀行口座は不要です。サインアップにはアクセス情報を送るためのメールと、SSHキーや希望するOSなどのオプションのメモだけが必要です。名前、住所、KYCは不要です。

自分だけのクラウドを始めませんか? セルフホスティング向けVPSプランを見る →