raylabpro / docker-serviio

Fastest and Smallest Docker Container for Serviio DLNA Server
MIT License
23 stars 27 forks source link

DLNA devices can't reach Serviio #9

Closed markheloking closed 4 years ago

markheloking commented 5 years ago

I tried the following configs in my docker-compose.yml:

   serviio:
        image: riftbit/serviio
        hostname: serviio
        container_name: serviio
        volumes:
            - ${USERDIR}/docker/Serviio/config:/opt/serviio/config
            - ${USERDIR}/docker/Serviio/library:/opt/serviio/library
            - ${USERDIR}/docker/Serviio/plugins:/opt/serviio/plugins
            - /mnt/Downloads/Sonarr:/media/serviio/series
            - /mnt/Downloads/Movies:/media/serviio/movies
            - /mnt/Downloads/Serviio/Transcode:/media/serviio/transcode
        ports:
            - 1900:1900
            - 8895:8895
            - 23423:23423
        restart: always

And

   serviio:
        image: riftbit/serviio
        hostname: serviio
        container_name: serviio
        volumes:
            - ${USERDIR}/docker/Serviio/config:/opt/serviio/config
            - ${USERDIR}/docker/Serviio/library:/opt/serviio/library
            - ${USERDIR}/docker/Serviio/plugins:/opt/serviio/plugins
            - /mnt/Downloads/Sonarr:/media/serviio/series
            - /mnt/Downloads/Movies:/media/serviio/movies
            - /mnt/Downloads/Serviio/Transcode:/media/serviio/transcode
        network_mode: host
        restart: always

At first I got an error in the logs about apache logging being broken or something (ignored that) and the profiles.xml missing in the config directory (it doesn't seem to create/load that itself if it's missing). Fixed that by copying the default config folder extracted from the regular desktop installer for 2.0. Since then I can reach the http://host:23423/console and process my media library.

It doesn't however show up on DLNA media players using either of the above configurations. In the console it can clearly see the DLNA players on my network, but none of them "see" the Serviio server.

Am I missing something?

ergoz commented 5 years ago

In first configuration problem because you set 1900 port in TCP, but you need set it for UDP

with second configuration... i use net host and it is ok for me. Check configuration of your switch or router in your network for supporting UPnP and DLNA.

markheloking commented 5 years ago

Running a Plex docker it does work, so it doesn't seem to be an issue with my network (discovery and media play over UPnP works). Is there anything else I could try?

ergoz commented 5 years ago

Running a Plex docker it does work, so it doesn't seem to be an issue with my network (discovery and media play over UPnP works). Is there anything else I could try?

i really have no any ideas... i can't emulate this problem. Did you try to use host network like this:

network_mode: "host"
markheloking commented 5 years ago

Yes, I've been running in network_mode: "host". I can't seem to figure it out either...

ergoz commented 5 years ago

Yes, I've been running in network_mode: "host". I can't seem to figure it out either...

show me full log from container start, please.

AKDub commented 5 years ago

I had the same problem using host.

I managed to fix it by going on the console to status --> network setting --> 192.168.1.100 (the ip of my NAS)

After this it was recognised by my devices straight away.

bastor commented 3 years ago

I had the same problem using host.

I managed to fix it by going on the console to status --> network setting --> 192.168.1.100 (the ip of my NAS)

After this it was recognised by my devices straight away.

Confirm, same does a trick for me.

kmavrov commented 3 years ago

Hi, I have a similar problem. Serviio console sees dlna clients, but they do not see the server. Also I can not select my actual ip from the network settings. There I only see the docker ips. Any idea on how to solve this?

AKDub commented 3 years ago

Are you using bridge or host mode for the docker container?

kmavrov commented 3 years ago

Are you using bridge or host mode for the docker container?

I tried both with no success. I was also trying to figure out what i have done differently with my perfectly running Windows 10 instance. There i had more or less the same issue, where no devices were seeing the server, but when I select the proper network interface - everything works smoothly.

Here, in the docker container i am only getting the docker interfaces with the docker IPs. Correct me, if i am wrong, but i think that Serviio is using those 172.bla.bla.bla ips to advertise to the network that there is a DLNA/UPnP device out there, but it should actually advertise 192.168.bla.bla that my network devices can actually speak with. Again - i might be really wrong here. So my question is am i on the right track for this.

Also might be good to mention is that in my docker-compose i have version 3.1, because some of the containers need to have swarm enabled.

Later when i get home i will post the actual docker-compose.

kmavrov commented 3 years ago

Okay, i finally managed to make it work with the following settings:

Docker-compose:

version: '3'

services:
  serviio:
    image: riftbit/serviio:latest
    network_mode: MacLan
    dns:
    - 8.8.8.8
    ports:
     - "23423:23423/tcp"
     - "8895:8895/tcp"
     - "1900:1900/udp"
    volumes:
     - <physical-path-on-hdd>/Config/serviio/library:/opt/serviio/library
     - <physical-path-on-hdd>/Config/serviio/plugins:/opt/serviio/plugins
     - <physical-path-on-hdd>/Config/serviio/log:/opt/serviio/log
     - <physical-path-on-hdd>:/media/serviio

The MacLan network is newly created macvlan network, to expose the container to the lan network. This video was extremely helpful, because it's a little strange how to work with macvlan ( https://www.youtube.com/watch?v=1HCHkMV-Icc ) first i have created the following config:

Macvlanconfig: IPV4 Subnet - 192.168.1.0/24 IPV4 IP range - 192.168.1.150/29 IPV4 Gateway - 192.168.1.1 IPV4 Excluded Ips

After that i have created the following network to be attached to the service:

MacLan: Driver macvlan Scope swarm Attachable true Internal false

Now that i have the network i have to manually add the network to the created service, beause for some reason it does not attach on creation, even though it's set in the compose. Here it will be quite nice to have some help on how to automatically join the container/service to the network, because i haven't tested what will happen on restart.

The other small change in the composer file is specifying the DNS, beause with this macvlan network the container is requesting an IP from the router, and it's not waiting for one to be asigned with DHCP, which means there is no DNS assigned also. If you don't specify a DNS then the movies/tv series is not being fetched from whereever it needs to fetch those.

When attaching the service to the MacLan (the created macvlan network) i can see in the Serviio console > Network Settings that on eth0 i have the proper local IP assigned to the container ( in my case 192.168.1.149).

After setting the proper adapter (eth0) with the proper IP 192.168.bla.bla now Serviio advertizes itself properly in the network and all network devices (TV, Android phones, even Windows Media Player on my desktop) see the Serviio server and also can access it as any other DLNA server.

So if anyone can help me a bit with the following to make the setup self-sufficient it would be nice: First issue: How to make the macvlan network ot get an IP from the router's DHCP with DNS? Second issue: How to make the service to attach itself to the network ot create, so that in case of restart everything will boot properly without the need of any manual intervention?