なんか作りたい

PCとかオーディオとか

NASと録画鯖の一元化 -> CentOS7にNextCloudを立てたお話

近頃SynologyのNASを譲ってもらったので使っていました。
ソフトウェア面が最高で、一般の方にも優しい設計。
ファイルのバックアップも同期も簡単で、
VPNやらドメイン設定まで簡単に出来てしまった。
素晴らしいと思います。

ただ、やはり別途鯖を立てることになる関係上、否応なく消費電力が増えてしまう。
あと、やはりCPUが貧弱なので大量のメディアを扱うとなると力不足。
というか、我が家にはRyzen 7な録画鯖があるのにこれを使わないでどうする?!

ということでNextCloudを立ててNASの機能をある程度録画機に移した。
f:id:s_sef:20180426120949p:plain


参考:
Synology DS216j NAS HDDx2 消費電力 18~22W
Ryzen7 1800X 低消費電力化Tune (PT3+SSDx3) 消費電力 34~37W




最終的な構成

[CentOS7] MariaDB, PHP 7.x, Apache 2.4 with mod_php module


1. 環境構築

ここを参考に進めればOK
www.rosehosting.com
※CentOS7

yum -y update
yum -y install mariadb mariadb-server
systemctl start mariadb
systemctl enable mariadb

mysql_secure_installation

Enter current password for root (enter for none): ENTER
Set root password? [Y/n] Y
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y

mysqlの設定をおこなう。
ここでは以下の項目を設定する。
Database user: nextclouduser
Database password: YOURPASSWORD
Database name: nextcloud
host: localhost

mysql -u root -p

MariaDB [(none)]> CREATE DATABASE nextcloud;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextclouduser'@'localhost' IDENTIFIED BY 'YOURPASSWORD';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> \q

あとはApacheのインストール。

yum install httpd -y
systemctl start httpd.service
systemctl enable httpd.service

※私の場合Pritunlと競合してしまった。
※lsof -i で各プログラムが使用しているポートを確認できる。
※以下を実行して回避。firewallの設定も忘れずに。

pritunl set app.server_port 444
pritunl set app.redirect_server false
systemctl restart mongod pritunl


2. PHP7導入

rpm -Uvh http://rpms.remirepo.net/enterprise/remi-release-7.rpm
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
yum-config-manager --enable remi-php70
yum -y install php php-mysql php-pecl-zip php-xml php-mbstring php-gd

vi /etc/php.ini
post_max_size = 20000M
upload_max_filesize = 20000M

systemctl restart httpd


3. Install Nextcloud

以下から最新版をチェック。
nextcloud.com

wget https://download.nextcloud.com/server/releases/nextcloud-13.0.1.zip
unzip nextcloud-13.0.1.zip -d /var/www/html/
chown -R apache:apache /var/www/html/nextcloud/

あとはhttps://xxx.xxx.xxx.xxx/NextCloud/にアクセス。
任意のユーザー名とパスワードを入力。
データベースにMySQL or MariaDBを選択して以下を入力。
Database user: nextclouduser
Database password: YOURPASSWORD
Database name: nextcloud
host: localhost
で完了!!

初期状態では機能が制限されているので、
右上のメニューのアプリから機能を追加する。
f:id:s_sef:20180426115200p:plain
2018年4月現在日本語対応はイマイチで、
PDFビュアーは一部日本語フォントに対応していない模様。

同期ソフトは使いやすく、
昔のowncloudみたいにCPUを専有するようなこともなかった。
f:id:s_sef:20180426114108p:plain


なお、私は例のごとく仮想マシン上に構築していた都合上、
Dataフォルダの場所をホスト側に移動した。

gpasswd -a apache vboxsf
vi /var/www/html/nextcloud/config/config.php

    'datadirectory' => '/media/sf_xxx',

※追記: 一部追加機能がPHP7.1を要求してきたのでPHPアップグレード。

systemctl stop httpd.service
yum install php72 php72-php yum-utils
yum-config-manager --enable remi-php72
yum update
php -v
systemctl start httpd.service

以上です。
お疲れ様でした。

追記:
頻繁に読み書きするデータの同期でエラーが出た。

20XX/XX/XX XX:XX:XX, Filename, /Nextcloud,Error transferring https://xxx/remote.php/dav/files/xxx/Filename - server replied: Locked

原因はファイルロックとのこと。
とりあえず下記を参考にデータベースを修正。
Nextcloudのファイルロック解除手順
とりあえず同期できるようになったが、今後も同じことが起こるようなら対策を考える。

vi /var/www/html/nextcloud/config/config.php
'maintenance' => true,

mysql -u root -p
use nextcloud
delete from oc_file_locks where 1;
exit

vi /var/www/html/nextcloud/config/config.php
'maintenance' => false,

以上。