中小企業において、「テレワーク」や「働き方改革」などの文脈で、クラウド上に簡単にファイルを保存したり共有できる、クラウドストレージへの関心が高まっています。サブスクリプションで提供されているストレージサービスを、普段から利用されている方も多いのではないでしょうか。これらのサービスは容量に応じた月額料金が設定され、不特定多数のユーザーで同一の基盤を使用するケースが一般的ですが、法人利用の場合はコストやセキュリティの観点から導入に踏み切れないケースも多いようです。そんなご要望にお応えできるのが、Nextcloud です。

目次
Nextcloud とは?
Nextcloud は OSS なので利用料金はかかりませんし、自分が管理するサーバーにインストールして運用すれば、保存されるデータを完全に自身の制御下に置くことができます。また、外部ストレージ連携機能もあるので、既存のストレージも有効活用できることが大きなメリットです。
ファイル操作は Webブラウザからのアクセス、アップロードなどができるのはもちろんのこと、Windows用、Mac用のデスクトップアプリや、iOS用、Andloid用のスマートフォンアプリを利用すれば、データの同期やバックアップも行え、どこからでも簡単に写真や動画を共有できるようになります。また、外部とファイルを共有したいときには公開URLをメールで通知することもシェアボタンから簡単に行えます。
その他にも、ユーザーとグループ間の読み書き権限の定義や、バージョン管理、監査ログなどビジネス用途で必須となる機能も充実していることが導入しやすいポイントです。
KAGOYA CLOUD VPS での導入方法
ここでは、KAGOYA CLOUD VPS インスタンスに Nextcloud をインストールする方法を説明します。
インストールに必要となる環境についてはこちら(https://docs.nextcloud.com/server/latest/admin_manual/installation/system_requirements.html#desktop-client)をご確認ください。
今回は記事の記載時点(2020年7月時点)で「推奨環境」とされている、CentOS8, PHP 7.4 で Nextcloud 19.0.0 をインストールします。環境作成時点での推奨環境を確認し、変更がある場合は随時該当バージョンに読みかえて進めてください。
開発・検証・プログラミング学習に。無駄なコストもかけたくないあなたにおすすめのVPS
カゴヤのVPSは初期費用無料でアカウント登録さえしておけば、必要なときだけ日額課金でサーバーを立ち上げ可能!料金は使った分だけ。

1.CentOS 8 のインスタンスを作成
1-1.CentOS 8 でインスタンスを作成します
◇コントロールパネル > KVM > インスタンス
https://vps.kagoya.com/#/kvm/server
1-2.インスタンス一覧が表示されます

1-3.「インスタンス作成」をクリックします
1-4.インスタンス作成画面が開きます

1-5.任意のスペックを選択します。
1-6.パッケージは、CentOS 8 64bit を選択します

1-7.ログイン認証キーを選択します。
※ 未作成の場合はログイン認証キーを追加してください(ログイン用認証キー作成 https://support.kagoya.jp/vps/manual/index.php?action=artikel&cat=15&id=1&artlang=ja)。

1-8.その他必須項目を入力し、「インスタンス作成」をクリックします
2.サーバー環境の構築
2-1.はじめに CentOS のパッケージを最新の状態にします
# dnf update -y
2-2.Nextcloud のインストールに必要なパッケージをインストールします
# dnf install -y epel-release yum-utils unzip curl wget bash-completion policycoreutils-python-utils mlocate bzip2
2-3.Apache をインストールします
# dnf install -y httpd
2-4.必要なPHPモジュールをインストールします
# dnf install -y https://rpms.remirepo.net/enterprise/remi-release-8.rpm
# dnf install -y yum-utils
# dnf module reset php
# dnf module install -y php:remi-7.4
# dnf update -y
# dnf install -y php php-gd php-mbstring php-intl php-pecl-apcu php-mysqlnd php-opcache php-json php-zip
2-5.シンボリックリンクを張ります
# ln -s /opt/rh/httpd24/root/etc/httpd/conf.d/rh-php74-php.conf /etc/httpd/conf.d/
# ln -s /opt/rh/httpd24/root/etc/httpd/conf.modules.d/15-rh-php74-php.conf /etc/httpd/conf.modules.d/
# ln -s /opt/rh/httpd24/root/etc/httpd/modules/librh-php74-php7.so /etc/httpd/modules/
# ln -s /opt/rh/rh-php74/root/bin/php /usr/bin/php
2-6.MariaDB をインストールします
# dnf install -y mariadb mariadb-server
2-7.MariaDB の設定をします
# vi /etc/my.cnf.d/server.cnf
2-8. 下記([mysqld]以外の部分)を追記します
[mysqld]
character-set-server = utf8
innodb_buffer_pool_size=1G
innodb_io_capacity=4000
innodb_large_prefix=true
innodb_file_format=barracuda
innodb_file_per_table=1
2-9.MariaDB を起動します
# systemctl start mariadb
2-10.自動起動設定を追加します
# systemctl enable mariadb
2-11.初期設定をします
# mysql_secure_installation
※インストーラの指示に従ってmysqlのrootパスワード等を設定します
2-12.MariaDB にログインします
# mysql -u root -p
※パスワードの入力を求められるので先ほど設定したmysqlのrootパスワードを入力します
2-13.ログインできるとプロンプトが表示されます
MariaDB [(none)]>
2-14.データベースを作成します
MariaDB [(none)]> CREATE DATABASE nextcloud;
MariaDB [(none)]> GRANT ALL ON nextcloud.* to nextcloud@'localhost' identified by 'password';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> exit
※ここでは、例として以下の情報でデータベースを作成します
データベース名 : nextcloud
データベースユーザー名 : nextcloud
データベースパスワード : password
※安全なパスワードを設定してください。
3.Nextcloud のインストール
3-1. Nextcloudの最新パッケージのダウンロードURLを確認します
◇ Nextcloud Download Page
https://nextcloud.com/install/
> Download for server > Archive file > Download Nextcloud
3-2.確認したURLでサーバーにNextcloudをインストールします
# wget https://download.nextcloud.com/server/releases/nextcloud-19.0.0.zip
# unzip nextcloud-19.0.0.zip -d /var/www/html
# mkdir /var/www/html/nextcloud/data
# chown -R apache:apache /var/www/html/nextcloud
※ここではバージョン19.0.0を /var/www/html/nextcloudにインストールします
3-3.Apache の設定ファイルを追加します
# vi /etc/httpd/conf.d/nextcloud.conf
3-4.下記を記述します
DocumentRoot /var/www/html/nextcloud/
ServerName storage.example.com
<directory "="" var="" www="" html="" nextcloud="">
Require all granted
AllowOverride All
Options FollowSymLinks MultiViews
<directory "="" var="" www="" html="" nextcloud="" data="">
Require all denied
Redirect 301 /.well-known/carddav /nextcloud/remote.php/dav
Redirect 301 /.well-known/caldav /nextcloud/remote.php/dav
Redirect 301 /.well-known/webfinger /nextcloud/public.php?service=webfinger
3-5.Apache を起動します
# systemctl start httpd
3-6.自動起動設定を追加し、インターネット接続の許可設定を行います
# systemctl enable httpd
# firewall-cmd --zone=public --add-service=http --permanent
# firewall-cmd --reload
3-7.SELinuxを設定します
# semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/nextcloud/data(/.*)?'
# semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/nextcloud/config(/.*)?'
# semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/nextcloud/apps(/.*)?'
# semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/nextcloud/.htaccess'
# semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/nextcloud/.user.ini'
# semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/nextcloud/3rdparty(/.*)?'
# restorecon -R '/var/www/html/nextcloud/'
# setsebool -P httpd_can_network_connect on
3-8.http://storage.example.com/ にアクセスし、ログイン画面が表示されることを確認します

※設定はまだ行いません。DNSが反映し、設定したホスト名のURLでアクセスができることを確認してください。
4.SSLの設定
4-1.ここではLet’sEncryptを設置します
# git clone https://github.com/letsencrypt/letsencrypt
# cd letsencrypt
# ./letsencrypt-auto certonly --webroot -w /var/www/html/nextcloud/ -d storage.example.com
※ OSのバージョンの違いや、他社サービスでサーバーを作成した場合には、 git が初期インストールされていない場合があります。その場合は、” dnf install git -y ” と入力し、 git をインストールしましょう。
4-2.インストーラーの指示に従って次の項目を入力し、証明書を取得します
Enter email address: admin@example.com
(A)gree/(C)ancel: A
(Y)es/(N)o : Y
4-3.Apache に443番ポートのVirtualHost の設定をします
# vi /etc/httpd/conf.d/ssl.conf
4-4.最後の行に下記を追記します
DocumentRoot /var/www/html/nextcloud/
ServerName storage.example.com
<directory "="" var="" www="" html="" nextcloud="">
Require all granted
AllowOverride All
Options FollowSymLinks MultiViews
<IfModule mod_dav.c>
Dav off
Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains"
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/storage.example.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/storage.example.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/storage.example.com/chain.pem
4-5.常時SSLにするため80番ポートのVirtualHost の設定にリダイレクトの設定をします
# vi /etc/httpd/conf.d/nextcloud.conf
4-6.最後の行の直前の行に下記を追記します
Redirect permanent / https://storage.example.com/
4-7.Apache を再起動します
# systemctl restart httpd
4-8.Let’sEncryptの自動更新をするためにcron設定をします
# vi /etc/crontab
4-9.下記を追記します
#0 5 1 * * /bin/certbot renew --force-renew --webroot-path /var/www/html/nextcloud/ --post-hook "systemctl reload
4-10.cronを再起動します
# systemctl restart crond
4-11.https://storage.example.com/ にアクセスして初期設定を行います

管理者アカウント名: nextcloud
パスワード: password ※安全なパスワードを設定してください。
データフォルダー: /var/www/html/nextcloud/data ※このマニュアルの例
データベースを設定してください : 「MySQL/MariaDB」を選択
データベースのユーザー名: nextcloud ※このマニュアルの例
データベースのパスワード: password ※データベース作成時に設定したデータベースパスワード
データベースを設定してください: nextcloud ※このマニュアルの例
localhost: localhost
4-12.設定項目を入力後、「セットアップを完了します」をクリックします
Nextcloudのインストールが完了するとスタートアップ画面が表示されます。
(Nextcloud のバージョンによってスタートアップ画面のデザインが異なる場合があります。)

4-13. スタートアップ画面を閉じると、Nectcloudの画面が表示されます

4-14.以上でNextcloudのインストールは完了です
5.PHPの各種設定
Nextcloud>設定>管理>概要 を開くと、セキュリティ&セットアップ警告が表示されます。
パフォーマンス向上のためには次の設定を行います。
5-1.PHPの設定をします
# vi /etc/opt/rh/rh-php74/php.ini
5-2.以下を編集します
memory_limit = 512M
post_max_size = 2048M
upload_max_filesize = 2048M
※Nextcloud の使用環境に合わせ、任意の値で設定を調整します
5-3.APCuの設定をします
# vi /var/www/html/nextcloud/config/config.php
5-4.下記に ‘memcache.local’ => ‘OCMemcacheAPCu’, を ‘installed’ => true, に追記します
<?php
$CONFIG = array (
'instanceid' => 'ocpdajlkefwz',
'passwordsalt' => '1BCohF46WbFgJcxJKaOt6YZJOu1R+r',
'secret' => 'wM6YKJ8T1Rna2s7QxI22+AZV1sBZh+m1EcRBJk4MFJI4cpOe',
'trusted_domains' =>
array (
>0 => 'storage.example.com',
),
'datadirectory' => '/var/www/html/nextcloud/data',
'dbtype' => 'mysql',
'version' => '19.0.0',
'overwrite.cli.url' => 'http://storage.example.com/',
'dbname' => 'nextcloud',
'dbhost' => 'localhost',
'dbport' => '',
'dbtableprefix' => 'oc_',
'dbuser' => 'nextcloud',
'dbpassword' => 'password',
'installed' => true,
'memcache.local' => 'OCMemcacheAPCu',
);
5-5.OPcacheの設定をします
# vi /etc/opt/rh/rh-php74/php.d/10-opcache.ini
5-6.以下を編集します
opcache.enable=1
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1
5-7.Apache を再起動します
# systemctl restart httpd
5-8.以上で Nextcloud の初期設定は完了です
次回の「~ ユーザー操作編 ~」では、Nextcloud を実際に使う方法をご紹介します。
開発・検証・プログラミング学習に。無駄なコストもかけたくないあなたにおすすめのVPS
カゴヤのVPSは初期費用無料でアカウント登録さえしておけば、必要なときだけ日額課金でサーバーを立ち上げ可能!料金は使った分だけ。
