Welcome
DLNA Media Server is a lightweight, TypeScript-based DLNA server built on Node.js. Run it on any machine and instantly stream your video library to smart TVs, game consoles, media players, and any other DLNA-compatible device on your local network — no configuration needed.Quickstart
Get the server running and streaming in minutes
How It Works
Understand the DLNA/UPnP protocol stack
Configure Your Gallery
Add your video files to the media gallery
Architecture
Explore the server’s internal structure
How it works
Server starts up
The server auto-detects your local IPv4 address and starts two listeners: an HTTP server on port 8080 (for SOAP/UPnP control) and a UDP multicast socket on port 1900 (for SSDP device discovery).
DLNA clients discover the server
When a DLNA client (smart TV, VLC, etc.) searches for media servers, the server responds to its M-SEARCH broadcast with its location and identity — no manual IP entry required.
Client browses your library
The client fetches the device description, then sends a SOAP Browse request. The server responds with your video catalog from
gallery.json in DIDL-Lite XML format.Key features
- Zero-config discovery — SSDP multicast advertises the server automatically on your LAN
- ContentDirectory:1 — full Browse, GetSortCapabilities, and GetSearchCapabilities support
- JSON media catalog — add videos by editing a single
gallery.jsonfile; no database required - Edge.js XML templates — clean, editable templates generate all UPnP XML responses
- Pure TypeScript — fully typed, minimal dependencies (
cheerioandedge.js)