Skip to content
Rion edited this page May 17, 2024 · 23 revisions

This script was forked from acceleration3's "cloudgamestream" so the most thanks goes to the original creator.

This script is made by an individual and is provided as-is, with no guarantee of updates. The project is licensed under the MIT license. This page is an overview of the script and provides in-depth information on how to use it. It assumes you understand the project based on it's README. Contributors should make sure the tutorial and information they write is as easy to understand as possible, so that as many people can understand it. This script is meant for people who don't understand much about the cloud (or even computers) and it also allows you to reverse any step. Nothing in this script is permanent. If you need help reversing a step you don't want, make an issue on GitHub.

Why create a cloud computer?

Keep in mind, this script was made for other uses than gaming. Your use case always changes based on what you need. Sometimes, you may only need a workstation and only need access to it for a couple of hours each week. This may be because you are travelling and your computer is at home, doesn't have the equipment you need, or your home internet may be too slow to stream your personal computer. Cloud computers provide easy access to powerful computers, for a wide range of people, and in some cases, are affordable for long term use. This script is open and allows anybody, even someone in a commercial setting, to setup a cloud machine. Due to the script's flexibility, it can be ran on multiple cloud computers and automated to save time.

Security

Security is of the utmost importance. Please report any security flaws you find as an issue. Please note that the script is using a security analyzer, so please check the errors listed there before submitting an issue. If possible, provide why this is an error or security flaw, and how to fix it, to better help contributors. All files that are downloaded are from official sources. If something is hosted on an non-secure file server, that's just the way it was provided to the public, and contributors cannot change this fact. If possible, solutions or alternatives can be provided. If you are worried about third-parties accessing your cloud computer, you can change network security settings to only allow access to the needed ports by restricting connections only to the IP address you provide. This process changes based on the cloud provider.

Getting started

Any GPU is supported, the same goes for the cloud provider and Windows OS. However, that doesn't guarantee all features and automatic parts of this script will work correctly on your setup. If the server's operating system is a version of Windows Server, the script will work perfectly. The guides that are included in this wiki, like for AWS, are the officially supported set ups for this script and have been tested on real cloud server, therefore making them guaranteed to work with the script. When launching a server, make sure that you are running Windows Server 2019. If you can only select newer versions, it will still work, but it may not have been officially tested.

Downloading locally

Once you've connected successfully to your server, copy-paste the code below into PowerShell:

[Net.ServicePointManager]::SecurityProtocol = "tls12, tls11, tls" 
$DownloadScript = "https://github.com/chocolatemoo53/cloudstreaming/archive/refs/heads/main.zip"  
$ArchivePath = "$ENV:UserProfile\Downloads\cloudstreaming"  
(New-Object System.Net.WebClient).DownloadFile($DownloadScript, "$ArchivePath.zip")  
Expand-Archive "$ArchivePath.zip" -DestinationPath $ArchivePath -Force
CD $ArchivePath\cloudstreaming-main | powershell.exe .\welcome.ps1  

Thank you goes to Parsec for creating that command. It was modified to download this script, instead of the Parsec Cloud Preparation Tool.

Overview of step one

The beginning of the script, also known as step one, is located inside the "steps" folder. Step one is not very complicated, it uses some basic code to download then install a file from the internet. All files come from their official source. There are no buckets for files managed by anyone who works on the project.

Video driver prompt

This prompt allows you install GPU drivers on either AWS or GCP instances. AWS does a normal install as detailed in the AWS documentation while GCP uses an installation script provided by Google Cloud themselves.

Audio driver prompt

This prompt asks you if you'd like to download audio drivers. If you decide to, the script will download donation-ware named VB-CABLE Virtual Audio Device, or VB-CABLE for short. At the time of writing, it is the only audio driver to work fully with each streaming technology. An exception to this is NiceDCV, as it provides high quality surround drivers for use with the program.

Streaming technology prompt

This prompt asks you what "streaming technology" you'd like to install. At the time of writing, the script supports NiceDCV, Parsec and Sunshine.

Here is a table comparing each program:

Feature NiceDCV Sunshine Parsec
Supported devices Desktop (Windows, MacOS (ARM, X86_x64) Linux) Desktop (Windows (ARM, X86_64), MacOS (ARM, X86_64), Linux (ARM, X86_64), gaming consoles, RPI, Android, IOS, streaming boxes, Steam Link, FireOS tablets etc Desktop (Windows, Mac, Linux), Android
Supported clouds AWS, costs money for others Any Any
Supported resolution 4k, multiple monitors 4k, unsure about multiple monitors 4k, pay for multiple monitors
Controller support Supported with Windows client Requires a patch Requires a patch
Price Free with AWS, costs on other clouds Free and open source Free but can pay for more features
Support From AWS Community support Unsure
Documentation Documentation provided Documentation provided Support site with info

Overview of step two

Step two will check if you're using a Windows Server. If you aren't, a portion of step two will be skipped as it is not required for normal Windows. If you are, it will apply the same fixes the Parsec Preperation Tool does.

Enable-MMAgent -MemoryCompression | Out-Null

Memory compression is enabled inside of Windows 10/11 by default to get more out of your physical RAM by compressing some of the pages.

Set-Service -Name Audiosrv -StartupType Automatic | Out-Null

Sometimes, in Windows Server, audio drivers don't start up automatically. So, occasionally, the driver will not turn on when the computer does. This gets rid of the chance of this happening, if there is even a chance it can.

New-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Control" -Name "ServicesPipeTimeout" -Value 600000 -PropertyType "DWord" | Out-Null

This simply gives more time for services created by the script to timeout. Which can be important depending on the scenario.

After applying fixes, the first prompt is your password. It doesn't have to be auto-generated, it's just common for cloud providers to auto-generate the password for you. This is stored as a secured value to PowerShell and then passed onto the registry. Auto-login is set up since some applications will not start up with the computer unless you are logged in. In the case with something like Sunshine, the computer needs to be logged in to make a connection.

The next prompt is your time zone, you can leave it blank and is only for convenience. It may be useful to set depending on your preference.

Overview of step three

This step gives you the option to download (mostly closed sourced) software from their official sources. This step just makes things easier to get set up on your cloud computer. Since this script is also for gaming, there are a few game clients. Everything will install silently and be setup just like if you did it yourself! Why have it? It's only because most people want to quickly go through the process of setting up their cloud computers. The script helps to get rid of going to all the links you might normally go to on a new computer.

Contribute your code

Like many projects on GitHub, you can contribute your code to this project. Here's the proper steps to do so:

  1. Fork the script
  2. Write your code
  3. Send a pull request and get approved