SSD Nodes Learn 🎉 VPS $5.50/月〜
ガイド Matt Connor著者 Matt Connor

自分でホスティングする Nextcloud 代替サービス比較

Nextcloudをファイル同期だけ、高速同期、オブジェクトストレージ、SFTPで置き換える方法を比較します。小規模VPSの要件と移行コストも用途別に解説します。

自分でホスティングする価値がある Nextcloud の代替サービスはどれですか?

運用する価値がある Nextcloud の代替サービスは、使っていなかった機能を取り除けるものです。Nextcloud は、ファイルサーバー、カレンダー、連絡先管理、オフィススイート、アプリケーションプラットフォームを1つの PHP アプリケーションにまとめています。そのため、ページを読み込むたびに、これらすべての機能のコストを負担することになります。そこで、まず必要な機能を1つに絞り、その後、既存ファイルの移行にかかる負担を確認して、移行先を選びます。

このガイドでは、用途別に選択肢を整理します。同期だけを行う構成、高速なサーバーで同期する構成、クライアントを上位に配置したオブジェクトストレージ、または単純なリモートファイルアクセスです。各セクションでは、小規模な VPS(仮想プライベートサーバー)に必要なサーバー要件と、既存のフォルダ構成が移行後にどうなるかを説明します。すでに運用している Nextcloud サーバーからではなく、Dropbox や Google Drive から移行する場合は、自分でホスティングする Dropbox 代替サービスの詳しい比較がそのケースを起点に説明しています。

小規模な VPS で Nextcloud が遅くなる理由

遅さには明確な原因があります。原因を把握すれば、環境を移行することで本当に改善するか判断できます。

ページを読み込むたびに、PHP ワーカーを 1 つ使用します。 Nextcloud のシステム要件では、2026 年 8 月時点で、メモリ要件を プロセスごとに 最低 128 MB、推奨 512 MB としています。これはサーバー全体の容量ではありません。2 GB プランで 10 個のワーカーを用意すると、実際に必要なメモリ量は大きくなります。そのため、管理者は PHP-FPM のプール設定で pm.max_children を下げます。その結果、存在するワーカーが処理中の間、リクエストが待機します。ディスクがアイドル状態でも、インターフェースは遅く感じられます。

データベースの増加量は、バイト数ではなくファイル数で決まります。 デフォルトのテーブルプレフィックスでは、ファイルキャッシュテーブル oc_filecache に、サーバーが認識するすべてのストレージ内のファイルとフォルダーが 1 行ずつ格納されます。小さなファイルが 300,000 個ある写真ライブラリは大きなテーブルになります。一方、300 GB の動画ファイルが 400 個しかなければ、小さなテーブルです。共有、検索、ファイルスキャナーはすべてこのテーブルを読み取ります。

sudo mysql nextcloud -e 'SELECT COUNT(*) FROM oc_filecache;'

件数が数百万に達している場合、ディスクベンチマークよりもファイル一覧が遅い理由をよく説明できます。インスタンスで別のテーブルプレフィックスまたは PostgreSQL を使用している場合は、クエリを調整してください。

バックグラウンドジョブは Web インターフェースと CPU を奪い合います。 Nextcloud のマニュアルでは、5 分ごとに cron.php を実行する system cron エントリを推奨しています。プレビューの生成とファイルスキャンは、そのジョブで実行されます。ブラウザーへの応答を処理する CPU と同じ CPU を使用します。

メジャーアップグレードではデータベース移行が実行されます。 インスタンスはメンテナンスモードになり、移行が完了するまで、すべてのリクエストに Nextcloud is in maintenance mode, please try again later で応答します。小規模な VPS で oc_filecache が大きい場合、この時間が長くなり、遅延を実感することがあります。

まず、何を運用するかを決めます

  • 自分が管理する複数のマシン間で、Web インターフェースを使わずに 1 つのフォルダーを同期する場合: Syncthing。
  • 複数人で同期し、Web インターフェース、モバイルクライアント、共有リンクを利用する場合: Seafile。
  • 大量のデータを低コストで保存し、スクリプトやバックアップツールからアクセスする場合: オブジェクトストレージとクライアント。
  • 新しいサーバーソフトウェアを導入せず、リモートからファイルを読み書きする場合: SFTP または WebDAV。
  • ブラウザーでドキュメントを共同編集する場合や、複数人でカレンダーを共有する場合: Nextcloud を使い続けるか、2 つのサービスを運用します。

Syncthing: サーバーアプリケーションを使わないファイル同期

Syncthing はファイルを通常のファイルとして保持します。コンテンツデータベースはなく、ドキュメントを提供する Web インターフェイスもありません。フォルダーに参加する各デバイスが完全なコピーを保持し、Syncthing がそれらのコピーを一致させます。

sudo mkdir -p /etc/apt/keyrings
sudo curl -L -o /etc/apt/keyrings/syncthing-archive-keyring.gpg https://syncthing.net/release-key.gpg
echo "deb [signed-by=/etc/apt/keyrings/syncthing-archive-keyring.gpg] https://apt.syncthing.net/ syncthing stable-v2" | sudo tee /etc/apt/sources.list.d/syncthing.list
sudo apt-get update
sudo apt-get install syncthing
sudo systemctl enable --now syncthing@$USER
sudo ss -lntp | grep 8384

127.0.0.1:8384 の行は、Web インターフェイスが起動し、localhost のみにバインドされていることを示します。公開 VPS ではこの構成が適切です。SSH トンネルで接続します。ssh -L 8384:127.0.0.1:8384 you@your-vps を実行してから、ノート PC で http://127.0.0.1:8384 を開きます。8384 番ポートでリスナーが動作していない場合、サービスの起動に失敗しています。journalctl -u syncthing@$USER -n 50 で理由を確認できます。

リソース。 Syncthing は最小メモリ容量を公表していません。使用量はファイルの合計サイズではなく、インデックス対象のファイル数に応じて増えます。共有フォルダーごとに、ファイル 1 件あたり 1 つのインデックスエントリを保持するためです。大きなフォルダーの初回スキャンでは CPU を使用します。比較を開始する前に、Syncthing がすべてのファイルをハッシュ化するためです。共有 vCPU では初回処理に時間がかかることがあります。メモリ使用量はギガバイト数ではなく、ファイル数に応じて増えると考えてください。

ディスクが実際のコストです。 Syncthing はサーバーではないため、サーバー側だけに保存することはありません。VPS とノート PC の間で 200 GB のフォルダーを共有する場合、両方に 200 GB が必要です。これは、サーバーがすべてを保持し、クライアントが同期対象を選べる Nextcloud とは逆の構成です。VPS をピアではなくバックアップ先として使用する場合は、選択的なフォルダーと VPS 上の receive only フォルダーを使用してください。

移行が主な選択理由です。 すでに存在するディレクトリツリーを Syncthing の対象に指定します。インポート、アップロード、変換は必要ありません。VPS でフォルダーを追加し、ノート PC でも同じフォルダー ID を指定して追加すると、両側の内容が収束します。初回接続時に同じファイルが両側で異なる場合、Syncthing は両方を保持し、一方を filename.sync-conflict-20260809-142530-ABCD123.txt に名前変更します。初回同期でこれらのファイルが生成されるのは正常であり、失敗ではありません。

失う機能。 アカウント、他のユーザーに送る共有リンク、スマートフォンのブラウザーからファイルを参照する機能はありません。従来の Android アプリはプロジェクト自体による保守が終了しており、コミュニティフォークが開発を引き継いでいます。モバイルアクセスが目的であれば、この点が重要です。Syncthing と Nextcloud の直接比較では、機能差を 1 つずつ説明しています。

Seafile: 軽量なサーバーで高速同期

Seafile は処理を 2 つに分けます。Seahub という Python Web アプリケーションがインターフェースを描画し、別の C プロセスが同期トラフィックを処理します。ファイル転送は Web アプリケーションを経由しないため、ほかのユーザーがインターフェースを操作していても、大きなアップロードは高速なままです。Version 13.0 は 2026 年 1 月 5 日にリリースされました。

sudo mkdir -p /opt/seafile
cd /opt/seafile
sudo wget -O .env https://manual.seafile.com/13.0/repo/docker/ce/env
sudo wget https://manual.seafile.com/13.0/repo/docker/ce/seafile-server.yml
sudo wget https://manual.seafile.com/13.0/repo/docker/seadoc.yml
sudo wget https://manual.seafile.com/13.0/repo/docker/caddy.yml

何かを開始する前に .env を編集します。ここでは SEAFILE_SERVER_HOSTNAMEINIT_SEAFILE_ADMIN_EMAILINIT_SEAFILE_ADMIN_PASSWORDSEAFILE_MYSQL_DB_PASSWORDJWT_PRIVATE_KEY を設定します。これらには、32 文字以上のランダムな文字列を指定する必要があります。このファイルでは、ダウンロードした YAML ファイルのどれを compose が読み込むかも指定します。そのため、4 つのダウンロードが 1 つのスタックとして動作します。

cd /opt/seafile
sudo docker compose up -d
sudo docker compose ps

すべてのコンテナが running 状態を示す必要があります。コンテナがループして再起動している場合、ほぼ必ず .env の値が不足しています。sudo docker compose logs seafile で不足している項目を確認できます。

リソース。 2026 年 8 月時点で、Seafile のドキュメントは RAM 2 GB 以上、2 GHz を超える 2 コア CPU を求めています。Docker デプロイでは MariaDB、Caddy リバースプロキシ、SeaDoc エディターも起動するため、これはスタック全体の最低要件と考えてください。2 人または 3 人を超えるユーザーが利用する場合は 4 GB を割り当てるか、オプションのコンテナを省略します。

移行時の注意点はストレージ形式です。 Seafile はファイルを通常のファイルとして保存しません。各ファイルを /opt/seafile-data 配下のブロックに分割し、ツリー構造をデータベースに記録します。既存のディレクトリを Seafile に指定してライブラリとして表示させることはできません。そのため、移行するには所有するすべてのデータを 1 回、完全にアップロードする必要があります。同じ設計上、cp でデータを取り出すこともできません。復旧にはサーバー経由、整合性チェック用の seaf-fsck、または読み取り専用の seaf-fuse マウントを使用します。

rclone には Seafile 用のネイティブバックエンドがあります。これにより、長時間のドラッグアンドドロップではなく、再開可能な 1 つのコマンドでアップロードできます。

rclone config
rclone copy /srv/files seafile:MyLibrary --progress

rclone のドキュメントでは、Seafile 6.x から 9.x までがテスト済みとして記載されています。そのため、小さなフォルダーを対象に実行し、結果を確認してから 1 TB のデータを転送してください。

暗号化ライブラリは、多くのユーザーが移行する主な理由です。パスワードはクライアントで設定し、サーバーには読み取り不能なブロックが保存されます。ただし、注意点があります。暗号化ライブラリ内のファイルをブラウザーでプレビューすると、そのセッションのためにパスワードがサーバーへ送信されます。そのため、ブラウザーでのプレビューとゼロ知識ストレージを同時に利用することはできません。Seafile と Nextcloud の機能比較では、その他の機能上の違いを説明しています。

S3 互換のオブジェクトストレージを同期クライアントで利用する

安価に大量のバイトを保存し、スクリプトからアクセスできるようにすることが目的なら、S3 互換のオブジェクトストレージを運用し、同期処理は別のツールとして扱います。高い耐久性、バージョン管理、そしてバックアップツールがすでに対応しているプロトコルを利用できます。一方、ファイルサーバーのようなユーザーアカウントや、誰でも快適に使えるファイルマネージャーは提供されません。MinIO によるセルフホスト型オブジェクトストレージでは、サーバー側の構成を説明しています。

rclone copy /srv/files s3remote:mybucket --progress
rclone check /srv/files s3remote:mybucket

rclone checkはサイズとハッシュ値で両方を比較し、差分のあるファイル数を表示します。エラーが 0 以外の場合、コピーは完了していません。ソースを削除する前に、copyをもう一度実行してください。注意点は 2 つあります。オブジェクトストレージにはディレクトリがなく、キープレフィックスだけがあるため、空のフォルダーはコピー後に残りません。また、--transfersを S3 のチャンクサイズと併せて大きくすると、rclone のメモリ使用量が増加します。1 GB の VPS では、両方ともデフォルト値のままにしてください。

リモートファイルだけが必要な場合は、単純な WebDAV または SFTP

最も安価な代替策は、新しいものを導入しないことです。VPS で OpenSSH が動作しているなら、すでにファイルサーバーを利用できます。SFTP では、追加の daemon、database、PHP は不要です。日曜日に問題を起こす可能性がある upgrade も必要ありません。

sftp you@your-vps
rclone mount sftpremote: ~/vps --vfs-cache-mode writes

WebDAV に対応するクライアント(ほとんどのスマートフォン用ファイルマネージャーを含みます)では、rclone で同じツリーを提供できます。

sudo apt install apache2-utils
sudo htpasswd -c /etc/rclone/htpasswd you
rclone serve webdav --addr 127.0.0.1:8080 --htpasswd /etc/rclone/htpasswd /srv/files

127.0.0.1 に bind し、その前段に TLS(transport layer security)対応の reverse proxy を配置します。WebDAV の Basic 認証では、すべてのリクエストで password が送信されます。そのため、ここで plain HTTP を使うと、1 分間に何度も password を渡すことになります。ファイルを移動しないため、移行コストはゼロです。一方で、sync も offline copy もありません。リンクが切れると、復旧するまでクライアントからファイルを利用できなくなります。

カレンダー、連絡先、ドキュメント編集の代替

ここで Nextcloud を使わなくすると、機能の一部を別途用意する必要があります。何が必要になるかを明確にしておくことが重要です。カレンダーと連絡先は、HTTP 経由でカレンダーや連絡先を同期する CalDAV と CardDAV です。小規模な代替手段として Radicale があります。コレクションごとにディスク上のファイルとして保存し、メモリ使用量は数十 MB に収まります。

sudo apt install radicale
sudo systemctl enable --now radicale
sudo ss -lntp | grep 5232

パッケージには /usr/lib/systemd/system/radicale.service とデフォルト設定ファイル /etc/radicale/config が含まれており、localhost:5232 で待ち受けます。Radicale にはイベントを編集するインターフェースがないため、スマートフォンまたはデスクトップクライアントから接続し、そこで編集します。

ブラウザー上のドキュメント編集は、代替がより難しくなります。OnlyOffice Docs と Collabora Online はどちらも編集エンジンであり、ストレージではありません。それぞれ、ファイルを保持してドキュメントを渡すホストアプリケーションが必要です。Nextcloud を使わない場合は、独自の SeaDoc エディターを備えた Seafile など、別のホストが必要になります。OnlyOffice と Collabora の比較では、ホストを決めた後にどのエンジンを運用するかを説明しています。

次のいずれかに該当する場合は、Nextcloudを使い続けてください

  • 複数のユーザーが、ファイルで使用しているアカウントと同じアカウントで、1つのカレンダーと1つのアドレス帳を共有します。
  • ブラウザー上で、他のユーザーと同じファイルを同時に編集します。
  • 有効期限とパスワードを設定できるファイル単位の共有リンクに加えて、グループ権限が必要です。
  • ユーザーが技術に詳しくなく、実際に使用するのはモバイルアプリです。

これらの用途をすべて満たす、より軽量な選択肢はありません。正しい対応は、Nextcloudを使わずに放置するのではなく、インストールを修正することです。動作が遅いインスタンスの多くは、メモリーキャッシュを設定していないデフォルトのPHP-FPMプールで動作しています。Nextcloudの管理概要ページにも、キャッシュがないことへの警告が表示されます。追跡対象のファイル数を減らすと、ほかの単一の変更よりも効果があります。増大するのはファイルキャッシュのテーブルだからです。Docker、TLS、バックアップを使用してVPSにNextcloudをインストールする方法では、これらの問題の多くを避けられる構成でセットアップします。

移行に実際にかかるコストを方式別に比較する

  • Syncthing: インポートは不要です。両側で既存のツリーを指定し、内容が一致するまで同期させます。
  • 同じツリー上の SFTP または WebDAV: 何も移動しないため、インポートは一切不要です。
  • オブジェクトストレージ: ネットワーク経由で全データを1回コピーします。再開可能でスクリプト化できますが、空のフォルダーは保持されません。
  • Seafile: ライブラリへ全データを1回アップロードします。サーバーはファイルではなくブロックを保持するためです。

どの方式を選ぶ場合でも、まず Nextcloud から完全なコピーを取得してください。ユーザーファイルは data directory の下にプレーンな形式で保存され、ユーザーごとに1つのフォルダーが作成されます。そのため、rsync のツリーがコピー元になります。コピー前にインスタンスを maintenance mode に切り替えてください。切り替えないと、書き込み途中のファイルをコピーする可能性があります。

sudo -u www-data php occ maintenance:mode --on
sudo rsync -a --info=progress2 /path/to/nextcloud/data/ /srv/files/
find /srv/files -type f | wc -l

その件数を、コピー元にある同じ find と比較してください。件数が少ない場合は、通常、権限のために rsync が一部を読み取れなかったことを意味します。rsync は処理中にこれらのエラーを出力します。

このコピーには2つの注意点があります。Nextcloud の external storage 機能を通じてアクセスするファイルは、data directory には存在しません。Nextcloud に指定したリモートシステム上に保存されているためです。また、server-side encryption を有効にしたことがある場合、ディスク上のファイルは暗号文です。そのため、コピー前に occ encryption:decrypt-all を実行する必要があります。実行しないと、読み取れないデータのフォルダーを移動することになります。処理を中止する前に、両方を確認してください。

FAQ

既存のフォルダー構成を維持できる Nextcloud の代替手段はありますか?

Syncthing、または通常の SFTP や WebDAV を使用する構成です。Syncthing は指定したディレクトリをインデックス化し、すべてのデバイスで同じ名前と構成を維持するため、インポートやアップロードは必要ありません。Seafile とオブジェクトストレージでは、どちらもデータを通常のファイルとして通常のツリー構造に保存しないため、最初にデータ全体を 1 回アップロードする必要があります。Seafile はデータディレクトリ内でファイルをブロックに分割して保存し、オブジェクトストレージではディレクトリではなくキーを使用します。

Seafile は 2 GB の VPS で動作しますか?

2026 年 8 月時点で、Seafile のドキュメントでは少なくとも 2 GB の RAM と、2 GHz を超える 2 コアの CPU が必要とされています。余裕のない最低要件と考えてください。Docker のデプロイでは、MariaDB、Caddy、SeaDoc エディターもそれぞれ独自のコンテナで実行されるためです。単一ユーザーであれば運用できます。家庭や小規模チームで使用する場合は 4 GB に増やすか、SeaDoc コンテナをスタックから外してブラウザー上の文書編集を諦めてください。

ダウンロードは速いのに、Nextcloud の Web インターフェースが遅いのはなぜですか?

2 つの処理経路で異なる処理を行うためです。ダウンロードではディスクからバイト列をストリーミングします。一方、ページの読み込みでは PHP を実行し、ファイルキャッシュテーブルを検索し、多くの場合は空いている PHP-FPM ワーカーを待機します。ストレージを疑う前に、oc_filecache の行数を数え、PHP-FPM プールの pm.max_children を確認してください。数百万行のテーブルと 5 個のワーカーで構成されたプールがあれば、まさにこの症状になります。

カレンダーは Nextcloud に残し、ファイルだけ移行できますか?

はい。多くの場合、それが最も低コストな方法です。大きなフォルダーは Syncthing または Seafile で同期し、CalDAV、CardDAV、ブラウザー上の文書編集用に Nextcloud を稼働させたままにします。Nextcloud のデータベースは追跡するファイル数に応じて増加するため、大きなツリーをデータベースから削除すると、インターフェースが再び高速になります。削除には Web インターフェースまたは occ を使用してください。ディスク上のデータディレクトリから直接削除してはいけません。そうしないと、データベースに存在しないファイルを指す行が残ります。