ついカッとなって移行。
- ●NASに載せていたNextCloudのバージョンアップがめんどくさい
- ●NextCloud VMのダウンロード
- ●root権限作業
- ●固定IP
- ●USB HDD追加
- ●NextCloudのカスタマイズ
- ●データディレクトリの変更
- ●hosts.denyの編集
- ●(おまけ)アップデート(CLI)
- ●あとがき
●NASに載せていたNextCloudのバージョンアップがめんどくさい
NextCloudはこれまでNASに載せていたのですが、環境が特殊なためバージョンアップ(特にメジャーアップ)が事実上不可能でした。
NextCloudにを載せているNASにXigmaNAS(しかもEmbedded)を利用している関係上、PHPを始めとしたパッケージを個別にバージョンアップできません。
このあたりを解決するためVMとして切り出すことに。
幸い、2019年末に導入したM75q-1のおかげで仮想化リソースには余裕があるため、気軽にVMを構築して対応します。
システムストレージはVMのIOPSを稼ぐためSSDにしているのですが、このVMFS領域をNextCloudにするのはもったいないので、別途USB3.0接続のHDDを用意し、ESXiの機能であるUSBパススルーにてVMに接続して利用することを目指します。
今回は自宅で余っていたHDDとUSB外付けケースを利用しましたが、USB接続のストレージなら何でも良いかと思います。
●NextCloud VMのダウンロード
まずは公式よりサーバーパッケージを取得します。
Applianceより「Download the VM」をクリックしovaイメージを取得します。
ダウンロードしたovaをデプロイ後、VMのハードウェア構成を変更し、
・USB3.0コントローラ
・接続したUSB3.0 HDD
を追加します。
設定後VMのパワーオンを行い、初期セットアップを開始します。
ID/初期パスワード:ncadmin/nextcloudを入力しセットアップを開始します。
基本的には指示に従っていくだけです。
タイムゾーンはAsia/Tokyoを指定。
この画面でncadminアカウント(CLIの管理者アカウント)のパスワードの変更を行います。
次にNextCloudの管理者アカウント(NextCloudのWeb画面からログインする管理者アカウント)の設定を行います。アカウント名とパスワードを設定します。
インストールプロセスの中で最新版のチェックが行われ、インストール時点での最新版がインストールされます。
このときに表示されるIPアドレスはDHCPにより取得されたものになります。
インストール後再起動が行われ、ログイン画面が行われます。
ncadmin/セットアップで設定したパスワード
でNextCloud VMへ再度ログインします。
●root権限作業
移行の作業はroot権限で作業を行うため、以下コマンドで特権昇格しておきます。
sudo -i
●固定IP
まずは固定IPに変更します。
・apache2停止
service apache2 stop
固定IPは以下ファイルを作成し、ファイルに下記の内容を追記します。
/etc/netplan/99_config.yaml
network:
version: 2
renderer: networkd
ethernets:
ens32:
addresses: [192.168.10.8/24]
gateway4: 192.168.10.254
nameservers:
addresses: [192.168.10.1,192.168.10.254]
optional: true
注意点は「ethernets」「addresses」「nameservers」等複数形の表現ということでしょうか。
netplan applyコマンドにて適用し、ifcionfigコマンドにて適用されていることを確認。
●USB HDD追加
次はNextCloudのデータディレクトリに利用するHDDをマウントします。
・HDDのファイルシステム作成
root@nextcloud:/var/log# fdisk -l
(略)
Disk /dev/sdc: 232.91 GiB, 250059350016 bytes, 488397168 sectors
Disk model: 10AS
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
まずはfdiskコマンドでデバイスを確認します。
root@nextcloud:/var/log# fdisk /dev/sdc
Welcome to fdisk (util-linux 2.34).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0x3c5fc9b4.Command (m for help): p
Disk /dev/sdc: 232.91 GiB, 250059350016 bytes, 488397168 sectors
Disk model: 10AS
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x3c5fc9b4
Command (m for help): n
Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1):(Enter)
First sector (2048-488397167, default 2048):(Enter)
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-488397167, default 488397167):(Enter)Created a new partition 1 of type 'Linux' and of size 232.9 GiB.
Command (m for help): p
Disk /dev/sdc: 232.91 GiB, 250059350016 bytes, 488397168 sectors
Disk model: 10AS
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x3c5fc9b4Device Boot Start End Sectors Size Id Type
/dev/sdc1 2048 488397167 488395120 232.9G 83 Linux
Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
root@nextcloud:/var/log# mkfs.ext4 /dev/sdc1
mke2fs 1.45.5 (07-Jan-2020)
Creating filesystem with 61049390 4k blocks and 15269888 inodes
Filesystem UUID: 8d817566-836a-4ec6-a821-8396e0a53b0e
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872Allocating group tables: done
Writing inode tables: done
Creating journal (262144 blocks):
done
Writing superblocks and filesystem accounting information: done
このあたりはお好みで良いと思います。
・マウント
マウントポイントとして/mnt/ext-hdd/を作成します。
所有権もNextCloud経由のため、www-dataへ変更。
root@nextcloud:~# cd /mnt/
root@nextcloud:/mnt# mkdir ext-hdd
root@nextcloud:/mnt# ls -la
total 16
drwxr-xr-x 4 root root 4096 Jan 10 12:16 .
drwxr-xr-x 20 root root 4096 Oct 21 22:01 ..
drwxr-xr-x 2 root root 4096 Jan 10 12:16 ext-hdd
drwxrwx--- 5 www-data www-data 4096 Jan 9 17:23 ncdata
root@nextcloud:/mnt# chown www-data:www-data ext-hdd/
root@nextcloud:/mnt# ls -la
total 16
drwxr-xr-x 4 root root 4096 Jan 10 12:16 .
drwxr-xr-x 20 root root 4096 Oct 21 22:01 ..
drwxr-xr-x 2 www-data www-data 4096 Jan 10 12:16 ext-hdd
drwxrwx--- 5 www-data www-data 4096 Jan 9 17:23 ncdata
mountコマンドでさくっとマウント。
root@nextcloud:/mnt# mount /dev/sdc1 /mnt/ext-hdd/
・自動マウントの設定
エラーなくマウントができたことを確認したら、次は起動時に自動マウントを行うように設定します。
まずは/dev/disk/by-uuid/を調べ、USB-HDDのUUIDを調べます。
root@nextcloud:/mnt/ext-hdd# ls -la /dev/disk/by-uuid/
total 0
drwxr-xr-x 2 root root 100 Jan 9 18:53 .
drwxr-xr-x 7 root root 140 Jan 9 18:52 ..
lrwxrwxrwx 1 root root 10 Jan 9 18:53 54bc09e5-b06a-4898-93af-a6f21xxxxxxx -> ../../sda2
lrwxrwxrwx 1 root root 10 Jan 9 18:53 76b35236-87de-4fc6-b545-04109xxxxxxx -> ../../dm-0
lrwxrwxrwx 1 root root 10 Jan 9 18:53 8d817566-836a-4ec6-a821-8396exxxxxxx -> ../../sdc1
UUIDが判明したので、/etc/fstabに記述します。
#USB-HDD automount
/dev/disk/by-uuid/8d817566-836a-4ec6-a821-8396exxxxxxx /mnt/ext-hdd ext4 defaults 0 0
ここまで終わったら、一旦再起動し、固定IPとHDDの自動マウントが適切に設定されているかを一度確認しておくとよいかも。
●NextCloudのカスタマイズ
お次はNextCloudの設定をカスタマイズしていきます。
・証明書の入れ替え
VMインストール時の初期証明書は以下の設定ファイルに記載があります。
/etc/apache2/site-available/nextcloud_tls_domain_self_signed.conf
実際には以下となっていました。
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
今回はプライベートCALから発行した証明書を用いるので、過去やったのと同じ方法で証明書と秘密鍵を作成します。(昨今の時勢を考えると、1年の有効期限でも良いかもしれません)
出来上がった証明書はscpでVMへ転送し、上記/etc/ssl/配下に配置、設定ファイルを変更しておきます。
・trusted_domainにIPとFQDNの追加
NextCloudはアクセスしたURLが設定URLと違う場合、正常に表示することができないため、config内のtrusted_domainsセクションに追記をします。
/var/www/nextcloud/config/config.php 内
'trusted_domains' =>
array (
0 => 'localhost',
1 => '192.168.10.8',
2 => 'nextcoud.yourdomain.test',
3 => 'nextcloud2.yourdomain.test',
●データディレクトリの変更
NextCloudのデータが保存されるディレクトリを変更します。
config.php内にデータディレクトリの場所が記載されているため、これを変更します。
・標準の場所
'datadirectory' => '/mnt/ncdata',
標準では/mnt/ncdata/にあるようです。
・USB HDDへコピー
場所がわかったので、USB-HDDへデータをコピーし、config.phpの記載を変更ます。
root@nextcloud:/mnt# ls
ext-hdd ncdata
root@nextcloud:/mnt# cd ncdata/
root@nextcloud:/mnt/ncdata# ls -la
total 36
drwxrwx--- 5 www-data www-data 4096 Jan 9 17:23 .
drwxr-xr-x 4 root root 4096 Jan 10 12:16 ..
drwxr-xr-x 8 www-data www-data 4096 Jan 22 22:23 appdata_ocru8ytkzh2p
-rw-rw-r-- 1 www-data www-data 0 Oct 21 22:07 audit.log
-rw-r--r-- 1 root www-data 542 Oct 21 22:07 .htaccess
-rw-rw-r-- 1 www-data www-data 0 Jan 9 17:25 index.html
drwxr-xr-x 4 www-data www-data 4096 Jan 22 22:23 makoro-master
-rw-rw-r-- 1 www-data www-data 0 Jan 9 17:25 .ocdata
-rw-rw-r-- 1 www-data www-data 10870 Jan 9 17:25 updater.log
drwxrwxr-x 4 www-data www-data 4096 Jan 9 17:25 updater-ocru8ytkzh2p
root@nextcloud:/mnt/ncdata# cp -a . /mnt/ext-hdd/
root@nextcloud:/mnt/ncdata# cd ../ext-hdd/
root@nextcloud:/mnt/ext-hdd# ls -la
total 36
drwxrwx--- 5 www-data www-data 4096 Jan 9 17:23 .
drwxr-xr-x 4 root root 4096 Jan 10 12:16 ..
drwxr-xr-x 8 www-data www-data 4096 Jan 22 22:23 appdata_ocru8ytkzh2p
-rw-rw-r-- 1 www-data www-data 0 Oct 21 22:07 audit.log
-rw-r--r-- 1 root www-data 542 Oct 21 22:07 .htaccess
-rw-rw-r-- 1 www-data www-data 0 Jan 9 17:25 index.html
drwxr-xr-x 4 www-data www-data 4096 Jan 22 22:23 makoro-master
-rw-rw-r-- 1 www-data www-data 0 Jan 9 17:25 .ocdata
-rw-rw-r-- 1 www-data www-data 10870 Jan 9 17:25 updater.log
drwxrwxr-x 4 www-data www-data 4096 Jan 9 17:25 updater-ocru8ytkzh2p
コピー後、所有権が問題ないことを確認してからapache2を起動し、問題なくNextCloudが利用できることを確認して終了です。
●hosts.denyの編集
今回は宅外からもアクセスするので、ルータで穴をあけると同時にhosts.denyも設定しておきます。
webサービスでさっくりと雛形を作り、証明書と同様にscpでアップロードし、/etc/hosts.deny として展開します。
●(おまけ)アップデート(CLI)
GUIからアップデートができない場合、CLIからアップデートすることで詳細なエラーメッセージが出てくるので試してみるとよいかも。
パーミッションの関係でwww-dataユーザでないと実行できない点に注意が必要です。
root@nextcloud:/var/www/nextcloud# sudo -u www-data php updater/updater.phar
●あとがき
ついカッとなって構築し始めたVM版ですが、久しぶりにLinuxに触れるためのリハビリには最適でした。
これでホストのバージョンに振り回されることもないし、構築手法がわかったら再作業するのは容易なので、またバージョン追従ができなくなったらVMを立て直す手法で進めたいと思います。