「Nextcloud」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(文字列「www.archlinuxjp.org」を「www.archlinux.jp」に置換)
 
(4人の利用者による、間の33版が非表示)
1行目: 1行目:
[[Category:ウェブサーバー]]
+
[[Category:ファイル共有]]
  +
[[Category:ウェブアプリケーション]]
 
[[en:Nextcloud]]
 
[[en:Nextcloud]]
[[fr:Owncloud]]
+
[[zh-hans:Nextcloud]]
 
{{Related articles start}}
 
{{Related articles start}}
{{Related|LAMP}}
+
{{Related|Apache HTTP Server}}
{{Related|LEMP}}
 
 
{{Related|Nginx}}
 
{{Related|Nginx}}
  +
{{Related|UWSGI}}
 
{{Related|OpenSSL}}
 
{{Related|OpenSSL}}
 
{{Related|WebDAV}}
 
{{Related|WebDAV}}
 
{{Related articles end}}
 
{{Related articles end}}
  +
[https://nextcloud.com/ Nextcloud] は、いわゆる [https://apps.nextcloud.com/ アプリ] によって、あらゆる種類の共有、コラボレーション、コミュニケーションを可能にするクライアントサーバーソフトウェア群です。例えば:
[[Wikipedia:ownCloud|Wikipedia]] より:
 
   
  +
* ファイル共有
:Nextcloud はファイルホストサービスを作成して使用するためのクライアントサーバーソフトウェアスイートである。広く使われている Dropbox と同じような機能を持ち、フリーでオープンソースであるため、誰でもプライベートサーバーにインストール・使用することができる。Dropbox などのプロプライエタリサービスと異なり、オープンなアーキテクチャを活用してサーバーに機能 (アプリケーション) を簡単に追加することが可能。
 
  +
* 個人情報管理 ([https://apps.nextcloud.com/apps/contacts 連絡先]、[https://apps.nextcloud.com/apps/calendar カレンダー]、[https://apps.nextcloud.com/apps/tasks タスク])
  +
* メッセージング ([https://apps.nextcloud.com/apps/mail メール], [https://apps.nextcloud.com/apps/spreed チャット、ビデオ会議])
  +
* 文書の共同編集 ([https://github.com/nextcloud/text テキスト], [[Nextcloud#Office 統合|Office 統合]])
  +
Nextcloud はオープンソースであり、オープンスタンダードに基づいています。データ主権は大きな利点です。つまり、Nextcloud の独自のインスタンスを使用すると、Dropbox、Office 365、Google Drive などの独自の (そして潜在的に信頼できない) サービスから解放されます。
   
  +
ニーズに応じて、Nextcloud はシングルボードコンピューター (Raspberry Pi など) から数百万のユーザーにサービスを提供する本格的なデータセンターまで展開できます。Nextcloud は、綿密な認証スキームとフェデレーション (個別のインスタンスの接続) のオプションを備えており、エンタープライズ環境での使用に適しています。
Nextcloud と ownCloud の違いについては [https://en.wikipedia.org/wiki/Nextcloud#Differences_from_ownCloud] を見てください。
 
   
  +
Nextcloud は [https://owncloud.com/ ownCloud] のフォークです。ウィキペディアの [[Wikipedia:ja:Nextcloud#歴史|歴史]] を参照してください。
== 要件 ==
 
Nextcloud は以下のコンポーネントを必要とします:
 
* ウェブサーバー: [[Apache]] または [[nginx]]。
 
* データベース: [[MariaDB]] または [[PostgreSQL]]。
 
* [[PHP]] と[[#PHP|追加モジュール]]。
 
   
  +
== セットアップの概要 ==
先に進む前にまずは必要なコンポーネントをインストールしてください。
 
  +
  +
Nextcloud の完全なインストールには、(少なくとも) 次のコンポーネントが含まれます。
  +
  +
'''データベース''' を使用して '''Nextcloud''' (つまり、PHP コード) を実行する '''アプリケーションサーバー''' とペアになった '''Web サーバー'''
  +
  +
この記事では、データベースとして [[MariaDB]]/MySQL および [[PostgreSQL]] と、Web サーバーとアプリケーションサーバーの次の組み合わせについて説明します。
  +
  +
* nginx → uWSGI (および uwsgi-plugin-php)
  +
* nginx → FPM,
  +
* Apache HTTP サーバー (mod_proxy_uwsgi を使用) → uWSGI (および uwsgi-plugin-php)
  +
* Apache HTTP サーバー (mod_proxy_fcgi を使用) → FPM
  +
  +
Nextcloud パッケージは [[ウェブアプリケーションパッケージガイドライン]] に準拠しています。これにより、特に、専用ユーザー (この場合は {{ic|nextcloud}}) で Web アプリケーションを実行することが義務付けられます。これが、ここでアプリケーションサーバーが登場する理由の 1 つです。まったく同じ理由で、{{pkg|php-apache}} を使用して Apache プロセスで Nextcloud の PHP コードを直接実行することはできなくなりました。
   
 
== インストール ==
 
== インストール ==
   
  +
{{Note|パッケージ {{Pkg|nextcloud}} (メタパッケージ ''php-interpreter'' への依存関係による) は、{{Pkg|php}} の上に Nextcloud のインストールを構築するか、またはパッケージ {{Pkg|php-legacy}} 安全のために {{Pkg|php-legacy}} を選択することを強くお勧めします。詳細については、[[#php-legacy への移行|php-legacy への移行]] を参照してください。この記事の残りの部分では、{{Pkg|php-legacy}} を使用したインストールを想定しています。}}
{{Pkg|nextcloud}} パッケージを[[インストール]]してください。
 
   
  +
{{Pkg|nextcloud}} パッケージをインストールします。尋ねられたら、PHP バージョンとして {{Pkg|php-legacy}} を選択します。これにより、かなりの数の依存パッケージが取り込まれます。すべての [https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation 必要な PHP 拡張機能] はこの方法で処理されます。
== セットアップ ==
 
   
  +
プレビュー生成用にパッケージ {{Pkg|php-legacy-imagick}} と {{Pkg|librsvg}} を追加インストールすることをお勧めします (できれば pacman オプション {{ic|--asdeps}} を使用した依存パッケージとして)。他のオプションの依存関係については、具体的な設定 (選択したデータベースなど) に応じて後で説明します。
Nextcloud をセットアップするには PHP が動作するウェブサーバー・データベースサーバーが必要です。
 
   
=== PHP の設定 ===
+
== 設定 ==
{{Tip|必要な全ての PHP モジュールについては、上流のドキュメントを参照してください: [https://docs.nextcloud.com/server/11/admin_manual/installation/source_installation.html#prerequisites Nextcloud 11.0]。}}
 
   
  +
=== PHP ===
[[PHP#gd]], {{pkg|php-intl}}, {{pkg|php-mcrypt}} を追加モジュールとしてインストールしてください。
 
   
  +
このガイドは、PHP の中央構成ファイル {{ic|/etc/php-legacy/php.ini}} を改ざんするものではなく、他の PHP ベースのアプリケーションの設定に干渉する可能性のない場所に Nextcloud 固有の PHP 構成を配置します。これらの場所は次のとおりです。
使用するデータベースバックエンドに応じて設定が必要です:
 
* [[MySQL]] の場合、[[PHP#MySQL/MariaDB]] を見てください。
 
* [[PostgreSQL]] の場合、[[PHP#PostgreSQL]] を見てください。
 
* [[SQLite]] の場合、[[PHP#Sqlite]] を見てください。
 
   
  +
* {{ic|/etc/webapps/nextcloud/php.ini}} 内の {{ic|php.ini}} の専用コピー ({{ic|occ}} コマンドラインツールとバックグラウンドジョブ用)
[[PHP#キャッシュ|キャッシュ]]を活用することでパフォーマンスを改善することができます。詳しくは公式ドキュメントの [https://docs.nextcloud.com/server/11/admin_manual/configuration_server/caching_configuration.html メモリキャッシュの設定] を見てください。
 
  +
* アプリケーションサーバーの構成における対応する設定。これらについては、アプリケーションサーバーに関するセクションで説明します。
   
  +
{{ic|/etc/php-legacy/php.ini}} のコピーを {{ic|/etc/webapps/nextcloud}} に作成します。厳密に必要というわけではありませんが、コピーの所有権を変更します。
=== データベースの設定 ===
 
   
  +
{{bc|# chown nextcloud:nextcloud /etc/webapps/nextcloud/php.ini}}
Nextcloud を動かすには SQL データベースをセットアップする必要があります。データベースを設定したら、まずは管理者アカウントを作成する必要があります。
 
   
  +
Nextcloud の [https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation インストール手順] にリストされている前提条件のほとんどは、ベア PHP インストールですでに有効になっています。さらに、次の拡張機能を有効にします。
==== MariaDB ====
 
{{Note|{{ic|/etc/mysql/my.cnf}} の {{ic|binlog_format}} を ''mixed'' に設定することが強く推奨されています [https://docs.nextcloud.com/server/11/admin_manual/configuration_database/linux_database_configuration.html#db-binlog-label]。}}
 
   
  +
{{hc|/etc/webapps/nextcloud/php.ini|2=
以下は [[MariaDB]] のデータベースとユーザーを設定する例です:
 
  +
extension=bcmath
{{hc|$ mysql -u root -p|2=
 
  +
extension=bz2
mysql> CREATE DATABASE `'''nextcloud'''` DEFAULT CHARACTER SET `utf8` COLLATE `utf8_unicode_ci`;
 
  +
extension=exif
mysql> CREATE USER `'''nextcloud'''`@'localhost' IDENTIFIED BY ''''password'''';
 
  +
extension=gd
mysql> GRANT ALL PRIVILEGES ON `'''nextcloud'''`.* TO `'''nextcloud'''`@`localhost`;
 
  +
extension=iconv
mysql> \q
 
  +
extension=intl
  +
extension=sysvsem
  +
; in case you installed php-imagick (as recommended)
  +
extension=imagick
 
}}
 
}}
  +
==== PostgreSQL ====
 
以下は [[PostgreSQL]]デースとユーザーを設定すです:
+
{{ic|date.timezone}} を希望のタイムゾンに設定しま例:
  +
{{hc|1=$ sudo -u postgres createuser -h localhost -P nextcloud|2=
 
  +
{{hc|/etc/webapps/nextcloud/php.ini|2=
Enter password for new role:
 
  +
date.timezone = Europe/Berlin
Enter it again:
 
 
}}
 
}}
{{bc|$ sudo -u postgres createdb -O nextcloud nextcloud}}
 
   
  +
PHP のメモリ制限を少なくとも 512MiB に引き上げます。
=== ウェブサーバーの設定 ===
 
{{Warning|平文の HTTP ではなく TLS/SSL (HTTPS) を使用することが推奨されます。詳しくは [[Apache#TLS/SSL]] や [[Nginx#TLS/SSL]] を参照してください。}}
 
   
  +
{{hc|/etc/webapps/nextcloud/php.ini|2=
使用する[[ウェブサーバー]]によって、必要な設定は変わります。
 
  +
memory_limit = 512M
  +
}}
   
  +
オプション: セキュリティを強化するには、{{ic|open_basedir}} を構成します。これにより、Nextcloud の PHP コードがファイルを読み書きできる場所が制限されます。実証済みの設定は、
==== Apache ====
 
Apache の設定ファイルを設定ディレクトリにコピーしてください:
 
# cp /etc/webapps/nextcloud/apache.example.conf /etc/httpd/conf/extra/nextcloud.conf
 
   
  +
{{hc|/etc/webapps/nextcloud/php.ini|2=
必要に応じてファイルの設定を変更してください。デフォルトでは {{ic|/nextcloud}} で {{ic|/usr/share/webapps/nextcloud}} が表示されるエイリアスが記述されています。
 
  +
open_basedir=/var/lib/nextcloud:/tmp:/usr/share/webapps/nextcloud:/etc/webapps/nextcloud:/dev/urandom:/usr/lib/php-legacy/modules:/var/log/nextcloud:/proc/meminfo:/proc/cpuinfo
  +
}}
   
  +
設定する追加の拡張機能に応じて、このリストを拡張する必要がある場合があります (例: [[Redis]] を選択した場合は {{ic|/run/redis}})
設定したら {{ic|/etc/httpd/conf/httpd.conf}} に以下を追加してください:
 
Include conf/extra/nextcloud.conf
 
   
  +
この {{ic|php.ini}} は、{{ic|occ}} コマンド ラインツールとバックグラウンド ジョブ、つまり短時間実行される PHP プロセスによってのみ使用されるため、ここで opcache を設定する必要はありません。
Nextcloud がインストールされているルートディレクトリ (例: {{ic|/usr/share/webapps/nextcloud}}) にウェブサーバーのユーザー {{ic|http}} からアクセスできることを確認してください。
 
   
  +
=== Nextcloud ===
その後 Apache ({{ic|httpd.service}}) を再起動してください。
 
   
  +
次のエントリを Nextcloud の設定ファイルに追加します。
===== WebDAV =====
 
OwnCloud には [[WebDAV]] の実装が付いていますが、Apache の実装と衝突する可能性があります。WebDAV を有効にする場合 (デフォルトでは有効になっていません)、{{ic|/etc/httpd/conf/httpd.conf}} で {{ic|mod_dav}} と {{ic|mod_dav_fs}} モジュールを無効にしてください。詳しくは [https://forum.owncloud.org/viewtopic.php?f=17&t=7240] を参照。
 
   
  +
{{hc|/etc/webapps/nextcloud/config/config.php|2=
==== Nginx ====
 
  +
'trusted_domains' =>
クラウドの設定ファイルを保存するための空ディレクトリを作成してください:
 
  +
array (
# mkdir /etc/nginx/conf.d/
 
  +
0 => 'localhost',
  +
1 => '''cloud.mysite.com''',
  +
),
  +
'overwrite.cli.url' => 'https://''cloud.mysite.com''/',
  +
'htaccess.RewriteBase' => '/',
  +
}}
   
  +
指定されたホスト名例 {{ic|''cloud.mysite.com''}} を変更します。Nextcloud インストールがサブフォルダー経由でアクセスできる場合 (例: {{ic|<nowiki>https://www.mysite.com/nextcloud</nowiki>}}) {{ic|overwrite.cli.url}} {{ic|htaccess.RewriteBase}} はそれに応じて変更する必要があります。
{{ic|/etc/nginx/nginx.conf}} の "http" セクションに以下の行を追加してください:
 
 
server_names_hash_bucket_size 64;
 
include conf.d/*.conf;
 
   
  +
=== システムと環境 ===
[https://docs.nextcloud.com/server/11/admin_manual/installation/nginx_nextcloud_9x.html ドキュメント] に従って設定ファイル {{ic|/etc/nginx/conf.d/nextcloud.conf}} を作成してください。Arch のパッケージでは {{ic|/var/www/}} ではなく {{ic|/usr/share/webapps/}} にインストールされるため {{ic|root}} のディレクトリを変える必要があります。
 
   
  +
Nextcloud 固有の {{ic|php.ini}} が {{ic|occ}} ツールで使用されるようにするには、環境変数 {{ic|NEXTCLOUD_PHP_CONFIG}} を設定します。
さらに、以下の部分を:
 
   
  +
{{bc|1=
upstream php-handler {
 
  +
$ export NEXTCLOUD_PHP_CONFIG=/etc/webapps/nextcloud/php.ini
server 127.0.0.1:9000;
 
  +
}}
#server unix:/var/run/php5-fpm.sock;
 
}
 
   
  +
また、この設定を永続的にするには、この行を {{ic|.bashrc}} (または {{ic|.bash_profile}} ) に追加します。
以下のように変更してください:
 
   
  +
プライバシーとセキュリティの予防措置として、セッションデータ用の専用ディレクトリを作成します。
upstream php-handler {
 
#server 127.0.0.1:9000;
 
server unix:/run/php-fpm/php-fpm.sock;
 
}
 
   
  +
{{bc|1=
[[Let’s Encrypt]] を使用してセキュアな証明書を入手することが推奨されています。[[#セキュリティの強化]]を見てください。
 
  +
# install --owner=nextcloud --group=nextcloud --mode=700 -d /var/lib/nextcloud/sessions
  +
}}
   
  +
== データベース ==
===== PHP-FPM の設定 =====
 
   
  +
[[MariaDB]]/MySQL は Nextcloud の標準的な選択肢です。
[[Nginx#PHP を動かす]]に書かれているようにして PHP-FPM を設定してください。
 
   
  +
:MySQL または MariaDB データベースが推奨されるデータベースエンジンです。[https://docs.nextcloud.com/server/stable/admin_manual/configuration_database/linux_database_configuration.html]
{{ic|/etc/php/php-fpm.d/www.conf}} の {{ic|1=env[PATH] = /usr/local/bin:/usr/bin:/bin}} をアンコメントしてから {{ic|php-fpm.service}} を[[再起動]]して変更を適用してください。
 
   
  +
Nextcloud のデータベースに関するほとんどの情報は、MariaDB/MySQL を扱います。Nextcloud 開発者は、[https://github.com/nextcloud/server/issues/5912#issuecomment-318568370|] があることを認めています。他のデータベースでは、あまり詳細な専門知識がありません。
== 初期化 ==
 
   
  +
[[PostgreSQL]] は、MariaDB/MySQL と比較してパフォーマンスが向上し、全体的に癖が少ないと言われています。[[SQLite]] は主にテスト/開発インストールでサポートされており、運用環境では推奨されません。 [https://docs.nextcloud.com/server/stable/admin_manual/configuration_database/linux_database_configuration.html サポートされるデータベースのリスト] には、Oracle データベースも含まれています。この製品についてはここでは扱いません。
ウェブブラウザで Nextcloud をインストールした PC のアドレスを開いてください (例: https://www.examples.com/nextcloud)。指示に従って管理者アカウントを追加し先に作成したデータベースを選択します。
 
   
  +
=== MariaDB / MySQL ===
== セキュリティの強化 ==
 
   
  +
2013 年以降、[[MariaDB]] が Arch Linux のデフォルトの MySQL 実装になっているため [https://archlinux.org/news/mariadb-replaces-mysql-in-repositories/] 、このテキストでは MariaDB についてのみ言及しています。
[https://docs.nextcloud.com/server/11/admin_manual/configuration_server/harden_server.html Nextcloud Hardening and Security] の記事に一般的なトピックの説明があります。[https://scan.nextcloud.com/ セキュリティスキャナ] も参照。
 
   
  +
Nextcloud と同じホストでデータベースを実行する場合は、[[MariaDB#Configuration|configure]] および [[起動]] {{Pkg|mariadb}} をインストールします (まだ実行していない場合)。詳細については、対応する [[MariaDB|article]] を参照してください。{{ic|mariadb-install-db}} で MariaDB を初期化することを忘れないでください。セキュリティを強化するために、MariaDB を [[MariaDB#Unix ソケット経由でのみローカルでアクセスを有効にする|ローカルの Unix ソケットでのみリッスンする]] ように設定することをお勧めします。
=== Let's Encrypt ===
 
==== nginx ====
 
[https://github.com/graysky2/configs/blob/master/nginx/nextcloud-initial.conf こちらのファイル] をテンプレートとして使ってクラウド設定の {{ic|/etc/nginx/conf.d/cloud-initial.conf}} を作成してください。テンプレートファイルの "@@FQDN@@" は実際に使用する [https://en.wikipedia.org/wiki/Fully_qualified_domain_name FQDN] に置き換えてください。最初に暗号化されない設定を使うにはサーバーの証明書を生成する必要があります。[[Let’s Encrypt]] に書かれている手順に従ってサーバーの暗号化証明書を作成してください。
 
   
  +
{{hc|/etc/my.cnf.d/server.cnf|2=
証明書を作成できたら {{ic|/etc/nginx/conf.d/cloud-initial.conf}} を新しいファイル {{ic|/etc/nginx/conf.d/cloud.conf}} に置き換えてください (it may be safely renamed so long as it does not end in ".conf" or simply deleted)。[https://github.com/graysky2/configs/blob/master/nginx/nextcloud.conf こちらのファイル] をテンプレートとして使うことができます。"@@FQDN@@" は実際に使用する [https://en.wikipedia.org/wiki/Fully_qualified_domain_name FQDN] に置き換えてください。その後 {{ic|nginx.service}} を[[起動]]・[[有効化]]してください。
 
  +
[mysqld]
  +
skip_networking
  +
}}
  +
  +
Nextcloud 独自のドキュメント [https://docs.nextcloud.com/server/stable/admin_manual/configuration_database/linux_database_configuration.html#database-read-committed-transaction-isolation-level を推奨] では、トランザクション分離レベルを READ-COMMITTED に設定します。これは、多くの同時トランザクションによる高負荷が予想される場合に特に重要です。
  +
  +
{{hc|/etc/my.cnf.d/server.cnf|2=
  +
[mysqld]
  +
transaction_isolation=READ-COMMITTED}}
  +
  +
{{ic|1=binlog_format=ROW}} を設定するというもう 1 つの推奨事項は廃止されました。最近の MariaDB バージョンのデフォルトの {{ic|MIXED}} は、推奨される {{ic|ROW}} と少なくとも同じくらい優れています。いずれの場合も、設定はレプリケーションが適用される場合にのみ関係します。
  +
  +
データベースをユーザー root で CLI ツール {{ic|mysql}} を起動します。(デフォルトのパスワードは空ですが、できるだけ早く変更してください。)
  +
  +
{{bc|$ mysql -u root -p}}
  +
  +
Nextcloud のユーザーとデータベースを作成します。
  +
  +
{{bc|
  +
CREATE USER 'nextcloud'@'localhost' IDENTIFIED BY &apos;''db-password''&apos;;
  +
CREATE DATABASE IF NOT EXISTS nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
  +
GRANT ALL PRIVILEGES on nextcloud.* to 'nextcloud'@'localhost';
  +
FLUSH privileges;}}
  +
  +
({{ic|''db-password''}} は、選択する必要がある DB ユーザー ''nextcloud'' の実際のパスワードのプレースホルダーです。) {{ic|\q}} でツールを終了します。
  +
  +
{{Note|MariaDB は、UTF8 の意味についての理解に欠陥があり、その結果、コードポイント 0x10000 以上の文字 (絵文字など) を保存できなくなります。彼らは、''utf8mb4'' と呼ばれる新しいエンコーディングを導入することにより、バージョン 5.5 でこの問題を ''修正'' しました。結論: MariaDB の ''utf8'' は決して使用せず、常に ''utf8mb4'' を使用してください。移行が必要な場合は、[https://docs.nextcloud.com/server/stable/admin_manual/configuration_database/mysql_4byte_support.html] を参照してください。}}
  +
  +
Nextcloud インストールのデータベースとして MariaDB を使用することに決めたので、対応する PHP 拡張機能を有効にする必要があります。
  +
  +
{{hc|/etc/webapps/nextcloud/php.ini|2=
  +
extension=pdo_mysql
  +
}}
  +
  +
これ以上の設定 (MariaDB に関連する) は必要ありません (Nextcloud の [https://docs.nextcloud.com/server/stable/admin_manual/configuration_database/linux_database_configuration.html#cconfiguring-a-mysql-or-mariadb] に記載されている情報とは異なります) データベース管理者マニュアル])
  +
  +
次に、Nextcloud のデータベーススキーマを次のように設定します。
  +
  +
{{bc|1=
  +
$ occ maintenance:install \
  +
--database=mysql \
  +
--database-name=nextcloud \
  +
--database-host=localhost:/run/mysqld/mysqld.sock \
  +
--database-user=nextcloud \
  +
--database-pass=''db-password'' \
  +
--admin-pass=''admin-password'' \
  +
--admin-email=''admin-email'' \
  +
--data-dir=/var/lib/nextcloud/data
  +
}}
  +
  +
プレースホルダー (例: {{ic|''db-password''}}) に注意して、適切な値に置き換えてください。このコマンドは、データベースを Nextcloud と同じホスト上で実行していることを前提としています。{{ic|occ help maintenance:install }} と入力し、他のオプションについては Nextcloud の [https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/occ_command.html#command-line-installation ドキュメント] を参照してください。このツールに関する Arch 固有の詳細については、[[Nextcloud#"occ" コマンドラインツールの使用|"occ" コマンドラインツールの使用]] を参照してください。
  +
  +
=== PostgreSQL ===
  +
  +
PostgreSQL の詳細については、対応する [[PostgreSQL|article]] を参照してください。 Nextcloud と同じホストでデータベースを実行する場合は、[[PostgreSQL#初期構成|設定]] および {{Pkg|postgresql}} を [[起動]] (まだ実行していない場合) をインストールします。このシナリオでのセキュリティを強化するには、PostgreSQL を [[PostgreSQL#UNIX ソケット経由で排他的にアクセスできるように PostgreSQL を構成する|ローカルの UNIX ソケットでのみリッスンする]] ように構成することをお勧めします。
  +
  +
{{hc|/var/lib/postgres/data/postgresql.conf|2=
  +
listen_addresses = <nowiki>''</nowiki>
  +
}}
  +
  +
特に、{{ic|initdb}} を使用してデータベースを初期化することを忘れないでください。それが完了したら、PostgreSQL の CLI ツール {{ic|psql}} を起動します。
  +
  +
{{bc|
  +
$ sudo -u postgres -- psql
  +
}}
  +
  +
そして、データベースユーザー {{ic|nextcloud}} と同じ名前のデータベースを作成します
  +
  +
{{bc|1=
  +
CREATE USER nextcloud WITH PASSWORD &apos;''db-password''&apos;;
  +
CREATE DATABASE nextcloud TEMPLATE template0 ENCODING 'UNICODE';
  +
ALTER DATABASE nextcloud OWNER TO nextcloud;
  +
GRANT ALL PRIVILEGES ON DATABASE nextcloud TO nextcloud;
  +
\q
  +
}}
  +
  +
({{ic|''db-password''}} は、選択する必要があるデータベースユーザー ''nextcloud'' のパスワードのプレースホルダーです。)
  +
  +
追加パッケージ {{Pkg|php-pgsql}} を依存関係としてインストールし (pacman オプション {{ic|--asdeps}})、{{ic|/etc/webapps/nextcloud/php.ini}} で対応する PHP 拡張機能を有効にします。
  +
  +
{{hc|/etc/webapps/nextcloud/php.ini|2=
  +
extension=pdo_pgsql
  +
}}
  +
  +
Now setup Nextcloud's database schema with:
  +
  +
{{bc|1=
  +
$ occ maintenance:install \
  +
--database=pgsql \
  +
--database-name=nextcloud \
  +
--database-host=/run/postgresql \
  +
--database-user=nextcloud \
  +
--database-pass=''db-password'' \
  +
--admin-pass=''admin-password'' \
  +
--admin-email=''admin-email'' \
  +
--data-dir=/var/lib/nextcloud/data
  +
}}
  +
  +
プレースホルダー (例: {{ic|''db-password''}}) に注意して、適切な値に置き換えてください。このコマンドは、データベースを Nextcloud と同じホスト上で実行していることを前提としています。{{ic|occ help maintenance:install }} と入力し、他のオプションについては Nextcloud の [https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/occ_command.html#command-line-installation ドキュメント] を参照してください。このツールに関する Arch 固有の詳細については、[[Nextcloud#"occ" コマンドラインツールの使用|"occ" コマンドラインツールの使用]] を参照してください。
  +
  +
== アプリケーションサーバー ==
  +
  +
PHP コードの処理に使用できる一般的なアプリケーションサーバーは [[uWSGI]] または [https://cwiki.apache.org/confluence/display/HTTPD/PHP-FPM FPM] の 2 つです。''FPM'' はPHPに特化したものです。Web サーバーと ''FPM'' の間で使用されるプロトコルは ''fastcgi'' です。このツールの [https://www.php.net/manual/en/install.fpm.php ドキュメント] には改善の余地があります。一方、''uWSGI'' は、言語固有のプラグインを使用して、[https://uwsgi-docs.readthedocs.io/en/latest/LanguagesAndPlatforms.html 少数の言語] で記述されたコードを提供できます。使用されるプロトコルは ''uwsgi''(小文字)です。このツールは [https://uwsgi-docs.readthedocs.io/en/latest/index.html 広範囲に文書化されています] ですが、膨大な量の文書が混乱を招き、扱いにくくなる可能性があります。
   
 
=== uWSGI ===
 
=== uWSGI ===
   
  +
uWSGI には独自の [[uWSGI|article]] があります。そこでは役立つ情報がたくさん見つかります。{{pkg|uwsgi}} とプラグイン {{pkg|uwsgi-plugin-php-legacy}} を、できれば依存関係として、つまり {{ic|--asdeps}} とともにインストールします。Nextcloud のコードを uWSGI で (または uWSGI 内で) 実行するには、1 つの uWSGI 固有の構成ファイル ({{ic|nextcloud.ini}}) を構成し、1 つの systemd サービスを定義する必要があります。
{{pkg|uwsgi-plugin-php}} による [[uWSGI]] アプリケーションサーバーを使うことで ownCloud を固有のプロセスで動かすことができます。システム全体の {{ic|php.ini}} を編集しなくても、インスタンスの [[PHP#設定|PHP 設定]]を定義することができるため、ウェブアプリケーションの設定を分離することが可能です。uWSGI 自体にリソースの使用を制限するための機能が豊富に含まれており、アプリケーションのセキュリティを強化したり、専用のユーザーで動くようにプロセスを分けられます。
 
   
  +
{{Warning|最近、uWSGI、特にその PHP プラグインのメンテナンスがまばらになっていることに言及しなければなりません[https://github.com/unbit/uwsgi/issues/2287] これはすでに [https://bugs.archlinux.org/task/73470 の問題] を引き起こしており、Arch Linux パッケージの管理者 (アップストリームではない) が uWSGI コードにパッチを適用することによってのみ解決できます。}}
[[#PHP-FPM の設定|PHP-FPM の設定]]と異なるところは {{ic|<nowiki>location ~ \.php(?:$|/) {}</nowiki>}} ブロックだけです:
 
{{bc|<nowiki>
 
location ~ \.php(?:$|/) {
 
include uwsgi_params;
 
uwsgi_modifier1 14;
 
# Avoid duplicate headers confusing OC checks
 
uwsgi_hide_header X-Frame-Options;
 
uwsgi_hide_header X-XSS-Protection;
 
uwsgi_hide_header X-Content-Type-Options;
 
uwsgi_hide_header X-Robots-Tag;
 
uwsgi_pass unix:/run/uwsgi/owncloud.sock;
 
}
 
</nowiki>}}
 
   
  +
==== nextcloud.ini ====
それから ''uWSGI'' の設定ファイルを作成してください:
 
   
  +
{{Pkg|nextcloud}} パッケージには、適切な場所 {{ic|/etc/uwsgi/nextcloud.ini}} にサンプル構成ファイルがすでに含まれています。ほとんどの場合、このファイルを要件と設定に適合させる必要があります。 [https://gist.githubusercontent.com/wolegis/fc0c01882b694777a6565aa1d0a4da47 バージョンに多くのコメント付き変更が含まれている] を見つけます (パッケージのバージョンと比較) これは、個人使用 (つまり、中程度の負荷) を目的とした、シンプルな Nextcloud インストールを前提としています。
{{hc|/etc/uwsgi/owncloud.ini|<nowiki>
 
[uwsgi]
 
; load the required plugins
 
plugins = php
 
; force the sapi name to 'apache', this will enable the opcode cache
 
php-sapi-name = apache
 
   
  +
一般に、有効な拡張機能、拡張機能固有の設定、および {{ic|open_basedir}} を {{ic|/etc/webapps/nextcloud/php.ini}} と同期させます (opcache を除く)
; set master process name and socket
 
; '%n' refers to the name of this configuration file without extension
 
procname-master = uwsgi %n
 
master = true
 
socket = /run/uwsgi/%n.sock
 
   
  +
{{Tip|{{ic|/etc/uwsgi/nextcloud.ini}} への変更は広範囲になる可能性があります。パッケージ {{Pkg|nextcloud}} によって提供される元のファイルに変更があった場合に備えて、パッケージの更新中に {{ic|nextcloud.ini.pacnew}} という名前のファイルが作成されます。この後者のファイルの変更をより適切に追跡し、それらを {{ic|/etc/uwsgi/nextcloud.ini}} に適用するには、次のアプローチを適用できます。:
; drop privileges
 
uid = http
 
gid = http
 
umask = 027
 
   
  +
* パッケージによって提供されるファイルのコピーを (パッケージから抽出するなどして) 作成し、それを {{ic|nextcloud.ini.package}} として保存します。
; run with at least 1 process but increase up to 4 when needed
 
  +
* パッケージ {{Pkg|nextcloud}} の更新により {{ic|nextcloud.ini.pacnew}} が生成される場合は、{{ic|diff nextcloud.ini.package nextcloud.ini.pacnew}} で変更を識別できます。
processes = 4
 
  +
* ご使用のバージョンに適しているかどうかに応じて、変更を {{ic|nextcloud.ini}} に選択的に適用します。
cheaper = 1
 
  +
}}
   
  +
==== uWSGI サービス ====
; reload whenever this config file changes
 
; %p is the full path of the current config file
 
touch-reload = %p
 
   
  +
{{pkg|uwsgi}} パッケージは、テンプレートユニットファイル ({{ic|uwsgi@.service}}) を提供します。インスタンス ID (ここでは ''nextcloud'') は、適切な構成ファイルを選択するために使用されます。 {{ic|uwsgi@nextcloud.service}} を [[有効化]] および [[起動]] します。
; disable uWSGI request logging
 
;disable-logging = true
 
   
  +
このように開始されたサービスが複数 (例: 2 つ) あり、これがリソースの無駄であると感じた場合は、[https://uwsgi-docs.readthedocs.io/en/latest/emperor.html emperor モード] の使用を検討してください。
; enforce a DOCUMENT_ROOT
 
php-docroot = /usr/share/webapps/%n
 
; limit allowed extensions
 
php-allowed-ext = .php
 
; and search for index.php if required
 
php-index = index.php
 
   
  +
=== FPM ===
; set php configuration for this instance of php, no need to edit global php.ini
 
php-set = date.timezone=Etc/UTC
 
;php-set = open_basedir=/tmp/:/usr/share/webapps/owncloud:/etc/webapps/owncloud:/dev/urandom
 
php-set = expose_php=false
 
; avoid security risk of leaving sessions in world-readable /tmp
 
php-set = session.save_path=/usr/share/webapps/owncloud/data
 
   
  +
アプリケーションサーバーとして ''FPM'' を使用する場合は、{{pkg|php-legacy-fpm}} を依存パッケージ ({{ic|--asdeps}}) としてインストールしてください。
; port of php directives set upstream in /usr/share/webapps/owncloud/.user.ini for use with PHP-FPM
 
php-set = upload_max_filesize=513M
 
php-set = post_max_size=513M
 
php-set = memory_limit=512M
 
php-set = output_buffering=off
 
   
  +
構成は、''FPM'' によって提供されるすべてのアプリケーションに関連する {{ic|php.ini}} のコピーと、アプリケーション (ここでは Nextcloud) に固有のいわゆるプールファイルで構成されます。最後に、systemd サービスファイルを調整する必要があります。
; load all extensions only in this instance of php, no need to edit global php.ini
 
;; required core modules
 
php-set = extension=gd.so
 
php-set = extension=iconv.so
 
;php-set = extension=zip.so # enabled by default in global php.ini
 
   
  +
==== php-fpm.ini ====
;; database connectors
 
;; uncomment your selected driver
 
;php-set = extension=pdo_sqlite.so
 
;php-set = extension=pdo_mysql.so
 
;php-set = extension=pdo_pgsql.so
 
   
  +
前に述べたように、この記事では、{{ic|/etc/php-legacy/php.ini}} にある PHP の中央設定の変更を回避しています。代わりに、''FPM'' 固有のコピーを作成します。
;; recommended extensions
 
;php-set = extension=curl.so # enabled by default in global php.ini
 
php-set = extension=bz2.so
 
php-set = extension=intl.so
 
php-set = extension=mcrypt.so
 
   
  +
{{bc|
;; required for specific apps
 
  +
# cp /etc/php-legacy/php.ini /etc/php-legacy/php-fpm.ini
;php-set = extension=ldap.so # for LDAP integration
 
  +
}}
;php-set = extension=ftp.so # for FTP storage / external user authentication
 
;php-set = extension=imap.so # for external user authentication, requires php-imap
 
   
  +
所有者であり、root のみが書き込み可能であることを確認してください ({{ic|-rw-r--r-- 1 root root ... php-fpm.ini}}) 演算キャッシュを有効にします。つまり、行のコメントを解除します。
;; recommended for specific apps
 
;php-set = extension=exif.so # for image rotation in pictures app, requires exiv2
 
;php-set = extension=gmp.so # for SFTP storage
 
   
  +
{{hc|/etc/php-legacy/php-fpm.ini|2=;zend_extension=opcache}}
;; for preview generation
 
;; provided by packages in AUR
 
; php-set = extension=imagick.so
 
   
  +
そして、次のパラメータを既存の行 {{ic|[opcache]}} の下に配置します。
; opcache
 
php-set = zend_extension=opcache.so
 
   
  +
{{hc|/etc/php-legacy/php-fpm.ini|2=
; user cache
 
  +
opcache.enable = 1
; provided by php-acpu, to be enabled **either** here **or** in /etc/php/conf.d/apcu.ini
 
  +
opcache.interned_strings_buffer = 8
php-set = extension=apcu.so
 
  +
opcache.max_accelerated_files = 10000
; per https://github.com/krakjoe/apcu/blob/simplify/INSTALL
 
  +
opcache.memory_consumption = 128
php-set = apc.ttl=7200
 
  +
opcache.save_comments = 1
php-set = apc.enable_cli=1
 
  +
opcache.revalidate_freq = 1
  +
}}
   
  +
{{Warning|{{ic|php_value[...]}} および {{ic|php_flag[...]}} を使用してこれらの設定をプールファイルに入れようとしないでください。''FPM'' プロセスは、最初のリクエストで常にクラッシュします。}}
cron2 = minute=-15,unique=1 /usr/bin/php -f /usr/share/webapps/owncloud/cron.php 1>/dev/null
 
</nowiki>}}
 
   
  +
==== nextcloud.conf ====
{{Note|
 
* 必ず uWSGI 設定ファイルでタイムゾーンを設定して使用するデータベースコネクタをアンコメントしてください。
 
* PHP 7 から、[[PHP#設定|open_basedir]] ディレクトリは上流と同じように [https://www.archlinux.jp/news/php-70-packages-released/ デフォルトでは設定されなくなりました]。使用すると [https://github.com/owncloud/core/search?q&#61;open_basedir&type&#61;Issues&utf8&#61;%E2%9C%93 一部の機能が使えなくなる] 可能性があります。
 
* nextcloud を {{ic|/nextcloud}} サブディレクトリに配置する場合は {{ic|php-docroot &#61; /usr/share/webapps}} を使ってください。}}
 
   
  +
次に、''FPM'' 用のいわゆるプールファイルを作成する必要があります。これは、Nextcloud アプリケーション用の専用の ''FPM'' プロセスを生成する役割を果たす。ファイル {{ic|/etc/php-legacy/php-fpm.d/nextcloud.conf}} を作成します - これが [https://gist.githubusercontent.com/wolegis/0d9c83acd0c8bf83bcfb3983931bc364 機能バージョン] を開始点として使用できます。
{{Warning|[https://uwsgi-docs.readthedocs.org/en/latest/Cron.html uWSGI cron] によって設定される [https://doc.owncloud.org/server/9.0/admin_manual/configuration_server/background_jobs_configuration.html ownCloud のバックグラウンドジョブ] は {{ic|/etc/php/php.ini}} のグローバル設定を使用します。必要なモジュールなどのパラメータが有効にならず、[https://github.com/owncloud/core/issues/12678#issuecomment-66114448 様々な問題] が発生します。{{ic|/etc/php/php.ini}} を {{ic|/etc/uwsgi/cron-php.ini}} などにコピーして必要な設定 ({{ic|/etc/uwsgi/owncloud.ini}} のパラメータ) を行い、cron で ''php'' を実行する箇所に {{ic|-c /etc/uwsgi/cron-php.ini}} オプションを追加することで問題は解決します。}}
 
   
  +
もう一度、このプールファイルが root によって所有され、書き込み可能であることを確認してください (つまり、{{ic|-rw-r--r-- 1 root root ... nextcloud.conf}}) アクセスログが設定されているかどうかに応じて (上記のサンプル {{ic|nextcloud.conf}} の場合)、対応するディレクトリを作成する必要がある場合があります (ここでは {{ic|/var/log/php-fpm-legacy/access}) }) 好みに合わせて設定 (特に {{ic|pm...}}、{{ic|php_value[...]}}、および {{ic|php_flag[...]}}) を調整または追加します。{{ic|php_value[...]}} および {{ic|php_flag[..]}} の設定は、{{ic|/etc/webapps/nextcloud/php.ini}} の対応する設定と一致している必要があります。(ただし、{{ic|/etc/php-legacy/php-fpm.ini}} ではありません)
==== 有効化 ====
 
   
  +
{{ic|php_value[...]}} および {{ic|php_flag[...]}} によって行われた設定は、代わりに {{ic|php-fpm.ini}} で指定できます。ただし、{{ic|php-fpm.ini}} の設定は、''FPM'' によって提供されるすべてのアプリケーションに適用されることに注意してください。
[[uWSGI]] には設定ファイルをインスタンスの識別子として使ってアプリケーションを起動したり有効化できる[[Systemd#ユニットを使う|テンプレートユニット]]が入っています。例えば:
 
# systemctl start uwsgi@owncloud.socket
 
上のコマンドは {{ic|/etc/uwsgi/owncloud.ini}} 設定ファイルを参照して必要に応じて起動します。
 
 
ブート時にデフォルトで uwsgi サービスを有効化するには、次を実行:
 
# systemctl enable uwsgi@owncloud.socket
 
   
  +
{{Tip|パッケージ {{pkg|php-legacy-fpm}} には独自のプールファイル {{ic|www.conf}} が付属していますが、ここではほとんど役に立ちません。これを取り除く良い方法は、名前を {{ic|www.conf.package}} に変更し、コメント行 (セミコロンで始まる行) だけを含むファイル {{ic|www.conf}} を作成することです。このようにすると、{{ic|www.conf}} は何も行わなくなります。また、新しいバージョンの {{pkg|php-legacy-fpm}} のインストール中に上書きされることもありません。代わりに、ファイル {{ic|www.conf.pacnew}} が作成されます。これを {{ic|www.conf.package}} と比較して、{{ic|nextcloud.conf}} で再現する必要がある重要な変更がプール ファイルにないかどうかを確認できます。この手順の最後に、{{ic|www.conf.pacnew}} の名前を {{ic|www.conf.package}} に変更することを忘れないでください。}}
{{Note|[http://0pointer.de/blog/projects/socket-activation.html systemd のソケットアクティベーション] を利用することで、インスタンスへの接続がない間は無駄にリソースを消費しないようにしています。すぐに有効化したい場合は、{{ic|.socket}} という部分を削除してサービスを起動・有効化してください。}}
 
   
[[uWSGI#サービスの起動]]も参照。
+
==== Systemd サービス ====
   
  +
''FPM'' は systemd サービスとして実行されます。Nextcloud を実行できるようにするには、サービス構成を変更する必要があります。これは、[[ドロップインファイル]] を使用して実現するのが最適です。
=== ファイルシステムのパーティションの設定 ===
 
   
  +
{{hc|/etc/systemd/system/php-fpm-legacy.service.d/override.conf|2=
セキュリティを強化するために ownCloud ディレクトリのパーミッションはできるだけ制限的に設定することを推奨します。インストールを行った後、セットアップを開始する前に設定してください。HTTP ユーザーが {{ic|config/}}, {{ic|data/}}, {{ic|apps/}} ディレクトリの所有者となっていれば ownCloud を設定したりデータファイルを作成・修正・削除したり、ownCloud のウェブインターフェイスでアプリをインストールできます [https://docs.nextcloud.com/server/11/admin_manual/installation/installation_wizard.html#setting-strong-directory-permissions]。
 
  +
[Service]
  +
ExecStart=
  +
ExecStart=/usr/bin/php-fpm-legacy --nodaemonize --fpm-config /etc/php-legacy/php-fpm.conf --php-ini /etc/php-legacy/php-fpm.ini
  +
ReadWritePaths=/var/lib/nextcloud
  +
ReadWritePaths=/etc/webapps/nextcloud/config
  +
}}
   
  +
* {{ic|ExecStart}} 行を、前のセクションで説明した {{ic|php-fpm.ini}} を使用する起動コマンドに置き換えます。
{{Note|Nextcloud のパッケージには同じようなスクリプトである {{ic|/usr/bin/set-nc-perms}} が含まれていますが、ownCloud のパッケージには含まれていません。}}
 
  +
* ディレクトリ {{ic|/var/lib/nextcloud}} および {{ic|/etc/webapps/nextcloud/config}} (および以下のすべて) が書き込み可能になります。 元のサービス定義の {{ic|1=ProtectSystem=full}} により、{{ic|/usr}}、{{ic|/boot}}、および {{ic|/etc}} が読み取り専用でマウントされます。''FPM'' プロセスの場合。
   
  +
''php-fpm-legacy'' サービスを [[有効化]] および [[起動]] することを忘れないでください。
{{hc|oc-perms|2=<nowiki>
 
#!/bin/bash
 
ocpath='/usr/share/webapps/nextcloud'
 
htuser='http'
 
htgroup='http'
 
rootuser='root'
 
   
  +
==== /etc を整理整頓する ====
printf "Creating possible missing Directories\n"
 
mkdir -p $ocpath/data
 
mkdir -p $ocpath/assets
 
   
  +
Nextcloud パッケージは、uWSGI 設定ファイル {{ic|/etc/uwsgi/nextcloud.ini}} を無条件に作成します。もちろん、''uWSGI'' の代わりに ''FPM'' を実行する場合には役に立ちません (そして、何の害もありません) それでも削除したい場合は、次の行を {{ic|/etc/pacman.conf}} に追加してください。
printf "chmod Files and Directories\n"
 
find ${ocpath}/ -type f -print0 | xargs -0 chmod 0640
 
find ${ocpath}/ -type d -print0 | xargs -0 chmod 0750
 
   
  +
{{hc|/etc/pacman.conf|2=
printf "chown Directories\n"
 
  +
# uWSGI configuration that comes with Nextcloud is not needed
chown -R ${rootuser}:${htgroup} ${ocpath}/
 
  +
NoExtract = etc/uwsgi/nextcloud.ini
chown -R ${htuser}:${htgroup} ${ocpath}/apps/
 
  +
}}
chown -R ${htuser}:${htgroup} ${ocpath}/config/
 
chown -R ${htuser}:${htgroup} ${ocpath}/data/
 
chown -R ${htuser}:${htgroup} ${ocpath}/themes/
 
chown -R ${htuser}:${htgroup} ${ocpath}/assets/
 
   
  +
== Web サーバー ==
chmod +x ${ocpath}/occ
 
   
  +
選択できる Web サーバーは豊富にあります。最終的にどのオプションを選択する場合でも、Nextcloud アプリケーションは独自のシステムユーザー ''nextcloud'' で実行する必要があることに留意する必要があります。したがって、リクエストを上記のアプリケーションサーバーのいずれかに転送する必要があります。
printf "chmod/chown .htaccess\n"
 
if [ -f ${ocpath}/.htaccess ]
 
then
 
chmod 0644 ${ocpath}/.htaccess
 
chown ${rootuser}:${htgroup} ${ocpath}/.htaccess
 
fi
 
if [ -f ${ocpath}/data/.htaccess ]
 
then
 
chmod 0644 ${ocpath}/data/.htaccess
 
chown ${rootuser}:${htgroup} ${ocpath}/data/.htaccess
 
fi
 
</nowiki>}}
 
   
  +
=== nginx ===
標準的なインストール場所からファイルパスをカスタマイズしている場合、上記のスクリプトも修正する必要があります。
 
   
  +
''nginx'' の構成は、この記事の範囲をはるかに超えています。詳細については、関連する [[nginx|article]] を参照してください。詳細な構成については、[https://docs.nextcloud.com/server/latest/admin_manual/installation/nginx.html Nextcloud のドキュメント] も参照してください。ほとんどの場合、これを適切な名前のファイル (ここでは例として {{ic|cloud.mysite.com.conf}}) を {{ic|/etc/nginx/sites-available}} の下にコピーする必要があります。対応するシンボリックリンクを {{ic|/etc/nginx/sites-enabled}} に作成します。
=== fail2ban によるハッキングからの防護 ===
 
[[fail2ban]] のセットアップが強く推奨されています。インストールしたら、以下のファイルを作成してください:
 
   
  +
上にリンクされている Nextcloud ドキュメントのサンプル ''nginx'' 構成を使用する場合は、ルートディレクトリを次のように変更する必要があります。
{{hc|/etc/fail2ban/filter.d/owncloud.conf|<nowiki>
 
[Definition]
 
failregex={"reqId":".*","remoteAddr":".*","app":"core","message":"Login failed: '.*' \(Remote IP: '<HOST>'\)","level":2,"time":".*"}
 
   
  +
{{hc|''cloud.mysite.com''.conf| root /usr/share/webapps/nextcloud;}}
ignoreregex =
 
</nowiki>}}
 
   
  +
ブロック {{ic|upstream php-handler { ... } }} を使用する必要はありません。PHP URI を含むリクエストのアプリケーション サーバーへの転送を処理する {{ic|location}} ブロックに {{ic|fastcgi_pass unix:/run/php-fpm-legacy/nextcloud.sock;}} を指定するだけです。''FPM'' の代わりに ''uWSGI'' を使用する場合は、この {{ic|location}} ブロックを次のように置き換えます。
{{hc|/etc/fail2ban/jail.local|<nowiki>
 
[owncloud]
 
enabled = true
 
filter = owncloud
 
port = http,https
 
logpath = /usr/share/webapps/owncloud/data/owncloud.log
 
# optionally whitelist internal LAN IP addresses
 
ignoreip = 192.168.1.1/24
 
</nowiki>}}
 
   
  +
{{hc|''cloud.mysite.com''.conf|
設定後 {{ic|fail2ban}} サービスを[[systemd#ユニットを使う|再起動]]してください。以下を実行することで設定をテストできます:
 
  +
location ~ \.php(?:${{!}}/) {
# fail2ban-regex /usr/share/webapps/owncloud/data/owncloud.log /etc/fail2ban/filter.d/owncloud.conf -v
 
  +
include uwsgi_params;
  +
uwsgi_modifier1 14;
  +
# Avoid duplicate headers confusing OC checks
  +
uwsgi_hide_header X-Frame-Options;
  +
uwsgi_hide_header X-XSS-Protection;
  +
uwsgi_hide_header X-Content-Type-Options;
  +
uwsgi_hide_header X-Robots-Tag;
  +
uwsgi_hide_header X-Download-Options;
  +
uwsgi_hide_header X-Permitted-Cross-Domain-Policies;
  +
uwsgi_pass unix:/run/uwsgi/nextcloud.sock;
  +
}
  +
}}
   
  +
適応する必要がある可能性のあるもの (すべてではありません):
== Arch パッケージのアップデートに伴うメンテナンス ==
 
   
  +
* サーバー名 ({{ic|server_name}} 句2倍)、つまり Nextcloud インストールが到達可能な URL のサーバー部分です。
Arch の nextcloud パッケージを pacman で更新した場合、ウェブインターフェイスから手動で関連ファイルのアップデートを実行する必要があります。もしくは、シェルから ''http'' ユーザーとして {{ic|/usr/share/webapps/nextcloud/occ upgrade}} を実行することでもアップデートできます:
 
  +
* SSL/TLS に使用する証明書とキーの名前。
# sudo -u http /usr/share/webapps/nextcloud/occ upgrade
 
  +
* アクセスログをどこに書き込むか。
  +
* [[Certbot]] (または他の ACME クライアント) がドメイン検証チャレンジを置く場所。ここでは、{{ic|try_files}} の代わりに {{ic|alias}} を使用する方が適切でしょう。
  +
* Nextcloud のインストール先へのパス。(URL のサーバー名&amp;ポートセクションの右側の部分)
  +
* 使用しているアプリケーションサーバー (uWSGI または FPM)、つまり PHP コードをトリガーする必要があるリクエストを nginx がどこにどのように渡すか。(上記参照)
  +
* [[Wikipedia:OCSP_stapling|OCSP_stapling]] を設定します。
   
  +
nginx は FastCGI と uwsgi の両方のプロトコルをネイティブにサポートしているため、追加のモジュールをインストールする必要はありません。
{{Note|上記のアップデートを行わないとモバイルアプリから接続できなくなります。}}
 
  +
  +
=== Apache HTTP server ===
  +
  +
[[Apache HTTP Server]] に関する記事には役立つ情報がたくさんあります。Nextcloud のドキュメントには [https://docs.nextcloud.com/server/latest/admin_manual/installation/source_installation.html#apache-web-server-configuration サンプル設定] が含まれており、{{ic|/usr/share/doc/nextcloud/apache.example.conf}} にもあります。どちらも暗黙的に ''mod_php'' に依存していますが、これはもう使用できません。 ''mod_proxy_fcgi'' または ''mod_proxy_uwsgi'' を適用する必要があります。
  +
  +
[[Apache HTTP Server#Using php-fpm and mod_proxy_fcgi|Apache と FPM を統合する]] 方法に関する情報は、この Wiki にあります。uWSGI のドキュメントには、[https://uwsgi-docs.readthedocs.io/en/latest/Apache.html uWSGI および mod_proxy_uwsgi を使用して Apache と PHP を統合する] 方法に関する情報が記載されています。Apache パッケージには ''mod_proxy_fcgi'' と ''mod_proxy_uwsgi'' の両方のモジュールが付属していることに注意してください。必要に応じてロードする必要があります。
  +
  +
Nextcloud を実行するには、次の Apache モジュールが必要です。
  +
  +
{{hc|/etc/httpd/conf/httpd.conf|
  +
# these are already loaded in a standard Apache installation
  +
LoadModule headers_module modules/mod_headers.so
  +
LoadModule env_module modules/mod_env.so
  +
LoadModule dir_module modules/mod_dir.so
  +
LoadModule mime_module modules/mod_mime.so
  +
LoadModule setenvif_module modules/mod_setenvif.so
  +
  +
# these need to be uncommented explicitely
  +
LoadModule rewrite_module modules/mod_rewrite.so
  +
LoadModule ssl_module modules/mod_ssl.so
  +
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
  +
LoadModule proxy_module modules/mod_proxy.so
  +
  +
# either this one in case you use FPM
  +
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
  +
# or this one in case you opt for uWSGI
  +
LoadModule proxy_uwsgi_module modules/mod_proxy_uwsgi.so
  +
}}
  +
  +
また、TLS 設定パラメータを取り込むには、次のディレクティブのコメントを解除します。
  +
  +
{{hc|/etc/httpd/conf/httpd.conf|
  +
Include conf/extra/httpd-ssl.conf}}
  +
  +
TLS 設定を最適化する方法の詳細については、[https://ssl-config.mozilla.org/#server=apache&config=intermediate Mozilla の SSL configurator] を参照してください。
  +
  +
Nextcloud インストールへのアクセス方法に応じて、次の 2 つのサンプル設定ファイルを参照してください。
  +
  +
* Nextcloud のインストールが専用ホスト名でアクセスされる場合 (例:{{ic|<nowiki>https://cloud.mysite.com/</nowiki>}})、{{ic|/etc/httpd/conf/extra/httpd-vhosts.conf}} に [https://gist.github.com/wolegis/1659786ded9128935f638ee2bf228906 これ] を記述してください。
  +
  +
* Nextcloud が Web サイトのサブフォルダ (例:{{ic|<nowiki>https://www.mysite.com/nextcloud/</nowiki>}}) にインストールされている場合は、{{ic|/etc/httpd/conf/httpd.conf}} に [https://gist.github.com/wolegis/002e198c2db7980a84fd8d160c2bdb9a これ] を記述してください。
  +
  +
もちろん、これらのサンプル設定ファイルを実際の設定に適合させる必要があります。''uWSGI'' を使用する場合は、{{ic|SetHandler}} ディレクティブを {{ic|SetHandler "proxy:unix:/run/uwsgi/nextcloud.sock{{!}}uwsgi://nextcloud/"}} に置き換えます。
  +
  +
Nextcloud パッケージには、多くの書き換えやヘッダー処理がすでに行われている {{ic|.htaccess}} が付属しています。{{ic|occ maintenance:update:htaccess}} を実行して、このファイルを調整します。これには、{{ic|/etc/webapps/nextcloud/config/config.php}} のパラメータ {{ic|htaccess.RewriteBase}} が重要です。
  +
  +
== バックグラウンドジョブ ==
  +
  +
Nextcloud では、特定のタスクをスケジュールに従って実行する必要があります。詳細については、Nextcloud の [https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/background_jobs_configuration.html ドキュメント] を参照してください。これらのバックグラウンドジョブを設定する最も簡単な (そして最も信頼性の高い) 方法は、{{Pkg|nextcloud}} によってすでにインストールされている systemd サービスとタイマーユニットを使用することです。ジョブが正しい PHP ini ファイル (グローバルの {{ic|php.ini}} ではなく) を使用するように、サービス ユニットを微調整する必要があります。[[ドロップインファイル]] を作成し、以下を追加します。
  +
  +
{{hc|/etc/systemd/system/nextcloud-cron.service.d/override.conf|2=
  +
[Service]
  +
ExecStart=
  +
ExecStart=/usr/bin/php-legacy -c /etc/webapps/nextcloud/php.ini -f /usr/share/webapps/nextcloud/cron.php
  +
}}
  +
  +
その後 {{ic|nextcloud-cron.timer}} を [[有効化]] して [[起動]] (サービスではありません)
  +
  +
{{Warning|{{AUR|nextcloud-systemd-timers}} をインストールして使用しないでください。時代遅れで、メンテナンスされていません。4 つのスケジュールされたジョブをインストールします。
  +
  +
1. ''nextcloud-preview-pre-generate'' は {{ic|occreview:pre-generate}} を実行します。このコマンドは、{{AUR|nextcloud-app-previewgenerator}} がインストールされている場合にのみ存在します。
  +
  +
2. ''nextcloud-preview-generate-all'' は {{ic|occreview:generate-all}} を実行します。このコマンドも、{{AUR|nextcloud-app-previewgenerator}} がインストールされている場合にのみ存在します。さらに、これは [https://github.com/nextcloud/previewgenerator#how-to-use-the-app はスケジュールに基づいて実行されることを意図したものではありません]
  +
  +
3. ''nextcloud-files-scan-all'' は {{ic|occ files:scan --all}} を実行します。これは標準のバックグラウンドジョブですでにカバーされています。テーブル {{ic|oc_jobs}} を見て、{{ic|1=class = 'OCA\Files\BackgroundJob\ScanFiles'}} のエントリを見つけてください。
  +
  +
4. ''nextcloud-app-update-all'' は {{ic|occ app:update --all}} を実行します。Nextcloud アプリの自動更新は、完全に危険ではないにしても、少なくとも疑わしいです。アプリの新しいバージョンは、過去にもすでに問題を引き起こしています。バックアップを行い運用環境でのアプリの更新は監視する必要があります。}}
  +
  +
== In-memory キャッシュ ==
  +
  +
Nextcloud の [https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/caching_configuration.html ドキュメント] では、パフォーマンスを大幅に向上させるために、ある種のメモリ内オブジェクト キャッシュを適用することを推奨しています。
  +
  +
{{Note|[https://github.com/nextcloud/notify_push プッシュ通知] (サーバーによる通知によってクライアントのポーリングを置き換え、同期遅延を大幅に短縮する Nextcloud サービス) は ''Redis'' に依存していることに注意してください。}}
   
 
== 同期 ==
 
== 同期 ==
346行目: 457行目:
 
=== デスクトップ ===
 
=== デスクトップ ===
   
公式クライアントは {{Pkg|owncloud-client}} または {{aur|nextcloud-client}} パッケージでインストールできます。
+
公式クライアントは{{Pkg|nextcloud-client}} パッケージでインストールできます。代替バージョンは [[AUR]]: {{AUR|nextcloud-client-git}} で入手できます。Nextcloud での {{Pkg|owncloud-client}} の使用はサポートされていないことに注意してください
  +
  +
デスクトップクライアントは基本的に、デスクトップコンピューターの 1 つ以上のディレクトリを Nextcloud のファイル サービス内の対応するフォルダーと同期します。デスクトップのファイルマネージャー (KDE Plasma の Dolphin、Gnome の Nautilus) とうまく統合され、同期と共有ステータスを表すオーバーレイが表示されます。各ファイルのコンテキストメニューには、このファイルの共有とパブリックまたは内部共有リンクの取得を管理するための追加エントリ ''Nextcloud'' が表示されます。Nextcloud のドキュメントには、デスクトップクライアントのみに関する [https://docs.nextcloud.com/desktop/latest/ volume] があります。
  +
  +
統合が説明どおりに機能しない場合は、パッケージ {{Pkg|nextcloud-client}} ({{ic|pacman -Qi nextcloud-client}}) のオプションの依存関係を調べてください。たとえば、Nautilus (Gnome) には {{Pkg|python-nautilus}} が必要です。{{ic|pacman -S --asdeps}} を使用して依存パッケージとしてインストールします。
  +
  +
=== Thunderbird ===
  +
  +
バージョン 91 以降 [[Thunderbird]] は、自動検出を使用しても CalDAV と CardDAV を完全にサポートしています (つまり、カレンダーやアドレス帳にアクセスするために長い URL を指定する必要はありません) Nextcloud の [https://docs.nextcloud.com/server/latest/user_manual/en/pim/sync_thunderbird.html ドキュメント] は、この点に関して最新ではありません。
   
 
==== カレンダー ====
 
==== カレンダー ====
   
Mozilla [[Thunderbird]] の [[Thunderbird#Lightning_-_カレンダー|Lightning カレンダー]]を使って ''ownCloud'' のカレンダーにアクセスするには以下の URL を使います:
+
Mozilla [[Thunderbird]] の [[Thunderbird#拡張機能|Lightning カレンダー]]を使って ''Nextcloud'' のカレンダーにアクセスするには以下の URL を使います:
   
 
<nowiki>https://ADDRESS/remote.php/caldav/calendars/USERNAME/CALENDARNAME</nowiki>
 
<nowiki>https://ADDRESS/remote.php/caldav/calendars/USERNAME/CALENDARNAME</nowiki>
   
Kontact や [[Evolution]] など CalDAV に対応するプログラムを使って ''ownCloud'' のカレンダーにアクセスするには、以下の URL を使います:
+
Kontact や [[Evolution]] など CalDAV に対応するプログラムを使って ''Nextcloud'' のカレンダーにアクセスするには、以下の URL を使います:
   
 
<nowiki>https://ADDRESS/remote.php/caldav</nowiki>
 
<nowiki>https://ADDRESS/remote.php/caldav</nowiki>
   
詳しくは [http://doc.owncloud.org/server/7.0/user_manual/pim/calendar.html#synchronizing-calendars-using-caldav 公式ドキュメント] を見てください。
+
詳しくは [https://docs.nextcloud.com/server/13/user_manual/pim/index.html 公式ドキュメント] を見てください。
   
 
==== 連絡先 ====
 
==== 連絡先 ====
   
[[Thunderbird]] と連絡先を同期するには、[http://www.sogo.nu/downloads/frontends.html SOGo フロントエンド] と [[Thunderbird#Lightning_-_カレンダー|Lightning エクステンション]]をインストールして公式ドキュメントの [http://doc.owncloud.org/server/7.0/user_manual/pim/sync_thunderbird.html 手順] に従う必要があります。
+
[[Thunderbird]] と連絡先を同期するには、[[SOGo|SOGo フロントエンド]]と [[Thunderbird#拡張機能|Lightning エクステンション]]をインストールして公式ドキュメントの [https://docs.nextcloud.com/server/13/user_manual/pim/sync_thunderbird.html 手順] に従う必要があります。
   
==== davfs2 でファイルをマウントする ====
+
=== davfs2 でファイルをマウントする ===
   
ownCloud を永続的にマウントしたい場合、まず {{Pkg|davfs2}} をインストールしてください ([[Davfs]] に説明があります)。
+
ownCloud を永続的にマウントしたい場合、まず {{Pkg|davfs2}} をインストールしてください ([[Davfs2]] に説明があります)。
   
 
もし ownCloud が {{ic|https://own.example.com}} にある場合、WebDAV の URL は {{ic|https://own.example.com/remote.php/webdav}} になります (ownCloud 6.0 現在)。
 
もし ownCloud が {{ic|https://own.example.com}} にある場合、WebDAV の URL は {{ic|https://own.example.com/remote.php/webdav}} になります (ownCloud 6.0 現在)。
378行目: 497行目:
 
{{hc|/etc/fstab|https://own.example.com/remote.php/webdav /path/to/mount davfs rw,user,noauto 0 0}}
 
{{hc|/etc/fstab|https://own.example.com/remote.php/webdav /path/to/mount davfs rw,user,noauto 0 0}}
   
{{Tip|自動でマウントしたい場合、[[Davfs#通常ユーザーでマウント]]で説明されているようにファイルにユーザー名 (と必要であればパスワード) を保存できます。}}
+
{{Tip|自動でマウントしたい場合、[[Davfs2#接続情報の保存]]で説明されているようにファイルにユーザー名 (と必要であればパスワード) を保存できます。}}
   
{{Note|ディレクトリは作成・コピーできるのに、ファイルの作成やコピーができない場合、[[Davfs#ファイルの作成やコピーができない]]を見てください。}}
+
{{Note|ディレクトリは作成・コピーできるのに、ファイルの作成やコピーができない場合、[[Davfs2#ファイルの作成やコピーができない]]を見てください。}}
   
  +
=== GNOME Files (Nautilus) でファイルをマウントする ===
=== Android ===
 
   
  +
Nautilus ('+ Other Locations') では WebDAV プロトコルを使ってファイルに直接アクセスできます。Nextcloud のインストール Web GUI で表示されるリンクを使ってください (通常は {{ic|<nowiki>https://cloud.mysite.com/remote.php/webdav/</nowiki>}}) ただしプロトコルの名前は {{ic|https}} から {{ic|davs}} に置き換えてください。Nautilus は接続時にユーザー名とパスワードを要求します。
小額で使うことができる公式 Android アプリが [https://play.google.com/store/apps/details?id=at.bitfire.davdroid Play ストア] にあり、無料で使えるアプリが [https://f-droid.org/app/at.bitfire.davdroid F-Droid] にあります。
 
   
  +
=== Android ===
連絡先とカレンダーの同期を有効にするには:
 
* Android 4 以上を使っている場合:
 
*# [https://davdroid.bitfire.at/] をダウンロードしてください ([https://play.google.com/store/apps/details?id=at.bitfire.davdroid Play ストア], [https://f-droid.org/app/at.bitfire.davdroid F-Droid])。
 
*# {{ic|httpd.conf}} で mod_rewrite.so を有効化してください。
 
*# ''Account'' 設定で新しい DAVdroid アカウントを作成して、"短い"サーバーアドレスとログイン名/パスワードを指定してください。例: {{ic|<nowiki>https://cloud.example.com</nowiki>}} (ウェブサーバーでリダイレクトを正しく設定していれば {{ic|<nowiki>/remote.php/{carddav,webdav}</nowiki>}} の部分は必要ありません。''DAVdroid'' は適切な URL を認識するはずです)。
 
:古いバージョンが対象ですが、[http://www.slsmk.com/sync-android-contacts-calendar-and-files-to-owncloud/ こちらの記事] には有用な情報が記載されています。
 
   
  +
Nextcloud の公式アプリは [https://play.google.com/store/apps/details?id=com.nextcloud.client Google Play] や [https://f-droid.org/packages/com.nextcloud.client/ F-Droid] からダウンロードできます。
* 4.0 以下のバージョンの Android を使っていて、フリーのソフトウェアを使いたい場合、カレンダーと連絡先の同期には [https://f-droid.org/repository/browse/?fdfilter=caldav&fdid=com.morphoss.acal aCal] を、カレンダーだけの同期には CalDAV Sync Adapter ([https://f-droid.org/repository/browse/?fdfilter=caldav&fdid=org.gege.caldavsyncadapter F-Droid]) を試して下さい。フリーでないソフトウェアを使う気があるのであれば、[http://dmfs.org/ CardDAV-Sync と CalDAV-Sync] の使用が [http://doc.owncloud.org/server/7.0/user_manual/pim/contacts.html#synchronizing-with-android 推奨] されています。
 
   
  +
連絡先やカレンダーの同期を有効化するには ([[Android]] 4 以上):
=== SABnzbd ===
 
  +
# [https://davdroid.bitfire.at/ DAVdroid] ([https://play.google.com/store/apps/details?id=at.bitfire.davdroid Play Store], [https://f-droid.org/app/at.bitfire.davdroid F-Droid]) をダウンロード。
  +
# ''アカウント'' 設定で新しい DAVdroid アカウントを作成し、サーバー URL (例: {{ic|<nowiki>https://cloud.mysite.com</nowiki>}}) とログイン/パスワードのペアを指定します。
   
  +
{{Note|上記のセクション [[Nextcloud#Web サーバー| Web サーバー]] ''DAVdroid'' は適切な URL を自動的に見つけます。}}
[[SABnzbd]] を使う場合、{{ic|sabnzbd.ini}} ファイルに以下を設定すると良いでしょう:
 
folder_rename 0
 
というのは ownCloud はアップロードされたファイルを速攻でスキャンするからです。展開された接頭辞などを SABnzbd が削除することを予防します。
 
   
== Tips and tricks ==
+
=== iOS ===
   
  +
[https://itunes.apple.com/us/app/nextcloud/id1125420102 App Store] から Nextcloud の公式アプリをダウンロードしてください。
=== サブディレクトリで ownCloud を実行 ===
 
   
  +
== ヒントとテクニック ==
{{ic|httpd.conf}} から読み込まれるデフォルトの {{ic|owncloud.conf}} では、ownCloud はポート 80 と localhost ドメインを使用します。
 
   
  +
=== "occ" コマンドラインツールの使用 ===
サブディレクトリで ownCloud を使いたい場合、{{ic|/etc/httpd/conf/extra/owncloud.conf}} を編集して {{ic|<nowiki><VirtualHost *:80> ... </VirtualHost></nowiki>}} という部分をコメントアウトしてください。
 
   
  +
サーバー管理に役立つツールは {{ic|occ}} です Nextcloud のドキュメント [https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/occ_command.html の詳細] を参照してください。{{ic|occ}} を使用すると、ユーザーの管理やアプリの構成など、多くの一般的なサーバー操作を実行できます。
uwsgi で owncloud を使用する場合、以下の nginx 設定が使えます:
 
{{hc|head=/etc/nginx/conf.d/owncloud.conf|output=<nowiki>
 
location = /.well-known/carddav {
 
return 301 $scheme://$host/owncloud/remote.php/dav;
 
}
 
   
  +
元の {{ic|/usr/share/webapps/nextcloud/occ}} の便利なラッパーは、デフォルトユーザー (''nextcloud'') として自動的に実行される {{ic|/usr/bin/occ}} で提供されます。)、デフォルトの PHP 実行可能ファイルと PHP 設定ファイルを使用します。環境変数 {{ic|NEXTCLOUD_USER}}、{{ic|NEXTCLOUD_PHP}}、および {{ic|NEXTCLOUD_PHP_CONFIG}} を使用して、デフォルト以外のユーザー、PHP 実行可能ファイル、および PHP 設定ファイルを (それぞれ) 指定できます。 特に後者 ({{ic|NEXTCLOUD_PHP_CONFIG}} を使用) は、セクション [[Nextcloud#設定|設定]] および [[Nextcloud#Application サーバー|Application サーバー]] で説明されている方法で Nextcloud がセットアップされた場合、つまり、 Nextcloud に固有の PHP 設定。この場合、{{ic|1=export NEXTCLOUD_PHP_CONFIG=/etc/webapps/nextcloud/php.ini}} を {{ic|.bashrc}} に追加します。
location = /.well-known/caldav {
 
return 301 $scheme://$host/owncloud/remote.php/dav;
 
}
 
   
  +
推奨パッケージ {{Pkg|php-legacy}} の代わりにパッケージ {{Pkg|php}} を使用する場合は、{{ic|NEXTCLOUD_PHP}} も設定する必要があります。つまり、{{ic|1=export NEXTCLOUD_PHP=/usr/ bin/php}}
location /.well-known/acme-challenge { }
 
   
  +
{{Warning|キャッシュに {{pkg|php-apcu}} を使用する場合は、必ず {{ic|/etc/webapps/nextcloud/php.ini}} で {{ic|1= apc.enable_cli=1}} を設定してください。そうしないと、{{ic|occ}} コマンドは、APCu が適切に設定されていないというエラーを表示します。}}
location ^~ /owncloud {
 
   
  +
=== Pacman フック ===
root /usr/share/webapps;
 
   
  +
{{Pkg|nextcloud}} パッケージには、パッケージの更新後に Nextcloud データベースを自動的にアップグレードする [[pacman フック]] が付属しています。{{ic|/usr/share/doc/nextcloud/nextcloud.hook}} をご覧ください。
# set max upload size
 
client_max_body_size 512M;
 
fastcgi_buffers 64 4K;
 
   
  +
残念ながら、このフックは {{ic|occ upgrade}} の実行時にグローバルの {{ic|php.ini}} を無条件に使用します。つまり、前述したように環境変数 {{ic|NEXTCLOUD_PHP_CONFIG}} の値は考慮されません。上記の [[Nextcloud#"occ" コマンドラインツールの使用|"occ" コマンドラインツールの使用]] で説明しています。
# Disable gzip to avoid the removal of the ETag header
 
gzip off;
 
   
  +
考えられる回避策として、提供されたフックファイルのコピーを適切な場所に作成します。
# Uncomment if your server is build with the ngx_pagespeed module
 
# This module is currently not supported.
 
#pagespeed off;
 
   
  +
{{bc|
location /owncloud {
 
  +
# mkdir -vp /etc/pacman.d/hooks
rewrite ^ /owncloud/index.php$uri;
 
  +
# cp -a /usr/share/doc/nextcloud/nextcloud.hook /etc/pacman.d/hooks/10-nextcloud.hook
}
 
  +
}}
   
  +
{{ic|Exec}} で始まる行を次のように変更します。
location ~ ^/owncloud/(?:build|tests|config|lib|3rdparty|templates|data)/ {
 
deny all;
 
}
 
   
  +
{{hc|1=/etc/pacman.d/hooks/10-nextcloud.hook|2=
location ~ ^/owncloud/(?:\.|autotest|occ|issue|indie|db_|console) {
 
  +
Exec = /usr/bin/runuser -u nextcloud -- /usr/bin/php-legacy --php-ini /etc/webapps/nextcloud/php.ini /usr/share/webapps/nextcloud/occ upgrade
deny all;
 
}
+
}}
   
  +
=== Nextcloud をサブディレクトリで実行する ===
location ~ ^/owncloud/(?:updater|ocs-provider)(?:$|/) {
 
try_files $uri/ =404;
 
index index.php;
 
}
 
   
  +
[[Nextcloud#Web サーバー|Web サーバー]] セクションの手順により、Nextcloud インストールが専用サーバー名 (例: {{ic|cloud.mysite.com}}) 経由でアクセスできるセットアップが行われます。Nextcloud をサブディレクトリに置きたい場合。例: {{ic|www.mysite.com/nextcloud}} の場合:
location ~ ^/owncloud/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|ocs-provider/.+|core/templates/40[34])\.php(?:$|/) {
 
include uwsgi_params;
 
uwsgi_modifier1 14;
 
# Avoid duplicate headers confusing OC checks
 
uwsgi_hide_header X-Frame-Options;
 
uwsgi_hide_header X-XSS-Protection;
 
uwsgi_hide_header X-Content-Type-Options;
 
uwsgi_hide_header X-Robots-Tag;
 
uwsgi_pass unix:/run/uwsgi/owncloud.sock;
 
}
 
   
  +
* nginx については、これを明示的に説明している Nextcloud のドキュメントのセクションを参照してください [https://docs.nextcloud.com/server/latest/admin_manual/installation/nginx.html#nextcloud-in-a-subdir-of-the-nginx ウェブルートトピック]
# Adding the cache control header for js and css files
 
# Make sure it is BELOW the PHP block
 
location ~* \.(?:css|js) {
 
try_files $uri /owncloud/index.php$uri$is_args$args;
 
add_header Cache-Control "public, max-age=7200";
 
# Add headers to serve security related headers (It is intended
 
# to have those duplicated to the ones above)
 
# Before enabling Strict-Transport-Security headers please read
 
# into this topic first.
 
# add_header Strict-Transport-Security "max-age=15768000;
 
# includeSubDomains; preload;";
 
add_header X-Content-Type-Options nosniff;
 
add_header X-Frame-Options "SAMEORIGIN";
 
add_header X-XSS-Protection "1; mode=block";
 
add_header X-Robots-Tag none;
 
add_header X-Download-Options noopen;
 
add_header X-Permitted-Cross-Domain-Policies none;
 
# Optional: Don't log access to assets
 
access_log off;
 
}
 
   
  +
* apache の場合は、インクルードされた {{ic|/etc/httpd/conf/extra/nextcloud.conf}} を編集して、{{ic|<nowiki><VirtualHost *:80> ... </VirtualHost></nowiki>}} の部分をコメントアウトします。
location ~* \.(?:svg|gif|png|html|ttf|woff|ico|jpg|jpeg) {
 
  +
try_files $uri /owncloud/index.php$uri$is_args$args;
 
  +
{{Note|サービス検出用に {{ic |.well-known}} URL を構成することを忘れないでください。詳細については、Nextcloud のドキュメントの [https://docs.nextcloud.com/server/latest/admin_manual/issues/general_troubleshooting.html#service-discovery サービス検出] を参照してください。}}
# Optional: Don't log access to other assets
 
access_log off;
 
}
 
}
 
</nowiki>}}
 
   
 
=== Docker ===
 
=== Docker ===
  +
 
[[Docker]] の [https://hub.docker.com/_/owncloud/ ownCloud] あるいは [https://github.com/nextcloud/docker Nextcloud] リポジトリを見てください。
 
[[Docker]] の [https://hub.docker.com/_/owncloud/ ownCloud] あるいは [https://github.com/nextcloud/docker Nextcloud] リポジトリを見てください。
   
  +
=== Office 統合 ===
=== ファイルマネージャからアップロード・共有 ===
 
[https://github.com/schiesbn/shareLinkCreator shareLinkCreator] はサポートされているファイルマネージャから ownCloud にファイルをアップロードする機能を提供します。アップロードしたファイルのリンクをメールなどで配ることが可能です。
 
   
  +
現在、Office 統合には 3 つの異なるソリューションがあります。
=== AJAX から Cron に切り替える ===
 
   
  +
* [https://www.collaboraoffice.com/collabora-online/ Collabora Online]
Nextcloud では定期的に実行する必要があるタスクが存在しますが、デフォルトでは AJAX を使って実行されます。AJAX は信頼性に欠けるため [[Cron]] や [[systemd/タイマー]]を使うことを推奨します。
 
  +
* [https://www.onlyoffice.com/ ONLYOFFICE]
  +
* [https://docs.microsoft.com/en-us/officeonlineserver/office-online-server-overview MS Office Online Server]
   
  +
3 つの共通点は、専用サーバーが必要であり、特定のリクエストをオフィスサービスに転送するように Web サーバーを適合させる必要があるという点です。Nextcloud との実際の統合は、上記の製品のいずれかに固有の Nextcloud アプリを使用して実現されます。
{{hc|/etc/systemd/system/nextcloud-cron.timer|<nowiki>
 
[Unit]
 
Description=Runs Nextcloud tasks regularly
 
   
  +
3 つの製品はすべてビジネス向けであることに注意してください。つまり、オフィス サービスの料金を支払う必要があります。Collabora のみが開発者プラン ([https://www.collaboraoffice.com/code/ CODE]) を無料で提供しています。 ONLYOFFICE は、[https://www.onlyoffice.com/en/docs-enterprise-prices.aspx ホーム サーバー] プランを手頃な価格で提供しています。
[Timer]
 
OnBootSec=10min
 
OnUnitActiveSec=15min
 
   
  +
インストール、セットアップ手順、Nextcloud との統合については、以下を参照してください。
[Install]
 
WantedBy=timers.target</nowiki>}}
 
   
  +
* [https://nextcloud.com/collaboraonline/ Collabora online], [https://apps.nextcloud.com/apps/richdocuments app]
{{hc|/etc/systemd/system/nextcloud-cron.service|<nowiki>
 
  +
* [https://api.onlyoffice.com/editors/nextcloud ONLYOFFICE], [https://apps.nextcloud.com/apps/onlyoffice app]
[Unit]
 
  +
* [https://github.com/nextcloud/officeonline MS Office Online Server], [https://apps.nextcloud.com/apps/officeonline app]
Description=Nextcloud scheduled tasks
 
   
  +
=== アプリの推奨を無効にする ===
  +
  +
デフォルトでは、Nextcloud は新しいクライアントにアプリを推奨するため、大量の通知が発生する可能性があります。これを無効にするには、{{ic|occ app:disable Recommendation}} を使用してレコメンデーションアプリを無効にします。
  +
  +
=== calcardbackup を使用してカレンダーとアドレス帳をバックアップする ===
  +
  +
{{AUR|calcardbackup}} パッケージをインストールして構成すると、カレンダーやアドレス帳のデータベースを定期的にバックアップできます。{{ic|/etc/calcardbackup/calcardbackup.conf}} を好みに合わせて編集し、{{ic|calcardbackup.timer}} を [[起動]] して [[有効化]] します。
  +
  +
== トラブルシューティング ==
  +
  +
=== ログを読む ===
  +
  +
デフォルトでは、Web アプリケーションのログは {{ic|/var/log/nextcloud/nextcloud.log}} で利用できます。エントリ (行) は JSON 形式であり、非常に長くなる場合があります。{{Pkg|jq}} を使用すると、可読性が大幅に向上します。
  +
  +
{{bc|# jq . </var/log/nextcloud/nextcloud.log {{!}} less}}
  +
  +
=== ImageMagick によるバージョン警告 ===
  +
  +
{{ic|/var/log/nextcloud/nextcloud.log}} に次のような警告が大量に表示される場合があります。
  +
  +
: Version warning: Imagick was compiled against ImageMagick version 1808 but version 1809 is loaded. Imagick will run but may behave surprisingly at Unknown#0
  +
  +
{{Bug|69636}} によると、これは誤報であり、無視して構いません。これらの警告を無くすには、ログ内の重要なメッセージをより目立つように、次の行を追加します。
  +
  +
{{bc|1=
  +
imagick.skip_version_check = 1
  +
}}
  +
  +
{{ic|/etc/php-legacy/php-fpm.ini}} と {{ic|/etc/webapps/nextcloud/php.ini}} にあります。あるいは、{{ic|/etc/php-legacy/conf.d/imagick.ini}} でこの行のコメントを解除することもできます。
  +
  +
=== アップグレード v25 &rarr; v26 ===
  +
  +
バージョン 25 のインストールをバージョン 26 にアップグレードするには、次の手順が必要です。
  +
  +
==== 拡張機能 sysvsem を有効にする ====
  +
  +
バージョン 26 には、追加の PHP 拡張機能 ''sysvsem'' が 1 つ必要です。この拡張機能は次の 2 つの場所で有効にする必要があります。
  +
  +
* {{ic|/etc/webapps/nextcloud/php.ini}} {{ic|occ}} コマンドとバックグラウンドジョブによって使用されます。
  +
* 使用するアプリケーションサーバーに応じて、
  +
** {{ic|/etc/uwsgi/nextcloud.ini}} (''uWSGI'' の場合) または
  +
** ''FPM'' の場合は {{ic|/etc/php-legacy/php-fpm.d/nextcloud.conf}}
  +
  +
他の拡張機能が有効になっている既存のセクションを探して、{{ic|sysvsem}} に対応する行を追加するだけです。
  +
  +
==== /proc/cpuinfo を open_basedir に追加 ====
  +
  +
セットアップで PHP パラメータ {{ic|open_basedir}} も定義している場合 (推奨)、このディレクトリのリストに {{ic|/proc/cpuinfo}} を追加する必要があります。この行を見つけます
  +
  +
* {{ic|/etc/webapps/nextcloud/php.ini}} {{ic|occ}} コマンドとバックグラウンドジョブによって使用されます。
  +
* 使用するアプリケーションサーバーに応じて、
  +
** {{ic|/etc/uwsgi/nextcloud.ini}} (''uWSGI'' の場合) または
  +
** {{ic|/etc/php-legacy/php-fpm.d/nextcloud.conf}} (''FPM'' の場合)
  +
  +
そして、行の最後に {{ic|:/proc/cpuinfo}} を追加します。(コロンに注意してください。)
  +
  +
==== HTTP 応答ヘッダー X-Robots-Tag を適応させる ====
  +
  +
これは、Apache の '''httpd''' (例:''nginx'') を使用しないインストールにのみ適用されます。
  +
  +
v25 インストールから継承された Web サーバー設定を使用すると、Nextcloud は HTTP 応答ヘッダー {{ic|X-Robots-Tag}} が適切に設定されていないというメッセージを表示するようになります。これを {{ic|"none"}} から {{ic|"noindex, nofollow"}} に変更する必要があります。Web サーバーの設定内で関連する行を見つけて、それに応じて調整します。''nginx'' の場合、この行は次のようになります。
  +
  +
{{hc|''cloud.mysite.com''.conf|
  +
add_header X-Robots-Tag "noindex, nofollow" always;
  +
}}
  +
  +
==== php から php-legacy への移行 ====
  +
  +
これはオプションであり、(パッケージ {{Pkg|php-legacy}} ではなく) パッケージ {{Pkg|php}} にまだ依存している Nextcloud のインストールにのみ適用されます。詳細と移行が推奨される理由については、[[Nextcloud#php-legacy への移行|php-legacy への移行]] を参照してください。
  +
  +
=== php-legacy への移行 ===
  +
  +
過去に、{{Pkg|php}} パッケージが (Arch Linux のローリングリリースの理念に沿って) タイムリーに最新の PHP バージョンに更新されることが何度かありましたが、Nextcloud はこの新しいバージョンと互換性がありませんでした。既存のインストールが破壊され、パッケージ {{Pkg|nextcloud}} のメンテナとユーザーに多大な労力がかかります。パッケージ {{Pkg|php}} がバージョン 8.1 からバージョン 8.2 に切り替わったとき、この問題が再び発生しようとしていました。
  +
  +
この頻繁なトラブルを回避するために、新しい {{Pkg|php-legacy}} パッケージのセットが導入されました [https://archlinux.org/news/php-82-update-and-introduction-of-legacy-branch/] その時までに。これらは、最も古いもののまだ [https://www.php.net/supported-versions.php がアクティブにサポートされている PHP] ブランチに続きます。パッケージ {{Pkg|nextcloud}} は、{{Pkg|php}} および {{Pkg|php-legacy}} によって提供されるメタ パッケージ ''php-interpreter'' に依存するように変更されました。このようにして、パッケージ {{Pkg|nextcloud}} のユーザーは、Nextcloud インストールを {{Pkg|php}} の上に構築するか、{{Pkg|php-legacy}} の上に構築するかを選択できます。
  +
  +
{{Pkg|php-legacy}} を使用することを強くお勧めします。このわずかに古いバージョンの PHP では、システムのアップグレードによって既存の Nextcloud インストールが使用できなくなる可能性はほとんどありません。
  +
  +
{{Warning|PHP の最新かつ最高のバージョン (つまり、{{Pkg|php}}) を選択するユーザーは、パッケージ {{Pkg|php}} がメジャーバージョンまたはマイナーバージョンに切り替わるときの問題に備える必要があります。これらの問題は主に、パッケージ {{Pkg|nextcloud}} が突然 {{Pkg|php}} を依存関係として提供しなくなることで発生します (その時点でそのバージョンが Nextcloud でサポートされていないため) これにより、実質的に {{Pkg|php}} を使用するユーザーは一時的に {{Pkg|php-legacy}} に移行することになります。つまり、しばらくしてから {{Pkg|php}} に戻す必要があります。}}
  +
  +
{{Pkg|php-legacy}} への移行には、いくつかの手動操作が必要です。実際の設定に応じて、次のタスクのサブセットを適用する必要があります。
  +
  +
{{Note|次のアクションのリストは、Nextcloud インストールがこの Wiki 記事に従って設定されていることを前提としています。セットアップがこのアプローチから逸脱する場合は、特に注意して手順を適切に調整してください。}}
  +
  +
==== PHP 拡張機能 ====
  +
  +
{{Pkg|php}} 拡張機能を対応する {{Pkg|php-legacy}} 拡張機能に置き換えます。例えば
  +
  +
{{bc|
  +
$ pacman -R php-apcu php-fpm php-gd php-imagick php-pgsql
  +
$ pacman -S --asdeps php-legacy-apcu php-legacy-gd php-legacy-fpm php-legacy-imagick php-legacy-pgsql
  +
}}
  +
  +
以前の拡張 ''php-intl'' は、{{Pkg|php}} および {{Pkg|php-legacy}} の不可欠な部分となっているため、例外です。したがって、ここでこのパッケージを明示的に処理する必要はありません。
  +
  +
実際の PHP 拡張機能のセットは、データベース、メモリ内のオブジェクト キャッシュ、アプリケーションサーバー、およびその他の要因によって異なります。もちろん、別のアプリケーションが最新の PHP バージョンに依存している場合には、非レガシーモジュールが引き続き必要になる可能性があります。同じことが {{Pkg|php}} 自体にも当てはまります。
  +
  +
==== {{ic|php.ini}} の Nextcloud 固有のコピー ====
  +
  +
{{hc|1=/etc/webapps/nextcloud/php.ini|2=
  +
open_basedir=...:/usr/lib/php-legacy/modules:...
  +
extension_dir = "/usr/lib/php-legacy/modules/"
  +
;extension=imap <= 削除
  +
}}
  +
  +
==== FPM 設定 ====
  +
  +
(これは、アプリケーションサーバー ''FPM'' が使用されている場合にのみ適用されます。)
  +
  +
{{bc|
  +
$ mv /etc/php/php-fpm.ini /etc/php-legacy/php-fpm.ini
  +
$ mv /etc/php/php-fpm.d/nextcloud.conf /etc/php-legacy/php-fpm.d/nextcloud.conf
  +
}}
  +
  +
{{ic|/etc/php-legacy/php-fpm.ini}} を変更します
  +
  +
{{hc|1=/etc/php-legacy/php-fpm.ini|2=
  +
extension_dir = "/usr/lib/php-legacy/modules/"
  +
;extension=imap <= 削除
  +
}}
  +
  +
{{ic|/etc/php-legacy/php-fpm.d/nextcloud.conf}} を変更します
  +
  +
{{hc|1=/etc/php-legacy/php-fpm.d/nextcloud.conf|2=
  +
listen = /run/php-fpm-legacy/nextcloud.sock
  +
; It's available in: /usr/share/php-legacy/fpm/status.html
  +
access.log = /var/log/php-fpm-legacy/access/$pool.log
  +
; uncomment if php-imap is installed and used <= 削除
  +
; php_value[extension] = imap <= 削除
  +
}}
  +
  +
オプションですが推奨: {{ic|www.conf}} を no-op にしますが、{{Pkg|php-legacy-fpm}} の将来の更新で行われる可能性のあるこのファイルの変更を追跡できるようにします。
  +
  +
{{bc|1=
  +
$ mv /etc/php-legacy/php-fpm.d/www.conf /etc/php-legacy/php-fpm.d/www.conf.package
  +
$ echo "; just a no-op" > /etc/php-legacy/php-fpm.d/www.conf
  +
}}
  +
  +
systemd サービス ''php-fpm.service'' を [[停止]] および [[無効化]] します。''php-fpm-legacy.service'' の [[ドロップインファイル]] を作成します。
  +
  +
{{hc|/etc/systemd/system/php-fpm-legacy.service.d/override.conf|2=
 
[Service]
 
[Service]
  +
ExecStart=
Type=oneshot
 
  +
ExecStart=/usr/bin/php-fpm-legacy --nodaemonize --fpm-config /etc/php-legacy/php-fpm.conf --php-ini /etc/php-legacy/php-fpm.ini
User=http
 
  +
ReadWritePaths=/var/lib/nextcloud
Group=http
 
ExecStart=/usr/bin/php -f /usr/share/webapps/nextcloud/cron.php</nowiki>}}
+
ReadWritePaths=/etc/webapps/nextcloud/config
  +
}}
   
  +
systemd サービス ''php-fpm-legacy.service'' を [[有効化]] および [[起動]] します。
もしくは以下の cron ジョブを設定:
 
*/15 * * * * php -f /usr/share/webapps/nextcloud/cron.php
 
   
=== Collabora Online Office の統合 ===
+
==== uWSGI 設定 ====
{{AUR|nextcloud-app-collabora-online}} をインストールしてウェブサーバーの Nextcloud の設定を編集します。[[Nginx]] の場合:
 
   
  +
(これは、アプリケーションサーバー ''uWSGI'' が使用されている場合にのみ適用されます。)
# static files
 
location ^~ /loleaflet {
 
proxy_pass https://localhost:9980;
 
proxy_set_header Host $http_host;
 
}
 
# WOPI discovery URL
 
location ^~ /hosting/discovery {
 
proxy_pass https://localhost:9980;
 
proxy_set_header Host $http_host;
 
}
 
# websockets, download, presentation and image upload
 
location ^~ /lool {
 
proxy_pass https://localhost:9980;
 
proxy_set_header Upgrade $http_upgrade;
 
proxy_set_header Connection "upgrade";
 
proxy_set_header Host $http_host;
 
}
 
   
  +
{{hc|1=/etc/uwsgi/nextcloud.ini|2=
[[Apache]] の場合は [https://nextcloud.com/collaboraonline/ こちら] を見てください。docker デーモンを使っている場合、Collabora Online の最新の docker イメージを pull できます。2番目のコマンドのドメイン名はあなたの Nextcloud サーバーのドメイン名に置き換えてください:
 
  +
php-set = open_basedir=...:/usr/lib/php-legacy/modules...
docker pull collabora/code
 
  +
# uncomment if php-imap is installed and used <= 削除
docker run -t -d -p 127.0.0.1:9980:9980 -e 'domain=localhost' --net host --restart always --cap-add MKNOD collabora/code
 
  +
# php-set = extension=imap <= 削除
docker イメージを更新する際は同じコマンドを実行します。ただし旧イメージの実行中プロセスを全て終了してください:
 
  +
}}
docker ps
 
docker stop CONTAINER_ID
 
docker rm CONTAINER_ID
 
これで Nextcloud インスタンスで Collabora Online アプリを有効にできます。最後に管理者の設定で Collabora Online アプリに関する設定を行ってください。
 
   
  +
==== Nginx 設定 ====
== トラブルシューティング ==
 
   
  +
アプリケーションサーバーへの特定のリクエストの転送が設定されているファイルを変更します。''FPM'' の場合、例:
=== 自己署名証明書が使えない ===
 
   
  +
{{hc|1=''cloud.mysite.com''.conf|2=
ownCloud は [[Wikipedia:ja:cURL|cURL]] や [[Wikipedia:SabreDAV|SabreDAV]] を使って [[WebDAV]] が有効になっているかチェックします。([[LAMP]] の記事に書かれているように) 自己署名証明書で SSL/TLS を使って、ownCloud の管理者ページにアクセスすると、以下のエラーメッセージが表示されます:
 
  +
fastcgi_pass unix:/run/php-fpm-legacy/nextcloud.sock;
  +
}}
   
  +
''uWSGI'' の場合、適応する必要はありません。
Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken.
 
   
  +
==== Apache HTTP server 設定 ====
[[LAMP]] のチュートリアルにしたがって設定を行っている場合、以下の手順を実行してください:
 
   
  +
Apache の HTTP サーバーとアプリケーションサーバーとして ''FPM'' を使用する場合は、構成内でこの行を調整してください。
証明書のためのローカルディレクトリを作成して、そこに [[LAMP]] の証明書をコピーします。これによって {{Ic|ca-certificates}} のアップデートによって証明書が上書きされるのを防ぎます。
 
   
  +
{{bc|1=
# cp /etc/httpd/conf/server.crt /usr/share/ca-certificates/''WWW.EXAMPLE.COM.crt''
 
  +
SetHandler "proxy:unix:/run/php-fpm-legacy/nextcloud.sock{{!}}fcgi://nextcloud/"
  +
}}
   
  +
''uWSGI'' の場合、適応する必要はありません。
''WWW.EXAMPLE.COM.crt'' を {{ic|/etc/ca-certificates.conf}} に追加:
 
   
  +
==== バックグラウンドジョブ ====
''WWW.EXAMPLE.COM.crt''
 
   
  +
Nextcloud のスケジュールされたバックグラウンドジョブの [[ドロップインファイル]] を更新します。
そして証明書を更新:
 
   
  +
{{hc|/etc/systemd/system/nextcloud-cron.service.d/override.conf|2=
# update-ca-certificates
 
  +
[Service]
  +
ExecStart=
  +
ExecStart=/usr/bin/php-legacy -c /etc/webapps/nextcloud/php.ini -f /usr/share/webapps/nextcloud/cron.php
  +
}}
   
  +
==== Pacman フック ====
httpd サービスを再起動して証明書を有効にしてください。
 
   
  +
pacman フック {{ic|/etc/pacman.d/hooks/10-nextcloud.hook}} も調整する必要があります。{{ic|Exec}} で始まる行を次のように変更します。
これで動作しない場合は {{ic|/etc/php/php.ini}} で mod_curl を無効化してみてください。
 
   
  +
{{hc|1=/etc/pacman.d/hooks/10-nextcloud.hook|2=
=== Android デバイスの自己署名証明書 ===
 
  +
Exec = /usr/bin/runuser -u nextcloud -- /usr/bin/php-legacy --php-ini /etc/webapps/nextcloud/php.ini /usr/share/webapps/nextcloud/occ upgrade
  +
}}
   
  +
そうしないと、Nextcloud の次回のアップグレード中に pacman が {{ic|/usr/bin/php}} が見つからないというエラーを表示します。
[[LAMP#TLS/SSL]] に書かれているように SSL のセットアップをした場合、古いバージョンの DAVdroid では証明書が信頼できないとして接続が拒否されます。以下のようにサーバーに証明書を作成できます:
 
   
  +
==== クリーンアップ ====
# openssl x509 -req -days 365 -in /etc/httpd/conf/server.csr -signkey /etc/httpd/conf/server.key -extfile android.txt -out CA.crt
 
# openssl x509 -inform PEM -outform DER -in CA.crt -out CA.der.crt
 
   
  +
古くなった可能性のあるファイルとディレクトリをクリーンアップすることを忘れないでください。潜在的な候補者は次のとおりです。
{{ic|android.txt}} ファイルに以下を記述してください:
 
   
  +
{{bc|
basicConstraints=CA:true
 
  +
/usr/lib/php
  +
/etc/php
  +
}}
   
  +
=== 1 つ以上のアプリの奇妙な動作 ===
そして Android 端末に {{ic|CA.der.crt}} をインポートしてください:
 
   
  +
Nextcloud アプリのファイルが含まれるフォルダーは 2 つの場所にあります。
Android 端末の SD カードに {{ic|CA.der.crt}} ファイルを保存してください (メールの添付ファイルなどを使って保存してください)。ファイルはルートディレクトリに配置してください。そして ''Settings > Security > Credential storage'' から ''Install from device storage'' を選択します。{{ic|.crt}} ファイルが検出されて、証明書の名前の入力が求められます。証明書をインポートしたら、''Settings > Security > Credential storage > Trusted credentials > User'' から確認できるはずです。
 
   
  +
* {{ic|/usr/share/webapps/nextcloud/apps}} (別名読み取り専用アプリディレクトリ) これは、{{Pkg|nextcloud}} パッケージとアプリパッケージ (例: {{Pkg|nextcloud-app-contacts}}) が Nextcloud アプリを構成するファイルを含むフォルダーを配置する場所です。
ソース: [http://www.leftbrainthings.com/2013/10/13/creating-and-importing-self-signed-certificate-to-android-device/]
 
   
  +
* {{ic|/var/lib/nextcloud/apps}} (別名書き込み可能なアプリディレクトリ) ここには、GUI または {{ic|occ app:install}} コマンドを介してインストールされたアプリのファイルが含まれるフォルダーがあります。
[https://play.google.com/store/apps/details?id=at.bitfire.cadroid CAdroid] を使ってサーバーから直接証明書をインポートする方法もあります。
 
   
  +
アプリのファイルが両方のディレクトリ (特に異なるバージョン) で見つかると、あらゆる種類の奇妙なことが発生する可能性があります。具体的な [https://github.com/nextcloud/contacts/issues/2867 ケース] では、''連絡先'' アプリが読み取り専用アプリディレクトリと書き込み可能なアプリディレクトリの両方に存在する可能性があります。その結果、GUI に連絡先を含むページは表示されませんでした。ブラウザの Javascript コンソールに次のエラーメッセージが表示されました。
=== 設定ディレクトリに書き込みができない ===
 
   
  +
{{bc|Uncaught Error: Could not find initial state contactsinteraction of contacts}}
httpd の設定ファイル ({{ic|owncloud.conf}} など) を確認してください。以下の文字列に設定ディレクトリ (デフォルトでは {{ic|/etc/webapps}}) を追加してください:
 
   
  +
両方の場所にアプリが存在するかどうかを確認します。アプリフォルダーを読み取り専用ディレクトリまたは書き込み可能なディレクトリのどちらで削除するかを確認するには、アプリがパッケージの一部であるかどうかを確認します。
php_admin_value open_basedir "/srv/http/:/home/:/tmp/:/usr/share/pear/:/usr/share/webapps/:/path/to/dir/"
 
   
  +
{{bc|
変更を適用するには httpd あるいは php-fpm サービスを再起動します。
 
  +
# cd /usr/share/webapps/nextcloud/apps
  +
# pacman -Qo * >/dev/null
  +
}}
   
  +
報告されたすべてのフォルダー
=== データディレクトリを作成できない (/path/to/dir) ===
 
   
  +
{{bc|
httpd の設定ファイル ({{ic|owncloud.conf}} など) を確認してください。以下の文字列にデータディレクトリを追加してください:
 
  +
error: No package owns ....
  +
}}
   
  +
(書き込み可能なアプリディレクトリにもあります) は、{{ic|/usr/share/webapps/nextcloud/apps}} から安全に削除できます。他の二重インストールされたアプリ (つまり、パッケージに属するアプリ) は、{{ic|/var/lib/nextcloud/apps}} から削除する必要があります。
php_admin_value open_basedir "/srv/http/:/home/:/tmp/:/usr/share/pear/:/usr/share/webapps/:/path/to/dir/"
 
   
  +
=== コード整合性チェックの失敗に関する警告 (v23) ===
変更を適用するには httpd あるいは php-fpm サービスを再起動します。
 
   
  +
バージョン 23 では、PHP 8.1 との互換性を実現するために、Nextcloud の PHP コードに Arch Linux パッケージ用のパッチを広範囲に適用する必要がありました。この欠点は、Nextcloud の組み込みコード整合性チェックがすべてのパッチ適用ファイルで失敗することでした。管理者のビューに表示される対応する警告は無視できます。バージョン 24 は PHP 8.1 とネイティブ互換性があります。したがって、パッチは必要ないため、整合性に関する警告も表示されなくなります。
また PHP 7 はデフォルトでは open_basedir を使用しないため、必要なデータディレクトリの所有者・所有ユーザーを {{ic|root:http}} にしてパーミッションを 770 に変更することでも解決できます (http はウェブサーバーを実行するユーザーのグループに置き換えてください)。
 
   
  +
=== InnoDB は ROW_FORMAT=COMPRESSED を指定したテーブルの書き込みを拒否します ===
=== CSync failed to find a specific file. ===
 
   
  +
MariaDB バージョン >= 10.6 および < 10.6.6 は、データベースが圧縮された InnoDB に対して [https://mariadb.com/kb/en/innodb-compressed-row-format/#read-only read-only] を強制されているため、Nextcloud と互換性がありませんでした。] Nextcloud は、次の種類のテーブルを使用してきました (そして現在も使用しています)
おそらく証明書に問題があります。証明書を再度作成して、名前を空にしないようにしてください。そうしないとエラーがまた発生します。
 
   
  +
: MariaDB 10.6.0 から MariaDB 10.6.5 まで、COMPRESSED 行形式のテーブルはデフォルトで読み取り専用です。これは、書き込みサポートの削除と機能の廃止に向けた最初のステップとなることを目的としていました。
# openssl req -new -x509 -nodes -newkey rsa:4096 -keyout server.key -out server.crt
 
  +
:
  +
: この計画は廃止され、MariaDB 10.6.6 以降、COMPRESSED テーブルはデフォルトで読み取り専用ではなくなりました。
   
  +
さらに、この問題は Nextcloud によってすでに [https://github.com/nextcloud/server/pull/30129 で対処] されています。Nextcloud v24 以降、Nextcloud の新規インストールでは行形式 COMPRESSED が使用されなくなりました。既存の (v24 より前の) インストールは行形式 COMPRESSED から自動的に移行されないことに注意してください。
=== ログイン後に白いページが表示される ===
 
   
  +
結論: Arch Linux は 2022 年 2 月 10 日以降 MariaDB v10.6.6 以降を出荷しているため、おそらく影響を受けません。
おそらく新しくインストールしたアプリが原因です。修正するには、[https://doc.owncloud.org/server/8.2/admin_manual/configuration_server/occ_command.html こちら] に書かれているように occ コマンドを使用します。アプリを全て確認するには:
 
# sudo -u http php /usr/share/webapps/owncloud/occ app:list
 
問題のアプリを無効化するには (ownCloud を標準のディレクトリにインストールした場合):
 
# sudo -u http php /usr/share/webapps/owncloud/occ app:disable <nameOfExtension>
 
   
  +
この問題の影響を受ける可能性は低いですが、考えられる解決策がいくつかあります。
もしくは [[phpMyAdmin]] を使って {{ic|oc_appconfig}} テーブルを編集するか (運が良いことにテーブルに edit オプションがある場合) mysql で手動で修正してください:
 
   
  +
* MariaDB 設定を調整します。
$ mysql -u root -p owncloud
 
MariaDB [owncloud]> '''delete from''' oc_appconfig '''where''' appid='<nameOfExtension>' '''and''' configkey='enabled' '''and''' configvalue='yes';
 
MariaDB [owncloud]> '''insert into''' oc_appconfig (appid,configkey,configvalue) '''values''' ('<nameOfExtension>','enabled','no');
 
   
  +
{{hc|/etc/my.cnf.d/server.cnf|2=
テーブルから関連する設定が削除されるので、後でまた追加してください。
 
  +
[mariadb-10.6]
  +
innodb_read_only_compressed=OFF
  +
}}
   
  +
* 対応する [https://github.com/nextcloud/server/issues/25436 Nextcloud issue] の [https://github.com/nextcloud/server/issues/25436#issuecomment-1016785831 いくつかの] [https://github.com/nextcloud/server/issues/25436#issuecomment-1017462542 コメント] で提案されているように、MariaDB テーブルを行フォーマット COMPRESSED から DYNAMIC に移行してください。Nextcloud < v24 を使用している限り、新しいテーブルは再び行フォーマット COMPRESSED を使用しますので、同じ方法で移行する必要があります。
=== GUI の同期クライアントで接続できない ===
 
   
  +
* MariaDB を PostgreSQL に置き換え、Nextcloud インスタンスのデータを {{ic|occ db:convert-type}} で移行します。詳細については、Nextcloud の [https://docs.nextcloud.com/server/latest/admin_manual/configuration_database/db_conversion.html ドキュメント] を参照してください。
HTTP のベーシック認証を使っている場合、{{ic|status.php}} が対象から外れていることを確認してください。このファイルは誰からでもアクセスできるようにしておく必要があります [https://github.com/owncloud/mirall/issues/734]。
 
   
  +
=== 21.0.0 以上にアップグレードした後の権限とセットアップの問題 ===
=== ファイルをアップロードすると 'Integrity constraint violation...' エラーが表示される ===
 
   
  +
{{Note|nextcloud 21.0.0 より前では、Web アプリケーションは {{ic|http}} ユーザーを使用して実行されていました。これは、このユーザーのアプリケーション間アクセス (すべての Web アプリケーションのすべてのデータにアクセスできる) に関するセキュリティ上の問題です。}}
ownCloud の同期クライアントで以下のエラーが表示されることがあります:
 
   
  +
バージョン 21.0.0 以降、nextcloud は [[ウェブアプリケーションパッケージガイドライン]] にさらに厳密に従います。これにより、Web アプリケーションが実行される別のユーザー {{ic|nextcloud}} が導入されます。
SQLSTATE[23000]: Integrity constraint violation: ... Duplicate entry '...' for key 'fs_storage_path_hash')...
 
   
  +
nextcloud < 21.0.0 からアップグレードした後、次のことを確認してください。
File Locking アプリの問題が原因です。ウェブーサーバーの設定の衝突が発生しているのに対処できていません。エラーが発生しない [https://doc.owncloud.org/server/8.1/admin_manual/configuration_files/files_locking_transactional.html Transactional File Locking] が存在しますが、Redis の php キャッシュを使う必要があります。{{Pkg|redis}} と {{AUR|php-redis}} をインストールして、現在使っている php のキャッシュをコメントアウトして、{{ic|/etc/php/conf.d/redis.ini}} から {{ic|1=extension=redis.so}} をアンコメントしてください。そして {{ic|config.php}} に以下の変更を加えます:
 
   
  +
* データディレクトリは {{ic|/var/lib/nextcloud/data}} にあります。
'memcache.local' => '\OC\Memcache\Redis',
 
  +
* 書き込み可能な apps ディレクトリは {{ic|/var/lib/nextcloud/apps}} にあります。
'filelocking.enabled' => 'true',
 
  +
* data ディレクトリと書き込み可能な apps ディレクトリの両方と、その下にあるすべてのファイルは書き込み可能で、{{ic|nextcloud}} ユーザーが所有します。
'memcache.locking' => '\OC\Memcache\Redis',
 
  +
* Web アプリケーション設定ファイルが {{ic|/etc/webapps/nextcloud/config/}} に存在し、そのディレクトリとコンテンツが {{ic|nextcloud}} ユーザによって書き込み可能かつ所有されていること。
'redis' => array(
 
  +
* アプリケーションサーバ ([[Nextcloud#FPM|FPM]] や [[Nextcloud#uWSGI|uWSGI]] など) が、{{ic|http}} ユーザではなく {{ic|nextcloud}} ユーザとして Web アプリケーションを実行するように設定されている。
'host' => 'localhost',
 
  +
* 新しいユーザーで実行するように cron ジョブ/systemd タイマーを更新する。
'port' => 6379,
 
  +
* 最後に、nextcloud インストール {{ic|/usr/share/webapps/nextcloud}} への読み取りアクセスを、ウェブサーバーのユーザ {{ic|http}} に許可します:
'timeout' => 0.0,
 
),
 
   
  +
{{bc|
設定したら Redis を再起動:
 
  +
# chown -R nextcloud:http /usr/share/webapps/nextcloud
  +
}}
   
  +
=== access.log、error.log、nextcloud.log に手がかりがないログインループ ===
# systemctl enable redis.service
 
# systemctl start redis.service
 
   
  +
[https://bbs.archlinux.org/viewtopic.php?pid=1967719#p1967719 フォーラムの投稿] で述べられているように、この問題は、''sessions'' ディレクトリに正しいアクセス許可を設定することで修正できます。 (詳細については、[https://docs.nextcloud.com/server/stable/admin_manual/installation/nginx.html#login-loop-without-any-clue-in-access-log-error-log-nor-nextcloud-log Nextcloud のドキュメントを参照してください]) ''sessions'' ディレクトリが完全に欠落している可能性もあります。このディレクトリの作成については、[[Nextcloud#システムと環境|システムと環境]] に記載されています。
最後に、File Locking アプリを無効化して、Transational File Locking を使うようにしてください。
 
   
  +
{{ic|/var/lib/nextcloud}} は次のようになります。
管理者ページのサーバーステータスに 'Transactional File Locking Enabled' が表示され、同期の問題が消えるはずです。
 
   
  +
{{bc|
=== "Cannot write into apps directory" ===
 
  +
drwxr-xr-x 6 nextcloud nextcloud 4096 17. Apr 00:56 ./
  +
drwxr-xr-x 21 root root 4096 17. Apr 00:53 ../
  +
drwxr-xr-x 2 nextcloud nextcloud 4096 16. Feb 00:21 apps/
  +
drwxrwx--- 10 nextcloud nextcloud 4096 16. Apr 13:46 data/
  +
drwx------ 2 nextcloud nextcloud 4096 17. Apr 01:04 sessions/
  +
}}
   
  +
=== 環境変数が利用できない ===
[https://doc.owncloud.org/server/latest/admin_manual/installation/apps_management_installation.html 公式の管理者マニュアル] に書かれているように、http ユーザーからアプリディレクトリに書き込みができるようにするか、{{ic|appstoreenabled}} を {{ic|false}} に設定する必要があります。
 
   
  +
使用するアプリケーションサーバーに応じて、カスタム環境変数を Nextcloud の PHP コードに提供できます。
また、ドキュメントには書かれていませんが、{{ic|/etc/php/php.ini}} の {{ic|open_basedir}} 行にディレクトリを指定してください。
 
   
  +
==== FPM ====
きれいな解決方法としてパッケージによってインストールされた {{ic|/usr/share/webapps/owncloud/apps}} ディレクトリの所有者は root にしたまま、ユーザーがインストールしたアプリは http が所有者となる {{ic|/var/www/owncloud/apps}} などに入れる方法があります。それから {{ic|appstoreenabled}} を {{ic|true}} に設定してアプリのパッケージをアップグレードすれば上手く動作するはずです。{{ic|/etc/webapps/owncloud/config/config.php}} の該当する行:
 
   
  +
[https://docs.nextcloud.com/server/latest/admin_manual/installation/source_installation.html#php-fpm-tips-label Nextcloudのドキュメント] に従って、{{ic|/etc/php-legacy/php-fpm.d/nextcloud.conf}} に 1 行以上追加してください:
{{bc|<nowiki>
 
'apps_paths' =>
 
array (
 
0 =>
 
array (
 
'path' => '/usr/share/webapps/owncloud/apps',
 
'url' => '/apps',
 
'writable' => false,
 
),
 
1 =>
 
array (
 
'path' => '/var/www/owncloud/apps',
 
'url' => '/wapps',
 
'writable' => true,
 
),
 
),
 
</nowiki>}}
 
   
{{ic|/etc/php/php.ini}} の {{ic|open_basedir}} 行の例:
+
{{hc|1=/etc/php-legacy/php-fpm.d/nextcloud.conf|2=
  +
env[PATH] = /usr/local/bin:/usr/bin:/bin
  +
}}
   
  +
==== uWSGI ====
open_basedir = /srv/http/:/usr/share/webapps/:/var/www/owncloud/apps/
 
   
  +
{{ic|/etc/uwsgi/nextcloud.ini}} に 1 行以上追加してください:
ディレクトリのパーミッション:
 
   
  +
{{hc|1=/etc/uwsgi/nextcloud.ini|2=
{{hc|$ ls -ld /usr/share/webapps/owncloud/apps /var/www/owncloud/apps/|
 
  +
env = PATH=/usr/local/bin:/usr/bin:/bin
<nowiki>drwxr-xr-x 26 root root 4096 des. 14 20:48 /usr/share/webapps/owncloud/apps
 
  +
}}
drwxr-xr-x 2 http http 48 jan. 20 20:01 /var/www/owncloud/apps/</nowiki>}}
 
 
=== nginx.conf に推奨設定を記述したのにセキュリティの警告が表示される ===
 
   
  +
2 番目の {{ic|1==}} の周囲に空白を入れてはいけないことに注意してください。
管理者マニュアルにしたがって {{ic|Strict-Transport-Security}}, {{ic|X-Content-Type-Options}}, {{ic|X-Frame-Options}}, {{ic|X-XSS-Protection}}, {{ic|X-Robots-Tag}} を設定しても管理者ページの上部に警告が表示されることがあります。
 
   
  +
=== 安全な接続を介してインスタンスにアクセスしていますが、インスタンスは安全でない URL を生成しています ===
考えられる原因として ownCloud 自身が設定を行っていて、uWSGI によって nginx に設定が重複して追加されてしまっている可能性があります:
 
{{hc|$ curl -I https://domain.tld|
 
<nowiki>...
 
X-XSS-Protection: 1; mode=block
 
X-Content-Type-Options: nosniff
 
X-Frame-Options: Sameorigin
 
X-Robots-Tag: none
 
Strict-Transport-Security: max-age=15768000; includeSubDomains; preload;
 
X-Content-Type-Options: nosniff
 
X-Frame-Options: SAMEORIGIN
 
X-XSS-Protection: 1; mode=block
 
X-Robots-Tag: none</nowiki>}}
 
   
  +
管理設定で次のメッセージが表示された場合:
fast_cgi のサンプル設定には重複を避けるためのパラメータが存在しますが ({{ic|fastcgi_param modHeadersAvailable true; #Avoid sending the security headers twice}})、uwsgi と nginx を使用する場合、{{ic|nginx.conf}} の uwsgi の部分に以下の修正を加えることで解決します:
 
   
  +
:You are accessing your instance over a secure connection, however your instance is generating insecure URLs. This most likely means that you are behind a reverse proxy and the overwrite config variables are not set correctly. Please read the documentation page about this.
{{hc| /etc/nginx/nginx.conf|
 
<nowiki>...
 
# pass all .php or .php/path urls to uWSGI
 
location ~ ^(.+\.php)(.*)$ {
 
include uwsgi_params;
 
uwsgi_modifier1 14;
 
# hode following headers received from uwsgi, because otherwise we would send them twice since we already add them in nginx itself
 
uwsgi_hide_header X-Frame-Options;
 
uwsgi_hide_header X-XSS-Protection;
 
uwsgi_hide_header X-Content-Type-Options;
 
uwsgi_hide_header X-Robots-Tag;
 
uwsgi_hide_header X-Frame-Options;
 
#Uncomment line below if you get connection refused error. Remember to commet out line with "uwsgi_pass 127.0.0.1:3001;" below
 
uwsgi_pass unix:/run/uwsgi/owncloud.sock;
 
#uwsgi_pass 127.0.0.1:3001;
 
}
 
...</nowiki>}}
 
   
  +
設定ファイルに以下を追加します: [https://help.nextcloud.com/t/instance-over-a-secure-connection-however-your-instance-is-generated-insecure-urls/134108]
=== "Reading from keychain failed with error: 'No keychain service available'" ===
 
  +
Gnome の場合、{{Pkg|libgnome-keyring}} と {{Pkg|gnome-keyring}} パッケージをインストールすることで解決します。KDE の場合、{{Pkg|libgnome-keyring}} と {{Pkg|qtkeychain}} パッケージをインストールしてください。
 
  +
{{hc|/etc/webapps/nextcloud/config/config.php|2=
  +
'trusted_proxies' => ['192.168.1.0'],
  +
'overwriteprotocol' => 'https',
  +
}}
  +
  +
{{ic|192.168.1.0}} をパブリック IP に置き換えます。
  +
  +
=== Nextcloud が破損したインデックスを報告する (MariaDB) ===
  +
  +
たとえば、{{ic|occ db:}} コマンド中または [管理] -> [ログ] で Nextcloud がインデックスの破損を報告した場合は、次のコマンドを実行してデータベースを修復できます。
  +
  +
{{bc|
  +
$ mysqlcheck --check --auto-repair nextcloud -u nextcloud -p
  +
}}
  +
  +
コマンドが失敗した場合でも、破損したインデックスを含むテーブル {{ic|TABLE}} が指摘されます。mariadb にログインして修復します。
  +
  +
{{bc|
  +
$ mysql -u nextcloud -p
  +
$ use nextcloud;
  +
$ check table ''TABLE'';
  +
$ optimize table ''TABLE'';
  +
$ exit;
  +
}}
  +
  +
結果と一致するように {{ic|''TABLE''}} を置き換えてください。
   
 
== 参照 ==
 
== 参照 ==
  +
* [http://owncloud.org/ ownCloud 公式ウェブサイト]
 
* [http://doc.owncloud.org/server/9.2/admin_manual/ ownCloud 9.2 管理者ドキュメント]
 
 
* [https://docs.nextcloud.com/ nextcloud 公式ウェブサイト]
 
* [https://docs.nextcloud.com/ nextcloud 公式ウェブサイト]
* [https://docs.nextcloud.com/server/11/admin_manual/ nextcloud 11.0 管理者ドキュメント]
+
* [https://docs.nextcloud.com/server/latest/admin_manual/ Nextcloud 管理者ドキュメント]

2023年7月2日 (日) 15:23時点における最新版

関連記事

Nextcloud は、いわゆる アプリ によって、あらゆる種類の共有、コラボレーション、コミュニケーションを可能にするクライアントサーバーソフトウェア群です。例えば:

Nextcloud はオープンソースであり、オープンスタンダードに基づいています。データ主権は大きな利点です。つまり、Nextcloud の独自のインスタンスを使用すると、Dropbox、Office 365、Google Drive などの独自の (そして潜在的に信頼できない) サービスから解放されます。

ニーズに応じて、Nextcloud はシングルボードコンピューター (Raspberry Pi など) から数百万のユーザーにサービスを提供する本格的なデータセンターまで展開できます。Nextcloud は、綿密な認証スキームとフェデレーション (個別のインスタンスの接続) のオプションを備えており、エンタープライズ環境での使用に適しています。

Nextcloud は ownCloud のフォークです。ウィキペディアの 歴史 を参照してください。

目次

セットアップの概要

Nextcloud の完全なインストールには、(少なくとも) 次のコンポーネントが含まれます。

データベース を使用して Nextcloud (つまり、PHP コード) を実行する アプリケーションサーバー とペアになった Web サーバー

この記事では、データベースとして MariaDB/MySQL および PostgreSQL と、Web サーバーとアプリケーションサーバーの次の組み合わせについて説明します。

  • nginx → uWSGI (および uwsgi-plugin-php)
  • nginx → FPM,
  • Apache HTTP サーバー (mod_proxy_uwsgi を使用) → uWSGI (および uwsgi-plugin-php)
  • Apache HTTP サーバー (mod_proxy_fcgi を使用) → FPM

Nextcloud パッケージは ウェブアプリケーションパッケージガイドライン に準拠しています。これにより、特に、専用ユーザー (この場合は nextcloud) で Web アプリケーションを実行することが義務付けられます。これが、ここでアプリケーションサーバーが登場する理由の 1 つです。まったく同じ理由で、php-apache を使用して Apache プロセスで Nextcloud の PHP コードを直接実行することはできなくなりました。

インストール

ノート: パッケージ nextcloud (メタパッケージ php-interpreter への依存関係による) は、php の上に Nextcloud のインストールを構築するか、またはパッケージ php-legacy 安全のために php-legacy を選択することを強くお勧めします。詳細については、php-legacy への移行 を参照してください。この記事の残りの部分では、php-legacy を使用したインストールを想定しています。

nextcloud パッケージをインストールします。尋ねられたら、PHP バージョンとして php-legacy を選択します。これにより、かなりの数の依存パッケージが取り込まれます。すべての 必要な PHP 拡張機能 はこの方法で処理されます。

プレビュー生成用にパッケージ php-legacy-imagicklibrsvg を追加インストールすることをお勧めします (できれば pacman オプション --asdeps を使用した依存パッケージとして)。他のオプションの依存関係については、具体的な設定 (選択したデータベースなど) に応じて後で説明します。

設定

PHP

このガイドは、PHP の中央構成ファイル /etc/php-legacy/php.ini を改ざんするものではなく、他の PHP ベースのアプリケーションの設定に干渉する可能性のない場所に Nextcloud 固有の PHP 構成を配置します。これらの場所は次のとおりです。

  • /etc/webapps/nextcloud/php.ini 内の php.ini の専用コピー (occ コマンドラインツールとバックグラウンドジョブ用)
  • アプリケーションサーバーの構成における対応する設定。これらについては、アプリケーションサーバーに関するセクションで説明します。

/etc/php-legacy/php.ini のコピーを /etc/webapps/nextcloud に作成します。厳密に必要というわけではありませんが、コピーの所有権を変更します。

# chown nextcloud:nextcloud /etc/webapps/nextcloud/php.ini

Nextcloud の インストール手順 にリストされている前提条件のほとんどは、ベア PHP インストールですでに有効になっています。さらに、次の拡張機能を有効にします。

/etc/webapps/nextcloud/php.ini
extension=bcmath
extension=bz2
extension=exif
extension=gd
extension=iconv
extension=intl
extension=sysvsem
; in case you installed php-imagick (as recommended)
extension=imagick

date.timezone を希望のタイムゾーンに設定します。例:

/etc/webapps/nextcloud/php.ini
date.timezone = Europe/Berlin

PHP のメモリ制限を少なくとも 512MiB に引き上げます。

/etc/webapps/nextcloud/php.ini
memory_limit = 512M

オプション: セキュリティを強化するには、open_basedir を構成します。これにより、Nextcloud の PHP コードがファイルを読み書きできる場所が制限されます。実証済みの設定は、

/etc/webapps/nextcloud/php.ini
open_basedir=/var/lib/nextcloud:/tmp:/usr/share/webapps/nextcloud:/etc/webapps/nextcloud:/dev/urandom:/usr/lib/php-legacy/modules:/var/log/nextcloud:/proc/meminfo:/proc/cpuinfo

設定する追加の拡張機能に応じて、このリストを拡張する必要がある場合があります (例: Redis を選択した場合は /run/redis)

この php.ini は、occ コマンド ラインツールとバックグラウンド ジョブ、つまり短時間実行される PHP プロセスによってのみ使用されるため、ここで opcache を設定する必要はありません。

Nextcloud

次のエントリを Nextcloud の設定ファイルに追加します。

/etc/webapps/nextcloud/config/config.php
'trusted_domains' =>
  array (
    0 => 'localhost',
    1 => 'cloud.mysite.com',
  ),    
'overwrite.cli.url' => 'https://cloud.mysite.com/',
'htaccess.RewriteBase' => '/',

指定されたホスト名例 cloud.mysite.com を変更します。Nextcloud インストールがサブフォルダー経由でアクセスできる場合 (例: https://www.mysite.com/nextcloud) overwrite.cli.url htaccess.RewriteBase はそれに応じて変更する必要があります。

システムと環境

Nextcloud 固有の php.iniocc ツールで使用されるようにするには、環境変数 NEXTCLOUD_PHP_CONFIG を設定します。

$ export NEXTCLOUD_PHP_CONFIG=/etc/webapps/nextcloud/php.ini

また、この設定を永続的にするには、この行を .bashrc (または .bash_profile ) に追加します。

プライバシーとセキュリティの予防措置として、セッションデータ用の専用ディレクトリを作成します。

# install --owner=nextcloud --group=nextcloud --mode=700 -d /var/lib/nextcloud/sessions

データベース

MariaDB/MySQL は Nextcloud の標準的な選択肢です。

MySQL または MariaDB データベースが推奨されるデータベースエンジンです。[1]

Nextcloud のデータベースに関するほとんどの情報は、MariaDB/MySQL を扱います。Nextcloud 開発者は、[2] があることを認めています。他のデータベースでは、あまり詳細な専門知識がありません。

PostgreSQL は、MariaDB/MySQL と比較してパフォーマンスが向上し、全体的に癖が少ないと言われています。SQLite は主にテスト/開発インストールでサポートされており、運用環境では推奨されません。 サポートされるデータベースのリスト には、Oracle データベースも含まれています。この製品についてはここでは扱いません。

MariaDB / MySQL

2013 年以降、MariaDB が Arch Linux のデフォルトの MySQL 実装になっているため [3] 、このテキストでは MariaDB についてのみ言及しています。

Nextcloud と同じホストでデータベースを実行する場合は、configure および 起動 mariadb をインストールします (まだ実行していない場合)。詳細については、対応する article を参照してください。mariadb-install-db で MariaDB を初期化することを忘れないでください。セキュリティを強化するために、MariaDB を ローカルの Unix ソケットでのみリッスンする ように設定することをお勧めします。

/etc/my.cnf.d/server.cnf
[mysqld]
skip_networking

Nextcloud 独自のドキュメント を推奨 では、トランザクション分離レベルを READ-COMMITTED に設定します。これは、多くの同時トランザクションによる高負荷が予想される場合に特に重要です。

/etc/my.cnf.d/server.cnf
[mysqld]
transaction_isolation=READ-COMMITTED

binlog_format=ROW を設定するというもう 1 つの推奨事項は廃止されました。最近の MariaDB バージョンのデフォルトの MIXED は、推奨される ROW と少なくとも同じくらい優れています。いずれの場合も、設定はレプリケーションが適用される場合にのみ関係します。

データベースをユーザー root で CLI ツール mysql を起動します。(デフォルトのパスワードは空ですが、できるだけ早く変更してください。)

$ mysql -u root -p

Nextcloud のユーザーとデータベースを作成します。

CREATE USER 'nextcloud'@'localhost' IDENTIFIED BY 'db-password';
CREATE DATABASE IF NOT EXISTS nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
GRANT ALL PRIVILEGES on nextcloud.* to 'nextcloud'@'localhost';
FLUSH privileges;

(db-password は、選択する必要がある DB ユーザー nextcloud の実際のパスワードのプレースホルダーです。) \q でツールを終了します。

ノート: MariaDB は、UTF8 の意味についての理解に欠陥があり、その結果、コードポイント 0x10000 以上の文字 (絵文字など) を保存できなくなります。彼らは、utf8mb4 と呼ばれる新しいエンコーディングを導入することにより、バージョン 5.5 でこの問題を 修正 しました。結論: MariaDB の utf8 は決して使用せず、常に utf8mb4 を使用してください。移行が必要な場合は、[4] を参照してください。

Nextcloud インストールのデータベースとして MariaDB を使用することに決めたので、対応する PHP 拡張機能を有効にする必要があります。

/etc/webapps/nextcloud/php.ini
extension=pdo_mysql

これ以上の設定 (MariaDB に関連する) は必要ありません (Nextcloud の [5] に記載されている情報とは異なります) データベース管理者マニュアル])

次に、Nextcloud のデータベーススキーマを次のように設定します。

$ occ maintenance:install \
    --database=mysql \
    --database-name=nextcloud \
    --database-host=localhost:/run/mysqld/mysqld.sock \
    --database-user=nextcloud \
    --database-pass=db-password \
    --admin-pass=admin-password \
    --admin-email=admin-email \
    --data-dir=/var/lib/nextcloud/data

プレースホルダー (例: db-password) に注意して、適切な値に置き換えてください。このコマンドは、データベースを Nextcloud と同じホスト上で実行していることを前提としています。occ help maintenance:install と入力し、他のオプションについては Nextcloud の ドキュメント を参照してください。このツールに関する Arch 固有の詳細については、"occ" コマンドラインツールの使用 を参照してください。

PostgreSQL

PostgreSQL の詳細については、対応する article を参照してください。 Nextcloud と同じホストでデータベースを実行する場合は、設定 および postgresql起動 (まだ実行していない場合) をインストールします。このシナリオでのセキュリティを強化するには、PostgreSQL を ローカルの UNIX ソケットでのみリッスンする ように構成することをお勧めします。

/var/lib/postgres/data/postgresql.conf
listen_addresses = ''

特に、initdb を使用してデータベースを初期化することを忘れないでください。それが完了したら、PostgreSQL の CLI ツール psql を起動します。

$ sudo -u postgres -- psql

そして、データベースユーザー nextcloud と同じ名前のデータベースを作成します

CREATE USER nextcloud WITH PASSWORD 'db-password';
CREATE DATABASE nextcloud TEMPLATE template0 ENCODING 'UNICODE';
ALTER DATABASE nextcloud OWNER TO nextcloud;
GRANT ALL PRIVILEGES ON DATABASE nextcloud TO nextcloud;
\q

(db-password は、選択する必要があるデータベースユーザー nextcloud のパスワードのプレースホルダーです。)

追加パッケージ php-pgsql を依存関係としてインストールし (pacman オプション --asdeps)、/etc/webapps/nextcloud/php.ini で対応する PHP 拡張機能を有効にします。

/etc/webapps/nextcloud/php.ini
extension=pdo_pgsql

Now setup Nextcloud's database schema with:

$ occ maintenance:install \
    --database=pgsql \
    --database-name=nextcloud \
    --database-host=/run/postgresql \
    --database-user=nextcloud \
    --database-pass=db-password \
    --admin-pass=admin-password \
    --admin-email=admin-email \
    --data-dir=/var/lib/nextcloud/data

プレースホルダー (例: db-password) に注意して、適切な値に置き換えてください。このコマンドは、データベースを Nextcloud と同じホスト上で実行していることを前提としています。occ help maintenance:install と入力し、他のオプションについては Nextcloud の ドキュメント を参照してください。このツールに関する Arch 固有の詳細については、"occ" コマンドラインツールの使用 を参照してください。

アプリケーションサーバー

PHP コードの処理に使用できる一般的なアプリケーションサーバーは uWSGI または FPM の 2 つです。FPM はPHPに特化したものです。Web サーバーと FPM の間で使用されるプロトコルは fastcgi です。このツールの ドキュメント には改善の余地があります。一方、uWSGI は、言語固有のプラグインを使用して、少数の言語 で記述されたコードを提供できます。使用されるプロトコルは uwsgi(小文字)です。このツールは 広範囲に文書化されています ですが、膨大な量の文書が混乱を招き、扱いにくくなる可能性があります。

uWSGI

uWSGI には独自の article があります。そこでは役立つ情報がたくさん見つかります。uwsgi とプラグイン uwsgi-plugin-php-legacy を、できれば依存関係として、つまり --asdeps とともにインストールします。Nextcloud のコードを uWSGI で (または uWSGI 内で) 実行するには、1 つの uWSGI 固有の構成ファイル (nextcloud.ini) を構成し、1 つの systemd サービスを定義する必要があります。

警告: 最近、uWSGI、特にその PHP プラグインのメンテナンスがまばらになっていることに言及しなければなりません[6] これはすでに の問題 を引き起こしており、Arch Linux パッケージの管理者 (アップストリームではない) が uWSGI コードにパッチを適用することによってのみ解決できます。

nextcloud.ini

nextcloud パッケージには、適切な場所 /etc/uwsgi/nextcloud.ini にサンプル構成ファイルがすでに含まれています。ほとんどの場合、このファイルを要件と設定に適合させる必要があります。 バージョンに多くのコメント付き変更が含まれている を見つけます (パッケージのバージョンと比較) これは、個人使用 (つまり、中程度の負荷) を目的とした、シンプルな Nextcloud インストールを前提としています。

一般に、有効な拡張機能、拡張機能固有の設定、および open_basedir/etc/webapps/nextcloud/php.ini と同期させます (opcache を除く)

ヒント: /etc/uwsgi/nextcloud.ini への変更は広範囲になる可能性があります。パッケージ nextcloud によって提供される元のファイルに変更があった場合に備えて、パッケージの更新中に nextcloud.ini.pacnew という名前のファイルが作成されます。この後者のファイルの変更をより適切に追跡し、それらを /etc/uwsgi/nextcloud.ini に適用するには、次のアプローチを適用できます。:
  • パッケージによって提供されるファイルのコピーを (パッケージから抽出するなどして) 作成し、それを nextcloud.ini.package として保存します。
  • パッケージ nextcloud の更新により nextcloud.ini.pacnew が生成される場合は、diff nextcloud.ini.package nextcloud.ini.pacnew で変更を識別できます。
  • ご使用のバージョンに適しているかどうかに応じて、変更を nextcloud.ini に選択的に適用します。

uWSGI サービス

uwsgi パッケージは、テンプレートユニットファイル (uwsgi@.service) を提供します。インスタンス ID (ここでは nextcloud) は、適切な構成ファイルを選択するために使用されます。 uwsgi@nextcloud.service有効化 および 起動 します。

このように開始されたサービスが複数 (例: 2 つ) あり、これがリソースの無駄であると感じた場合は、emperor モード の使用を検討してください。

FPM

アプリケーションサーバーとして FPM を使用する場合は、php-legacy-fpm を依存パッケージ (--asdeps) としてインストールしてください。

構成は、FPM によって提供されるすべてのアプリケーションに関連する php.ini のコピーと、アプリケーション (ここでは Nextcloud) に固有のいわゆるプールファイルで構成されます。最後に、systemd サービスファイルを調整する必要があります。

php-fpm.ini

前に述べたように、この記事では、/etc/php-legacy/php.ini にある PHP の中央設定の変更を回避しています。代わりに、FPM 固有のコピーを作成します。

# cp /etc/php-legacy/php.ini /etc/php-legacy/php-fpm.ini

所有者であり、root のみが書き込み可能であることを確認してください (-rw-r--r-- 1 root root ... php-fpm.ini) 演算キャッシュを有効にします。つまり、行のコメントを解除します。

/etc/php-legacy/php-fpm.ini
;zend_extension=opcache

そして、次のパラメータを既存の行 [opcache] の下に配置します。

/etc/php-legacy/php-fpm.ini
opcache.enable = 1
opcache.interned_strings_buffer = 8
opcache.max_accelerated_files = 10000
opcache.memory_consumption = 128
opcache.save_comments = 1
opcache.revalidate_freq = 1
警告: php_value[...] および php_flag[...] を使用してこれらの設定をプールファイルに入れようとしないでください。FPM プロセスは、最初のリクエストで常にクラッシュします。

nextcloud.conf

次に、FPM 用のいわゆるプールファイルを作成する必要があります。これは、Nextcloud アプリケーション用の専用の FPM プロセスを生成する役割を果たす。ファイル /etc/php-legacy/php-fpm.d/nextcloud.conf を作成します - これが 機能バージョン を開始点として使用できます。

もう一度、このプールファイルが root によって所有され、書き込み可能であることを確認してください (つまり、-rw-r--r-- 1 root root ... nextcloud.conf) アクセスログが設定されているかどうかに応じて (上記のサンプル nextcloud.conf の場合)、対応するディレクトリを作成する必要がある場合があります (ここでは {{ic|/var/log/php-fpm-legacy/access}) }) 好みに合わせて設定 (特に pm...php_value[...]、および php_flag[...]) を調整または追加します。php_value[...] および php_flag[..] の設定は、/etc/webapps/nextcloud/php.ini の対応する設定と一致している必要があります。(ただし、/etc/php-legacy/php-fpm.ini ではありません)

php_value[...] および php_flag[...] によって行われた設定は、代わりに php-fpm.ini で指定できます。ただし、php-fpm.ini の設定は、FPM によって提供されるすべてのアプリケーションに適用されることに注意してください。

ヒント: パッケージ php-legacy-fpm には独自のプールファイル www.conf が付属していますが、ここではほとんど役に立ちません。これを取り除く良い方法は、名前を www.conf.package に変更し、コメント行 (セミコロンで始まる行) だけを含むファイル www.conf を作成することです。このようにすると、www.conf は何も行わなくなります。また、新しいバージョンの php-legacy-fpm のインストール中に上書きされることもありません。代わりに、ファイル www.conf.pacnew が作成されます。これを www.conf.package と比較して、nextcloud.conf で再現する必要がある重要な変更がプール ファイルにないかどうかを確認できます。この手順の最後に、www.conf.pacnew の名前を www.conf.package に変更することを忘れないでください。

Systemd サービス

FPM は systemd サービスとして実行されます。Nextcloud を実行できるようにするには、サービス構成を変更する必要があります。これは、ドロップインファイル を使用して実現するのが最適です。

/etc/systemd/system/php-fpm-legacy.service.d/override.conf
[Service]
ExecStart=
ExecStart=/usr/bin/php-fpm-legacy --nodaemonize --fpm-config /etc/php-legacy/php-fpm.conf --php-ini /etc/php-legacy/php-fpm.ini
ReadWritePaths=/var/lib/nextcloud
ReadWritePaths=/etc/webapps/nextcloud/config
  • ExecStart 行を、前のセクションで説明した php-fpm.ini を使用する起動コマンドに置き換えます。
  • ディレクトリ /var/lib/nextcloud および /etc/webapps/nextcloud/config (および以下のすべて) が書き込み可能になります。 元のサービス定義の ProtectSystem=full により、/usr/boot、および /etc が読み取り専用でマウントされます。FPM プロセスの場合。

php-fpm-legacy サービスを 有効化 および 起動 することを忘れないでください。

/etc を整理整頓する

Nextcloud パッケージは、uWSGI 設定ファイル /etc/uwsgi/nextcloud.ini を無条件に作成します。もちろん、uWSGI の代わりに FPM を実行する場合には役に立ちません (そして、何の害もありません) それでも削除したい場合は、次の行を /etc/pacman.conf に追加してください。

/etc/pacman.conf
# uWSGI configuration that comes with Nextcloud is not needed
NoExtract = etc/uwsgi/nextcloud.ini

Web サーバー

選択できる Web サーバーは豊富にあります。最終的にどのオプションを選択する場合でも、Nextcloud アプリケーションは独自のシステムユーザー nextcloud で実行する必要があることに留意する必要があります。したがって、リクエストを上記のアプリケーションサーバーのいずれかに転送する必要があります。

nginx

nginx の構成は、この記事の範囲をはるかに超えています。詳細については、関連する article を参照してください。詳細な構成については、Nextcloud のドキュメント も参照してください。ほとんどの場合、これを適切な名前のファイル (ここでは例として cloud.mysite.com.conf) を /etc/nginx/sites-available の下にコピーする必要があります。対応するシンボリックリンクを /etc/nginx/sites-enabled に作成します。

上にリンクされている Nextcloud ドキュメントのサンプル nginx 構成を使用する場合は、ルートディレクトリを次のように変更する必要があります。

cloud.mysite.com.conf
  root /usr/share/webapps/nextcloud;

ブロック upstream php-handler { ... } を使用する必要はありません。PHP URI を含むリクエストのアプリケーション サーバーへの転送を処理する location ブロックに fastcgi_pass unix:/run/php-fpm-legacy/nextcloud.sock; を指定するだけです。FPM の代わりに uWSGI を使用する場合は、この location ブロックを次のように置き換えます。

cloud.mysite.com.conf
location ~ \.php(?:$|/) {
    include uwsgi_params;
    uwsgi_modifier1 14;
    # Avoid duplicate headers confusing OC checks
    uwsgi_hide_header X-Frame-Options;
    uwsgi_hide_header X-XSS-Protection;
    uwsgi_hide_header X-Content-Type-Options;
    uwsgi_hide_header X-Robots-Tag;
    uwsgi_hide_header X-Download-Options;
    uwsgi_hide_header X-Permitted-Cross-Domain-Policies;
    uwsgi_pass unix:/run/uwsgi/nextcloud.sock;
}

適応する必要がある可能性のあるもの (すべてではありません):

  • サーバー名 (server_name 句2倍)、つまり Nextcloud インストールが到達可能な URL のサーバー部分です。
  • SSL/TLS に使用する証明書とキーの名前。
  • アクセスログをどこに書き込むか。
  • Certbot (または他の ACME クライアント) がドメイン検証チャレンジを置く場所。ここでは、try_files の代わりに alias を使用する方が適切でしょう。
  • Nextcloud のインストール先へのパス。(URL のサーバー名&ポートセクションの右側の部分)
  • 使用しているアプリケーションサーバー (uWSGI または FPM)、つまり PHP コードをトリガーする必要があるリクエストを nginx がどこにどのように渡すか。(上記参照)
  • OCSP_stapling を設定します。

nginx は FastCGI と uwsgi の両方のプロトコルをネイティブにサポートしているため、追加のモジュールをインストールする必要はありません。

Apache HTTP server

Apache HTTP Server に関する記事には役立つ情報がたくさんあります。Nextcloud のドキュメントには サンプル設定 が含まれており、/usr/share/doc/nextcloud/apache.example.conf にもあります。どちらも暗黙的に mod_php に依存していますが、これはもう使用できません。 mod_proxy_fcgi または mod_proxy_uwsgi を適用する必要があります。

Apache と FPM を統合する 方法に関する情報は、この Wiki にあります。uWSGI のドキュメントには、uWSGI および mod_proxy_uwsgi を使用して Apache と PHP を統合する 方法に関する情報が記載されています。Apache パッケージには mod_proxy_fcgimod_proxy_uwsgi の両方のモジュールが付属していることに注意してください。必要に応じてロードする必要があります。

Nextcloud を実行するには、次の Apache モジュールが必要です。

/etc/httpd/conf/httpd.conf
# these are already loaded in a standard Apache installation
LoadModule headers_module modules/mod_headers.so
LoadModule env_module modules/mod_env.so
LoadModule dir_module modules/mod_dir.so
LoadModule mime_module modules/mod_mime.so
LoadModule setenvif_module modules/mod_setenvif.so

# these need to be uncommented explicitely
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule ssl_module modules/mod_ssl.so
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
LoadModule proxy_module modules/mod_proxy.so

# either this one in case you use FPM
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
# or this one in case you opt for uWSGI
LoadModule proxy_uwsgi_module modules/mod_proxy_uwsgi.so

また、TLS 設定パラメータを取り込むには、次のディレクティブのコメントを解除します。

/etc/httpd/conf/httpd.conf
Include conf/extra/httpd-ssl.conf

TLS 設定を最適化する方法の詳細については、Mozilla の SSL configurator を参照してください。

Nextcloud インストールへのアクセス方法に応じて、次の 2 つのサンプル設定ファイルを参照してください。

  • Nextcloud のインストールが専用ホスト名でアクセスされる場合 (例:https://cloud.mysite.com/)、/etc/httpd/conf/extra/httpd-vhosts.confこれ を記述してください。
  • Nextcloud が Web サイトのサブフォルダ (例:https://www.mysite.com/nextcloud/) にインストールされている場合は、/etc/httpd/conf/httpd.confこれ を記述してください。

もちろん、これらのサンプル設定ファイルを実際の設定に適合させる必要があります。uWSGI を使用する場合は、SetHandler ディレクティブを SetHandler "proxy:unix:/run/uwsgi/nextcloud.sock|uwsgi://nextcloud/" に置き換えます。

Nextcloud パッケージには、多くの書き換えやヘッダー処理がすでに行われている .htaccess が付属しています。occ maintenance:update:htaccess を実行して、このファイルを調整します。これには、/etc/webapps/nextcloud/config/config.php のパラメータ htaccess.RewriteBase が重要です。

バックグラウンドジョブ

Nextcloud では、特定のタスクをスケジュールに従って実行する必要があります。詳細については、Nextcloud の ドキュメント を参照してください。これらのバックグラウンドジョブを設定する最も簡単な (そして最も信頼性の高い) 方法は、nextcloud によってすでにインストールされている systemd サービスとタイマーユニットを使用することです。ジョブが正しい PHP ini ファイル (グローバルの php.ini ではなく) を使用するように、サービス ユニットを微調整する必要があります。ドロップインファイル を作成し、以下を追加します。

/etc/systemd/system/nextcloud-cron.service.d/override.conf
[Service]
ExecStart=
ExecStart=/usr/bin/php-legacy -c /etc/webapps/nextcloud/php.ini -f /usr/share/webapps/nextcloud/cron.php

その後 nextcloud-cron.timer有効化 して 起動 (サービスではありません)

警告: nextcloud-systemd-timersAUR をインストールして使用しないでください。時代遅れで、メンテナンスされていません。4 つのスケジュールされたジョブをインストールします。

1. nextcloud-preview-pre-generateoccreview:pre-generate を実行します。このコマンドは、nextcloud-app-previewgeneratorAUR がインストールされている場合にのみ存在します。

2. nextcloud-preview-generate-alloccreview:generate-all を実行します。このコマンドも、nextcloud-app-previewgeneratorAUR がインストールされている場合にのみ存在します。さらに、これは はスケジュールに基づいて実行されることを意図したものではありません

3. nextcloud-files-scan-allocc files:scan --all を実行します。これは標準のバックグラウンドジョブですでにカバーされています。テーブル oc_jobs を見て、class = 'OCA\Files\BackgroundJob\ScanFiles' のエントリを見つけてください。

4. nextcloud-app-update-allocc app:update --all を実行します。Nextcloud アプリの自動更新は、完全に危険ではないにしても、少なくとも疑わしいです。アプリの新しいバージョンは、過去にもすでに問題を引き起こしています。バックアップを行い運用環境でのアプリの更新は監視する必要があります。

In-memory キャッシュ

Nextcloud の ドキュメント では、パフォーマンスを大幅に向上させるために、ある種のメモリ内オブジェクト キャッシュを適用することを推奨しています。

ノート: プッシュ通知 (サーバーによる通知によってクライアントのポーリングを置き換え、同期遅延を大幅に短縮する Nextcloud サービス) は Redis に依存していることに注意してください。

同期

デスクトップ

公式クライアントは、nextcloud-client パッケージでインストールできます。代替バージョンは AUR: nextcloud-client-gitAUR で入手できます。Nextcloud での owncloud-client の使用はサポートされていないことに注意してください。

デスクトップクライアントは基本的に、デスクトップコンピューターの 1 つ以上のディレクトリを Nextcloud のファイル サービス内の対応するフォルダーと同期します。デスクトップのファイルマネージャー (KDE Plasma の Dolphin、Gnome の Nautilus) とうまく統合され、同期と共有ステータスを表すオーバーレイが表示されます。各ファイルのコンテキストメニューには、このファイルの共有とパブリックまたは内部共有リンクの取得を管理するための追加エントリ Nextcloud が表示されます。Nextcloud のドキュメントには、デスクトップクライアントのみに関する volume があります。

統合が説明どおりに機能しない場合は、パッケージ nextcloud-client (pacman -Qi nextcloud-client) のオプションの依存関係を調べてください。たとえば、Nautilus (Gnome) には python-nautilus が必要です。pacman -S --asdeps を使用して依存パッケージとしてインストールします。

Thunderbird

バージョン 91 以降 Thunderbird は、自動検出を使用しても CalDAV と CardDAV を完全にサポートしています (つまり、カレンダーやアドレス帳にアクセスするために長い URL を指定する必要はありません) Nextcloud の ドキュメント は、この点に関して最新ではありません。

カレンダー

Mozilla ThunderbirdLightning カレンダーを使って Nextcloud のカレンダーにアクセスするには以下の URL を使います:

https://ADDRESS/remote.php/caldav/calendars/USERNAME/CALENDARNAME

Kontact や Evolution など CalDAV に対応するプログラムを使って Nextcloud のカレンダーにアクセスするには、以下の URL を使います:

https://ADDRESS/remote.php/caldav

詳しくは 公式ドキュメント を見てください。

連絡先

Thunderbird と連絡先を同期するには、SOGo フロントエンドLightning エクステンションをインストールして公式ドキュメントの 手順 に従う必要があります。

davfs2 でファイルをマウントする

ownCloud を永続的にマウントしたい場合、まず davfs2 をインストールしてください (Davfs2 に説明があります)。

もし ownCloud が https://own.example.com にある場合、WebDAV の URL は https://own.example.com/remote.php/webdav になります (ownCloud 6.0 現在)。

ownCloud をマウントするには、次のコマンドを使います:

# mount -t davfs https://own.example.com/remote.php/webdav /path/to/mount

/etc/fstab にエントリを作成することもできます:

/etc/fstab
https://own.example.com/remote.php/webdav /path/to/mount davfs rw,user,noauto 0 0
ヒント: 自動でマウントしたい場合、Davfs2#接続情報の保存で説明されているようにファイルにユーザー名 (と必要であればパスワード) を保存できます。
ノート: ディレクトリは作成・コピーできるのに、ファイルの作成やコピーができない場合、Davfs2#ファイルの作成やコピーができないを見てください。

GNOME Files (Nautilus) でファイルをマウントする

Nautilus ('+ Other Locations') では WebDAV プロトコルを使ってファイルに直接アクセスできます。Nextcloud のインストール Web GUI で表示されるリンクを使ってください (通常は https://cloud.mysite.com/remote.php/webdav/) ただしプロトコルの名前は https から davs に置き換えてください。Nautilus は接続時にユーザー名とパスワードを要求します。

Android

Nextcloud の公式アプリは Google PlayF-Droid からダウンロードできます。

連絡先やカレンダーの同期を有効化するには (Android 4 以上):

  1. DAVdroid (Play Store, F-Droid) をダウンロード。
  2. アカウント 設定で新しい DAVdroid アカウントを作成し、サーバー URL (例: https://cloud.mysite.com) とログイン/パスワードのペアを指定します。
ノート: 上記のセクション Web サーバー DAVdroid は適切な URL を自動的に見つけます。

iOS

App Store から Nextcloud の公式アプリをダウンロードしてください。

ヒントとテクニック

"occ" コマンドラインツールの使用

サーバー管理に役立つツールは occ です Nextcloud のドキュメント の詳細 を参照してください。occ を使用すると、ユーザーの管理やアプリの構成など、多くの一般的なサーバー操作を実行できます。

元の /usr/share/webapps/nextcloud/occ の便利なラッパーは、デフォルトユーザー (nextcloud) として自動的に実行される /usr/bin/occ で提供されます。)、デフォルトの PHP 実行可能ファイルと PHP 設定ファイルを使用します。環境変数 NEXTCLOUD_USERNEXTCLOUD_PHP、および NEXTCLOUD_PHP_CONFIG を使用して、デフォルト以外のユーザー、PHP 実行可能ファイル、および PHP 設定ファイルを (それぞれ) 指定できます。 特に後者 (NEXTCLOUD_PHP_CONFIG を使用) は、セクション 設定 および Application サーバー で説明されている方法で Nextcloud がセットアップされた場合、つまり、 Nextcloud に固有の PHP 設定。この場合、export NEXTCLOUD_PHP_CONFIG=/etc/webapps/nextcloud/php.ini.bashrc に追加します。

推奨パッケージ php-legacy の代わりにパッケージ php を使用する場合は、NEXTCLOUD_PHP も設定する必要があります。つまり、export NEXTCLOUD_PHP=/usr/ bin/php

警告: キャッシュに php-apcu を使用する場合は、必ず /etc/webapps/nextcloud/php.iniapc.enable_cli=1 を設定してください。そうしないと、occ コマンドは、APCu が適切に設定されていないというエラーを表示します。

Pacman フック

nextcloud パッケージには、パッケージの更新後に Nextcloud データベースを自動的にアップグレードする pacman フック が付属しています。/usr/share/doc/nextcloud/nextcloud.hook をご覧ください。

残念ながら、このフックは occ upgrade の実行時にグローバルの php.ini を無条件に使用します。つまり、前述したように環境変数 NEXTCLOUD_PHP_CONFIG の値は考慮されません。上記の "occ" コマンドラインツールの使用 で説明しています。

考えられる回避策として、提供されたフックファイルのコピーを適切な場所に作成します。

# mkdir -vp /etc/pacman.d/hooks
# cp -a /usr/share/doc/nextcloud/nextcloud.hook /etc/pacman.d/hooks/10-nextcloud.hook

Exec で始まる行を次のように変更します。

/etc/pacman.d/hooks/10-nextcloud.hook
Exec = /usr/bin/runuser -u nextcloud -- /usr/bin/php-legacy --php-ini /etc/webapps/nextcloud/php.ini /usr/share/webapps/nextcloud/occ upgrade

Nextcloud をサブディレクトリで実行する

Web サーバー セクションの手順により、Nextcloud インストールが専用サーバー名 (例: cloud.mysite.com) 経由でアクセスできるセットアップが行われます。Nextcloud をサブディレクトリに置きたい場合。例: www.mysite.com/nextcloud の場合:

  • nginx については、これを明示的に説明している Nextcloud のドキュメントのセクションを参照してください ウェブルートトピック
  • apache の場合は、インクルードされた /etc/httpd/conf/extra/nextcloud.conf を編集して、<VirtualHost *:80> ... </VirtualHost> の部分をコメントアウトします。
ノート: サービス検出用に .well-known URL を構成することを忘れないでください。詳細については、Nextcloud のドキュメントの サービス検出 を参照してください。

Docker

DockerownCloud あるいは Nextcloud リポジトリを見てください。

Office 統合

現在、Office 統合には 3 つの異なるソリューションがあります。

3 つの共通点は、専用サーバーが必要であり、特定のリクエストをオフィスサービスに転送するように Web サーバーを適合させる必要があるという点です。Nextcloud との実際の統合は、上記の製品のいずれかに固有の Nextcloud アプリを使用して実現されます。

3 つの製品はすべてビジネス向けであることに注意してください。つまり、オフィス サービスの料金を支払う必要があります。Collabora のみが開発者プラン (CODE) を無料で提供しています。 ONLYOFFICE は、ホーム サーバー プランを手頃な価格で提供しています。

インストール、セットアップ手順、Nextcloud との統合については、以下を参照してください。

アプリの推奨を無効にする

デフォルトでは、Nextcloud は新しいクライアントにアプリを推奨するため、大量の通知が発生する可能性があります。これを無効にするには、occ app:disable Recommendation を使用してレコメンデーションアプリを無効にします。

calcardbackup を使用してカレンダーとアドレス帳をバックアップする

calcardbackupAUR パッケージをインストールして構成すると、カレンダーやアドレス帳のデータベースを定期的にバックアップできます。/etc/calcardbackup/calcardbackup.conf を好みに合わせて編集し、calcardbackup.timer起動 して 有効化 します。

トラブルシューティング

ログを読む

デフォルトでは、Web アプリケーションのログは /var/log/nextcloud/nextcloud.log で利用できます。エントリ (行) は JSON 形式であり、非常に長くなる場合があります。jq を使用すると、可読性が大幅に向上します。

# jq . </var/log/nextcloud/nextcloud.log | less

ImageMagick によるバージョン警告

/var/log/nextcloud/nextcloud.log に次のような警告が大量に表示される場合があります。

Version warning: Imagick was compiled against ImageMagick version 1808 but version 1809 is loaded. Imagick will run but may behave surprisingly at Unknown#0

FS#69636 によると、これは誤報であり、無視して構いません。これらの警告を無くすには、ログ内の重要なメッセージをより目立つように、次の行を追加します。

imagick.skip_version_check = 1

/etc/php-legacy/php-fpm.ini/etc/webapps/nextcloud/php.ini にあります。あるいは、/etc/php-legacy/conf.d/imagick.ini でこの行のコメントを解除することもできます。

アップグレード v25 → v26

バージョン 25 のインストールをバージョン 26 にアップグレードするには、次の手順が必要です。

拡張機能 sysvsem を有効にする

バージョン 26 には、追加の PHP 拡張機能 sysvsem が 1 つ必要です。この拡張機能は次の 2 つの場所で有効にする必要があります。

  • /etc/webapps/nextcloud/php.ini occ コマンドとバックグラウンドジョブによって使用されます。
  • 使用するアプリケーションサーバーに応じて、
    • /etc/uwsgi/nextcloud.ini (uWSGI の場合) または
    • FPM の場合は /etc/php-legacy/php-fpm.d/nextcloud.conf

他の拡張機能が有効になっている既存のセクションを探して、sysvsem に対応する行を追加するだけです。

/proc/cpuinfo を open_basedir に追加

セットアップで PHP パラメータ open_basedir も定義している場合 (推奨)、このディレクトリのリストに /proc/cpuinfo を追加する必要があります。この行を見つけます

  • /etc/webapps/nextcloud/php.ini occ コマンドとバックグラウンドジョブによって使用されます。
  • 使用するアプリケーションサーバーに応じて、
    • /etc/uwsgi/nextcloud.ini (uWSGI の場合) または
    • /etc/php-legacy/php-fpm.d/nextcloud.conf (FPM の場合)

そして、行の最後に :/proc/cpuinfo を追加します。(コロンに注意してください。)

HTTP 応答ヘッダー X-Robots-Tag を適応させる

これは、Apache の httpd (例:nginx) を使用しないインストールにのみ適用されます。

v25 インストールから継承された Web サーバー設定を使用すると、Nextcloud は HTTP 応答ヘッダー X-Robots-Tag が適切に設定されていないというメッセージを表示するようになります。これを "none" から "noindex, nofollow" に変更する必要があります。Web サーバーの設定内で関連する行を見つけて、それに応じて調整します。nginx の場合、この行は次のようになります。

cloud.mysite.com.conf
    add_header X-Robots-Tag "noindex, nofollow" always;

php から php-legacy への移行

これはオプションであり、(パッケージ php-legacy ではなく) パッケージ php にまだ依存している Nextcloud のインストールにのみ適用されます。詳細と移行が推奨される理由については、php-legacy への移行 を参照してください。

php-legacy への移行

過去に、php パッケージが (Arch Linux のローリングリリースの理念に沿って) タイムリーに最新の PHP バージョンに更新されることが何度かありましたが、Nextcloud はこの新しいバージョンと互換性がありませんでした。既存のインストールが破壊され、パッケージ nextcloud のメンテナとユーザーに多大な労力がかかります。パッケージ php がバージョン 8.1 からバージョン 8.2 に切り替わったとき、この問題が再び発生しようとしていました。

この頻繁なトラブルを回避するために、新しい php-legacy パッケージのセットが導入されました [7] その時までに。これらは、最も古いもののまだ がアクティブにサポートされている PHP ブランチに続きます。パッケージ nextcloud は、php および php-legacy によって提供されるメタ パッケージ php-interpreter に依存するように変更されました。このようにして、パッケージ nextcloud のユーザーは、Nextcloud インストールを php の上に構築するか、php-legacy の上に構築するかを選択できます。

php-legacy を使用することを強くお勧めします。このわずかに古いバージョンの PHP では、システムのアップグレードによって既存の Nextcloud インストールが使用できなくなる可能性はほとんどありません。

警告: PHP の最新かつ最高のバージョン (つまり、php) を選択するユーザーは、パッケージ php がメジャーバージョンまたはマイナーバージョンに切り替わるときの問題に備える必要があります。これらの問題は主に、パッケージ nextcloud が突然 php を依存関係として提供しなくなることで発生します (その時点でそのバージョンが Nextcloud でサポートされていないため) これにより、実質的に php を使用するユーザーは一時的に php-legacy に移行することになります。つまり、しばらくしてから php に戻す必要があります。

php-legacy への移行には、いくつかの手動操作が必要です。実際の設定に応じて、次のタスクのサブセットを適用する必要があります。

ノート: 次のアクションのリストは、Nextcloud インストールがこの Wiki 記事に従って設定されていることを前提としています。セットアップがこのアプローチから逸脱する場合は、特に注意して手順を適切に調整してください。

PHP 拡張機能

php 拡張機能を対応する php-legacy 拡張機能に置き換えます。例えば

$ pacman -R php-apcu php-fpm php-gd php-imagick php-pgsql
$ pacman -S --asdeps php-legacy-apcu php-legacy-gd php-legacy-fpm php-legacy-imagick php-legacy-pgsql

以前の拡張 php-intl は、php および php-legacy の不可欠な部分となっているため、例外です。したがって、ここでこのパッケージを明示的に処理する必要はありません。

実際の PHP 拡張機能のセットは、データベース、メモリ内のオブジェクト キャッシュ、アプリケーションサーバー、およびその他の要因によって異なります。もちろん、別のアプリケーションが最新の PHP バージョンに依存している場合には、非レガシーモジュールが引き続き必要になる可能性があります。同じことが php 自体にも当てはまります。

php.ini の Nextcloud 固有のコピー

/etc/webapps/nextcloud/php.ini
open_basedir=...:/usr/lib/php-legacy/modules:...
extension_dir = "/usr/lib/php-legacy/modules/"
;extension=imap                                            <= 削除

FPM 設定

(これは、アプリケーションサーバー FPM が使用されている場合にのみ適用されます。)

$ mv /etc/php/php-fpm.ini /etc/php-legacy/php-fpm.ini
$ mv /etc/php/php-fpm.d/nextcloud.conf /etc/php-legacy/php-fpm.d/nextcloud.conf

/etc/php-legacy/php-fpm.ini を変更します

/etc/php-legacy/php-fpm.ini
extension_dir = "/usr/lib/php-legacy/modules/"
;extension=imap                                            <= 削除

/etc/php-legacy/php-fpm.d/nextcloud.conf を変更します

/etc/php-legacy/php-fpm.d/nextcloud.conf
listen = /run/php-fpm-legacy/nextcloud.sock
;       It's available in: /usr/share/php-legacy/fpm/status.html
access.log = /var/log/php-fpm-legacy/access/$pool.log
; uncomment if php-imap is installed and used              <= 削除
; php_value[extension] = imap                              <= 削除

オプションですが推奨: www.conf を no-op にしますが、php-legacy-fpm の将来の更新で行われる可能性のあるこのファイルの変更を追跡できるようにします。

$ mv /etc/php-legacy/php-fpm.d/www.conf /etc/php-legacy/php-fpm.d/www.conf.package
$ echo "; just a no-op" > /etc/php-legacy/php-fpm.d/www.conf

systemd サービス php-fpm.service停止 および 無効化 します。php-fpm-legacy.serviceドロップインファイル を作成します。

/etc/systemd/system/php-fpm-legacy.service.d/override.conf
[Service]
ExecStart=
ExecStart=/usr/bin/php-fpm-legacy --nodaemonize --fpm-config /etc/php-legacy/php-fpm.conf --php-ini /etc/php-legacy/php-fpm.ini
ReadWritePaths=/var/lib/nextcloud
ReadWritePaths=/etc/webapps/nextcloud/config

systemd サービス php-fpm-legacy.service有効化 および 起動 します。

uWSGI 設定

(これは、アプリケーションサーバー uWSGI が使用されている場合にのみ適用されます。)

/etc/uwsgi/nextcloud.ini
php-set = open_basedir=...:/usr/lib/php-legacy/modules...
# uncomment if php-imap is installed and used               <= 削除
# php-set = extension=imap                                  <= 削除

Nginx 設定

アプリケーションサーバーへの特定のリクエストの転送が設定されているファイルを変更します。FPM の場合、例:

cloud.mysite.com.conf
fastcgi_pass unix:/run/php-fpm-legacy/nextcloud.sock;

uWSGI の場合、適応する必要はありません。

Apache HTTP server 設定

Apache の HTTP サーバーとアプリケーションサーバーとして FPM を使用する場合は、構成内でこの行を調整してください。

SetHandler "proxy:unix:/run/php-fpm-legacy/nextcloud.sock|fcgi://nextcloud/"

uWSGI の場合、適応する必要はありません。

バックグラウンドジョブ

Nextcloud のスケジュールされたバックグラウンドジョブの ドロップインファイル を更新します。

/etc/systemd/system/nextcloud-cron.service.d/override.conf
[Service]
ExecStart=
ExecStart=/usr/bin/php-legacy -c /etc/webapps/nextcloud/php.ini -f /usr/share/webapps/nextcloud/cron.php

Pacman フック

pacman フック /etc/pacman.d/hooks/10-nextcloud.hook も調整する必要があります。Exec で始まる行を次のように変更します。

/etc/pacman.d/hooks/10-nextcloud.hook
Exec = /usr/bin/runuser -u nextcloud -- /usr/bin/php-legacy --php-ini /etc/webapps/nextcloud/php.ini /usr/share/webapps/nextcloud/occ upgrade

そうしないと、Nextcloud の次回のアップグレード中に pacman が /usr/bin/php が見つからないというエラーを表示します。

クリーンアップ

古くなった可能性のあるファイルとディレクトリをクリーンアップすることを忘れないでください。潜在的な候補者は次のとおりです。

/usr/lib/php
/etc/php

1 つ以上のアプリの奇妙な動作

Nextcloud アプリのファイルが含まれるフォルダーは 2 つの場所にあります。

  • /usr/share/webapps/nextcloud/apps (別名読み取り専用アプリディレクトリ) これは、nextcloud パッケージとアプリパッケージ (例: nextcloud-app-contacts) が Nextcloud アプリを構成するファイルを含むフォルダーを配置する場所です。
  • /var/lib/nextcloud/apps (別名書き込み可能なアプリディレクトリ) ここには、GUI または occ app:install コマンドを介してインストールされたアプリのファイルが含まれるフォルダーがあります。

アプリのファイルが両方のディレクトリ (特に異なるバージョン) で見つかると、あらゆる種類の奇妙なことが発生する可能性があります。具体的な ケース では、連絡先 アプリが読み取り専用アプリディレクトリと書き込み可能なアプリディレクトリの両方に存在する可能性があります。その結果、GUI に連絡先を含むページは表示されませんでした。ブラウザの Javascript コンソールに次のエラーメッセージが表示されました。

Uncaught Error: Could not find initial state contactsinteraction of contacts

両方の場所にアプリが存在するかどうかを確認します。アプリフォルダーを読み取り専用ディレクトリまたは書き込み可能なディレクトリのどちらで削除するかを確認するには、アプリがパッケージの一部であるかどうかを確認します。

# cd /usr/share/webapps/nextcloud/apps
# pacman -Qo * >/dev/null

報告されたすべてのフォルダー

error: No package owns ....

(書き込み可能なアプリディレクトリにもあります) は、/usr/share/webapps/nextcloud/apps から安全に削除できます。他の二重インストールされたアプリ (つまり、パッケージに属するアプリ) は、/var/lib/nextcloud/apps から削除する必要があります。

コード整合性チェックの失敗に関する警告 (v23)

バージョン 23 では、PHP 8.1 との互換性を実現するために、Nextcloud の PHP コードに Arch Linux パッケージ用のパッチを広範囲に適用する必要がありました。この欠点は、Nextcloud の組み込みコード整合性チェックがすべてのパッチ適用ファイルで失敗することでした。管理者のビューに表示される対応する警告は無視できます。バージョン 24 は PHP 8.1 とネイティブ互換性があります。したがって、パッチは必要ないため、整合性に関する警告も表示されなくなります。

InnoDB は ROW_FORMAT=COMPRESSED を指定したテーブルの書き込みを拒否します

MariaDB バージョン >= 10.6 および < 10.6.6 は、データベースが圧縮された InnoDB に対して read-only を強制されているため、Nextcloud と互換性がありませんでした。] Nextcloud は、次の種類のテーブルを使用してきました (そして現在も使用しています)

MariaDB 10.6.0 から MariaDB 10.6.5 まで、COMPRESSED 行形式のテーブルはデフォルトで読み取り専用です。これは、書き込みサポートの削除と機能の廃止に向けた最初のステップとなることを目的としていました。
この計画は廃止され、MariaDB 10.6.6 以降、COMPRESSED テーブルはデフォルトで読み取り専用ではなくなりました。

さらに、この問題は Nextcloud によってすでに で対処 されています。Nextcloud v24 以降、Nextcloud の新規インストールでは行形式 COMPRESSED が使用されなくなりました。既存の (v24 より前の) インストールは行形式 COMPRESSED から自動的に移行されないことに注意してください。

結論: Arch Linux は 2022 年 2 月 10 日以降 MariaDB v10.6.6 以降を出荷しているため、おそらく影響を受けません。

この問題の影響を受ける可能性は低いですが、考えられる解決策がいくつかあります。

  • MariaDB 設定を調整します。
/etc/my.cnf.d/server.cnf
[mariadb-10.6]
  innodb_read_only_compressed=OFF
  • 対応する Nextcloud issueいくつかの コメント で提案されているように、MariaDB テーブルを行フォーマット COMPRESSED から DYNAMIC に移行してください。Nextcloud < v24 を使用している限り、新しいテーブルは再び行フォーマット COMPRESSED を使用しますので、同じ方法で移行する必要があります。
  • MariaDB を PostgreSQL に置き換え、Nextcloud インスタンスのデータを occ db:convert-type で移行します。詳細については、Nextcloud の ドキュメント を参照してください。

21.0.0 以上にアップグレードした後の権限とセットアップの問題

ノート: nextcloud 21.0.0 より前では、Web アプリケーションは http ユーザーを使用して実行されていました。これは、このユーザーのアプリケーション間アクセス (すべての Web アプリケーションのすべてのデータにアクセスできる) に関するセキュリティ上の問題です。

バージョン 21.0.0 以降、nextcloud は ウェブアプリケーションパッケージガイドライン にさらに厳密に従います。これにより、Web アプリケーションが実行される別のユーザー nextcloud が導入されます。

nextcloud < 21.0.0 からアップグレードした後、次のことを確認してください。

  • データディレクトリは /var/lib/nextcloud/data にあります。
  • 書き込み可能な apps ディレクトリは /var/lib/nextcloud/apps にあります。
  • data ディレクトリと書き込み可能な apps ディレクトリの両方と、その下にあるすべてのファイルは書き込み可能で、nextcloud ユーザーが所有します。
  • Web アプリケーション設定ファイルが /etc/webapps/nextcloud/config/ に存在し、そのディレクトリとコンテンツが nextcloud ユーザによって書き込み可能かつ所有されていること。
  • アプリケーションサーバ (FPMuWSGI など) が、http ユーザではなく nextcloud ユーザとして Web アプリケーションを実行するように設定されている。
  • 新しいユーザーで実行するように cron ジョブ/systemd タイマーを更新する。
  • 最後に、nextcloud インストール /usr/share/webapps/nextcloud への読み取りアクセスを、ウェブサーバーのユーザ http に許可します:
 # chown -R nextcloud:http /usr/share/webapps/nextcloud

access.log、error.log、nextcloud.log に手がかりがないログインループ

フォーラムの投稿 で述べられているように、この問題は、sessions ディレクトリに正しいアクセス許可を設定することで修正できます。 (詳細については、Nextcloud のドキュメントを参照してください) sessions ディレクトリが完全に欠落している可能性もあります。このディレクトリの作成については、システムと環境 に記載されています。

/var/lib/nextcloud は次のようになります。

drwxr-xr-x  6 nextcloud nextcloud 4096 17. Apr 00:56 ./
drwxr-xr-x 21 root      root      4096 17. Apr 00:53 ../
drwxr-xr-x  2 nextcloud nextcloud 4096 16. Feb 00:21 apps/
drwxrwx--- 10 nextcloud nextcloud 4096 16. Apr 13:46 data/
drwx------  2 nextcloud nextcloud 4096 17. Apr 01:04 sessions/

環境変数が利用できない

使用するアプリケーションサーバーに応じて、カスタム環境変数を Nextcloud の PHP コードに提供できます。

FPM

Nextcloudのドキュメント に従って、/etc/php-legacy/php-fpm.d/nextcloud.conf に 1 行以上追加してください:

/etc/php-legacy/php-fpm.d/nextcloud.conf
env[PATH] = /usr/local/bin:/usr/bin:/bin

uWSGI

/etc/uwsgi/nextcloud.ini に 1 行以上追加してください:

/etc/uwsgi/nextcloud.ini
env = PATH=/usr/local/bin:/usr/bin:/bin

2 番目の = の周囲に空白を入れてはいけないことに注意してください。

安全な接続を介してインスタンスにアクセスしていますが、インスタンスは安全でない URL を生成しています

管理設定で次のメッセージが表示された場合:

You are accessing your instance over a secure connection, however your instance is generating insecure URLs. This most likely means that you are behind a reverse proxy and the overwrite config variables are not set correctly. Please read the documentation page about this.

設定ファイルに以下を追加します: [8]

/etc/webapps/nextcloud/config/config.php
'trusted_proxies' => ['192.168.1.0'],
'overwriteprotocol' => 'https',

192.168.1.0 をパブリック IP に置き換えます。

Nextcloud が破損したインデックスを報告する (MariaDB)

たとえば、occ db: コマンド中または [管理] -> [ログ] で Nextcloud がインデックスの破損を報告した場合は、次のコマンドを実行してデータベースを修復できます。

$ mysqlcheck --check --auto-repair nextcloud -u nextcloud -p

コマンドが失敗した場合でも、破損したインデックスを含むテーブル TABLE が指摘されます。mariadb にログインして修復します。

$ mysql -u nextcloud -p
$ use nextcloud;
$ check table TABLE;
$ optimize table TABLE;
$ exit;

結果と一致するように TABLE を置き換えてください。

参照