NextCloudでファイル共有【その2】サーバの設定
前の記事NextCloudでファイル共有【その1】サーバインストール手順ではNextCloudのインストール方法を紹介しました。さらにSSL対応や細かいサーバの設定を行ったのでその手順を紹介します。
もくじSSL対応
★注意★私の場合は自宅内のローカルネットワークに独自ドメインを設定しているため、Let's EncryptにてSSL証明書を作成しました。個人のローカルエリアネットワーク内でサーバー証明書が櫃庄名場合はいわゆるオレオレ証明書でもいいでしょう。
①ApacheのSSLを有効化
まずはApache2のSSLを有効化します。
(1)SSLのモジュールを読み込み
sudo a2enmod ssl
(2)default-ssl.conf の編集
/etc/apache2/sites-available/default-ssl.confを自分の環境に合わせて変更します。
ServerAdmin xxx@yyy.xxx #変更
ServerName xxx.yyy.zzz #追加
DocumentRoot /var/www/html
(3)a2ensiteを実行
a2ensite default-ssl
(4)サービスの再起動
sudo systemctl restart apache2.service
②Let's EncriptでSSL証明書を取得
関連パッケージをインストールしてスクリプトを実行します。
sudo apt-get install letsencrypt python-certbot-apache
sudo letsencrypt run --apache
SSL設定後のエラー対処
SSL設定後にNextCloudにadminでログインしたところ、セキュリティのエラーが出ていました。
①アクセス権限のエラー
メッセージの内容は下記です。
Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. We strongly suggest that you configure your web server in a way that the data directory is no longer accessible or you move the data directory outside the web server document root.
対処:下記の3ファイルを変更しApacheを再起動
/etc/apache2/apache2.conf
172行目のAllowOverride NoneをAllowOverride Allに変更。
<Directory /var/www/>
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
/etc/apache2/sites-available/000-default.conf
DocumentRoot /var/www/htmlの下に3行追加
<Directory "/var/www/html">
AllowOverride All
</Directory>
/etc/apache2/sites-available/default-ssl.conf
DocumentRoot /var/www/htmlの下に5行追加
<Directory /var/www/html/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
apacheの再起動
sudo systemctl restart apache2.service
②Strict-Transport-Securityのエラー
The "Strict-Transport-Security" HTTP header is not set to at least "15552000" seconds. For enhanced security, it is recommended to enable HSTS as described in the security tips.
対処:下記のファイルを編集しApacheを再起動
/etc/apache2/sites-available/nextcloud.conf
<VirtualHost *:443>
ServerName lenovos9e.mongonta.net
<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains"
</IfModule>
</VirtualHost>
apacheの再起動
sudo systemctl restart apache2.service
php.iniの設定
こちらも、セキュリティ&セットアップ警告として出ていたので指示に従って変更しました。
メッセージを読むとどうやらキャッシュの設定のようです。
The PHP OPcache is not properly configured. For better performance it is recommended to use the following settings in the php.ini:
対処:下記のファイルを編集
/etc/php/7.1/apache2/php.ini
1780行目にある[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
おわりに
これでNextCloudがSSLで使えるようになりました。NextCloudを使ってファイル共有しましょう!