【ラズパイ4】10分でiCloud不要に!Sambaサーバ(NAS)構築方法

この記事は約19分で読めます。

当サイトではRaspberry Pi 4(ラズパイ4)を使って、

を目指して7回に分けてサーバ構築準備をしてきました

いよいよ今回はSambaサーバを構築します。
10分で構築したい方は本記事の理屈部分をスキップして、コマンド・ソースだけに着目してターミナル(端末)でコピー&貼り付けして進んでください。
(一部、ご自身の環境に置き換える部分があります)

Sambaとは何か?

Sambaとは?

SambaはWindowsとLinux, MacOSを結ぶプロトコルを実装したプログラム(フリーソフトウェア)です。
大まかにいえば、ラズパイをWindowsネットワークへ参加させる機能です。そもそもは「Linux側からWindows側へ」という参加方向でしたが、最近ではサーバコスト不要などの面からLinuxをネットワークの中心に据え置く官公庁や企業の例が増えてきています。

NAS (Network Attached Storage)とは?

NAS(ナス)とは、Network Attached Storageの略で、ネットワークに直接接続されたサーバを指します。
コンピュータを介さないとHDDなどのストレージはネットワークに参加できませんが、そのコンピュータの機能がそれ専用に構築されている、または、その目的だけに運用されるサーバを指します。

SambaでNAS化するメリットとは?

Windows, Linux, MacOSなど、クロスプラットフォームでファイル共有できるため、

として機能します。

本記事のテーマのように、「iOS→Linux」という接続方向でWindowsネットワークに参加目的ではないのにSambaを用いるのは本来的な使用方法ではありませんが、家庭内iCloudを簡単に作れるのでSambaサーバ構築方法をご紹介いたします。

なぜ、ラズパイでiCloudが不要になるのか?

私は有料iCloudを契約したことがありますが、3〜4日で解約しました。理由は使いづらかったからです。iCloudにデータを保存していても、結局iPadにダウンロードしなくてはならないので、iPadのストレージ圧迫解消にはなりませんでした。

そのため、Windows 10 (Dell Optiplex 780 SFF), Puppy Linux (Eee PC 1005HA), ラズパイOS(ヘッドレス[1]desktop環境の無いラズパイOS。Raspberry Pi OS Lite (bullseye)のこと。), ラズパイOSデスクトップPC版 (bullseye), Ubuntu MATE, Debian (Eee PC 1005HA)など色々なOSや機種でSambaサーバを試した結果、

  • ラズパイでSambaサーバ構築して家庭内ファイルサーバ・メディアサーバ(NAS)として使うと、iCloudが不要になる

との結論に至りました。
25年以上GUI操作だった私にとっては初めてのサーバ構築で、10回ほどSambaサーバを作り直しました。

まだまだ経験が浅いので感想を述べられる立場ではないのですが、
Sambaサーバ構築するだけなら、Puppy Linuxが最も簡単です。
しかし、本体側の電力を比較すると、

Raspberry Pi 4Eee PC 1005HADell Optiplex 780 SFF
消費電力(W) [2]参考:消費電力の計算方法15[3]5V*3A 出典:Raspberry Pi 4 Model B specifications – Raspberry Pi39.9[4]19V*2.1A。私が所有しているDCアダプタに記載。235[5]出典:サービスマニュアル

ラズパイが圧倒的に消費電力が小さいので、サーバ構築には適していると判断しました。
スペックだけに着眼すれば、Eee PC 1005HA(CPU: Atom N280, USB2.0)でも動画データを送信するメディアサーバとしては、十分に機能します。ラズパイをiCloud代わりのメディアサーバとして使うのは勿体ないといえます。

ただ、私のラズパイはRAMが4GBのタイプなので、Webブラウジングするには重々しく、実用的ではありません。
そのため、Sambaサーバ・ローカルWordPress専用Webサーバとしてラズパイを使用しています。

私のようにラズパイの使いみちが無く、2〜3年放置している方に向けて、「Sambaサーバとしてラズパイ使用を力強くお勧めしたい気持ち」になり、本記事を書く動機になりました。

家庭内にCloud状態のサーバを設置すると、今回のように4TB容量ストレージを無料で確保できます。
有料iCloudでは2TBで月額1,300円[6]出典:iCloud+ のプランと料金。2022年9月閲覧。なので、4TBなら2倍の月額2,600円。

家庭内サーバなので、もちろん容量は無制限で設置できます。指定時刻に自動で電源OFFを設定して節電対策もできます。
サブスクリプションのランニングコストが掛からず、とても気が楽になります。
本記事がお役に立てれば、嬉しく思います。

Samba に関する有益なページ

所要時間:10分

  • トータル:7分強。iOSからの接続時間を含めて、約10分。

以下はおおよその時間です(原則、コピー&貼り付け)。

  1. Samba インストール:1分6秒
  2. Samba 有効化:1分10秒
  3. ufw設定:23秒
  4. Samba ユーザー追加:24秒
  5. smb.conf ファイル編集:2分
  6. fstab ファイル編集:2分

前提

  • 家庭内LANの範囲限定でSambaサーバを使用。
  • iOSからの接続では「ドメイン.local」を使用します[8] … Continue reading
  • IPアドレスの固定化を済ましている。
  • ufw(ファイアウォール)でIPv4のみ許可設定を済ましている。
  • /etc/hosts ファイルでホスト名解決を済ましている。
  • 本記事の内容は全てsudo権限を有する非rootユーザー(例: pi)で行ってください。
  • sudo apt update, sudo apt upgrade を済ましてから始めてください。
  • 共有先:外付けHDD。今回のファイルシステムはntfs[9]将来的に、WindowsでSambaサーバを運用予定のため。私的な事情です。ですので、iOS, Linux共に、ほぼ読み取り専用サーバになると思います。予め外付けストレージをUSB接続してから、ラズパイ電源を入れてください。
  • Sambaサーバ構築の迅速化を優先するために、パーミッション(権限)設定は割愛させて頂いております。本記事でのセキュリティは、「家庭内LAN内部からSambaユーザー名パスワードを知る者だけが接続できる」設定になります。IPv6からのWWWアクセスをufwで排除しています。パーミッション設定については、後日書く予定です。
    2022-09-25: パーミッションについて追記しました

Samba インストール・有効化

インストール

以下のコマンドでインストールします。

sudo apt install samba

▼「続行しますか?」
YキーまたはそのままEnterキーを打鍵して、続行。

▼username@hostname が表示されると、インストール完了。

有効化

1.以下のコマンドで、Sambaを有効化します。

# Sambaサービスを開始
sudo systemctl start smbd nmbd
# ラズパイ起動の都度、Sambaを起動する設定
sudo systemctl enable smbd nmbd

2.Sambaサーバの稼働を確認します。
緑字で「active (running)」なら稼働しています。

# Sambaの稼働状況を確認
sudo systemctl status smbd nmbd

3.Q(Quit)キー打鍵でコマンド入力画面に戻ります。

4.念のため、システムを再起動して、有効化を適用します。

sudo reboot

ufw(ファイアーウォール)でSambaを許可

Sambaをインストールしてからufw設定をして下さい。
インストール前では、ufw app list にSambaは含まれていません。

# ufwでSambaを許可
sudo ufw allow samba
# ufwの状態を確認
sudo ufw status

Samba ユーザーの作成・追加・パスワード設定

  • Debian 公式マニュアル:pdbedit(8)
  • Sambaユーザー名は、使用できる名前が限定されています。ラズパイOSシステムユーザーとして既に存在している必要があります[10]出典:Oracle Linux 8 … Continue reading(例: pi)。

1.以下のコマンドで、Sambaユーザー(例: pi)を追加します。

sudo pdbedit -a pi

2.任意のパスワードを打鍵します。画面には表示されません。
入力を終えると、Enterキーを打鍵。

/etc/samba/smb.conf 編集

  • smb.conf ファイルの文末に「共有先のパス」を記述する作業です。
  • Debian 公式マニュアル:smb.conf(5) ファイルの説明が分かりやすいです。

1.以下のコマンドを入力します。

sudo nano /etc/samba/smb.conf

2.nano が開くので、「Ctrl+V」キーを12回ほど連打します。

3.既存のソースをコピー。

4.コピーしたソースを文末に貼り付け。

以下のように貼り付けたソースを加工していきます。

5.ファイルマネージャーを開き、共有したいフォルダのパスをコピー。
※ラズパイの場合、外付けメディア(HDD, USBメモリなど)はmediaディレクトリ配下に属します。

他のPCからSSH接続でラズパイSamba構成されている方は、以下の赤色マーカーのコマンドで進んで頂くと、求めているpath(黄色マーカー)を書き出せます。
(例)システムユーザー名:pi、外付けHDD名:Elements、 共有ディレクトリ:files。

pi@raspberrypi:~ $ cd /media # mediaディレクトリへ移動
pi@raspberrypi:/media $ ls # mediaディレクトリの内容を見る
pi
pi@raspberrypi:/media $ cd ./pi # 下層のpiディレクトリへ移動
pi@raspberrypi:/media/pi $ ls #piディレクトリの内容を見る
Elements
pi@raspberrypi:/media/pi $ cd ./Elements # 下層のElementsディレクトリへ移動
pi@raspberrypi:/media/pi/Elements $ ls # Elementsディレクトリの内容を見る
blog  files  その他
pi@raspberrypi:/media/pi/Elements $ cd ./files # 下層のfilesディレクトリへ移動
pi@raspberrypi:/media/pi/Elements/files $ pwd # 現在ディレクトリを書き出す
/media/pi/Elements/files

各コマンドの説明はリンク先へ:cd, ls, pwd

6.ターミナルに戻り、貼り付けたソースを加工していきます。

  1. [任意の共有名]
  2. コピーしたパスを貼り付け
  3. read only = no[11]今回の場合はファイルシステムがntfsのため、iOSはread onlyになります。
# path の部分だけ変更してください。
[files]
   path = /media/pi/Elements/files
   browseable = yes
   read only = no
   guest ok = no

(追記 2022-09-25)

権限(パーミッション)は、smb.confファイル内の例に則ると、iPadからでもファイルの編集・移動・削除ができます

<smb.conf内の記述>

# Directory creation mask is set to 0700 for security reasons. 
# If you want to create dirs. with group=rw permissions, set next parameter to 0775.
directory mask = 0700

グループにread, writeの権限を付与したい場合は、パーミッション値は0775。
今回私は自分だけの範囲で各デバイスから操作出来れば良いので、最終的には以下のような記述になりました。上記のソースにパーミッションの行を追加しただけです。

# path の部分だけ変更してください。
[files]
   path = /media/pi/Elements/files
   browseable = yes
   read only = no
   guest ok = no
   directory mask = 0700

7.nano編集を保存します。

不要な共有名を表示しない方法は後述しています。

/etc/fstab の編集

  • 外付けHDDのPARTUUID・マウントポイント・ファイルシステムの種類・マウントオプションなどを記述します。
  • Debian 公式マニュアル:fstab(5) 書式・ファイルの説明が分かりやすいです。

1.以下のコマンドを入力し、外付けHDDのPARTUUIDを表示します。

sudo blkid

外付けHDDのPARTUUIDをコピーします。

2.以下のコマンドを入力し、/etc/fstabファイルをnanoで開きます。

sudo nano /etc/fstab

3.nano編集画面の文末に追記します。
各項目の区切りはスペースまたはtab。

  1. PARTUUID[12]公式マニュアルによると、PARTUUIDを記述する方がシステムがより強固になります。=上でコピーしたものを貼り付け(” “ダブルクォーテーションは削除する)
  2. マウントポイント: 上でコピーしたパスを貼り付け
  3. ファイルシステムの種類: 今回の場合は、ntfs
  4. マウントオプション: 複数あれば、カンマで区切る。
  5. dump(8) コマンドが ダンプする必要があるか: 必要無ければ、戻り値0。
  6. ブート時にファイルシステムをチェックする順序: OSとは別の外付けHDDのため、0。
    (詳しくは、公式マニュアルを参照ください)
# fstabの書式
外付けデバイスのPARTUUID	/mountpoint	fstype	option,option,...	0 0

以下のソースで黄色マーカーをご自身の環境に置き換えて、fstabファイルのnano編集画面に貼り付けてください。

PARTUUID=454f5907-d69d-4823-964c-04dc826095e4 /media/pi/Elements ntfs defaults 0 0

4.nano編集を保存します。

5.適用するために、念の為、ラズパイを再起動。

sudo reboot

Samba サーバにアクセス

iPad, iPhone から

ファイルアプリを使います[13]出典:iPadの「ファイル」を使用して外部デバイスまたはサーバに接続する – Apple サポート (日本), 2022-09-10閲覧。

  1. メニューをタップ。
  2. サーバへ接続。

「ホスト名.local」または「ラズパイのIPアドレス」を入力。

共有名が現れるとSamba接続は成功です。

容量無制限のファイルサーバ・メディアサーバが仕上がりました。
※今回、Sambaで共有したフォルダ・ファイルにアクセスできなくなれば、ファイルアプリから一旦接続を解除して接続し直すと、共有ディレクトリに繋がるケースが多いです。

iPadから動画視聴するなら、
VLCDocumentsなどのアプリで無料で動画を再生できます。

私はあれやこれやアプリを試した結果、

が現状最適アプリとの結論に達しました。
詳しくは後述をご覧ください。

Windows 10から

エクスプローラーを使います。
「.local」を付けないと、接続できませんでした。

# IPアドレスの書式
\\192.168.x.xxx\
# ホスト名.local
\\raspberrypi.local\

「ホスト名.local」または「ラズパイのIPアドレス」を上の書式で入力。

共有名が見えます。

右クリック→ネットワークドライブの割り当て

特にこだわりがなければ、そのまま完了。

各入力事項に間違いがなければ、共有フォルダが自動的に開きます。

Debianから

  • Debian 公式マニュアル:
    • mount(8) コマンド説明・書式・各オプションが分かりやすいです。
    • mount.cifs(8) CIFSをマウントする際のオプションなどを説明。CIFS(Common Internet File System)はSambaで使うファイルシステムです。

1.Debian上でのマウントポイントを作成

共有ディレクトリをDebian上でマウントする場所を作ります。
Linuxの慣習的には、/mnt の配下にマウントポイントとなるディレクトリを作ります。

sudo mkdir /mnt/files

2.共有ディレクトリ・マウントポイント・ファイルシステムの種類などの情報を、fstabに記述します。

sudo nano /etc/fstab

以下の情報を文末に追記します[14]書式の出典:fstab(5), mount.cifs(8)。スペースまたはtabで各フィールドを区切る。黄色マーカー部分をご自身の環境に変更してください。

# 書式 //server_name/share_name mountpoint type options dump pass
//192.168.x.xxx/files /mnt/files cifs username=pi,password=xxx,iocharset=utf8,defaults 0 0

nano編集を保存します。

3.mountコマンドでラズパイ共有先をマウントします。

# 書式 mount -t cifs //server_name/share_name mounrtpoint -o オプションをカンマで区切る
sudo mount -t cifs //192.168.x.xxx/files /mnt/files -o username=pi,password=xxx

4.適用するために、念の為、再起動します。

sudo reboot

5.再起動後、Samba共有ディレクトリを開きます。
ファイルマネージャー(Nautilus)>他の場所>コンピューター>mnt>共有名

本記事の設定では、ファイルを直接変更できないので、サーバ上のファイルをコピーして現在使用中のPCフォルダ(ドキュメントなど)に貼り付けると、Debian上でファイル編集が出来ます。

不要なSamba共有名を非表示にする

smb.confファイルで予め設定された共有名が表示されて、紛らわしく感じるときがあります。
そんな場合は、コメントアウトして非表示にすることができます。

例えば上のように、[homes]の共有を非表示にしたい場合、
セミコロン「;」またはハッシュ「#」を行頭に挿入すると、コメントアウトできます[15]出典:smb.conf(5)

この際、全ての項目をコメントアウトしないと私はエラーを経験しました。
全ての項目を判断する目安は、

  • 次の[共有名]まで

と捉えれば、
コメントアウトする範囲が分かりやすくなると思います。

nPlayer: iOSで動画視聴に最適アプリ

追記 2022-09-29

下表は、nPlayerまでに試したアプリです。

私が一番望んでいたのは、サムネイル取得の機能でした。
約4TB分の動画ファイルを字面のタイトルだけで視聴済・未視聴を判別するのに、
大変不便さを感じていました。

ファイルDocumentsVLC
サムネイル取得不可不可不可
シークリアルタイムに追随繰り返すと機能しなくなる追随しない
再生を再開不可不可不可
再生履歴無しあり無し
バックグラウンド再生不可不可機能しない
Picture in Picture不可不可不可[16]Samba経由のネットワーク再生では不可。iPadストレージ内の動画ファイルなら可能。

Sambaサーバ構築してから3ヶ月半、上記のアプリを試してきて、私が望んでいる機能が全て揃っているアプリが、

  • nPlayer(610円[17]2022-09-29現在の価格。

でした。

nPlayerには無料版のnPlayer Liteがあり、機能を確認するためのお試しバージョンです。
上記表の項目は全て可能です。
nPlayer Liteは広告頻度が非常に多いので、そのまま利用を続けるには気持ち的に無理があると思います。メーカー側もフロントエンド商品と割り切っていると思います。

私は年に1回すらアプリ購入をしないタイプですが、私が望んでいる機能が、

  • 「一括買い切り610円で手に入るなら」

と、その日のうちに購入しました。

nPlayerには3種類あり、

  1. nPlayer Lite
  2. nPlayer
  3. nPlayer Pro

違いはメーカー公式サイトで説明されています。
App Storeの中では違いが分かりにくいので、下記のメーカー公式発表の仕様表をご確認ください。

広告を外したいだけなら、ほとんど多くの方は「nPlayer」を選択することになると思います[18]参考ページ:新たなnPlayerが登場!今後は3つの価格帯での展開に | reliphone (for iPhone)

今回はラズパイでSambaサーバを構築してiCloudが不要になる方法をご紹介しました。
説明(理屈)をスキップしてコードやソースのコピー・貼り付けだけ繰り返すと、
10分で完了すると思います。

  1. ラズパイOS (bullseye) のインストール・セットアップ
  2. LXTerminal のコマンド一覧(最低限)
  3. nano の操作方法(保存)
  4. ラズパイOSセットアップ直後の設定
  5. ラズパイIPアドレスの固定など
  6. ufw(ファイアウォール)設定
  7. SSH接続でラズパイをリモート操作
  8. Sambaサーバを構築(NAS):この記事
  9. ローカルWordPress専用Webサーバ構築(SSL対応)

現在位置を把握頂くと、進みやすくなると思います。
当記事がお役に立てれば、嬉しく思います。

脚注

脚注
1 desktop環境の無いラズパイOS。Raspberry Pi OS Lite (bullseye)のこと。
2 参考:消費電力の計算方法
3 5V*3A 出典:Raspberry Pi 4 Model B specifications – Raspberry Pi
4 19V*2.1A。私が所有しているDCアダプタに記載。
5 出典:サービスマニュアル
6 出典:iCloud+ のプランと料金。2022年9月閲覧。
7 Google翻訳拡張機能を使うと便利です。
8 公式マニュアルでは「TLDで.localを使用しない」と書いていますが、本記事ではTLDではなく家庭内LANでの接続のため、「.local」を使用することにします。
9 将来的に、WindowsでSambaサーバを運用予定のため。私的な事情です。
10 出典:Oracle Linux 8 共有ファイル・システムの管理公式マニュアルでは、「セキュリティ識別子を指定されたユーザー」と書かれていますが、理解できませんでした。
11 今回の場合はファイルシステムがntfsのため、iOSはread onlyになります。
12 公式マニュアルによると、PARTUUIDを記述する方がシステムがより強固になります。
13 出典:iPadの「ファイル」を使用して外部デバイスまたはサーバに接続する – Apple サポート (日本), 2022-09-10閲覧。
14 書式の出典:fstab(5), mount.cifs(8)
15 出典:smb.conf(5)
16 Samba経由のネットワーク再生では不可。iPadストレージ内の動画ファイルなら可能。
17 2022-09-29現在の価格。
18 参考ページ:新たなnPlayerが登場!今後は3つの価格帯での展開に | reliphone (for iPhone)

コメント