Raspberry Pi (raspbian)を利用した NAS × DLNA サーバ

# システム構成図
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2574123/ee3668a8-ce1d-6902-2e9e-787d04e3cfd4.png)

#### ※Raspberry Pi4 ModelB 4GBで動作確認。ソフトはNAS には samba　、DLNA には minidlna を利用。


# NAS参照イメージ

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2574123/86b7f53b-f232-f7db-11b5-74dc7be16605.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2574123/3aae8ad1-f634-9956-3e77-50aa90058e54.png)

## minidlnaで参照可能なメディア

https://pcvogel.sarakura.net/2019/01/17/31905

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2574123/d84f04b6-8589-a83a-b61f-c09ff9e19e99.png)



## 各種参考サイト
https://www.raspberrypi.org/software/
https://pcmanabu.com/create-media-raspberry-pi-4/
https://shikasen-engineer.com/raspberry-pi-dlna/#DLNA
https://www.lanhome.co.jp/device/raspberry-pi.html
https://www.indoorcorgielec.com/resources/raspberry-pi/raspberry-pi-setup/

ファンの配線
https://www.raspberrypi.org/documentation/computers/os.html
ファイルサーバ
https://shikasen-engineer.com/raspberry-pi4-samba-fileserver/
Rapberry PiへNTFSの外付けHDDのマウント方法
http://yurugadge-channel.com/article/185114382.html
Raspberry PiにSambaをセットアップ！NASは実用レベルで使えるか？
http://yurugadge-channel.com/article/179603903.html
Raspberry Piを用いたDLNAホームサーバー
https://www.lanhome.co.jp/device/raspberry-pi.html
RaspberryPiをDLNAサーバにする
https://pcvogel.sarakura.net/2019/01/17/31905
SSH接続有効化
https://kimamani89.com/2020/01/29/%E3%80%902020%E5%B9%B4%E6%9C%80%E6%96%B0-raspberrypi%E3%80%91ssh%E3%81%A7%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%88%E6%8E%A5%E7%B6%9A%E3%83%BC%E6%96%B0%E3%81%97%E3%81%84%E3%83%87%E3%82%B9%E3%82%AF%E3%83%88/


※手間を少なく簡易にファイル共有環境を構築したいだけなら、ラズパイとNASだけ構築して、スマホはファイルマネージャアプリで参照する方が簡単です。

https://qiita.com/parapaper/items/2fd3b07b97d9af52210e


## ラズパイ構築
ラズパイセットアップ

https://www.raspberrypi.org/software/

https://pcmanabu.com/create-media-raspberry-pi-4/

以下ラズパイOSの初期設定のユーザ名は必ず「pi」で設定すること。
本記事の動作については推奨の32bitOSで確認済み。
64bitOSも公式に存在するが、互換性問題等の理由で推奨にはなっていない。
しかし、2023年現在各サードパーティソフトでラズパイ 32bit(armhf)向けの提供が既にされてないものもあり、本記事以外の仕様を作りこむなら64bitでの構築がおすすめ。64bitでも動作確認済み。

https://www.indoorcorgielec.com/resources/raspberry-pi/raspberry-pi-setup/


SSH接続有効化

https://kimamani89.com/2020/01/29/%E3%80%902020%E5%B9%B4%E6%9C%80%E6%96%B0-raspberrypi%E3%80%91ssh%E3%81%A7%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%88%E6%8E%A5%E7%B6%9A%E3%83%BC%E6%96%B0%E3%81%97%E3%81%84%E3%83%87%E3%82%B9%E3%82%AF%E3%83%88/

TeratermをPCに導入

https://eng-entrance.com/teraterm-install

## NAS構築
Teraterm でラズパイに接続し、以下コマンドを実行

```
sudo apt-get -y install ntfs-3g
sudo blkid
```
外付けHDD未接続の場合
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2574123/180df4ea-dbaf-8944-a2f2-128310803d62.png)
外付けHDD接続の場合(次手順の/etc/fstabに追記するUUIDは本画像の/dev/sda2のUUIDを利用する)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2574123/3ee6c93f-2284-7e62-acdc-c9f7af79b4e4.png)


```
ls -l /mnt/
sudo mkdir -p /mnt/hdd/usbhdd/
ls -l /mnt/hdd/usbhdd/
ls -l /etc/fstab 
cat /etc/fstab 
```

/etc/fstabをバックアップ取得してから、/etc/fstabを修正。
詳細なマウント方法は以下参照
Rapberry PiへNTFSの外付けHDDのマウント方法
https://yurugadge-channel.com/article/185114382.html

```
sudo cp -p /etc/fstab /etc/fstab_yyyymmdd
ls -l /etc/fstab*
sudo nano /etc/fstab
#エディタ画面で以下diffの証跡で差異となっている行を追加

diff /etc/fstab /etc/fstab_yyyymmdd
```

おっと失礼
以下「/mnt/hdd/usbhdd/」指定は誤り。「/mnt/hdd/usbhdd/NAS/」です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2574123/0ea9dc52-2442-72bb-0b61-75ff08b6a170.png)


日本語入力用

https://www.indoorcorgielec.com/resources/raspberry-pi/raspberry-pi-input-japanese/
```
 sudo apt install ibus-mozc
```

NAS用にsamba導入

http://yurugadge-channel.com/article/179603903.html

```
sudo apt-get install samba
ls -l /etc/samba/smb.conf
sudo cp -p /etc/samba/smb.conf /etc/samba/smb.conf_yyyymmdd
ls -l /etc/samba/smb.conf*
sudo mkdir -p /mnt/hdd/usbhdd/NAS
sudo nano /etc/samba/smb.conf
#エディタ画面で以下diffの証跡で差異となっている行群を追加

diff /etc/samba/smb.conf /etc/samba/smb.conf_yyyymmdd
sudo smbpasswd -a pi
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2574123/1b8fc7a2-c89d-6fd5-888a-0aec83b9bc51.png)


## DLNA構築

https://shikasen-engineer.com/raspberry-pi-dlna/#DLNA

https://www.lanhome.co.jp/device/raspberry-pi.html

https://pcvogel.sarakura.net/2019/01/17/31905

inotify及びnotify_intervalは任意で設定ください。
基本サブディレクトリ配下にファイルを整理するからあまり意味がないと思ってますが、お好みでどうぞ。
https://knowledge.rinpress.com/index.php/MiniDLNA%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB#inotify.E3.81.AE.E8.A8.AD.E5.AE.9A.E3.81.AB.E3.81.A4.E3.81.84.E3.81.A6.E2.91.A0

choown漏れには気を付ける。(minidlnaのサービスが/var/lib/minidlna/配下にインデックスファイルを作成する権限がないためサービス起動時にfailedになる)
もしくは「chmod 777 /var/lib/minidlna/」でもよいがお好みで。
```
sudo apt-get install minidlna
ls -l /etc/minidlna.conf
sudo cp -p /etc/minidlna.conf /etc/minidlna.conf_yyyymmdd
ls -l /etc/minidlna.conf*
sudo nano /etc/minidlna.conf
#エディタ画面で以下diffの証跡で差異となっている各行を追加及び修正

diff /etc/minidlna.conf /etc/minidlna.conf_yyyymmdd
sudo chown minidlna /var/lib/minidlna/
```
以下3つのイメージとしてはNASまでが外付けHDDへのマウントなので、
「〇ドライブ(/mnt/hdd/usbhdd/NAS/):\動画」というドライブ直下の動画/画像/CanonフォルダをDLNAで公開対象にしています。

・media_dir=V,/mnt/hdd/usbhdd/NAS/動画
・media_dir=P,/mnt/hdd/usbhdd/NAS/画像
・media_dir=PV,/mnt/hdd/usbhdd/NAS/Canon



![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2574123/b68b3981-79ad-a1ab-45e0-e31bce4e1f6f.png)

https://pcvogel.sarakura.net/2019/01/17/31905

https://kanon123.blogspot.com/2020/05/raspberrypi-dlna.html

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2574123/43ae501b-a33c-ccf6-123f-8a2acf682487.png)


```
sudo systemctl status minidlna.service
sudo systemctl enable minidlna.service
ls -l /etc/init.d/minidlna
sudo cp -p /etc/init.d/minidlna /etc/init.d/minidlna_yyyymmdd
ls -l /etc/init.d/minidlna*
sudo nano /etc/init.d/minidlna
#エディタ画面で以下diffの証跡で差異となっている行(sleep 60)を追加

diff /etc/init.d/minidlna /etc/init.d/minidlna_yyyymmdd
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2574123/1e07812b-3ed7-2b36-229b-5c07e989ca3c.png)


以下はただの省エネ化なので、お好みで。(LED OFF)

https://101010.fun/iot/raspberry-pi-power-save.html

```
ls -l /boot/config.txt
cat /boot/config.txt
sudo cp -p /boot/config.txt /boot/config.txt_yyyymmdd
ls -l /boot/config.txt*
sudo nano /boot/config.txt
diff /boot/config.txt /boot/config.txt_yyyymmdd

```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2574123/934a29be-e70f-a9ca-055e-4edad879b995.png)


## DLNAのインデックスが最新の状態に反映されない場合(files.db再構築)

※以下実施後、外付けHDD内のファイル数によってインデックス構築に時間がかかる。
進捗が知りたければ、スマホなどでDLNA接続すれば、現状作成されたインデックスに応じてファイルが表示される。
```
ls -l /var/lib/minidlna/files.db*
mv /var/lib/minidlna/files.db /var/lib/minidlna/files.db_$(date "+%Y%m%d")
ls -l /var/lib/minidlna/
sudo systemctl status minidlna.service
sudo systemctl restart minidlna.service
```


## スマホやタブレットについて
「DLNA」で調べれば出てきますので、お好みのアプリを導入すればよいかと。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2574123/3c8d1648-a931-58ec-787c-ff98e50ee3b1.png)

## 補足1:vi入力の正常化
https://gametech.vatchlog.com/2019/02/07/raspi-vim/
```
sudo cp -p  /etc/vim/vimrc.tiny /etc/vim/vimrc.tiny_bk
sudo nano /etc/vim/vimrc.tiny
##「set compatible」⇒「set nocompatible」に修正。
diff /etc/vim/vimrc.tiny /etc/vim/vimrc.tiny_bk
cat /etc/vim/vimrc.tiny

touch /home/pi/.vimrc
sudo vi /home/pi/.vimrc
##「set backspace=indent,eol,start」追加
cat /home/pi/.vimrc
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2574123/108bf4da-7885-af41-305c-9d52b1ad6362.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2574123/1e6fb2b2-153a-da76-37b5-edc2dbbbb918.png)


## 補足2:minidlnaのフォルダ/ファイルソート
https://poor-user.blogspot.com/2015/02/minidlnareadymedia-114.html
```
sudo vi /etc/minidlna.conf
cat /etc/minidlna.conf
```
デフォルト
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2574123/83b6e104-1d11-428f-0b8b-7bb46e6b5a8b.png)
修正後
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2574123/14f86ffb-30dc-4850-adc5-6cb3ef090431.png)

## 補足3:NAS への接続時にネットワーク資格情報入力画面が出た場合

https://shell-mag.com/7th_ubuntuserver/5/

<img width="400" src= https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2574123/59ff4336-d23f-79e3-052d-921b012fc128.png>


ここまで指示通り作成しているなら以下で通るはずです。
もしNAS構築時にsamba用のユーザ設定を変更している場合はpi⇒<指定したユーザ名>になります。
ユーザID　⇒　pi@raspberrypi
Password ⇒ sambaに設定したパスワード



``
sudo nano /etc/init.d/minidlna
``

## 補足4:外出先からのSSH接続(NordVPN利用)
「RaspberryPiにNordVPN clientをインストして外出先からのNAS上ファイル参照
補足6:外出先からのSSH接続　(2025/5追記)」

https://qiita.com/parapaper/items/0e6cfd6fd8bf8691f9fd