「Nextcloud」の版間の差分
細 (1版 をインポートしました) |
(→環境変数は使用できません: 翻訳を修正) |
||
(4人の利用者による、間の44版が非表示) | |||
1行目: | 1行目: | ||
− | [[Category: |
+ | [[Category:ファイル共有]] |
+ | [[Category:ウェブアプリケーション]] |
||
− | [[en:Owncloud]] |
||
− | [[ |
+ | [[en:Nextcloud]] |
+ | [[zh-hans:Nextcloud]] |
||
− | {{lowercase title}} |
||
{{Related articles start}} |
{{Related articles start}} |
||
+ | {{Related|Apache HTTP Server}} |
||
− | {{Related2|LAMP|LAMP}} |
||
− | {{ |
+ | {{Related|Nginx}} |
+ | {{Related|UWSGI}} |
||
{{Related|OpenSSL}} |
{{Related|OpenSSL}} |
||
+ | {{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:Web_Server|ウェブサーバー]]と [[PHP|PHP]]、[[:Category:Database_management_systems|データベース]]を必要とします。古典的な [[LAMP|LAMP]] の組み合わせで問題なく動作し、[http://doc.owncloud.org/server/7.0/admin_manual/installation/installation_source.html#manual-installation 推奨] されています。 |
||
+ | |||
+ | == セットアップの概要 == |
||
+ | |||
+ | 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}} を[[インストール]]してください。もしくは [[Arch User Repository|Arch User Repository]] に入っているパッケージを見て下さい: [https://aur.archlinux.org/packages.php?K=owncloud]。 |
||
+ | {{Pkg|nextcloud}} パッケージをインストールします。尋ねられたら、PHP バージョンとして {{Pkg|php-legacy}} を選択します。これにより、かなりの数の依存パッケージが取り込まれます。すべての [https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation 必要な PHP 拡張機能] はこの方法で処理されます。 |
||
− | {{ic|/etc/php/php.ini}} で'''必要な'''以下のエクステンションをアンコメントします: |
||
− | gd.so |
||
− | iconv.so |
||
− | xmlrpc.so |
||
− | zip.so |
||
+ | プレビュー生成用にパッケージ {{Pkg|php-legacy-imagick}} と {{Pkg|librsvg}} を追加インストールすることをお勧めします (できれば pacman オプション {{ic|--asdeps}} を使用した依存パッケージとして)。他のオプションの依存関係については、具体的な設定 (選択したデータベースなど) に応じて後で説明します。 |
||
− | また、{{Pkg|php-intl}} と {{Pkg|php-mcrypt}} をインストールして以下のエクステンションをアンコメントすることが [http://doc.owncloud.org/server/7.0/admin_manual/installation/installation_source.html#prerequisites 推奨] されています: |
||
− | bz2.so |
||
− | curl.so |
||
− | intl.so |
||
− | mcrypt.so |
||
− | openssl.so |
||
+ | == 設定 == |
||
− | パフォーマンスを向上させたい場合、以下の''どちらか''をインストールします: |
||
− | * {{Pkg|php-apcu}}: ユーザーデータのキャッシュだけを提供します。{{ic|/etc/php/conf.d/apcu.ini}} でコメントを削除することで有効にできます。opcode のキャッシュをしたい場合は [http://www.php.net/manual/en/book.opcache.php opcache エクステンション] を使って下さい: {{ic|/etc/php/php.ini}} で {{ic|1=zend_extension=opcache.so}} をアンコメントします。 |
||
− | * {{Pkg|php-xcache}}: opcode とユーザーデータのキャッシュの両方を提供する開発版。インストールした後は {{ic|/etc/php/conf.d/xcache.ini}} でアンコメントしてください。 |
||
+ | === PHP === |
||
− | ==== データベースのサポート ==== |
||
− | 使用するデータベースバックエンドにあわせて、{{ic|/etc/php/php.ini}} で以下の2行をアンコメントしてください: |
||
− | {| class="wikitable" |
||
− | !SQLite!!MySQL!!PostgreSQL |
||
− | |- |
||
− | |{{bc|pdo_sqlite.so |
||
− | sqlite3.so}} |
||
− | |{{bc|pdo_mysql.so |
||
− | mysql.so}} |
||
− | |{{bc|pdo_pgsql.so |
||
− | pgsql.so}} |
||
− | |- |
||
− | |} |
||
+ | このガイドは、PHP の中央構成ファイル {{ic|/etc/php-legacy/php.ini}} を改ざんするものではなく、他の PHP ベースのアプリケーションの設定に干渉する可能性のない場所に Nextcloud 固有の PHP 構成を配置します。これらの場所は次のとおりです。 |
||
− | {{note|1=[[MySQL|MySQL]] を使う場合 {{ic|mysql.so}} が必要になりますが、現在は廃止されています。2014年7月現在 (ownCloud 7.0)、{{ic|mysqli.so}} はサポートされていません [http://doc.owncloud.org/server/7.0/admin_manual/configuration/configuration_database.html][https://forum.owncloud.org/viewtopic.php?f=26&t=21534]。}} |
||
− | データベースの適当な php モジュールをインストールするのを忘れないで下さい。PostgreSQL の場合 {{Pkg|php-pgsql}} で SQLite の場合 {{Pkg|php-sqlite}} になります。 |
||
+ | * {{ic|/etc/webapps/nextcloud/php.ini}} 内の {{ic|php.ini}} の専用コピー ({{ic|occ}} コマンドラインツールとバックグラウンドジョブ用) |
||
− | ==== Exif のサポート ==== |
||
+ | * アプリケーションサーバーの構成における対応する設定。これらについては、アプリケーションサーバーに関するセクションで説明します。 |
||
− | [[公式リポジトリ]]から {{Pkg|exiv2}} をインストールして {{ic|php.ini}} で {{ic|exif.so}} エクステンションをアンコメントすることで exif サポートを有効化できます。 |
||
+ | {{ic|/etc/php-legacy/php.ini}} のコピーを {{ic|/etc/webapps/nextcloud}} に作成します。厳密に必要というわけではありませんが、コピーの所有権を変更します。 |
||
− | === オールインワンの Docker を使う === |
||
+ | {{bc|# chown nextcloud:nextcloud /etc/webapps/nextcloud/php.ini}} |
||
− | ''ownCloud'' のインストールと設定を素早く安全に行う方法として [[Docker|Docker]] を使うことができます。[https://index.docker.io/search?q=ownCloud Docker のリポジトリ]には始めから ''ownCloud'' がインストールされている完全な LAMP スタックのイメージが複数存在します。''Docker'' コンテナは基本的に [[chroot|chroot]] 環境よりも安全でありオーバーヘッドも少なくなります。Docker 上の ''ownCloud'' はかなり古いマシンでもスムーズに動作するでしょう。普通に ''ownCloud'' をインストールするよりも大抵は ''Docker'' をインストールしてから ''ownCloud'' イメージをインストールする方が簡単で時間がかかりません。 |
||
+ | Nextcloud の [https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation インストール手順] にリストされている前提条件のほとんどは、ベア PHP インストールですでに有効になっています。さらに、次の拡張機能を有効にします。 |
||
− | == Apache の設定 == |
||
+ | {{hc|/etc/webapps/nextcloud/php.ini|2= |
||
− | === インストール === |
||
+ | 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}} を希望のタイムゾーンに設定します。例: |
||
− | [[LAMP|LAMP]] をセットアップしてください。 |
||
+ | {{hc|/etc/webapps/nextcloud/php.ini|2= |
||
− | Apache の設定ファイルを ownCloud の設定ディレクトリにコピーします: |
||
+ | date.timezone = Europe/Berlin |
||
− | # cp /etc/webapps/owncloud/apache.example.conf /etc/httpd/conf/extra/owncloud.conf |
||
+ | }} |
||
+ | PHP のメモリ制限を少なくとも 512MiB に引き上げます。 |
||
− | そして {{ic|/etc/httpd/conf/httpd.conf}} の一番下で設定ファイルをインクルードします: |
||
− | Include conf/extra/owncloud.conf |
||
+ | {{hc|/etc/webapps/nextcloud/php.ini|2= |
||
− | 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 推奨] しています。 |
||
+ | memory_limit = 512M |
||
+ | }} |
||
+ | オプション: セキュリティを強化するには、{{ic|open_basedir}} を構成します。これにより、Nextcloud の PHP コードがファイルを読み書きできる場所が制限されます。実証済みの設定は、 |
||
− | ウェブブラウザが ownCloud ディレクトリに書き込みが行えるようにしてください: |
||
− | # chown -R http:http /usr/share/webapps/owncloud/ |
||
+ | {{hc|/etc/webapps/nextcloud/php.ini|2= |
||
− | そして Apache ({{ic|httpd.service}}) を再起動します。 |
||
+ | open_basedir=/var/lib/nextcloud:/tmp:/usr/share/webapps/nextcloud:/etc/webapps/nextcloud:/dev/urandom:/usr/lib/php-legacy/modules:/var/log/nextcloud:/proc/meminfo:/proc/cpuinfo |
||
+ | }} |
||
+ | 設定する追加の拡張機能に応じて、このリストを拡張する必要がある場合があります (例: [[Redis]] を選択した場合は {{ic|/run/redis}}) |
||
− | ウェブブラウザで http://localhost/ を開いて下さい。ユーザーアカウントを作成してインストールウィザードに従う必要があります。 |
||
+ | この {{ic|php.ini}} は、{{ic|occ}} コマンド ラインツールとバックグラウンド ジョブ、つまり短時間実行される PHP プロセスによってのみ使用されるため、ここで opcache を設定する必要はありません。 |
||
− | ==== サブディレクトリで ownCloud を動かす ==== |
||
+ | === Nextcloud === |
||
− | デフォルトの {{ic|owncloud.conf}} を {{ic|httpd.conf}} でインクルードすることで、ownCloud は80番ポートと localhost ドメインをコントロールします。 |
||
+ | 次のエントリを Nextcloud の設定ファイルに追加します。 |
||
− | サブディレクトリで ownCloud を動作させたい場合は、{{ic|/etc/httpd/conf/extra/owncloud.conf}} を編集して include ファイルの {{ic|<nowiki><VirtualHost *:80> ... </VirtualHost></nowiki>}} の部分をコメントアウトしてください。 |
||
+ | {{hc|/etc/webapps/nextcloud/config/config.php|2= |
||
− | == Nginx + uwsgi_php の設定 == |
||
+ | 'trusted_domains' => |
||
+ | array ( |
||
+ | 0 => 'localhost', |
||
+ | 1 => '''cloud.mysite.com''', |
||
+ | ), |
||
+ | 'overwrite.cli.url' => 'https://''cloud.mysite.com''/', |
||
+ | 'htaccess.RewriteBase' => '/', |
||
+ | }} |
||
+ | 指定されたホスト名例 {{ic|''cloud.mysite.com''}} を変更します。Nextcloud インストールがサブフォルダー経由でアクセスできる場合 (例: {{ic|<nowiki>https://www.mysite.com/nextcloud</nowiki>}}) {{ic|overwrite.cli.url}} {{ic|htaccess.RewriteBase}} はそれに応じて変更する必要があります。 |
||
− | Apache を使わずに、{{pkg|uwsgi-plugin-php}} アプリケーションサーバーを使って ownCloud を固有のプロセスで動かすことができます。uWSGI 自体にリソースの使用を制限するための機能が豊富に含まれており、アプリケーションのセキュリティを強化したり、専用のユーザーで動くようにプロセスを分けられます。 |
||
− | === |
+ | === システムと環境 === |
+ | Nextcloud 固有の {{ic|php.ini}} が {{ic|occ}} ツールで使用されるようにするには、環境変数 {{ic|NEXTCLOUD_PHP_CONFIG}} を設定します。 |
||
− | *まず最初に Nginx サーバーをセットアップしてください。詳しくは [[Nginx|Nginx]] のページを参照。 |
||
+ | |||
− | *{{ic|/etc/nginx/nginx.conf}} ファイルの http セクションに以下の行でサーバーを設定: |
||
− | {{bc| |
+ | {{bc|1= |
+ | $ export NEXTCLOUD_PHP_CONFIG=/etc/webapps/nextcloud/php.ini |
||
− | #this is to avoid Request Entity Too Large error |
||
+ | }} |
||
− | client_max_body_size 1000M; |
||
+ | |||
− | # deny access to some special files |
||
+ | また、この設定を永続的にするには、この行を {{ic|.bashrc}} (または {{ic|.bash_profile}} ) に追加します。 |
||
− | location ~ ^/(data|config|\.ht|db_structure\.xml|README) { |
||
+ | |||
− | deny all; |
||
+ | プライバシーとセキュリティの予防措置として、セッションデータ用の専用ディレクトリを作成します。 |
||
− | } |
||
+ | |||
− | # pass all .php or .php/path urls to uWSGI |
||
+ | {{bc|1= |
||
− | location ~ ^(.+\.php)(.*)$ { |
||
+ | # install --owner=nextcloud --group=nextcloud --mode=700 -d /var/lib/nextcloud/sessions |
||
+ | }} |
||
+ | |||
+ | == データベース == |
||
+ | |||
+ | [[MariaDB]]/MySQL は Nextcloud の標準的な選択肢です。 |
||
+ | |||
+ | :MySQL または MariaDB データベースが推奨されるデータベースエンジンです。[https://docs.nextcloud.com/server/stable/admin_manual/configuration_database/linux_database_configuration.html] |
||
+ | |||
+ | Nextcloud のデータベースに関するほとんどの情報は、MariaDB/MySQL を扱います。Nextcloud 開発者は、[https://github.com/nextcloud/server/issues/5912#issuecomment-318568370|] があることを認めています。他のデータベースでは、あまり詳細な専門知識がありません。 |
||
+ | |||
+ | [[PostgreSQL]] は、MariaDB/MySQL と比較してパフォーマンスが向上し、全体的に癖が少ないと言われています。[[SQLite]] は主にテスト/開発インストールでサポートされており、運用環境では推奨されません。 [https://docs.nextcloud.com/server/stable/admin_manual/configuration_database/linux_database_configuration.html サポートされるデータベースのリスト] には、Oracle データベースも含まれています。この製品についてはここでは扱いません。 |
||
+ | |||
+ | === MariaDB / MySQL === |
||
+ | |||
+ | 2013 年以降、[[MariaDB]] が Arch Linux のデフォルトの MySQL 実装になっているため [https://archlinux.org/news/mariadb-replaces-mysql-in-repositories/] 、このテキストでは MariaDB についてのみ言及しています。 |
||
+ | |||
+ | Nextcloud と同じホストでデータベースを実行する場合は、[[MariaDB#Configuration|configure]] および [[起動]] {{Pkg|mariadb}} をインストールします (まだ実行していない場合)。詳細については、対応する [[MariaDB|article]] を参照してください。{{ic|mariadb-install-db}} で MariaDB を初期化することを忘れないでください。セキュリティを強化するために、MariaDB を [[MariaDB#Unix ソケット経由でのみローカルでアクセスを有効にする|ローカルの Unix ソケットでのみリッスンする]] ように設定することをお勧めします。 |
||
+ | |||
+ | {{hc|/etc/my.cnf.d/server.cnf|2= |
||
+ | [mysqld] |
||
+ | skip_networking |
||
+ | }} |
||
+ | |||
+ | Nextcloud 独自のドキュメント [https://docs.nextcloud.com/server/stable/admin_manual/configuration_database/linux_database_configuration.html#database-read-committed-transaction-isolation-level を推奨] では、トランザクション分離レベルを READ-COMMITTED に設定します。これは、多くの同時トランザクションによる高負荷が予想される場合に特に重要です。 |
||
+ | |||
+ | {{hc|/etc/my.cnf.d/server.cnf|2= |
||
+ | [mysqld] |
||
+ | transaction_isolation=READ-COMMITTED}} |
||
+ | |||
+ | {{ic|1=binlog_format=ROW}} を設定するというもう 1 つの推奨事項は廃止されました。最近の MariaDB バージョンのデフォルトの {{ic|MIXED}} は、推奨される {{ic|ROW}} と少なくとも同じくらい優れています。いずれの場合も、設定はレプリケーションが適用される場合にのみ関係します。 |
||
+ | |||
+ | データベースをユーザー root で CLI ツール {{ic|mysql}} を起動します。(デフォルトのパスワードは空ですが、できるだけ早く変更してください。) |
||
+ | |||
+ | {{bc|$ mysql -u root -p}} |
||
+ | |||
+ | Nextcloud のユーザーとデータベースを作成します。 |
||
+ | |||
+ | {{bc| |
||
+ | CREATE USER 'nextcloud'@'localhost' IDENTIFIED BY '''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;}} |
||
+ | |||
+ | ({{ic|''db-password''}} は、選択する必要がある DB ユーザー ''nextcloud'' の実際のパスワードのプレースホルダーです。) {{ic|\q}} でツールを終了します。 |
||
+ | |||
+ | {{Note|MariaDB は、UTF8 の意味についての理解に欠陥があり、その結果、コードポイント 0x10000 以上の文字 (絵文字など) を保存できなくなります。彼らは、''utf8mb4'' と呼ばれる新しいエンコーディングを導入することにより、バージョン 5.5 でこの問題を ''修正'' しました。結論: MariaDB の ''utf8'' は決して使用せず、常に ''utf8mb4'' を使用してください。移行が必要な場合は、[https://docs.nextcloud.com/server/stable/admin_manual/configuration_database/mysql_4byte_support.html] を参照してください。}} |
||
+ | |||
+ | Nextcloud インストールのデータベースとして MariaDB を使用することに決めたので、対応する PHP 拡張機能を有効にする必要があります。 |
||
+ | |||
+ | {{hc|/etc/webapps/nextcloud/php.ini|2= |
||
+ | extension=pdo_mysql |
||
+ | }} |
||
+ | |||
+ | これ以上の設定 (MariaDB に関連する) は必要ありません (Nextcloud の [https://docs.nextcloud.com/server/stable/admin_manual/configuration_database/linux_database_configuration.html#cconfiguring-a-mysql-or-mariadb] に記載されている情報とは異なります) データベース管理者マニュアル]) |
||
+ | |||
+ | 次に、Nextcloud のデータベーススキーマを次のように設定します。 |
||
+ | |||
+ | {{bc|1= |
||
+ | $ occ maintenance:install \ |
||
+ | --database=mysql \ |
||
+ | --database-name=nextcloud \ |
||
+ | --database-host=localhost:/run/mysqld/mysqld.sock \ |
||
+ | --database-user=nextcloud \ |
||
+ | --database-pass=''db-password'' \ |
||
+ | --admin-pass=''admin-password'' \ |
||
+ | --admin-email=''admin-email'' \ |
||
+ | --data-dir=/var/lib/nextcloud/data |
||
+ | }} |
||
+ | |||
+ | プレースホルダー (例: {{ic|''db-password''}}) に注意して、適切な値に置き換えてください。このコマンドは、データベースを Nextcloud と同じホスト上で実行していることを前提としています。{{ic|occ help maintenance:install }} と入力し、他のオプションについては Nextcloud の [https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/occ_command.html#command-line-installation ドキュメント] を参照してください。このツールに関する Arch 固有の詳細については、[[Nextcloud#"occ" コマンドラインツールの使用|"occ" コマンドラインツールの使用]] を参照してください。 |
||
+ | |||
+ | === PostgreSQL === |
||
+ | |||
+ | PostgreSQL の詳細については、対応する [[PostgreSQL|article]] を参照してください。 Nextcloud と同じホストでデータベースを実行する場合は、[[PostgreSQL#初期構成|設定]] および {{Pkg|postgresql}} を [[起動]] (まだ実行していない場合) をインストールします。このシナリオでのセキュリティを強化するには、PostgreSQL を [[PostgreSQL#UNIX ソケット経由で排他的にアクセスできるように PostgreSQL を構成する|ローカルの UNIX ソケットでのみリッスンする]] ように構成することをお勧めします。 |
||
+ | |||
+ | {{hc|/var/lib/postgres/data/postgresql.conf|2= |
||
+ | listen_addresses = <nowiki>''</nowiki> |
||
+ | }} |
||
+ | |||
+ | 特に、{{ic|initdb}} を使用してデータベースを初期化することを忘れないでください。それが完了したら、PostgreSQL の CLI ツール {{ic|psql}} を起動します。 |
||
+ | |||
+ | {{bc| |
||
+ | $ sudo -u postgres -- psql |
||
+ | }} |
||
+ | |||
+ | そして、データベースユーザー {{ic|nextcloud}} と同じ名前のデータベースを作成します |
||
+ | |||
+ | {{bc|1= |
||
+ | CREATE USER nextcloud WITH PASSWORD '''db-password'''; |
||
+ | CREATE DATABASE nextcloud TEMPLATE template0 ENCODING 'UNICODE'; |
||
+ | ALTER DATABASE nextcloud OWNER TO nextcloud; |
||
+ | GRANT ALL PRIVILEGES ON DATABASE nextcloud TO nextcloud; |
||
+ | \q |
||
+ | }} |
||
+ | |||
+ | ({{ic|''db-password''}} は、選択する必要があるデータベースユーザー ''nextcloud'' のパスワードのプレースホルダーです。) |
||
+ | |||
+ | 追加パッケージ {{Pkg|php-pgsql}} を依存関係としてインストールし (pacman オプション {{ic|--asdeps}})、{{ic|/etc/webapps/nextcloud/php.ini}} で対応する PHP 拡張機能を有効にします。 |
||
+ | |||
+ | {{hc|/etc/webapps/nextcloud/php.ini|2= |
||
+ | extension=pdo_pgsql |
||
+ | }} |
||
+ | |||
+ | Now setup Nextcloud's database schema with: |
||
+ | |||
+ | {{bc|1= |
||
+ | $ occ maintenance:install \ |
||
+ | --database=pgsql \ |
||
+ | --database-name=nextcloud \ |
||
+ | --database-host=/run/postgresql \ |
||
+ | --database-user=nextcloud \ |
||
+ | --database-pass=''db-password'' \ |
||
+ | --admin-pass=''admin-password'' \ |
||
+ | --admin-email=''admin-email'' \ |
||
+ | --data-dir=/var/lib/nextcloud/data |
||
+ | }} |
||
+ | |||
+ | プレースホルダー (例: {{ic|''db-password''}}) に注意して、適切な値に置き換えてください。このコマンドは、データベースを Nextcloud と同じホスト上で実行していることを前提としています。{{ic|occ help maintenance:install }} と入力し、他のオプションについては Nextcloud の [https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/occ_command.html#command-line-installation ドキュメント] を参照してください。このツールに関する Arch 固有の詳細については、[[Nextcloud#"occ" コマンドラインツールの使用|"occ" コマンドラインツールの使用]] を参照してください。 |
||
+ | |||
+ | == アプリケーションサーバー == |
||
+ | |||
+ | PHP コードの処理に使用できる一般的なアプリケーションサーバーは [[uWSGI]] または [https://cwiki.apache.org/confluence/display/HTTPD/PHP-FPM FPM] の 2 つです。''FPM'' はPHPに特化したものです。Web サーバーと ''FPM'' の間で使用されるプロトコルは ''fastcgi'' です。このツールの [https://www.php.net/manual/en/install.fpm.php ドキュメント] には改善の余地があります。一方、''uWSGI'' は、言語固有のプラグインを使用して、[https://uwsgi-docs.readthedocs.io/en/latest/LanguagesAndPlatforms.html 少数の言語] で記述されたコードを提供できます。使用されるプロトコルは ''uwsgi''(小文字)です。このツールは [https://uwsgi-docs.readthedocs.io/en/latest/index.html 広範囲に文書化されています] ですが、膨大な量の文書が混乱を招き、扱いにくくなる可能性があります。 |
||
+ | |||
+ | === uWSGI === |
||
+ | |||
+ | uWSGI には独自の [[uWSGI|article]] があります。そこでは役立つ情報がたくさん見つかります。{{pkg|uwsgi}} とプラグイン {{pkg|uwsgi-plugin-php-legacy}} を、できれば依存関係として、つまり {{ic|--asdeps}} とともにインストールします。Nextcloud のコードを uWSGI で (または uWSGI 内で) 実行するには、1 つの uWSGI 固有の構成ファイル ({{ic|nextcloud.ini}}) を構成し、1 つの systemd サービスを定義する必要があります。 |
||
+ | |||
+ | {{Warning|最近、uWSGI、特にその PHP プラグインのメンテナンスがまばらになっていることに言及しなければなりません[https://github.com/unbit/uwsgi/issues/2287] これはすでに [https://bugs.archlinux.org/task/73470 の問題] を引き起こしており、Arch Linux パッケージの管理者 (アップストリームではない) が uWSGI コードにパッチを適用することによってのみ解決できます。}} |
||
+ | |||
+ | ==== nextcloud.ini ==== |
||
+ | |||
+ | {{Pkg|nextcloud}} パッケージには、適切な場所 {{ic|/etc/uwsgi/nextcloud.ini}} にサンプル構成ファイルがすでに含まれています。ほとんどの場合、このファイルを要件と設定に適合させる必要があります。 [https://gist.githubusercontent.com/wolegis/fc0c01882b694777a6565aa1d0a4da47 バージョンに多くのコメント付き変更が含まれている] を見つけます (パッケージのバージョンと比較) これは、個人使用 (つまり、中程度の負荷) を目的とした、シンプルな Nextcloud インストールを前提としています。 |
||
+ | |||
+ | 一般に、有効な拡張機能、拡張機能固有の設定、および {{ic|open_basedir}} を {{ic|/etc/webapps/nextcloud/php.ini}} と同期させます (opcache を除く) |
||
+ | |||
+ | {{Tip|{{ic|/etc/uwsgi/nextcloud.ini}} への変更は広範囲になる可能性があります。パッケージ {{Pkg|nextcloud}} によって提供される元のファイルに変更があった場合に備えて、パッケージの更新中に {{ic|nextcloud.ini.pacnew}} という名前のファイルが作成されます。この後者のファイルの変更をより適切に追跡し、それらを {{ic|/etc/uwsgi/nextcloud.ini}} に適用するには、次のアプローチを適用できます。: |
||
+ | |||
+ | * パッケージによって提供されるファイルのコピーを (パッケージから抽出するなどして) 作成し、それを {{ic|nextcloud.ini.package}} として保存します。 |
||
+ | * パッケージ {{Pkg|nextcloud}} の更新により {{ic|nextcloud.ini.pacnew}} が生成される場合は、{{ic|diff nextcloud.ini.package nextcloud.ini.pacnew}} で変更を識別できます。 |
||
+ | * ご使用のバージョンに適しているかどうかに応じて、変更を {{ic|nextcloud.ini}} に選択的に適用します。 |
||
+ | }} |
||
+ | |||
+ | ==== 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; |
include uwsgi_params; |
||
uwsgi_modifier1 14; |
uwsgi_modifier1 14; |
||
+ | # Avoid duplicate headers confusing OC checks |
||
− | uwsgi_pass 127.0.0.1:3001; |
||
+ | 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; |
||
} |
} |
||
+ | }} |
||
− | # everything else goes to the filesystem, |
||
− | # but / will be mapped to index.php and run through uwsgi |
||
− | location / { |
||
− | root /usr/share/webapps/owncloud; |
||
− | index index.php; |
||
− | rewrite ^/.well-known/carddav /remote.php/carddav/ redirect; |
||
− | rewrite ^/.well-known/caldav /remote.php/caldav/ redirect; |
||
− | } |
||
− | </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 のサーバー名&ポートセクションの右側の部分) |
||
+ | * 使用しているアプリケーションサーバー (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 |
||
− | php-set = session.save_path=/tmp |
||
− | php-set = post_max_size=1000M |
||
− | php-set = upload_max_filesize=1000M |
||
+ | [[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=openssl.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 |
||
+ | [[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 モジュールが必要です。 |
||
− | </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#Starting_service]] も参照。 |
||
+ | |||
+ | # either this one in case you use FPM |
||
+ | LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so |
||
+ | # or this one in case you opt for uWSGI |
||
+ | LoadModule proxy_uwsgi_module modules/mod_proxy_uwsgi.so |
||
+ | }} |
||
+ | |||
+ | また、TLS 設定パラメータを取り込むには、次のディレクティブのコメントを解除します。 |
||
+ | |||
+ | {{hc|/etc/httpd/conf/httpd.conf| |
||
+ | Include conf/extra/httpd-ssl.conf}} |
||
+ | |||
+ | TLS 設定を最適化する方法の詳細については、[https://ssl-config.mozilla.org/#server=apache&config=intermediate Mozilla の SSL configurator] を参照してください。 |
||
+ | |||
+ | Nextcloud インストールへのアクセス方法に応じて、次の 2 つのサンプル設定ファイルを参照してください。 |
||
+ | |||
+ | * Nextcloud のインストールが専用ホスト名でアクセスされる場合 (例:{{ic|<nowiki>https://cloud.mysite.com/</nowiki>}})、{{ic|/etc/httpd/conf/extra/httpd-vhosts.conf}} に [https://gist.github.com/wolegis/1659786ded9128935f638ee2bf228906 これ] を記述してください。 |
||
+ | |||
+ | * Nextcloud が Web サイトのサブフォルダ (例:{{ic|<nowiki>https://www.mysite.com/nextcloud/</nowiki>}}) にインストールされている場合は、{{ic|/etc/httpd/conf/httpd.conf}} に [https://gist.github.com/wolegis/002e198c2db7980a84fd8d160c2bdb9a これ] を記述してください。 |
||
+ | |||
+ | もちろん、これらのサンプル設定ファイルを実際の設定に適合させる必要があります。''uWSGI'' を使用する場合は、{{ic|SetHandler}} ディレクティブを {{ic|SetHandler "proxy:unix:/run/uwsgi/nextcloud.sock{{!}}uwsgi://nextcloud/"}} に置き換えます。 |
||
+ | |||
+ | Nextcloud パッケージには、多くの書き換えやヘッダー処理がすでに行われている {{ic|.htaccess}} が付属しています。{{ic|occ maintenance:update:htaccess}} を実行して、このファイルを調整します。これには、{{ic|/etc/webapps/nextcloud/config/config.php}} のパラメータ {{ic|htaccess.RewriteBase}} が重要です。 |
||
+ | |||
+ | == バックグラウンドジョブ == |
||
+ | |||
+ | Nextcloud では、特定のタスクをスケジュールに従って実行する必要があります。詳細については、Nextcloud の [https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/background_jobs_configuration.html ドキュメント] を参照してください。これらのバックグラウンドジョブを設定する最も簡単な (そして最も信頼性の高い) 方法は、{{Pkg|nextcloud}} によってすでにインストールされている systemd サービスとタイマーユニットを使用することです。ジョブが正しい PHP ini ファイル (グローバルの {{ic|php.ini}} ではなく) を使用するように、サービス ユニットを微調整する必要があります。[[ドロップインファイル]] を作成し、以下を追加します。 |
||
+ | |||
+ | {{hc|/etc/systemd/system/nextcloud-cron.service.d/override.conf|2= |
||
+ | [Service] |
||
+ | ExecStart= |
||
+ | ExecStart=/usr/bin/php-legacy -c /etc/webapps/nextcloud/php.ini -f /usr/share/webapps/nextcloud/cron.php |
||
+ | }} |
||
+ | |||
+ | その後 {{ic|nextcloud-cron.timer}} を [[有効化]] して [[起動]] (サービスではありません) |
||
+ | |||
+ | {{Warning|{{AUR|nextcloud-systemd-timers}} をインストールして使用しないでください。時代遅れで、メンテナンスされていません。4 つのスケジュールされたジョブをインストールします。 |
||
+ | |||
+ | 1. ''nextcloud-preview-pre-generate'' は {{ic|occreview:pre-generate}} を実行します。このコマンドは、{{AUR|nextcloud-app-previewgenerator}} がインストールされている場合にのみ存在します。 |
||
+ | |||
+ | 2. ''nextcloud-preview-generate-all'' は {{ic|occreview:generate-all}} を実行します。このコマンドも、{{AUR|nextcloud-app-previewgenerator}} がインストールされている場合にのみ存在します。さらに、これは [https://github.com/nextcloud/previewgenerator#how-to-use-the-app はスケジュールに基づいて実行されることを意図したものではありません] |
||
+ | |||
+ | 3. ''nextcloud-files-scan-all'' は {{ic|occ files:scan --all}} を実行します。これは標準のバックグラウンドジョブですでにカバーされています。テーブル {{ic|oc_jobs}} を見て、{{ic|1=class = 'OCA\Files\BackgroundJob\ScanFiles'}} のエントリを見つけてください。 |
||
+ | |||
+ | 4. ''nextcloud-app-update-all'' は {{ic|occ app:update --all}} を実行します。Nextcloud アプリの自動更新は、完全に危険ではないにしても、少なくとも疑わしいです。アプリの新しいバージョンは、過去にもすでに問題を引き起こしています。バックアップを行い運用環境でのアプリの更新は監視する必要があります。}} |
||
+ | |||
+ | == In-memory キャッシュ == |
||
+ | |||
+ | Nextcloud の [https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/caching_configuration.html ドキュメント] では、パフォーマンスを大幅に向上させるために、ある種のメモリ内オブジェクト キャッシュを適用することを推奨しています。 |
||
+ | |||
+ | {{Note|[https://github.com/nextcloud/notify_push プッシュ通知] (サーバーによる通知によってクライアントのポーリングを置き換え、同期遅延を大幅に短縮する Nextcloud サービス) は ''Redis'' に依存していることに注意してください。}} |
||
== 同期 == |
== 同期 == |
||
203行目: | 457行目: | ||
=== デスクトップ === |
=== デスクトップ === |
||
+ | 公式クライアントは、{{Pkg|nextcloud-client}} パッケージでインストールできます。代替バージョンは [[AUR]]: {{AUR|nextcloud-client-git}} で入手できます。Nextcloud での {{Pkg|owncloud-client}} の使用はサポートされていないことに注意してください。 |
||
− | 公式クライアントを [http://owncloud.org/install/ このページ] で見つけることができ [[AUR|AUR]] では[https://aur.archlinux.org/packages/?O=0&C=0&SeB=nd&K=owncloud-client&outdated=&SB=n&SO=a&PP=50&do_Search=Go 様々なバージョン]がパッケージ化されています ({{AUR|owncloud-client}}, {{AUR|owncloud-client-beta}}, {{AUR|owncloud-client-git}}, {{AUR|owncloud-client-qt5}})。使用方法はドキュメントの [http://doc.owncloud.org/server/7.0/user_manual/files/sync.html このページ] に説明があります。 |
||
+ | |||
+ | デスクトップクライアントは基本的に、デスクトップコンピューターの 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 [[ |
+ | 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 に対応するプログラムを使って '' |
+ | Kontact や [[Evolution]] など CalDAV に対応するプログラムを使って ''Nextcloud'' のカレンダーにアクセスするには、以下の URL を使います: |
<nowiki>https://ADDRESS/remote.php/caldav</nowiki> |
<nowiki>https://ADDRESS/remote.php/caldav</nowiki> |
||
− | 詳しくは [ |
+ | 詳しくは [https://docs.nextcloud.com/server/13/user_manual/pim/index.html 公式ドキュメント] を見てください。 |
+ | ==== 連絡先 ==== |
||
− | 以下のアドレスで、[[Thunderbird|Thunderbird]] の Lightning アドオンをインストールして CalDav を使うことができます: |
||
+ | [[Thunderbird]] と連絡先を同期するには、[[SOGo|SOGo フロントエンド]]と [[Thunderbird#拡張機能|Lightning エクステンション]]をインストールして公式ドキュメントの [https://docs.nextcloud.com/server/13/user_manual/pim/sync_thunderbird.html 手順] に従う必要があります。 |
||
− | http://''username'':''password''@''owncloudserver_address''/owncloud/remote.php/caldav/calendars/''username''/''calendarname'' |
||
+ | === davfs2 でファイルをマウントする === |
||
− | カレンダーを適切に同期させるには Thunderbird を再起動させる必要があるかもしれません。 |
||
+ | ownCloud を永続的にマウントしたい場合、まず {{Pkg|davfs2}} をインストールしてください ([[Davfs2]] に説明があります)。 |
||
− | ==== 連絡先 ==== |
||
+ | |||
+ | もし ownCloud が {{ic|https://own.example.com}} にある場合、WebDAV の URL は {{ic|https://own.example.com/remote.php/webdav}} になります (ownCloud 6.0 現在)。 |
||
+ | |||
+ | ownCloud をマウントするには、次のコマンドを使います: |
||
+ | |||
+ | # mount -t davfs https://own.example.com/remote.php/webdav /path/to/mount |
||
+ | |||
+ | {{ic|/etc/fstab}} にエントリを作成することもできます: |
||
+ | |||
+ | {{hc|/etc/fstab|https://own.example.com/remote.php/webdav /path/to/mount davfs rw,user,noauto 0 0}} |
||
+ | |||
+ | {{Tip|自動でマウントしたい場合、[[Davfs2#接続情報の保存]]で説明されているようにファイルにユーザー名 (と必要であればパスワード) を保存できます。}} |
||
+ | |||
+ | {{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 は接続時にユーザー名とパスワードを要求します。 |
||
− | [[Thunderbird|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 手順] に従う必要があります。 |
||
=== Android === |
=== Android === |
||
− | + | 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]) をダウンロード。 |
|
+ | # ''アカウント'' 設定で新しい DAVdroid アカウントを作成し、サーバー URL (例: {{ic|<nowiki>https://cloud.mysite.com</nowiki>}}) とログイン/パスワードのペアを指定します。 |
||
− | * 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 推奨] されています。 |
||
+ | {{Note|上記のセクション [[Nextcloud#Web サーバー| Web サーバー]] ''DAVdroid'' は適切な URL を自動的に見つけます。}} |
||
− | == ownCloud にデータを保管する == |
||
− | === |
+ | === iOS === |
+ | [https://itunes.apple.com/us/app/nextcloud/id1125420102 App Store] から Nextcloud の公式アプリをダウンロードしてください。 |
||
− | ownCloud に新しいファイルを追加するには [[WebDAV|WebDAV]] かウェブインターフェイスのどちらかを常に使います。そうしないと、正しくインデックスが作られず、ファイルがちゃんと表示されません。ownCloud での WebDAV アップロードを有効にするのに必要な設定はありません。 |
||
+ | == ヒントとテクニック == |
||
− | {{Pkg|php-apcu}} をインストールして有効にすることで WebDAV をスピードアップできます。 |
||
− | + | === "occ" コマンドラインツールの使用 === |
|
+ | サーバー管理に役立つツールは {{ic|occ}} です Nextcloud のドキュメント [https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/occ_command.html の詳細] を参照してください。{{ic|occ}} を使用すると、ユーザーの管理やアプリの構成など、多くの一般的なサーバー操作を実行できます。 |
||
− | ownCloud を永続的にマウントしたい場合、まず {{Pkg|davfs2}} をインストールしてください ([[Davfs]] に説明があります)。 |
||
+ | 元の {{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 が {{ic|https://own.example.com}} にある場合、WebDAV の URL は {{ic|https://own.example.com/remote.php/webdav}} になります (ownCloud 6.0 現在)。 |
||
+ | 推奨パッケージ {{Pkg|php-legacy}} の代わりにパッケージ {{Pkg|php}} を使用する場合は、{{ic|NEXTCLOUD_PHP}} も設定する必要があります。つまり、{{ic|1=export NEXTCLOUD_PHP=/usr/ bin/php}} |
||
− | ownCloud をマウントするには、次のコマンドを (root で) 使います: |
||
+ | {{Warning|キャッシュに {{pkg|php-apcu}} を使用する場合は、必ず {{ic|/etc/webapps/nextcloud/php.ini}} で {{ic|1= apc.enable_cli=1}} を設定してください。そうしないと、{{ic|occ}} コマンドは、APCu が適切に設定されていないというエラーを表示します。}} |
||
− | $ mount https://own.example.com/remote.php/webdav /path/to/mount |
||
+ | === Pacman フック === |
||
− | {{ic|/etc/fstab}} にエントリを作成することもできます: |
||
+ | {{Pkg|nextcloud}} パッケージには、パッケージの更新後に Nextcloud データベースを自動的にアップグレードする [[pacman フック]] が付属しています。{{ic|/usr/share/doc/nextcloud/nextcloud.hook}} をご覧ください。 |
||
− | {{hc|/etc/fstab| |
||
+ | |||
− | https://own.example.com/remote.php/webdav /path/to/mount rw,user,noauto 0 0 |
||
+ | 残念ながら、このフックは {{ic|occ upgrade}} の実行時にグローバルの {{ic|php.ini}} を無条件に使用します。つまり、前述したように環境変数 {{ic|NEXTCLOUD_PHP_CONFIG}} の値は考慮されません。上記の [[Nextcloud#"occ" コマンドラインツールの使用|"occ" コマンドラインツールの使用]] で説明しています。 |
||
+ | |||
+ | 考えられる回避策として、提供されたフックファイルのコピーを適切な場所に作成します。 |
||
+ | |||
+ | {{bc| |
||
+ | # mkdir -vp /etc/pacman.d/hooks |
||
+ | # cp -a /usr/share/doc/nextcloud/nextcloud.hook /etc/pacman.d/hooks/10-nextcloud.hook |
||
}} |
}} |
||
− | {{Tip|自動でマウントできるように [[Davfs#Mounting as regular user]] で説明されているようにファイルにユーザー名 (と必要であればパスワード) を保存できます。}} |
||
+ | {{ic|Exec}} で始まる行を次のように変更します。 |
||
− | === SABnzbd === |
||
+ | {{hc|1=/etc/pacman.d/hooks/10-nextcloud.hook|2= |
||
− | [[SABnzbd]] を使う場合、{{ic|sabnzbd.ini}} ファイルに以下を設定すると良いでしょう: |
||
+ | Exec = /usr/bin/runuser -u nextcloud -- /usr/bin/php-legacy --php-ini /etc/webapps/nextcloud/php.ini /usr/share/webapps/nextcloud/occ upgrade |
||
− | folder_rename 0 |
||
+ | }} |
||
− | というのは ownCloud はアップロードされたファイルを速攻でスキャンするからです。展開された接頭辞などを SABnzbd が削除することを予防します。 |
||
+ | === Nextcloud をサブディレクトリで実行する === |
||
− | === 巨大なファイル === |
||
+ | [[Nextcloud#Web サーバー|Web サーバー]] セクションの手順により、Nextcloud インストールが専用サーバー名 (例: {{ic|cloud.mysite.com}}) 経由でアクセスできるセットアップが行われます。Nextcloud をサブディレクトリに置きたい場合。例: {{ic|www.mysite.com/nextcloud}} の場合: |
||
− | WebDAV は大きなファイルを扱うのには向いていません、CPU とメモリを食いつぶしてしまいます。 |
||
+ | * nginx については、これを明示的に説明している Nextcloud のドキュメントのセクションを参照してください [https://docs.nextcloud.com/server/latest/admin_manual/installation/nginx.html#nextcloud-in-a-subdir-of-the-nginx ウェブルートトピック] |
||
− | 現在のバージョンでは、ownCloud に大きなデータをコピーする良い方法はないように思われます。 |
||
+ | * 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 サービス検出] を参照してください。}} |
||
− | 大きなファイルをあなたの ownCloud に直接コピーし、データベースを完全リスキャンします (例えば [http://apps.owncloud.com/content/show.php?content=151948&forumpage=0&PHPSESSID=37b915160effcc0f37cc761ad2ab88be Re-scan filesystem] アドオンを使うことができます)。 |
||
+ | === Docker === |
||
− | ですが、この方法は将来 ownCloud が計画している end-to-end 暗号化が実装された時に使えなくなるかもしれないので、注意してください。 |
||
+ | [[Docker]] の [https://hub.docker.com/_/owncloud/ ownCloud] あるいは [https://github.com/nextcloud/docker Nextcloud] リポジトリを見てください。 |
||
− | == 重要なノート == |
||
+ | === Office 統合 === |
||
− | * owncloud.example.xxx のようなサブドメインを使う場合、証明書でカバーされているか確認してください。そうでなければ、ownCloud クライアントや wevdav からの接続は失敗するかもしれません。 |
||
+ | 現在、Office 統合には 3 つの異なるソリューションがあります。 |
||
− | * ownCloud の [http://owncloud.org/sync-clients/ sync-clients] を使うことを計画しているなら、[[Network Time Protocol daemon|ntpd]] をインストールして ownCloud サーバーで実行してください。ntpd が実行されてないと、sync-client は失敗します。 |
||
+ | * [https://www.collaboraoffice.com/collabora-online/ Collabora Online] |
||
− | * 接続には [[LAMP#SSL|SSL 暗号化]]を追加してください! |
||
+ | * [https://www.onlyoffice.com/ ONLYOFFICE] |
||
− | (上記のように SSL 暗号化を追加する場合、{{ic|/etc/httpd/conf/extra/httpd-ssl.conf}} を編集して {{ic|DocumentRoot "/srv/http"}} を {{ic|DocumentRoot "/usr/share/webapps/owncloud"}} に変更してください。) |
||
+ | * [https://docs.microsoft.com/en-us/officeonlineserver/office-online-server-overview MS Office Online Server] |
||
+ | 3 つの共通点は、専用サーバーが必要であり、特定のリクエストをオフィスサービスに転送するように Web サーバーを適合させる必要があるという点です。Nextcloud との実際の統合は、上記の製品のいずれかに固有の Nextcloud アプリを使用して実現されます。 |
||
− | * ownCloud のアプリは他にも [http://apps.owncloud.com/ ここ] で探すことができます。 |
||
+ | 3 つの製品はすべてビジネス向けであることに注意してください。つまり、オフィス サービスの料金を支払う必要があります。Collabora のみが開発者プラン ([https://www.collaboraoffice.com/code/ CODE]) を無料で提供しています。 ONLYOFFICE は、[https://www.onlyoffice.com/en/docs-enterprise-prices.aspx ホーム サーバー] プランを手頃な価格で提供しています。 |
||
− | * 新しいアプリケーションをインストールするには、アプリストアから zip をダウンロードして、それを {{ic|/srv/http/owncloud/apps/}} に展開します。その後、httpd を再起動してください: |
||
+ | インストール、セットアップ手順、Nextcloud との統合については、以下を参照してください。 |
||
− | # systemctl restart httpd |
||
+ | * [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] |
||
+ | === アプリの推奨を無効にする === |
||
− | * HTTP のベーシック認証で ownCloud へのアクセスを保護するときは、"status.php" ファイルは認証から外して誰でもアクセスできるようにしてください [https://github.com/owncloud/mirall/issues/734]。 |
||
+ | |||
+ | デフォルトでは、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|WebDAV]] が有効になっているかチェックします。([[LAMP|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|LAMP]] のチュートリアルにしたがって設定を行っている場合、以下の手順を実行してください: |
||
+ | {{ic|/var/log/nextcloud/nextcloud.log}} に次のような警告が大量に表示される場合があります。 |
||
− | 証明書のためのローカルディレクトリを作成して、そこに [[LAMP|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 → 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 [[LAMP#TLS.2FSSL|LAMP]] for example [https://f-droid.org/repository/browse/?fdfilter=davdroid&fdid=at.bitfire.davdroid davdroid] will fail to work because the certificate is not accepted. 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 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 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 CA.der.crt onto the sdcard of your Android device (usually to internal one, eg save from a mail attachement). It should be in root directory. |
||
− | Go to Settings / Security / Credential storage and select “Install from device storage”. |
||
− | The .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 を適応させる ==== |
||
− | Thanks to: [http://www.leftbrainthings.com/2013/10/13/creating-and-importing-self-signed-certificate-to-android-device/] |
||
+ | これは、Apache の '''httpd''' (例:''nginx'') を使用しないインストールにのみ適用されます。 |
||
− | === Can't write into config directory! === |
||
+ | v25 インストールから継承された Web サーバー設定を使用すると、Nextcloud は HTTP 応答ヘッダー {{ic|X-Robots-Tag}} が適切に設定されていないというメッセージを表示するようになります。これを {{ic|"none"}} から {{ic|"noindex, nofollow"}} に変更する必要があります。Web サーバーの設定内で関連する行を見つけて、それに応じて調整します。''nginx'' の場合、この行は次のようになります。 |
||
− | Check your httpd conf file (like owncloud.conf). Add your config dir (/etc/webapps by default) to |
||
− | php_admin_value open_basedir "/srv/http/:/home/:/tmp/:/usr/share/pear/:/usr/share/webapps/:/path/to/dir/" |
||
+ | {{hc|''cloud.mysite.com''.conf| |
||
− | Restart the httpd or php-fpm service to activate the change. |
||
+ | add_header X-Robots-Tag "noindex, nofollow" always; |
||
+ | }} |
||
+ | ==== php から php-legacy への移行 ==== |
||
− | === Can't create data directory (/path/to/dir) === |
||
+ | これはオプションであり、(パッケージ {{Pkg|php-legacy}} ではなく) パッケージ {{Pkg|php}} にまだ依存している Nextcloud のインストールにのみ適用されます。詳細と移行が推奨される理由については、[[Nextcloud#php-legacy への移行|php-legacy への移行]] を参照してください。 |
||
− | Check your httpd conf file (like owncloud.conf). Add your data dir to |
||
− | php_admin_value open_basedir "/srv/http/:/home/:/tmp/:/usr/share/pear/:/usr/share/webapps/:/path/to/dir/" |
||
+ | === php-legacy への移行 === |
||
− | Restart the httpd or php-fpm service to activate the change. |
||
+ | 過去に、{{Pkg|php}} パッケージが (Arch Linux のローリングリリースの理念に沿って) タイムリーに最新の PHP バージョンに更新されることが何度かありましたが、Nextcloud はこの新しいバージョンと互換性がありませんでした。既存のインストールが破壊され、パッケージ {{Pkg|nextcloud}} のメンテナとユーザーに多大な労力がかかります。パッケージ {{Pkg|php}} がバージョン 8.1 からバージョン 8.2 に切り替わったとき、この問題が再び発生しようとしていました。 |
||
− | === CSync failed to find a specific file. === |
||
+ | この頻繁なトラブルを回避するために、新しい {{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}} の上に構築するかを選択できます。 |
||
− | Most probably a certificate issue, recreate it, and don't leave the common name empty or you will see the error again. |
||
+ | {{Pkg|php-legacy}} を使用することを強くお勧めします。このわずかに古いバージョンの PHP では、システムのアップグレードによって既存の Nextcloud インストールが使用できなくなる可能性はほとんどありません。 |
||
− | openssl genrsa -out server.key 2048 |
||
− | openssl req -new -key server.key -x509 -days 365 -out server.crt |
||
+ | {{Warning|PHP の最新かつ最高のバージョン (つまり、{{Pkg|php}}) を選択するユーザーは、パッケージ {{Pkg|php}} がメジャーバージョンまたはマイナーバージョンに切り替わるときの問題に備える必要があります。これらの問題は主に、パッケージ {{Pkg|nextcloud}} が突然 {{Pkg|php}} を依存関係として提供しなくなることで発生します (その時点でそのバージョンが Nextcloud でサポートされていないため) これにより、実質的に {{Pkg|php}} を使用するユーザーは一時的に {{Pkg|php-legacy}} に移行することになります。つまり、しばらくしてから {{Pkg|php}} に戻す必要があります。}} |
||
− | === ログイン後に白いページが表示される === |
||
+ | {{Pkg|php-legacy}} への移行には、いくつかの手動操作が必要です。実際の設定に応じて、次のタスクのサブセットを適用する必要があります。 |
||
− | おそらく新しくインストールしたアプリが原因です。修正するには、phpMyAdmin を使って oc_appconfig テーブルを編集するか (運が良いことにテーブルに edit オプションがある場合) mysql で手動で修正してください: |
||
+ | {{Note|次のアクションのリストは、Nextcloud インストールがこの Wiki 記事に従って設定されていることを前提としています。セットアップがこのアプローチから逸脱する場合は、特に注意して手順を適切に調整してください。}} |
||
− | 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'); |
||
+ | ==== PHP 拡張機能 ==== |
||
− | テーブルから関連する設定が削除されるので、後でまた追加してください。 |
||
+ | {{Pkg|php}} 拡張機能を対応する {{Pkg|php-legacy}} 拡張機能に置き換えます。例えば |
||
− | === GUI の同期クライアントで接続できない === |
||
+ | {{bc| |
||
− | HTTP のベーシック認証を使っている場合、"status.php" が対象から外れていることを確認してください。このファイルは誰からでもアクセスできるようにしておく必要があります [https://github.com/owncloud/mirall/issues/734]。 |
||
+ | $ 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}} の不可欠な部分となっているため、例外です。したがって、ここでこのパッケージを明示的に処理する必要はありません。 |
||
− | === "Can't write into apps directory" === |
||
− | 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 "appstoreenabled" to false. |
||
+ | 実際の PHP 拡張機能のセットは、データベース、メモリ内のオブジェクト キャッシュ、アプリケーションサーバー、およびその他の要因によって異なります。もちろん、別のアプリケーションが最新の PHP バージョンに依存している場合には、非レガシーモジュールが引き続き必要になる可能性があります。同じことが {{Pkg|php}} 自体にも当てはまります。 |
||
− | ''Also'', not mentioned there, the directory needs to be in the open_basedir line in {{ic|/etc/php/php.ini}} |
||
+ | ==== {{ic|php.ini}} の Nextcloud 固有のコピー ==== |
||
− | 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 "appstoreenabled" to true and package upgrades of apps should work fine as well. Relevant lines from {{ic|/etc/webapps/owncloud/config/config.php}}: |
||
− | <pre> |
||
− | 'apps_paths' => |
||
− | array ( |
||
− | 0 => |
||
− | array ( |
||
− | 'path' => '/usr/share/webapps/owncloud/apps', |
||
− | 'url' => '/apps', |
||
− | 'writable' => false, |
||
− | ), |
||
− | 1 => |
||
− | array ( |
||
− | 'path' => '/var/www/owncloud/apps', |
||
− | 'url' => '/wapps', |
||
− | 'writable' => true, |
||
− | ), |
||
− | ), |
||
− | </pre> |
||
− | Example open_basedir line from {{ic|/etc/php/php.ini}} (you might have other dirs in there as well): |
||
− | <pre> |
||
− | open_basedir = /srv/http/:/usr/share/webapps/:/var/www/owncloud/apps/ |
||
− | </pre> |
||
+ | {{hc|1=/etc/webapps/nextcloud/php.ini|2= |
||
− | Directory permissions: |
||
+ | open_basedir=...:/usr/lib/php-legacy/modules:... |
||
− | <pre> |
||
+ | extension_dir = "/usr/lib/php-legacy/modules/" |
||
− | $ ls -ld /usr/share/webapps/owncloud/apps /var/www/owncloud/apps/ |
||
+ | ;extension=imap <= 削除 |
||
− | 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/ |
||
+ | |||
− | </pre> |
||
+ | ==== FPM 設定 ==== |
||
+ | |||
+ | (これは、アプリケーションサーバー ''FPM'' が使用されている場合にのみ適用されます。) |
||
+ | |||
+ | {{bc| |
||
+ | $ mv /etc/php/php-fpm.ini /etc/php-legacy/php-fpm.ini |
||
+ | $ mv /etc/php/php-fpm.d/nextcloud.conf /etc/php-legacy/php-fpm.d/nextcloud.conf |
||
+ | }} |
||
+ | |||
+ | {{ic|/etc/php-legacy/php-fpm.ini}} を変更します |
||
+ | |||
+ | {{hc|1=/etc/php-legacy/php-fpm.ini|2= |
||
+ | extension_dir = "/usr/lib/php-legacy/modules/" |
||
+ | ;extension=imap <= 削除 |
||
+ | }} |
||
+ | |||
+ | {{ic|/etc/php-legacy/php-fpm.d/nextcloud.conf}} を変更します |
||
+ | |||
+ | {{hc|1=/etc/php-legacy/php-fpm.d/nextcloud.conf|2= |
||
+ | listen = /run/php-fpm-legacy/nextcloud.sock |
||
+ | ; It's available in: /usr/share/php-legacy/fpm/status.html |
||
+ | access.log = /var/log/php-fpm-legacy/access/$pool.log |
||
+ | ; uncomment if php-imap is installed and used <= 削除 |
||
+ | ; php_value[extension] = imap <= 削除 |
||
+ | }} |
||
+ | |||
+ | オプションですが推奨: {{ic|www.conf}} を no-op にしますが、{{Pkg|php-legacy-fpm}} の将来の更新で行われる可能性のあるこのファイルの変更を追跡できるようにします。 |
||
+ | |||
+ | {{bc|1= |
||
+ | $ mv /etc/php-legacy/php-fpm.d/www.conf /etc/php-legacy/php-fpm.d/www.conf.package |
||
+ | $ echo "; just a no-op" > /etc/php-legacy/php-fpm.d/www.conf |
||
+ | }} |
||
+ | |||
+ | systemd サービス ''php-fpm.service'' を [[停止]] および [[無効化]] します。''php-fpm-legacy.service'' の [[ドロップインファイル]] を作成します。 |
||
+ | |||
+ | {{hc|/etc/systemd/system/php-fpm-legacy.service.d/override.conf|2= |
||
+ | [Service] |
||
+ | 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'' が使用されている場合にのみ適用されます。) |
||
+ | |||
+ | {{hc|1=/etc/uwsgi/nextcloud.ini|2= |
||
+ | php-set = open_basedir=...:/usr/lib/php-legacy/modules... |
||
+ | # uncomment if php-imap is installed and used <= 削除 |
||
+ | # php-set = extension=imap <= 削除 |
||
+ | }} |
||
+ | |||
+ | ==== Nginx 設定 ==== |
||
+ | |||
+ | アプリケーションサーバーへの特定のリクエストの転送が設定されているファイルを変更します。''FPM'' の場合、例: |
||
+ | |||
+ | {{hc|1=''cloud.mysite.com''.conf|2= |
||
+ | fastcgi_pass unix:/run/php-fpm-legacy/nextcloud.sock; |
||
+ | }} |
||
+ | |||
+ | ''uWSGI'' の場合、適応する必要はありません。 |
||
+ | |||
+ | ==== Apache HTTP server 設定 ==== |
||
+ | |||
+ | Apache の HTTP サーバーとアプリケーションサーバーとして ''FPM'' を使用する場合は、構成内でこの行を調整してください。 |
||
+ | |||
+ | {{bc|1= |
||
+ | SetHandler "proxy:unix:/run/php-fpm-legacy/nextcloud.sock{{!}}fcgi://nextcloud/" |
||
+ | }} |
||
+ | |||
+ | ''uWSGI'' の場合、適応する必要はありません。 |
||
+ | |||
+ | ==== バックグラウンドジョブ ==== |
||
+ | |||
+ | Nextcloud のスケジュールされたバックグラウンドジョブの [[ドロップインファイル]] を更新します。 |
||
+ | |||
+ | {{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 |
||
+ | }} |
||
+ | |||
+ | ==== Pacman フック ==== |
||
+ | |||
+ | pacman フック {{ic|/etc/pacman.d/hooks/10-nextcloud.hook}} も調整する必要があります。{{ic|Exec}} で始まる行を次のように変更します。 |
||
+ | |||
+ | {{hc|1=/etc/pacman.d/hooks/10-nextcloud.hook|2= |
||
+ | 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/7.0/admin_manual/ ownCloud 7.0 管理者ドキュメント] |
||
+ | * [https://docs.nextcloud.com/server/latest/admin_manual/ Nextcloud 管理者ドキュメント] |
2023年7月2日 (日) 15:23時点における最新版
Nextcloud は、いわゆる アプリ によって、あらゆる種類の共有、コラボレーション、コミュニケーションを可能にするクライアントサーバーソフトウェア群です。例えば:
Nextcloud はオープンソースであり、オープンスタンダードに基づいています。データ主権は大きな利点です。つまり、Nextcloud の独自のインスタンスを使用すると、Dropbox、Office 365、Google Drive などの独自の (そして潜在的に信頼できない) サービスから解放されます。
ニーズに応じて、Nextcloud はシングルボードコンピューター (Raspberry Pi など) から数百万のユーザーにサービスを提供する本格的なデータセンターまで展開できます。Nextcloud は、綿密な認証スキームとフェデレーション (個別のインスタンスの接続) のオプションを備えており、エンタープライズ環境での使用に適しています。
Nextcloud は ownCloud のフォークです。ウィキペディアの 歴史 を参照してください。
目次
- 1 セットアップの概要
- 2 インストール
- 3 設定
- 4 データベース
- 5 アプリケーションサーバー
- 6 Web サーバー
- 7 バックグラウンドジョブ
- 8 In-memory キャッシュ
- 9 同期
- 10 ヒントとテクニック
- 11 トラブルシューティング
- 11.1 ログを読む
- 11.2 ImageMagick によるバージョン警告
- 11.3 アップグレード v25 → v26
- 11.4 php-legacy への移行
- 11.5 1 つ以上のアプリの奇妙な動作
- 11.6 コード整合性チェックの失敗に関する警告 (v23)
- 11.7 InnoDB は ROW_FORMAT=COMPRESSED を指定したテーブルの書き込みを拒否します
- 11.8 21.0.0 以上にアップグレードした後の権限とセットアップの問題
- 11.9 access.log、error.log、nextcloud.log に手がかりがないログインループ
- 11.10 環境変数が利用できない
- 11.11 安全な接続を介してインスタンスにアクセスしていますが、インスタンスは安全でない URL を生成しています
- 11.12 Nextcloud が破損したインデックスを報告する (MariaDB)
- 12 参照
セットアップの概要
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 バージョンとして php-legacy を選択します。これにより、かなりの数の依存パッケージが取り込まれます。すべての 必要な PHP 拡張機能 はこの方法で処理されます。
プレビュー生成用にパッケージ php-legacy-imagick と librsvg を追加インストールすることをお勧めします (できれば 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.ini
が occ
ツールで使用されるようにするには、環境変数 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
でツールを終了します。
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 サービスを定義する必要があります。
nextcloud.ini
nextcloud パッケージには、適切な場所 /etc/uwsgi/nextcloud.ini
にサンプル構成ファイルがすでに含まれています。ほとんどの場合、このファイルを要件と設定に適合させる必要があります。 バージョンに多くのコメント付き変更が含まれている を見つけます (パッケージのバージョンと比較) これは、個人使用 (つまり、中程度の負荷) を目的とした、シンプルな Nextcloud インストールを前提としています。
一般に、有効な拡張機能、拡張機能固有の設定、および open_basedir
を /etc/webapps/nextcloud/php.ini
と同期させます (opcache を除く)
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
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 によって提供されるすべてのアプリケーションに適用されることに注意してください。
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_fcgi と mod_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
を 有効化 して 起動 (サービスではありません)
In-memory キャッシュ
Nextcloud の ドキュメント では、パフォーマンスを大幅に向上させるために、ある種のメモリ内オブジェクト キャッシュを適用することを推奨しています。
同期
デスクトップ
公式クライアントは、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 Thunderbird の Lightning カレンダーを使って 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
GNOME Files (Nautilus) でファイルをマウントする
Nautilus ('+ Other Locations') では WebDAV プロトコルを使ってファイルに直接アクセスできます。Nextcloud のインストール Web GUI で表示されるリンクを使ってください (通常は https://cloud.mysite.com/remote.php/webdav/
) ただしプロトコルの名前は https
から davs
に置き換えてください。Nautilus は接続時にユーザー名とパスワードを要求します。
Android
Nextcloud の公式アプリは Google Play や F-Droid からダウンロードできます。
連絡先やカレンダーの同期を有効化するには (Android 4 以上):
- DAVdroid (Play Store, F-Droid) をダウンロード。
- アカウント 設定で新しい DAVdroid アカウントを作成し、サーバー URL (例:
https://cloud.mysite.com
) とログイン/パスワードのペアを指定します。
iOS
App Store から Nextcloud の公式アプリをダウンロードしてください。
ヒントとテクニック
"occ" コマンドラインツールの使用
サーバー管理に役立つツールは occ
です Nextcloud のドキュメント の詳細 を参照してください。occ
を使用すると、ユーザーの管理やアプリの構成など、多くの一般的なサーバー操作を実行できます。
元の /usr/share/webapps/nextcloud/occ
の便利なラッパーは、デフォルトユーザー (nextcloud) として自動的に実行される /usr/bin/occ
で提供されます。)、デフォルトの PHP 実行可能ファイルと PHP 設定ファイルを使用します。環境変数 NEXTCLOUD_USER
、NEXTCLOUD_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
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>
の部分をコメントアウトします。
Docker
Docker の ownCloud あるいは 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-legacy への移行には、いくつかの手動操作が必要です。実際の設定に応じて、次のタスクのサブセットを適用する必要があります。
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 以上にアップグレードした後の権限とセットアップの問題
バージョン 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
ユーザによって書き込み可能かつ所有されていること。 - アプリケーションサーバ (FPM や uWSGI など) が、
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
を置き換えてください。