Hosting Your Own Server
You can do it on your own, if you dare!
Introduction:
If you're at all technically savvy, you actually can host your own server from home, and pretty easily at that. While most streamers have no choice but to spend $50-$200/month on servers, I operate my own from the same PC I do desktop streams on at home and it only costs me $10/month for the SRT Ingest Server - which I could also host for free, but choose not to out of convenience.
WHO IS THIS NOT FOR: You have to have a good connection and a good enough PC where you are setting this up. If you can't reliably do a desktop stream from your PC on your connection, you're better off paying the premium to rent a server.
What You Need:
PC Connected to the Internet, Running OBS (Free Open Source Software)
Ingest Relay Server
NOALBS (Free Open Source Software)
A way to connect to this PC via the Internet (OBS Blade, Remote Desktop, Chrome Remote Desktop, etc.)
Ingest Relay Server Guide:
I basically suggest either Belabox Cloud ($10/month) for an SRT Relay Server, or Antiscuff ($13/month) for an RTMP Relay Server. For Antiscuff, login, go to Services -> View Available Addons and then click 'Video Ingest' on the left to get just the Relay Server without renting a whole server. Get Belabox Cloud if you're using IRL Pro, get Antiscuff if you're using Prism Live Studio or any other app that isn't IRL Pro.
After getting your credentials, take note of the URLs and keys they provide you. You should get an Ingest URL with a key, this is what you put in IRL Pro or whatever device settings you're streaming from. You should also get an OBS source URL. Add this as a media source in OBS.

How this works: You are no longer streaming to the website you want to stream on from your device, you are instead streaming to your Ingest server. In OBS, this shows up in the scene, and you actually stream to the website you want to stream to from OBS.
Very Important: After you have this setup and it is working, right click the source, go to transform, and pick either 'fit to screen' or 'stretch to screen'. This is so if your incoming video and your OBS scene are ever different resolutions, the incoming video will be resized to match that resolution. Example, 1080p OBS but you lower your device resolution to 720p because of bitrate issues on the fly. In this case that 720p incoming video will be stretched to fill the entire 1080p window.
Note: You also need to take note of the Ingest Server Stats URL for the next steps setting up NOALBS, so that NOALBS can monitor the bitrate.
NOALBS Setup Guide:
Download Link: NOALBS (Open Source)
In OBS, go to Tools -> WebSocket Server Settings. Check the box to 'Enable WebSocket server'. This is how NOALBS will communicate with OBS to automatically change scenes between Live, Low Bitrate, and Disconnected scenes - based on the incoming bitrate.

Below this, you'll see your Server Port and Server Password. Take note of these, as you'll need these in NOALBS. In your NOALBS folder, open 'config.json' and add this password and port in the "software" area of the config file.

Next, reference your Ingest Relay Server information and find your stats URL, enter that in the "streamServer" area of the config file. This is how NOALBS will monitor the incoming bitrate. I use Belabox SRT, so this example shows part of that URL.

Next, create three scenes in OBS for Live, Low Bitrate, and Disconnected. I have mine titled 'NOALBS_Live', 'NOALBS_Low', and 'NOALBS_Off'. Add the exact titles of your scenes to the "switchingScenes" area in your config file.

Finally, in the "switcher" area of your config file, set the bitrate amounts to trigger scene changes. This may take some trial and error depending on your setup, and mine is set specifically for SRT, which uses less bitrate than RTMP for the same image, so if you're using RTMP, my settings may not work for you. It will switch to your low bitrate scene when bitrate hits the 'low' amount, and back to live when it hits the 'rtt' amount, and to the disconnected scene when it hits the 'offline' amount.

Controlling OBS Remotely:
Now you need a way to remotely control OBS to Start and Stop the stream. I'll break this down into two categories, Easiest, Preferred, and Advanced.
Easiest: The absolute easiest way to do this is to install Chrome Remote Desktop. It's free and easy to use, does not require messing with any Port settings, and will work when you're unable to access Port settings at all, which is the case for some ISPs and modems. An added bonus is if you travel with a laptop, even a cheap Chromebook, you can remote into your PC with this as well to make changes to your overlays and scenes, controlling your PC as if you were physically there.
With Chrome Remote Desktop, you install it on your PC and on your Phone. From your Phone, you open the app, connect to your PC, and you'll be able to control every aspect of your PC from your Phone as if you were physically at home sitting at the PC. From this, you just start and stop the stream.
Preferred: The current preferred method is using RealtimeKit. This takes a lot of steps out of the advanced method, but their mobile app currently does not work with newer versions of Android. With this one, you skip the whole port forwarding process and get similar results controlling OBS directly from a mobile app.
In any case, I recommend setting up Chrome Remote Desktop as a backup in case something breaks!
Advanced: The advanced way, and what you would be familiar with if you've ever rented a server, is using the OBS Blade app on your phone. This app is designed specifically to remotely connect and control OBS, easily allowing you to start and stop the stream, switch scenes, control overlays, etc.
This does require you to go into your modem/router settings, and forwarding the OBS WebSocket port so that you can connect to it away from your home network. Once you've done that, you go to a site like WhatIsMyIP.com and then enter it in OBS Blade as the server, followed by your OBS WebSocket port and password.
If your ISP or modem/router does not allow you to forward ports, you can alternatively setup a reverse cloud tunnel with something like Cloudflared. This can be also useful if your IP is dynamic and changes often, or if you're always on the go and hosting your server on a laptop that changes networks often. However, in any of these cases, Chrome Remote Desktop would still be the quickest and easiest setup.
In any case, I recommend setting up Chrome Remote Desktop as a backup in case something breaks!
Additional QoL / Automation Tips:
I have three BIG additional quality of life tips that I strongly recommend.
Bios Settings: Access your PC Bios Settings to enable your PC to restart automatically if it loses power. Nothing sucks more than being away from your server and it powers off and you can't power it on. This is a simple settings change that varies from PC to PC, so figure out how to change your bios settings and do it!
Buy a UPS Battery Backup Device: These are small devices with batteries inside that you plug your PC and Modem/Router into so that if the power goes out where your PC is, it maintains the connection for a period of time. You may be in the sunshine doing an IRL stream, but there may be a thunderstorm at your house causing your power to blink or temporarily go out. With this, your stream will stay live. There are many options where price scales with the battery size.
Setup RestartOnCrash: RestartOnCrash is a lightweight free application that just restarts something on your PC if it crashes. These things happen, sometimes NOALBS crashes, sometimes OBS crashes. Whatever your stream relies on, just add it to RestartOnCrash and if it does crash, it will automatically start again, making your life a lot easier.
Last updated