UPNP service fix - minissdpd service install and configure

This commit is contained in:
crocandr
2023-01-26 21:48:51 +01:00
parent eaf1b23513
commit ea836ce03c
4 changed files with 42 additions and 12 deletions

View File

@@ -1,6 +1,6 @@
FROM debian FROM debian:10
RUN apt-get update && apt-get install -y minidlna vim net-tools RUN apt-get update && apt-get install -y minidlna minissdpd net-tools
COPY files/start.sh /opt/start.sh COPY files/start.sh /opt/start.sh
RUN chmod 755 /opt/start.sh RUN chmod 755 /opt/start.sh

View File

@@ -12,12 +12,18 @@ docker build -t croc/minidlna .
## Run ## Run
``` ```
docker run -tid --name=minidlna --net=host -e SRVNAME=dockerlna -e "FOLDERS=/mnt/data/mp3,/mnt/data/movie,/mnt/data/torrent" -v /mnt/data/pub/:/mnt/data croc/minidlna /opt/start.sh docker run -tid --name=minidlna --net=host -e SRVNAME=dockerlna -e "FOLDERS=/mnt/data/mp3,/mnt/data/movie,/mnt/data/torrent" -v /mnt/data/pub/:/mnt/data croc/minidlna
``` ```
- `SRVNAME` - name of the minidlna - `SRVNAME` - name of the minidlna server
- `FOLDERS` - list of the shared folders in your volume (/mnt/data) - `FOLDERS` - list of the shared folders on your volume (/mnt/data)
Please use docker-compose file (from my Github page) for easier management. Please use docker-compose file (from my Github page) for easier management.
## Known errors
Container always restarts and `SSDP service start problem` message in the container logs.
Check the 1900 UDP port on your docker host (example: `ss -lntpu | grep -i 1900` ) maybe already in use.
Stop another UPNP service, like Jellyfin/Plex/Emby server to free up this port and try again.

View File

@@ -6,6 +6,8 @@ services:
environment: environment:
- SRVNAME=docker-minidlna - SRVNAME=docker-minidlna
- PORT=8205 - PORT=8205
# specify an UPNP interface if you have multiple network interface
#- SSDP_IFACE=eth0
- FOLDERS=/media/mp3,/media/movies,/media/tv_series - FOLDERS=/media/mp3,/media/movies,/media/tv_series
volumes: volumes:
- '/mnt/data/pub/movies:/media/movies' - '/mnt/data/pub/movies:/media/movies'

View File

@@ -2,24 +2,46 @@
if [ ! -e /etc/minidlna.configured ] if [ ! -e /etc/minidlna.configured ]
then then
# set friendly name
sed -i "s@.*friendly_name=.*@friendly_name=$SRVNAME@g" /etc/minidlna.conf
# set port
[ -z $PORT ] && { PORT=8201; }
sed -i "s@port=.*00@port=$PORT@g" /etc/minidlna.conf
# remove media folders
sed -i s@media_dir=@\#media_dir=@g /etc/minidlna.conf sed -i s@media_dir=@\#media_dir=@g /etc/minidlna.conf
# add media folders to the end of file
echo "friendly_name=$SRVNAME" >> /etc/minidlna.conf
for folder in $( echo $FOLDERS | xargs -d',' ) for folder in $( echo $FOLDERS | xargs -d',' )
do do
echo "media_dir=$folder" >> /etc/minidlna.conf echo "media_dir=$folder" >> /etc/minidlna.conf
done done
[ -z $PORT ] && { PORT=8201; }
sed -i "s@port=.*00@port=$PORT@g" /etc/minidlna.conf
date > /etc/minidlna.configured date > /etc/minidlna.configured
fi fi
# minissdp
# get interfaces
if [ -z "$SSDP_IFACE" ]
then
SSDP_INTERFACE="$( ip addr | grep -i up | egrep -iv '(lo|br-|veth|docker).*:' | cut -f2 -d':' | tr -d ' ' )"
if [ $( echo "$INTERFACE" | wc -l ) -gt 1 ]
then
echo -e "You have more than one interface, choose one!:\n$SSDP_INTERFACE"
exit 1
fi
SSDP_IFACE=$SSDP_INTERFACE
fi
if [ $( ss -lntpu | grep -i 1900 | wc -l ) -gt 0 ]
then
echo "Warning, another UPNP service use same UDP port!"
echo " Please stop another server and try again."
fi
minissdpd -i $SSDP_IFACE || { echo "SSDP service start problem"; exit 1; }
# remove stucked pid file # remove stucked pid file
rm -f /run/minidlna/minidlna.pid rm -f /run/minidlna/minidlna.pid
# start minidlna # start minidlna
minidlnad -d minidlnad -d -v
#/bin/bash #/bin/bash