A relay is a receiving server that pulls a remote stream and serves it to its own listeners. Configure it on the receiving instance. This does not move existing listeners on the upstream server, encode a different bitrate or make an unreachable origin reachable.
Define the two mount names
In this isolated example, another local server supplies /programme.ogg on port 8001. The receiving server exposes it as /relay.ogg. This is a 2.5.0 excerpt directly inside <icecast>:
<relay>
<local-mount>/relay.ogg</local-mount>
<on-demand>true</on-demand>
<upstream type="normal">
<uri>http://127.0.0.1:8001/programme.ogg</uri>
</upstream>
</relay>The upstream must already carry a live compatible stream. Remote production feeds require an appropriate transport and access policy. An on-demand relay fetches when it is needed by listeners; an idle relay therefore need not appear like a continuously connected source. The first listener may experience connection setup delay.
Separate current and compatibility syntax
The 2.5.0 shipped example uses <upstream> blocks, including an optional type="default" block for common settings. Older manuals place server, port and mount directly under <relay>. The current parser retains compatibility handling but marks older layouts obsolete. Prefer the example shipped with your exact release rather than merging the two forms casually.
A master relay discovers a set of mountpoints through the configured upstream server and polls for changes. A specific relay pulls only the configured stream. The relay-discovery password, an authenticated stream’s listener credentials and a source encoder’s password are distinct roles.
Verify demand and failure
First play the upstream directly. Then request the local relay URL and check statistics and logs on both instances. Confirm that the local mount name is the one advertised to listeners. With an on-demand relay, disconnect the last test listener and observe the resulting upstream behaviour rather than expecting a permanent transfer.
In a planned test, interrupt the upstream and inspect reconnects, fallback and the listener outcome. Do not create a relay cycle where two instances fetch one another. Preserve the actual media format across all feeds; a relay copies rather than transcodes.