Think threshold

中の人のIYHにいたる顛末と購入レビュー。ときどき自宅システム構築備忘録。

NextcloudをNASと分離して便利に。(NextCloud VMを利用する)

ついカッとなって移行。

 

NASに載せていたNextCloudのバージョンアップがめんどくさい

NextCloudはこれまでNASに載せていたのですが、環境が特殊なためバージョンアップ(特にメジャーアップ)が事実上不可能でした。

NextCloudにを載せているNASにXigmaNAS(しかもEmbedded)を利用している関係上、PHPを始めとしたパッケージを個別にバージョンアップできません。

このあたりを解決するためVMとして切り出すことに。

 

makoro.hatenablog.jp

 

幸い、2019年末に導入したM75q-1のおかげで仮想化リソースには余裕があるため、気軽にVMを構築して対応します。

makoro.hatenablog.jp

システムストレージはVMのIOPSを稼ぐためSSDにしているのですが、このVMFS領域をNextCloudにするのはもったいないので、別途USB3.0接続のHDDを用意し、ESXiの機能であるUSBパススルーにてVMに接続して利用することを目指します。

今回は自宅で余っていたHDDとUSB外付けケースを利用しましたが、USB接続のストレージなら何でも良いかと思います。

 

 

 

●NextCloud VMのダウンロード

nextcloud.com

まずは公式よりサーバーパッケージを取得します。

Applianceより「Download the VM」をクリックしovaイメージを取得します。

f:id:makoro2_0:20220109152156p:plain


ダウンロードしたovaをデプロイ後、VMのハードウェア構成を変更し、

USB3.0コントローラ

・接続したUSB3.0 HDD

を追加します。

f:id:makoro2_0:20220130182002p:plain

f:id:makoro2_0:20220130183529p:plain



f:id:makoro2_0:20220109165551p:plain

設定後VMのパワーオンを行い、初期セットアップを開始します。

 

f:id:makoro2_0:20211115144908p:plain

ID/初期パスワード:ncadmin/nextcloudを入力しセットアップを開始します。

f:id:makoro2_0:20220109170500p:plain


基本的には指示に従っていくだけです。

f:id:makoro2_0:20211115145034p:plain

f:id:makoro2_0:20211115145223p:plain

タイムゾーンはAsia/Tokyoを指定。

 

f:id:makoro2_0:20220109171121p:plain

f:id:makoro2_0:20220109171213p:plain

この画面でncadminアカウント(CLIの管理者アカウント)のパスワードの変更を行います。
f:id:makoro2_0:20220109171548p:plain

f:id:makoro2_0:20220130184128p:plain

次にNextCloudの管理者アカウント(NextCloudのWeb画面からログインする管理者アカウント)の設定を行います。アカウント名とパスワードを設定します。

f:id:makoro2_0:20220109172321p:plain

f:id:makoro2_0:20220109172906p:plain

インストールプロセスの中で最新版のチェックが行われ、インストール時点での最新版がインストールされます。

このときに表示される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コマンドにて適用されていることを確認。

f:id:makoro2_0:20220123174718p:plain

 

linuxfan.info

 

●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: 0x3c5fc9b4

Device     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.

 

パーティションを作成したのであとはext4にしておきます。

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, 23887872

Allocating 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年の有効期限でも良いかもしれません)

makoro.hatenablog.jp

 

出来上がった証明書は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

 

denor.jp

 

コピー後、所有権が問題ないことを確認してからapache2を起動し、問題なくNextCloudが利用できることを確認して終了です。

 

 

●hosts.denyの編集

今回は宅外からもアクセスするので、ルータで穴をあけると同時にhosts.denyも設定しておきます。

www.countryipblocks.net

 

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を立て直す手法で進めたいと思います。