I recently moved my Channels DVR instance to a new server and am now running into a problem that I had not experienced before. My instance of the DVR server is running inside a systemd-nspawn
container, using a bridge interface on the host. When run under these conditions, systemd-networkd
defaults to soliciting a DHCP address on the container's host0
network interface, which works without a problem.
The problem, however, is that the default .network
file used for containers (/usr/lib/systemd/network/80-container-host.network
) also assigns a LinkLocal address (169.254/16
) on the host0
network interface. When Channels is started on the container, it shows that it is running and advertising its services on both IP addresses: 10.0.0.x
which is in line with the 10/8
LAN in my home, as well as the 169.254.x.x
LinkLocal address that systemd-networkd
adds by default.
When attempting to use a client on the home network (10/8
) to connect to the server, it cannot find the server and must be manually specified by inputting the DVR server's IP address. It appears that Channels is only advertising the DVR server on the LinkLocal address, because when you visit the DVR settings tab in the client, even if the server was manually specified by a 10/8
IP address, the client claims it is connected to a DVR at 169.254.x.x
.
This can be worked around by superseding the default 80-container-host.network
configuration file by replacing it with one in /etc/systemd/network
. However, on servers with multiple interfaces and/or IP addresses it would be nice if we could have a command line flag to pass to the DVR server to specify which interface(s) and/or IP address(es) to listen on. (Or perhaps to publish/broadcast its presence on all interfaces/IP addresses instead of only advertising on the first IP address.)
Any thoughts? Have others run into a similar situation?