64ビットOSが利用可能なRaspberry Pi 3でNextcloudサーバを構築したいと思います。
※20.3.22追記:
Raspberry Pi 4の場合、こちらの新しい記事をお勧め致します。
以下、古い記事になります。
目次
Raspberry Pi 3でNextcloudサーバ簡単構築 snapd版
対応機種
64ビットaarch64対応のRaspberry Pi 3 ファミリーが対象になります。64ビット版を使用する理由は、2GByte・4GByte以上のファイルを扱いたいためです。
使用するOS
2018年5月にリリースされましたFedora 28のaarch64版を使用しました。
32ビットのarmv7l版もsnapを利用できますが、2GB以上のファイルを扱うことができないようです。詳細はこちらの記事になります。
Nextcloudサーバ構築手順 snapd版
- こちらの記事の手順に従い、Fedoraインストールします。
- コンソールまたはSSHでrootでログインします。
- ホスト名を設定します。IPアドレスを固定にする場合はその設定も行います。
- 外付けUSB HDDを接続する場合、/var/snapへマウントすることでデータをHDDへ格納できるようです。詳細は後述致します。
- snapdをインストールします。
dnf install snapd
- snapでnextcloudをインストールします。
snap install nextcloud
- ファイアウォールの設定を変更します。
firewall-cmd --permanent --add-service=http firewall-cmd --permanent --add-service=httpd firewall-cmd --reload
これで他のPCやスマートフォンからアクセスできるようになりました。
- 他のPCからWebブラウザでアクセスします。
http://<Raspberry PiのIPアドレス>
- 管理用のユーザ名とパスワードを入力して、「セットアップを完了します」をクリックします。
- nextcloudのインストールが完了しました。
2GB、4GB以上のファイルを扱えるか
試しに6.3GBのファイルをNextcloudクライアント・アプリケーション経由でアップロードしてみました。
microSDカードで動かしましたので、アップロードとファイルの結合に時間が掛かりましたが、確かにアップロードできました。
このような感じで、確かにRaspberry Piのsnap環境に6GB以上のファイルがアップロードされています。
外付けUSB HDDを接続する場合
パーティションの作成
cfdiskでデータ用のext4パーティションと、swapパーティションを作成しました。
cfdisk /dev/sda
mkswap /dev/sda1
mkfs.ext4 /dev/sda2
swapサイズはmicroSDカードのものと同じ512MBで作成しました。数日間動かしてみましたが、特に問題無いようです。
swap領域の変更
/etc/fstabを編集して既存の(microSDカードの)swapを無効にして、HDDのswap領域を有効にしました。
sed -e 's/^\(.*swap\)/#\1/' /etc/fstab
# 問題なくswap行がコメントアウトされていれば-iで反映
sed -i 's/^\(.*swap\)/#\1/' /etc/fstab
blkid /dev/sda1 | grep -o -e '\sUUID\=\"[0-9a-f\-]*\"'|tee -a /etc/fstab
vi /etc/fstab
UUID=<swap領域のUUID> swap swap defaults 0 0
再起動後、swapが正しく変更されているか確認します。
swapon -s
手動でswapを変更する場合、swapon、swapoffコマンドを使用します。
データディレクトリの移動
nextcloud-snapページを拝見しますと
snapのremovable-mediaスロットを使用すると、/mediaディレクトリにアクセス可能となり、nextcloudのデータディレクトリを移動できる記述があります。
sudo snap connect nextcloud:removable-media
/mediaに外付けUSB HDDをマウントすれば、データをそちらに入れらるはずですが・・・Raspberry Pi 3でaarch64版Fedora 27とFedora 28で試してみましたが、どうもうまく行きませんでした。
代わりに、snapの実行ディレクトリ(/var/snap)に外付けHDDをマウントしてそちらにデータが入るようにしてみました。
以下の手順は、nextcloudの再インストールになりますのでご注意下さい。
- Nextcloudとsnapdを停止します。
snap stop nextcloud systemctl stop snapd.socket
- /var/snapディレクトリをリネームします。
mv /var/snap /var/snap.orig
- 外付けUSB HDDを/var/snapにマウントします。
mkdir /var/snap vi /etc/fstab
UUID=<外付けHDDパーティションのUUID> /var/snap ext4 defaults 1 2
mount /var/snap
- リネームした/var/snapのデータを外付けHDDへ移動します。
mv /var/snap.orig/* /var/snap rmdir /var/snap.orig
- snapdを再起動後、nextcloudを再インストールします。
systemctl start snapd.socket snap remove nextcloud snap install nextcloud
これでNextcloudサーバにファイルをたくさん入れることができます。
snaps便利ですね。
インストールは簡単でしたが、topやpsコマンドでプロセスを見てみると、LAMP環境(httpd + mysql + php-fpm)で動作していて、システム構成もしっかりしています。
ファイルサイズの制限もなく、簡単かつ実用的なシステムかと思います。
サーバの設定変更はsnapコマンド、Nextcloudのメンテナンスは、nextcloud.occまたはsnap run nextcloud.occコマンドで行うかと思います。
他のコマンド等、詳細はこちらになります。
さあ。いろいろと試してみましょうか!