Phylet is a audio-only UPnP/DLNA server, designed for audiophiles or music lovers that want to stream a music library from their NAS or PC to supported Digital Media Players.
Supported audio formats are: FLAC, MP3, M4A (AAC and ALAC), OGG, WAV, and AIFF. Phylet reads tags and album art into an internal database, so your files and directory structure will not be altered. Untagged files are presented under the "Files" tree in library structure.
Phylet has been tested with Lyngdorf Amplifiers, Samsung TV's, and VLC Media Player.
This is the preferred way to run Phylet, for example as a TrueNAS App. Host networking must be used to allow for the multicast traffic to reach you clients. Phylet serves files and a small dashboard over HTTP on port 5128.
Be aware that the multicast traffic might not work on Docker runtimes that use a virtual machine, such as those on macOS and Windows.
docker pull ghcr.io/martijn/phylet:latest
docker run --rm \
--network host \
-v /srv/media:/media:ro \
-v phylet-data:/data \
ghcr.io/martijn/phylet:latestMount your media folder read-only under /media, and a Docker volume for data to persist library metadata and configuration.
services:
phylet:
image: ghcr.io/martijn/phylet:latest
network_mode: host
restart: unless-stopped
volumes:
- /srv/media:/media:ro
- phylet-data:/data
volumes:
phylet-data:Requirements:
- .NET 10 SDK
By default, the app listens on http://*:5128 in every environment and serves files from the Phylet/Mediatest directory. Some configuration can be set using environment variables:
Storage__MediaPath=/srv/media \
Storage__DatabasePath=/srv/phylet/phylet.db \
dotnet runIf you omit Storage__DatabasePath, Phylet stores SQLite data in the OS app-data location:
- macOS:
~/Library/Application Support/Phylet/phylet.db - Linux:
$XDG_DATA_HOME/Phylet/phylet.dbor~/.local/share/Phylet/phylet.db - Windows:
%LocalAppData%\\Phylet\\phylet.db
If you omit Storage__MediaPath outside Development, startup fails with a configuration error.
There isn't much to configure yet, but you can change the announced server name by modyfing the SQLite database:
$ sqlite3 /my-data-dir/phylet.db
sqlite> update DeviceConfigurations set Value='<new name>' where Key='device.friendly_name';