Your own gaming gear in the Cloud ! ๐ฎ โ
- What is Cloudy Pad ?
- Development status ๐งช
- Features โจ
- Getting started ๐
- Installation
- Usage
- Detailed setup per Clouder
- FAQ
- How much will I pay ? ๐ซฐ
- What are the recommended GPU and specs for my instance ?
- How can I log-in to Steam?
- How to play game on Steam / Why does my Steam game doesn't launch ?
- Using Steam, why does my game take forever to "cache Vulkan shader" ?
- I have a black screen when I connect to my instance
- I Found an bug or I have a suggestion
- How does all of this work?
- Will Cloudy Pad become a paid product ?
- Known issues
- License
Cloudy Pad lets you deploy a Cloud gaming server anywhere in the world and play your own games - without requiring a powerful gaming machine or a costly subscription:
- Only pay what you play for ! No subscription or long-term commitment.
- Occasional player? Pay less than $10 / month !
- Play up to 40h / month for less than $40
- Use your own game library. Don't be limited to titles that you may lose access to.
- Pick the machine and GPU suitable for your needs.
Not familiar with Cloud Gaming ? See What's Cloud Gaming and how is Cloudy Pad useful ?
This project is still at an experimental phase. While working and allowing you to play in the Cloud seamlessly, there may be breaking changes in the future. Your feedback, bug reports and contribution will be greatly appreciated !
Compatible with Moonlight streaming client
Available Cloud providers:
Potential future Cloud providers - upvote them on their GitHub issues!
- Oblivus - ๐ on GitHub issue if you want it implemented
- TensorDock - ๐ on GitHub issue if you want it implemented
- Vulture - ๐ on GitHub issue if you want it implemented
Not familiar with terms like "Cloud gaming", "Moonlight", "Cloud Provider" "terminal" or "CLI" ? Visit What's Cloud Gaming and how is Cloudy Pad useful ? first ๐
Cloudy Pad deploys a Cloud gaming gear using a Cloud provider of your choice:
- ๐ธ While Cloudy Pad itself is free and open-source, charges may incur for Cloud provider usage. Make sure you understand the costs
- Cloudy Pad lets you play on Linux. Using Steam may require Proton. You can check your game compatibility on ProtonDB website or see how to play games on Steam.
Prerequisites:
- A Cloud provider account, one of:
- Moonlight streaming client
- Docker (other container engine support will come soon)
Install latest version of cloudypad
CLI:
curl -fsSL https://raw.githubusercontent.com/PierreBeucher/cloudypad/master/install.sh | sh
For other installation methods, see Installation
You may need to setup a few things on your Cloud provider (eg. API key or SSH key). Checkout per-Clouder setup specifities.
Once ready, create your instance with cloudypad
CLI:
cloudypad create
# How shall we name your Cloudy Pad instance? (default: mypad)
#
# Creating Cloudy Pad instance 'mypad'
#
# [...]
#
# ๐ฅณ Your Cloudy Pad instance is ready !
Cloudy Pad will:
- Create a new Cloud machine and related configurations automatically (you can also use an existing machine)
- Install GPU drivers and Wolf gaming server
- Help your Pair with Moonlight
Once you are done, remember to stop your instance to avoid unnecessary costs ๐ธ
cloudypad stop mypad
# or
# cloudypad destroy mypad
๐ฑ Something went wrong? See Known issues, FAQ or create an issue
Install latest version of cloudypad
CLI:
curl -fsSL https://raw.githubusercontent.com/PierreBeucher/cloudypad/master/install.sh | sh
Running Cloudy Pad on Windows requires WSL to be installed.
Once WSL is installed, run a Linux shell and follow Linux installation steps.
Cloudy Pad is packaged as a Nix Flake, see flake.nix
You can include it in your NixOS config or run directly with nix run
:
nix run github:PierreBeucher/cloudypad create
nix run github:PierreBeucher/cloudypad -- --version
๐งช cloudypad
CLI interface is still experimental and may change in the future
Available commands:
$ cloudypad --help
Options:
--verbose, -v Verbosity level (0: silly, 1: trace, 2: debug, 3: info, 4: warn, 5: error, 6: fatal)
-V, --version output the version number
-h, --help display help for command
Commands:
list List all instances
create [name] Create a new instance
start <name> Start an instance
stop <name> Stop an instance
restart <name> Restart an instance
get <name> Get details of an instance
provision <name> Provision an instance (deploy or update Cloud resources)
configure <name> Configure an instance (connect to instance and install drivers, packages, etc.)
destroy <name> Destroy an instance
pair <name> Pair an instance with Moonlight
help [command] display help for command
List existing instances:
cloudypad list
Provision an instance. This will create/update Cloud resources for your instance.
cloudypad provision mypad
Start, stop or restart an instance
cloudypad start mypad
cloudypad stop mypad
cloudypad restart mypad
Get details of a specific instance.
cloudypad get mypad
Pair Moonlight with an existing instance:
cloudypad pair mypad
You specified an SSH key when creating your instance. Retrieve your instance details to show its IP and SSH user:
$ cloudypad get mypad
{
"name": "mypad",
"host": "5.120.23.178", <==== Instance IP
"ssh": {
"privateKeyPath": "/home/crafteo/.ssh/id_ed25519",
"user": "ubuntu" <===== SSH user
},
"status": {
...
},
"provider": {
"aws": {
...
}
},
}
Connect via SSH:
ssh ubuntu@5.120.23.178
# If needed, specify SSH key
ssh -i /home/crafteo/.ssh/id_ed25519 ubuntu@5.120.23.178
If you don't already have a Paperspace account, create an account.
If you haven't already setup an SSH key in your profile:
- If needed, generate an SSH key with
ssh-keygen -t ed25519 -a 100
- Log into your account and go to Your account > SSH Keys > Add new SSH key to add your key. (see doc for details)
You'll need an API key to create your instance:
- Go to Team settings > API Keys > Add (see doc for details)
You're good to go ! Create your instance with
cloudypad create
If you don't already have an AWS account, create an account or use an existing account.
Configure your credentials locally (see official documentation)
Check your configuration:
$ aws sts get-caller-identity
{
"UserId": "AID...YOUR_USER_ID",
"Account": "123456789",
"Arn": "arn:aws:iam::123456789:user/crafteo"
}
You're good to go ! Create your instance with
cloudypad create
You may need to increase quota to create the related instance type. If you get an error related to quota:
- Go to AWS console and open "Service Quotas" service
- Go to AWS Services > search for Amazon Elastic Compute Cloud (Amazon EC2) and open it
- Search for Running On-Demand G and VT instances (or the related instance type) and request a quota increase
- Use a quota value according to the instance type you want to use. For example,
2xlarge
requires at least 8 vCPU.
See AWS service quotas for details.
If you don't already have an Azure account, create an account or use an existing account.
Configure your credentials locally (see official documentation)
Check your configuration:
$ az account list
[
{
"cloudName": "AzureCloud",
"homeTenantId": "xxx",
"id": "xxx",
"isDefault": true,
"managedByTenants": [],
"name": "My Azure Subcription",
"state": "Enabled",
"tenantId": "xxx",
"user": {
"name": "you@example.com",
"type": "user"
}
}
]
You may need to increase quota to create the desired instance type. If you get an error related to quota:
- Go to Azure console and open "Quotas" service
- Go to Compute > filter for your Subscription / Location and search for NC, NC or the instance type prefix you want to use
- Click on quota name and New Quota Request
- Fill-out the quota request and submit
Quota is usually accepted within 24 to 48h.
If you want to use an AWS Profile or specific AWS credentials, use environment variables such as:
export AWS_PROFILE=myprofile
See AWS environment variable list for existing variables. Not there are certain limitations as most Cloudy Pad workflow run in a container which may cause some variables to misbehave. Please create an issue if you encounter a problem.
If you don't already have a Google Cloud account, create an account or use an existing account.
Configure your credentials locally (see official documentation)
Check your configuration:
$ gcloud auth list
Credentialed Accounts
ACTIVE ACCOUNT
* your_email@gmail.com
You may need to increase quota to create the desired instance type. If you get an error related to quota, see Google Cloud Quota doc to update your quotas.
Cloudy-Pad is free and open-source; however, charges may apply when using a Cloud provider. Typically billed resources:
- Machine usage (GPU, CPU, RAM)
- Disk storage
- IP address reservation
Here are estimation tables for supported providers. For example, using Paperspace P4000
instance for 10 hours / month with a 50GB disk will cost approximatively 13.10$.
These pricing are estimations from actual prices but may be outdated. If you see a significant difference between these tables and your observed cost do not hesitate to report it or update it !
Instance Type | 10h / month 50 GB disk | 10h / month 100 GB disk | 10h / month 250 GB disk | 20h / month 100 GB disk | 20h / month 250 GB disk | 30h / month 250 GB disk |
---|---|---|---|---|---|---|
P4000 | $13.10 | $15.10 | $18.10 | $20.20 | $23.20 | $28.30 |
RTX4000 | $13.60 | $15.60 | $18.60 | $21.20 | $24.20 | $29.80 |
P5000 | $15.80 | $17.80 | $20.80 | $25.60 | $28.60 | $36.40 |
RTX5000 | $16.20 | $18.20 | $21.20 | $26.40 | $29.40 | $37.60 |
P6000 | $19.00 | $21.00 | $24.00 | $32.00 | $35.00 | $46.00 |
*Estimations based on Paperspace pricing as of July 2024. Exact prices may vary over time and by region.
Instance Type | 10h / month 50 GB disk | 10h / month 100 GB disk | 10h / month 250 GB disk | 20h / month 100 GB disk | 20h / month 250 GB disk | 30h / month 250 GB disk |
---|---|---|---|---|---|---|
g4dn.xlarge | $12.86 | $16.86 | $28.86 | $22.12 | $34.12 | $39.38 |
g4dn.2xlarge | $15.12 | $19.12 | $31.12 | $26.64 | $38.64 | $46.16 |
g5.xlarge | $17.66 | $21.66 | $33.66 | $31.72 | $43.72 | $53.78 |
g5.2xlarge | $19.72 | $23.72 | $35.72 | $35.84 | $47.84 | $59.96 |
g6.xlarge | $15.65 | $19.65 | $31.65 | $27.70 | $39.70 | $47.74 |
g6.2xlarge | $17.38 | $21.38 | $33.38 | $31.15 | $43.15 | $52.93 |
*Estimations based on AWS eu-east-1 pricing as of July 2024. Exact prices may vary over time and by region.
Azure | 10h / month 50 GB disk | 10h / month 100 GB disk | 10h / month 250 GB disk | 20h / month 100 GB disk | 20h / month 250 GB disk | 30h / month 250 GB disk |
---|---|---|---|---|---|---|
NV6ads A10 v5 (6 CPU, 55GB RAM) | $8.59 | $12.64 | $24.79 | $17.18 | $29.33 | $33.87 |
NC8as T4 v3 (8 CPU, 56GB RAM) | $11.57 | $15.62 | $27.77 | $23.14 | $35.29 | $42.81 |
*Estimations based on Azure US pricing as of August 2024. Exact prices may vary over time and by region.
Google Cloud | 10h / month 50 GB disk | 10h / month 100 GB disk | 10h / month 250 GB disk | 20h / month 100 GB disk | 20h / month 250 GB disk | 30h / month 250 GB disk |
---|---|---|---|---|---|---|
4 CPU / 15GB RAM / Tesla T4 | $6.77 | $12.77 | $30.77 | $13.54 | $31.54 | $32.31 |
4 CPU / 15GB RAM / Tesla P4 | $7.32 | $13.32 | $31.32 | $14.64 | $32.64 | $33.96 |
8 CPU / 30GB RAM / Tesla T4 | $7.54 | $13.54 | $31.54 | $15.08 | $33.08 | $34.62 |
8 CPU / 30GB RAM / Tesla P4 | $8.64 | $14.64 | $32.64 | $17.28 | $35.28 | $37.92 |
Instances used for estimation: N1 Standard. Estimations based on Google Cloud us-central-1 as of August 2024. Exact prices may vary over time and by region.
General recommendations:
- Choose a location or region as close as possible to you to avoid too much latency (eg. if you live in the US don't create your instance in Europe)
- Just provision what you need for: don't create a 1000 GB disk if you intend to play a game that will only use 50 GB.
- GPU / machine type depends on the game you play. See below for recommendations.
xlarge
instances should be enough for most usage. For instance, g4dn.xlarge
can run Baldur's Gate 3 in Ultra with 60 FPS 1080 without issues. Use a larger instance only if you have latency related to resource consumption.
Paperspace RTX4000
or P4000
or M4000
are relatively cheap and powerful enough for most use. A P4000
can run Baldur's Gate 3 in Ultra with 60 FPS 1080 without issues.
Use higher-tier instance if you have latency related to resource consumption.
Use NC or NV instances with 4 to 8 CPUs, eg. one of:
- NC4as T4 v3 (4 CPU, 28 GB RAM)
- NC8as T4 v3 (8 CPU, 56 GB RAM)
- NV6ads A10 v5 (6 CPU, 55GB RAM)
Azure provide more opwerful instance but they are likely too expansive (providing lots of memory and ephemeral storage which is likely unused for gaming but expensive).
Azure gaming instances NG are not yet supported (they use AMD GPU while only NVIDIA is supported for now)
Use N1 Standard instances with 4 to 16 CPUs with T4 or P4 GPUs. They are the cheapest while providing a good experience, eg. a P4 with 15GB RAM and 8 CPU can run Baldur's Gate 3 in Ultra with 60 FPS.
When you run Steam, you'll be prompted to login either via QR code or login/password. You can either:
- Enter your login / password manually
- Use the Steam app to login via QR code: download and login with the Steam app on your smartphone, then click on the Steam Guard icon (shield icon at the bottom) and scan the QR code shown.
In order to play games on Steam you may need to enable Proton:
- Go to game properties (Gear button on the right > Properties)
- Enable Proton in the Compatibility menu
It's recommended to check your game Proton compatibility on ProtonDB. You may need to add a few Launch options (Game properties > General > Launch options).
If this is the first time you run your game this is (unfortunately) expected. Steam may cache Vulkan shaders to optimize in-game performance. It should be faster on subsequent runs, if not instantaneous.
If this is the first time you connect to your instance, it may take a few minutes to setup the required components. If after 5 min the problem persists, please file an issue.
If you found a bug or have a suggestion, please report an issue. Thanks for your feedback !
cloudypad
is a wrapper around a few technologies:
- Wolf gaming server
- Clouder-specific tools and APIs to deploy and manage Cloud machines
- When possible, Pulumi to deploy Cloud machines and resources
- Ansible to configure machines (drivers, gaming server, etc.)
- ๐ง Brain juice from me and other awesome open-source community members
Probably not in its current form. Considering I'm really not happy about the enshittification of the internet, Cloudy Pad will remain FOSS - at least for personal use.
Cloudy Pad may have a Premium or Pro offer in the future, but for a personal simple use it will remain FOSS.
For MacOS, if your Docker installation use VirtioFS, Cloudy Pad may fail with a Docker-related error such as:
Error response from daemon: error while creating mount source path '/private/tmp/com.apple.launchd.ABCDEF/Listeners': mkdir /private/tmp/com.apple.launchd.ABCDEF/Listeners: operation not supported
This is a bug when using Docker for Mac VirtioFS file sharing with SSH agent. The bug is still being worked on, as a workaround you can either:
- Disable SSH agent before running Cloudy Pad, eg.
unset SSH_AUTH_SOCK
- Switch Docker for Mac config to non-VirtioFS (eg. gRPC FUSE): go to config > Resources > File Sharing and update config.