(2023.06)レンタルサーバ変更に伴い、ドメイン変更致しました(旧URL:https://i-topics.net)。

【ラズパイ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を有効化します。

2番目の「enable」を実行すると、ラズパイ起動時に外付けHDDが接続されていないと、OS起動が途中で止まり、ラズパイが使えなくなります。Sambaサーバとして使用頻度が低い場合は、「enable」を実行せずに、Sambaを使うときだけ1番目のコマンド「start」を実行すると、トラブルが少なくなります。

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

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 の編集

fstabを編集すると、再起動時や次回電源ON時に、同じUSBポートに同じHDDが接続されていないと、OS起動しません(外付けmicroSD, SSDも同様)。外付けHDDを外してラズパイから移動させたい場合は、シャットダウン前にfstabを開き、追記行の行頭に # を付けてコメントアウトし、無効化します。

上で「enable」を実行している場合は、
sudo systemctl stop smbd nmbd
sudo systemctl disable smbd nmbd
を実行して、ラズパイ起動時にSambaが起動しない設定にします。

  • 外付け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 (bullsey) のインストール・セットアップ
  2. LXTerminal のコマンド一覧(最低限)
  3. nano の操作方法(保存)
  4. ラズパイOSセットアップ直後の設定
  5. ラズパイIPアドレスの固定など
  6. ufw(ファイアウォール)設定
  7. SSH接続でラズパイをリモート操作
  8. Sambaサーバを作ってiCloudを解除
  9. ローカルWordPress専用Webサーバ構築(SSL対応)
  10. Raspberry Pi OS Liteのインストール
  11. Raspberry Pi OS LiteでSambaを設定
  12. ラズパイサーバのWordPressを自動でバックアップ
  13. ラズパイSSDブート&起動しないときの対処方法
  14. MyDNSでドメインを無料取得する
  15. NGINXサーバでWordPressサイト(SSL化済)をWWWへ公開

脚注

脚注
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)

コメント