Migrating from Icecast

Rocket Streaming Audio Server (RSAS) is designed as a drop-in replacement for Icecast. That means you can overwrite your Icecast executable with RSAS and expect it to work. RSAS reads your existing Icecast configuration file, accepts the same command-line parameters, and writes logs in the same format as Icecast. You can connect with your existing Icecast streaming audio encoder without changing any settings, and your listeners can connect to your stream in exactly the same way.

In other words, RSAS integrates with your existing Icecast, to make it as easy as possible to migrate to.

To broadcasters and listeners, it behaves the same as Icecast, but with lower latency and some new features. To system administrators, it's more reliable, easier to monitor, and supported by a full-time development team.

To recap Icecast compatibility, RSAS has:

  • the same Icecast2 source client protocol for encoders, and HTTP streaming protocol for players (icy-metadata included)
  • the same compatibility with encoders and even better compatibility with players
  • the same log file formats (access.log, playlist.log)

Instead of the "Icecast Status Page", by default, RSAS has a JSON /health URL, which contains the server status and listener counts for each mount. However, an Icecast-compatible Status Page can be enabled.

To replace Icecast system-wide with Rocket Streaming Audio Server (RSAS), just download it and overwrite your existing Icecast executable with it.

Advantages over Icecast

Differences compared to Icecast

Although most features used by the majority of broadcasters and stream hosting platforms are implemented, some lesser-used features are not yet implemented in RSAS. To get a better idea of what's implemented, please skim the Configuration section, and then read the "Kitchen Sink" example configuration file, which demonstrates every available configuration option.

An Icecast-compatible Status Page and /status-json.xsl JSON endpoint are available, but must be explicitly enabled.

Some Icecast features that are not yet supported are:

  • Publishing streams to the Icecast directory
  • Custom HTTP headers
  • Master-slave relays - Use normal relays instead.
  • Playlist files (.m3u, .pls)

As a workaround for playlist files, you can create your own manually and place them in your webroot.

If you require a missing feature, please let us know!

Icecast-KH Compatibility

Icecast-KH uses a slightly different syntax for its configuration file compared to regular Icecast. However, RSAS is compatible with both. Wildcard mounts from Icecast-KH are supported, as well as the equivalent default mounts from Icecast.

Migration Steps

To migrate from Icecast to RSAS:

1) Download and install RSAS.

2) RSAS can read your existing Icecast configuration, so try shutting down Icecast and starting the rsas service with your existing configuration by running this in a shell:

sudo systemctl stop icecast2                           # Stop your existing Icecast server
sudo cp /etc/icecast2/icecast.xml /etc/rsas/rsas.xml   # Copy your Icecast config
sudo usermod -a -G icecast rsas   # Add the rsas user to the icecast group so it can access icecast directories.
sudo chmod g+w /var/log/icecast2/*                     # Fix some permissions so that RSAS can write to the log file.
sudo chown rsas:rsas /etc/rsas/rsas.xml                # Fix permission on copied Icecast config.
sudo systemctl start rsas                              # Start RSAS
sudo systemctl status rsas                             # Check its status

If this works, you'll see some output from RSAS saying it's running. If you want to permanently install rsas, please follow the rest of the installation instructions. In particular, make sure rsas starts at boot:

sudo systemctl enable rsas

If you need to revert the above actions and go back to Icecast, run:

sudo systemctl stop rsas
sudo systemctl disable rsas
sudo systemctl start icecast2

and uninstall the RSAS package.

Lastly, if you have an existing HTTPS/TLS setup with Let's Encrypt or certbot, please make sure you update the renewal hook to reload the rsas service instead of icecast after the certificate renews. (Typically, open /etc/letsencrypt/renewal/*.conf in an editor and ensure systemctl reload rsas is run after renewal instead of icecast).

If your Icecast setup did not have HTTPS working, then please see our guide on configuring HTTPS.