NextCloudの導入

NextCloudとは、DropboxやGoogle Driveのようなオンラインストレージを構築できるオープンソースのソフトウェアである。クライアントからオンラインストレージへは、WebDAVを使ってアクセスすることができる。また、連絡先やカレンダーの機能もあり、そちらもCardDAV、CalDAVを通して利用できる。

Apache HTTP ServerとPHP(7.2か7.3か7.4)、MySQL Serverが必要となるので、あらかじめインストールしておく。
また、PHPのモジュールとしては、以下が必要となるので、それもあらかじめインストールしておく。

  • PHP module ctype
  • PHP module curl
  • PHP module dom
  • PHP module GD
  • PHP module iconv
  • PHP module JSON
  • PHP module libxml
  • PHP module mbstring
  • PHP module openssl
  • PHP module pdo_mysql
  • PHP module posix
  • PHP module session
  • PHP module SimpleXML
  • PHP module XMLReader
  • PHP module XMLWriter
  • PHP module zip
  • PHP module zlib

PHPの設定を変更しておく。

vi /etc/php.ini
memory_limit = 512M

post_max_size = 128M

upload_max_filesize = 128M

NextCloudでは、セッションを管理したり、ファイルのロック管理をしたりしている。このデータ管理のために、インメモリキャッシュサーバRedisをインストールする。

dnf install -y redis
systemctl enable redis.service
systemctl start redis.service

/var/www/ディレクトリへ移動してから、NextCloudをダウンロードする。

cd /var/www/
wget https://download.nextcloud.com/server/releases/nextcloud-20.0.0.zip

ダウンロードしたZIPファイルを展開する。

unzip nextcloud-20.0.0.zip

dataディレクトリを作成する。

mkdir /var/www/nextcloud/data

nextcloudディレクトリの所有者、所有グループを、Apache HTTP Serverの実行ユーザー、実行グループに合わせる。

chown -R apache.apache nextcloud

nextcloudのhttpd設定ファイルを作成する。

vi /etc/httpd/conf.d/nextcloud.conf

Alias /nextcloud "/var/www/nextcloud/"

<Directory /var/www/nextcloud/>
  Require all granted
  AllowOverride All
  Options FollowSymLinks MultiViews

  <IfModule mod_dav.c>
    Dav off
  </IfModule>

</Directory>

httpdサービス、php-fpmを再起動する。

systemctl restart httpd
systemctl restart php-fpm

SELinuxを有効にしている場合、許可ルールの追加が必要である。

semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/nextcloud/data(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/nextcloud/config(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/nextcloud/apps(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/nextcloud/.htaccess'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/nextcloud/.user.ini'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/nextcloud/3rdparty/aws/aws-sdk-php/src/data/logs(/.*)?'
restorecon -Rv '/var/www/nextcloud/'

setsebool -P httpd_can_network_connect_db on
setsebool -P httpd_can_connect_ldap on
setsebool -P httpd_can_network_connect on
setsebool -P httpd_can_network_memcache on
setsebool -P httpd_can_sendmail on
setsebool -P httpd_use_cifs on
setsebool -P httpd_use_fusefs on
setsebool -P httpd_use_gpg on

NextCloud用のデータベース、データベースユーザーを作成する。

mysql -u root -p

create database nextcloud;
create user 'nextcloud'@'localhost' identified by 'password';
grant all privileges on nextcloud.* to 'nextcloud'@'localhost';
flush privileges;
exit

NextCloudのoccコマンドを使って、インストールする。
(ブラウザから行う方法もあるが、なぜかタイムアウトしてしまう)

cd /var/www/nextcloud/
sudo -u apache php occ maintenance:install --database "mysql" --database-name "nextcloud" --database-user "nextcloud" --database-pass "password" --admin-user "nextcloud" --admin-pass "password"

アクセスに使用されるURLのドメインをconfig/config.phpのtrusted_domainsに追加する。
例えば、example.comを使ってアクセスする場合、以下のようにする。

vi config/config.php

  'trusted_domains' => 
  array (
  0 => 'localhost',
  1 => 'example.com'
  ),
ブラウザで、http://[IPアドレス]/nextcloud/ へアクセスする。

ログイン画面が表示される。

NextCloud ログイン画面

ログインすると、このような画面になる。

NextCloud ログイン後の画面

%d人のブロガーが「いいね」をつけました。