「Nextcloud」の版間の差分
(言語間リンク) |
Kusakata.bot2 (トーク | 投稿記録) (Pkg/AUR テンプレートの更新) |
||
(2人の利用者による、間の9版が非表示) | |||
1行目: | 1行目: | ||
− | [[Category: |
+ | [[Category:ファイル共有]] |
+ | [[Category:ウェブアプリケーション]] |
||
[[en:Nextcloud]] |
[[en:Nextcloud]] |
||
[[fr:Owncloud]] |
[[fr:Owncloud]] |
||
{{Related articles start}} |
{{Related articles start}} |
||
− | {{Related| |
+ | {{Related|Apache HTTP Server}} |
− | {{Related|LEMP}} |
||
{{Related|Nginx}} |
{{Related|Nginx}} |
||
{{Related|OpenSSL}} |
{{Related|OpenSSL}} |
||
13行目: | 13行目: | ||
:Nextcloud はファイルホストサービスを作成して使用するためのクライアントサーバーソフトウェアスイートである。広く使われている Dropbox と同じような機能を持ち、フリーでオープンソースであるため、誰でもプライベートサーバーにインストール・使用することができる。Dropbox などのプロプライエタリサービスと異なり、オープンなアーキテクチャを活用してサーバーに機能 (アプリケーション) を簡単に追加することが可能。 |
:Nextcloud はファイルホストサービスを作成して使用するためのクライアントサーバーソフトウェアスイートである。広く使われている Dropbox と同じような機能を持ち、フリーでオープンソースであるため、誰でもプライベートサーバーにインストール・使用することができる。Dropbox などのプロプライエタリサービスと異なり、オープンなアーキテクチャを活用してサーバーに機能 (アプリケーション) を簡単に追加することが可能。 |
||
− | Nextcloud と ownCloud の違いについては [https://en.wikipedia.org/wiki/Nextcloud#Differences_from_ownCloud] を見てください。 |
+ | Nextcloud は ownCloud のフォークです。Nextcloud と ownCloud の違いについては [https://en.wikipedia.org/wiki/Nextcloud#Differences_from_ownCloud] を見てください。 |
== 要件 == |
== 要件 == |
||
Nextcloud は以下のコンポーネントを必要とします: |
Nextcloud は以下のコンポーネントを必要とします: |
||
* ウェブサーバー: [[Apache]] または [[nginx]]。 |
* ウェブサーバー: [[Apache]] または [[nginx]]。 |
||
− | * データベース: [[MariaDB]] または [[PostgreSQL]]。 |
+ | * データベース: [[MariaDB]]/MySQL または [[PostgreSQL]]。 |
* [[PHP]] と[[#PHP|追加モジュール]]。 |
* [[PHP]] と[[#PHP|追加モジュール]]。 |
||
30行目: | 30行目: | ||
Nextcloud をセットアップするには PHP が動作するウェブサーバー・データベースサーバーが必要です。 |
Nextcloud をセットアップするには PHP が動作するウェブサーバー・データベースサーバーが必要です。 |
||
+ | |||
+ | === Pacman フック === |
||
+ | |||
+ | nextcloud のデータベースのアップグレードを自動化するには、以下のように pacman でアップグレードした後のフックを設定します: |
||
+ | |||
+ | {{hc|/etc/pacman.d/hooks/nextcloud.hook|2= |
||
+ | [Trigger] |
||
+ | Operation = Install |
||
+ | Operation = Upgrade |
||
+ | Type = Package |
||
+ | Target = nextcloud |
||
+ | Target = nextcloud-app-* |
||
+ | |||
+ | [Action] |
||
+ | Description = Update Nextcloud installation |
||
+ | When = PostTransaction |
||
+ | Exec = /usr/bin/runuser -u http -- /usr/bin/php /usr/share/webapps/nextcloud/occ upgrade |
||
+ | }} |
||
+ | |||
+ | {{ic|pacman.conf}} の {{ic|HookDir}} をカスタマイズしている場合はフックを適切な場所に配置してください。 |
||
+ | |||
+ | [[Pacman#フック]]も参照。 |
||
=== PHP の設定 === |
=== PHP の設定 === |
||
− | {{Tip|必要な全ての PHP モジュールについては、上流のドキュメントを参照してください: [https://docs.nextcloud.com/server/11/admin_manual/installation/source_installation.html#prerequisites Nextcloud 11.0]。}} |
||
+ | {{Tip|必要な全ての PHP モジュールについては、上流のドキュメントを参照してください: [https://docs.nextcloud.com/server/13/admin_manual/installation/source_installation.html#prerequisites-label Nextcloud 13.0]。}} |
||
− | [[PHP#gd]], {{pkg|php-intl}}, {{pkg|php-mcrypt}} を追加モジュールとしてインストールしてください。 |
||
+ | |||
+ | [[PHP#gd]] と {{pkg|php-intl}} を追加モジュールとしてインストールしてください。また、[[PHP#OPCache|OPcache]] を設定してください [https://docs.nextcloud.com/server/13/go.php?to=admin-php-opcache]. |
||
+ | |||
+ | 一部のアプリ (News など) は iconv 拡張を必要とします。アプリを使いたい場合は {{ic|/etc/php/php.ini}} で拡張をアンコメントしてください。 |
||
使用するデータベースバックエンドに応じて設定が必要です: |
使用するデータベースバックエンドに応じて設定が必要です: |
||
41行目: | 66行目: | ||
* [[SQLite]] の場合、[[PHP#Sqlite]] を見てください。 |
* [[SQLite]] の場合、[[PHP#Sqlite]] を見てください。 |
||
− | [[PHP#キャッシュ|キャッシュ]]を活用することでパフォーマンスを改善することができます。詳しくは公式ドキュメントの [https://docs.nextcloud.com/server/ |
+ | [[PHP#キャッシュ|キャッシュ]]を活用することでパフォーマンスを改善することができます。詳しくは公式ドキュメントの [https://docs.nextcloud.com/server/13/admin_manual/configuration_server/caching_configuration.html メモリキャッシュの設定] を見てください。 |
=== データベースの設定 === |
=== データベースの設定 === |
||
48行目: | 73行目: | ||
==== MariaDB ==== |
==== MariaDB ==== |
||
− | {{Note|{{ic|/etc/mysql/my.cnf}} の {{ic|binlog_format}} を ''mixed'' に設定することが強く推奨されています [https://docs.nextcloud.com/server/11/admin_manual/configuration_database/linux_database_configuration.html#db-binlog-label]。}} |
||
以下は [[MariaDB]] のデータベースとユーザーを設定する例です: |
以下は [[MariaDB]] のデータベースとユーザーを設定する例です: |
||
57行目: | 81行目: | ||
mysql> \q |
mysql> \q |
||
}} |
}} |
||
+ | |||
+ | {{Note|Nextcloud サーバーで絵文字を使えるようにするためデータベースの4バイト文字のサポートを有効にしてください [https://docs.nextcloud.com/server/13/admin_manual/configuration_database/mysql_4byte_support.html]。}} |
||
+ | |||
==== PostgreSQL ==== |
==== PostgreSQL ==== |
||
以下は [[PostgreSQL]] のデータベースとユーザーを設定する例です: |
以下は [[PostgreSQL]] のデータベースとユーザーを設定する例です: |
||
63行目: | 90行目: | ||
Enter it again: |
Enter it again: |
||
}} |
}} |
||
− | + | $ sudo -u postgres createdb -O nextcloud nextcloud |
|
=== ウェブサーバーの設定 === |
=== ウェブサーバーの設定 === |
||
71行目: | 98行目: | ||
==== Apache ==== |
==== Apache ==== |
||
+ | [[Apache]] をインストールしたら [[Apache#PHP|Apache の PHP モジュール]]をインストール・有効化してください。 |
||
+ | |||
Apache の設定ファイルを設定ディレクトリにコピーしてください: |
Apache の設定ファイルを設定ディレクトリにコピーしてください: |
||
− | # cp /etc/webapps/ |
+ | # cp /etc/webapps/nextcloud/apache.example.conf /etc/httpd/conf/extra/nextcloud.conf |
− | 必要に応じてファイルの設定を変更してください。デフォルトでは {{ic|/ |
+ | 必要に応じてファイルの設定を変更してください。デフォルトでは {{ic|/nextcloud}} で {{ic|/usr/share/webapps/nextcloud}} が表示されるエイリアスが記述されています。 |
設定したら {{ic|/etc/httpd/conf/httpd.conf}} に以下を追加してください: |
設定したら {{ic|/etc/httpd/conf/httpd.conf}} に以下を追加してください: |
||
− | Include conf/extra/ |
+ | Include conf/extra/nextcloud.conf |
Nextcloud がインストールされているルートディレクトリ (例: {{ic|/usr/share/webapps/nextcloud}}) にウェブサーバーのユーザー {{ic|http}} からアクセスできることを確認してください。 |
Nextcloud がインストールされているルートディレクトリ (例: {{ic|/usr/share/webapps/nextcloud}}) にウェブサーバーのユーザー {{ic|http}} からアクセスできることを確認してください。 |
||
84行目: | 113行目: | ||
===== WebDAV ===== |
===== WebDAV ===== |
||
− | + | Nextcloud には [[WebDAV]] の実装が付いていますが、Apache の実装と衝突する可能性があります。Apache で WebDAV を有効にしていた場合 (デフォルトでは有効になっていません)、{{ic|/etc/httpd/conf/httpd.conf}} で {{ic|mod_dav}} と {{ic|mod_dav_fs}} モジュールを無効にしてください。詳しくは [https://forum.owncloud.org/viewtopic.php?f=17&t=7240] を参照。 |
|
==== Nginx ==== |
==== Nginx ==== |
||
+ | [[Nginx#FastCGI]] に書かれているように PHP-FPM を設定してください。また、{{ic|/etc/php/php-fpm.d/www.conf}} の {{ic|1=env[PATH]}} をアンコメントしてください。 |
||
− | クラウドの設定ファイルを保存するための空ディレクトリを作成してください: |
||
− | # mkdir /etc/nginx/conf.d/ |
||
+ | [[Nginx#サーバーブロック|server ブロック]]を作成して [https://docs.nextcloud.com/server/13/admin_manual/installation/nginx.html Nextcloud のドキュメント] に書かれているように中身を追加してください: |
||
− | {{ic|/etc/nginx/nginx.conf}} の "http" セクションに以下の行を追加してください: |
||
− | |||
− | server_names_hash_bucket_size 64; |
||
− | include conf.d/*.conf; |
||
+ | {{Note|{{Pkg|nextcloud}} を使用する場合は {{ic|root}} のパスを {{ic|/usr/share/webapps/nextcloud}} としてください。}} |
||
− | [[Let’s Encrypt]] を使用してセキュアな証明書を入手することが推奨されています。[[#セキュリティの強化]]を見てください。 |
||
+ | {{Tip|[[Let's Encrypt]] を設定する場合は最初の設定として [https://github.com/graysky2/configs/blob/master/nginx/nextcloud-initial.conf テンプレート] を参照してください。}} |
||
+ | {{hc|/etc/nginx/sites-available/owncloud.conf|2= |
||
− | ===== PHP-FPM の設定 ===== |
||
+ | <nowiki> |
||
+ | upstream php-handler { |
||
+ | server unix:/run/php-fpm/php-fpm.sock; |
||
+ | } |
||
+ | server { |
||
− | [[Nginx#PHP を動かす]]に書かれているようにして PHP-FPM を設定してください。 |
||
+ | listen 443 ssl http2; |
||
+ | listen [::]:443 ssl http2; |
||
+ | server_name cloud.example.com; |
||
+ | ssl_certificate /etc/ssl/nginx/cloud.example.com.crt; |
||
− | {{ic|/etc/php/php-fpm.d/www.conf}} の {{ic|1=env[PATH] = /usr/local/bin:/usr/bin:/bin}} をアンコメントしてから {{ic|php-fpm.service}} を[[再起動]]して変更を適用してください。 |
||
+ | ssl_certificate_key /etc/ssl/nginx/cloud.example.com.key; |
||
+ | |||
+ | .. |
||
+ | |||
+ | # Path to the root of your installation |
||
+ | root /usr/share/webapps/nextcloud/; |
||
+ | |||
+ | .. |
||
+ | |||
+ | |||
+ | location ~ ^/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|ocs-provider/.+)\.php(?:$|/) { |
||
+ | fastcgi_split_path_info ^(.+\.php)(/.*)$; |
||
+ | include fastcgi_params; |
||
+ | fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; |
||
+ | fastcgi_param PATH_INFO $fastcgi_path_info; |
||
+ | fastcgi_param HTTPS on; |
||
+ | #Avoid sending the security headers twice |
||
+ | fastcgi_param modHeadersAvailable true; |
||
+ | fastcgi_param front_controller_active true; |
||
+ | fastcgi_pass php-handler; |
||
+ | fastcgi_intercept_errors on; |
||
+ | fastcgi_request_buffering off; |
||
+ | } |
||
+ | } |
||
+ | </nowiki> |
||
+ | }} |
||
== 初期化 == |
== 初期化 == |
||
− | ウェブブラウザで Nextcloud をインストールした PC のアドレスを開いてください (例: https://www. |
+ | ウェブブラウザで Nextcloud をインストールした PC のアドレスを開いてください (例: https://www.example.com/nextcloud )。指示に従って管理者アカウントを追加し先に作成したデータベースを選択します。 |
+ | |||
+ | === ストレージディレクトリの作成 === |
||
+ | |||
+ | "Cannot write into "apps" directory" というエラーが表示される場合、Arch の Nextcloud パッケージが ''apps'' フォルダだけ使用していて ''data'' フォルダが存在しないのが原因です。 |
||
+ | |||
+ | アプリ用の新しい書き込み可能なフォルダを作成して data フォルダも作成するのが一番簡単な解決方法です (http グループは必要に応じて使用しているウェブサーバーのグループに置き換えてください): |
||
+ | |||
+ | # mkdir -p /usr/share/webapps/nextcloud/data |
||
+ | # chown http:http /usr/share/webapps/nextcloud/data |
||
+ | # chown http:http /usr/share/webapps/nextcloud/apps |
||
+ | # chmod 750 /usr/share/webapps/nextcloud/data |
||
+ | # chmod 750 /usr/share/webapps/nextcloud/apps |
||
+ | |||
+ | データディレクトリを上書きするために、{{ic|/etc/webapps/nextcloud/config/config.php}} を編集して、ファイルの末尾の {{ic|);}} の前に以下の行を追加してください: |
||
+ | |||
+ | {{hc|/etc/webapps/nextcloud/config/config.php|2= |
||
+ | 'datadirectory' => '/usr/share/webapps/nextcloud/data' |
||
+ | }} |
||
+ | |||
+ | ページを更新すればエラーは消えるはずです。 |
||
+ | |||
+ | === キャッシュの設定 === |
||
+ | |||
+ | [https://docs.nextcloud.com/server/13/admin_manual/configuration_server/caching_configuration.html キャッシュを有効化] することが推奨されています。Nextcloud のドキュメントでは [[Redis]], Memcached, [[PHP#APCu|APCu]] の使用方法が書かれています。 |
||
== セキュリティの強化 == |
== セキュリティの強化 == |
||
+ | |||
+ | [https://docs.nextcloud.com/server/13/admin_manual/configuration_server/harden_server.html Nextcloud Hardening and Security] や[[セキュリティ]]の記事に一般的なトピックの説明があります。[https://scan.nextcloud.com/ セキュリティスキャナ] も参照。 |
||
+ | |||
=== Let's Encrypt === |
=== Let's Encrypt === |
||
==== nginx ==== |
==== nginx ==== |
||
[https://github.com/graysky2/configs/blob/master/nginx/nextcloud-initial.conf こちらのファイル] をテンプレートとして使ってクラウド設定の {{ic|/etc/nginx/conf.d/cloud-initial.conf}} を作成してください。テンプレートファイルの "@@FQDN@@" は実際に使用する [https://en.wikipedia.org/wiki/Fully_qualified_domain_name FQDN] に置き換えてください。最初に暗号化されない設定を使うにはサーバーの証明書を生成する必要があります。[[Let’s Encrypt]] に書かれている手順に従ってサーバーの暗号化証明書を作成してください。 |
[https://github.com/graysky2/configs/blob/master/nginx/nextcloud-initial.conf こちらのファイル] をテンプレートとして使ってクラウド設定の {{ic|/etc/nginx/conf.d/cloud-initial.conf}} を作成してください。テンプレートファイルの "@@FQDN@@" は実際に使用する [https://en.wikipedia.org/wiki/Fully_qualified_domain_name FQDN] に置き換えてください。最初に暗号化されない設定を使うにはサーバーの証明書を生成する必要があります。[[Let’s Encrypt]] に書かれている手順に従ってサーバーの暗号化証明書を作成してください。 |
||
− | 証明書を作成できたら {{ic|/etc/nginx/conf.d/cloud-initial.conf}} を新しいファイル {{ic|/etc/nginx/conf.d/cloud.conf}} に置き換えてください |
+ | 証明書を作成できたら {{ic|/etc/nginx/conf.d/cloud-initial.conf}} を新しいファイル {{ic|/etc/nginx/conf.d/cloud.conf}} に置き換えてください。[https://github.com/graysky2/configs/blob/master/nginx/nextcloud.conf こちらのファイル] をテンプレートとして使うことができます。"@@FQDN@@" は実際に使用する [https://en.wikipedia.org/wiki/Fully_qualified_domain_name FQDN] に置き換えてください。その後 {{ic|nginx.service}} を[[起動]]・[[有効化]]してください。 |
=== uWSGI === |
=== uWSGI === |
||
− | {{pkg|uwsgi-plugin-php}} による [[uWSGI]] アプリケーションサーバーを使うことで |
+ | {{pkg|uwsgi-plugin-php}} による [[uWSGI]] アプリケーションサーバーを使うことで Nextcloud を固有のプロセスで動かすことができます。システム全体の {{ic|php.ini}} を編集しなくても、インスタンスの [[PHP#設定|PHP 設定]]を定義することができるため、ウェブアプリケーションの設定を分離することが可能です。uWSGI 自体にリソースの使用を制限するための機能が豊富に含まれており、アプリケーションのセキュリティを強化したり、専用のユーザーで動くようにプロセスを分けられます。 |
[[#PHP-FPM の設定|PHP-FPM の設定]]と異なるところは {{ic|<nowiki>location ~ \.php(?:$|/) {}</nowiki>}} ブロックだけです: |
[[#PHP-FPM の設定|PHP-FPM の設定]]と異なるところは {{ic|<nowiki>location ~ \.php(?:$|/) {}</nowiki>}} ブロックだけです: |
||
128行目: | 214行目: | ||
uwsgi_hide_header X-Content-Type-Options; |
uwsgi_hide_header X-Content-Type-Options; |
||
uwsgi_hide_header X-Robots-Tag; |
uwsgi_hide_header X-Robots-Tag; |
||
− | uwsgi_pass unix:/run/uwsgi/ |
+ | uwsgi_pass unix:/run/uwsgi/nextcloud.sock; |
} |
} |
||
</nowiki>}} |
</nowiki>}} |
||
134行目: | 220行目: | ||
それから ''uWSGI'' の設定ファイルを作成してください: |
それから ''uWSGI'' の設定ファイルを作成してください: |
||
− | {{hc|/etc/uwsgi/ |
+ | {{hc|/etc/uwsgi/nextcloud.ini|<nowiki> |
[uwsgi] |
[uwsgi] |
||
; load the required plugins |
; load the required plugins |
||
172行目: | 258行目: | ||
; set php configuration for this instance of php, no need to edit global php.ini |
; set php configuration for this instance of php, no need to edit global php.ini |
||
php-set = date.timezone=Etc/UTC |
php-set = date.timezone=Etc/UTC |
||
− | ;php-set = open_basedir=/tmp/:/usr/share/webapps/ |
+ | ;php-set = open_basedir=/tmp/:/usr/share/webapps/nextcloud:/etc/webapps/nextcloud:/dev/urandom |
php-set = expose_php=false |
php-set = expose_php=false |
||
; avoid security risk of leaving sessions in world-readable /tmp |
; avoid security risk of leaving sessions in world-readable /tmp |
||
− | php-set = session.save_path=/usr/share/webapps/ |
+ | php-set = session.save_path=/usr/share/webapps/nextcloud/data |
− | ; port of php directives set upstream in /usr/share/webapps/ |
+ | ; port of php directives set upstream in /usr/share/webapps/nextcloud/.user.ini for use with PHP-FPM |
php-set = upload_max_filesize=513M |
php-set = upload_max_filesize=513M |
||
php-set = post_max_size=513M |
php-set = post_max_size=513M |
||
185行目: | 271行目: | ||
; load all extensions only in this instance of php, no need to edit global php.ini |
; load all extensions only in this instance of php, no need to edit global php.ini |
||
;; required core modules |
;; required core modules |
||
− | php-set = extension=gd |
+ | php-set = extension=gd |
− | php-set = extension=iconv |
+ | php-set = extension=iconv |
− | ;php-set = extension=zip |
+ | ;php-set = extension=zip # enabled by default in global php.ini |
;; database connectors |
;; database connectors |
||
;; uncomment your selected driver |
;; uncomment your selected driver |
||
− | ;php-set = extension=pdo_sqlite |
+ | ;php-set = extension=pdo_sqlite |
− | ;php-set = extension=pdo_mysql |
+ | ;php-set = extension=pdo_mysql |
− | ;php-set = extension=pdo_pgsql |
+ | ;php-set = extension=pdo_pgsql |
;; recommended extensions |
;; recommended extensions |
||
− | ;php-set = extension=curl |
+ | ;php-set = extension=curl # enabled by default in global php.ini |
− | php-set = extension=bz2 |
+ | php-set = extension=bz2 |
− | php-set = extension=intl |
+ | php-set = extension=intl |
− | php-set = extension=mcrypt.so |
||
;; required for specific apps |
;; required for specific apps |
||
− | ;php-set = extension=ldap |
+ | ;php-set = extension=ldap # for LDAP integration |
− | ;php-set = extension=ftp |
+ | ;php-set = extension=ftp # for FTP storage / external user authentication |
− | ;php-set = extension=imap |
+ | ;php-set = extension=imap # for external user authentication, requires php-imap |
;; recommended for specific apps |
;; recommended for specific apps |
||
− | ;php-set = extension=exif |
+ | ;php-set = extension=exif # for image rotation in pictures app, requires exiv2 |
− | ;php-set = extension=gmp |
+ | ;php-set = extension=gmp # for SFTP storage |
;; for preview generation |
;; for preview generation |
||
;; provided by packages in AUR |
;; provided by packages in AUR |
||
− | ; php-set = extension=imagick |
+ | ; php-set = extension=imagick |
; opcache |
; opcache |
||
− | php-set = zend_extension=opcache |
+ | php-set = zend_extension=opcache |
; user cache |
; user cache |
||
; provided by php-acpu, to be enabled **either** here **or** in /etc/php/conf.d/apcu.ini |
; provided by php-acpu, to be enabled **either** here **or** in /etc/php/conf.d/apcu.ini |
||
− | php-set = extension=apcu |
+ | php-set = extension=apcu |
; per https://github.com/krakjoe/apcu/blob/simplify/INSTALL |
; per https://github.com/krakjoe/apcu/blob/simplify/INSTALL |
||
php-set = apc.ttl=7200 |
php-set = apc.ttl=7200 |
||
php-set = apc.enable_cli=1 |
php-set = apc.enable_cli=1 |
||
− | cron2 = minute=-15,unique=1 /usr/bin/php -f /usr/share/webapps/ |
+ | cron2 = minute=-15,unique=1 /usr/bin/php -f /usr/share/webapps/nextcloud/cron.php 1>/dev/null |
</nowiki>}} |
</nowiki>}} |
||
{{Note| |
{{Note| |
||
* 必ず uWSGI 設定ファイルでタイムゾーンを設定して使用するデータベースコネクタをアンコメントしてください。 |
* 必ず uWSGI 設定ファイルでタイムゾーンを設定して使用するデータベースコネクタをアンコメントしてください。 |
||
− | * PHP 7 から、[[PHP#設定|open_basedir]] ディレクトリは上流と同じように [https://www. |
+ | * PHP 7 から、[[PHP#設定|open_basedir]] ディレクトリは上流と同じように [https://www.archlinux.jp/news/php-70-packages-released/ デフォルトでは設定されなくなりました]。使用すると [https://github.com/owncloud/core/search?q=open_basedir&type=Issues&utf8=%E2%9C%93 一部の機能が使えなくなる] 可能性があります。 |
− | * nextcloud を {{ic|/nextcloud}} サブディレクトリに配置する場合は {{ic|php-docroot |
+ | * nextcloud を {{ic|/nextcloud}} サブディレクトリに配置する場合は {{ic|1=php-docroot = /usr/share/webapps}} を使ってください。}} |
− | {{Warning|[https://uwsgi-docs.readthedocs.org/en/latest/Cron.html uWSGI cron] によって設定される [https:// |
+ | {{Warning|[https://uwsgi-docs.readthedocs.org/en/latest/Cron.html uWSGI cron] によって設定される [https://docs.nextcloud.com/server/13/admin_manual/configuration_server/background_jobs_configuration.html Nextcloud のバックグラウンドジョブ] は {{ic|/etc/php/php.ini}} のグローバル設定を使用します。必要なモジュールなどのパラメータが有効にならず、[https://github.com/owncloud/core/issues/12678#issuecomment-66114448 様々な問題] が発生します。{{ic|/etc/php/php.ini}} を {{ic|/etc/uwsgi/cron-php.ini}} などにコピーして必要な設定 ({{ic|/etc/uwsgi/nextcloud.ini}} のパラメータ) を行い、cron で ''php'' を実行する箇所に {{ic|-c /etc/uwsgi/cron-php.ini}} オプションを追加することで問題は解決します。}} |
==== 有効化 ==== |
==== 有効化 ==== |
||
[[uWSGI]] には設定ファイルをインスタンスの識別子として使ってアプリケーションを起動したり有効化できる[[Systemd#ユニットを使う|テンプレートユニット]]が入っています。例えば: |
[[uWSGI]] には設定ファイルをインスタンスの識別子として使ってアプリケーションを起動したり有効化できる[[Systemd#ユニットを使う|テンプレートユニット]]が入っています。例えば: |
||
− | # systemctl start uwsgi@ |
+ | # systemctl start uwsgi@nextcloud.socket |
+ | |||
− | 上のコマンドは {{ic|/etc/uwsgi/owncloud.ini}} 設定ファイルを参照して必要に応じて起動します。 |
||
+ | 上のコマンドは {{ic|/etc/uwsgi/nextcloud.ini}} 設定ファイルを参照して必要に応じて起動します。 |
||
ブート時にデフォルトで uwsgi サービスを有効化するには、次を実行: |
ブート時にデフォルトで uwsgi サービスを有効化するには、次を実行: |
||
− | # systemctl enable uwsgi@ |
+ | # systemctl enable uwsgi@nextcloud.socket |
{{Note|[http://0pointer.de/blog/projects/socket-activation.html systemd のソケットアクティベーション] を利用することで、インスタンスへの接続がない間は無駄にリソースを消費しないようにしています。すぐに有効化したい場合は、{{ic|.socket}} という部分を削除してサービスを起動・有効化してください。}} |
{{Note|[http://0pointer.de/blog/projects/socket-activation.html systemd のソケットアクティベーション] を利用することで、インスタンスへの接続がない間は無駄にリソースを消費しないようにしています。すぐに有効化したい場合は、{{ic|.socket}} という部分を削除してサービスを起動・有効化してください。}} |
||
249行目: | 335行目: | ||
=== ファイルシステムのパーティションの設定 === |
=== ファイルシステムのパーティションの設定 === |
||
− | + | {{ic|config/}}, {{ic|data/}}, {{ic|apps/}} のパーミッションはできるかぎり厳しく設定してください。HTTP ユーザー ({{pkg|apache}} であれば ''http'') をディレクトリの所有者として、パーミッションは {{ic|700}} にしてください。以下のスクリプトを使うことで設定できます: |
|
− | |||
− | {{Note|Nextcloud のパッケージには同じようなスクリプトである {{ic|/usr/bin/set-nc-perms}} が含まれていますが、ownCloud のパッケージには含まれていません。}} |
||
{{hc|oc-perms|2=<nowiki> |
{{hc|oc-perms|2=<nowiki> |
||
#!/bin/bash |
#!/bin/bash |
||
− | ocpath='/usr/share/webapps/ |
+ | ocpath='/usr/share/webapps/nextcloud' |
htuser='http' |
htuser='http' |
||
htgroup='http' |
htgroup='http' |
||
271行目: | 355行目: | ||
chown -R ${rootuser}:${htgroup} ${ocpath}/ |
chown -R ${rootuser}:${htgroup} ${ocpath}/ |
||
chown -R ${htuser}:${htgroup} ${ocpath}/apps/ |
chown -R ${htuser}:${htgroup} ${ocpath}/apps/ |
||
+ | chown -R ${htuser}:${htgroup} ${ocpath}/assets/ |
||
chown -R ${htuser}:${htgroup} ${ocpath}/config/ |
chown -R ${htuser}:${htgroup} ${ocpath}/config/ |
||
chown -R ${htuser}:${htgroup} ${ocpath}/data/ |
chown -R ${htuser}:${htgroup} ${ocpath}/data/ |
||
chown -R ${htuser}:${htgroup} ${ocpath}/themes/ |
chown -R ${htuser}:${htgroup} ${ocpath}/themes/ |
||
− | chown -R ${htuser}:${htgroup} ${ocpath}/ |
+ | chown -R ${htuser}:${htgroup} ${ocpath}/updater/ |
chmod +x ${ocpath}/occ |
chmod +x ${ocpath}/occ |
||
292行目: | 377行目: | ||
標準的なインストール場所からファイルパスをカスタマイズしている場合、上記のスクリプトも修正する必要があります。 |
標準的なインストール場所からファイルパスをカスタマイズしている場合、上記のスクリプトも修正する必要があります。 |
||
− | |||
− | === fail2ban によるハッキングからの防護 === |
||
− | [[fail2ban]] のセットアップが強く推奨されています。インストールしたら、以下のファイルを作成してください: |
||
− | |||
− | {{hc|/etc/fail2ban/filter.d/owncloud.conf|<nowiki> |
||
− | [Definition] |
||
− | failregex={"reqId":".*","remoteAddr":".*","app":"core","message":"Login failed: '.*' \(Remote IP: '<HOST>'\)","level":2,"time":".*"} |
||
− | |||
− | ignoreregex = |
||
− | </nowiki>}} |
||
− | |||
− | {{hc|/etc/fail2ban/jail.local|<nowiki> |
||
− | [owncloud] |
||
− | enabled = true |
||
− | filter = owncloud |
||
− | port = http,https |
||
− | logpath = /usr/share/webapps/owncloud/data/owncloud.log |
||
− | # optionally whitelist internal LAN IP addresses |
||
− | ignoreip = 192.168.1.1/24 |
||
− | </nowiki>}} |
||
− | |||
− | 設定後 {{ic|fail2ban}} サービスを[[systemd#ユニットを使う|再起動]]してください。以下を実行することで設定をテストできます: |
||
− | # fail2ban-regex /usr/share/webapps/owncloud/data/owncloud.log /etc/fail2ban/filter.d/owncloud.conf -v |
||
− | |||
− | == Arch パッケージのアップデートに伴うメンテナンス == |
||
− | |||
− | Arch の owncloud パッケージを pacman で更新した場合、ウェブインターフェイスから手動で関連ファイルのアップデートを実行する必要があります。もしくは、シェルから ''http'' ユーザーとして {{ic|/usr/share/webapps/owncloud/occ upgrade}} を実行することでもアップデートできます: |
||
− | # sudo -u http /usr/share/webapps/owncloud/occ upgrade |
||
− | |||
− | {{Note|上記のアップデートを行わないとモバイルアプリから接続できなくなります。}} |
||
== 同期 == |
== 同期 == |
||
327行目: | 382行目: | ||
=== デスクトップ === |
=== デスクトップ === |
||
− | 公式クライアントは {{Pkg|owncloud-client}} または {{ |
+ | 公式クライアントは {{Pkg|owncloud-client}} または {{Pkg|nextcloud-client}} パッケージでインストールできます。開発版の {{AUR|owncloud-client-git}} パッケージも存在します。 |
==== カレンダー ==== |
==== カレンダー ==== |
||
− | Mozilla [[Thunderbird]] の [[Thunderbird# |
+ | 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]] と連絡先を同期するには、[[SOGo|SOGo フロントエンド]]と [[Thunderbird#拡張機能|Lightning エクステンション]]をインストールして公式ドキュメントの [https://docs.nextcloud.com/server/13/user_manual/pim/sync_thunderbird.html 手順] に従う必要があります。 |
==== davfs2 でファイルをマウントする ==== |
==== davfs2 でファイルをマウントする ==== |
||
− | ownCloud を永続的にマウントしたい場合、まず {{Pkg|davfs2}} をインストールしてください ([[ |
+ | ownCloud を永続的にマウントしたい場合、まず {{Pkg|davfs2}} をインストールしてください ([[Davfs2]] に説明があります)。 |
もし ownCloud が {{ic|https://own.example.com}} にある場合、WebDAV の URL は {{ic|https://own.example.com/remote.php/webdav}} になります (ownCloud 6.0 現在)。 |
もし ownCloud が {{ic|https://own.example.com}} にある場合、WebDAV の URL は {{ic|https://own.example.com/remote.php/webdav}} になります (ownCloud 6.0 現在)。 |
||
359行目: | 414行目: | ||
{{hc|/etc/fstab|https://own.example.com/remote.php/webdav /path/to/mount davfs rw,user,noauto 0 0}} |
{{hc|/etc/fstab|https://own.example.com/remote.php/webdav /path/to/mount davfs rw,user,noauto 0 0}} |
||
− | {{Tip|自動でマウントしたい場合、[[ |
+ | {{Tip|自動でマウントしたい場合、[[Davfs2#接続情報の保存]]で説明されているようにファイルにユーザー名 (と必要であればパスワード) を保存できます。}} |
− | {{Note|ディレクトリは作成・コピーできるのに、ファイルの作成やコピーができない場合、[[ |
+ | {{Note|ディレクトリは作成・コピーできるのに、ファイルの作成やコピーができない場合、[[Davfs2#ファイルの作成やコピーができない]]を見てください。}} |
+ | |||
+ | === GNOME Files (Nautilus) でファイルをマウントする === |
||
+ | |||
+ | Nautilus ('+ Other Locations') では WebDAV プロトコルを使ってファイルに直接アクセスできます。Nextcloud のインストール Web GUI で表示されるリンクを使ってください (通常は https://example.org/remote.php/webdav/)。ただしプロトコルの名前は 'https' から 'davs' に置き換えてください。Nautilus は接続時にユーザー名とパスワードを要求します。 |
||
=== 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]) をダウンロード。 |
||
+ | # {{ic|httpd.conf}} で {{ic|mod_rewrite.so}} を有効化。 |
||
+ | # ''Account'' 設定で DAVdroid アカウントを新しく作成して、短いサーバーアドレス (例: {{ic|<nowiki>https://cloud.example.com</nowiki>}}、リダイレクトをウェブサーバーで正しく設定していれば {{ic|<nowiki>/remote.php/{carddav,webdav}</nowiki>}} の部分は不要です。''DAVdroid'' は自動的に URL を検索します) とログイン名・パスワードを指定する。 |
||
+ | === iOS === |
||
− | 連絡先とカレンダーの同期を有効にするには: |
||
− | * Android 4 以上を使っている場合: |
||
− | *# [https://davdroid.bitfire.at/] をダウンロードしてください ([https://play.google.com/store/apps/details?id=at.bitfire.davdroid Play ストア], [https://f-droid.org/app/at.bitfire.davdroid F-Droid])。 |
||
− | *# {{ic|httpd.conf}} で mod_rewrite.so を有効化してください。 |
||
− | *# ''Account'' 設定で新しい DAVdroid アカウントを作成して、"短い"サーバーアドレスとログイン名/パスワードを指定してください。例: {{ic|<nowiki>https://cloud.example.com</nowiki>}} (ウェブサーバーでリダイレクトを正しく設定していれば {{ic|<nowiki>/remote.php/{carddav,webdav}</nowiki>}} の部分は必要ありません。''DAVdroid'' は適切な URL を認識するはずです)。 |
||
− | :古いバージョンが対象ですが、[http://www.slsmk.com/sync-android-contacts-calendar-and-files-to-owncloud/ こちらの記事] には有用な情報が記載されています。 |
||
+ | [https://itunes.apple.com/us/app/nextcloud/id1125420102 App Store] から Nextcloud の公式アプリをダウンロードしてください。 |
||
− | * 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 推奨] されています。 |
||
=== SABnzbd === |
=== SABnzbd === |
||
382行目: | 441行目: | ||
というのは ownCloud はアップロードされたファイルを速攻でスキャンするからです。展開された接頭辞などを SABnzbd が削除することを予防します。 |
というのは ownCloud はアップロードされたファイルを速攻でスキャンするからです。展開された接頭辞などを SABnzbd が削除することを予防します。 |
||
+ | == ヒントとテクニック == |
||
− | == Tips and tricks == |
||
=== サブディレクトリで ownCloud を実行 === |
=== サブディレクトリで ownCloud を実行 === |
||
416行目: | 475行目: | ||
# This module is currently not supported. |
# This module is currently not supported. |
||
#pagespeed off; |
#pagespeed off; |
||
− | |||
− | error_page 403 /owncloud/core/templates/403.php; |
||
− | error_page 404 /owncloud/core/templates/404.php; |
||
location /owncloud { |
location /owncloud { |
||
483行目: | 539行目: | ||
[https://github.com/schiesbn/shareLinkCreator shareLinkCreator] はサポートされているファイルマネージャから ownCloud にファイルをアップロードする機能を提供します。アップロードしたファイルのリンクをメールなどで配ることが可能です。 |
[https://github.com/schiesbn/shareLinkCreator shareLinkCreator] はサポートされているファイルマネージャから ownCloud にファイルをアップロードする機能を提供します。アップロードしたファイルのリンクをメールなどで配ることが可能です。 |
||
+ | === バックグラウンドジョブの定義 === |
||
− | === AJAX から Cron に切り替える === |
||
− | Nextcloud では定期的に実行する必要があ |
+ | Nextcloud では一部のタスクを定期的に実行する必要があり、デフォルトでは AJAX が使われます。しかしながら AJAX は信頼性の高い方法とはいえないため [[Cron]] の使用が推奨されています。Arch Linux は [[systemd]] を搭載しているため、[[Systemd/タイマー|systemd タイマー]]を使用すると良いでしょう。 |
+ | まずはサービスを作成: |
||
− | {{hc|/etc/systemd/system/nextcloud-cron.timer|<nowiki> |
||
+ | |||
+ | {{hc|/etc/systemd/system/nextcloudcron.service|<nowiki> |
||
[Unit] |
[Unit] |
||
− | Description= |
+ | Description=Nextcloud cron.php job |
− | [ |
+ | [Service] |
+ | User=http |
||
− | OnBootSec=10min |
||
+ | ExecStart=/usr/bin/php -f /usr/share/webapps/nextcloud/cron.php |
||
− | OnUnitActiveSec=15min |
||
[Install] |
[Install] |
||
− | WantedBy= |
+ | WantedBy=basic.target |
+ | </nowiki>}} |
||
+ | |||
+ | そしてサービスのタイマーを作成: |
||
− | {{hc|/etc/systemd/system/ |
+ | {{hc|/etc/systemd/system/nextcloudcron.timer|<nowiki> |
[Unit] |
[Unit] |
||
− | Description=Nextcloud |
+ | Description=Run Nextcloud cron.php every 15 minutes |
− | [ |
+ | [Timer] |
+ | OnBootSec=5min |
||
− | Type=oneshot |
||
+ | OnUnitActiveSec=15min |
||
− | User=http |
||
+ | Unit=nextcloudcron.service |
||
− | Group=http |
||
+ | |||
− | ExecStart=/usr/bin/php -f /usr/share/webapps/nextcloud/cron.php</nowiki>}} |
||
+ | [Install] |
||
+ | WantedBy=timers.target |
||
+ | </nowiki>}} |
||
+ | |||
+ | 作成したら {{ic|nextcloudcron.timer}} を[[起動]]・[[有効化]]してください。 |
||
+ | タイマーの実行を確認するには: |
||
− | もしくは以下の cron ジョブを設定: |
||
+ | # systemctl list-timers |
||
− | */15 * * * * php -f /usr/share/webapps/nextcloud/cron.php |
||
=== Collabora Online Office の統合 === |
=== Collabora Online Office の統合 === |
||
− | {{AUR|nextcloud-app-collabora-online}} をインストールしてウェブサーバーの Nextcloud の設定を編集します。[[Nginx]] の場合: |
||
+ | ==== 公式 Docker イメージを使う ==== |
||
− | # static files |
||
− | location ^~ /loleaflet { |
||
− | proxy_pass https://localhost:9980; |
||
− | proxy_set_header Host $http_host; |
||
− | } |
||
− | # WOPI discovery URL |
||
− | location ^~ /hosting/discovery { |
||
− | proxy_pass https://localhost:9980; |
||
− | proxy_set_header Host $http_host; |
||
− | } |
||
− | # websockets, download, presentation and image upload |
||
− | location ^~ /lool { |
||
− | proxy_pass https://localhost:9980; |
||
− | proxy_set_header Upgrade $http_upgrade; |
||
− | proxy_set_header Connection "upgrade"; |
||
− | proxy_set_header Host $http_host; |
||
− | } |
||
+ | {{Pkg|docker}} パッケージをインストールして collabora のファイルを用意して Collabora サーバーをセットアップしてください。 |
||
− | [[Apache]] の場合は [https://nextcloud.com/collaboraonline/ こちら] を見てください。docker デーモンを使っている場合、Collabora Online の最新の docker イメージを pull できます。2番目のコマンドのドメイン名はあなたの Nextcloud サーバーのドメイン名に置き換えてください: |
||
+ | |||
− | docker pull collabora/code |
||
+ | {{ic|docker.service}} を[[起動]]・[[有効化]]してください。 |
||
− | docker run -t -d -p 127.0.0.1:9980:9980 -e 'domain=localhost' --net host --restart always --cap-add MKNOD collabora/code |
||
+ | |||
− | docker イメージを更新する際は同じコマンドを実行します。ただし旧イメージの実行中プロセスを全て終了してください: |
||
+ | 必要なバイナリをダウンロード: |
||
− | docker ps |
||
+ | |||
− | docker stop CONTAINER_ID |
||
− | docker |
+ | # docker pull collabora/code |
+ | |||
− | これで Nextcloud インスタンスで Collabora Online アプリを有効にできます。最後に管理者の設定で Collabora Online アプリに関する設定を行ってください。 |
||
+ | それから Collabora サーバーをインストールしてください。{{ic|cloud//.example//.com}} は collabora ではなく nextcloud のドメインにしてください: |
||
+ | |||
+ | # docker run -t -d -p 127.0.0.1:9980:9980 -e 'domain=cloud\\.example\\.com' --restart always --cap-add MKNOD collabora/code |
||
+ | |||
+ | 文字列は正規表現として評価されるため、ドットは全てバックスラッシュ (\) 2回でエスケープしてください。複数の Nextcloud で docker コンテナを使用する場合、'domain=cloud\\.example\\.com\|second\\.example\\.com' を使ってください (ホストは全て \|. で区切ります)。`localhost` をドメインとして使用する場合は {{ic|--net host}} を追加して docker コンテナが Nextcloud サーバーにアクセスできるようにする必要があります。 |
||
+ | |||
+ | ===== Nginx ===== |
||
+ | |||
+ | nextcloud のドメイン設定に以下を追加するか、{{ic|/etc/nginx/conf.d/}} ディレクトリに新しい設定ファイルを作成してください ({{ic|office.example.com}} と {{ic|ssl_certificate}} は適切な値に置き換えてください): |
||
+ | |||
+ | {{hc|/etc/nginx/conf.d/example.conf|<nowiki> |
||
+ | upstream office.example.com { |
||
+ | server 127.0.0.1:9980; |
||
+ | } |
||
+ | |||
+ | server { |
||
+ | listen 443 ssl; |
||
+ | server_name office.example.com; |
||
+ | |||
+ | ssl_certificate /etc/letsencrypt/live/office.example.com/fullchain.pem; |
||
+ | ssl_certificate_key /etc/letsencrypt/live/office.example.com/privkey.pem; |
||
+ | |||
+ | # static files |
||
+ | location ^~ /loleaflet { |
||
+ | proxy_pass http://127.0.0.1:9980; |
||
+ | proxy_set_header Host $host; |
||
+ | } |
||
+ | |||
+ | # WOPI discovery URL |
||
+ | location ^~ /hosting/discovery { |
||
+ | proxy_pass http://127.0.0.1:9980; |
||
+ | proxy_set_header Host $host; |
||
+ | } |
||
+ | |||
+ | # Main websocket |
||
+ | location ~ /lool/(.*)/ws$ { |
||
+ | proxy_pass http://127.0.0.1:9980; |
||
+ | proxy_set_header Upgrade $http_upgrade; |
||
+ | proxy_set_header Connection "Upgrade"; |
||
+ | proxy_set_header Host $host; |
||
+ | proxy_read_timeout 36000s; |
||
+ | } |
||
+ | |||
+ | # Admin Console websocket |
||
+ | location ^~ /lool/adminws { |
||
+ | proxy_buffering off; |
||
+ | proxy_pass http://127.0.0.1:9980; |
||
+ | proxy_set_header Upgrade $http_upgrade; |
||
+ | proxy_set_header Connection "Upgrade"; |
||
+ | proxy_set_header Host $host; |
||
+ | proxy_read_timeout 36000s; |
||
+ | } |
||
+ | |||
+ | # download, presentation and image upload |
||
+ | location ~ /lool { |
||
+ | proxy_pass http://127.0.0.1:9980; |
||
+ | proxy_set_header Host $host; |
||
+ | } |
||
+ | } |
||
+ | </nowiki>}} |
||
+ | |||
+ | 設定したら nginx を再起動してください。 |
||
+ | |||
+ | ===== Apache ===== |
||
+ | |||
+ | nextcloud の設定ファイルに以下を追加してください: |
||
+ | |||
+ | {{hc|/etc/httpd/conf/extra/nextcloud.conf|<nowiki> |
||
+ | <VirtualHost *:443> |
||
+ | ServerName office.nextcloud.com:443 |
||
+ | |||
+ | # SSL configuration, you may want to take the easy route instead and use Lets Encrypt! |
||
+ | SSLEngine on |
||
+ | SSLCertificateFile /path/to/signed_certificate |
||
+ | SSLCertificateChainFile /path/to/intermediate_certificate |
||
+ | SSLCertificateKeyFile /path/to/private/key |
||
+ | SSLProtocol all -SSLv2 -SSLv3 |
||
+ | SSLCipherSuite ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS |
||
+ | SSLHonorCipherOrder on |
||
+ | |||
+ | # Encoded slashes need to be allowed |
||
+ | AllowEncodedSlashes NoDecode |
||
+ | |||
+ | # Container uses a unique non-signed certificate |
||
+ | SSLProxyEngine On |
||
+ | SSLProxyVerify None |
||
+ | SSLProxyCheckPeerCN Off |
||
+ | SSLProxyCheckPeerName Off |
||
+ | |||
+ | # keep the host |
||
+ | ProxyPreserveHost On |
||
+ | |||
+ | # static html, js, images, etc. served from loolwsd |
||
+ | # loleaflet is the client part of LibreOffice Online |
||
+ | ProxyPass /loleaflet https://127.0.0.1:9980/loleaflet retry=0 |
||
+ | ProxyPassReverse /loleaflet https://127.0.0.1:9980/loleaflet |
||
+ | |||
+ | # WOPI discovery URL |
||
+ | ProxyPass /hosting/discovery https://127.0.0.1:9980/hosting/discovery retry=0 |
||
+ | ProxyPassReverse /hosting/discovery https://127.0.0.1:9980/hosting/discovery |
||
+ | |||
+ | # Main websocket |
||
+ | ProxyPassMatch "/lool/(.*)/ws$" wss://127.0.0.1:9980/lool/$1/ws nocanon |
||
+ | |||
+ | # Admin Console websocket |
||
+ | ProxyPass /lool/adminws wss://127.0.0.1:9980/lool/adminws |
||
+ | |||
+ | # Download as, Fullscreen presentation and Image upload operations |
||
+ | ProxyPass /lool https://127.0.0.1:9980/lool |
||
+ | ProxyPassReverse /lool https://127.0.0.1:9980/lool |
||
+ | </VirtualHost> |
||
+ | </nowiki>}} |
||
+ | |||
+ | 設定したら apache を再起動してください。 |
||
+ | |||
+ | ===== Nextcloud アプリのインストール ===== |
||
+ | |||
+ | Apps セクションから “Office & Text” を選択して “Collabora Online” アプリをインストールしてください。管理パネルから Collabora Online タブを選択して設定したサーバーのドメインを指定してください。 |
||
+ | |||
+ | ==== Arch Linux のパッケージを使う ==== |
||
+ | |||
+ | {{AUR|collabora-online-server-nodocker}} パッケージは Collabora Office (デスクトップスイート) と “lool” (LibreOffice OnLine) ベースの “CODE” (Collabora Online Development Edition) サーバーをインストールします。 |
||
+ | |||
+ | {{ic|/etc/loolwsd/loolwsd.xml}} ファイルを以下のように変更してください: |
||
+ | * `config > server_name` に公開する Nextcloud のアドレスのホストとポートを記入してください (例: {{ic|example.org:443}})。 |
||
+ | * `config > ssl > enable` は false にしてください (ウェブブラウザ —HTTPS→ プロキシ —HTTP→ loolwsd)。 |
||
+ | * `config > ssl > termination` は true にしてください。 |
||
+ | * `config > storage > wopi > host` はプロキシサーバーの実際のホストネームに合わせてください (例: `(?:.*\.)?example\.org`)。 |
||
+ | * `config > admin_console > username` と `config > admin_console > password` は適当に設定してください。 |
||
+ | |||
+ | それから {{ic|loolwsd.service}} を起動・有効化して、{{ic|/usr/share/doc/loolwsd/example.nginx.conf}} に書かれているように Nginx を設定してください。 |
||
== トラブルシューティング == |
== トラブルシューティング == |
||
+ | |||
+ | === Environment variables not available === |
||
+ | |||
+ | {{ic|/etc/php/php-fpm.d/www.conf}} の以下の行をアンコメントしてください [https://docs.nextcloud.com/server/13/go.php?to=admin-php-fpm]: |
||
+ | env[PATH] = /usr/local/bin:/usr/bin:/bin |
||
=== 自己署名証明書が使えない === |
=== 自己署名証明書が使えない === |
||
586行目: | 771行目: | ||
[https://play.google.com/store/apps/details?id=at.bitfire.cadroid CAdroid] を使ってサーバーから直接証明書をインポートする方法もあります。 |
[https://play.google.com/store/apps/details?id=at.bitfire.cadroid CAdroid] を使ってサーバーから直接証明書をインポートする方法もあります。 |
||
+ | === Cannot write into config directory! === |
||
− | === 設定ディレクトリに書き込みができない === |
||
− | + | PHP やウェブサーバーの設定ファイル (例: {{ic|/etc/httpd/conf/extra/nextcloud.conf}}) で {{ic|open_basedir}} を設定している場合、{{ic|/etc/webapps}} が含まれていることを確認してください。 |
|
+ | 変更を適用するにはウェブサーバーの再起動が必要です。 |
||
− | php_admin_value open_basedir "/srv/http/:/home/:/tmp/:/usr/share/pear/:/usr/share/webapps/:/path/to/dir/" |
||
+ | === Cannot create data directory === |
||
− | 変更を適用するには httpd あるいは php-fpm サービスを再起動します。 |
||
+ | PHP やウェブサーバーの設定ファイル (例: {{ic|/etc/httpd/conf/extra/nextcloud.conf}}) で {{ic|open_basedir}} を設定している場合、data ディレクトリが含まれていることを確認してください。 |
||
− | === データディレクトリを作成できない (/path/to/dir) === |
||
+ | 変更を適用するにはウェブサーバーの再起動が必要です。 |
||
− | httpd の設定ファイル ({{ic|owncloud.conf}} など) を確認してください。以下の文字列にデータディレクトリを追加してください: |
||
− | |||
− | php_admin_value open_basedir "/srv/http/:/home/:/tmp/:/usr/share/pear/:/usr/share/webapps/:/path/to/dir/" |
||
− | |||
− | 変更を適用するには httpd あるいは php-fpm サービスを再起動します。 |
||
=== CSync failed to find a specific file. === |
=== CSync failed to find a specific file. === |
||
610行目: | 791行目: | ||
=== ログイン後に白いページが表示される === |
=== ログイン後に白いページが表示される === |
||
− | おそらく新しくインストールしたアプリが原因です。修正するには、[https:// |
+ | おそらく新しくインストールしたアプリが原因です。修正するには、[https://docs.nextcloud.com/server/13/admin_manual/configuration_server/occ_command.html こちら] に書かれているように occ コマンドを使用します。アプリを全て確認するには: |
− | # sudo -u http php /usr/share/webapps/ |
+ | # sudo -u http php /usr/share/webapps/nextcloud/occ app:list |
− | 問題のアプリを無効化するには ( |
+ | 問題のアプリを無効化するには (Nextcloud を標準のディレクトリにインストールした場合): |
− | # sudo -u http php /usr/share/webapps/ |
+ | # sudo -u http php /usr/share/webapps/nextcloud/occ app:disable <nameOfExtension> |
もしくは [[phpMyAdmin]] を使って {{ic|oc_appconfig}} テーブルを編集するか (運が良いことにテーブルに edit オプションがある場合) mysql で手動で修正してください: |
もしくは [[phpMyAdmin]] を使って {{ic|oc_appconfig}} テーブルを編集するか (運が良いことにテーブルに edit オプションがある場合) mysql で手動で修正してください: |
||
633行目: | 814行目: | ||
SQLSTATE[23000]: Integrity constraint violation: ... Duplicate entry '...' for key 'fs_storage_path_hash')... |
SQLSTATE[23000]: Integrity constraint violation: ... Duplicate entry '...' for key 'fs_storage_path_hash')... |
||
− | File Locking アプリの問題が原因です。ウェブーサーバーの設定の衝突が発生しているのに対処できていません。エラーが発生しない [https:// |
+ | File Locking アプリの問題が原因です。ウェブーサーバーの設定の衝突が発生しているのに対処できていません。エラーが発生しない [https://docs.nextcloud.com/server/13/admin_manual/configuration_files/files_locking_transactional.html Transactional File Locking] が存在しますが、Redis の php キャッシュを使う必要があります。{{Pkg|redis}} と {{Pkg|php-redis}} をインストールして、現在使っている php のキャッシュをコメントアウトして、{{ic|/etc/php/conf.d/redis.ini}} から {{ic|1=extension=redis.so}} をアンコメントしてください。そして {{ic|config.php}} に以下の変更を加えます: |
'memcache.local' => '\OC\Memcache\Redis', |
'memcache.local' => '\OC\Memcache\Redis', |
||
644行目: | 825行目: | ||
), |
), |
||
− | 設定したら Redis を再起動 |
+ | 設定したら [[Redis]] を[[再起動]]してください。 |
− | |||
− | # systemctl enable redis.service |
||
− | # systemctl start redis.service |
||
最後に、File Locking アプリを無効化して、Transational File Locking を使うようにしてください。 |
最後に、File Locking アプリを無効化して、Transational File Locking を使うようにしてください。 |
||
655行目: | 833行目: | ||
=== "Cannot write into apps directory" === |
=== "Cannot write into apps directory" === |
||
− | [ |
+ | [https://docs.nextcloud.com/server/13/admin_manual/installation/apps_management_installation.html 公式の管理者マニュアル] に書かれているように、http ユーザーからアプリディレクトリに書き込みができるようにするか、{{ic|appstoreenabled}} を {{ic|false}} に設定する必要があります。 |
+ | |||
+ | === MIME タイプエラーによってインストールしたアプリがブロックされる === |
||
+ | apps フォルダを nextcloud のインストールディレクトリの外に配置した場合、ウェブサーバーが正しく設定されているか確認してください。 |
||
− | また、ドキュメントには書かれていませんが、{{ic|/etc/php/php.ini}} の {{ic|open_basedir}} 行にディレクトリを指定してください。 |
||
+ | nginx の場合、以下のように設定ファイルにデフォルトで含まれていないフォルダの location ブロックを追加する必要があります: |
||
− | きれいな解決方法としてパッケージによってインストールされた {{ic|/usr/share/webapps/owncloud/apps}} ディレクトリの所有者は root にしたまま、ユーザーがインストールしたアプリは http が所有者となる {{ic|/var/www/owncloud/apps}} などに入れる方法があります。それから {{ic|appstoreenabled}} を {{ic|true}} に設定してアプリのパッケージをアップグレードすれば上手く動作するはずです。{{ic|/etc/webapps/owncloud/config/config.php}} の該当する行: |
||
+ | location ~ /apps2/(.*)$ { |
||
− | {{bc|<nowiki> |
||
+ | alias /var/www/nextcloud/apps/$1; |
||
− | 'apps_paths' => |
||
+ | } |
||
− | array ( |
||
− | 0 => |
||
− | array ( |
||
− | 'path' => '/usr/share/webapps/owncloud/apps', |
||
− | 'url' => '/apps', |
||
− | 'writable' => false, |
||
− | ), |
||
− | 1 => |
||
− | array ( |
||
− | 'path' => '/var/www/owncloud/apps', |
||
− | 'url' => '/wapps', |
||
− | 'writable' => true, |
||
− | ), |
||
− | ), |
||
− | </nowiki>}} |
||
− | |||
− | {{ic|/etc/php/php.ini}} の {{ic|open_basedir}} 行の例: |
||
− | open_basedir = /srv/http/:/usr/share/webapps/:/var/www/owncloud/apps/ |
||
− | |||
− | ディレクトリのパーミッション: |
||
− | |||
− | {{hc|$ ls -ld /usr/share/webapps/owncloud/apps /var/www/owncloud/apps/| |
||
− | <nowiki>drwxr-xr-x 26 root root 4096 des. 14 20:48 /usr/share/webapps/owncloud/apps |
||
− | drwxr-xr-x 2 http http 48 jan. 20 20:01 /var/www/owncloud/apps/</nowiki>}} |
||
− | |||
=== nginx.conf に推奨設定を記述したのにセキュリティの警告が表示される === |
=== nginx.conf に推奨設定を記述したのにセキュリティの警告が表示される === |
||
728行目: | 884行目: | ||
=== "Reading from keychain failed with error: 'No keychain service available'" === |
=== "Reading from keychain failed with error: 'No keychain service available'" === |
||
Gnome の場合、{{Pkg|libgnome-keyring}} と {{Pkg|gnome-keyring}} パッケージをインストールすることで解決します。KDE の場合、{{Pkg|libgnome-keyring}} と {{Pkg|qtkeychain}} パッケージをインストールしてください。 |
Gnome の場合、{{Pkg|libgnome-keyring}} と {{Pkg|gnome-keyring}} パッケージをインストールすることで解決します。KDE の場合、{{Pkg|libgnome-keyring}} と {{Pkg|qtkeychain}} パッケージをインストールしてください。 |
||
+ | |||
+ | === FolderSync: "Method Not Allowed" === |
||
+ | |||
+ | FolderSync は {{ic|/nextcloud/remote.php/webdav}} へのアクセス権限を必要とするため、{{ic|/etc/httpd/conf/extra/nextcloud.conf}} にエイリアスを作成してください: |
||
+ | <IfModule mod_alias.c> |
||
+ | Alias /nextcloud /usr/share/webapps/nextcloud/ |
||
+ | Alias /owncloud /usr/share/webapps/nextcloud/ |
||
+ | </IfModule> |
||
+ | |||
+ | === Nextcloud 13 : "Unable to load dynamic library 'mcrypt.so" === |
||
+ | |||
+ | php 7.2 から mcrypt 拡張は削除されました [https://wiki.php.net/rfc/mcrypt-viking-funeral]。 |
||
+ | |||
+ | mcrypt に関する Nextcloud のエラーを修正するには、PECL で php 7.2 に対応した拡張をインストールします。 |
||
+ | |||
+ | 1. [https://wiki.php.net/rfc/mcrypt-viking-funeral/ php-pear] をインストール (インストールしていない場合)。 |
||
+ | |||
+ | 2. PECL チャンネルを更新: |
||
+ | # pecl channel-update pecl.php.net |
||
+ | |||
+ | 3. mcrypt 1.0.1 をインストール: |
||
+ | # pecl install mcrypt-1.0.1 |
||
+ | |||
+ | 4. {{ic|/etc/php/php.conf}} の以下の行をアンコメント: |
||
+ | |||
+ | ;extension=mcrypt.so |
||
== 参照 == |
== 参照 == |
||
− | * [http://owncloud.org/ ownCloud 公式ウェブサイト] |
||
− | * [http://doc.owncloud.org/server/9.2/admin_manual/ ownCloud 9.2 管理者ドキュメント] |
||
* [https://docs.nextcloud.com/ nextcloud 公式ウェブサイト] |
* [https://docs.nextcloud.com/ nextcloud 公式ウェブサイト] |
||
− | * [https://docs.nextcloud.com/server/ |
+ | * [https://docs.nextcloud.com/server/13/admin_manual/ nextcloud 13.0 管理者ドキュメント] |
2019年9月25日 (水) 23:54時点における版
Wikipedia より:
- Nextcloud はファイルホストサービスを作成して使用するためのクライアントサーバーソフトウェアスイートである。広く使われている Dropbox と同じような機能を持ち、フリーでオープンソースであるため、誰でもプライベートサーバーにインストール・使用することができる。Dropbox などのプロプライエタリサービスと異なり、オープンなアーキテクチャを活用してサーバーに機能 (アプリケーション) を簡単に追加することが可能。
Nextcloud は ownCloud のフォークです。Nextcloud と ownCloud の違いについては [1] を見てください。
目次
- 1 要件
- 2 インストール
- 3 セットアップ
- 4 初期化
- 5 セキュリティの強化
- 6 同期
- 7 ヒントとテクニック
- 8 トラブルシューティング
- 8.1 Environment variables not available
- 8.2 自己署名証明書が使えない
- 8.3 Android デバイスの自己署名証明書
- 8.4 Cannot write into config directory!
- 8.5 Cannot create data directory
- 8.6 CSync failed to find a specific file.
- 8.7 ログイン後に白いページが表示される
- 8.8 GUI の同期クライアントで接続できない
- 8.9 ファイルをアップロードすると 'Integrity constraint violation...' エラーが表示される
- 8.10 "Cannot write into apps directory"
- 8.11 MIME タイプエラーによってインストールしたアプリがブロックされる
- 8.12 nginx.conf に推奨設定を記述したのにセキュリティの警告が表示される
- 8.13 "Reading from keychain failed with error: 'No keychain service available'"
- 8.14 FolderSync: "Method Not Allowed"
- 8.15 Nextcloud 13 : "Unable to load dynamic library 'mcrypt.so"
- 9 参照
要件
Nextcloud は以下のコンポーネントを必要とします:
先に進む前にまずは必要なコンポーネントをインストールしてください。
インストール
セットアップ
Nextcloud をセットアップするには PHP が動作するウェブサーバー・データベースサーバーが必要です。
Pacman フック
nextcloud のデータベースのアップグレードを自動化するには、以下のように pacman でアップグレードした後のフックを設定します:
/etc/pacman.d/hooks/nextcloud.hook
[Trigger] Operation = Install Operation = Upgrade Type = Package Target = nextcloud Target = nextcloud-app-* [Action] Description = Update Nextcloud installation When = PostTransaction Exec = /usr/bin/runuser -u http -- /usr/bin/php /usr/share/webapps/nextcloud/occ upgrade
pacman.conf
の HookDir
をカスタマイズしている場合はフックを適切な場所に配置してください。
Pacman#フックも参照。
PHP の設定
PHP#gd と php-intl を追加モジュールとしてインストールしてください。また、OPcache を設定してください [2].
一部のアプリ (News など) は iconv 拡張を必要とします。アプリを使いたい場合は /etc/php/php.ini
で拡張をアンコメントしてください。
使用するデータベースバックエンドに応じて設定が必要です:
- MySQL の場合、PHP#MySQL/MariaDB を見てください。
- PostgreSQL の場合、PHP#PostgreSQL を見てください。
- SQLite の場合、PHP#Sqlite を見てください。
キャッシュを活用することでパフォーマンスを改善することができます。詳しくは公式ドキュメントの メモリキャッシュの設定 を見てください。
データベースの設定
Nextcloud を動かすには SQL データベースをセットアップする必要があります。データベースを設定したら、まずは管理者アカウントを作成する必要があります。
MariaDB
以下は MariaDB のデータベースとユーザーを設定する例です:
$ mysql -u root -p
mysql> CREATE DATABASE `nextcloud` DEFAULT CHARACTER SET `utf8` COLLATE `utf8_unicode_ci`; mysql> CREATE USER `nextcloud`@'localhost' IDENTIFIED BY 'password'; mysql> GRANT ALL PRIVILEGES ON `nextcloud`.* TO `nextcloud`@`localhost`; mysql> \q
PostgreSQL
以下は PostgreSQL のデータベースとユーザーを設定する例です:
$ sudo -u postgres createuser -h localhost -P nextcloud
Enter password for new role: Enter it again:
$ sudo -u postgres createdb -O nextcloud nextcloud
ウェブサーバーの設定
使用するウェブサーバーによって、必要な設定は変わります。
Apache
Apache をインストールしたら Apache の PHP モジュールをインストール・有効化してください。
Apache の設定ファイルを設定ディレクトリにコピーしてください:
# cp /etc/webapps/nextcloud/apache.example.conf /etc/httpd/conf/extra/nextcloud.conf
必要に応じてファイルの設定を変更してください。デフォルトでは /nextcloud
で /usr/share/webapps/nextcloud
が表示されるエイリアスが記述されています。
設定したら /etc/httpd/conf/httpd.conf
に以下を追加してください:
Include conf/extra/nextcloud.conf
Nextcloud がインストールされているルートディレクトリ (例: /usr/share/webapps/nextcloud
) にウェブサーバーのユーザー http
からアクセスできることを確認してください。
その後 Apache (httpd.service
) を再起動してください。
WebDAV
Nextcloud には WebDAV の実装が付いていますが、Apache の実装と衝突する可能性があります。Apache で WebDAV を有効にしていた場合 (デフォルトでは有効になっていません)、/etc/httpd/conf/httpd.conf
で mod_dav
と mod_dav_fs
モジュールを無効にしてください。詳しくは [4] を参照。
Nginx
Nginx#FastCGI に書かれているように PHP-FPM を設定してください。また、/etc/php/php-fpm.d/www.conf
の env[PATH]
をアンコメントしてください。
server ブロックを作成して Nextcloud のドキュメント に書かれているように中身を追加してください:
/etc/nginx/sites-available/owncloud.conf
upstream php-handler { server unix:/run/php-fpm/php-fpm.sock; } server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name cloud.example.com; ssl_certificate /etc/ssl/nginx/cloud.example.com.crt; ssl_certificate_key /etc/ssl/nginx/cloud.example.com.key; .. # Path to the root of your installation root /usr/share/webapps/nextcloud/; .. location ~ ^/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|ocs-provider/.+)\.php(?:$|/) { fastcgi_split_path_info ^(.+\.php)(/.*)$; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param HTTPS on; #Avoid sending the security headers twice fastcgi_param modHeadersAvailable true; fastcgi_param front_controller_active true; fastcgi_pass php-handler; fastcgi_intercept_errors on; fastcgi_request_buffering off; } }
初期化
ウェブブラウザで Nextcloud をインストールした PC のアドレスを開いてください (例: https://www.example.com/nextcloud )。指示に従って管理者アカウントを追加し先に作成したデータベースを選択します。
ストレージディレクトリの作成
"Cannot write into "apps" directory" というエラーが表示される場合、Arch の Nextcloud パッケージが apps フォルダだけ使用していて data フォルダが存在しないのが原因です。
アプリ用の新しい書き込み可能なフォルダを作成して data フォルダも作成するのが一番簡単な解決方法です (http グループは必要に応じて使用しているウェブサーバーのグループに置き換えてください):
# mkdir -p /usr/share/webapps/nextcloud/data # chown http:http /usr/share/webapps/nextcloud/data # chown http:http /usr/share/webapps/nextcloud/apps # chmod 750 /usr/share/webapps/nextcloud/data # chmod 750 /usr/share/webapps/nextcloud/apps
データディレクトリを上書きするために、/etc/webapps/nextcloud/config/config.php
を編集して、ファイルの末尾の );
の前に以下の行を追加してください:
/etc/webapps/nextcloud/config/config.php
'datadirectory' => '/usr/share/webapps/nextcloud/data'
ページを更新すればエラーは消えるはずです。
キャッシュの設定
キャッシュを有効化 することが推奨されています。Nextcloud のドキュメントでは Redis, Memcached, APCu の使用方法が書かれています。
セキュリティの強化
Nextcloud Hardening and Security やセキュリティの記事に一般的なトピックの説明があります。セキュリティスキャナ も参照。
Let's Encrypt
nginx
こちらのファイル をテンプレートとして使ってクラウド設定の /etc/nginx/conf.d/cloud-initial.conf
を作成してください。テンプレートファイルの "@@FQDN@@" は実際に使用する FQDN に置き換えてください。最初に暗号化されない設定を使うにはサーバーの証明書を生成する必要があります。Let’s Encrypt に書かれている手順に従ってサーバーの暗号化証明書を作成してください。
証明書を作成できたら /etc/nginx/conf.d/cloud-initial.conf
を新しいファイル /etc/nginx/conf.d/cloud.conf
に置き換えてください。こちらのファイル をテンプレートとして使うことができます。"@@FQDN@@" は実際に使用する FQDN に置き換えてください。その後 nginx.service
を起動・有効化してください。
uWSGI
uwsgi-plugin-php による uWSGI アプリケーションサーバーを使うことで Nextcloud を固有のプロセスで動かすことができます。システム全体の php.ini
を編集しなくても、インスタンスの PHP 設定を定義することができるため、ウェブアプリケーションの設定を分離することが可能です。uWSGI 自体にリソースの使用を制限するための機能が豊富に含まれており、アプリケーションのセキュリティを強化したり、専用のユーザーで動くようにプロセスを分けられます。
PHP-FPM の設定と異なるところは location ~ \.php(?:$|/) {}
ブロックだけです:
location ~ \.php(?:$|/) { include uwsgi_params; uwsgi_modifier1 14; # Avoid duplicate headers confusing OC checks uwsgi_hide_header X-Frame-Options; uwsgi_hide_header X-XSS-Protection; uwsgi_hide_header X-Content-Type-Options; uwsgi_hide_header X-Robots-Tag; uwsgi_pass unix:/run/uwsgi/nextcloud.sock; }
それから uWSGI の設定ファイルを作成してください:
/etc/uwsgi/nextcloud.ini
[uwsgi] ; load the required plugins plugins = php ; force the sapi name to 'apache', this will enable the opcode cache php-sapi-name = apache ; set master process name and socket ; '%n' refers to the name of this configuration file without extension procname-master = uwsgi %n master = true socket = /run/uwsgi/%n.sock ; drop privileges uid = http gid = http umask = 027 ; run with at least 1 process but increase up to 4 when needed processes = 4 cheaper = 1 ; reload whenever this config file changes ; %p is the full path of the current config file touch-reload = %p ; disable uWSGI request logging ;disable-logging = true ; enforce a DOCUMENT_ROOT php-docroot = /usr/share/webapps/%n ; limit allowed extensions php-allowed-ext = .php ; and search for index.php if required php-index = index.php ; set php configuration for this instance of php, no need to edit global php.ini php-set = date.timezone=Etc/UTC ;php-set = open_basedir=/tmp/:/usr/share/webapps/nextcloud:/etc/webapps/nextcloud:/dev/urandom php-set = expose_php=false ; avoid security risk of leaving sessions in world-readable /tmp php-set = session.save_path=/usr/share/webapps/nextcloud/data ; port of php directives set upstream in /usr/share/webapps/nextcloud/.user.ini for use with PHP-FPM php-set = upload_max_filesize=513M php-set = post_max_size=513M php-set = memory_limit=512M php-set = output_buffering=off ; load all extensions only in this instance of php, no need to edit global php.ini ;; required core modules php-set = extension=gd php-set = extension=iconv ;php-set = extension=zip # enabled by default in global php.ini ;; database connectors ;; uncomment your selected driver ;php-set = extension=pdo_sqlite ;php-set = extension=pdo_mysql ;php-set = extension=pdo_pgsql ;; recommended extensions ;php-set = extension=curl # enabled by default in global php.ini php-set = extension=bz2 php-set = extension=intl ;; required for specific apps ;php-set = extension=ldap # for LDAP integration ;php-set = extension=ftp # for FTP storage / external user authentication ;php-set = extension=imap # for external user authentication, requires php-imap ;; recommended for specific apps ;php-set = extension=exif # for image rotation in pictures app, requires exiv2 ;php-set = extension=gmp # for SFTP storage ;; for preview generation ;; provided by packages in AUR ; php-set = extension=imagick ; opcache php-set = zend_extension=opcache ; user cache ; provided by php-acpu, to be enabled **either** here **or** in /etc/php/conf.d/apcu.ini php-set = extension=apcu ; per https://github.com/krakjoe/apcu/blob/simplify/INSTALL php-set = apc.ttl=7200 php-set = apc.enable_cli=1 cron2 = minute=-15,unique=1 /usr/bin/php -f /usr/share/webapps/nextcloud/cron.php 1>/dev/null
有効化
uWSGI には設定ファイルをインスタンスの識別子として使ってアプリケーションを起動したり有効化できるテンプレートユニットが入っています。例えば:
# systemctl start uwsgi@nextcloud.socket
上のコマンドは /etc/uwsgi/nextcloud.ini
設定ファイルを参照して必要に応じて起動します。
ブート時にデフォルトで uwsgi サービスを有効化するには、次を実行:
# systemctl enable uwsgi@nextcloud.socket
uWSGI#サービスの起動も参照。
ファイルシステムのパーティションの設定
config/
, data/
, apps/
のパーミッションはできるかぎり厳しく設定してください。HTTP ユーザー (apache であれば http) をディレクトリの所有者として、パーミッションは 700
にしてください。以下のスクリプトを使うことで設定できます:
oc-perms
#!/bin/bash ocpath='/usr/share/webapps/nextcloud' htuser='http' htgroup='http' rootuser='root' printf "Creating possible missing Directories\n" mkdir -p $ocpath/data mkdir -p $ocpath/assets printf "chmod Files and Directories\n" find ${ocpath}/ -type f -print0 | xargs -0 chmod 0640 find ${ocpath}/ -type d -print0 | xargs -0 chmod 0750 printf "chown Directories\n" chown -R ${rootuser}:${htgroup} ${ocpath}/ chown -R ${htuser}:${htgroup} ${ocpath}/apps/ chown -R ${htuser}:${htgroup} ${ocpath}/assets/ chown -R ${htuser}:${htgroup} ${ocpath}/config/ chown -R ${htuser}:${htgroup} ${ocpath}/data/ chown -R ${htuser}:${htgroup} ${ocpath}/themes/ chown -R ${htuser}:${htgroup} ${ocpath}/updater/ chmod +x ${ocpath}/occ printf "chmod/chown .htaccess\n" if [ -f ${ocpath}/.htaccess ] then chmod 0644 ${ocpath}/.htaccess chown ${rootuser}:${htgroup} ${ocpath}/.htaccess fi if [ -f ${ocpath}/data/.htaccess ] then chmod 0644 ${ocpath}/data/.htaccess chown ${rootuser}:${htgroup} ${ocpath}/data/.htaccess fi
標準的なインストール場所からファイルパスをカスタマイズしている場合、上記のスクリプトも修正する必要があります。
同期
デスクトップ
公式クライアントは owncloud-client または nextcloud-client パッケージでインストールできます。開発版の owncloud-client-gitAUR パッケージも存在します。
カレンダー
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://example.org/remote.php/webdav/)。ただしプロトコルの名前は 'https' から 'davs' に置き換えてください。Nautilus は接続時にユーザー名とパスワードを要求します。
Android
Nextcloud の公式アプリは Google Play や F-Droid からダウンロードできます。
連絡先やカレンダーの同期を有効化するには (Android 4 以上):
- DAVdroid (Play Store, F-Droid) をダウンロード。
httpd.conf
でmod_rewrite.so
を有効化。- Account 設定で DAVdroid アカウントを新しく作成して、短いサーバーアドレス (例:
https://cloud.example.com
、リダイレクトをウェブサーバーで正しく設定していれば/remote.php/{carddav,webdav}
の部分は不要です。DAVdroid は自動的に URL を検索します) とログイン名・パスワードを指定する。
iOS
App Store から Nextcloud の公式アプリをダウンロードしてください。
SABnzbd
SABnzbd を使う場合、sabnzbd.ini
ファイルに以下を設定すると良いでしょう:
folder_rename 0
というのは ownCloud はアップロードされたファイルを速攻でスキャンするからです。展開された接頭辞などを SABnzbd が削除することを予防します。
ヒントとテクニック
サブディレクトリで ownCloud を実行
httpd.conf
から読み込まれるデフォルトの owncloud.conf
では、ownCloud はポート 80 と localhost ドメインを使用します。
サブディレクトリで ownCloud を使いたい場合、/etc/httpd/conf/extra/owncloud.conf
を編集して <VirtualHost *:80> ... </VirtualHost>
という部分をコメントアウトしてください。
uwsgi で owncloud を使用する場合、以下の nginx 設定が使えます:
/etc/nginx/conf.d/owncloud.conf
location = /.well-known/carddav { return 301 $scheme://$host/owncloud/remote.php/dav; } location = /.well-known/caldav { return 301 $scheme://$host/owncloud/remote.php/dav; } location /.well-known/acme-challenge { } location ^~ /owncloud { root /usr/share/webapps; # set max upload size client_max_body_size 512M; fastcgi_buffers 64 4K; # Disable gzip to avoid the removal of the ETag header gzip off; # Uncomment if your server is build with the ngx_pagespeed module # This module is currently not supported. #pagespeed off; location /owncloud { rewrite ^ /owncloud/index.php$uri; } location ~ ^/owncloud/(?:build|tests|config|lib|3rdparty|templates|data)/ { deny all; } location ~ ^/owncloud/(?:\.|autotest|occ|issue|indie|db_|console) { deny all; } location ~ ^/owncloud/(?:updater|ocs-provider)(?:$|/) { try_files $uri/ =404; index index.php; } location ~ ^/owncloud/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|ocs-provider/.+|core/templates/40[34])\.php(?:$|/) { include uwsgi_params; uwsgi_modifier1 14; # Avoid duplicate headers confusing OC checks uwsgi_hide_header X-Frame-Options; uwsgi_hide_header X-XSS-Protection; uwsgi_hide_header X-Content-Type-Options; uwsgi_hide_header X-Robots-Tag; uwsgi_pass unix:/run/uwsgi/owncloud.sock; } # Adding the cache control header for js and css files # Make sure it is BELOW the PHP block location ~* \.(?:css|js) { try_files $uri /owncloud/index.php$uri$is_args$args; add_header Cache-Control "public, max-age=7200"; # Add headers to serve security related headers (It is intended # to have those duplicated to the ones above) # Before enabling Strict-Transport-Security headers please read # into this topic first. # add_header Strict-Transport-Security "max-age=15768000; # includeSubDomains; preload;"; add_header X-Content-Type-Options nosniff; add_header X-Frame-Options "SAMEORIGIN"; add_header X-XSS-Protection "1; mode=block"; add_header X-Robots-Tag none; add_header X-Download-Options noopen; add_header X-Permitted-Cross-Domain-Policies none; # Optional: Don't log access to assets access_log off; } location ~* \.(?:svg|gif|png|html|ttf|woff|ico|jpg|jpeg) { try_files $uri /owncloud/index.php$uri$is_args$args; # Optional: Don't log access to other assets access_log off; } }
Docker
Docker の ownCloud あるいは Nextcloud リポジトリを見てください。
ファイルマネージャからアップロード・共有
shareLinkCreator はサポートされているファイルマネージャから ownCloud にファイルをアップロードする機能を提供します。アップロードしたファイルのリンクをメールなどで配ることが可能です。
バックグラウンドジョブの定義
Nextcloud では一部のタスクを定期的に実行する必要があり、デフォルトでは AJAX が使われます。しかしながら AJAX は信頼性の高い方法とはいえないため Cron の使用が推奨されています。Arch Linux は systemd を搭載しているため、systemd タイマーを使用すると良いでしょう。
まずはサービスを作成:
/etc/systemd/system/nextcloudcron.service
[Unit] Description=Nextcloud cron.php job [Service] User=http ExecStart=/usr/bin/php -f /usr/share/webapps/nextcloud/cron.php [Install] WantedBy=basic.target
そしてサービスのタイマーを作成:
/etc/systemd/system/nextcloudcron.timer
[Unit] Description=Run Nextcloud cron.php every 15 minutes [Timer] OnBootSec=5min OnUnitActiveSec=15min Unit=nextcloudcron.service [Install] WantedBy=timers.target
作成したら nextcloudcron.timer
を起動・有効化してください。
タイマーの実行を確認するには:
# systemctl list-timers
Collabora Online Office の統合
公式 Docker イメージを使う
docker パッケージをインストールして collabora のファイルを用意して Collabora サーバーをセットアップしてください。
必要なバイナリをダウンロード:
# docker pull collabora/code
それから Collabora サーバーをインストールしてください。cloud//.example//.com
は collabora ではなく nextcloud のドメインにしてください:
# docker run -t -d -p 127.0.0.1:9980:9980 -e 'domain=cloud\\.example\\.com' --restart always --cap-add MKNOD collabora/code
文字列は正規表現として評価されるため、ドットは全てバックスラッシュ (\) 2回でエスケープしてください。複数の Nextcloud で docker コンテナを使用する場合、'domain=cloud\\.example\\.com\|second\\.example\\.com' を使ってください (ホストは全て \|. で区切ります)。`localhost` をドメインとして使用する場合は --net host
を追加して docker コンテナが Nextcloud サーバーにアクセスできるようにする必要があります。
Nginx
nextcloud のドメイン設定に以下を追加するか、/etc/nginx/conf.d/
ディレクトリに新しい設定ファイルを作成してください (office.example.com
と ssl_certificate
は適切な値に置き換えてください):
/etc/nginx/conf.d/example.conf
upstream office.example.com { server 127.0.0.1:9980; } server { listen 443 ssl; server_name office.example.com; ssl_certificate /etc/letsencrypt/live/office.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/office.example.com/privkey.pem; # static files location ^~ /loleaflet { proxy_pass http://127.0.0.1:9980; proxy_set_header Host $host; } # WOPI discovery URL location ^~ /hosting/discovery { proxy_pass http://127.0.0.1:9980; proxy_set_header Host $host; } # Main websocket location ~ /lool/(.*)/ws$ { proxy_pass http://127.0.0.1:9980; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade"; proxy_set_header Host $host; proxy_read_timeout 36000s; } # Admin Console websocket location ^~ /lool/adminws { proxy_buffering off; proxy_pass http://127.0.0.1:9980; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade"; proxy_set_header Host $host; proxy_read_timeout 36000s; } # download, presentation and image upload location ~ /lool { proxy_pass http://127.0.0.1:9980; proxy_set_header Host $host; } }
設定したら nginx を再起動してください。
Apache
nextcloud の設定ファイルに以下を追加してください:
/etc/httpd/conf/extra/nextcloud.conf
<VirtualHost *:443> ServerName office.nextcloud.com:443 # SSL configuration, you may want to take the easy route instead and use Lets Encrypt! SSLEngine on SSLCertificateFile /path/to/signed_certificate SSLCertificateChainFile /path/to/intermediate_certificate SSLCertificateKeyFile /path/to/private/key SSLProtocol all -SSLv2 -SSLv3 SSLCipherSuite ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS SSLHonorCipherOrder on # Encoded slashes need to be allowed AllowEncodedSlashes NoDecode # Container uses a unique non-signed certificate SSLProxyEngine On SSLProxyVerify None SSLProxyCheckPeerCN Off SSLProxyCheckPeerName Off # keep the host ProxyPreserveHost On # static html, js, images, etc. served from loolwsd # loleaflet is the client part of LibreOffice Online ProxyPass /loleaflet https://127.0.0.1:9980/loleaflet retry=0 ProxyPassReverse /loleaflet https://127.0.0.1:9980/loleaflet # WOPI discovery URL ProxyPass /hosting/discovery https://127.0.0.1:9980/hosting/discovery retry=0 ProxyPassReverse /hosting/discovery https://127.0.0.1:9980/hosting/discovery # Main websocket ProxyPassMatch "/lool/(.*)/ws$" wss://127.0.0.1:9980/lool/$1/ws nocanon # Admin Console websocket ProxyPass /lool/adminws wss://127.0.0.1:9980/lool/adminws # Download as, Fullscreen presentation and Image upload operations ProxyPass /lool https://127.0.0.1:9980/lool ProxyPassReverse /lool https://127.0.0.1:9980/lool </VirtualHost>
設定したら apache を再起動してください。
Nextcloud アプリのインストール
Apps セクションから “Office & Text” を選択して “Collabora Online” アプリをインストールしてください。管理パネルから Collabora Online タブを選択して設定したサーバーのドメインを指定してください。
Arch Linux のパッケージを使う
collabora-online-server-nodockerAUR パッケージは Collabora Office (デスクトップスイート) と “lool” (LibreOffice OnLine) ベースの “CODE” (Collabora Online Development Edition) サーバーをインストールします。
/etc/loolwsd/loolwsd.xml
ファイルを以下のように変更してください:
- `config > server_name` に公開する Nextcloud のアドレスのホストとポートを記入してください (例:
example.org:443
)。 - `config > ssl > enable` は false にしてください (ウェブブラウザ —HTTPS→ プロキシ —HTTP→ loolwsd)。
- `config > ssl > termination` は true にしてください。
- `config > storage > wopi > host` はプロキシサーバーの実際のホストネームに合わせてください (例: `(?:.*\.)?example\.org`)。
- `config > admin_console > username` と `config > admin_console > password` は適当に設定してください。
それから loolwsd.service
を起動・有効化して、/usr/share/doc/loolwsd/example.nginx.conf
に書かれているように Nginx を設定してください。
トラブルシューティング
Environment variables not available
/etc/php/php-fpm.d/www.conf
の以下の行をアンコメントしてください [5]:
env[PATH] = /usr/local/bin:/usr/bin:/bin
自己署名証明書が使えない
ownCloud は cURL や SabreDAV を使って WebDAV が有効になっているかチェックします。(LAMP の記事に書かれているように) 自己署名証明書で SSL/TLS を使って、ownCloud の管理者ページにアクセスすると、以下のエラーメッセージが表示されます:
Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken.
LAMP のチュートリアルにしたがって設定を行っている場合、以下の手順を実行してください:
証明書のためのローカルディレクトリを作成して、そこに LAMP の証明書をコピーします。これによって ca-certificates
のアップデートによって証明書が上書きされるのを防ぎます。
# cp /etc/httpd/conf/server.crt /usr/share/ca-certificates/WWW.EXAMPLE.COM.crt
WWW.EXAMPLE.COM.crt を /etc/ca-certificates.conf
に追加:
WWW.EXAMPLE.COM.crt
そして証明書を更新:
# update-ca-certificates
httpd サービスを再起動して証明書を有効にしてください。
これで動作しない場合は /etc/php/php.ini
で mod_curl を無効化してみてください。
Android デバイスの自己署名証明書
LAMP#TLS/SSL に書かれているように SSL のセットアップをした場合、古いバージョンの DAVdroid では証明書が信頼できないとして接続が拒否されます。以下のようにサーバーに証明書を作成できます:
# openssl x509 -req -days 365 -in /etc/httpd/conf/server.csr -signkey /etc/httpd/conf/server.key -extfile android.txt -out CA.crt # openssl x509 -inform PEM -outform DER -in CA.crt -out CA.der.crt
android.txt
ファイルに以下を記述してください:
basicConstraints=CA:true
そして Android 端末に CA.der.crt
をインポートしてください:
Android 端末の SD カードに CA.der.crt
ファイルを保存してください (メールの添付ファイルなどを使って保存してください)。ファイルはルートディレクトリに配置してください。そして Settings > Security > Credential storage から Install from device storage を選択します。.crt
ファイルが検出されて、証明書の名前の入力が求められます。証明書をインポートしたら、Settings > Security > Credential storage > Trusted credentials > User から確認できるはずです。
ソース: [6]
CAdroid を使ってサーバーから直接証明書をインポートする方法もあります。
Cannot write into config directory!
PHP やウェブサーバーの設定ファイル (例: /etc/httpd/conf/extra/nextcloud.conf
) で open_basedir
を設定している場合、/etc/webapps
が含まれていることを確認してください。
変更を適用するにはウェブサーバーの再起動が必要です。
Cannot create data directory
PHP やウェブサーバーの設定ファイル (例: /etc/httpd/conf/extra/nextcloud.conf
) で open_basedir
を設定している場合、data ディレクトリが含まれていることを確認してください。
変更を適用するにはウェブサーバーの再起動が必要です。
CSync failed to find a specific file.
おそらく証明書に問題があります。証明書を再度作成して、名前を空にしないようにしてください。そうしないとエラーがまた発生します。
# openssl req -new -x509 -nodes -newkey rsa:4096 -keyout server.key -out server.crt
ログイン後に白いページが表示される
おそらく新しくインストールしたアプリが原因です。修正するには、こちら に書かれているように occ コマンドを使用します。アプリを全て確認するには:
# sudo -u http php /usr/share/webapps/nextcloud/occ app:list
問題のアプリを無効化するには (Nextcloud を標準のディレクトリにインストールした場合):
# sudo -u http php /usr/share/webapps/nextcloud/occ app:disable <nameOfExtension>
もしくは phpMyAdmin を使って oc_appconfig
テーブルを編集するか (運が良いことにテーブルに edit オプションがある場合) mysql で手動で修正してください:
$ 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');
テーブルから関連する設定が削除されるので、後でまた追加してください。
GUI の同期クライアントで接続できない
HTTP のベーシック認証を使っている場合、status.php
が対象から外れていることを確認してください。このファイルは誰からでもアクセスできるようにしておく必要があります [7]。
ファイルをアップロードすると 'Integrity constraint violation...' エラーが表示される
ownCloud の同期クライアントで以下のエラーが表示されることがあります:
SQLSTATE[23000]: Integrity constraint violation: ... Duplicate entry '...' for key 'fs_storage_path_hash')...
File Locking アプリの問題が原因です。ウェブーサーバーの設定の衝突が発生しているのに対処できていません。エラーが発生しない Transactional File Locking が存在しますが、Redis の php キャッシュを使う必要があります。redis と php-redis をインストールして、現在使っている php のキャッシュをコメントアウトして、/etc/php/conf.d/redis.ini
から extension=redis.so
をアンコメントしてください。そして config.php
に以下の変更を加えます:
'memcache.local' => '\OC\Memcache\Redis', 'filelocking.enabled' => 'true', 'memcache.locking' => '\OC\Memcache\Redis', 'redis' => array( 'host' => 'localhost', 'port' => 6379, 'timeout' => 0.0, ),
最後に、File Locking アプリを無効化して、Transational File Locking を使うようにしてください。
管理者ページのサーバーステータスに 'Transactional File Locking Enabled' が表示され、同期の問題が消えるはずです。
"Cannot write into apps directory"
公式の管理者マニュアル に書かれているように、http ユーザーからアプリディレクトリに書き込みができるようにするか、appstoreenabled
を false
に設定する必要があります。
MIME タイプエラーによってインストールしたアプリがブロックされる
apps フォルダを nextcloud のインストールディレクトリの外に配置した場合、ウェブサーバーが正しく設定されているか確認してください。
nginx の場合、以下のように設定ファイルにデフォルトで含まれていないフォルダの location ブロックを追加する必要があります:
location ~ /apps2/(.*)$ { alias /var/www/nextcloud/apps/$1; }
nginx.conf に推奨設定を記述したのにセキュリティの警告が表示される
管理者マニュアルにしたがって Strict-Transport-Security
, X-Content-Type-Options
, X-Frame-Options
, X-XSS-Protection
, X-Robots-Tag
を設定しても管理者ページの上部に警告が表示されることがあります。
考えられる原因として ownCloud 自身が設定を行っていて、uWSGI によって nginx に設定が重複して追加されてしまっている可能性があります:
$ curl -I https://domain.tld
... X-XSS-Protection: 1; mode=block X-Content-Type-Options: nosniff X-Frame-Options: Sameorigin X-Robots-Tag: none Strict-Transport-Security: max-age=15768000; includeSubDomains; preload; X-Content-Type-Options: nosniff X-Frame-Options: SAMEORIGIN X-XSS-Protection: 1; mode=block X-Robots-Tag: none
fast_cgi のサンプル設定には重複を避けるためのパラメータが存在しますが (fastcgi_param modHeadersAvailable true; #Avoid sending the security headers twice
)、uwsgi と nginx を使用する場合、nginx.conf
の uwsgi の部分に以下の修正を加えることで解決します:
/etc/nginx/nginx.conf
... # pass all .php or .php/path urls to uWSGI location ~ ^(.+\.php)(.*)$ { include uwsgi_params; uwsgi_modifier1 14; # hode following headers received from uwsgi, because otherwise we would send them twice since we already add them in nginx itself uwsgi_hide_header X-Frame-Options; uwsgi_hide_header X-XSS-Protection; uwsgi_hide_header X-Content-Type-Options; uwsgi_hide_header X-Robots-Tag; uwsgi_hide_header X-Frame-Options; #Uncomment line below if you get connection refused error. Remember to commet out line with "uwsgi_pass 127.0.0.1:3001;" below uwsgi_pass unix:/run/uwsgi/owncloud.sock; #uwsgi_pass 127.0.0.1:3001; } ...
"Reading from keychain failed with error: 'No keychain service available'"
Gnome の場合、libgnome-keyring と gnome-keyring パッケージをインストールすることで解決します。KDE の場合、libgnome-keyring と qtkeychain パッケージをインストールしてください。
FolderSync: "Method Not Allowed"
FolderSync は /nextcloud/remote.php/webdav
へのアクセス権限を必要とするため、/etc/httpd/conf/extra/nextcloud.conf
にエイリアスを作成してください:
<IfModule mod_alias.c> Alias /nextcloud /usr/share/webapps/nextcloud/ Alias /owncloud /usr/share/webapps/nextcloud/ </IfModule>
Nextcloud 13 : "Unable to load dynamic library 'mcrypt.so"
php 7.2 から mcrypt 拡張は削除されました [8]。
mcrypt に関する Nextcloud のエラーを修正するには、PECL で php 7.2 に対応した拡張をインストールします。
1. php-pear をインストール (インストールしていない場合)。
2. PECL チャンネルを更新:
# pecl channel-update pecl.php.net
3. mcrypt 1.0.1 をインストール:
# pecl install mcrypt-1.0.1
4. /etc/php/php.conf
の以下の行をアンコメント:
;extension=mcrypt.so