Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the pb-seo-friendly-images domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /var/www/html/pcx3.com/wp-includes/functions.php on line 6121

Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the johannes domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /var/www/html/pcx3.com/wp-includes/functions.php on line 6121
How to run Shoutcast streaming over HTTPS - PC✗3
How to run Shoutcast streaming over HTTPS

How to run Shoutcast streaming over HTTPS

Shoutcast doesn’t support SSL natively and is built to run over plain HTTP. To serve Shoutcast streams securely via HTTPS, you need a workaround since direct SSL on Shoutcast isn’t possible.


Option 1: Use a Reverse Proxy

One common solution is to place a reverse proxy like Nginx or Varnish in front of your Shoutcast server. The proxy handles the SSL termination — meaning it manages the HTTPS connection — then forwards the request to Shoutcast over HTTP. This setup allows you to serve your stream securely without modifying Shoutcast itself.

Here is a guide from Vultr on Setting up Shoutcast Server and Nginx Proxy on Ubuntu.


Option 2: Use a PHP Proxy Script

A simpler and more affordable approach is to create a small PHP script on your web server. This script connects to the Shoutcast stream over HTTP, then serves the audio through your HTTPS website. This method also prevents CORS (Cross-Origin Resource Sharing) errors when embedding the stream on your pages.

Here’s an example PHP proxy script you can use:

<?php
$streamUrl = 'http://IP_ADDRESS_HERE:STREAM_PORT/sid=1';

header('Content-Type: audio/mpeg');
header('Cache-Control: no-cache');
header('Pragma: no-cache');
header('Connection: close');

$stream = fopen($streamUrl, 'rb');

if (!$stream) {
    http_response_code(500);
    echo "Failed to connect to the stream.";
    exit;
}

while (!feof($stream)) {
    $buffer = fread($stream, 8192); // Read 8KB chunks
    if ($buffer === false) break;

    echo $buffer;
    flush();
}

fclose($stream);
?>

Save this as stream.php on your website. Then, if your website domain is example.com, you can access your Shoutcast stream securely via:

https://example.com/stream.php

By using a reverse proxy or a simple PHP proxy script, you can easily serve your Shoutcast stream over HTTPS without complicated SSL configurations on the Shoutcast server itself. This method is both practical and cost-effective, helping you maintain a secure and smooth streaming experience.

whoami
Stefan Pejcic
Join the discussion

I enjoy constructive responses and professional comments to my posts, and invite anyone to comment or link to my site.