DLNAサーバー作成手順 (Alma Linux / minidlna / Samba) ※スマホでストリーミング再生します


<!--
### 2024年11月：記事を更新しました。

初投稿時から時間が経って、
だんだんとViewが増えてきたため（ありがとうございます!)
以下の通り、アップデートを行いました。

`・Alma Linix 9.3 → 9.4 (編集時の最新版) へ情報を差し替えました。※検証済み※`
`・各所で説明の補足や誤字の修正などをおこないました。`
`・割り振った番号 ([0] [1]... ) に抜けがあったところを修正しました。`

※新しく見ていただいた方へ：現時点で最新の Alma Linux 9.4 でお試しいただけます。
※以前から見ていただいた方へ：9.3 の時と手順や各configに変りありません。OS,アプリ類はいくつかバージョンアップしているものがあります。
-->


# やりたいこと

Alma Linux で DLNA Server を自作する。

・手順どおり作業すれば、誰でも作れる仕様にする。
・実用性が欲しいので、一度作ってしまえば運用しやすい仕組みにする。

尚、ハードウェアは古いPCを再利用する。


## [0] DLNA とは ?

そもそもDLNAって何だったっけ？という場合に備えて、引用させていただきました。

> **DLNA (Digital Living Network Alliance) は、
> ホーム ネットワークを介して音楽、画像、動画 (HD コンテンツ) をストリームすることができます。**



https://jp.cyberlink.com/support-center/faq/content?id=14161

このページの説明のうち、一番上に記載のある、DMP機能のサーバーを作ります。

> **DMP (デジタル メディア プレーヤー)**
> UPnP/DLNA ネットワークを介して、他のデバイスから HD 動画、画像、音楽をストリームします。

※ 引用は、いずれもCyperLink社さんの上記のHPより。



## [1] 構成図

![DLNA構成 3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3774516/28610865-6702-ad33-0c68-85f7c8e7d72b.png)




## [2] 利用するOS/パッケージについて

|Function|OS / Package|Version|
|:--|:--|:--|
|OS|AlmaLinux release 9.4 (Seafoam Ocelot)|5.14.0-427.13.1.el9_4.x86_64|
|DLNA Server|MiniDLNA (aka ReadyDLNA)|minidlna-1.3.3-3.el9.x86_64.rpm|
|File Server (option)|Samba|samba-4.19.4-105.el9_4.x86_64.rpm|


## [3] 利用したハードウェア

以下の構成で作りました。

|項目|(A)検証環境|(B)低スペックVMで検証|
|:--|:--|:--|
|RAM|DDR3 16GB|2GB|
|CPU|Intel Core i3 - 2.1 GHz x2 (Dual Core) x Hyper Threading|2x vCPU|
|Storage|500GB HDD|20GB vHDD|

以下の手順は、
(A) で作業をした時の記録です。

※　後から（B）の環境でも試しましたが特に問題なく動作しました。

＜Storageについて＞
- 速度的にはHDDでもあまり気になりませんでした。
（機能が限られているため、OS起動にあまり時間がかからない）

- ただし、容量については、用途にあわせて大きめのものを推奨いたします。
（動画ファイルをたくさん入れたい場合）




## [4] OSのインストールと設定

- **Alma Linux 9.4**

マルチユーザーモード／CUI　で ISOファイル からインストール。


・インストール時の「ソフトフェアの選択」にて、以下の項目を選択してください。
（画像右側の「選択した環境用のその他のソフトウェア」は何も選択しない）

![alma-install1-2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3774516/c0522546-b170-6031-6aae-5c15d671cd4f.jpeg)


ファイル直リンク（10GB）
https://ftp.riken.jp/Linux/almalinux/9.4/isos/x86_64/AlmaLinux-9.4-x86_64-dvd.iso

**rikenのmirror site**
ご注意：このリンク先は、時期によって最新のものに入れ替わるとおもいます
https://ftp.riken.jp/Linux/almalinux/9/isos/x86_64/



- **IPアドレス/ネットワーク設定について**

この手順書では、以下のIPアドレスを使用します。(環境にあわせて変更してください)

|ホスト名|IPアドレス|ネットマスク|ゲートウェイ|DNSサーバー|
|:--|:--|:--|:--|:--|
|DLNA Server|192.168.2.200|24|192.168.2.1|192.168.2.1, 8.8.8.8|

※表記は、AlmaLinuxインストール時のものと統一させています。
※ネットマスクは、 "/24" (255.255.255.0)と同じ意味です。
※DNSサーバーは、ご自宅のルータと、GoogleパブリックDNSを入れておけば大体困らない想定。2つ以上の場合は、カンマ区切り(, )を忘れずに!


- **epel-release をインストール**
minidlna は標準リポジトリには無かったため、eple-release を適用する。

```bash
sudo dnf install epel-release
```

- **OSをアップデート／アップグレード**

```bash
sudo dnf update
sudo dnf upgrade
```

- **よく使うツールをインストール** (オプション)

```bash
sudo dnf install nmap traceroute sysstat
```

- **ファイアウォールを無効にする**（宅内での利用を想定しているため）

```bash
#サービスを停止する
sudo systemctl stop firewalld.service

#再起動時に、サービスが起動しないように無効化しておく
sudo systemctl disable firewalld.service

#設定が反映されいるか確認
sudo systemctl status firewalld.service
```

- **selinuxを無効にする**

状態を確認する（デフォルト値の Enforcing が表示される）

```bash
$ getenforce
Enforcing 
```

設定を変更する

```bash
# まず、元ファイルをバックアップしておきます (オプション)
sudo cp /etc/selinux/config /etc/selinux/config.bak
```

以下のように書き換える （以下２つのどちらのパターンでもOK）

(viで直接編集する場合）
```bash
sudo vi /etc/selinux/config

#SELINUX=enforcing
SELINUX=permissive
```

(sedで置き換える場合)
```bash
# 置き換え
sudo sed -i "s/SELINUX=enforcing/SELINUX=permissive/g" /etc/selinux/config

# 確認
sudo cat /etc/selinux/config
```




一度、サーバを再起動する（下記のいずれかでOK）

```bash
sudo init 6
or
sudo shutdown -r now
or
sudo reboot
```

再起動したら、状態を確認する（Permissiveと表示されればOK）

```bash
$ getenfoce
Permissive
```

---

## [5] minidlnaの設定

- minidlna をインストール

```bash
sudo dnf install minidlna
```


- 依存ファイルを含めて 70パッケージ がインストールされました。

<details>
  <summary> :point_right_tone5: 中身を見るにはココをクリックしてください :point_left_tone5: </summary>

```bash
インストール済み:
  cjson-1.7.18-1.el9.x86_64              codec2-1.0.3-1.el9.x86_64
  fdk-aac-free-2.0.0-8.el9.x86_64        fftw-libs-double-3.3.8-12.el9.x86_64
  flac-libs-1.3.3-10.el9_2.1.x86_64      game-music-emu-0.6.3-9.el9.x86_64
  gsm-1.0.19-6.el9.x86_64                highway-1.2.0-2.el9.x86_64
  ilbc-3.0.4-1.el9.x86_64                intel-mediasdk-21.3.5-1.el9.x86_64
  jxl-pixbuf-loader-0.7.0-1.el9.x86_64   lame-libs-3.100-12.el9.x86_64
  libX11-xcb-1.7.0-9.el9.x86_64          libXfixes-5.0.3-16.el9.x86_64
  libXxf86vm-1.1.4-18.el9.x86_64         libaom-3.9.0-1.el9.x86_64
  libavcodec-free-5.1.4-2.el9.x86_64     libavformat-free-5.1.4-2.el9.x86_64
  libavutil-free-5.1.4-2.el9.x86_64      libbluray-1.3.4-1.el9.x86_64
  libchromaprint-1.5.1-1.el9.x86_64      libdav1d-1.2.1-1.el9.x86_64
  libexif-0.6.22-6.el9.x86_64            libglvnd-1:1.3.4-1.el9.x86_64
  libglvnd-glx-1:1.3.4-1.el9.x86_64      libid3tag-0.15.1b-35.el9.x86_64
  libjxl-0.7.0-1.el9.x86_64              libmodplug-1:0.8.9.0-13.el9.x86_64
  libogg-2:1.3.4-6.el9.x86_64            libopenmpt-0.7.11-1.el9.x86_64
  librabbitmq-0.11.0-7.el9.x86_64        librist-0.2.7-1.el9.x86_64
  libsodium-1.0.18-8.el9.x86_64          libswresample-free-5.1.4-2.el9.x86_64
  libtheora-1:1.1.1-31.el9.x86_64        libudfread-1.1.2-2.el9.x86_64
  libunwind-1.6.2-1.el9.x86_64           libva-2.20.0-1.el9.x86_64
  libvdpau-1.5-1.el9.x86_64              libvmaf-2.3.0-2.el9.x86_64
  libvorbis-1:1.3.7-5.el9.x86_64         libvpx-1.9.0-7.el9_2.alma.1.x86_64
  libwayland-client-1.21.0-1.el9.x86_64  libwebp-1.2.0-8.el9_3.x86_64
  libxshmfence-1.3-10.el9.x86_64         lpcnetfreedv-0.2-11.el9.x86_64
  mbedtls-2.28.8-1.el9.x86_64            mesa-filesystem-23.3.3-1.el9.alma.1.x86_64
  mesa-libGL-23.3.3-1.el9.alma.1.x86_64  mesa-libglapi-23.3.3-1.el9.alma.1.x86_64
  minidlna-1.3.3-3.el9.x86_64            mpg123-libs-1.26.2-5.el9.x86_64
  ocl-icd-2.2.13-4.el9.x86_64            opencore-amr-0.1.6-3.el9.x86_64
  openh264-2.3.1-1.el9.x86_64            openjpeg2-2.4.0-7.el9.x86_64
  openpgm-5.2.122-28.el9.x86_64          opus-1.3.1-10.el9.x86_64
  rav1e-libs-0.7.1-3.el9.x86_64          soxr-0.1.3-11.el9.x86_64
  speex-1.2.0-11.el9.x86_64              srt-libs-1.4.4-1.el9.x86_64
  svt-av1-libs-0.9.0-1.el9.x86_64        twolame-libs-0.3.13-19.el9.x86_64
  vapoursynth-libs-57-1.el9.x86_64       vo-amrwbenc-0.1.3-18.el9.x86_64
  xvidcore-1.3.7-9.el9.x86_64            zeromq-4.3.4-2.el9.x86_64
  zimg-3.0.5-1.el9.x86_64                zvbi-0.2.35-15.el9.x86_64
```

</details>

---

- minidlnaユーザ/グループを確認 (minidlnaインストール時に自動で作成されているはず）

```bash
cat /etc/passwd | grep minidlna
#以下のよう表示されることを確認
minidlna:x:986:986:minidlna service account:/:/usr/sbin/nologin


cat /etc/group | grep minidlna
#以下のよう表示されることを確認
minidlna:x:986:
```


- メディアファイル用のフォルダを作成

　　～フォルダの所有者を変更する (minidlnaは、minidlnaユーザ/グループで動作するため)

```bash
sudo mkdir /dlna
sudo chown minidlna:minidlna /dlna
```

- minidlnaコンフィグの設定

```bash
# コンフィグの元ファイルをバックアップしておく
sudo cp /etc/minidlna.conf /etc/minidlna.conf.bak

# コンフィグを vi で開く
sudo vi /etc/minidlna.conf

以下の部分を書き換えます
#media_dir=/opt
media_dir=/dlna

#notify_interval=900
notify_interval=60
```

- 上の notify 関連の設定を変更する

```bash
sudo cp /etc/sysctl.conf /etc/sysctl.conf.bak
sudo vi /etc/sysctl.conf

以下の行をファイルの末尾に追記する
fs.inotify.max_user_watches=2000
```

- 設定ファイルの読み込み～サービスの状態確認

```bash
# reload だとエラーが出てしまいました
## sudo systemctl reload minidlna.service
## Failed to reload minidlna.service: Job type reload is not applicable for unit minidlna.service.

# サービスの再起動をして設定を読み込みます。
sudo systemctl restart minidlna.service

# 自動起動の設定
sudo systemctl enable minidlna.service

# 状態の確認
sudo systemctl status minidlna.service

```

<!--
または

```bash
sudo service minidlna restart
Redirecting to /bin/systemctl restart minidlna.service

sudo service minidlna status
Redirecting to /bin/systemctl status minidlna.service
```
-->


以下のように表示されればOK

※グリーンの箇所が、enabled と active (runnning) になっているか確認する

![dlna-status.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3774516/fb50ab26-0fa6-5c56-ec8d-27672ea9e6cc.jpeg)


nmap でポートが開いているか確認します。一番下の行：[8200/tcp open trivnet1] があればOK。

```bash
$ nmap localhost
Starting Nmap 7.92 ( https://nmap.org ) at 2024-04-25 09:52 JST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00022s latency).
Other addresses for localhost (not scanned): ::1
Not shown: 998 closed tcp ports (conn-refused)
PORT     STATE SERVICE
22/tcp   open  ssh
8200/tcp open  trivnet1
```



## [6] メディアの準備

-  /dlna フォルダに、再生したい動画や音楽ファイルをアップロードする


---

### [6-1] SCP を使う場合

※ AlmaLinux 9.4 をインストールした場合、
標準で Port 22/tcp で SSHサーバーが起動しているはずなので、Linux側で特に準備は要りません。

※ファイルはWinSCPなどでアップロードする。 (Windowsの場合)

https://winscp.net/eng/download.php



- **WinSCPから minidlna ユーザーでログインする**

minidlna ユーザーは、minidlnaをインストールする時に自動で作成されます。
しかし、以下の理由で、ログインは出来ないようなっています。

`ログインパスワードが設定されていない`
`シェルがnologinになっている`

```bash
$ cat /etc/passwd | grep minidlna
minidlna:x:984:984:minidlna service account:/:/usr/sbin/nologin
```

というわけで、
設定を変更します。


- **ログインパスワードの設定**

```bash
$ sudo passwd minidlna
ユーザー minidlna のパスワードを変更。
新しい パスワード:
新しい パスワードを再入力してください:
passwd: すべての認証トークンが正しく更新できました。
$
```

- **シェルの変更**
```bash
$ sudo chsh minidlna
minidlna のシェルを変更します。
新しいシェル [/usr/sbin/nologin]: /bin/bash
シェルを変更しました。
$
```
- **SSHでログインできるか確認**
(ここでは TeraTermを使っていますが、お好みのアプリでOK)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3774516/db61de5d-f34e-047d-ac0e-b47fe49cded8.png)

- **ログイン出来ることと、変更されたシェルの確認**

```bash
$ w
 23:23:03 up  1:43,  3 users,  load average: 0.00, 0.00, 0.00
USER     TTY        LOGIN@   IDLE   JCPU   PCPU WHAT
minidlna pts/1     14:31    5.00s  0.01s  0.00s w
$

$ echo $SHELL
/bin/bash
$
```

- **WinSCPでログインしてみます**


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3774516/4f0d679d-395e-8293-ccaa-5ceae5ea2e5e.png)

アップロードする場所は、さきほど作成した ルート直下の **/dlna** フォルダ。 

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3774516/6746f5e5-2bf0-9340-10f3-dcd0c61c366f.png)

アップロード出来ると、上のように見えます。


※Sambaを使わない場合には、


---

### [6-2] Samba　を使う場合

- **Samba 基本設定**

```bash
sudo dnf install samba
```

依存ファイルを含めて 7パッケージ がインストールされました。
```bash
インストール済み:
  cups-libs-1:2.3.3op2-27.el9_4.x86_64       libnetapi-4.19.4-105.el9_4.x86_64
  samba-4.19.4-105.el9_4.x86_64              samba-common-tools-4.19.4-105.el9_4.x86_64
  samba-dcerpc-4.19.4-105.el9_4.x86_64       samba-ldb-ldap-modules-4.19.4-105.el9_4.x86_64
  samba-libs-4.19.4-105.el9_4.x86_64
```

サービスを起動します
```bash
sudo systemctl start smb.service

# nmb は、この手順では使いません
# sudo systemctl start nmb.service
```

- **(オプション) 必要に応じてSamba用のユーザーを作成します**

※この手順では、すべてのユーザーが自由に書き込みできる設定にしますので、とりあえずDLNAを使いたいだけなら、ユーザーは作成しなくてもOKです。

```bash
# 作成 ("username"は任意の名前にしてください)
sudo pdbedit -a username

# 確認
sudo pdbedit -L
```


● Sambaのコンフィグ設定

```bash
# 元ファイルのバックアップをとっておく
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak

# ファイルの編集
sudo vi /etc/samba/smb.conf
```

- 以下のように編集します。

`● [global] は、cups options 行までは変更なし、その下は手動で追加します`
　　`★interfaces行は、下に別途注意書きがあります！！`
`● デフォルトで存在する [printers]と[print$] は、この手順書では使わないので削除しています`
`● 一番下の [minidlna] は、そのままコピペします`


```bash
# See smb.conf.example for a more detailed config file or
# read the smb.conf manpage.
# Run 'testparm' to verify the config is correct after
# you modified it.
#
# Note:
# SMB1 is disabled by default. This means clients without support for SMB2 or
# SMB3 are no longer able to connect to smbd (by default).

[global]
        workgroup = SAMBA      
        security = user

        passdb backend = tdbsam

        printing = cups
        printcap name = cups
        load printers = yes
        cups options = raw
        
        ### 手動で追加分
        dos charset = CP932
				unix charset = UTF-8
				#interfaces = 192.168.2.0/24 eth0
				interfaces = 192.168.2.0/24 ens160
				hosts allow = 127.0.0.0/8 192.168.2.0/24
        hosts deny = all
        guest account = nobody
        map to guest = Bad User
				
								
[homes]
        comment = Home Directories
        valid users = %S, %D%w%S
        browseable = No
        read only = No
        inherit acls = Yes


### 以下、手動で追加分 ###

### 個別のアプリごとの共有フォルダを設定する
### path の対象フォルダは作成してパーミッションを設定すること

       
[minidlna]
       path = /dlna
       writable = yes
       guest ok = yes
       guest only = yes
       read only = no
       force create mode = 0777
       force directory mode = 0777
       public = yes
```


**特に、interfaces の行に注意**
　IPアドレス と インターフェース名 は、ご自身の環境に合わせて変更してください。
   `interfaces = 192.168.2.0/24 ens160` ← この行


---> nmcliコマンドで確認するのが簡単です。
```
$ nmcli
ens160: 接続済み から ens160
        "VMware VMXNET3"
        ethernet (vmxnet3), 00:0C:29:80:85:61, hw, mtu 1500
        ip4 デフォルト
        inet4 192.168.2.222/24
        route4 192.168.2.0/24 metric 100
        route4 default via 192.168.2.1 metric 100
```



- **設定内容の確認**

以下のコマンドで構文チェックが出来ます。

```bash
testparm
```


- **設定ファイルの読み込み～サービスの状態確認**

```bash
# サービスの再起動をして設定を読み込みます。
sudo systemctl restart smb.service

# 自動起動の設定
sudo systemctl enable smb.service

# 状態の確認
sudo systemctl status smb.service


# nmb は、この手順では使いません
#sudo systemctl restart nmb.service
#sudo systemctl enable nmb.service
#sudo systemctl status nmb.service
```


- **共有フォルダのパーミッション修正**

さきほどAlmaLinuxのルートに作成した **/dlna** フォルダ ですが、
現在のパーミッションは以下のようになってるはずです。

```bash
$ ls -al /dlna
合計 0
drwxr-xr-x.  2 minidlna minidlna   6  4月 25 09:43 .
dr-xr-xr-x. 19 root     root     247  4月 25 09:43 ..
```

このままでは書き込みが出来ませんので、修正します。

```bash
# パーミッション変更
$ sudo chmod 777 /dlna/

# 確認
$ ls -al /dlna
合計 0
drwxrwxrwx.  2 minidlna minidlna   6  4月 25 13:53 .　　　　<----この行
dr-xr-xr-x. 19 root     root     247  4月 25 09:43 ..
```


---

- **ファイルのアップロード**

Windows の「ファイル名を指定して実行」からログインしてみます。
 (コピペ用 `\\192.168.2.200` )

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3774516/8cf7b337-08fc-2770-776f-7a876a7d0ee5.png)


以下のように見えるはずです。
この中に、ファイルを放り込みます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3774516/1d53db64-5137-1646-ce6b-1072c57967cc.png)

アップロードが出来ると、こんな感じになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3774516/aa37a5bb-ce18-312b-26ca-8a689b308e22.png)



- **アップロードしたファイルの確認**

（例）アップロード後の **/dlna** フォルダの状態

```bash
$ ls -al /dlna
合計 17492
drwxrwxrwx.  2 minidlna minidlna       27  4月 25 14:03 .
dr-xr-xr-x. 19 root     root          247  4月 25 09:43 ..
-rwxrwxrwx.  1 nobody   nobody   17908660  9月  6  2020 DLNA-TEST.mp4
```


## [7] MiniDLNAがメディアを認識しているかの確認

- アップロードしたファイルが、minidlnaで認識できているか、ブラウザから確認できます。
- 
**IPアドレス は、環境にあわせて変更してください。** この例では *192.168.2.200/24* )

http://192.168.2.200:8200/

以下のような画面が表示されます。
アップロードしたファイルの種類と数があっていれば、minidlnaに正しく認識されています。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3774516/fa847c10-1416-8507-0a99-cf204cfd85b8.png" width="80%">



### ★★★メディアが認識されていない場合
この後の、
**トラブルシューティング：「minidlnaまわり」** を確認してください。


---

## [8] 別の端末から、メディアが再生できるか確認する

お手元のDLNAクライアントで確認してください。

ここでは スマホ版の vlc media player や PlayStation 3 を使って確認してみました。



### [8-1] vlc media player (Android版)


- 今回はAndroidで試してみました。

https://play.google.com/store/apps/details?id=org.videolan.vlc&hl=ja&gl=US


・同一ネットワークに接続して、アプリを起動したところ、DLNA Serverが見えました。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3774516/428c7de3-62ee-0bc2-44f4-2051da4b0606.png" width="50%">

フォルダを移動すると、無事にファイルが見えました。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3774516/3494fefc-c6e4-3115-8bba-19f783e9d214.png" width="50%">

再生できました。

![Screenshot_android.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3774516/0da19b1c-8ff7-ef06-95a0-bdcae9a52159.jpeg)



### [8-2] PS3 (PlayStation 3)

今更ですが、PS3はDLNAクライアント機能があるので、試してみました。

テスト環境は、**システムソフトウェア 4.91** 。
（ずっと前のバージョンからDLNAクライアント機能は問題無いので、どのバージョンでも大丈夫と思います）

https://www.playstation.com/ja-jp/support/hardware/ps3/system-software/




同一ネットワーク内で起動したところ、見えました。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3774516/c319f038-917c-0a0c-7f59-5887e7139718.jpeg" width="80%">

フォルダを辿るとファイルも見えました。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3774516/87b3579a-4011-bea9-423e-8389af150377.jpeg" width="80%">



再生も問題ありません。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3774516/5bd15c9a-ca05-c005-3d53-6c9f75ee711d.jpeg" width="80%">



 

## [9] トラブルシューティング

### [9-1] minidlna のトラブル対応

- メディアファイルがブラウザ上でカウントされていない場合、minidlnaサーバがファイルを認識できていません。

その場合には、以下の方法で対応してみてください。

**Step 1. ファイルのデータベースを削除する**
**Step 2. minidlnaサーバを再起動する**

```bash
# ディレクトリの確認
$ sudo ls -l /var/cache/minidlna/
合計 152
-rw-r--r--. 1 minidlna minidlna 77824  3月 16 16:24 files.db
-rw-r--r--. 1 root     root     77824  3月  5 18:29 files.db.bak

# 以下のコマンドをそれぞれ実行する

sudo rm -f /var/cache/minidlna/files.db
sudo service minidlna restart

```

↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

毎回、入力するのも面倒ですので、簡単なスクリプトにしてみました。

以下で、自動的にデータベースを削除して、結果を表示できます。

```bash
# ファイルの確認（作り方は後述します）
$ ls -l dlna-refresh.sh
-rwxr-xr-x. 1 user user 353  3月 17 08:46 dlna-refresh.sh
$

# スクリプトの実行
$ sudo sh /home/user/dlna-refresh.sh
Redirecting to /bin/systemctl restart minidlna.service
合計 192
drwxr-xr-x. 3 minidlna minidlna     18  3月 17 09:08 art_cache
-rw-r--r--. 1 minidlna minidlna 77824  3月 25 23:12 files.db　　　<----実行した日時になっていればOK

[tpy@alma-dlna ~]$

$
```
※ `files.db `ファイルについて：このファイルの日時がスクリプトを実行した時間になっていればOK
※ `art_cache`フォルダについて：共有フォルダに、画像を置いた場合、自動で作成される場合があります。



- スクリプトの中身 (/home/user/dlna-refresh.sh)

```bash
# ファイルの作成 (置き場所は管理用のユーザーのホームにしてみました。お好みの場所で。)
sudo vi /home/user/dlna-refresh.sh
```

```bash
#!/bin/bash

# Step 1: Remove ".db" to reflesh minidlna database.
rm -f /var/cache/minidlna/files.db

# Step 2: Restart minidlna to make and load a new .db file.
sudo service minidlna restart

# Step 3: Sleep a few seconds to wait for Step 2 to complete.
sleep 2

# Setep 4: Output the result to your display screen.
sudo ls -l /var/cache/minidlna/
```


### [9-2] Samba のトラブル対応

- 以下のようなエラーになる場合

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3774516/4926d250-0754-5f9c-0815-2f4498c8b6fd.png)

上の設定で共有フォルダに書き込めない／開けない、と言った場合は、
おそらくLinux側のパーミッションの設定です。


■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

※ゲストでも書き込みができない場合は、

Lunix上での対象フォルダのパーミッションを再度確認してみてください。

↑ その他ユーザーにも書き込み権が必要

```bash
$ ls -al
合計 24
dr-xr-xr-x.  19 root     root      247  3月  5 19:42 .
dr-xr-xr-x.  19 root     root      247  3月  5 19:42 ..
dr-xr-xr-x.   2 root     root        6  3月 25  2022 afs
lrwxrwxrwx.   1 root     root        7  3月 25  2022 bin -> usr/bin
dr-xr-xr-x.   5 root     root     4096  3月 25 09:54 boot
drwxr-xr-x.  20 root     root     3320  3月 28 19:08 dev
drwxrwxrwx.   9 minidlna minidlna  191  3月 28 19:45 dlna   <--- この行に注意
```
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■




<!--
### ▼ ファイルの削除ができない！？

今回は、SCP と Samba の、２通りのアップロード方法をご案内しました。

このため、書き込みに使用しているユーザーがそれぞれ異なります。


- WinSCPで確認
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3774516/f5531f68-4aed-f32c-9c4c-990dd26e8c75.png)

- コマンドで確認
```bash
$ ls -al /dlna/
合計 39732
drwxrwxrwx.  2 minidlna minidlna       52  4月 25 14:50 .
dr-xr-xr-x. 19 root     root          247  4月 25 09:43 ..
-rw-r--r--.  1 minidlna minidlna 17908660  9月  6  2020 DLNA-TEST01.mp4
-rwxrwxrwx.  1 nobody   nobody   22772666 12月 29  2020 DLNA-TEST02.mp4
$
```

どちらか一方でアップロードしたファイルが、もう片方からは削除できない場合があります。

そのため、実際の運用にあたっては、どちらか一方の方法に統一したほうが良いでしょう。
-->


---

# 参考にさせていただいたサイト

- **Samba関連**

https://qiita.com/k-Mata/items/8bee9e02e74565b6c147

https://inaz2.hatenablog.com/entry/2013/07/07/054616

https://web.chaperone.jp/w/index.php?samba/smb%B6%A6%CD%AD



---

## 最後に

最後までお読みいただきありがとうございました。

動画サイト隆盛のご時世に、需要があるかわかりませんが、ずっと気になったままになっていたので作ってみました。

実際手を動かしてみると、思っていた以上に楽しかったです。

せっかくなので記録に残しておこうと思い、こちらに投稿してみました。
どなたかのご参考にでもなれば幸いです。

---

最後の最後に、身も蓋も無い話なのですが、DLNAサーバーを立てるなら以下のフリーソフトが簡単で便利です。インストールしたら、共有したいフォルダを指定するだけなので、実用性も高いです。

https://www.universalmediaserver.com/

それでも、Linuxでサーバーを立ててみることは、よい経験にもなりましたので、ご興味のある方がいらっしゃいましたら、どうぞ minidlna を使ってのサーバー作成をぜひお試しください。



---

＜おしまい＞