Mcaster1DNAS
A Digital Network Audio Server forked from Icecast2 / Icecast-KH with ICY-META v2.2 extended metadata, YAML configuration, static mount point definitions, a built-in song history API, an HTML5 browser audio player, and a Windows-native GUI with NSIS installer. Dual-platform: Linux (Autotools) and Windows (VS2022).
What is Mcaster1DNAS?
Mcaster1DNAS is a streaming media server descended from the Icecast2 / Icecast-KH lineage, extended with modern protocol support, a YAML configuration layer alongside the traditional XML config, per-listener SSL enforcement, and a significantly enhanced web interface. It runs as a system service on Linux and as both a service and a native GUI application on Windows.
Linux — Primary Platform
- C daemon — Autotools (autoconf + automake)
- Service on ports 9330 (HTTP) / 9443 (HTTPS)
- Debian, Ubuntu, Fedora, Rocky, Arch, macOS
- XSL admin interface + public status pages
- Full ICY 2.2 metadata update UI
- Song history API + browser audio player
- GitHub Actions CI/CD pipeline
Windows — Native GUI
- Visual Studio 2022, MSVC v143, MFC
mcaster1Service.exe— Windows servicemcaster1win.exe— GUI sidecar (ports 9033/9344)- Resizable dialog: Stats, Config, Log, SSL tabs
- Real-time log viewer with color-coded output
- NSIS installer — 5.3 MB; Start Menu + service shortcuts
- CLI:
-c,-s,--ssl-gencert,-v
Key Features
ICY-META v2.2 Protocol
60+ extended metadata fields covering station identity, DJ info, show programming,
social links, content flags, and broadcast parameters. Dual-prefix fallback
(icy-meta-* / icy2-*). Full ICY 2.2 field update UI in the
admin interface.
HTTPS & Per-Listener SSL
Secure by default on port 9443. Per-listener SSL enforcement configurable per mount.
Built-in SSL certificate generator (--ssl-gencert). OpenSSL-based,
zero external dependency for cert generation.
YAML Configuration
Full YAML configuration layer runs alongside the traditional XML config.
Supports song-history-limit, mount types, ICY 2.2 defaults, domain
name, and worker thread count. libyaml-based with CRT DLL boundary safety.
Static Mount Points
Three static mount types always present in status pages regardless of source connection: podcast (purple), socialcast (pink), and on-demand (amber). Live source mounts are tagged green.
Song History API
In-memory ring buffer tracks last N played tracks (default 25, configurable, 0 = unlimited).
Deduplication for consecutive identical titles. Back-fills ended_at for
time-on-air accuracy. Public at /songdata.xsl, admin at /admin/songdata.
HTML5 Browser Audio Player
Built-in web player in both admin and public interfaces. Real-time metadata polling every 5 seconds. VU meters via Web Audio API AnalyserNode. Volume with localStorage persistence. Keyboard shortcuts: Space = play/pause, Esc = stop.
Track History Pages
Rich table: mount, artist/title, quality badge, played at, on-air duration, listener count, and one-click lookup icons for MusicBrainz, Last.fm, Discogs, and AllMusic. Animated "Now Playing" pulsing dot on the current track row.
Full Codec Stats
MP3, Opus, Ogg Vorbis, AAC, FLAC, Speex, and Theora audio formats supported.
Per-stream codec stats publicly exposed: audio_samplerate,
audio_channels, audio_codecid, bitrate, and quality badge.
Authentication
HTTP Basic Auth for admin endpoints. Separate source password for ICY SOURCE connections. Admin credentials configurable in YAML or XML config. Default admin/hackme — change before production deployment.
Audio Formats & Protocol Support
| Format | MIME Type | ICY Metadata | Codec Stats Exposed | Notes |
|---|---|---|---|---|
| MP3 | audio/mpeg | ✓ | ✓ | MPEG-1/2 Layer III; ICY in-band metadata |
| Ogg Vorbis | audio/ogg | ✓ | ✓ | Vorbis comment metadata |
| AAC / AAC+ | audio/aac | ✓ | ✓ | LC, HE-AAC, HE-AAC v2 |
| Opus | audio/ogg; codecs=opus | ✓ | ✓ | ICY StreamTitle via opus_set_tag() |
| FLAC | audio/flac | ✓ | ✓ | Lossless; archival streams |
| Speex | audio/ogg | ✓ | ✓ | Legacy VoIP codec |
| Theora | video/ogg | — | ✓ | Video container; audio track exposed |
Streaming Protocols
- ICY SOURCE — Icecast2 / Shoutcast-compatible HTTP PUT source protocol
- HTTP/HTTPS listener connections with Range request support
- ICY in-band metadata blocks for MP3 streams (configurable interval)
- ICY 2.2 extended headers via HTTP PUT to source mount
- YP directory server support (configurable, connection logged)
Web Interface
The Mcaster1DNAS web interface is built entirely from XSL stylesheets applied to the server’s live XML stats feed. Shared header/footer templates provide consistent navigation and branding across all admin and public pages.
Admin Interface (/admin/)
Live stats dashboard, mount management, source kill controls, metadata update UI with a dropdown of 55+ ICY 2.2 fields, track history table with music service lookup icons, server log viewer, and type-aware mount badges.
Public Status Pages (/)
Public stream listing at /status.xsl, track history at
/songdata.xsl, and per-stream stats. Shared HTML5/CSS3 header/footer
templates. Static mounts always shown; source mounts tagged green when live.
Web Audio Player
Embedded HTML5 player in both admin and public views. Polls metadata every 5s,
VU meters via Web Audio API, volume with localStorage. Available at
/admin/webplayer.xsl and /web/webplayer.xsl.
API Endpoints
GET /admin/stats— Full XML server statistics (admin-authenticated)GET /status-json.xsl— JSON stats including all ICY 2.2 fields per mountGET /admin/songdata— Song history XML (admin-authenticated)GET /songdata.xsl— Song history public page (no auth)GET /admin/listmounts— Active source mount list (admin-authenticated)GET /admin/metadata?mount=…&mode=updinfo&song=…— ICY 1.x metadata updatePUT /{mount}— ICY 2.2 extended metadata push (source-authenticated)GET /admin/mcaster1stats— Mcaster1-specific proprietary stats XML
Windows GUI & Service
The Windows build ships two binaries in one NSIS installer. The service binary runs headlessly under Windows Service Control Manager; the GUI binary runs as a sidecar on separate ports and provides a resizable administration window.
Windows Service (mcaster1Service.exe)
Registers as a Windows service via NSIS installer. Auto-starts on boot.
Uses mcaster1dnas-console.yaml as default config. Sets service
status to RUNNING within 30 seconds (SCM timeout compliance).
GUI Sidecar (mcaster1win.exe)
MFC resizable dialog with four tabs: Stats, Config, Log, SSL.
Real-time log viewer using _fsopen(..., _SH_DENYNO) for live tailing.
Live system clock (updates every second). Auto-version from git commit hash
in the window title.
NSIS Installer (5.3 MB)
8 installation sections: Core, Web, Docs, SSL Tests, Service, Start Menu,
Desktop Shortcuts, Firewall Rules. Installs to
C:\Program Files (x86)\Mcaster1\Mcaster1DNAS\.
Start Menu shortcuts with UAC elevation for service start/stop.
Technical Specifications
Linux Build
| Language | C (C99/C11) |
| Build System | GNU Autotools (autoconf, automake) |
| Config | libyaml (YAML) + libxml2 (legacy XML) |
| TLS | OpenSSL |
| Template Engine | libxslt (XSL stylesheets) |
| Service Ports | 9330 (HTTP) / 9443 (HTTPS) |
| Distros | Debian, Ubuntu, Fedora, Rocky, Arch, macOS |
| CI/CD | GitHub Actions |
Windows Build
| Language | C (service) + C++ MFC (GUI) |
| Build System | Visual Studio 2022, MSVC v143 |
| UI Framework | MFC + ResizableLib |
| Platform | Win32 (x86), Windows 10/11 |
| GUI Ports | 9033 (HTTP) / 9344 (HTTPS) sidecar |
| Installer | NSIS — 5.3 MB, 8 sections |
| Service | mcaster1Service.exe via SCM |
| Config | mcaster1dnas-console.yaml |
Development Roadmap
All phases marked complete have working code in the repository. Planned phases are
tracked in TODO.md.
v2.5.0 Complete
Rebranded from Icecast-KH. YAML config, modern HTML5/CSS3 web interface, ICY-META v2.1+, live system clock, YP logging, default ports 9330/9443.
v2.5.1-rc1 Complete
Song history API (ring buffer, dedup, back-fill ended_at), track history pages with music service lookup icons, HTML5 browser audio player with VU meters, Opus ICY metadata, full public codec stats, shared XSL header/footer templates, Windows VS2022 support.
v2.5.2-dev Complete
ICY 2.2 protocol (60+ field struct, dual-prefix fallback), static mount points (podcast / socialcast / on-demand always in status), metadata update UI with 55+ field dropdown, type-aware mount badges, Windows NSIS installer (5.3 MB), OpenSSL flag fixes.
v2.6.1 Planned
Podcast features: RSS 2.0 feed generation, audio metadata parsing (ID3/Vorbis tags), admin + public podcast pages (XSL), per-mount recording config, live-stream recording engine, hybrid mount points (live + on-demand fallback).
v2.6.2 Planned
Security & Authentication: SSH key authentication for ICY2, ICY2 metadata validation, config-based metadata defaults, rate limiting.
v2.7.0 Planned
UI/UX enhancements: dark mode toggle, real-time dashboard (WebSocket/SSE), enhanced stream cards, listener analytics, WCAG 2.1 AA accessibility.
v2.8.0 Planned
Performance & scalability: HTTP/2 and HTTP/3 support, improved caching, database integration (SQLite/PostgreSQL), load balancing, enhanced relay system.
Open Source — GPL v2
Mcaster1DNAS descends from Icecast2 and Icecast-KH, extended and maintained by David St. John. Released under the GNU General Public License v2. Contributions, issues, and pull requests welcome.