Does Centova Cast include a stream proxy?

Question:

Does Centova Cast include a web proxy for streaming over SSL, or for streaming over port 80 to users behind restrictive firewalls?

Answer:

Yes, Centova Cast v3 includes a highly efficient web proxy system for SHOUTcast and IceCast streams.

Unlike the Apache/PHP-based "port 80 proxy" provided with Centova Cast v2 and most competing SHOUTcast Control Panel systems, Centova Cast v3's proxy system (based on nginx) uses negligible system resources even under very heavy load with thousands of concurrent listeners. It also supports streaming over SSL, if configured to do so.

How do I enable the web proxy during Centova Cast installation?

Note: for old versions of Centova Cast (prior to 3.2.14), see this document instead.

Enabling the web proxy during the installation of Centova Cast is by far the easiest approach. Simply add the --secure and --email parameters to your install.sh commandline. For example, if you would normally install Centova Cast using ./install.sh --shoutcast-all, you could instead use:

./install.sh --shoutcast-all --secure=hostname.example.com --email=you@example.com

This would automatically configure Centova Cast on ports 80 and 443, with the web proxy enabled, with an SSL certificate for hostname.example.com (courtesy of letsencrypt.org), using you@example.com as the email address to register with letsencrypt.org.

How do I enable the web proxy on an existing Centova Cast installation?

Note: for old versions of Centova Cast (prior to 3.2.14), see this document instead.

As noted above, enabling the web proxy during the initial installation of Centova Cast is by far the easiest approach because the process can be fully automated at installation time.

It is also possible to enable the web proxy after Centova Cast has been installed, though doing so requires additional steps.

The web proxy is disabled by default, as many servers already have an existing web server which would conflict with the proxy.

Prerequisites and Preparation

In order to enable the proxy, you must have an available IP address on which no existing web server is running. If another web server is currently running on your server's IP address(es), you can accomplish this in one of two ways:

  1. Remove the other web server entirely. That is the simplest method, if you are not using the existing web server for hosting web sites.

  2. Ensure that you have multiple IP addresses on your server, and reconfigure the existing web server such that it does not use the IP address on which you wish to install the Centova Cast web proxy.

    The procedure for reconfiguring your existing web server will depend on many factors and is outside the scope of our support services; contact your hosting provider or systems administrator for assistance with that.

    Note that if you choose this approach, you must add --bind=ipaddress to the set_secure (or set_web_ports) command described in the following sections, replacing ipaddress with the IP address that you want Centova Cast to use.

Enabling the Web Proxy

After ensuring that there will be no IP address conflicts per the previous section, you may enable the web proxy.

If you haven't made any invasive changes to your Centova Cast configuration files, you can enable the web proxy with a single command:

/usr/local/centovacast/sbin/set_secure --fqdn=yourdomain.com --email=you@example.com

Replace yourdomain.com with the fully-qualified domain name that you want to use with Centova Cast, and replace you@example.com with the email address that you want to use to register with letsencrypt.org.

If the above command fails with an error, you will need to follow the steps in the next section for a custom configuration.

Otherwise, your web proxy should now be ready to use and can be enabled for each account on the Limits tab of the account settings.

Web Proxy for Modified Configurations

The set_secure script described in the previous step may fail if you have made certain types of modifications to your Centova Cast configuration files. In this scenario, you will need to manually perform the following steps to enable the proxy, possibly while adapting each step to your customized configuration.

  1. Enable web ports, then restart Centova Cast. This makes Centova Cast listen on ports 80 and 443, and configures it to listen on yourdomain.com.

    /usr/local/centovacast/sbin/set_web_ports --fqdn=yourdomain.com
    systemctl restart centovacast
    
  2. Turn on the web proxy.

    /usr/local/centovacast/sbin/set_proxy --on
    
  3. Enable SSL and restart Centova Cast. This example command registers with letsencrypt.org using the email address you@example.com, and requests an SSL certificate for yourdomain.com; you can instead use your own certificate by running set_ssl_cert --help and following the instructions.

    /usr/local/centovacast/sbin/set_ssl_cert letsencrypt yourdomain.com you@example.com
    systemctl restart centovacast
    

If no errors are displayed, then the web proxy is ready to use and can be enabled for each account on the Limits tab of the account settings.

How do listeners tune in via the web proxy?

After enabling proxy support for an account, tune-in links for the proxy will be displayed both on the stream's Quick Links page as well as on the stream's start page.