ICY2-SERVER is a next-generation Digital Network Audio Server (DNAS) that combines the best of SHOUTcast v1/v2 and Icecast2 protocols into a unified hybrid streaming platform. Built from the ground up in C++ for maximum performance and reliability.
- Hybrid Protocol Support: Full SHOUTcast v1/v2 + Icecast2 compatibility
- ICY 2.0 Metadata Protocol: Advanced metadata support with social integration
- SSL/TLS Streaming: Secure HTTPS audio/video streaming with OpenSSL
- Token-Based Authentication: HTTP Bearer token security system
- Multi-Platform: Native Linux (Debian 12+) and Windows 11 Pro support
- YAML Configuration: Modern, human-readable configuration system
- YP Directory Integration: Multi-host directory listing support
- PHP-FPM Integration: Embedded PHP support like nginx
- Real-time API: JSON REST endpoints for monitoring and control
/var/www/mcaster1.com/DNAS/icy2-server/
βββ README.md # This file
βββ LICENSE.md # MIT License
βββ bootstrap.sh # Quick setup script
βββ configure.ac # Autotools configuration
βββ Makefile.am # Automake configuration
βββ autogen.sh # Autotools bootstrap
βββ config/
β βββ mcaster1.yaml # Default server configuration
βββ src/
β βββ main.cpp # Application entry point
β βββ server.cpp # Core HTTP/ICY server
β βββ icy_handler.cpp # ICY protocol handler
β βββ auth_token.cpp # Token authentication
β βββ config_parser.cpp # YAML config parser
β βββ ssl_manager.cpp # SSL certificate management
β βββ php_handler.cpp # PHP-FPM integration
β βββ helper.cpp # API helper functions
βββ include/
β βββ icy2_server.h # Public library header
β βββ server.h # Server class definitions
β βββ icy_handler.h # ICY protocol definitions
β βββ auth_token.h # Authentication headers
β βββ config_parser.h # Configuration structures
β βββ ssl_manager.h # SSL management
β βββ php_handler.h # PHP integration
β βββ helper.h # Utility functions
βββ ssl/
β βββ selfsigned.crt # Generated SSL certificate
β βββ selfsigned.key # Generated SSL private key
β βββ other-ss-chain.crt # Certificate chain
βββ logs/
β βββ error.log # Error logging
β βββ access.log # Access logging
β βββ security.log # Security events
β βββ php_errors.log # PHP error logging
βββ .github/
βββ workflows/
βββ dev.yaml # GitHub Actions CI/CD
# Debian 12 / Ubuntu 22.04+ requirements
sudo apt update && sudo apt install -y \
build-essential \
automake \
autoconf \
libtool \
pkg-config \
libssl-dev \
libyaml-cpp-dev \
libfcgi-dev \
php8.2-fpm \
git# Clone the repository
git clone git@github.com:davestj/icy2-server.git
cd icy2-server
# Bootstrap the project
./bootstrap.sh
# Configure and build
./autogen.sh
./configure --prefix=/usr/local
make -j$(nproc)
sudo make install# Copy default configuration
sudo cp config/mcaster1.yaml /etc/icy2-server/
sudo mkdir -p /var/www/mcaster1.com/DNAS/icy2-server/{ssl,logs}
# Generate self-signed SSL certificates
sudo icy2-server --generate-ssl
# Test configuration
icy2-server --test-mode --config=/etc/icy2-server/mcaster1.yaml# Start with default configuration
icy2-server
# Custom IP and port
icy2-server --ip=0.0.0.0 --port=5656
# Debug mode with verbose logging
icy2-server --debug=4 --ip=127.0.0.1 --port=3334
# Test mode (validate config only)
icy2-server --test-mode| Option | Description | Default |
|---|---|---|
--ip=<address> |
Bind IP address | 0.0.0.0 |
--port=<port> |
HTTP port number | 3334 |
--debug=<level> |
Debug level (1-4) | 1 |
--test-mode |
Validate config only | false |
--config=<path> |
Configuration file | /etc/icy2-server/mcaster1.yaml |
--generate-ssl |
Generate SSL certificates | false |
--daemon |
Run as daemon | false |
# Get server information
curl http://localhost:3334/api/v1/status
# Response example:
{
"server_id": "icy2-dnas-001",
"version": "1.1.1",
"build_date": "2025-07-16T12:00:00Z",
"ip_address": "0.0.0.0",
"port": 3334,
"ssl_enabled": true,
"uptime_seconds": 3600,
"active_connections": 42,
"system_info": {
"os": "Linux",
"kernel": "6.1.0-9-amd64",
"architecture": "x86_64",
"memory_mb": 8192,
"cpu_cores": 4
}
}This server implements the full ICY-META v2.1+ specification including:
- Legacy ICY 1.x compatibility for existing encoders
- Advanced metadata support with hashtags, emojis, social integration
- Video streaming metadata for multi-platform content
- Token-based authentication with JWT support
- Certificate verification system for trusted streams
icy-name: Future Beats FM
icy-meta-version: 2.1
icy-meta-hashtag-array: ["#electronica", "#ambient", "#chillout"]
icy-meta-emoji: π΅πβ¨
icy-meta-social-twitter: @futurebeats
icy-auth-token-key: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...# Development build with debug symbols
./configure --enable-debug --prefix=/usr/local
make clean && make -j$(nproc)
# Library development
make lib # Builds /usr/lib64/icy2-server.lib
make headers # Installs /usr/include/icy2_server.h# Configuration validation
icy2-server --test-mode
# Integration tests
make test
# Memory leak detection
valgrind --leak-check=full ./icy2-server --debug=1Current stable release: v1.1.1
Download the latest release:
- v1.1.1 - Initial stable release with full ICY2 protocol support
- v1.1.0 - Beta release with SSL and authentication
- v1.0.0 - Alpha release with basic HTTP server
I welcome contributions to improve ICY2-SERVER! Here's how you can help:
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
- Follow the C++17 standard
- Use first-person comments in code
- Maintain backwards compatibility
- Write comprehensive tests
- Update documentation
This project is licensed under the MIT License - see the LICENSE.md file for details.
- Website: mcaster1.com
- Email: davestj@gmail.com
- GitHub Issues: Report Issues
- Documentation: Wiki
- Windows 11 Pro native build with Visual Studio 2022
- Advanced load balancing for high-traffic streams
- WebRTC integration for real-time streaming
- Machine learning metadata enhancement
- Docker containerization for easy deployment
- Kubernetes helm charts for cloud deployment
- β Core HTTP/ICY server implementation
- β SSL/TLS support with certificate generation
- β YAML configuration system
- β Token-based authentication
- β PHP-FPM integration
- π YP directory integration (in progress)
- π Advanced metadata processing (in progress)
- β³ Web admin interface (planned)
- β³ Client application (planned)
Built with β€οΈ by David St. John | Powered by ICY2 Protocol Specification