「Nextcloud」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(同期)
 
(4人の利用者による、間の42版が非表示)
1行目: 1行目:
  +
[[Category:ファイル共有]]
{{lowercase title}}
 
[[Category:ウェブサーバー]]
+
[[Category:ウェブアプリケション]]
[[en:Owncloud]]
+
[[en:Nextcloud]]
[[fr:Owncloud]]
+
[[zh-hans:Nextcloud]]
 
{{Related articles start}}
 
{{Related articles start}}
{{Related|LAMP}}
+
{{Related|Apache HTTP Server}}
 
{{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|ownCloud]] はクラウドストレージを提供するためのソフトウェア群です。
 
   
  +
* ファイル共有
ownCloud のインストールと設定はどのウェブサーバーとデータベースを動かすかによって異なってきます。現在のところ wiki には [[#Apache の設定]] と [[#Nginx + uwsgi_php の設定]] が載っています。
 
  +
* 個人情報管理 ([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 は [https://owncloud.com/ ownCloud] のフォークです。ウィキペディアの [[Wikipedia:ja:Nextcloud#歴史|歴史]] を参照してください。
''ownCloud'' は[[:Category:ウェブサーバー|ウェブサーバー]]と [[PHP]]、[[:Category:データベース管理システム|データベース]]を必要とします。古典的な [[LAMP]] の組み合わせで問題なく動作し、[https://doc.owncloud.org/server/8.1/admin_manual/release_notes.html#recommended-setup-for-running-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 パッケージは [[ウェブアプリケーションパッケージガイドライン]] に準拠しています。これにより、特に、専用ユーザー (この場合は {{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|owncloud}} を[[インストール]]してください。
 
   
{{ic|/etc/php/php.ini}} で'''必要な'''以下のエクステョンをアンコメントします [https://doc.owncloud.org/server/8.2/admin_manual/installation/source_installation.html#prerequisites]:
+
{{Pkg|nextcloud}} パッケージをイストールします。尋ねられたら、PHP バージョンとして {{Pkg|php-legacy}} 選択します。これにより、かなりの数の依存パッケージが取り込まれます。すべての [https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation 必要な PHP 拡張機能] はこの方法で処理されます。
gd.so
 
iconv.so
 
xmlrpc.so
 
zip.so
 
   
  +
プレビュー生成用にパッケージ {{Pkg|php-legacy-imagick}} と {{Pkg|librsvg}} を追加インストールすることをお勧めします (できれば pacman オプション {{ic|--asdeps}} を使用した依存パッケージとして)。他のオプションの依存関係については、具体的な設定 (選択したデータベースなど) に応じて後で説明します。
また、{{Pkg|php-intl}} と {{Pkg|php-mcrypt}} をインストールして以下のエクステンションをアンコメントすることが [https://doc.owncloud.org/server/8.2/admin_manual/installation/source_installation.html#prerequisites 推奨] されています:
 
bz2.so
 
curl.so
 
intl.so
 
mcrypt.so
 
   
=== キャッシュ ===
+
== 設定 ==
   
  +
=== PHP ===
パフォーマンスを向上させるために、APCu による PHP キャッシュを使うことを推奨します。[[PHP#APCu]] を見てください。同じく OPCache も有効にすると有益です。[[PHP#OPCache]] を参照。
 
   
  +
このガイドは、PHP の中央構成ファイル {{ic|/etc/php-legacy/php.ini}} を改ざんするものではなく、他の PHP ベースのアプリケーションの設定に干渉する可能性のない場所に Nextcloud 固有の PHP 構成を配置します。これらの場所は次のとおりです。
APCu を有効にした後、以下のディレクティブを {{ic|/etc/webapps/owncloud/config/config.php}} に追加してください:
 
'memcache.local' => '\OC\Memcache\APCu',
 
   
  +
* {{ic|/etc/webapps/nextcloud/php.ini}} 内の {{ic|php.ini}} の専用コピー ({{ic|occ}} コマンドラインツールとバックグラウンドジョブ用)
{{Note|
 
  +
* アプリケーションサーバーの構成における対応する設定。これらについては、アプリケーションサーバーに関するセクションで説明します。
* [[PHP#設定|PHP 設定]]の {{ic|[apc]}} の下に {{ic|1=apc.enable_cli=1}} を追加してください。また、{{ic|/etc/php/conf.d/apcu.ini}} の {{ic|1=extension=apcu.so}} をアンコメントしてください。2015年7月12日現在、これらの設定をしないと [https://github.com/owncloud/core/issues/17329#issuecomment-119248944 複数] の [https://github.com/owncloud/documentation/issues/1233#issuecomment-120664134 問題] が発生します。
 
* 2016年1月4日現在、OwnCloud 8.2.2 では {{Pkg|php-apcu-bc}} パッケージに含まれている "APCu Backwards Compatibility Module" が必要です。パッケージをインストールしたら {{ic|/etc/php/conf.d/apcu.ini}} の {{ic|1=extension=apcu.so}} の後に {{ic|1=extension=apc.so}} を追加してください。}}
 
   
  +
{{ic|/etc/php-legacy/php.ini}} のコピーを {{ic|/etc/webapps/nextcloud}} に作成します。厳密に必要というわけではありませんが、コピーの所有権を変更します。
詳しくは [https://doc.owncloud.org/server/8.1/admin_manual/configuration_server/config_sample_php_parameters.html#memory-caching-backend-configuration 公式ドキュメント] を参照。
 
   
  +
{{bc|# chown nextcloud:nextcloud /etc/webapps/nextcloud/php.ini}}
=== /dev/urandom のアクセス ===
 
   
  +
Nextcloud の [https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation インストール手順] にリストされている前提条件のほとんどは、ベア PHP インストールですでに有効になっています。さらに、次の拡張機能を有効にします。
ownCloud 8.1.0-1 は {{ic|/dev/urandom}} にアクセスする必要があります。{{ic|php.ini}} で有効にしてください。
 
   
  +
{{hc|/etc/webapps/nextcloud/php.ini|2=
{{ic|php.ini}} の {{ic|open_basedir}} に {{ic|:/dev/urandom}} を追加します (末尾にスラッシュは付きません)。例:
 
  +
extension=bcmath
  +
extension=bz2
  +
extension=exif
  +
extension=gd
  +
extension=iconv
  +
extension=intl
  +
extension=sysvsem
  +
; in case you installed php-imagick (as recommended)
  +
extension=imagick
  +
}}
   
  +
{{ic|date.timezone}} を希望のタイムゾーンに設定します。例:
open_basedir = /srv/http/:/tmp/:/usr/share/pear/:/usr/share/webapps/:/dev/urandom
 
   
  +
{{hc|/etc/webapps/nextcloud/php.ini|2=
もしくは、{{ic|/etc/httpd/conf/extra/owncloud.conf}} の {{ic|php_admin_value open_basedir}} に {{ic|:/dev/urandom}} を追加するほうが良い結果が得られるかもしれません。
 
  +
date.timezone = Europe/Berlin
  +
}}
   
  +
PHP のメモリ制限を少なくとも 512MiB に引き上げます。
Nginx + uwsgi_php では上記の設定は反映されません。uwsgi_php の設定ファイルに {{ic|:/dev/urandom}} を指定してください:
 
   
  +
{{hc|/etc/webapps/nextcloud/php.ini|2=
{{hc|/etc/uwsgi/owncloud.ini|<nowiki>php-set = open_basedir=%(owncloud_data_dir):/tmp/:/usr/share/pear/:/usr/share/webapps/owncloud:/etc/webapps/owncloud:/dev/urandom</nowiki>}}
 
  +
memory_limit = 512M
  +
}}
   
  +
オプション: セキュリティを強化するには、{{ic|open_basedir}} を構成します。これにより、Nextcloud の PHP コードがファイルを読み書きできる場所が制限されます。実証済みの設定は、
=== データベースのサポート ===
 
使用するデータベースバックエンドにあわせて、{{ic|/etc/php/php.ini}} の以下の拡張をアンコメントしてください:
 
* [[MySQL]] の場合、{{ic|pdo_mysql.so}} をアンコメントしてください。
 
* [[PostgreSQL]] の場合、{{ic|pdo_pgsql.so}} と {{ic|pgsql.so}} をアンコメントして {{Pkg|php-pgsql}} をインストールしてください。
 
* [[Sqlite|SQLite]] の場合、{{ic|pdo_sqlite.so}} と {{ic|sqlite3.so}} をアンコメントして {{Pkg|php-sqlite}} をインストールしてください。
 
   
  +
{{hc|/etc/webapps/nextcloud/php.ini|2=
=== Exif のサポート ===
 
  +
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
[[公式リポジトリ]]から {{Pkg|exiv2}} をインストールして {{ic|php.ini}} で {{ic|exif.so}} エクステンションをアンコメントすることで exif サポートを有効化できます。
 
  +
}}
   
  +
設定する追加の拡張機能に応じて、このリストを拡張する必要がある場合があります (例: [[Redis]] を選択した場合は {{ic|/run/redis}})
=== オールインワンの Docker を使う ===
 
   
  +
この {{ic|php.ini}} は、{{ic|occ}} コマンド ラインツールとバックグラウンド ジョブ、つまり短時間実行される PHP プロセスによってのみ使用されるため、ここで opcache を設定する必要はありません。
''ownCloud'' のインストールと設定を素早く安全に行う方法として [[Docker]] を使うことができます。[https://index.docker.io/search?q=ownCloud Docker のリポジトリ] には始めから ''ownCloud'' がインストールされている完全な LAMP スタックのイメージが複数存在します。''Docker'' コンテナは基本的に [[chroot]] 環境よりも安全でありオーバーヘッドも少なくなります。Docker 上の ''ownCloud'' はかなり古いマシンでもスムーズに動作するでしょう。普通に ''ownCloud'' をインストールするよりも大抵は ''Docker'' をインストールしてから ''ownCloud'' イメージをインストールする方が簡単で時間がかかりません。
 
   
  +
=== Nextcloud ===
{{Note|Docker イメージは ownCloud の公式サポートがありません。}}
 
   
  +
次のエントリを Nextcloud の設定ファイルに追加します。
== Apache の設定 ==
 
   
  +
{{hc|/etc/webapps/nextcloud/config/config.php|2=
{{Note|[[Apache HTTP Server#PHP]] に書かれているようにして PHP を有効化してください。}}
 
  +
'trusted_domains' =>
  +
array (
  +
0 => 'localhost',
  +
1 => &apos;''cloud.mysite.com''&apos;,
  +
),
  +
'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}} はそれに応じて変更する必要があります。
Apache の設定ファイルを ownCloud の設定ディレクトリにコピーします:
 
# cp /etc/webapps/owncloud/apache.example.conf /etc/httpd/conf/extra/owncloud.conf
 
   
  +
=== システムと環境 ===
そして {{ic|/etc/httpd/conf/httpd.conf}} の一番下で設定ファイルをインクルードします:
 
Include conf/extra/owncloud.conf
 
   
  +
Nextcloud 固有の {{ic|php.ini}} が {{ic|occ}} ツールで使用されるようにするには、環境変数 {{ic|NEXTCLOUD_PHP_CONFIG}} を設定します。
セキュリティを確保するために、[https://doc.owncloud.org/server/8.0/admin_manual/installation/installation_wizard.html#setting-strong-directory-permissions ownCloud のインストールマニュアル] に書かれているようにディレクトリのパーティションを設定してください:
 
#!/bin/bash
 
ocpath='/usr/share/webapps/owncloud'
 
htuser='http'
 
htgroup='http'
 
find ${ocpath}/ -type f -print0 | xargs -0 chmod 0640
 
find ${ocpath}/ -type d -print0 | xargs -0 chmod 0750
 
chown -R root:${htuser} ${ocpath}/
 
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 root:${htuser} ${ocpath}/.htaccess
 
chown root:${htuser} ${ocpath}/data/.htaccess
 
chmod 0644 ${ocpath}/.htaccess
 
chmod 0644 ${ocpath}/data/.htaccess
 
   
  +
{{bc|1=
そして Apache ({{ic|httpd.service}}) を再起動します。
 
  +
$ export NEXTCLOUD_PHP_CONFIG=/etc/webapps/nextcloud/php.ini
  +
}}
   
  +
また、この設定を永続的にするには、この行を {{ic|.bashrc}} (または {{ic|.bash_profile}} ) に追加します。
ウェブブラウザで http://localhost/owncloud を開いて下さい。ユーザーアカウントを作成してインストールウィザードに従う必要があります。
 
   
  +
プライバシーとセキュリティの予防措置として、セッションデータ用の専用ディレクトリを作成します。
=== WebDAV ===
 
   
  +
{{bc|1=
OwnCloud には WebDAV の実装が付いておりデフォルトで有効になっていますが、Apache の実装と衝突する可能性があります。OwnCloud は {{ic|/etc/httpd/conf/httpd.conf}} で {{ic|mod_dav}} と {{ic|mod_dav_fs}} を無効化することを [http://forum.owncloud.org/viewtopic.php?f=17&t=7240 推奨] しています。
 
  +
# install --owner=nextcloud --group=nextcloud --mode=700 -d /var/lib/nextcloud/sessions
  +
}}
   
  +
== データベース ==
=== サブディレクトリで ownCloud を動かす ===
 
   
  +
[[MariaDB]]/MySQL は Nextcloud の標準的な選択肢です。
デフォルトの {{ic|owncloud.conf}} を {{ic|httpd.conf}} でインクルードすることで、ownCloud は80番ポートと localhost ドメインをコントロールします。
 
   
  +
:MySQL または MariaDB データベースが推奨されるデータベースエンジンです。[https://docs.nextcloud.com/server/stable/admin_manual/configuration_database/linux_database_configuration.html]
サブディレクトリで ownCloud を動作させたい場合は、{{ic|/etc/httpd/conf/extra/owncloud.conf}} を編集して include ファイルの {{ic|<nowiki><VirtualHost *:80> ... </VirtualHost></nowiki>}} の部分をコメントアウトしてください。
 
   
  +
Nextcloud のデータベースに関するほとんどの情報は、MariaDB/MySQL を扱います。Nextcloud 開発者は、[https://github.com/nextcloud/server/issues/5912#issuecomment-318568370|] があることを認めています。他のデータベースでは、あまり詳細な専門知識がありません。
== Nginx + php-fpm の設定 ==
 
   
  +
[[PostgreSQL]] は、MariaDB/MySQL と比較してパフォーマンスが向上し、全体的に癖が少ないと言われています。[[SQLite]] は主にテスト/開発インストールでサポートされており、運用環境では推奨されません。 [https://docs.nextcloud.com/server/stable/admin_manual/configuration_database/linux_database_configuration.html サポートされるデータベースのリスト] には、Oracle データベースも含まれています。この製品についてはここでは扱いません。
ownCloud の公式ドキュメントでは php-fpm で PHP を使っています。したがってそれが最もサポートされている構成になります。以下は Arch Linux で動作するように、[https://doc.owncloud.org/server/8.1/admin_manual/installation/nginx_configuration.html 推奨されるサーバー設定] から多少変更を加えています。{{pkg|php-fpm}} と SSL 証明書が必要です。
 
   
  +
=== MariaDB / MySQL ===
{{bc|<nowiki>
 
user http;
 
worker_processes auto;
 
   
  +
2013 年以降、[[MariaDB]] が Arch Linux のデフォルトの MySQL 実装になっているため [https://archlinux.org/news/mariadb-replaces-mysql-in-repositories/] 、このテキストでは MariaDB についてのみ言及しています。
events {
 
worker_connections 1024;
 
}
 
   
  +
Nextcloud と同じホストでデータベースを実行する場合は、[[MariaDB#Configuration|configure]] および [[起動]] {{Pkg|mariadb}} をインストールします (まだ実行していない場合)。詳細については、対応する [[MariaDB|article]] を参照してください。{{ic|mariadb-install-db}} で MariaDB を初期化することを忘れないでください。セキュリティを強化するために、MariaDB を [[MariaDB#Unix ソケット経由でのみローカルでアクセスを有効にする|ローカルの Unix ソケットでのみリッスンする]] ように設定することをお勧めします。
http {
 
 
#sendfile on; # Appears to cause problems with webdav.
 
#tcp_nopush on;
 
   
  +
{{hc|/etc/my.cnf.d/server.cnf|2=
server {
 
  +
[mysqld]
listen 80;
 
  +
skip_networking
server_name owncloud.example.com;
 
  +
}}
# enforce https
 
return 301 https://$server_name$request_uri;
 
}
 
   
  +
Nextcloud 独自のドキュメント [https://docs.nextcloud.com/server/stable/admin_manual/configuration_database/linux_database_configuration.html#database-read-committed-transaction-isolation-level を推奨] では、トランザクション分離レベルを READ-COMMITTED に設定します。これは、多くの同時トランザクションによる高負荷が予想される場合に特に重要です。
server {
 
include mime.types;
 
default_type application/octet-stream;
 
   
  +
{{hc|/etc/my.cnf.d/server.cnf|2=
listen 443 ssl;
 
  +
[mysqld]
server_name owncloud.example.com;
 
  +
transaction_isolation=READ-COMMITTED}}
   
  +
{{ic|1=binlog_format=ROW}} を設定するというもう 1 つの推奨事項は廃止されました。最近の MariaDB バージョンのデフォルトの {{ic|MIXED}} は、推奨される {{ic|ROW}} と少なくとも同じくらい優れています。いずれの場合も、設定はレプリケーションが適用される場合にのみ関係します。
ssl_certificate /etc/ssl/server.crt;
 
ssl_certificate_key /etc/ssl/server.key;
 
   
  +
データベースをユーザー root で CLI ツール {{ic|mysql}} を起動します。(デフォルトのパスワードは空ですが、できるだけ早く変更してください。)
# Add headers to serve security related headers
 
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;
 
   
  +
{{bc|$ mysql -u root -p}}
# Path to the root of your installation
 
root /usr/share/webapps/owncloud;
 
# set max upload size
 
client_max_body_size 10G;
 
fastcgi_buffers 64 4K;
 
   
  +
Nextcloud のユーザーとデータベースを作成します。
# Disable gzip to avoid the removal of the ETag header
 
gzip off;
 
   
  +
{{bc|
# Uncomment if your server is build with the ngx_pagespeed module
 
  +
CREATE USER 'nextcloud'@'localhost' IDENTIFIED BY &apos;''db-password''&apos;;
# This module is currently not supported.
 
  +
CREATE DATABASE IF NOT EXISTS nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
#pagespeed off;
 
  +
GRANT ALL PRIVILEGES on nextcloud.* to 'nextcloud'@'localhost';
  +
FLUSH privileges;}}
   
  +
({{ic|''db-password''}} は、選択する必要がある DB ユーザー ''nextcloud'' の実際のパスワードのプレースホルダーです。) {{ic|\q}} でツールを終了します。
rewrite ^/caldav(.*)$ /remote.php/caldav$1 redirect;
 
rewrite ^/carddav(.*)$ /remote.php/carddav$1 redirect;
 
rewrite ^/webdav(.*)$ /remote.php/webdav$1 redirect;
 
   
  +
{{Note|MariaDB は、UTF8 の意味についての理解に欠陥があり、その結果、コードポイント 0x10000 以上の文字 (絵文字など) を保存できなくなります。彼らは、''utf8mb4'' と呼ばれる新しいエンコーディングを導入することにより、バージョン 5.5 でこの問題を ''修正'' しました。結論: MariaDB の ''utf8'' は決して使用せず、常に ''utf8mb4'' を使用してください。移行が必要な場合は、[https://docs.nextcloud.com/server/stable/admin_manual/configuration_database/mysql_4byte_support.html] を参照してください。}}
index index.php;
 
error_page 403 /core/templates/403.php;
 
error_page 404 /core/templates/404.php;
 
   
  +
Nextcloud インストールのデータベースとして MariaDB を使用することに決めたので、対応する PHP 拡張機能を有効にする必要があります。
location = /robots.txt {
 
allow all;
 
log_not_found off;
 
access_log off;
 
}
 
   
  +
{{hc|/etc/webapps/nextcloud/php.ini|2=
location ~ ^/(?:\.htaccess|data|config|db_structure\.xml|README){
 
  +
extension=pdo_mysql
deny all;
 
}
+
}}
   
  +
これ以上の設定 (MariaDB に関連する) は必要ありません (Nextcloud の [https://docs.nextcloud.com/server/stable/admin_manual/configuration_database/linux_database_configuration.html#cconfiguring-a-mysql-or-mariadb] に記載されている情報とは異なります) データベース管理者マニュアル])
location / {
 
# The following 2 rules are only needed with webfinger
 
rewrite ^/.well-known/host-meta /public.php?service=host-meta last;
 
rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json last;
 
   
  +
次に、Nextcloud のデータベーススキーマを次のように設定します。
rewrite ^/.well-known/carddav /remote.php/carddav/ redirect;
 
rewrite ^/.well-known/caldav /remote.php/caldav/ redirect;
 
   
  +
{{bc|1=
rewrite ^(/core/doc/[^\/]+/)$ $1/index.html;
 
  +
$ 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" コマンドラインツールの使用]] を参照してください。
try_files $uri $uri/ /index.php;
 
}
 
   
  +
=== PostgreSQL ===
location ~ \.php(?:$|/) {
 
fastcgi_split_path_info ^(.+\.php)(/.+)$;
 
include fastcgi_params;
 
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
 
fastcgi_param PATH_INFO $fastcgi_path_info;
 
fastcgi_param HTTPS on;
 
fastcgi_param modHeadersAvailable true; #Avoid sending the security headers twice
 
# Unix domain sockets are faster than TCP sockets
 
fastcgi_pass unix:/run/php-fpm/php-fpm.sock;
 
}
 
   
  +
PostgreSQL の詳細については、対応する [[PostgreSQL|article]] を参照してください。 Nextcloud と同じホストでデータベースを実行する場合は、[[PostgreSQL#初期構成|設定]] および {{Pkg|postgresql}} を [[起動]] (まだ実行していない場合) をインストールします。このシナリオでのセキュリティを強化するには、PostgreSQL を [[PostgreSQL#UNIX ソケット経由で排他的にアクセスできるように PostgreSQL を構成する|ローカルの UNIX ソケットでのみリッスンする]] ように構成することをお勧めします。
# Optional: set long EXPIRES header on static assets
 
location ~* \.(?:jpg|jpeg|gif|bmp|ico|png|css|js|swf)$ {
 
expires 30d;
 
# Optional: Don't log access to assets
 
access_log off;
 
}
 
   
  +
{{hc|/var/lib/postgres/data/postgresql.conf|2=
}
 
  +
listen_addresses = <nowiki>''</nowiki>
}
 
  +
}}
</nowiki>}}
 
   
  +
特に、{{ic|initdb}} を使用してデータベースを初期化することを忘れないでください。それが完了したら、PostgreSQL の CLI ツール {{ic|psql}} を起動します。
{{pkg|php-fpm}} を http ユーザーで動作させるように設定して、上記のようにパーミッションを設定すれば、動作するはずです。ownCloud の設定の {{ic|config.example.php}} を手動でコピーするのは推奨されていません。最初の実行時に自動的に生成されます。{{ic|/usr/share/webapps/owncloud/data}} という ownCloud のデータディレクトリを作成して所有者を root:http にすることで自動設定が行われます。
 
   
  +
{{bc|
== Nginx + uwsgi_php の設定 ==
 
  +
$ sudo -u postgres -- psql
  +
}}
   
  +
そして、データベースユーザー {{ic|nextcloud}} と同じ名前のデータベースを作成します
Apache を使わずに、{{pkg|uwsgi-plugin-php}} アプリケーションサーバーを使って ownCloud を固有のプロセスで動かすことができます。uWSGI 自体にリソースの使用を制限するための機能が豊富に含まれており、アプリケーションのセキュリティを強化したり、専用のユーザーで動くようにプロセスを分けられます。
 
   
  +
{{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'' のパスワードのプレースホルダーです。)
*まず最初に Nginx サーバーをセットアップしてください。詳しくは [[Nginx]] のページを参照。
 
*{{ic|/etc/nginx/nginx.conf}} ファイルの http セクションに以下の行でサーバーを設定:
 
{{bc|<nowiki>
 
# your nginx-server configs
 
# ...
 
   
  +
追加パッケージ {{Pkg|php-pgsql}} を依存関係としてインストールし (pacman オプション {{ic|--asdeps}})、{{ic|/etc/webapps/nextcloud/php.ini}} で対応する PHP 拡張機能を有効にします。
# uncomment to run as user and group http
 
#user http;
 
   
  +
{{hc|/etc/webapps/nextcloud/php.ini|2=
http {
 
  +
extension=pdo_pgsql
# more configs
 
  +
}}
# ...
 
server {
 
listen 80;
 
#listen 443 ssl;
 
server_name localhost;
 
   
  +
Now setup Nextcloud's database schema with:
#ssl_certificate cert.pem;
 
#ssl_certificate_key key.pem;
 
   
  +
{{bc|1=
#ssl_session_cache shared:SSL:1m;
 
  +
$ occ maintenance:install \
#ssl_session_timeout 5m;
 
  +
--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" コマンドラインツールの使用]] を参照してください。
#ssl_ciphers HIGH:!aNULL:!MD5;
 
#ssl_prefer_server_ciphers on;
 
   
  +
== アプリケーションサーバー ==
#this is to avoid Request Entity Too Large error
 
  +
client_max_body_size 1000M;
 
  +
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 広範囲に文書化されています] ですが、膨大な量の文書が混乱を招き、扱いにくくなる可能性があります。
# deny access to some special files
 
  +
location ~ ^/(data|config|\.ht|db_structure\.xml|README) {
 
  +
=== uWSGI ===
deny all;
 
  +
}
 
  +
uWSGI には独自の [[uWSGI|article]] があります。そこでは役立つ情報がたくさん見つかります。{{pkg|uwsgi}} とプラグイン {{pkg|uwsgi-plugin-php-legacy}} を、できれば依存関係として、つまり {{ic|--asdeps}} とともにインストールします。Nextcloud のコードを uWSGI で (または uWSGI 内で) 実行するには、1 つの uWSGI 固有の構成ファイル ({{ic|nextcloud.ini}}) を構成し、1 つの systemd サービスを定義する必要があります。
# pass all .php or .php/path urls to uWSGI
 
  +
location ~ ^(.+\.php)(.*)$ {
 
  +
{{Warning|最近、uWSGI、特にその PHP プラグインのメンテナンスがまばらになっていることに言及しなければなりません[https://github.com/unbit/uwsgi/issues/2287] これはすでに [https://bugs.archlinux.org/task/73470 の問題] を引き起こしており、Arch Linux パッケージの管理者 (アップストリームではない) が uWSGI コードにパッチを適用することによってのみ解決できます。}}
include uwsgi_params;
 
  +
uwsgi_modifier1 14;
 
  +
==== nextcloud.ini ====
#Uncomment line below if you get connection refused error. Remember to comment out line with "uwsgi_pass 127.0.0.1:3001;" below
 
  +
#uwsgi_pass unix:/run/uwsgi/owncloud.sock;
 
  +
{{Pkg|nextcloud}} パッケージには、適切な場所 {{ic|/etc/uwsgi/nextcloud.ini}} にサンプル構成ファイルがすでに含まれています。ほとんどの場合、このファイルを要件と設定に適合させる必要があります。 [https://gist.githubusercontent.com/wolegis/fc0c01882b694777a6565aa1d0a4da47 バージョンに多くのコメント付き変更が含まれている] を見つけます (パッケージのバージョンと比較) これは、個人使用 (つまり、中程度の負荷) を目的とした、シンプルな Nextcloud インストールを前提としています。
uwsgi_pass 127.0.0.1:3001;
 
  +
}
 
  +
一般に、有効な拡張機能、拡張機能固有の設定、および {{ic|open_basedir}} を {{ic|/etc/webapps/nextcloud/php.ini}} と同期させます (opcache を除く)
# everything else goes to the filesystem,
 
  +
# but / will be mapped to index.php and run through uwsgi
 
  +
{{Tip|{{ic|/etc/uwsgi/nextcloud.ini}} への変更は広範囲になる可能性があります。パッケージ {{Pkg|nextcloud}} によって提供される元のファイルに変更があった場合に備えて、パッケージの更新中に {{ic|nextcloud.ini.pacnew}} という名前のファイルが作成されます。この後者のファイルの変更をより適切に追跡し、それらを {{ic|/etc/uwsgi/nextcloud.ini}} に適用するには、次のアプローチを適用できます。:
location / {
 
  +
root /usr/share/webapps/owncloud;
 
  +
* パッケージによって提供されるファイルのコピーを (パッケージから抽出するなどして) 作成し、それを {{ic|nextcloud.ini.package}} として保存します。
index index.php;
 
  +
* パッケージ {{Pkg|nextcloud}} の更新により {{ic|nextcloud.ini.pacnew}} が生成される場合は、{{ic|diff nextcloud.ini.package nextcloud.ini.pacnew}} で変更を識別できます。
rewrite ^/.well-known/carddav /remote.php/carddav/ redirect;
 
  +
* ご使用のバージョンに適しているかどうかに応じて、変更を {{ic|nextcloud.ini}} に選択的に適用します。
rewrite ^/.well-known/caldav /remote.php/caldav/ redirect;
 
  +
}}
}
 
  +
}
 
  +
==== uWSGI サービス ====
  +
  +
{{pkg|uwsgi}} パッケージは、テンプレートユニットファイル ({{ic|uwsgi@.service}}) を提供します。インスタンス ID (ここでは ''nextcloud'') は、適切な構成ファイルを選択するために使用されます。 {{ic|uwsgi@nextcloud.service}} を [[有効化]] および [[起動]] します。
  +
  +
このように開始されたサービスが複数 (例: 2 つ) あり、これがリソースの無駄であると感じた場合は、[https://uwsgi-docs.readthedocs.io/en/latest/emperor.html emperor モード] の使用を検討してください。
  +
  +
=== FPM ===
  +
  +
アプリケーションサーバーとして ''FPM'' を使用する場合は、{{pkg|php-legacy-fpm}} を依存パッケージ ({{ic|--asdeps}}) としてインストールしてください。
  +
  +
構成は、''FPM'' によって提供されるすべてのアプリケーションに関連する {{ic|php.ini}} のコピーと、アプリケーション (ここでは Nextcloud) に固有のいわゆるプールファイルで構成されます。最後に、systemd サービスファイルを調整する必要があります。
  +
  +
==== php-fpm.ini ====
  +
  +
前に述べたように、この記事では、{{ic|/etc/php-legacy/php.ini}} にある PHP の中央設定の変更を回避しています。代わりに、''FPM'' 固有のコピーを作成します。
  +
  +
{{bc|
  +
# cp /etc/php-legacy/php.ini /etc/php-legacy/php-fpm.ini
  +
}}
  +
  +
所有者であり、root のみが書き込み可能であることを確認してください ({{ic|-rw-r--r-- 1 root root ... php-fpm.ini}}) 演算キャッシュを有効にします。つまり、行のコメントを解除します。
  +
  +
{{hc|/etc/php-legacy/php-fpm.ini|2=;zend_extension=opcache}}
  +
  +
そして、次のパラメータを既存の行 {{ic|[opcache]}} の下に配置します。
  +
  +
{{hc|/etc/php-legacy/php-fpm.ini|2=
  +
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
  +
}}
  +
  +
{{Warning|{{ic|php_value[...]}} および {{ic|php_flag[...]}} を使用してこれらの設定をプールファイルに入れようとしないでください。''FPM'' プロセスは、最初のリクエストで常にクラッシュします。}}
  +
  +
==== nextcloud.conf ====
  +
  +
次に、''FPM'' 用のいわゆるプールファイルを作成する必要があります。これは、Nextcloud アプリケーション用の専用の ''FPM'' プロセスを生成する役割を果たす。ファイル {{ic|/etc/php-legacy/php-fpm.d/nextcloud.conf}} を作成します - これが [https://gist.githubusercontent.com/wolegis/0d9c83acd0c8bf83bcfb3983931bc364 機能バージョン] を開始点として使用できます。
  +
  +
もう一度、このプールファイルが 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'' によって提供されるすべてのアプリケーションに適用されることに注意してください。
  +
  +
{{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}} に変更することを忘れないでください。}}
  +
  +
==== Systemd サービス ====
  +
  +
''FPM'' は systemd サービスとして実行されます。Nextcloud を実行できるようにするには、サービス構成を変更する必要があります。これは、[[ドロップインファイル]] を使用して実現するのが最適です。
  +
  +
{{hc|/etc/systemd/system/php-fpm-legacy.service.d/override.conf|2=
  +
[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}} を使用する起動コマンドに置き換えます。
  +
* ディレクトリ {{ic|/var/lib/nextcloud}} および {{ic|/etc/webapps/nextcloud/config}} (および以下のすべて) が書き込み可能になります。 元のサービス定義の {{ic|1=ProtectSystem=full}} により、{{ic|/usr}}、{{ic|/boot}}、および {{ic|/etc}} が読み取り専用でマウントされます。''FPM'' プロセスの場合。
  +
  +
''php-fpm-legacy'' サービスを [[有効化]] および [[起動]] することを忘れないでください。
  +
  +
==== /etc を整理整頓する ====
  +
  +
Nextcloud パッケージは、uWSGI 設定ファイル {{ic|/etc/uwsgi/nextcloud.ini}} を無条件に作成します。もちろん、''uWSGI'' の代わりに ''FPM'' を実行する場合には役に立ちません (そして、何の害もありません) それでも削除したい場合は、次の行を {{ic|/etc/pacman.conf}} に追加してください。
  +
  +
{{hc|/etc/pacman.conf|2=
  +
# uWSGI configuration that comes with Nextcloud is not needed
  +
NoExtract = etc/uwsgi/nextcloud.ini
  +
}}
  +
  +
== Web サーバー ==
  +
  +
選択できる Web サーバーは豊富にあります。最終的にどのオプションを選択する場合でも、Nextcloud アプリケーションは独自のシステムユーザー ''nextcloud'' で実行する必要があることに留意する必要があります。したがって、リクエストを上記のアプリケーションサーバーのいずれかに転送する必要があります。
  +
  +
=== 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}} に作成します。
  +
  +
上にリンクされている Nextcloud ドキュメントのサンプル ''nginx'' 構成を使用する場合は、ルートディレクトリを次のように変更する必要があります。
  +
  +
{{hc|''cloud.mysite.com''.conf| root /usr/share/webapps/nextcloud;}}
  +
  +
ブロック {{ic|upstream php-handler { ... } }} を使用する必要はありません。PHP URI を含むリクエストのアプリケーション サーバーへの転送を処理する {{ic|location}} ブロックに {{ic|fastcgi_pass unix:/run/php-fpm-legacy/nextcloud.sock;}} を指定するだけです。''FPM'' の代わりに ''uWSGI'' を使用する場合は、この {{ic|location}} ブロックを次のように置き換えます。
  +
  +
{{hc|''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;
 
}
 
}
  +
}}
</nowiki>}}
 
*次に [[Uwsgi|uWSGI]] の設定ファイルを作成します。{{ic|/etc/uwsgi/owncloud.ini}} を使うと良いでしょう:
 
{{bc|<nowiki>
 
[uwsgi]
 
master = true
 
socket = 127.0.0.1:3001
 
   
  +
適応する必要がある可能性のあるもの (すべてではありません):
# Change this to where you want ownlcoud data to be stored (maybe /home/owncloud)
 
owncloud_data_dir = /usr/share/webapps/owncloud/data/
 
chdir = %(owncloud_data_dir)
 
   
  +
* サーバー名 ({{ic|server_name}} 句2倍)、つまり Nextcloud インストールが到達可能な URL のサーバー部分です。
plugins = php
 
  +
* SSL/TLS に使用する証明書とキーの名前。
php-docroot = /usr/share/webapps/owncloud
 
  +
* アクセスログをどこに書き込むか。
php-index = index.php
 
  +
* [[Certbot]] (または他の ACME クライアント) がドメイン検証チャレンジを置く場所。ここでは、{{ic|try_files}} の代わりに {{ic|alias}} を使用する方が適切でしょう。
  +
* Nextcloud のインストール先へのパス。(URL のサーバー名&amp;ポートセクションの右側の部分)
  +
* 使用しているアプリケーションサーバー (uWSGI または FPM)、つまり PHP コードをトリガーする必要があるリクエストを nginx がどこにどのように渡すか。(上記参照)
  +
* [[Wikipedia:OCSP_stapling|OCSP_stapling]] を設定します。
   
  +
nginx は FastCGI と uwsgi の両方のプロトコルをネイティブにサポートしているため、追加のモジュールをインストールする必要はありません。
# only allow these php files, I don't want to inadvertently run something else
 
php-allowed-ext = /index.php
 
php-allowed-ext = /public.php
 
php-allowed-ext = /remote.php
 
php-allowed-ext = /cron.php
 
php-allowed-ext = /status.php
 
php-allowed-ext = /settings/apps.php
 
php-allowed-ext = /core/ajax/update.php
 
php-allowed-ext = /core/ajax/share.php
 
php-allowed-ext = /core/ajax/requesttoken.php
 
php-allowed-ext = /core/ajax/translations.php
 
php-allowed-ext = /search/ajax/search.php
 
php-allowed-ext = /search/templates/part.results.php
 
php-allowed-ext = /settings/admin.php
 
php-allowed-ext = /settings/users.php
 
php-allowed-ext = /settings/personal.php
 
php-allowed-ext = /settings/help.php
 
php-allowed-ext = /settings/ajax/getlog.php
 
php-allowed-ext = /settings/ajax/setlanguage.php
 
php-allowed-ext = /settings/ajax/setquota.php
 
php-allowed-ext = /settings/ajax/userlist.php
 
php-allowed-ext = /settings/ajax/createuser.php
 
php-allowed-ext = /settings/ajax/removeuser.php
 
php-allowed-ext = /settings/ajax/enableapp.php
 
php-allowed-ext = /core/ajax/appconfig.php
 
php-allowed-ext = /settings/ajax/setloglevel.php
 
php-allowed-ext = /ocs/v1.php
 
   
  +
=== Apache HTTP server ===
# 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=%(owncloud_data_dir):/tmp/:/usr/share/pear/:/usr/share/webapps/owncloud:/etc/webapps/owncloud:/dev/urandom
 
php-set = session.save_path=/tmp
 
php-set = post_max_size=1000M
 
php-set = upload_max_filesize=1000M
 
php-set = always_populate_raw_post_data=-1
 
   
  +
[[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'' を適用する必要があります。
# load all extensions only in this instance of php, no need to edit global php.ini
 
php-set = extension=bz2.so
 
php-set = extension=curl.so
 
php-set = extension=intl.so
 
php-set = extension=pdo_sqlite.so
 
php-set = extension=exif.so
 
php-set = extension=gd.so
 
php-set = extension=imagick.so
 
php-set = extension=gmp.so
 
php-set = extension=iconv.so
 
php-set = extension=mcrypt.so
 
php-set = extension=sockets.so
 
php-set = extension=sqlite3.so
 
php-set = extension=xmlrpc.so
 
php-set = extension=xsl.so
 
php-set = extension=zip.so
 
# uncomment following line to use mysql-backend
 
#php-set = extension=pdo_mysql.so
 
   
  +
[[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'' の両方のモジュールが付属していることに注意してください。必要に応じてロードする必要があります。
processes = 10
 
cheaper = 2
 
cron = -3 -1 -1 -1 -1 /usr/bin/php -f /usr/share/webapps/owncloud/cron.php 1>/dev/null
 
   
  +
Nextcloud を実行するには、次の Apache モジュールが必要です。
# Uncomment line below and replace http with a specific user/group name which you want uwsgi to run with.
 
#uid = http
 
#gid = http
 
</nowiki>}}
 
   
  +
{{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
[[Uwsgi|uWSGI]] には設定ファイルをインスタンスの識別子として使ってアプリケーションを起動したり有効化できる[[Systemd#ユニットを使う|テンプレートユニット]]が入っています。例えば:
 
  +
LoadModule rewrite_module modules/mod_rewrite.so
# systemctl start uwsgi@owncloud.socket
 
  +
LoadModule ssl_module modules/mod_ssl.so
上のコマンドは {{ic|/etc/uwsgi/owncloud.ini}} 設定ファイルを参照して必要に応じて起動します。
 
  +
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
 
  +
LoadModule proxy_module modules/mod_proxy.so
ブート時にデフォルトで uwsgi サービスを有効化するには、次を実行:
 
# systemctl enable uwsgi@owncloud.socket
 
   
  +
# either this one in case you use FPM
{{Note|[http://0pointer.de/blog/projects/socket-activation.html systemd のソケットアクティベーション] を利用することで、インスタンスへの接続がない間は無駄にリソースを消費しないようにしています。すぐに有効化したい場合は、{{ic|.socket}} という部分を削除してサービスを起動・有効化してください。}}
 
  +
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 設定パラメータを取り込むには、次のディレクティブのコメントを解除します。
[[Uwsgi#サービスの起動]]も参照。
 
  +
  +
{{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'' に依存していることに注意してください。}}
   
 
== 同期 ==
 
== 同期 ==
377行目: 457行目:
 
=== デスクトップ ===
 
=== デスクトップ ===
   
公式クライアントは {{Pkg|owncloud-client}} パッケージでインストールできます。[[AUR]] には様々なバージョンが存在します: {{AUR|owncloud-client-beta}}{{Broken package link|{{aur-mirror|owncloud-client-beta}}}}, {{AUR|owncloud-client-git}} and {{AUR|owncloud-client-qt5}}{{Broken package link|{{aur-mirror|owncloud-client-qt5}}}}。使用方法ドキュメンの [http://doc.owncloud.org/server/7.0/user_manual/files/sync.html ちらのページ] 書かれています
+
公式クライアントは{{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 現在)。
403行目: 491行目:
 
ownCloud をマウントするには、次のコマンドを使います:
 
ownCloud をマウントするには、次のコマンドを使います:
   
# mount https://own.example.com/remote.php/webdav /path/to/mount
+
# mount -t davfs https://own.example.com/remote.php/webdav /path/to/mount
   
 
{{ic|/etc/fstab}} にエントリを作成することもできます:
 
{{ic|/etc/fstab}} にエントリを作成することもできます:
   
  +
{{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|自動でマウントしたい場合、[[Davfs2#接続情報の保存]]で説明されているようにファイルにユーザー名 (と必要であればパスワード) を保存できます。}}
}}
 
  +
{{Tip|自動でマウントできるように [[Davfs#通常ユーザーでマウント]] で説明されているようにファイルにユーザー名 (と必要であればパスワード) を保存できます。}}
 
{{Note|ディレクトリは作成・コピーできるのに、ファイルの作成やコピーができない場合、[[Davfs#ファイルの作成やコピーができない]] を見てください。}}
+
{{Note|ディレクトリは作成・コピーできるのに、ファイルの作成やコピーができない場合、[[Davfs2#ファイルの作成やコピーができない]]を見てください。}}
  +
  +
=== GNOME Files (Nautilus) でファイルをマウントする ===
  +
  +
Nautilus ('+ Other Locations') では WebDAV プロトコルを使ってファイルに直接アクセスできます。Nextcloud のインストール Web GUI で表示されるリンクを使ってください (通常は {{ic|<nowiki>https://cloud.mysite.com/remote.php/webdav/</nowiki>}}) ただしプロトコルの名前は {{ic|https}} から {{ic|davs}} に置き換えてください。Nautilus は接続時にユーザー名とパスワードを要求します。
   
 
=== Android ===
 
=== Android ===
   
小額で使うことができる公式 Android アプリ [https://play.google.com/store/apps/details?id=at.bitfire.davdroid Play ストア] にあり、無料で使えるアプリが [https://f-droid.org/app/at.bitfire.davdroid F-Droid] にあります。
+
Nextcloud の公式アプリ [https://play.google.com/store/apps/details?id=com.nextcloud.client Google Play] [https://f-droid.org/packages/com.nextcloud.client/ F-Droid] からダウンロードできます。
   
連絡先カレンダーの同期を有効するには:
+
連絡先カレンダーの同期を有効するには ([[Android]] 4 以上):
  +
# [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]) をダウンロード。
* Android 4 以上を使っている場合:
 
  +
# ''アカウント'' 設定で新しい DAVdroid アカウントを作成し、サーバー URL (例: {{ic|<nowiki>https://cloud.mysite.com</nowiki>}}) とログイン/パスワードのペアを指定します。
*# [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/ こちらの記事] には有用な情報が記載されています。
 
   
  +
{{Note|上記のセクション [[Nextcloud#Web サーバー| Web サーバー]] ''DAVdroid'' は適切な URL を自動的に見つけます。}}
* 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 推奨] されています。
 
   
=== 巨大なファイル ===
+
=== iOS ===
   
  +
[https://itunes.apple.com/us/app/nextcloud/id1125420102 App Store] から Nextcloud の公式アプリをダウンロードしてください。
WebDAV は大きなファイルを扱うのには向いていません、CPU とメモリを食いつぶしてしまいます。
 
   
  +
== ヒントとテクニック ==
現在のバージョンでは、ownCloud に大きなデータをコピーする良い方法はないように思われます。
 
   
  +
=== "occ" コマンドラインツールの使用 ===
対処法:
 
   
  +
サーバー管理に役立つツールは {{ic|occ}} です Nextcloud のドキュメント [https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/occ_command.html の詳細] を参照してください。{{ic|occ}} を使用すると、ユーザーの管理やアプリの構成など、多くの一般的なサーバー操作を実行できます。
大きなファイルをあなたの ownCloud に直接コピーし、データベースを完全リスキャンします (例えば [http://apps.owncloud.com/content/show.php?content=151948&forumpage=0&PHPSESSID=37b915160effcc0f37cc761ad2ab88be Re-scan filesystem] アドオンを使うことができます)。
 
   
  +
元の {{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}} に追加します。
ですが、この方法は将来 ownCloud が計画している end-to-end 暗号化が実装された時に使えなくなるかもしれないので、注意してください。
 
   
  +
推奨パッケージ {{Pkg|php-legacy}} の代わりにパッケージ {{Pkg|php}} を使用する場合は、{{ic|NEXTCLOUD_PHP}} も設定する必要があります。つまり、{{ic|1=export NEXTCLOUD_PHP=/usr/ bin/php}}
== 重要なノート ==
 
   
  +
{{Warning|キャッシュに {{pkg|php-apcu}} を使用する場合は、必ず {{ic|/etc/webapps/nextcloud/php.ini}} で {{ic|1= apc.enable_cli=1}} を設定してください。そうしないと、{{ic|occ}} コマンドは、APCu が適切に設定されていないというエラーを表示します。}}
* owncloud.example.xxx のようなサブドメインを使う場合、証明書でカバーされているか確認してください。そうでなければ、ownCloud クライアントや wevdav からの接続は失敗するかもしれません。
 
   
  +
=== Pacman フック ===
* ownCloud の [http://owncloud.org/sync-clients/ sync-clients] を使うことを計画しているなら、[[Network Time Protocol daemon|ntpd]] をインストールして ownCloud サーバーで実行してください。ntpd が実行されてないと、sync-client は失敗します。
 
   
  +
{{Pkg|nextcloud}} パッケージには、パッケージの更新後に Nextcloud データベースを自動的にアップグレードする [[pacman フック]] が付属しています。{{ic|/usr/share/doc/nextcloud/nextcloud.hook}} をご覧ください。
* 接続には [[LAMP#SSL|SSL 暗号化]]を追加してください!
 
(上記のように SSL 暗号化を追加する場合、{{ic|/etc/httpd/conf/extra/httpd-ssl.conf}} を編集して {{ic|DocumentRoot "/srv/http"}} を {{ic|DocumentRoot "/usr/share/webapps/owncloud"}} に変更してください。)
 
   
  +
残念ながら、このフックは {{ic|occ upgrade}} の実行時にグローバルの {{ic|php.ini}} を無条件に使用します。つまり、前述したように環境変数 {{ic|NEXTCLOUD_PHP_CONFIG}} の値は考慮されません。上記の [[Nextcloud#"occ" コマンドラインツールの使用|"occ" コマンドラインツールの使用]] で説明しています。
* ownCloud のアプリは他にも [http://apps.owncloud.com/ ここ] で探すことができます。
 
   
  +
考えられる回避策として、提供されたフックファイルのコピーを適切な場所に作成します。
* 新しいアプリケーションをインストールするには、アプリストアから zip をダウンロードして、それを {{ic|/srv/http/owncloud/apps/}} に展開します。その後、httpd を再起動してください:
 
   
  +
{{bc|
# systemctl restart httpd
 
  +
# mkdir -vp /etc/pacman.d/hooks
  +
# cp -a /usr/share/doc/nextcloud/nextcloud.hook /etc/pacman.d/hooks/10-nextcloud.hook
  +
}}
   
  +
{{ic|Exec}} で始まる行を次のように変更します。
サーバーにログインしてアプリセクションを開けば新しいアプリが追加されているはずです。
 
   
  +
{{hc|1=/etc/pacman.d/hooks/10-nextcloud.hook|2=
* HTTP のベーシック認証で ownCloud へのアクセスを保護するときは、"status.php" ファイルは認証から外して誰でもアクセスできるようにしてください [https://github.com/owncloud/mirall/issues/734]。
 
  +
Exec = /usr/bin/runuser -u nextcloud -- /usr/bin/php-legacy --php-ini /etc/webapps/nextcloud/php.ini /usr/share/webapps/nextcloud/occ upgrade
  +
}}
   
  +
=== Nextcloud をサブディレクトリで実行する ===
=== SABnzbd ===
 
   
  +
[[Nextcloud#Web サーバー|Web サーバー]] セクションの手順により、Nextcloud インストールが専用サーバー名 (例: {{ic|cloud.mysite.com}}) 経由でアクセスできるセットアップが行われます。Nextcloud をサブディレクトリに置きたい場合。例: {{ic|www.mysite.com/nextcloud}} の場合:
[[en2:SABnzbd|SABnzbd]] を使う場合、{{ic|sabnzbd.ini}} ファイルに以下を設定すると良いでしょう:
 
  +
folder_rename 0
 
  +
* nginx については、これを明示的に説明している Nextcloud のドキュメントのセクションを参照してください [https://docs.nextcloud.com/server/latest/admin_manual/installation/nginx.html#nextcloud-in-a-subdir-of-the-nginx ウェブルートトピック]
というのは ownCloud はアップロードされたファイルを速攻でスキャンするからです。展開された接頭辞などを SABnzbd が削除することを予防します。
 
  +
  +
* apache の場合は、インクルードされた {{ic|/etc/httpd/conf/extra/nextcloud.conf}} を編集して、{{ic|<nowiki><VirtualHost *:80> ... </VirtualHost></nowiki>}} の部分をコメントアウトします。
  +
  +
{{Note|サービス検出用に {{ic |.well-known}} URL を構成することを忘れないでください。詳細については、Nextcloud のドキュメントの [https://docs.nextcloud.com/server/latest/admin_manual/issues/general_troubleshooting.html#service-discovery サービス検出] を参照してください。}}
  +
  +
=== Docker ===
  +
  +
[[Docker]] の [https://hub.docker.com/_/owncloud/ ownCloud] あるいは [https://github.com/nextcloud/docker Nextcloud] リポジトリを見てください。
  +
  +
=== Office 統合 ===
  +
  +
現在、Office 統合には 3 つの異なるソリューションがあります。
  +
  +
* [https://www.collaboraoffice.com/collabora-online/ Collabora Online]
  +
* [https://www.onlyoffice.com/ ONLYOFFICE]
  +
* [https://docs.microsoft.com/en-us/officeonlineserver/office-online-server-overview MS Office Online Server]
  +
  +
3 つの共通点は、専用サーバーが必要であり、特定のリクエストをオフィスサービスに転送するように Web サーバーを適合させる必要があるという点です。Nextcloud との実際の統合は、上記の製品のいずれかに固有の Nextcloud アプリを使用して実現されます。
  +
  +
3 つの製品はすべてビジネス向けであることに注意してください。つまり、オフィス サービスの料金を支払う必要があります。Collabora のみが開発者プラン ([https://www.collaboraoffice.com/code/ CODE]) を無料で提供しています。 ONLYOFFICE は、[https://www.onlyoffice.com/en/docs-enterprise-prices.aspx ホーム サーバー] プランを手頃な価格で提供しています。
  +
  +
インストール、セットアップ手順、Nextcloud との統合については、以下を参照してください。
  +
  +
* [https://nextcloud.com/collaboraonline/ Collabora online], [https://apps.nextcloud.com/apps/richdocuments app]
  +
* [https://api.onlyoffice.com/editors/nextcloud ONLYOFFICE], [https://apps.nextcloud.com/apps/onlyoffice app]
  +
* [https://github.com/nextcloud/officeonline MS Office Online Server], [https://apps.nextcloud.com/apps/officeonline app]
  +
  +
=== アプリの推奨を無効にする ===
  +
  +
デフォルトでは、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}} を使用すると、可読性が大幅に向上します。
ownCloud は [[Wikipedia:ja:cURL|cURL]] や [[Wikipedia:SabreDAV|SabreDAV]] を使って [[WebDAV]] が有効になっているかチェックします。([[LAMP]] の記事に書かれているように) 自己署名証明書で SSL/TLS を使って、ownCloud の管理者ページにアクセスすると、以下のエラーメッセージが表示されます:
 
   
  +
{{bc|# jq . </var/log/nextcloud/nextcloud.log {{!}} less}}
Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken.
 
   
  +
=== ImageMagick によるバージョン警告 ===
[[LAMP]] のチュートリアルにしたがって設定を行っている場合、以下の手順を実行してください:
 
   
  +
{{ic|/var/log/nextcloud/nextcloud.log}} に次のような警告が大量に表示される場合があります。
証明書のためのローカルディレクトリを作成して、そこに [[LAMP]] の証明書をコピーします。これによって {{Ic|ca-certificates}} のアップデートによって証明書が上書きされるのを防ぎます。
 
   
  +
: Version warning: Imagick was compiled against ImageMagick version 1808 but version 1809 is loaded. Imagick will run but may behave surprisingly at Unknown#0
# cp /etc/httpd/conf/server.crt /usr/share/ca-certificates/''WWW.EXAMPLE.COM.crt''
 
   
  +
{{Bug|69636}} によると、これは誤報であり、無視して構いません。これらの警告を無くすには、ログ内の重要なメッセージをより目立つように、次の行を追加します。
''WWW.EXAMPLE.COM.crt'' を {{ic|/etc/ca-certificates.conf}} に追加:
 
   
  +
{{bc|1=
''WWW.EXAMPLE.COM.crt''
 
  +
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 ===
# update-ca-certificates
 
   
  +
バージョン 25 のインストールをバージョン 26 にアップグレードするには、次の手順が必要です。
httpd サービスを再起動して証明書を有効にしてください。
 
   
  +
==== 拡張機能 sysvsem を有効にする ====
これで動作しない場合は {{ic|/etc/php/php.ini}} で mod_curl を無効化してみてください。
 
   
  +
バージョン 26 には、追加の PHP 拡張機能 ''sysvsem'' が 1 つ必要です。この拡張機能は次の 2 つの場所で有効にする必要があります。
=== Android デバイスの自己署名証明書 ===
 
   
  +
* {{ic|/etc/webapps/nextcloud/php.ini}} {{ic|occ}} コマンドとバックグラウンドジョブによって使用されます。
Once you have followed the setup for SSL, as on [https://wiki.archlinux.org/index.php/LAMP#TLS.2FSSL LAMP] for example, early versions of DAVdroid will reject the connection because the certificate is not trusted. A certificate can be made as follows on your server:
 
  +
* 使用するアプリケーションサーバーに応じて、
  +
** {{ic|/etc/uwsgi/nextcloud.ini}} (''uWSGI'' の場合) または
  +
** ''FPM'' の場合は {{ic|/etc/php-legacy/php-fpm.d/nextcloud.conf}}
   
  +
他の拡張機能が有効になっている既存のセクションを探して、{{ic|sysvsem}} に対応する行を追加するだけです。
# 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
 
   
  +
==== /proc/cpuinfo を open_basedir に追加 ====
The file {{ic|android.txt}} should contain the following:
 
   
  +
セットアップで PHP パラメータ {{ic|open_basedir}} も定義している場合 (推奨)、このディレクトリのリストに {{ic|/proc/cpuinfo}} を追加する必要があります。この行を見つけます
basicConstraints=CA:true
 
   
  +
* {{ic|/etc/webapps/nextcloud/php.ini}} {{ic|occ}} コマンドとバックグラウンドジョブによって使用されます。
Then import {{ic|CA.der.crt}} to your Android device:
 
  +
* 使用するアプリケーションサーバーに応じて、
  +
** {{ic|/etc/uwsgi/nextcloud.ini}} (''uWSGI'' の場合) または
  +
** {{ic|/etc/php-legacy/php-fpm.d/nextcloud.conf}} (''FPM'' の場合)
   
  +
そして、行の最後に {{ic|:/proc/cpuinfo}} を追加します。(コロンに注意してください。)
Put the {{ic|CA.der.crt}} file onto the sdcard of your Android device (usually to the internal one, e.g. save from a mail attachment). It should be in the root directory. Go to ''Settings > Security > Credential storage'' and select ''Install from device storage''.
 
The {{ic|.crt}} file will be detected and you will be prompted to enter a certificate name. After importing the certificate, you will find it in ''Settings > Security > Credential storage > Trusted credentials > User''.
 
   
  +
==== HTTP 応答ヘッダー X-Robots-Tag を適応させる ====
ソース: [http://www.leftbrainthings.com/2013/10/13/creating-and-importing-self-signed-certificate-to-android-device/]
 
   
  +
これは、Apache の '''httpd''' (例:''nginx'') を使用しないインストールにのみ適用されます。
=== Cannot write into config directory! ===
 
   
  +
v25 インストールから継承された Web サーバー設定を使用すると、Nextcloud は HTTP 応答ヘッダー {{ic|X-Robots-Tag}} が適切に設定されていないというメッセージを表示するようになります。これを {{ic|"none"}} から {{ic|"noindex, nofollow"}} に変更する必要があります。Web サーバーの設定内で関連する行を見つけて、それに応じて調整します。''nginx'' の場合、この行は次のようになります。
Check your httpd configuration file (like {{ic|owncloud.conf}}). Add your configuration directory ({{ic|/etc/webapps}} by default) to
 
   
  +
{{hc|''cloud.mysite.com''.conf|
php_admin_value open_basedir "/srv/http/:/home/:/tmp/:/usr/share/pear/:/usr/share/webapps/:/path/to/dir/"
 
  +
add_header X-Robots-Tag "noindex, nofollow" always;
  +
}}
   
  +
==== php から php-legacy への移行 ====
Restart the httpd or php-fpm service to activate the change.
 
   
  +
これはオプションであり、(パッケージ {{Pkg|php-legacy}} ではなく) パッケージ {{Pkg|php}} にまだ依存している Nextcloud のインストールにのみ適用されます。詳細と移行が推奨される理由については、[[Nextcloud#php-legacy への移行|php-legacy への移行]] を参照してください。
=== Cannot create data directory (/path/to/dir) ===
 
   
  +
=== php-legacy への移行 ===
Check your httpd configuration file (like {{ic|owncloud.conf}}). Add your data directory to
 
   
  +
過去に、{{Pkg|php}} パッケージが (Arch Linux のローリングリリースの理念に沿って) タイムリーに最新の PHP バージョンに更新されることが何度かありましたが、Nextcloud はこの新しいバージョンと互換性がありませんでした。既存のインストールが破壊され、パッケージ {{Pkg|nextcloud}} のメンテナとユーザーに多大な労力がかかります。パッケージ {{Pkg|php}} がバージョン 8.1 からバージョン 8.2 に切り替わったとき、この問題が再び発生しようとしていました。
php_admin_value open_basedir "/srv/http/:/home/:/tmp/:/usr/share/pear/:/usr/share/webapps/:/path/to/dir/"
 
   
  +
この頻繁なトラブルを回避するために、新しい {{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}} の上に構築するかを選択できます。
Restart the httpd or php-fpm service to activate the change.
 
   
  +
{{Pkg|php-legacy}} を使用することを強くお勧めします。このわずかに古いバージョンの PHP では、システムのアップグレードによって既存の Nextcloud インストールが使用できなくなる可能性はほとんどありません。
=== CSync failed to find a specific file. ===
 
   
  +
{{Warning|PHP の最新かつ最高のバージョン (つまり、{{Pkg|php}}) を選択するユーザーは、パッケージ {{Pkg|php}} がメジャーバージョンまたはマイナーバージョンに切り替わるときの問題に備える必要があります。これらの問題は主に、パッケージ {{Pkg|nextcloud}} が突然 {{Pkg|php}} を依存関係として提供しなくなることで発生します (その時点でそのバージョンが Nextcloud でサポートされていないため) これにより、実質的に {{Pkg|php}} を使用するユーザーは一時的に {{Pkg|php-legacy}} に移行することになります。つまり、しばらくしてから {{Pkg|php}} に戻す必要があります。}}
This is most likely a certificate issue. Recreate it, and do not leave the common name empty or you will see the error again.
 
   
  +
{{Pkg|php-legacy}} への移行には、いくつかの手動操作が必要です。実際の設定に応じて、次のタスクのサブセットを適用する必要があります。
# openssl req -new -x509 -nodes -newkey rsa:4096 -keyout server.key -out server.crt
 
   
  +
{{Note|次のアクションのリストは、Nextcloud インストールがこの Wiki 記事に従って設定されていることを前提としています。セットアップがこのアプローチから逸脱する場合は、特に注意して手順を適切に調整してください。}}
=== ログイン後に白いページが表示される ===
 
   
  +
==== PHP 拡張機能 ====
おそらく新しくインストールしたアプリが原因です。修正するには、[[phpMyAdmin]] を使って {{ic|oc_appconfig}} テーブルを編集するか (運が良いことにテーブルに edit オプションがある場合) mysql で手動で修正してください:
 
   
  +
{{Pkg|php}} 拡張機能を対応する {{Pkg|php-legacy}} 拡張機能に置き換えます。例えば
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');
 
   
  +
{{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}} の不可欠な部分となっているため、例外です。したがって、ここでこのパッケージを明示的に処理する必要はありません。
=== GUI の同期クライアントで接続できない ===
 
   
  +
実際の PHP 拡張機能のセットは、データベース、メモリ内のオブジェクト キャッシュ、アプリケーションサーバー、およびその他の要因によって異なります。もちろん、別のアプリケーションが最新の PHP バージョンに依存している場合には、非レガシーモジュールが引き続き必要になる可能性があります。同じことが {{Pkg|php}} 自体にも当てはまります。
HTTP のベーシック認証を使っている場合、"status.php" が対象から外れていることを確認してください。このファイルは誰からでもアクセスできるようにしておく必要があります [https://github.com/owncloud/mirall/issues/734]。
 
   
  +
==== {{ic|php.ini}} の Nextcloud 固有のコピー ====
=== Server waits forever after creating admin account, before giving a 503 error ===
 
   
  +
{{hc|1=/etc/webapps/nextcloud/php.ini|2=
If the server waits forever but the database is working, try installing all of the apps available in the ArchLinux repos. If you don't have any apps installed, it can cause issues.
 
  +
open_basedir=...:/usr/lib/php-legacy/modules:...
  +
extension_dir = "/usr/lib/php-legacy/modules/"
  +
;extension=imap <= 削除
  +
}}
   
  +
==== FPM 設定 ====
=== Some files upload, but give an error 'Integrity constraint violation...' ===
 
   
  +
(これは、アプリケーションサーバー ''FPM'' が使用されている場合にのみ適用されます。)
You may see the following error in the ownCloud sync client:
 
   
  +
{{bc|
SQLSTATE[23000]: Integrity constraint violation: ... Duplicate entry '...' for key 'fs_storage_path_hash')...
 
  +
$ 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}} を変更します
This is caused by an issue with the File Locking app, which is often not sufficient to keep conflicts from occurring on some webserver configurations. A more complete [https://doc.owncloud.org/server/8.1/admin_manual/configuration_files/files_locking_transactional.html Transactional File Locking] is available that rids these errors, but you must be using the Redis php-caching method. Install {{Pkg|redis}} and {{AUR|php-redis}}, comment out your current php-cache mechanism, and then in {{ic|/etc/php/conf.d/redis.ini}} uncomment {{ic|1=extension=redis.so}}. Then in {{ic|config.php}} make the following changes:
 
   
  +
{{hc|1=/etc/php-legacy/php-fpm.ini|2=
'memcache.local' => '\OC\Memcache\Redis',
 
  +
extension_dir = "/usr/lib/php-legacy/modules/"
'filelocking.enabled' => 'true',
 
  +
;extension=imap <= 削除
'memcache.locking' => '\OC\Memcache\Redis',
 
  +
}}
'redis' => array(
 
'host' => 'localhost',
 
'port' => 6379,
 
'timeout' => 0.0,
 
),
 
   
  +
{{ic|/etc/php-legacy/php-fpm.d/nextcloud.conf}} を変更します
and start Redis:
 
   
  +
{{hc|1=/etc/php-legacy/php-fpm.d/nextcloud.conf|2=
systemctl enable redis.service
 
  +
listen = /run/php-fpm-legacy/nextcloud.sock
systemctl start redis.service
 
  +
; 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}} の将来の更新で行われる可能性のあるこのファイルの変更を追跡できるようにします。
Finally, disable the File Locking App, as the Transational File Locking will take care of it (and would conflict).
 
   
  +
{{bc|1=
If everything is working, you should see 'Transactional File Locking Enabled' under Server Status on the Admin page, and syncs should no longer cause issues.
 
  +
$ 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'' の [[ドロップインファイル]] を作成します。
=== "Cannot write into apps directory" ===
 
   
  +
{{hc|/etc/systemd/system/php-fpm-legacy.service.d/override.conf|2=
As mentioned in the [http://doc.owncloud.org/server/6.0/admin_manual/configuration/configuration_apps.html official admin manual], either you need an apps directory that is writable by the http user, or you need to set {{ic|appstoreenabled}} to {{ic|false}}.
 
  +
[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'' を [[有効化]] および [[起動]] します。
''Also'', not mentioned there, the directory needs to be in the {{ic|open_basedir}} line in {{ic|/etc/php/php.ini}}.
 
   
  +
==== uWSGI 設定 ====
{{Accuracy|Does not seem to work with 8.0.2}}
 
   
  +
(これは、アプリケーションサーバー ''uWSGI'' が使用されている場合にのみ適用されます。)
One clean method is to have the package-installed directory at {{ic|/usr/share/webapps/owncloud/apps}} stay owned by root, and have the user-installed apps go into e.g. {{ic|/var/www/owncloud/apps}}, which is owned by http. Then you can set {{ic|appstoreenabled}} to {{ic|true}} and package upgrades of apps should work fine as well. Relevant lines from {{ic|/etc/webapps/owncloud/config/config.php}}:
 
   
  +
{{hc|1=/etc/uwsgi/nextcloud.ini|2=
{{bc|<nowiki>
 
  +
php-set = open_basedir=...:/usr/lib/php-legacy/modules...
'apps_paths' =>
 
  +
# uncomment if php-imap is installed and used <= 削除
array (
 
  +
# php-set = extension=imap <= 削除
0 =>
 
  +
}}
array (
 
'path' => '/usr/share/webapps/owncloud/apps',
 
'url' => '/apps',
 
'writable' => false,
 
),
 
1 =>
 
array (
 
'path' => '/var/www/owncloud/apps',
 
'url' => '/wapps',
 
'writable' => true,
 
),
 
),
 
</nowiki>}}
 
   
  +
==== Nginx 設定 ====
Example {{ic|open_basedir}} line from {{ic|/etc/php/php.ini}} (you might have other directories in there as well):
 
   
  +
アプリケーションサーバーへの特定のリクエストの転送が設定されているファイルを変更します。''FPM'' の場合、例:
open_basedir = /srv/http/:/usr/share/webapps/:/var/www/owncloud/apps/
 
   
  +
{{hc|1=''cloud.mysite.com''.conf|2=
Directory permissions:
 
  +
fastcgi_pass unix:/run/php-fpm-legacy/nextcloud.sock;
  +
}}
   
  +
''uWSGI'' の場合、適応する必要はありません。
{{hc|$ ls -ld /usr/share/webapps/owncloud/apps /var/www/owncloud/apps/|
 
<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>}}
 
 
=== Security warnings even though the recommended settings have been included in nginx.conf ===
 
   
  +
==== Apache HTTP server 設定 ====
At the top of the admin page there might be a warning to set the {{ic|Strict-Transport-Security}}, {{ic|X-Content-Type-Options}}, {{ic|X-Frame-Options}}, {{ic|X-XSS-Protection}} and {{ic|X-Robots-Tag}} according to https://doc.owncloud.org/server/8.1/admin_manual/configuration_server/harden_server.html even though they are already set like that.
 
   
  +
Apache の HTTP サーバーとアプリケーションサーバーとして ''FPM'' を使用する場合は、構成内でこの行を調整してください。
A possible cause could be that because owncloud sets those settings, uwsgi passed them along and nginx added them again:
 
{{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>}}
 
   
  +
{{bc|1=
While the fast_cgi sample config has a parameter to avoid that ( {{ic|fastcgi_param modHeadersAvailable true; #Avoid sending the security headers twice}} ), when using uwsgi and nginx the following modification of the uwsgi part in nginx.conf could help:
 
  +
SetHandler "proxy:unix:/run/php-fpm-legacy/nextcloud.sock{{!}}fcgi://nextcloud/"
  +
}}
   
  +
''uWSGI'' の場合、適応する必要はありません。
{{hc| /etc/nginx/nginx.conf|
 
  +
<nowiki>...
 
  +
==== バックグラウンドジョブ ====
# pass all .php or .php/path urls to uWSGI
 
  +
location ~ ^(.+\.php)(.*)$ {
 
  +
Nextcloud のスケジュールされたバックグラウンドジョブの [[ドロップインファイル]] を更新します。
include uwsgi_params;
 
  +
uwsgi_modifier1 14;
 
  +
{{hc|/etc/systemd/system/nextcloud-cron.service.d/override.conf|2=
# hode following headers received from uwsgi, because otherwise we would send them twice since we already add them in nginx itself
 
  +
[Service]
uwsgi_hide_header X-Frame-Options;
 
  +
ExecStart=
uwsgi_hide_header X-XSS-Protection;
 
  +
ExecStart=/usr/bin/php-legacy -c /etc/webapps/nextcloud/php.ini -f /usr/share/webapps/nextcloud/cron.php
uwsgi_hide_header X-Content-Type-Options;
 
  +
}}
uwsgi_hide_header X-Robots-Tag;
 
  +
uwsgi_hide_header X-Frame-Options;
 
  +
==== Pacman フック ====
#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;
 
  +
pacman フック {{ic|/etc/pacman.d/hooks/10-nextcloud.hook}} も調整する必要があります。{{ic|Exec}} で始まる行を次のように変更します。
#uwsgi_pass 127.0.0.1:3001;
 
  +
}
 
  +
{{hc|1=/etc/pacman.d/hooks/10-nextcloud.hook|2=
...</nowiki>}}
 
  +
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}} が見つからないというエラーを表示します。
  +
  +
==== クリーンアップ ====
  +
  +
古くなった可能性のあるファイルとディレクトリをクリーンアップすることを忘れないでください。潜在的な候補者は次のとおりです。
  +
  +
{{bc|
  +
/usr/lib/php
  +
/etc/php
  +
}}
  +
  +
=== 1 つ以上のアプリの奇妙な動作 ===
  +
  +
Nextcloud アプリのファイルが含まれるフォルダーは 2 つの場所にあります。
  +
  +
* {{ic|/usr/share/webapps/nextcloud/apps}} (別名読み取り専用アプリディレクトリ) これは、{{Pkg|nextcloud}} パッケージとアプリパッケージ (例: {{Pkg|nextcloud-app-contacts}}) が Nextcloud アプリを構成するファイルを含むフォルダーを配置する場所です。
  +
  +
* {{ic|/var/lib/nextcloud/apps}} (別名書き込み可能なアプリディレクトリ) ここには、GUI または {{ic|occ app:install}} コマンドを介してインストールされたアプリのファイルが含まれるフォルダーがあります。
  +
  +
アプリのファイルが両方のディレクトリ (特に異なるバージョン) で見つかると、あらゆる種類の奇妙なことが発生する可能性があります。具体的な [https://github.com/nextcloud/contacts/issues/2867 ケース] では、''連絡先'' アプリが読み取り専用アプリディレクトリと書き込み可能なアプリディレクトリの両方に存在する可能性があります。その結果、GUI に連絡先を含むページは表示されませんでした。ブラウザの Javascript コンソールに次のエラーメッセージが表示されました。
  +
  +
{{bc|Uncaught Error: Could not find initial state contactsinteraction of contacts}}
  +
  +
両方の場所にアプリが存在するかどうかを確認します。アプリフォルダーを読み取り専用ディレクトリまたは書き込み可能なディレクトリのどちらで削除するかを確認するには、アプリがパッケージの一部であるかどうかを確認します。
  +
  +
{{bc|
  +
# cd /usr/share/webapps/nextcloud/apps
  +
# pacman -Qo * >/dev/null
  +
}}
  +
  +
報告されたすべてのフォルダー
  +
  +
{{bc|
  +
error: No package owns ....
  +
}}
  +
  +
(書き込み可能なアプリディレクトリにもあります) は、{{ic|/usr/share/webapps/nextcloud/apps}} から安全に削除できます。他の二重インストールされたアプリ (つまり、パッケージに属するアプリ) は、{{ic|/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 に対して [https://mariadb.com/kb/en/innodb-compressed-row-format/#read-only read-only] を強制されているため、Nextcloud と互換性がありませんでした。] Nextcloud は、次の種類のテーブルを使用してきました (そして現在も使用しています)
  +
  +
: MariaDB 10.6.0 から MariaDB 10.6.5 まで、COMPRESSED 行形式のテーブルはデフォルトで読み取り専用です。これは、書き込みサポートの削除と機能の廃止に向けた最初のステップとなることを目的としていました。
  +
:
  +
: この計画は廃止され、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 以降を出荷しているため、おそらく影響を受けません。
  +
  +
この問題の影響を受ける可能性は低いですが、考えられる解決策がいくつかあります。
  +
  +
* MariaDB 設定を調整します。
  +
  +
{{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 を使用しますので、同じ方法で移行する必要があります。
  +
  +
* MariaDB を PostgreSQL に置き換え、Nextcloud インスタンスのデータを {{ic|occ db:convert-type}} で移行します。詳細については、Nextcloud の [https://docs.nextcloud.com/server/latest/admin_manual/configuration_database/db_conversion.html ドキュメント] を参照してください。
  +
  +
=== 21.0.0 以上にアップグレードした後の権限とセットアップの問題 ===
  +
  +
{{Note|nextcloud 21.0.0 より前では、Web アプリケーションは {{ic|http}} ユーザーを使用して実行されていました。これは、このユーザーのアプリケーション間アクセス (すべての Web アプリケーションのすべてのデータにアクセスできる) に関するセキュリティ上の問題です。}}
  +
  +
バージョン 21.0.0 以降、nextcloud は [[ウェブアプリケーションパッケージガイドライン]] にさらに厳密に従います。これにより、Web アプリケーションが実行される別のユーザー {{ic|nextcloud}} が導入されます。
  +
  +
nextcloud < 21.0.0 からアップグレードした後、次のことを確認してください。
  +
  +
* データディレクトリは {{ic|/var/lib/nextcloud/data}} にあります。
  +
* 書き込み可能な apps ディレクトリは {{ic|/var/lib/nextcloud/apps}} にあります。
  +
* data ディレクトリと書き込み可能な apps ディレクトリの両方と、その下にあるすべてのファイルは書き込み可能で、{{ic|nextcloud}} ユーザーが所有します。
  +
* Web アプリケーション設定ファイルが {{ic|/etc/webapps/nextcloud/config/}} に存在し、そのディレクトリとコンテンツが {{ic|nextcloud}} ユーザによって書き込み可能かつ所有されていること。
  +
* アプリケーションサーバ ([[Nextcloud#FPM|FPM]] や [[Nextcloud#uWSGI|uWSGI]] など) が、{{ic|http}} ユーザではなく {{ic|nextcloud}} ユーザとして Web アプリケーションを実行するように設定されている。
  +
* 新しいユーザーで実行するように cron ジョブ/systemd タイマーを更新する。
  +
* 最後に、nextcloud インストール {{ic|/usr/share/webapps/nextcloud}} への読み取りアクセスを、ウェブサーバーのユーザ {{ic|http}} に許可します:
  +
  +
{{bc|
  +
# chown -R nextcloud:http /usr/share/webapps/nextcloud
  +
}}
  +
  +
=== access.log、error.log、nextcloud.log に手がかりがないログインループ ===
  +
  +
[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#システムと環境|システムと環境]] に記載されています。
  +
  +
{{ic|/var/lib/nextcloud}} は次のようになります。
  +
  +
{{bc|
  +
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 ====
  +
  +
[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 行以上追加してください:
  +
  +
{{hc|1=/etc/php-legacy/php-fpm.d/nextcloud.conf|2=
  +
env[PATH] = /usr/local/bin:/usr/bin:/bin
  +
}}
  +
  +
==== uWSGI ====
  +
  +
{{ic|/etc/uwsgi/nextcloud.ini}} に 1 行以上追加してください:
  +
  +
{{hc|1=/etc/uwsgi/nextcloud.ini|2=
  +
env = PATH=/usr/local/bin:/usr/bin:/bin
  +
}}
  +
  +
2 番目の {{ic|1==}} の周囲に空白を入れてはいけないことに注意してください。
  +
  +
=== 安全な接続を介してインスタンスにアクセスしていますが、インスタンスは安全でない 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.
  +
  +
設定ファイルに以下を追加します: [https://help.nextcloud.com/t/instance-over-a-secure-connection-however-your-instance-is-generated-insecure-urls/134108]
  +
  +
{{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 公式ウェブサイト]
 
  +
* [https://docs.nextcloud.com/ nextcloud 公式ウェブサイト]
* [http://doc.owncloud.org/server/8.2/admin_manual/ ownCloud 8.2 管理者ドキュメント]
 
  +
* [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 を置き換えてください。

参照