This is an advanced, optional extra. Most streamers never need it. It is for people whose stream cannot afford to stay down while they fix a broken server: a second, cheap receiver that sits idle and can take over if your main one stops answering.
Your main receiver does the clever things: the backup video when the bond drops, the background audio remover, upscaling. The failover server does none of that. It only runs the bonding receiver and Restreamer, and passes your stream to the platforms exactly as it arrives — same resolution, same frame rate, no re-encoding. That is why the smallest server a provider sells is enough (1 vCPU and 1 GB of memory is plenty for passing a stream through; see Renting a server).
The question only appears while a dashboard is open. With no dashboard open, the router still checks both servers every minute and keeps the failover server's copy of your setup up to date, but it waits for you to decide.
Failover reconnects the feed; it is not seamless. Restream.io may briefly show offline during a switch or real failover test. That alone does not prove the destination broadcasts ended, but they can end depending on their settings and the length of the interruption.
Before you go live:
Detection takes about 20 seconds, plus your reaction time and stream reconnection time. Respond promptly: there is no universal safe interruption window, and neither the receiver nor the dashboard can guarantee that a platform keeps an event open.
Verify a real test at every destination. Switch to the failover server, then switch back. Check that playback resumes on the same live broadcast, with no new event and no ended status. A successful switch or a ready receiver does not prove that the platforms stayed live. Restream's brief offline indicator alone cannot answer that question.
First, set a budget with the provider. A failover server sits idle most of the time, which makes it the easiest server to forget about. Before you create it, add a budget or spending alert in the provider's billing settings (AWS: Billing and Cost Management → Budgets → Create budget, a monthly cost budget a little above the plan's price, with an email alert), and use a hard spending cap or prepaid credit where the provider offers one. A budget is an alarm, not a fuse, but it means a bigger plan picked by mistake, traffic over the plan's allowance or a server you meant to delete cannot run away unnoticed. To stop paying, delete the instance and release its static IP — an unattached static IP is billed too.
About $5 to $7 a month, and nothing to type into a terminal. The dashboard writes a launch script that does the whole install on the new server's first boot, and pairs with it by itself afterwards.
The static IP and stream firewall rule are required setup steps. In the instance's Networking → IPv4 Firewall → Add rule, choose Application: Custom, Protocol: UDP, and the bonded stream port shown in your dashboard (normally 25554). Allow Any IPv4 address, then click Create and confirm the UDP rule appears in the list. TCP on the same number does not work. Do not expose the receiver's web ports.
If you attach the static IP after pairing, the dashboard discovers the new address through Tailscale every five minutes while the main server is active. Confirm the failover-server address on the dashboard changes to the static IP before relying on it. The incoming stream still uses public UDP, so an address change can leave the failover server unavailable until rediscovery. Address changes are deferred while the failover server carries the stream, until you switch back to the main.
The setup progress panel stays visible above the setup instructions: waiting for Tailscale, contacting the receiver (with its Tailscale IP), pairing, then copying your setup. It shows the last discovery check and survives a page reload. Before the server joins Tailscale, the dashboard cannot distinguish booting from installing or an installation failure; use Lightsail's SSH connection and the cloud-init log for that detail.
Not paired after 20 minutes? In Lightsail click Connect using SSH on the instance and run sudo tail -n 30 /var/log/cloud-init-output.log. It says what went wrong — most often the Tailscale key (single-use, or expired). If it ends with DONE, run sudo cat /root/streamhelpers-pairing-code.txt and paste that code into the box under Already installed one by hand? in the failover card.
The same script works as “user data” at most other providers (DigitalOcean, Vultr, Hetzner …) on Ubuntu 24.04 or Debian 12; open UDP 25554 in their firewall the same way.
You need:
sudo without a password. A password or an SSH private key both work.Then:
The SSH password or key is used for that one install and is not kept on the router. The main receiver keeps it so it can update the failover server later; Remove failover server deletes it.
Prefer to install it yourself? On the failover server, run
wget -qO- https://streamhelpers.com/receiver | sh -s -- --failover
add a Tailscale key on its settings page, copy its IRLCFG- code, and paste it into the box under Already installed one by hand? in the failover card, then press Use code. Do not paste that code into the guided setup, which would make it your main server.
Test the actual switch: press Test failover (real switch) and confirm the outage-style prompt. This is not a simulation: the dashboard moves the bond and outputs to the backup and shows the permanent ON FAILOVER SERVER banner. Your main server stays online. A live broadcast can briefly lose its feed. Use Switch back when finished.
Open its Restreamer shows the backup's own generated username and a Copy password button, followed by Open Restreamer login. It does not use your main server's password or place credentials in the URL.
| What you see | Almost always |
|---|---|
| Failover · failover offline | The failover server is off, or UDP 25554 / Tailscale is not reaching it. Start it; the chip clears on its own. |
| The install stops at Permission denied | Wrong password or key, or SSH as a user without passwordless sudo. Use root, or allow sudo without a password for that user. |
| The install stops waiting for Tailscale | The Tailscale key was single-use and already spent, or expired. Make a reusable one and install again. |
| Switched, and the platforms never got the stream | UDP 25554 is not open on the failover server's firewall. Open it now; the bond reconnects by itself. |
| The picture on the failover server is lower quality | It is the stream exactly as your encoder sends it. Upscaling and other processing only happen on the main server. |
| No backup video when the bond drops on the failover server | Expected: the failover server has no backup video, so a dropout shows as a dropout. Switch back when you can. |
Remove failover server in the card forgets it. The server itself keeps running until you cancel it with your provider.