2025年9月:記事をアップデートしました。
Alma Linux 9.6 に対応しました。
※以前から見ていただいた方へ:
9.3以降、各configに変りありません。
OS,アプリ類はいくつかバージョンアップしているものがあります。
手順は、minidlnaアカウントのシェル変更方法だけ、AlmaLinux9.6にあわせて修正してあります。
やりたいこと
Alma Linux で DLNA Server を自作する。
・手順どおり作業すれば、誰でも作れる仕様にする。
・実用性が欲しいので、一度作ってしまえば運用しやすい仕組みにする。
尚、ハードウェアは古いPCを再利用する。
[0] DLNA とは ?
そもそもDLNAって何だったっけ?という場合に備えて、引用させていただきました。
DLNA (Digital Living Network Alliance) は、
ホーム ネットワークを介して音楽、画像、動画 (HD コンテンツ) をストリームすることができます。
このページの説明のうち、一番上に記載のある、DMP機能のサーバーを作ります。
DMP (デジタル メディア プレーヤー)
UPnP/DLNA ネットワークを介して、他のデバイスから HD 動画、画像、音楽をストリームします。
※ 引用は、いずれもCyperLink社さんの上記のHPより。
[1] 構成図
- DLNAサーバーの IPアドレスは
192.168.2.200/24を使用しています。
[2] 利用するOS/パッケージについて
| Function | OS / Package | Version |
|---|---|---|
| OS | AlmaLinux release 9.6 (Sage Margay) | 5.14.0-570.39.1.el9_6.x86_64 |
| DLNA Server | MiniDLNA (aka ReadyDLNA) | minidlna-1.3.3-3.el9.x86_64.rpm |
| File Server (option) | Samba | samba-4.21.3-7.el9_6.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)の環境でも試しましたが特に問題なく動作しました。
ただし、OSインストール時は 4GB以上を推奨します
<Storageについて>
-
速度的にはHDDでもあまり気になりませんでした。
(機能が限られているため、OS起動にあまり時間がかからない) -
ただし、容量については、用途にあわせて大きめのものを推奨いたします。
(動画ファイルをたくさん入れたい場合)
[4] OSのインストールと初期設定
- Alma Linux 9.6
マルチユーザーモード/CUI で ISOファイル からインストール。
・インストール時の「ソフトフェアの選択」にて、以下の項目を選択してください。
(画像右側の「選択した環境用のその他のソフトウェア」は何も選択しない)
ファイル直リンク(11GB)
https://ftp.riken.jp/Linux/almalinux/9.6/isos/x86_64/AlmaLinux-9.6-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 を適用する。
sudo dnf install epel-release
- OSをアップデート/アップグレード
sudo dnf update
sudo dnf upgrade
- よく使うツールをインストール (オプション)
sudo dnf install nmap traceroute sysstat
- ファイアウォールを無効にする(宅内での利用を想定しているため)
#サービスを停止する
sudo systemctl stop firewalld.service
#再起動時に、サービスが起動しないように無効化しておく
sudo systemctl disable firewalld.service
#設定が反映されいるか確認
sudo systemctl status firewalld.service
- selinuxを無効にする
状態を確認する(デフォルト値の Enforcing が表示される)
$ getenforce
Enforcing
設定を変更する
# まず、元ファイルをバックアップしておきます (オプション)
sudo cp /etc/selinux/config /etc/selinux/config.bak
以下のように書き換える (以下2つのどちらのパターンでもOK)
(viで直接編集する場合)
sudo vi /etc/selinux/config
#SELINUX=enforcing
SELINUX=permissive
(sedで置き換える場合)
# 置き換え
sudo sed -i "s/SELINUX=enforcing/SELINUX=permissive/g" /etc/selinux/config
# 確認
sudo cat /etc/selinux/config
一度、サーバを再起動する(下記のいずれかでOK)
sudo init 6
or
sudo shutdown -r now
or
sudo reboot
再起動したら、状態を確認する(Permissiveと表示されればOK)
$ getenfoce
Permissive
[5] minidlnaの設定
- minidlna をインストール
sudo dnf install minidlna
- 依存ファイルを含めて 105パッケージ がインストールされました。
中身を見るにはココをクリックしてください
Installed:
avahi-libs-0.8-22.el9_6.1.x86_64 cairo-1.17.4-7.el9.x86_64
cairo-gobject-1.17.4-7.el9.x86_64 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
fontconfig-2.14.0-2.el9_1.x86_64 freetype-2.10.4-10.el9_5.x86_64
fribidi-1.0.10-6.el9.2.x86_64 game-music-emu-0.6.3-9.el9.x86_64
gdk-pixbuf2-2.42.6-6.el9_6.x86_64 graphite2-1.3.14-9.el9.x86_64
gsm-1.0.19-6.el9.x86_64 harfbuzz-2.7.4-10.el9.x86_64
highway-1.2.0-7.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.2-2.el9.x86_64
lame-libs-3.100-12.el9.x86_64 libX11-1.7.0-11.el9.x86_64
libX11-common-1.7.0-11.el9.noarch libX11-xcb-1.7.0-11.el9.x86_64
libXau-1.0.9-8.el9.x86_64 libXext-1.3.4-8.el9.x86_64
libXfixes-5.0.3-16.el9.x86_64 libXft-2.3.3-8.el9.x86_64
libXrender-0.9.10-16.el9.x86_64 libXxf86vm-1.1.4-18.el9.x86_64
libaom-3.12.0-1.el9.x86_64 libavcodec-free-5.1.4-3.el9.x86_64
libavformat-free-5.1.4-3.el9.x86_64 libavutil-free-5.1.4-3.el9.x86_64
libbluray-1.3.4-1.el9.x86_64 libchromaprint-1.5.1-1.el9.x86_64
libdatrie-0.2.13-4.el9.x86_64 libdav1d-1.5.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 libicu-67.1-10.el9_6.x86_64
libid3tag-0.15.1b-35.el9.x86_64 libjpeg-turbo-2.0.90-7.el9.x86_64
libjxl-0.7.2-2.el9.x86_64 libmodplug-1:0.8.9.0-13.el9.x86_64
libogg-2:1.3.4-6.el9.x86_64 libopenmpt-0.8.1-1.el9.x86_64
libpng-2:1.6.37-12.el9.x86_64 librabbitmq-0.11.0-7.el9.x86_64
librist-0.2.7-1.el9.x86_64 librsvg2-2.50.7-3.el9.x86_64
libsmbclient-4.21.3-7.el9_6.x86_64 libsodium-1.0.18-8.el9.x86_64
libswresample-free-5.1.4-3.el9.x86_64 libthai-0.1.28-8.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.22.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-9.el9_6.x86_64
libwayland-client-1.21.0-1.el9.x86_64 libwayland-server-1.21.0-1.el9.x86_64
libwbclient-4.21.3-7.el9_6.x86_64 libwebp-1.2.0-8.el9_3.x86_64
libxcb-1.13.1-9.el9.x86_64 libxshmfence-1.3-10.el9.x86_64
llvm-libs-19.1.7-2.el9.x86_64 lpcnetfreedv-0.2-11.el9.x86_64
mbedtls-2.28.8-1.el9.x86_64 mesa-dri-drivers-24.2.8-2.el9_6.alma.1.x86_64
mesa-filesystem-24.2.8-2.el9_6.alma.1.x86_64 mesa-libGL-24.2.8-2.el9_6.alma.1.x86_64
mesa-libgbm-24.2.8-2.el9_6.alma.1.x86_64 mesa-libglapi-24.2.8-2.el9_6.alma.1.x86_64
minidlna-1.3.3-3.el9.x86_64 mpg123-libs-1.32.9-1.el9_5.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-8.el9.x86_64
openpgm-5.2.122-28.el9.x86_64 opus-1.3.1-10.el9.x86_64
pango-1.48.7-3.el9.x86_64 pixman-0.40.0-6.el9_3.x86_64
rav1e-libs-0.7.1-5.el9.x86_64 samba-client-libs-4.21.3-7.el9_6.x86_64
samba-common-4.21.3-7.el9_6.noarch samba-common-libs-4.21.3-7.el9_6.x86_64
shared-mime-info-2.1-5.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-4.el9.x86_64 vo-amrwbenc-0.1.3-18.el9.x86_64
xml-common-0.6.3-58.el9.noarch xvidcore-1.3.7-9.el9.x86_64
zeromq-4.3.4-2.el9.x86_64 zimg-3.0.6-2.el9.x86_64
zvbi-0.2.35-15.el9.x86_64
Complete!
- minidlnaユーザ/グループを確認 (minidlnaインストール時に自動で作成されているはず)
cat /etc/passwd | grep minidlna
#以下のよう表示されることを確認
minidlna:x:996:995:minidlna service account:/:/usr/sbin/nologin
cat /etc/group | grep minidlna
#以下のよう表示されることを確認
minidlna:x:995:
- メディアファイル用のフォルダを作成
~フォルダの所有者を変更する (minidlnaは、minidlnaユーザ/グループで動作するため)
sudo mkdir /dlna
sudo chown minidlna:minidlna /dlna
- minidlnaコンフィグの設定
# コンフィグの元ファイルをバックアップしておく
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 関連の設定を変更する
sudo cp /etc/sysctl.conf /etc/sysctl.conf.bak
sudo vi /etc/sysctl.conf
以下の行をファイルの末尾に追記する
fs.inotify.max_user_watches=2000
- 設定ファイルの読み込み~サービスの状態確認
# reload だとエラーが出てしまいました
## sudo systemctl reload minidlna.service
## Failed to reload minidilna.service: Unit minidilna.service not found.
# サービスの再起動をして設定を読み込みます。
sudo systemctl restart minidlna.service
# 自動起動の設定
sudo systemctl enable minidlna.service
# 状態の確認
sudo systemctl status minidlna.service
以下のように表示されればOK
※グリーンの箇所が、enabled と active (runnning) になっているか確認する
nmap でポートが開いているか確認します。一番下の行:8200/tcp open trivnet1 があればOK。
$ 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.6 をインストールした場合、
標準で Port 22/tcp で SSHサーバーが起動しているはずなので、Linux側で特に準備は要りません。
※ファイルはWinSCPなどでアップロードする。 (Windowsの場合)
- WinSCPから minidlna ユーザーでログインする
minidlna ユーザーは、minidlnaをインストールする時に自動で作成されます。
しかし、以下の理由で、ログインは出来ないようなっています。
ログインパスワードが設定されていない
シェルがnologinになっている
$ cat /etc/passwd | grep minidlna
minidlna:x:996:995:minidlna service account:/:/usr/sbin/nologin
というわけで、
設定を変更します。
- ログインパスワードの設定
$ sudo passwd minidlna
Changing password for user minidlna.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
$
- シェルの変更
# usermod コマンドを使います
sudo usermod -s /bin/bash minidlna
- 確認
# 確認方法
grep minidlna /etc/passwd
# 以下のように /bin/bash に変わっていればOK
minidlna:x:996:995:minidlna service account:/:/bin/bash
-
SSHでログインできるか確認
(ここでは TeraTermを使っていますが、お好みのアプリでOK)
- ログイン出来ることと、変更されたシェルの確認
$ 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でログインしてみます
アップロードする場所は、さきほど作成した ルート直下の /dlna フォルダ。
アップロード出来ると、上のように見えます。
[6-2] Samba を使う場合
- Samba 基本設定
sudo dnf install samba
依存ファイルを含めて 7パッケージ がインストールされました。
Installed:
cups-libs-1:2.3.3op2-33.el9.x86_64 libnetapi-4.21.3-7.el9_6.x86_64
samba-4.21.3-7.el9_6.x86_64 samba-common-tools-4.21.3-7.el9_6.x86_64
samba-dcerpc-4.21.3-7.el9_6.x86_64 samba-ldb-ldap-modules-4.21.3-7.el9_6.x86_64
samba-libs-4.21.3-7.el9_6.x86_64
サービスを起動します
sudo systemctl start smb.service
# nmb は、この手順では使いません
# sudo systemctl start nmb.service
- (オプション) 必要に応じてSamba用のユーザーを作成します
※この手順では、すべてのユーザーが自由に書き込みできる設定にしますので、とりあえずDLNAを使いたいだけなら、ユーザーは作成しなくてもOKです。
# 作成 ("username"は任意の名前にしてください)
sudo pdbedit -a username
# 確認
sudo pdbedit -L
● Sambaのコンフィグ設定
# 元ファイルのバックアップをとっておく
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
# ファイルの編集
sudo vi /etc/samba/smb.conf
- 以下のように編集します。
● [global] は、cups options 行までは変更なし、その下は手動で追加します
★interfaces行は、下に別途注意書きがあります!!
● デフォルトで存在する [printers]と[print$] は、この手順書では使わないので削除しています
● 一番下の [minidlna] は、そのままコピペします
# 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
- 設定内容の確認
以下のコマンドで構文チェックが出来ます。
testparm
- 設定ファイルの読み込み~サービスの状態確認
# サービスの再起動をして設定を読み込みます。
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 フォルダ ですが、
現在のパーミッションは以下のようになってるはずです。
$ 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 ..
このままでは書き込みが出来ませんので、修正します。
# パーミッション変更
$ 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 )
以下のように見えるはずです。
この中に、ファイルを放り込みます。
アップロードが出来ると、こんな感じになります。
- アップロードしたファイルの確認
(例)アップロード後の /dlna フォルダの状態
$ 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 )
以下のような画面が表示されます。
アップロードしたファイルの種類と数があっていれば、minidlnaに正しく認識されています。
★★★メディアが認識されていない場合
この後の、
トラブルシューティング:「minidlna のトラブル対応」 を確認してください。
[8] 別の端末から、メディアが再生できるか確認する
お手元のDLNAクライアントで確認してください。
ここでは スマホ版の vlc media player や PlayStation 3 を使って確認してみました。
[8-1] vlc media player (Android版)
- 今回はAndroidで試してみました。
・同一ネットワークに接続して、アプリを起動したところ、DLNA Serverが見えました。
再生できました。
[8-2] PS3 (PlayStation 3)
今更ですが、PS3はDLNAクライアント機能があるので、試してみました。
テスト環境は、システムソフトウェア 4.92 。
(ずっと前のバージョンからDLNAクライアント機能は問題無いので、どのバージョンでも大丈夫と思います)
同一ネットワーク内で起動したところ、見えました。
フォルダを辿るとファイルも見えました。
再生も問題ありません。
[9] トラブルシューティング
[9-1] minidlna のトラブル対応
- メディアファイルがブラウザ上でカウントされていない場合、minidlnaサーバがファイルを認識できていません。
その場合には、以下の方法で対応してみてください。
Step 1. ファイルのデータベースを削除する
Step 2. minidlnaサーバを再起動する
# ディレクトリの確認
$ 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
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
毎回、入力するのも面倒ですので、簡単なスクリプトにしてみました。
以下で、自動的にデータベースを削除して、結果を表示できます。
# ファイルの確認(作り方は後述します)
$ 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)
# ファイルの作成 (置き場所は管理用のユーザーのホームにしてみました。お好みの場所で。)
sudo vi /home/user/dlna-refresh.sh
#!/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 のトラブル対応
- 以下のようなエラーになる場合
上の設定で共有フォルダに書き込めない/開けない、と言った場合は、
おそらくLinux側のパーミッションの設定です。
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
※ゲストでも書き込みができない場合は、
Lunix上での対象フォルダのパーミッションを再度確認してみてください。
↑ その他ユーザーにも書き込み権が必要
$ 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 <--- この行に注意
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
参考にさせていただいたサイト
- Samba関連
最後に
最後までお読みいただきありがとうございました。
動画サイト隆盛のご時世に、需要があるかわかりませんが、ずっと気になったままになっていたので作ってみました。
実際手を動かしてみると、思っていた以上に楽しかったです。
せっかくなので記録に残しておこうと思い、こちらに投稿してみました。
どなたかのご参考にでもなれば幸いです。
最後の最後に、身も蓋も無い話なのですが、DLNAサーバーを立てるなら以下のフリーソフトが簡単で便利です。インストールしたら、共有したいフォルダを指定するだけなので、実用性も高いです。
それでも、Linuxでサーバーを立ててみることは、よい経験にもなりましたので、ご興味のある方がいらっしゃいましたら、どうぞ minidlna を使ってのサーバー作成をぜひお試しください。
<おしまい>
更新履歴
2024/05/13 : 初版発行 (AlmaLinux9.3向け)
2024/11/18 : Almalinux9.4 に対応
2025/09/16 : AlmaLinux9.6 に対応 (OSバージョンのフォローアップ終了)
2025/09/16 : 10000 view 達成! ありがとうございます!
2025/09/17 : minidlna/samba インストール~設定の自動化に対応 (optionセクションにて)
2025/09 追記
◆ option ◆
一部のLinux側の設定を自動化する “bashのシェルスクリプト” を作成してみました。
※「[4] OSのインストールと初期設定」まで済んでいる前提。
内容は、おおよそ 手順 [5] ~ [9-1] の手順で、minidlnaとSambaのインストールに加えて、関連するユーザーやファイル/フォルダの設定等も含みます。
- サーバのIPアドレスは
192.168.2.200/24 (本文内と同じ)を使用しています。 - 設定は環境に合わせて変更してください。メディア保存用の 共有フォルダ(初期値:/dlna) や パスワード (初期値:Password01#) 等。
(その他、詳しくはスクリプト内にコメントをご参照ください)
※ 尚、セキュリティは殆ど考慮していませんので、ご利用に際しては、 完全に自己責任で お願いします。パーミッション、ファイアウォールのルール、Sambaの設定など、かなりゆるい設定になっているので、各自の環境にあわせてカスタマイズしてみてください。
details
<手順はこちら>
- 1. スクリプトファイルの作成
まず、Linuxにログインした一般ユーザーの状態で、スクリプトファイルを作成します。以下のコマンドを使ってください。
vi ~/dlna-samba-setup.sh
このコマンドで vi エディタが開き、あなたのホームディレクトリに dlna-samba-setup.sh という名前の新しいファイルが作成されます。
エディタが開いたら、「i」キーを押して挿入モードに切り替え、提供したスクリプトの内容をすべて貼り付けます。
貼り付けが完了したら、「Esc」キーを押して挿入モードを抜け、:wq と入力して**「Enter」キー**を押します。これでファイルが保存され、エディタが閉じます。
スクリプト
#!/bin/bash
# --- 1. sudo 権限と実行ユーザーの確認 ---
# root権限で実行されていることを確認。
if [ "$(id -u)" -ne 0 ]; then
echo "このスクリプトは、root権限で実行する必要があります。" >&2
echo "以下のコマンドで再度実行してください。" >&2
echo "" >&2
echo "sudo ~/dlna-samba-setup.sh" >&2
echo "" >&2
exit 1
fi
# --- 2. 必要なパッケージのインストール ---
echo "必要なパッケージをインストールします..."
dnf -y install minidlna samba
echo ""
# --- 3. minidlnaユーザーの設定変更 ---
echo "minidlnaユーザーのパスワードとシェルを変更します..."
echo ""
# パスワードを "Password01#" に変更
echo "minidlna:Password01#" | chpasswd
# シェルを "/bin/bash" に変更
usermod -s /bin/bash minidlna
echo ""
# --- 4. 共有ディレクトリの作成とパーミッション設定 ---
# ルート直下に /dlna ディレクトリを作成。
echo "共有ディレクトリを作成し、パーミッションを設定します..."
echo ""
mkdir -p /dlna/Videos /dlna/Music /dlna/Pictures
chown -R minidlna:minidlna /dlna
chmod -R 777 /dlna
echo ""
echo ""
# --- 5. minidlnaの設定ファイルの編集 ---
echo "minidlnaの設定ファイルを編集します..."
echo ""
echo "元ファイルのバックアップを作成します..."
cp /etc/minidlna.conf /etc/minidlna.conf.bak
echo ""
echo "########## <コンフィグ作成> ここから ##########"
echo ""
cat <<EOL | tee /etc/minidlna.conf
# port for HTTP (descriptions, SOAP, media transfer) traffic
port=8200
#media_dir=/opt
media_dir=/dlna
# this should be a list of file names to check for when searching for album art
# note: names should be delimited with a forward slash ("/")
album_art_names=Cover.jpg/cover.jpg/AlbumArtSmall.jpg/albumartsmall.jpg/AlbumArt.jpg/albumart.jpg/Album.jpg/album.jpg/Folder.jpg/folder.jpg/Thumb.jpg/thumb.jpg
# set this to no to disable inotify monitoring to automatically discover new files
# note: the default is yes
inotify=yes
# set this to yes to enable support for streaming .jpg and .mp3 files to a TiVo supporting HMO
enable_tivo=no
# set this to beacon to use legacy broadcast discovery method
# defauts to bonjour if avahi is available
tivo_discovery=bonjour
# set this to strictly adhere to DLNA standards.
# * This will allow server-side downscaling of very large JPEG images,
# which may hurt JPEG serving performance on (at least) Sony DLNA products.
strict_dlna=no
# notify interval in seconds. default is 895 seconds.
#notify_interval=900
notify_interval=60
# serial and model number the daemon will report to clients
# in its XML description
serial=12345678
model_number=1
EOL
echo ""
echo "########## <コンフィグ作成> ここまで ##########"
echo ""
echo ""
# --- 6. Sambaの設定ファイルの編集 ---
echo "Sambaの設定ファイルを編集します..."
echo ""
echo "元ファイルのバックアップを作成します..."
cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
echo ""
echo "########## <コンフィグ作成> ここから ##########"
echo ""
cat <<'EOL' | tee -a /etc/samba/smb.conf
[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
EOL
echo ""
echo "########## <コンフィグ作成> ここまで ##########"
echo ""
echo ""
# --- 7. ファイアウォールの設定 ---
echo "ファイアウォールを設定します..."
echo ""
firewall-cmd --add-service=dlna-server --zone=public --permanent
firewall-cmd --add-service=samba --zone=public --permanent
firewall-cmd --reload
echo ""
# --- 8. サービスの起動と自動起動設定 ---
echo "サービスを起動し、自動起動を設定します..."
echo ""
systemctl enable --now minidlna
systemctl enable --now smb
systemctl restart smb
echo ""
# --- 9. DLNAデータベースのリフレッシュ用スクリプト作成 ---
echo "DLNAデータベースのリフレッシュ用スクリプトを作成します..."
echo ""
echo "########## <コンフィグ作成> ここから ##########"
echo ""
echo ""
# ログインユーザーのホームディレクトリを取得
LOGIN_USER=$(logname)
SCRIPT_PATH="/home/$LOGIN_USER/dlna-refresh.sh"
cat <<'EOF' | tee "$SCRIPT_PATH"
#!/bin/bash
# Step 1: Remove ".db" to refresh minidlna database.
rm -f /var/cache/minidlna/files.db
# Step 2: Restart minidlna to make and load a new .db file.
service minidlna restart
# Step 3: Sleep a few seconds to wait for Step 2 to complete.
sleep 2
# Step 4: Output the result to your display screen.
ls -l /var/cache/minidlna/
EOF
echo ""
echo "########## <コンフィグ作成> ここまで ##########"
echo ""
# スクリプトに実行権限を付与
chmod +x "$SCRIPT_PATH"
echo ""
echo ""
echo ""
echo "スクリプトの実行が完了しました!"
echo ""
echo ""
# --- 10. ファイルの確認とパーミッションの表示 ---
echo "========================================"
echo " 設定ファイルの確認とパーミッション"
echo "========================================"
echo "以下の3つのファイルが作成されました。"
ls -l /etc/minidlna.conf
ls -l /etc/samba/smb.conf
ls -l "$SCRIPT_PATH"
echo ""
echo "以下のフォルダの権限を設定しました。"
ls -al /dlna
echo "----------------------------------------"
echo ""
# --- 11. ユーザーへの手動設定の案内 ---
echo ""
echo "========================================"
echo " 重要:最終設定のお願い"
echo "========================================"
echo "Sambaの設定ファイル (/etc/samba/smb.conf) の"
echo "'interfaces' の設定には、"
echo "あなたのネットワークインターフェース名が必要です。"
echo "現在、この設定は 'ens160' になっています。"
echo ""
echo "以下のコマンドを実行して、あなたの環境のネットワークインターフェース名を確認してください。"
echo ""
echo "nmcli"
echo ""
echo "表示された出力から、'connected' となっているインターフェース名を見つけてください。"
echo ""
echo "例:'ens160' や 'eth0' など"
echo ""
echo "その後、/etc/samba/smb.conf ファイルを開き、見つけた名前に書き換えてください。"
echo ""
echo "例:sudo vi /etc/samba/smb.conf"
echo ""
echo "========================================"
echo ""
echo ""
echo "/// End of this setup script ///."
- 2. 実行権限の付与
次に、作成したスクリプトに実行権限を与えます。
chmod +x ~/dlna-samba-setup.sh
このコマンドで、スクリプトファイルが実行可能な状態になります。
- 3. スクリプトの実行
最後に、sudo コマンドを使ってスクリプトを実行します。
sudo sh ~/dlna-samba-setup.sh
# または
sudo ~/dlna-samba-setup.sh
実行後、パスワードを求められたら、ログインユーザーのパスワードを入力してください。
スクリプトは最初から最後まで自動で実行され、最後にあなたが追加した**「設定ファイルの確認」と「最終設定のお願い」**のメッセージが表示されます。
作ってみた感想
そのうち作ろう、と思いつつ、後回しになっていました。。。
スクリプトのデバッグがてら、自分用にも再度 DLNAサーバを立ててみましたが、やっぱりスクリプト化しておくと、かなり便利になると改めて感じました。
ただ、本当に何も考えないで作れてしまうので、
特にLinuxに慣れていない方は、一度は手動でやってみることをお勧めします。
以上、どなたかのお役に立てれば幸いです。











