Raspberry Pi 4でのnextcloud構築方法

nextcloud

約 14 分で読めます。

Raspberry Pi 4でクラウドストレージであるnextcloudを構築しました!

nextcloudを構築したいな!
Raspberry Piなら電気代などメンテナンスコストが低くて良さそう!
Webサーバーなど必要なものをミスなくセットアップできるかな?

こんな疑問を解決します。

nextcloudとは

Nextcloud
Nextcloud is the most deployed on-premises file share and collaboration platform. Access & collaborate across your devices. Your data remains under your control...

nextcloudって単語、初めて聞いたよ?
nextcloudってなに?

ヨコヤマ
ヨコヤマ

nextcloudは、クラウドストレージソフトウェアの一つです!
Google DriveやOneDriveと同じようなソフトですね。

ただ、Google DriveではGoogleが、OneDriveではMicrosoftが、というように運用者がいますが、nextcloudはオフィシャルな運用者がいません。

Google Driveの場合



nextcloudの場合



従って、nextcloudを使う場合は自分でnextcloudを動かすか、誰かが稼働させているnextcloudに相乗りさせてもらってデータを保存することになります。

自分でnextcloudを稼働させた場合、管理も自分で行うことになります。
ですので、開始時だけでなく、運用中もそれなりの専門的な知識が必要となります。

メリット・デメリットを簡単にまとめると以下です。

方式メリットデメリット
Google Drive/OneDrive導入、管理が楽
小容量なら維持コストが安い
データのバックアップを取るのが大変
やめるときのデータ回収が大変
nextcloudデータ自体を自分で管理できる
すぐやめられる
大容量なら維持コストが安い
自分でHDD/SSDなどの用意が必要
導入・管理に専門的な知識が必要



ここで各方式での維持コストについて触れておきます。
 ストレージ容量を10GB100GB1000GBの3通り
 固定IPアドレス代は1200円/月
 nextcloudはRaspberry Pi 4上に構築
 nextcloud方式でのストレージ購入費は0円
としたときの各方式での維持コストは以下の通りです。

容量Google Drive方式nextcloud方式
10GB無料電気代:約60円
固定IPアドレス代:1200円
合計:1260円
100GB250円
1000GB1300円(※)
※2TB時のプランを参考にしました。


固定IPアドレス代が大きいな🤔

この1200円という価格は、ヨコヤマが契約しているso-netを参考にしています。
ですので、もっと安い業者から固定IPアドレスを買えれば安くなります

別の見方をすれば、月数百円の差になります。
初期コストはあるものの、週末の缶ビールを1本減らすだけでいいのであれば導入の価値はあるのではないでしょうか?

導入手順

ではここから実際の導入手順です。
大きく以下の通りとなります。
 ※IPアドレスなどはヨコヤマの環境値としています。
 ・Raspberry PiのIPアドレスを固定にする
 ・Webサーバーのインストール
 ・nextcloudのインストール
 ・データベースのインストール
 ・データベースとnextcloudとの紐付け
 ・一般ユーザーの作成

システム構成は以下の通りです。

Raspberry PiのIPアドレスを固定にする

こちらの記事で紹介したセットアップ方法ではIPアドレスがDHCPでの自動割当となります。
そのため、IPアドレスが変わる可能性があります。
これを避けるため、IPアドレスを固定値にします。

/etc/dhcpcd.conf末尾に以下を追記しましょう。

interface wlan0
static ip_address=192.168.1.20/24
static routers=192.168.1.1
static domain_name_servers=8.8.8.8

DNSはGoogleのものである8.8.8.8を指定しました。
こちらもプロバイダーから指定のものがあればそれを入れてください。
ルーターのIPアドレスを入れるでもいいと思います。

Webサーバーのインストール

nextcloudはPHPで実装されています。
ですので、WebサーバーとPHP実行環境が必要です。
今回は定番であるapache2+modphpで対応します。

以下コマンドでnextcloudが必要とするPHPのエクステンション含めインストールできます。

pi@raspberrypi:~ $ sudo apt install apache2 libapache2-mod-php php-mysql php-zip php-xml php-mbstring php-gd php-curl 

nextcloudのインストール

nextcloudについては今のところaptでインストールできなさそうです。
そのため、公式サイトからzipをダウンロードしてapacheの公開ディレクトリに展開します。

以下のコマンドを実行しましょう。

# 最新版をダウンロード
pi@raspberrypi:~ $ wget https://download.nextcloud.com/server/releases/nextcloud-20.0.1.zip

# apache公開ディレクトリに移動
pi@raspberrypi:~ $ cd /var/www/html/

# nextcloudを/var/www/html/nextcloud/に展開
pi@raspberrypi:~ $ sudo unzip /home/pi/nextcloud-20.0.1.zip

# apacheから読み書きできるように所有権を変更
pi@raspberrypi:~ $ sudo chown -R www-data:www-data nextcloud

↓のように/var/www/html/nextcloud/がwww-data:www-dataで存在していればOKです。

pi@raspberrypi:~ $ ls -l /var/www/html/
total 16
-rw-r--r-- 1  root     root     10701 Nov 5 13:03 index.html
drwxr-xr-x 14 www-data www-data  4096 Nov 6 04:14 nextcloud

nextcloudが動いているか確認してみましょう。
PCやスマホからhttp://192.168.1.20/nextcloud/にアクセスしてみます。
 IPアドレスは各自の環境に合わせてください。

以下のようにnextcloudが動いていることが確認できると思います!

ただ、いまの時点ではデータを保存するデータベースがないので、何も保存できません。
データベースをインストールし、nextcloudから使えるようにしましょう。

データベースのインストール

お次はデータベースのインストールです。
mysql派生版であるmariadbを使います。

pi@raspberrypi:~ $ sudo apt install mariadb-client mariadb-server

インストールが終わったら初期セットアップします。

pi@raspberrypi:~ $ sudo mysql_secure_installation

# 初期状態ではrootパスワードが無いので何も入力せずにEnter
Enter current password for root (enter for none):

# rootパスワードを設定するのでYを押してEnter
Set root password? [Y/n]

# 新しいパスワードを2回入力
New password:
Re-enter new password:

# 匿名ユーザーはなくていいのでYを押してEnter
Remove anonymous users? [Y/n]

# rootユーザーのログインはリモートで行わせないほうがいいのでYを押してEnter
Disallow root login remotely? [Y/n]

# テスト用データベースはいらないのでYを押してEnter
Remove test database and access to it? [Y/n]

# リロードするのでYを押してEnter
Reload privilege tables now? [Y/n]

データベースとnextcloudとの紐付け

今のままではデータベースとnextcloudとがなんの関係もなく、ただインストールされているだけですので、両者を関連付けます。

以下コマンドを順番に実行していきましょう。

# データベースにrootでログインする
# パスワードは先ほど設定した値を入れる
pi@raspberrypi:~ $ sudo mysql -u root -p
Enter password:

# データベースを切り替える
MariaDB [none]> use mysql;

# nextloud用のデータベースを作る
MariaDB [mysql]> create database nextcloud;

# ユーザーを作る
# create user の後の文字列は各自ユーザーを入れる
# identified by の後の文字列は各自パスワードを入れる
MariaDB [mysql]> create user 'pi'@'localhost' identified by 'abcdefghijklmn';

# 作ったデータベースのユーザーにデータベースへのアクセス権を付ける
MariaDB [mysql]> grant all privileges on nextcloud.* to 'pi'@'localhost';

# ↑の権限設定を反映させる
MariaDB [mysql]> flush privileges;

# 終了
MariaDB [mysql]> quit;

これでデータベース側はnextcloudを受け入れる準備ができました。

お次はnextcloud側です。
↑のデータベースに接続しましょう。

http://192.168.1.20/nextcloudにアクセスします。
↓のデータベース設定で以下の通り入力しましょう。
 ・ユーザー名: pi
 ・パスワード: abcdefghijklmn
 ・データベース名: nextcloud
 ※ユーザー名、パスワードはご自身で好きな文字列を指定してください。

「ポート番号をホスト名とともに指定してください」
と書いてありますが、無視して大丈夫です。

うまくいくと↓の通りトップ画面が表示されます!

スマホアプリもありますよ!

‎Nextcloud
‎A safe home for all your data The Nextcloud iOS app allows you to access all your files on your Nextcloud Features: - Read, rename, copy, move, delete all ...
Nextcloud - Google Play のアプリ
The Open Source Nextcloud Android app allows you to access all your files on your Nextcloud. Features: * Easy, modern interface * Upload your files to your Nex...

一般ユーザーの作成

いまはnextcloud上に管理者しかいない状態ですので、一般ユーザーを作りましょう。
画面右上にあるユーザーのアイコンをクリックするとユーザーのメニューが出てきます。

ユーザー一覧の画面になりますので、ここでグループとユーザーを作りましょう。
 ・グループ: general
 ・ユーザー名: yasufumi
などとして作りましょう。

新しいユーザーは作成した状態ですと英語設定になので、日本語にしておきましょう。
Settingsから変更できます。

これでまずまず使える状態になったと思います!

終わりに

いかがでしたか。

自分で構築するのでハードルが高いと思われるかもしれませんが、たいていの作業はコマンドで自動化されているため、作業量はそこまで多くありません。

次回以降、以下の内容を実施予定です!
 ☑トークなどデータ保存以外の機能を試してみる
 ☑ドメイン名取得、設定
 ☑https化
 ☑二段階認証導入

もし導入でわからないところ、つまずくところがありましたらお気軽にご連絡ください!

Raspberry Piでのnextcloudサーバー構築の全体像はこの記事が参考になります!

Comments

タイトルとURLをコピーしました