nextCloudでオンラインストレージを構築する
-
Author: uncho
Google DriveやOne Drive等、オンラインストレージはPCからもモバイル端末からもアクセスできてとても便利ですが、デフォルトの容量が少なくて直ぐに上限に達してしまいます。ここで素直にお金を払って容量アップすれば良いのですが少し足掻いてnextCloudを構築してみました。
固定IPの関係もあり本来ならCloudやVPS上で構築するのですが、自宅はIPv6化したのでFirewallで穴あけしておけばインターネットからもアクセス出来るようになったので自宅に構築します。
かんたんに概要を説明すると、OSはCentOS7を使用、nextCloudはサイトから最新版をダウンロードしてきます。CentOSのRepoからインストールできるPHPではバージョン古くてnextCloudはサポートしていない様子なので、Remi’s RPMからPHP7.1をインストールします。
必須パッケージのインストール
Remi’s RPMからPHP7.1と関連RPMをインストールします。なおEPELのRPMも必要となります。
yum install epel-release
yum install https://rpms.remirepo.net/enterprise/remi-release-7.rpm
yum install --enablerepo=remi-php71 php php-mysql php-gd php-mbstring php-intl php-mcrypt php-imagick php-xml php-pecl-zip
その他、nextCloudにはMariaDBが必要なのでインストールします。
yum install mariadb-server unzip
PHPの設定
デフォルト設定だとファイルアップロード等で制限があるので、nextCloudが動くようにPHPを設定します。
vi /etc/php.ini
upload_max_filesize = 100M
post_max_size = 100M
date.timezone = Asia/Tokyo
PHPからMariaDBが利用できるように設定します。
vi /etc/php.d/20-mysqlnd.ini
[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
MariaDBの設定と起動、DB作成
インストールしたMariaDBを起動します。
systemctl start mariadb
systemctl enable mariadb
rootパスワードの設定や外部からrootでアクセス出来ないようにセキュリティを強化するため、mysql_secure_installationも実行してきます。
mysql_secure_installation
次にnextCloudが使用するDatabaseをSQLで作成します。mysql -u root -p
を実行して下記SQLを投入。ここではDB名はnextCloud
、パスワードはPassword
としていますが、パスワードは推測しづらいものを設定しましょう。
CREATE DATABASE IF NOT EXISTS nextcloud;
GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextcloud'@'localhost' IDENTIFIED BY 'Password';
WEBサーバ(Apache)の設定と起動
nextCloud用の設定として下記Configファイルを作成します。
vi /etc/httpd/conf.d/nextcloud.conf
Alias /nextcloud "/var/www/nextcloud/"
<Directory /var/www/nextcloud/>
Options +FollowSymlinks
AllowOverride All
<IfModule mod_dav.c>
Dav off
</IfModule>
SetEnv HOME /var/www/nextcloud
SetEnv HTTP_HOME /var/www/nextcloud
</Directory>
Apacheを起動します。
systemctl start httpd
systemctl enable httpd
nextcloudのインストール
ここまででnextcloudが動く環境が整ったのでnextcloudをインストールします。といってもファイルをディレクトリに展開するのみです。なおここではnextcloud-12.0.2
を使用していますが、構築時点での最新版を用意しましょう。
curl 'https://download.nextcloud.com/server/releases/nextcloud-12.0.2.zip' -o nextcloud-12.0.2.zip
unzip nextcloud-12.0.2.zip -d /var/www/
chown apache:apache -R /var/www/nextcloud/
nextcloudの設定
ここまではCLIで作業しましたがnextcloudの設定はブラウザ上で行います。画面キャプチャし忘れたので公式サイトのAdmin Manualを参照して下さい。特に難しいところは無く、adminアカウントの作成とDBの指定のみです。
http://[IPアドレス]/nextcloud/
まとめ
nextcloudはOSSですが、OSSにありがちな、UIが使いづらかったり、デザインが垢抜けてないとかが無くて結構良いですね。
次はリバースプロキシ経由でのnextcloud利用について検証してみます。リバースプロキシをするならHTTPS化もチャレンジしてみます。