Nextcloud18.0.4 を CentOS8 にインストールしてお手軽に体験してみる

# はじめに
[Nextcloud](https://nextcloud.com/)は、自前のサーバを使って手軽にセキュアなファイル共有環境を実現できるオンラインストレージです。
ここでは、CentOS8 の環境で最低限に動く環境を構築する手順をまとめてみました。

# 今回構築する環境
## 構成イメージ
こんな感じで、いたってシンプルです。インターネットに出ない環境で試してみます。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/316764/8e108099-52b2-1b72-4602-169ad77ebd6f.png)
## 利用するOS、ミドルウェア
### サーバOS(CentOS)
今回はCentOS8を利用します。VirtualBoxやVagrantなどで準備いただいても問題ありません。
ここで展開している手順の環境は以下のとおりです。

```
$ cat /etc/redhat-release 
CentOS Linux release 8.1.1911 (Core) 
$ uname -a
Linux localhost.localdomain 4.18.0-147.el8.x86_64 #1 SMP Wed Dec 4 21:51:45 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
```
### Nextcloud本体
もちろんこれがないとNextcloudが使えません。
Nextcloudのバージョンはいろいろありますが、2020/4/24時点の最新版である 18.0.4 を使います。

### Webサーバ(Apache)
NextcloudはWebベースで動作しますので、Webサーバが動作する環境が必要です。今回はApacheを使います。
ここで展開している手順でのApacheのバージョンは以下のとおりです。

```
$ httpd -v
Server version: Apache/2.4.37 (centos)
Server built:   Dec 23 2019 20:45:34
```
### PHP
NextcloudはPHPで動作します。
ここで展開している手順でのPHPのバージョンは以下のとおりです。

```
$ php -v
PHP 7.4.5 (cli) (built: Apr 14 2020 12:54:33) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Zend OPcache v7.4.5, Copyright (c), by Zend Technologies
```
### データベース(SQLite)
Nextcloudではデータベースを利用します。本格的な運用ではMariaDB/MySQLといったデータベースを利用することが推奨されますが、今回はお手軽に使ってみるためSQLiteを使います。
ここで展開している手順でのSQLiteのバージョンは以下のとおりです。

```
$ sqlite3 --version
3.26.0 2018-12-01 12:34:55 bf8c1b2b7a5960c282e543b9c293686dccff272512d08865f4600fb58238alt1
```

# 構築手順
ほぼほぼ[Nextcloud公式ドキュメント](https://docs.nextcloud.com/server/18/admin_manual/installation/source_installation.html#example-installation-on-centos-7-server)にのっている内容です。これに基づいて進めていきます。



①インストール作業に必要なパッケージをインストールします。
  
```
sudo dnf install dnf-utils unzip curl wget bash-completion -y

sudo dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm -y
```
②システムを最新状態にアップデートします。

```
sudo dnf upgrade -y
```
③Webサーバ(Apache)をインストールします。

```
sudo dnf install -y httpd
```
④Apacheの追加設定ファイルを作成します。

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

**※内容※**

```
<VirtualHost *:80>
  DocumentRoot /var/www/html/
  ServerName  (サーバのIPアドレス)

<Directory "/var/www/html/">
  Require all granted
  AllowOverride All
  Options FollowSymLinks MultiViews
</Directory>
</VirtualHost>
```
⑤Apacheを自動起動するように設定し、Apacheを起動します。

```
sudo systemctl enable httpd.service
sudo systemctl start httpd.service
```
⑥Nextcloudの動作に必要なPHPモジュールをインストールします。

```
sudo dnf install http://rpms.famillecollet.com/enterprise/remi-release-8.rpm -y

sudo dnf module install php:remi-7.4 -y

sudo dnf install php-gd php-mysqlnd php-process php-opcache php-pecl-apcu php-intl php-pecl-redis php-pecl-zip php-pear -y
```
⑦Nextcloudパッケージ本体とチェックサムファイル(Nextcloudパッケージ本体が正しくダウンロードされているかをチェックするためのファイル)をダウンロードします。

```
wget https://download.nextcloud.com/server/releases/nextcloud-18.0.4.tar.bz2

wget https://download.nextcloud.com/server/releases/nextcloud-18.0.4.tar.bz2.md5
```
⑧チェックサムファイルを利用してNextcloudパッケージが正しくダウンロードされているか確認します。

```
md5sum -c nextcloud-18.0.4.tar.bz2.md5 < nextcloud-18.0.4.tar.bz2
```
※`nextcloud-18.0.4.tar.bz2: OK` または ``nextcloud-18.0.4.tar.bz2: 完了` と表示されれば OK です

⑨ダウンロードしたNextcloudパッケージを展開します。

```
tar xf nextcloud-18.0.4.tar.bz2
```
⑩展開したNextcloudをWebサーバのドキュメントルートにコピーします。

```
sudo cp -R nextcloud/ /var/www/html/
```
⑪Nextcloudのデータディレクトリを作成します。

```
sudo mkdir /var/www/html/nextcloud/data
```
⑫Nextcloudのディレクトリ全体で読み書きができるように所有者情報を変更します。

```
sudo chown -R apache:apache /var/www/html/nextcloud
```

⑬Apacheを再起動します。

```
sudo systemctl restart httpd.service
```

⑭SELINUX を無効にします。

```
sudo setenforce 0

sudo sed -i s/SELINUX=enforcing/SELINUX=disabled/ /etc/selinux/config
```

⑮ブラウザからアクセスできるように、ファイアウォールの設定を変更します。

```
sudo firewall-cmd --permanent --zone public --add-service http

sudo firewall-cmd --reload
```

⑯ブラウザで http://(サーバのIPアドレス)/nextcloud にアクセスします。下のような画面が出ればOKです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316764/f4cb5c18-13ad-b947-f761-9d4978d1cc3c.png)
⑰初期ユーザー名、パスワードを決めて入力します。さらに「推奨アプリをインストール」のチェックは外しておきます。終わったら「セットアップを完了します」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316764/1ef47215-cf12-cf48-f9a9-c7d796222bf2.png)
⑱こんな画面が出ればNextcloudが動作しています。おめでとうございます！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316764/74f1327f-5fbc-ed0e-3e49-906722d4a066.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316764/d690f543-c067-a815-e762-ace53e950336.png)

# あとがき
Nextcloudはサーバー１つあれば気軽に試せますので、使い勝手とかいろいろ試してみてください。

# 更新履歴

* 2020/4/25: 初版。