SSDPd - announces UPnP/DLNA device across network. PHP media server inside

Rozhuk Ivan cdbbe4aa0a Update liblcb to allow build on MacOS 9 months ago
.github 59faac5e7c Github actions to build 10 months ago
freebsd e7330dd5bf Fix: 4 years ago
nginx b604029051 Rename PHP-UPnP-server to PHP-Media-server 4 years ago
php af724d9f54 Forgot remane FPM pool 4 years ago
src cdbbe4aa0a Update liblcb to allow build on MacOS 9 months ago
www 45c73c79ec Remove disabled "tvg-logo" support from m3u_browse() 10 months ago
.gitmodules 378d488578 add liblcb 4 years ago
CMakeLists.txt 784c7a726c Update liblcb: 1 year ago
LICENSE a77bf04d5a Add err handling 3 years ago 0070b8bbd1 Update readme 10 months ago
config.h.cmake 784c7a726c Update liblcb: 1 year ago fe3393ff5c Migration to CMake build system 4 years ago
ssdpd.conf 784c7a726c Update liblcb: 1 year ago
test.txt 286d26a26b Update test patterns 4 years ago


Build-macOS-latest Actions Status Build-Ubuntu-latest Actions Status Build-PHP Status Scrutinizer Code Quality

Rozhuk Ivan 2013 - 2021

SSDPd - Announces UPnP/DLNA device across network. You can use PHP script, nginx config and static files to build your own UPnP/DLNA server.


BSD licence. Website:


  • can act as UPnP/DLNA ContentDirectory to share multimedia content
  • can announce remote UPnP/DLNA devices

Compilation and Installation

sudo apt-get install build-essential git cmake fakeroot
git clone --recursive
cd ssdpd
mkdir build
cd build
cmake ..
make -j

UPnP/DLNA PHP server requires

  1. nginx with headers_more.
  2. PHP with fpm, fileinfo, soap, xml.


ssdpd [-d] [-v] [-c file]
       [-p PID file] [-u uid|usr -g gid|grp]
 -h           usage (this screen)
 -d           become daemon
 -c file      config file
 -p PID file  file name to store PID
 -u uid|user  change uid
 -g gid|group change gid
 -v           verboce



Copy %%ETCDIR%%/ssdpd.conf.sample to %%ETCDIR%%/ssdpd.conf then replace lan0 with your network interface name. Add more sections if needed. Remove IPv4/IPv6 lines if not needed.

Add to /etc/rc.conf:



service ssdpd restart

PHP UPnP server


Add to /etc/rc.conf:



service php-fpm restart


If nginx will serve only upnp then you can:

ln -f -s %%ETCDIR%%/nginx-upnp-full.conf %%CMAKE_INSTALL_PREFIX%%/etc/nginx/nginx.conf

If nginx build with DSO (dynamic modules load) then you need uncomment "load_module" and set correth path to module.

Or add to existing nginx.conf following line: include %%ETCDIR%%/nginx-upnp-handler.conf; some where in existing http/server section.

Add to /etc/rc.conf:



service nginx restart


Place shared data in: %%DATADIR%%/www/upnpdata or make in as simlink on existing data. Make sure that permissions allow www access.



Allow all IPv4 with options proto igmp. Allow all udp dst port 1900.

PHP UPnP server

Allow in tcp dst port 80.