Windows7で使用していた旧PCをUbuntuサーバーにしていろいろ使用テストをしていた時、Nextcloudを知った。
SambaによるNASよりは導入の設定や操作が楽なようだと思った。
RaspberryPiでも導入ができそうなので、関連した記事を検索・収集した後、導入を試みた。

参考記事
Nextcloudでクラウドストレージを作ってみる
https://tarufu.info/nextcloud-setup/

Raspberry Pi 4で64ビットNextcloudサーバーを構築してみました
https://denor.jp/raspberry-pi-4……

Raspberry Pi4で簡単おうちNextcloud外部公開まで
https://qiita.com/hiro2do/items/f8eed40acab713f20693

環境
RaspberryPi 4 Model B(4G)…Ubuntu20.04.3LTS(64bit)
HDD(40GB)…デスクトップ機内臓のHDDをSmartBoxでUSB-HDD化したもの

[Ⅰ]RaspberryPiの準備
1.microSDカードへのOS書き込み
Ubuntu20.04.3LTS(64bit)を書き込む…Raspberry Pi Imagerを使用

2.RaspberryPiの起動と設定
・PW設定…ubuntuから変更する(User ubuntu) …IPアドレスは。192.168.0.12/24
・hostname設定・確認…raspi6
sudo hostnamectl set-hostname raspi6
hostnamectl
・IPアドレス固定…/etc/netplan/99-netcfg.yaml を作成…詳細は、Ubuntuサーバーの6項目めの記事参照
eth0:192.168.0.44/24 、192.168.0.12/24(secandary)
wlan0:192.168.0.45/24
sudo netplan apply
・日本語キーボードに設定…詳細は、Ubuntuサーバーの6項目めの記事参照
sudo dpkg-reconfigure keyboard-configuration
・update、upgrade
・タイムゾーン設定・確認…必須です
sudo timedatectl set-timezone Asia/Tokyo
timedatectl

[Ⅱ]USB-HDDの接続とフォーマット
RaspberryPiの電源を一度落とし、USB-HDDを接続した後、再起動する。

1.Disk状態の確認
ubuntu@raspi6:~$ sudo fdisk -l
<前半部分表示省略>
ディスク /dev/sda: 37.28 GiB, 40020664320 バイト, 78165360 セクタ
Disk model: A
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
ディスクラベルのタイプ: dos
ディスク識別子: 0x3d6ca450

デバイス 起動 開始位置 最後から セクタ サイズ Id タイプ
/dev/sda1 2048 194559 192512 94M c W95 FAT32 (LBA)
/dev/sda2 194560 78165359 77970800 37.2G 7 HPFS/NTFS/exFAT

2.HDDのオートマウントおよび動作時の自動マウント autofsの利用
2-1 autofsインストール
ubuntu@raspi6:/$ sudo apt install autofs

2-2 autofs動作用設定と起動
# USB接続ストレージは/mediaディレクトリにマウントします。
# /etc/auto.master.d/usb.autofsファイル作成
echo "/media /etc/auto.usb" | sudo tee /etc/auto.master.d/usb.autofs
# /etc/auto.usbファイル作成
echo "hdd1 -fstype=ext4,rw :/dev/disk/by-uuid/"`sudo blkid /dev/sda1 | grep -o '\sUUID=\"[0-9a-f\-]*\"' | grep -o '[0-9a-f\-]*'` | sudo tee -a /etc/auto.usb
hdd1 -fstype=ext4,rw :/dev/disk/by-uuid/8ece3eac-b2fa-4b7d-bb92-5df9cf03fc4c
# autofsサービス有効化
sudo systemctl enable autofs --now
Synchronizing state of autofs.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable autofs
# 再起動して設定変更を反映
sudo reboot

2-3 再起動後のマウント確認
ubuntu@raspi6:~$ ls /media/hdd1
lost+found
ubuntu@raspi6:~$ df -h
Filesystem Size Used Avail Use% Mounted on
udev 1.9G 0 1.9G 0% /dev
<表示省略>
/dev/sda1 34G 49M 33G 1% /media/hdd1

[Ⅲ]Nextcloudのインストール
1.Nextcloudのインストール
ubuntu@raspi6:~$ sudo snap install nextcloud
nextcloud 22.2.3snap3 from Nextcloud? installed

2.Nextcloudの動作確認
2-1 サービスの提供確認
ubuntu@raspi6:~$ snap services
Service Startup Current Notes
lxd.activate enabled inactive -
lxd.daemon enabled inactive socket-activated
nextcloud.apache enabled active -
nextcloud.logrotate enabled inactive timer-activated
nextcloud.mdns-publisher enabled active -
nextcloud.mysql enabled active -
nextcloud.nextcloud-cron enabled active -
nextcloud.nextcloud-fixer enabled active -
nextcloud.php-fpm enabled active -
nextcloud.redis-server enabled active -
nextcloud.renew-certs enabled active -

2-2 他のPCからNextcloudにアクセス
ブラウザでhttp://<RaspberryPiのIPアドレス>
*Nextcloudの管理者ユーザーでログインする。(ユーザー名、パスワードを適当に決める)

3.USB-HDDのアクセス設定とデータ部分のHDDへの移動
3-1 外付けストレージのアクセス設定
ubuntu@raspi6:~$ sudo snap connect nextcloud:removable-media

3-2 データディレクトリを、外付けストレージにコピーし確認する
ubuntu@raspi6:~$ sudo cp -r /var/snap/nextcloud/common/nextcloud/data /media/hdd1/nextcloud_data
ubuntu@raspi6:~$ sudo ls -al /media/hdd1/nextcloud_data
total 20
drwxr-x--- 4 root root 4096 2月 12 16:12 .
drwxr-xr-x 4 root root 4096 2月 12 16:12 ..
-rw-r--r-- 1 root root 542 2月 12 16:12 .htaccess
-rw-r--r-- 1 root root 0 2月 12 16:12 .ocdata
drwxr-xr-x 8 root root 4096 2月 12 16:12 appdata_oct3sekfd03c
-rw-r--r-- 1 root root 0 2月 12 16:12 index.html
drwxr-xr-x 3 root root 4096 2月 12 16:12 (管理者名)

3-3 config.phpを編集
・元のファイルを config.php.org として残す
ubuntu@raspi6:~$ sudo cp /var/snap/nextcloud/current/nextcloud/config/config.php /var/snap/nextcloud/current/nextcloud/config/config.php.org
・config.phpの編集…39行目、datadirectoryを、/media/hdd1/nextcloud_dataに変更
ubuntu@raspi6:~$ sudo nano /var/snap/nextcloud/current/nextcloud/config/config.php

# 'datadirectory' => '/var/snap/nextcloud/common/nextcloud/data',  …#でブラインドする
'datadirectory' => '/media/hdd1/nextcloud_data',           …新規追加

・再起動し、設定変更を反映させる
ubuntu@raspi6:~$ sudo reboot

4.他のPCからNextcloudの管理画面にアクセスする
4-1 空き容量を確認…管理 システム
約28GB(MicroSDCard) ⇒ストレージ: 2 空き容量: 32.2 GB  …ストレージがmicroSDからHDDに変わっている

[Ⅳ]外部ネット空間からも含めて、ドメイン名でアクセス可能にしていく

参考記事
ラズパイでNextCloudサーバを動かす
https://raspberrypi.mongonta.com/howto-install-nextcloud-raspberrypi-with-snap/

1.ドメインの取得およびDDNSの設定
MyDNS.JPを利用して、独自ドメインを取得した。
独自ドメインの取得とDDNSクライアントの実行については、下記参照。

2.信頼できるドメインの設定
・現在の設定の確認
ubuntu@raspi6:~$ sudo nextcloud.occ config:system:get trusted_domains
192.168.0.44
・信頼できるドメインの追加と確認
ubuntu@raspi6:~$ sudo nextcloud.occ config:system:set trusted_domains 2 --value=(ドメイン名):81
System config value trusted_domains => 2 set to string (ドメイン名):81

ubuntu@raspi6:~$ sudo nextcloud.occ config:system:set trusted_domains 3 --value=localhost
System config value trusted_domains => 3 set to string localhost

ubuntu@raspi6:~$ sudo nextcloud.occ config:system:get trusted_domains
192.168.0.44
(ドメイン名):81
localhost

3.ファイアーウォール設定
サーバーへのアクセス制御を行う。
但し、現在Webサーバーを公開している。port80,443を使用しているため、Nextcloud用として、port81,444を使うことを考える。

ubuntu@raspi6:~$ sudo ufw allow 22,80,81,443,444,3389/tcp
Rules updated
Rules updated (v6)
ubuntu@raspi6:~$ sudo ufw status
Status: inactive
ubuntu@raspi6:~$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y …ssh使用中のため y を入力する
Firewall is active and enabled on system startup
ubuntu@raspi6:~$ sudo ufw status
Status: active

To Action From
-- ------ ----
22,80,81,443,444,3389/tcp ALLOW Anywhere
22,80,81,443,444,3389/tcp (v6) ALLOW Anywhere (v6)

4.ポート開放
ルーターでport81、444を、Nextcloudサーバーに開放します。
*ポート開放については、使用中のルーターのマニュアルに従うこと。

5.スマートフォンからのアクセス
スマートフォンのWiFiをOffにして、外部インターネット空間からの接続状態とする。
5-1 ドメイン名でのアクセス
・Nextcloudアプリによるアクセス…Nextcloudアプリをインストールした。
接続先:(ドメイン名):81 …接続不可。ホストが見つからない。 …おかしい?

*下記のように、Nextcloudの使用するポートの変更を実行していなかった。

5-2 Nextcloudサーバーの接続ポート変更の処理
ubuntu@raspi6:~$ sudo snap set nextcloud ports.http=81 ports.https=444
その後WiFi断のスマホから、Nextcloudアプリを使用して、(ドメイン名):81で接続し、管理者ユーザーでログインできた。

************************************************************************************************************************************************
[Ⅴ]HDDの変更
接続するUSB-HDDを大容量のものに変更し、本格使用している。
WDデスクトップHDD 4TB USB-3.0 WDBBKG0040HBK-JESN

HDDの接続を入れ替え、[Ⅱ]項以降と同様の操作を行った。
但し、HDDを交換し再起動した時、システムがストップしてしまった。
いろいろ検討の結果、原因は、
・二つのUSB3.0コネクタに、HDDおよび無線接続のKeyboard+Mouseを接続していた
・上記のUSBコネクタをUSB3.0、USB2.0に接続すれば、問題なく動作した
40GBのHDDでは問題なかったが、大容量のHDDの場合は、問題が発生するようだ。