nestriness / nestri

[Experimental] Open-source GeForce NOW alternative with Stadia's social features
https://nestri.io
GNU Affero General Public License v3.0
1.41k stars 19 forks source link
dxvk geforcenow linux-gaming nvidia proton stadia steamdeck vkd3d wine
   

nestri logo name

    An open-source cloud gaming platform built for you to play together with your friends.
A GeForce NOW alternative that can be self-hosted.

   

[![][github-release-shield]][github-release-link] [![][discord-shield]][discord-link] [![][github-license-shield]][github-license-link] [![][github-stars-shield]][github-stars-link] **Share the Nestri Repository on Social Media** [![][share-x-shield]][share-x-link] [![][share-reddit-shield]][share-reddit-link]

   

[![][image-overview]][website-link]

Features 🌟

As Nestri navigates through its experimental phase, we're in the process of crafting and testing a variety of features for you:

  1. 🎮 Proton-GE Compatibility: We utilize Proton-GE for running games, offering extensive game compatibility and ensuring you can play a wide variety of titles.

  2. ⚡ QUIC Protocol: For input and video/audio transmission, we use QUIC via MoQ to significantly reduce latency on variable networks, ensuring crisp visuals without sacrificing data or increasing latency.

  3. 🔗 Session IDs: With a SESSION_ID, we seamlessly tie your game progress, achievements, and devices without the need for logging into nestri.io. Our public CDNs, currently located in Europe (eu-north-1) and the US (us-east-1), further reduce latency for friends playing together from afar. More locations are on the way!

  4. 🔄 Automatic Game Progress Sync: Like Stadia's state share, we automatically sync your game progress based on the *.exe file you're running, allowing you to share your progress with friends via a link.

  5. 👫 Co-op Gameplay: Play co-op with up to 8 people, or play single player by sharing mouse and keyboard inputs seamlessly (similar to neko).

  6. 🌐 Cross-Platform Play: Our platform is accessible on any device that can run a Chrome-based browser, including Edge, Chrome, Brave, and Arc. And you do not have to set up anything, it's all done and maintained for you.

  7. 📊 Bandwidth Optimization: Experience hardware-accelerated VMAF for optimized bandwidth, ensuring the best possible video quality. Learn More

  8. 🌟 ...and more: Stay tuned as we continue to add features sometimes inspired by platforms like Stadia, to give you the best and most customizable gaming experience.

This platform is in an experimental phase, and we're actively working on adding new features. Your feedback and support is very much appreciated.

[!IMPORTANT]

If you're excited about what we're doing and want to support our journey, consider giving us a star ⭐ on our repository. Your support fuels our progress!. \~ ✨

Getting Started 🎮

Whether you're looking to self-host Nestri or simply want to try it out without the need for your own GPU, we've got you covered. Choose the path that best suits your needs:

If you don't have a Nvidia GPU or prefer not to self-host, you can visit our website. No installation or set up required !
This is the perfect option for gamers looking to dive straight into the action without any setup.
👉🏽 Get Access
If you're interested in self-hosting Nestri, continue reading for detailed instructions on how to get started.
This option is ideal if you have your own Nvidia GPU and are comfortable with setting up and managing your own server.
🛠️ Self Host Nestri

[!TIP]

Remember, flexibility is key with Nestri. You're free to switch between self-hosting and using nestri.io whenever you like, without losing your game progress. \~ 💡

Self-Hosting Nestri 🔨

For those interested in self-hosting, here are is what you need to get your own Nestri server up and running:

[!TIP]

Typically, if your setup meets the necessary CUDA requirements, the nvidia-drm module will already be loaded, particularly in AWS G4dn instances. \~ 💡

Step-by-Step Guide

Follow these steps to get Nestri up and running on your system.

[!IMPORTANT]

This is our pilot, there is a lot we haven't figured out yet. Please file an issue if anything comes up. \~ 🫂

[!TIP]

The setup process will become much simpler with the launch of our CLI tool, so stay tuned for that! In the meantime, you'll need to follow these manual steps.

Step 1: Navigate to Your Game Directory

First, change your directory to the location of your .exe file. For Steam games, this typically means:

cd $HOME/.steam/steam/steamapps
ls -la .

Step 2: Generate a Session ID

Create a unique session ID using the following command:

head /dev/urandom | LC_ALL=C tr -dc 'a-zA-Z0-9' | head -c 16

This command generates a random 16-character string. Be sure to note this string carefully, as you'll need it for the next step.

Step 3: Launch the Nestri Server

With your SESSION_ID ready, insert it into the command below, replacing <copy here> with your actual session ID. Then, run the command to start the Nestri server:

docker run --gpus all --device=/dev/dri --name nestri -it --entrypoint /bin/bash -e SESSION_ID=<copy here> -v "$(pwd)":/game -p 8080:8080/udp --cap-add=SYS_NICE --cap-add=SYS_ADMIN ghcr.io/nestriness/nestri/server:nightly

[!TIP]

Ensure UDP port 8080 is accessible from the internet. Use ufw allow 8080/udp or adjust your cloud provider's security group settings accordingly.

Step 4: Configure the Game within the Container

After executing the previous command, you'll be in a new shell within the container (example: nestri@3f199ee68c01:~$). Perform the following checks:

  1. Verify the game is mounted by executing ls -la /game. If not, exit and ensure you've correctly mounted the game directory as a volume.
  2. Then, start the Netris server by running /etc/startup.sh > /dev/null &.

Step 5: Running Your Game

Wait for the .X11-unix directory to appear in /tmp (check with ls -la /tmp). Once it appears, you're ready to launch your game.

Step 6: Begin Playing

Finally, construct the play URL with your session ID:

echo "https://nestri.io/play/$SESSION_ID"

Navigate to this URL in your browser, click on the page to capture your mouse pointer, and start playing!