Nextcloudのウェブアップロード制限を2GB以上に引き上げる

Nextcloud ブラウザでのアップロードが 2 GB で停止する場合は、リクエストを処理するすべてのレイヤー (PHP、Web サーバーまたはリバースプロキシ、および使用中の一時ストレージ) で制限を引き上げてください。5 GB をターゲットとする場合、一般的な PHP-FPM と Nginx の設定ではupload_max_filesize = 5G、、、、post_max_size = 6Gにclient_max_body_size 5G加えて、転送に必要な十分なディスク容量と時間が必要です。

Nextcloudには、2GBという普遍的な上限はありません。現在の管理マニュアルによると、デフォルトの最大アップロードサイズは512MBですが、32ビットシステムでは2GB未満に制限されるのは厳密な上限です。サーバーがちょうど2GBで停止する場合は、設定された制限または中間的な制限に達している可能性が高いです。以下の手順では5GBを例として使用していますが、実際に必要な最大ファイルサイズに置き換えてください。

2GBの制限はNextcloudによるものですか?

多くの場合、目に見える制限はNextcloudの設定ではなく、PHPまたはWebサーバーによって設定されます。Nextcloudがサポートする最大容量は、オペレーティングシステム、ファイルシステム、アカウントのクォータ、および利用可能な一時ディスク容量にも依存します。デスクトップ同期クライアントは別で、ファイルをより小さなチャンクに分割して転送するため、ここで説明するような単一リクエストのアップロード制限の対象にはなりません。

まず、リクエストの経路を特定してください。ユーザーがブラウザ、WebDAV、デスクトップクライアントのいずれ経由でアップロードしているか、またサイトがNginx、Apache、ロードバランサー、ホスティングプロバイダのプロキシを経由しているかを確認してください。サーバーを管理していない場合は、失敗したファイルのサイズ、アップロード方法、失敗時刻、エラーコードを管理者に送信してください。サーバー側の制限を変更できるのは管理者のみです。

どのPHP設定を変更すればよいですか?

PHP-FPM の場合は、コマンドラインの PHP 設定だけでなく、Nextcloud を提供する PHP-FPM サービスで使用される設定を編集してください。Debian または Ubuntu では、一般的なパスは です。 をインストール済みの PHP バージョンに/etc/php/8.2/fpm/php.ini置き換えてください8.2。ディストリビューションまたはコンテナによっては、異なるパスが使用される場合があります。PHP マニュアルには、 はpost_max_sizeより大きくなければならないと記載されているupload_max_filesizeため、リクエストのオーバーヘッドのための余裕を持たせてください。

コードエディタでPHP-FPMの設定ファイルを開き、パス/etc/php/8.2/fpm/php.iniが表示されている状態。
PHP-FPMの設定パスの例です。ご自身のNextcloudサービスで有効なPHPのバージョンとファイルパスを使用してください。

サーバーに適した値を設定してください。5GBの例:

upload_max_filesize = 5G
post_max_size = 6G
max_input_time = 3600
max_execution_time = 3600
PHPの設定では、upload_max_filesizeが5G、post_max_sizeが6G、入力タイムアウトと実行タイムアウトが3600秒に設定されています。
5 GBのアップロードターゲットに対するPHP-FPMの値の例。post_max_sizeはupload_max_filesizeよりも高く設定されています。

タイムアウト値はあくまで例であり、普遍的な要件ではありません。接続速度が遅い場合、サーバーがビジー状態の場合、最後に組み立てる必要があるアップロードの場合は、より長いタイムアウトが必要になることがあります。PHPのメモリ設定とワーカーごとのリソース制限も重要です。すべてのPHP-FPMワーカーのメモリ制限を自動的に数ギガバイトに設定しないでください。NextcloudのPHPガイドラインでは、プロセスごとに少なくとも512MBのメモリを推奨しています。リソース制限を引き上げる前に、ホストとそのPHP-FPMプールを監視してください。

ファイルを保存し、関連する PHP-FPM サービスを再起動して新しい設定を読み込ませてください。たとえば、PHP 8.2 を使用しているシステムでは、サービスは次のようになりますphp8.2-fpm。

sudo systemctl restart php8.2-fpm

サービス名は環境によって異なります。コンテナ環境では、マウントされた構成またはイメージを更新し、デプロイメントの手順に従ってPHPコンテナを再作成してください。

ウェブサーバーの制限を引き上げるにはどうすればよいですか?

Nginxの場合、body-sizeディレクティブをserverNextcloudのアクティブブロック、またはより具体的な適用可能なlocationブロックに配置します。

client_max_body_size 5G;
サーバーブロック内に、client_max_body_size 5G というディレクティブを含む Nginx サーバー設定をエディタで表示します。
Nginxのbody-size制限は、Nextcloudのリクエストを処理するアクティブなサーバーブロック内に配置してください。

次に、設定を検証してNginxを再起動します。

sudo nginx -t
sudo systemctl reload nginx

Nginxが構文エラーを報告した場合は、リロードする前に修正してください。別のプロキシ、イングレスコントローラー、またはホスティングゲートウェイが前面にある場合、それらが独自のリクエストボディ制限を適用している可能性があります。その制限も引き上げてください。アップストリームプロキシの制限により、Nextcloudホストが正しく設定されていてもアップロードが拒否される場合があります。

Apache の場合は、LimitRequestBody該当する仮想ホストまたはディレクトリ構成を確認してください。Nextcloud の最新ドキュメントによると、Apache HTTP Server 2.4.54 以降ではこのディレクティブのデフォルト値が 1 GiB に設定されています。この設定では、そのサイズを超える単一のリクエストのアップロードがブロックされる可能性があります。ホストに適したバイト制限を意図的に設定するか、0Apache のボディサイズ制限を意図的に無効にする場合にのみ使用してください。Apache では、特に が有効になっている場合、リクエストのタイムアウトを長くする必要がある場合もありますmod_reqtimeout。

ストレージ容量不足やタイムアウトによってアップロードが停止することはありますか?

はい。PHP のアップロード一時ディレクトリ、Nextcloud の設定済み一時ディレクトリ、および Nginx の一時ディレクトリには、client_body_temp_path十分な空き容量があり、書き込み可能である必要があります。同時アップロードと、ストレージ構成によってはアップロードされたチャンクの組み立てのための領域を確保してください。関連するファイルシステムを で確認しdf -h、サービス アカウントが設定済みの一時ディレクトリに書き込み可能であることを確認してください。一時設定を、容量がいっぱいのボリュームまたは読み取り専用のボリュームに指定しないでください。

また、ユーザーの Nextcloud クォータとサーバーの空きストレージ容量も確認してください。リクエストサイズの制限を引き上げても、ユーザーのクォータが増えたり、ディスク容量が増えたりすることはありません。アカウントにファイル用の空き容量が必要な場合にのみ、クォータを引き上げてください。アップロードの終盤でエラーが発生した場合、またはタイムアウトやゲートウェイエラーが報告された場合は、制限をさらに引き上げる前に、PHP、Web サーバー、プロキシ、および Nextcloud のログを確認してください。Nextcloud のマニュアルでは、fastcgi_read_timeout最終的な MOVE リクエスト中を含め、PHP タイムアウトと Nginx が原因となる可能性があると具体的に指摘しています。

注意点として、PHP の `time`upload_max_filesizeと ` post_max_sizetime` は、WebDAV の単一ファイル PUT リクエストや Nextcloud のチャンクアップロードリクエストを同じように制御しない場合があります。これらのパスでは、PHP と Web サーバーのタイムアウトが制限要因となる可能性があります。適用されない値を変更する前に、アップロード方法を診断してください。

修正が完了したことをどのように確認できますか?

まず、以前の制限値を十分に上回るサイズのテストファイルを1つ用意し、次に新しい目標値に近いサイズのファイルをテストします。最初に失敗したのと同じブラウザまたはクライアントを使用してアップロードします。転送が完了し、ファイルが期待どおりのサイズで表示され、ダウンロードまたは開くことができることを確認します。ファイルビューにアップロード完了を示す緑色のインジケーターが表示されるのは便利な最初の確認方法ですが、保存されたファイルのサイズも比較してください。

Nextcloudのファイルビューに、サイズが3GBと表示され、緑色の完了チェックマークが付いたarchive-3gb.zipが表示されています。
変更後、以前の制限よりも大きいテストファイルが想定通りのサイズで表示され、完了と表示されることを確認してください。

テストがそれでも失敗する場合は、エラーメッセージから次の制限要因を特定してください。HTTP 413エラーはリクエストボディの制限、504エラーまたは完了間近の失敗はタイムアウト、クォータまたはディスク容量不足のメッセージはストレージ容量の制限を示しています。同じタイムスタンプのログを確認し、該当する設定のみを調整してください。制限値は想定される最大アップロード量に近い値に設定し、同時実行に必要な一時領域を十分に確保してください。

公式ドキュメント

コメントを残す

Nextcloudのウェブアップロード制限を2GB以上に引き上げる

Nextcloudのウェブアップロード制限を2GB以上に引き上げる

PHP、Nginx、Apache、一時ストレージ、タイムアウトの設定を調整することで、Nextcloudブラウザからのより大きなファイルアップロードを可能にし、どの制限がファイルのアップロードを妨げているかを確認してください。

WebサーバーでNextcloudのPHPメモリ警告をクリアする

Nextcloudが実際に使用するPHPメモリの制限を設定し、該当するサービスを再起動して、管理画面の概要で512MBの設定を確認してください。

S3互換バケットをNextcloud外部ストレージに接続する

NextcloudのS3バックエンドを使用して、適切なエンドポイント、認証情報、アクセス範囲、および検証手順を設定し、互換性のあるオブジェクトストレージバケットをマウントします。

ストレージを壊さずにNextcloudデータを外部ドライブに移動する方法

ストレージを壊さずにNextcloudデータを外部ドライブに移動する方法

永続的なUUIDマウント、メンテナンスモード、検証済みコピー、および元のパスのシンボリックリンクを使用して、Linux Nextcloudのデータディレクトリを安全に外部ドライブに移動します。

Nextcloudのアップデート後に発生したデータベースエラー:最初に確認すべきこと

SQLエラーの診断、データベース接続の確認、中断された移行の安全な完了を行うことで、アップデート後にNextcloudへのアクセスを復元します。

OCCを使用してNextcloudの管理者パスワードをリセットする

NextcloudのOCCコマンドを使用して、サーバーシェルから管理者パスワードをリセットする方法を説明します。ユーザー名、権限、外部ログインプロバイダーに関するガイダンスも含まれています。

Nextcloudを提供するHTTPSエンドポイントにHSTSヘッダーを追加する

NextcloudのHSTS警告を解消するには、Apache、NGINX、またはTLSプロキシでヘッダーを設定し、公開HTTPS応答が安全に動作することを確認してください。

インターネット接続がないと報告されるNextcloudアプリのインストールに関するトラブルシューティング

インターネット接続がないと報告されるNextcloudアプリのインストールに関するトラブルシューティング

App Storeのインストール失敗の原因を、DNS、HTTPS、プロキシ、TLS、またはNextcloudサーバー自体の設定の問題に絞り込んでください。

スケジュールされたキューを使用して、NextcloudプレビューのCPUスパイクを抑制する

サムネイル作成作業を制御されたバックグラウンドスケジュールに移行し、使用されていないプレビューサイズをトリミングし、Nextcloudサーバーに過負荷をかけることなくキューを検証します。

Nextcloudデスクトップ同期で「ファイルの処理中」を解消しましょう

Nextcloudの同期を妨げているファイル、除外ルール、接続の問題、またはクライアントデータベースの状態を特定し、アップロードとダウンロードが安全に行われることを確認します。