Ubuntu 18.04 に Nextcloud をインストールしてみたので、その覚書です。基本的に Nextcloud公式ドキュメントを参考にしながら作業をしていきます。
公式: Installation and server configuration — Nextcloud 15 Administration Manual 15 documentation
Nextcloud とは
Nextcloudとは、オープンソースのオンラインストレージサービスを提供できるソフトウェアで、サーバや、WindowsやAndroid、Mac用のクライアント用アプリがあります。類似のソフトウェアで、Owncloud もあります。類似しているというより、Owncloud は Nextcloud の兄貴分に当たります。Nextcloud は Owncloud からフォークされて開発されています( 詳しい話は、wiki にあります)。
誤解を恐れずに、簡潔に言えば、「Dropbox」のプライベート版と思っていただいていいです。Windows用のクライアントからは、Nextcloud上のファイルやフォルダを、あたかもローカルファイルのように扱うことが出来て、大変便利です。
もし、VPS等を契約されているならば、インストールして損はない、と思います。
前提
以下の作業が既に終わっているということを前提にして記事を進めます。
- Ubuntu 18.04がインストールされ、最低限の設定が終了している。
- MariaDB 10.03インストール済み
- Apache 2.4インストール済み
- PHP 7.2 + php-fpm がインストール済み
ゴール
- 使用するバージョンは、Nextcloud15 (現在のバージョンは15.0.7)
- Nextcloud を tar ボールからインストール(他にも Snap を利用したインストール方法もあります)
- Webサーバのサブディレクトリでアクセスできるように設定
- インストール先は、
/var/lib/nextcloud
。 - URL は
https://www.example.com/nextcloud/
でアクセス。
Nextcloud のインストール要件
Nextcloud15のインストール要件です。
オペレーションシステム
- Ubuntu 18.04 LTS (推奨)
- Red Hat Enterprise Linux 7 (推奨)
- Debian 8, 9
- SUSE Linux Enterprise Server 11 with SP3 & 12
- openSUSE Leap 42.1 +
- CentOS 7
データベース
- MySQL or MariaDB 5.5+ (推奨)
- Oracle Database 11g
- PostgreSQL 9/10
- SQLite
Webサーバ
- Apache 2.4 with
mod_php
orphp-fpm
(推奨) - ngix with
php-fpm
PHP
- 7.0
- 7.1
- 7.2
- 7.3
MariaDBの設定
インストール
詳細は、Ubuntu 18.04 + LAMP 環境構築 (3) – MariaDB 10.3 を参照。
ISOLATION LEVELとBINLOG FORMAT
Nextcloud で MySQL / MariaDB を利用する場合は、以下の要件が必須となります。
- ストレージエンジンは InnoDB
- DB の トランザクション分離レベルが "Read COMMITED"
- Binary Logging を無効にするか、あるいは、
BINLOG_FORMAT = ROW
を設定する。 - 文字コード Utf8mb4 を使用。
/etc/my.cnf
などに次のような設定を追加します。
[mysqld]
...
transaction_isolation = READ-COMMITTED
binlog_format = ROW
...
MySQL 4-byte サポート
/etc/my.cnf
などに次のような設定を追加します(デフォルトで設定されているはずです)。
[mysqld]
...
innodb_file_per_table=1
...
my.cnf の例
本家サイトの my.cnf
の例を適用してみます。
ここでは、/etc/mysql/my.cnf
に直接書くのを避けて、mariadb.cnf
上で設定します。これが作法としてよいかどうかは確認していませんが・・
理由としては、単純に my.cnf
の末尾で mariadb.cnf
がインクルードされるので、同じ変数がそれぞれにあった場合は my.cnf
の値が mariadb.cnf
の値で上書きされることを期待しているからです1。
# MariaDB-specific config file.
# Read by /etc/mysql/my.cnf
[server]
# DNSによる名前解決によらず、IPアドレスのみ使用する
skip-name-resolve
# コネクションプール用のバッファ領域のサイズ
innodb_buffer_pool_size = 128M
# バファープールインスタンスの数(但し、`innodb_buffer_pool_size` を1Gバイト以上に設定した場合にのみ有効)
innodb_buffer_pool_instances = 1
# ログバッファーのファイルへの書き込み方法
# 2 はトランザクション毎にログファイルに書き込まれ、1秒毎にディスクにフラッシュされるが、システムクラッシュや停電で、最大1秒、トランザクションが失われる可能性がある。(デフォルトは1)
innodb_flush_log_at_trx_commit = 2
# ログを書き込む際に利用されるバッファサイズ
innodb_log_buffer_size = 32M
# InnoDBがダーティーページをディスクにフラッシュする、バッファープール内におけるダーティーページの割合
innodb_max_dirty_pages_pct = 90
# qyery_cacheのタイプ。デフォルトは1(ON)
query_cache_type = 1
# query_cacheの最大値、デフォルトは1(1M)
query_cache_limit = 2M
# query_cache によって割り当てられたブロックの最小サイズ、デフォルトは4096(4k)
query_cache_min_res_unit = 2k
# クエリ結果をキャッシュするために割り当てられたメモリの量。デフォルトは1048576(1M)
query_cache_size = 64M
# 一時テーブルの最大サイズ。デフォルトは16777216(16M)
tmp_table_size= 64M
# MEMORYテーブルの最大サイズ。デフォルトは16777216(16M)
max_heap_table_size= 64M
# スロークエリログを使用可能に(デフォルトは0)
slow-query-log = 1
# スロークエリログファイル名
slow-query-log-file = /var/log/mysql/slow.log
# slow_queriesステータス変数を増やす、クエリーの秒数
long_query_time = 1
[client]
# Default is Latin1, if you need UTF-8 set this (also in server section)
default-character-set = utf8mb4
[mysqld]
#
# * Character sets
#
# Default is Latin1, if you need UTF-8 set all this (also in client section)
#
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
#character_set_server = utf8
#collation_server = utf8_general_ci
transaction_isolation = READ-COMMITTED
binlog_format = ROW
innodb_file_per_table=1
# Import all .cnf files from configuration directory
!includedir /etc/mysql/mariadb.conf.d/
MariaDBを再起動します。
$ sudo systemctl restart mysql
Nextcloud 用にデータベースを作成する
Nextcloud で利用するデータベース名と、それにアクセスするユーザー名とそのパスワードを設定します。
MariaDBにログインする。
$ mysql -u root -p
データベースを作成。
MariaDB [(none)]> CREATE DATABASE ncdb_1901 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Query OK, 1 row affected (0.001 sec)
Nextcloudのデータベースを使用するためのユーザを作成。
MariaDB [(none)]> CREATE USER 'ncdbuser'@'localhost' IDENTIFIED BY 'p@ssw0rd';
Query OK, 0 rows affected (0.002 sec)
MariaDB [(none)]> GRANT ALL PRIVILEGES ON ncdb_1902.* TO 'ncdbuser'@'localhost' IDENTIFIED BY 'p@ssw0rd';
Query OK, 0 rows affected (0.002 sec)
PHP の設定
PHP のインストール
詳細は、Ubuntu 18.04 + LAMP 環境構築 (4) – PHP 7.2 を参照。
必要とされるPHPモジュール
- ctype
- curl
- dom
- gd
- iconv
- json
- libxml (Linux package libxml2 must be >=2.7.0)
- mbstring
- openssl
- pdo_mysql
- posix
- session
- simplexml
- XMLReader
- XMLWriter
- zip
- zlib
また、以下のモジュールも推奨されています。
- fileinfo (→ すでに導入済み)
- bz2 (php7.2-bz2)
- intl (php7.2-intl)
モジュールの追加
ほとんどのモジュールはすでに導入されているので、次のようにして追加のモジュールをインストールします。
$ sudo apt install php7.2-bz2 php7.2-intl
pdo_mysql の設定
先のPHPの設定通りの場合、php-fpmを使用するので、/etc/php/7.2/fpm/conf.d/20-pdo_mysql.ini
に、以下のように設定を記載します。
# configuration for PHP MySQL module
extension=pdo_mysql.so
[mysql]
mysql.allow_local_infile=On
mysql.allow_persistent=On
mysql.cache_size=2000
mysql.max_persistent=-1
mysql.max_links=-1
mysql.default_port=
mysql.default_socket=/var/lib/mysql/mysql.sock # Debian squeeze: /var/run/mysqld/mysqld.sock
mysql.default_host=
mysql.default_user=
mysql.default_password=
mysql.connect_timeout=60
mysql.trace_mode=Off
Nextcloud のインストール
- Nextcloudのダウンロードページ
- Dowload for server をクリックする。
- Details and download options をクリックする。
.tar.bz2
のダウンロードリンクと、MD5チェックサムのダウンロードリンクをコピーして、次のようにする。
$ cd ~/
$ wget https://download.nextcloud.com/server/releases/nextcloud-15.0.7.tar.bz2
$ wget https://download.nextcloud.com/server/releases/nextcloud-15.0.7.tar.bz2.md5
MD5チェックサムを確認する。
$ md5sum -c nextcloud-15.0.7.tar.bz2.md5 < nextcloud-15.0.7.tar.bz2
nextcloud-15.0.7.tar.bz2: OK
ファイルを展開して、ディレクトリに配置する。
$ tar jxf nextcloud-15.0.7.tar.bz2
$ sudo mv nextcloud /var/lib/
Nextcloud のファイルのオーナー・グループを変更する。
$ sudo chown -R www-data:www-data /var/lib/nextcloud
Apache Web サーバーの設定
次のファイルを作成し、編集します。
/etc/apache2/sites-available/nextcloud.conf
内容は次のとおりです。http://サイトのURL/mycloud
へのアクセスを/var/lib/nextcloud
のディレクトリへのエイリアスとした設定です。
Alias /mycloud "/var/lib/nextcloud/"
<Directory /var/lib/nextcloud/>
Options +FollowSymlinks
AllowOverride All
Require all granted
<IfModule mod_dav.c>
Dav off
</IfModule>
SetEnv HOME /var/lib/nextcloud
SetEnv HTTP_HOME /var/lib/nextcloud
</Directory>
サイトの設定を有効にします。
$ sudo a2ensite nextcloud.conf
すでに有効にしているモジュールもありますが、以下のモジュールを有効にします。
$ sudo a2enmod rewrite
$ sudo a2enmod headers
$ sudo a2enmod env
$ sudo a2enmod dir
$ sudo a2enmod mime
$ sudo a2enmod setenvif
最後にapache2 を再起動します。
$ sudo systemctl restart apache2
インストールウィザードの実行
ブラウザからURLにアクセスします。
https://www.example.com/mycloud
任意の管理者ユーザー名と、パスワードを入力し、セットアップを完了します
をクリックします。
管理者ユーザー名とパスワードは今後も必要になるので、忘れないようにしてください。
ModSecurityを併用している場合
modSecurity を併用している場合、ログイン後、ロード中のサークルが回ったまま、一向にページが帰ってこなくなります。
ここで、Apache2 のエラーログを見ると、以下のように ModSecurity のエラーがズラズラと出てくることがわかると思います。
[Thu Apr 18 16:29:44.183725 2019] [:error] [pid 31511:tid 140221505050368] [client 192.168.10.199:56716] [client 192.168.10.199] ModSecurity: Warning. Match of "within %{tx.allowed_methods}" against "REQUEST_METHOD" required. [file "/usr/share/modsecurity-crs/rules/REQUEST-911-METHOD-ENFORCEMENT.conf"] [line "46"] [id "911100"] [msg "Method is not allowed by policy"] [data "PROPFIND"] [severity "CRITICAL"] [ver "OWASP_CRS/3.1.0"] [tag "application-multi"] [tag "language-multi"] [tag "platform-multi"] [tag "attack-generic"] [tag "OWASP_CRS/POLICY/METHOD_NOT_ALLOWED"] [tag "WASCTC/WASC-15"] [tag "OWASP_TOP_10/A6"] [tag "OWASP_AppSensor/RE1"] [tag "PCI/12.1"] [hostname "www.example.com"] [uri "/nextcloud/remote.php/dav/files/nextcloud/"] [unique_id "XLgnaMiY-WVujWqUqJqfzgAAAEg"]
[Thu Apr 18 16:29:44.194844 2019] [:error] [pid 31511:tid 140221505050368] [client 192.168.10.199:56716] [client 192.168.10.199] ModSecurity: Rule 7f87e6405748 [id "932110"][file "/usr/share/modsecurity-crs/rules/REQUEST-932-APPLICATION-ATTACK-RCE.conf"][line "261"] - Execution error - PCRE limits exceeded (-8): (null). [hostname "www.example.com"] [uri "/nextcloud/remote.php/dav/files/nextcloud/"] [unique_id "XLgnaMiY-WVujWqUqJqfzgAAAEg"]
[Thu Apr 18 16:29:44.250403 2019] [:error] [pid 31511:tid 140221505050368] [client 192.168.10.199:56716] [client 192.168.10.199] ModSecurity: Access denied with code 403 (phase 2). Operator GE matched 5 at TX:anomaly_score. [file "/usr/share/modsecurity-crs/rules/REQUEST-949-BLOCKING-EVALUATION.conf"] [line "93"] [id "949110"] [msg "Inbound Anomaly Score Exceeded (Total Score: 5)"] [severity "CRITICAL"] [tag "application-multi"] [tag "language-multi"] [tag "platform-multi"] [tag "attack-generic"] [hostname "www.example.com"] [uri "/nextcloud/remote.php/dav/files/nextcloud/"] [unique_id "XLgnaMiY-WVujWqUqJqfzgAAAEg"]
[Thu Apr 18 16:29:44.569523 2019] [:error] [pid 31511:tid 140221505050368] [client 192.168.10.199:56716] [client 192.168.10.199] ModSecurity: Warning. Operator GE matched 5 at TX:inbound_anomaly_score. [file "/usr/share/modsecurity-crs/rules/RESPONSE-980-CORRELATION.conf"] [line "86"] [id "980130"] [msg "Inbound Anomaly Score Exceeded (Total Inbound Score: 5 - SQLI=0,XSS=0,RFI=0,LFI=0,RCE=0,PHPI=0,HTTP=0,SESS=0): Method is not allowed by policy; individual paranoia level scores: 5, 0, 0, 0"] [tag "event-correlation"] [hostname "www.example.com"] [uri "/nextcloud/index.php"] [unique_id "XLgnaMiY-WVujWqUqJqfzgAAAEg"]
[Thu Apr 18 16:29:44.583148 2019] [:error] [pid 31511:tid 140221387618048] [client 192.168.10.199:56715] [client 192.168.10.199] ModSecurity: Warning. Match of "within %{tx.allowed_methods}" against "REQUEST_METHOD" required. [file "/usr/share/modsecurity-crs/rules/REQUEST-911-METHOD-ENFORCEMENT.conf"] [line "46"] [id "911100"] [msg "Method is not allowed by policy"] [data "PROPFIND"] [severity "CRITICAL"] [ver "OWASP_CRS/3.1.0"] [tag "application-multi"] [tag "language-multi"] [tag "platform-multi"] [tag "attack-generic"] [tag "OWASP_CRS/POLICY/METHOD_NOT_ALLOWED"] [tag "WASCTC/WASC-15"] [tag "OWASP_TOP_10/A6"] [tag "OWASP_AppSensor/RE1"] [tag "PCI/12.1"] [hostname "www.example.com"] [uri "/nextcloud/index.php/apps/files/"] [unique_id "XLgnaMiY-WVujWqUqJqf0AAAAEw"]
[Thu Apr 18 16:29:44.592673 2019] [:error] [pid 31511:tid 140221387618048] [client 192.168.10.199:56715] [client 192.168.10.199] ModSecurity: Rule 7f87e6405748 [id "932110"][file "/usr/share/modsecurity-crs/rules/REQUEST-932-APPLICATION-ATTACK-RCE.conf"][line "261"] - Execution error - PCRE limits exceeded (-8): (null). [hostname "www.example.com"] [uri "/nextcloud/index.php/apps/files/"] [unique_id "XLgnaMiY-WVujWqUqJqf0AAAAEw"]
[Thu Apr 18 16:29:44.635339 2019] [:error] [pid 31511:tid 140221387618048] [client 192.168.10.199:56715] [client 192.168.10.199] ModSecurity: Access denied with code 403 (phase 2). Operator GE matched 5 at TX:anomaly_score. [file "/usr/share/modsecurity-crs/rules/REQUEST-949-BLOCKING-EVALUATION.conf"] [line "93"] [id "949110"] [msg "Inbound Anomaly Score Exceeded (Total Score: 5)"] [severity "CRITICAL"] [tag "application-multi"] [tag "language-multi"] [tag "platform-multi"] [tag "attack-generic"] [hostname "www.example.com"] [uri "/nextcloud/index.php/apps/files/"] [unique_id "XLgnaMiY-WVujWqUqJqf0AAAAEw"]
[Thu Apr 18 16:29:44.792224 2019] [:error] [pid 31511:tid 140221387618048] [client 192.168.10.199:56715] [client 192.168.10.199] ModSecurity: Warning. Operator GE matched 5 at TX:inbound_anomaly_score. [file "/usr/share/modsecurity-crs/rules/RESPONSE-980-CORRELATION.conf"] [line "86"] [id "980130"] [msg "Inbound Anomaly Score Exceeded (Total Inbound Score: 5 - SQLI=0,XSS=0,RFI=0,LFI=0,RCE=0,PHPI=0,HTTP=0,SESS=0): Method is not allowed by policy; individual paranoia level scores: 5, 0, 0, 0"] [tag "event-correlation"] [hostname "www.example.com"] [uri "/nextcloud/index.php"] [unique_id "XLgnaMiY-WVujWqUqJqf0AAAAEw"]
このログのの細かい部分はあまり良くわかってはいませんが、注目すべきポイントがあります。それは、id
と msg
、client
、uri
です。
client
は、Webサーバにアクセスしているクライアントです。この時点では、自身のホスト名なりIPアドレスが表示されているはずです。
id
は、ModSecurity のルールセットで定義されているポリシーのIDです。
ちなみに一番最初の行は、[ id "911100"]
で、msg
は "Method is not allowed by policy
となっています2。
要するに、自身のIPからアクセスした場合に記録されているこれらのIDについては、ポリシーが適用されないようにする必要があります (くれぐれも悪意の第三者からのアクセスについてのエラーを除外しないように・・)。
除外リストを作成する
次の記事、”ModSecurity Web Application Firewall for NextCloud” を参考に、/etc/modsecurity/modsecurity_crs_99_whitelist.conf
を作成して、その中に次のような除外フィルタを定義します。
<Directory /var/lib/nextcloud/>
# VIDEOS
SecRuleRemoveById 958291 # Range Header Checks
SecRuleRemoveById 981203 # Correlated Attack Attempt
# PDF
SecRuleRemoveById 950109 # Check URL encodings
# ADMIN (webdav)
SecRuleRemoveById 960024 # Repeatative Non-Word Chars (heuristic)
SecRuleRemoveById 981173 # SQL Injection Character Anomaly Usage
SecRuleRemoveById 981204 # Correlated Attack Attempt
SecRuleRemoveById 981243 # PHPIDS - Converted SQLI Filters
SecRuleRemoveById 981245 # PHPIDS - Converted SQLI Filters
SecRuleRemoveById 981246 # PHPIDS - Converted SQLI Filters
SecRuleRemoveById 981318 # String Termination/Statement Ending Injection Testing
SecRuleRemoveById 973332 # XSS Filters from IE
SecRuleRemoveById 973338 # XSS Filters - Category 3
SecRuleRemoveById 981143 # CSRF Protections ( TODO edit LocationMatch filter )
# COMING BACK FROM OLD SESSION
SecRuleRemoveById 970903 # Microsoft Office document properties leakage
# NOTES APP
SecRuleRemoveById 981401 # Content-Type Response Header is Missing and X-Content-Type-Options is either missing or not set to 'nosniff'
SecRuleRemoveById 200002 # Failed to parse request body
# UPLOADS ( 5 MB max excluding file size )
SecRequestBodyLimit 4294967296
SecRequestBodyNoFilesLimit 4294967296
# GENERAL
SecRuleRemoveById 960017 # Host header is a numeric IP address
# REGISTERED WARNINGS, BUT DID NOT HAVE TO DISABLE THEM
#SecRuleRemoveById 981220 900046 981407
#SecRuleRemoveById 981222 981405 981185 981184
# Added below by shiro@rough-and-cheap.jp
SecRuleRemoveById 949110 911100 980130
</Directory>
<Directory /path/to/nextcloud>
には、実際にNextcloudをデプロイしたパスを指定します。この場合は、この物理パスから下の部分へのリクエストに関しては、上記で指定したルールが除外されます。
特定のURIに対して除外させたい場合は、<LocationMatch /path/of/uri>
とすることで、特定のURIのみに適用させることもできます。
保存後、Apache2を再起動します。
$ sudo systemctl restart apache2
ModSecurity の crs-setup.conf を編集
ModSecurity の /usr/share/modsecurity-crs/crs-setup.conf
に一部のアプリケーション向けの除外リストがあるので、それを有効にするのも手かもしれません。
# crs-setup.conf の351行目あたり、コメントアウト
SecAction \
"id:900130,\
phase:1,\
nolog,\
pass,\
t:none,\
setvar:tx.crs_exclusions_drupal=1,\
setvar:tx.crs_exclusions_wordpress=1,\
setvar:tx.crs_exclusions_nextcloud=1,\
setvar:tx.crs_exclusions_dokuwiki=1"
# setvar:tx.crs_exclusions_cpanel=1"
Nextcloud にログインする
セキュリティポリシーの除外リストを適用させることができたら、再度ログインを試みます。
ログインに成功すると、次のような画面になります。
URL を綺麗にする
次のように設定することで、URL中のindex.php
を除去してくれます。
mod_env
とmod_rewrite
モジュールがインストールされている必要があります。また、.htaccess
にwww-data
ユーザーが書き込めるようにしておく必要があります。
その上で、config.php
に次の設定を変更します。
<?php
$CONFIG = array (
:
'overwrite.cli.url' => 'https://www.rough-and-cheap.jp/ourcloud',
'htaccess.RewriteBase' => '/ourcloud',
:
);
occ
コマンドで、.htaccess
ファイルを更新します。
$ sudo -u www-data php /var/www/nextcloud/occ maintenance:update:htaccess
その他
ログイン直後のページ右上の、ユーザーのイニシャルが入った丸いアイコンをクリックし、[設定
] をクリックすると、「設定」画面に入ることができます (設定画面に入るには、パスワードを要求されます)。
左側ペインの[管理
] 項目にある[概要
] をクリックすると、バージョン情報に加えて、「セキュリティ & セットアップ警告」 という画面に遷移します。
ここの「セキュリティ & セットアップ警告」 に警告が出ている場合、解決をしておく必要があります。
以下は、その例です。
X-Frame-Options not set to SAMEORIGIN
warning “X-Frame-Options not set to SAMEORIGIN”
クリックジャッキング対策 を元に、mod_headers
を設定してください。
Your web server is not yet ..
Your web server is not yet properly set up to allow file synchronization, because the WebDAV interface seems to be broken.
ModSecurity を併用している場合 の設定で回避できます。
それでもなお、ModSecurity のエラーが発生する場合は、ホワイトリストにIDを追加してください。
Strict-Transport-Security
"Strict-Transport-Security" HTTPヘッダが最低でも "15552000" 秒に設定されていません。セキュリティを強化するには、セキュリティTips ↗で解説しているHSTSを有効にすることを推奨します。
参考: Enable HTTP Strict Transport Security
次の、<IfModule mod_headers.c> ... </IfModule>
の節を追加します。
Alias /ourcloud "/var/lib/nextcloud/"
<Directory /var/lib/nextcloud/>
Options +FollowSymlinks
AllowOverride All
Require all granted
<IfModule mod_dav.c>
Dav off
</IfModule>
<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains"
</IfModule>
SetEnv HOME /var/lib/nextcloud
SetEnv HTTP_HOME /var/lib/nextcloud
</Directory>
Service discovery
Your web server is not properly set up to resolve "/.well-known/caldav". Further information can be found in the documentation.
Your web server is not properly set up to resolve "/.well-known/carddav". Further information can be found in the documentation.
参考: Service discovery - General trouble shooting
次の節を、/etc/apache2/sites-available/default-ssl.conf
に追加。
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^/\.well-known/host-meta /nextcloud/public.php?service=host-meta [QSA,L]
RewriteRule ^/\.well-known/host-meta\.json /nextcloud/public.php?service=host-meta-json [QSA,L]
RewriteRule ^/\.well-known/webfinger /nextcloud/public.php?service=webfinger [QSA,L]
RewriteRule ^/\.well-known/carddav /nextcloud/remote.php/dav/ [R=301,L]
RewriteRule ^/\.well-known/caldav /nextcloud/remote.php/dav/ [R=301,L]
</IfModule>
PHP OPcacheが適切に設定されていません...
PHP OPcacheが適切に設定されていません。よりパフォーマンスを向上させるには、php.iniで次の設定を推奨します
/etc/php/7.2/fpm/php.ini
に、Opcache 関連の設定が有効になっているか確認します。
opcache.enable=1
opcache.enable_cli=1
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1
設定が反映されない場合、
$ sudo systemctl restart php7.2-fpm
で、php7.2-fpm
を再起動してみる。
メモリキャッシュが設定されていません...
メモリキャッシュが設定されていません。可能であれば、パフォーマンスを向上するため、memcacheを設定してください。
参考: Server tuning — Nextcloud 15 Administration Manual 15 documentation
参考: Memory caching — Nextcloud 15 Administration Manual 15 documentation
php-apcu
をインストール。
$ sudo apt install php-apcu
config.php
に次の項目を追加する。
$ sudo vi /var/lib/nextcloud/config/config.php
<?php
$CONFIG = array (
:
'memcache.local' => '\OC\Memcache\APCu',
);
/etc/php/7.2/fpm/php.ini
に、次の行を追加する。
apc.enable_cli = 1
Some columns in the database are missing...
Some columns in the database are missing a conversion to big int. Due to the fact that changing column types on big tables could take some time they were not changed automatically. By running 'occ db:convert-filecache-bigint' those pending changes could be applied manually. This operation needs to be made while the instance is offline. For further details read the documentation page about this.
- filecache.mtime
- filecache.storage_mtime
次のコマンドを実行してください。
$ sudo -u www-data php /var/lib/nextcloud/occ db:convert-filecache-bigint
まとめ
この文書をまとめるにあたって、再度インストールを検証したのですが、いろいろグダグダで失敗しまくりました。
ログイン画面でループになってしまうような場合は、ネットワーク関係の設定の見直し
/etc/netplan/01-netcfg.yaml
/etc/hosts
/etc/hostname
の記載間違いがないかをよく確認したほうがいいかもしれません。
また、ModSecurity については、インストール時にはいったん Off にしておいて、インストール後有効にして調整、のほうがいいかもしれません。
あと、公式のインストールガイドは、たいへん見にくいですよね。やっている間に頭がこんがらがってきてしまいました。
まぁ、とにかく自己責任でおねがいします。。
1件のコメント
Nextcloudセキュリティ対策 | DAICHU Laboratory · 2019年11月27日 11:41 AM
[…] Ubuntu 18.04 に Nextcloud をインストール […]