Skip to content

Commit

Permalink
Documentation for Nestri (#116)
Browse files Browse the repository at this point in the history
I have made documentation for Nestri, so everybody easy can find
instructions to get started. It will also make it easier for people to
help contribute to the documentation.

The documentation is built with Nuxt3, [Docus
](https://github.com/nuxt-themes) which uses Nuxt Content.

![image](https://github.com/user-attachments/assets/b30258c3-2267-4710-b8f4-48145e7c98d0)

![image](https://github.com/user-attachments/assets/6ccad52e-b6e1-4c8d-9c0c-bc4fae0227f1)
  • Loading branch information
victorpahuus authored Sep 26, 2024
1 parent bae089e commit 390ee2a
Show file tree
Hide file tree
Showing 32 changed files with 16,811 additions and 0 deletions.
14 changes: 14 additions & 0 deletions apps/docs/.eslintrc.cjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
module.exports = {
root: true,
extends: ['@nuxt/eslint-config'],
ignorePatterns: [
'dist',
'node_modules',
'.output',
'.nuxt'
],
rules: {
'vue/max-attributes-per-line': 'off',
'vue/multi-word-component-names': 'off'
}
}
12 changes: 12 additions & 0 deletions apps/docs/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
node_modules
*.iml
.idea
*.log*
.nuxt
.vscode
.DS_Store
coverage
dist
sw.*
.env
.output
2 changes: 2 additions & 0 deletions apps/docs/.npmrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
shamefully-hoist=true
strict-peer-dependencies=false
47 changes: 47 additions & 0 deletions apps/docs/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
# Docus

## Setup

Install dependencies:

```bash
npm install
```

## Development

```bash
npm run dev
```

## Edge Side Rendering

Can be deployed to Vercel Functions, Netlify Functions, AWS, and most Node-compatible environments.

Look at all the available presets [here](https://v3.nuxtjs.org/guide/deploy/presets).

```bash
npm build
```

## Static Generation

Use the `generate` command to build your application.

The HTML files will be generated in the .output/public directory and ready to be deployed to any static compatible hosting.

```bash
npm run generate
```

## Preview build

You might want to preview the result of your build locally, to do so, run the following command:

```bash
yarn preview
```

---

For a detailed explanation of how things work, check out [Docus](https://docus.dev).
44 changes: 44 additions & 0 deletions apps/docs/app.config.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
// https://github.com/nuxt-themes/docus/blob/main/nuxt.schema.ts
export default defineAppConfig({
docus: {
title: 'Nestri',
description: 'An open-source, self-hosted Geforce Now alternative',
image: 'https://feat-relay-hetzner.nestri.pages.dev/logo.webp',
socials: {
twitter: 'nestriness',
github: 'nestriness/nestri',
reddit: '/r/nestri',
website: {
label: 'Website',
icon: 'lucide:house',
href: 'https://nestri.io'
}
},
github: {
dir: 'apps/docs/content',
branch: 'main',
repo: 'nestri',
owner: 'nestriness',
edit: true
},
aside: {
level: 0,
collapsed: false,
exclude: []
},
main: {
padded: true,
fluid: true
},
logo: "/nestri-logo.svg",
header: {
logo: true,
showLinkIcon: true,
exclude: [],
fluid: true
},
footer: {
credits: false,
}
}
})
62 changes: 62 additions & 0 deletions apps/docs/components/AppSocialIcons.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
<script setup lang="ts">
const socials = ['twitter', 'facebook', 'instagram', 'tiktok', 'youtube', 'github', 'medium', 'reddit', 'discord']
const { config } = useDocus()
const icons = computed<any>(() => {
return Object.entries(config.value.socials || {})
.map(([key, value]) => {
if (typeof value === 'object') {
return value
} else if (typeof value === 'string' && value && socials.includes(key)) {
return {
href: /^https?:\/\//.test(value) ? value : `https://${key}.com/${value}`,
icon: `fa-brands:${key}`,
label: value,
rel: 'noopener noreferrer'
}
} else {
return null
}
})
.filter(Boolean)
})
</script>

<template>
<NuxtLink
v-for="icon in icons"
:key="icon.label"
:rel="icon.rel"
:title="icon.label"
:aria-label="icon.label"
:href="icon.href"
target="_blank"
>
<Icon
v-if="icon.icon"
:name="icon.icon"
/>
</NuxtLink>
</template>

<style lang="ts" scoped>
css({
a: {
display: 'flex',
color: '{color.gray.500}',
padding: '{space.4}',
'@dark': {
color: '{color.gray.400}'
},
'&:hover': {
color: '{color.gray.700}',
'@dark': {
color: '{color.gray.200}',
}
},
}
})
</style>
3 changes: 3 additions & 0 deletions apps/docs/components/Logo.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
<template>
<img width="120" src="/img/nestri-logo-sm.svg"/>
</template>
48 changes: 48 additions & 0 deletions apps/docs/content/0.index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
---
title: Home
navigation: false
layout: page
main:
fluid: false
---

:ellipsis{right=0px width=75% blur=150px}

::block-hero
---
cta:
- Get started
- /introduction/what-is-nestri

secondary:
- Open on GitHub →
- https://github.com/nestriness/nestri
---

#title
An open-source, self-hosted Geforce Now alternative.

#description
Play your favorite games on the go or with your friends on your own game cloud.

#extra
::list
- **Selfhosted** cloud gaming
- **Open Source** and **Free**
- 1.5k ⭐️ on GitHub


::

<!--#support
::terminal
---
content:
- npx nuxi@latest init -t themes/docus
- cd docs
- npm install
- npm run dev
---
::-->
::

19 changes: 19 additions & 0 deletions apps/docs/content/1.introduction/1.what-is-nestri.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# What is Nestri?

Nestri is a self-hosted cloud-gaming solution that allows you to stream and play your own games remotely from any device with a browser. Similar to services like NVIDIA GeForce Now, Nestri lets you enjoy high-performance gaming without being physically tied to your gaming PC. The key difference is that Nestri is entirely self-hosted, meaning you have complete control over the server, the games you install, and the overall setup.

Nestri is designed for gamers who value privacy, flexibility, and control, making it the ideal choice for those who prefer to manage their own infrastructure rather than rely on third-party services. You can play your games from virtually anywhere, as long as you have access to a web browser and a stable internet connection.
## Nestri Modules

To provide a smooth and efficient gaming experience, Nestri is composed of the following key components:

### Nestri Node
The Nestri Node is the core of your Nestri setup. It acts as the game server where you install and run your games. The Nestri Node streams gameplay from the machine it’s installed on, allowing you to access your games remotely. It runs on most Linux-based systems and requires an NVIDIA graphics card to ensure a high-quality gaming experience.

Since Nestri Node cannot run alongside Xorg (the graphical interface), it’s recommended to install it on a dedicated machine. This way, your server can focus solely on streaming your games while avoiding conflicts with your local display setup.

### Nestri Relay
The Nestri Relay is responsible for transporting the video stream from your Nestri Node to the device you're gaming on. By default, Nestri connects to the Nestri-hosted Relay, which requires no configuration and is available for all users. This simplifies the setup process, ensuring a smooth streaming experience without the need for advanced networking or SSL certificate management.

For advanced users, it's possible to self-host the relay, but this requires the setup of secure SSL certificates. This option is typically more complex and is recommended only for developers or those familiar with network configuration.

2 changes: 2 additions & 0 deletions apps/docs/content/1.introduction/_dir.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
icon: ph:star-duotone
navigation.redirect: /introduction/what-is-nestri
9 changes: 9 additions & 0 deletions apps/docs/content/2.nestri-node/1.what-is-nestri-node.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# What is Nestri Node?

Nestri Node is the core component of Nestri's self-hosted cloud-gaming solution, designed for users who want the freedom and flexibility of running their own game-streaming server. Similar to services like NVIDIA GeForce Now, Nestri allows you to play your games remotely via your browser. However, unlike other cloud-gaming platforms, Nestri is fully self-hosted, giving you complete control over your server and gaming experience.

The Nestri Node is the actual server where you install your games. Once set up, you can stream and play your games remotely from any compatible device. It runs on machines with Linux and requires an NVIDIA, AMD or an Intel graphics card .
## ⚠️ Important Note

We recommend not installing Nestri Node on your primary PC if you only intend to use it over a weekend. This is because Nestri Node cannot run simultaneously with Xorg, the display server responsible for managing the graphical user interface (GUI). This means that while Nestri Node is running, you will not be able to use an attached screen. For this reason, Nestri Node is best set up on a dedicated machine that won’t be used for other tasks.

51 changes: 51 additions & 0 deletions apps/docs/content/2.nestri-node/2.prerequisite.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
# Prerequisite

In order to run Nestri on your own server, there are a few things you need to prepare before you can start installing nestri-node. On this page we go through the requirements needed to get started with Nestri.

Although it may be very tempting to skip this step, you shouldn't! You will save yourself a lot of headaches and wasted hours because something doesn't work due to lack of setup beforehand.

## Hardware Requirements

::list{type="primary"}
- **NVIDIA GPU**
- **8GB Memory**
- **Linux** (We Recommend Ubuntu Desktop 22.04)
::

## Software Requirements

::list{type="primary"}
- **Nvidia Drivers**
- **[NVIDIA Container Toolkit](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html#installing-with-apt)**
- **[Docker](https://linuxiac.com/how-to-install-docker-on-ubuntu-24-04-lts/)**

::

## Disconnect monitor
Since Nestri requires access to your GPU, then you need to unplug you screen from it.
If you want to see the Desktop and have a integrated graphicscard in your CPU, then you can connect your monitor to the motherboard.
### Change the Default Boot Target to Multi-User (Non-GUI Mode)
Ubuntu typically starts in graphical mode (using the graphical.target systemd target). You should change to the non-graphical multi-user.target, which will prevent Xorg from starting.

1. Open a terminal or access your system via SSH.
2. To check your current default target (which should be graphical.target)

```bash
systemctl get-default

```

3. Change the default target to multi-user.target (which corresponds to text mode, without Xorg):
```bash
sudo systemctl set-default multi-user.target


```

4. Reboot the system

5. Verify that Xorg is not running
```bash
nvidia-smi
```

30 changes: 30 additions & 0 deletions apps/docs/content/2.nestri-node/3.getting-started.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# Getting Started

::alert{type="danger"}
Nestri is in a **very early-beta phase**, so errors and bugs may occur.
::
<!--
Nestri Node is easy to install using the provided installation script. Follow the steps below to get started.
## Installation
1. Download the installation script using `wget`:
```bash
wget https://github.com/nestriness/nestri/nestri-node-install.sh
```
2. Make the script executable:
```bash
chmod +x nestri-node-install.sh
```
3. Run the script to start the installation process:
```bash
./nestri-node-install.sh
```
::-->


2 changes: 2 additions & 0 deletions apps/docs/content/2.nestri-node/4.troubleshooting.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# Troubleshooting

2 changes: 2 additions & 0 deletions apps/docs/content/2.nestri-node/_dir.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
title: 'Nestri Node'
icon: heroicons-outline:bookmark-alt
9 changes: 9 additions & 0 deletions apps/docs/content/3.nestri-relay/1.what-is-nestri-node.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# What is Nestri Relay?

Nestri Relay is an essential component in the Nestri cloud-gaming ecosystem, responsible for transporting the video gameplay stream from your Nestri Node to the device you’re playing on. It is built on the moq-rs protocol, designed for efficient and smooth video transmission, ensuring a low-latency gaming experience.

By default, your Nestri Node will connect to the Nestri-hosted Relay, which we manage and is available for all users. This is the simplest and most straightforward option, requiring no additional configuration on your end.
## ⚠️ Important Note

We recommend not installing Nestri Node on your primary PC if you only intend to use it over a weekend. This is because Nestri Node cannot run simultaneously with Xorg, the display server responsible for managing the graphical user interface (GUI). This means that while Nestri Node is running, you will not be able to use an attached screen. For this reason, Nestri Node is best set up on a dedicated machine that won’t be used for other tasks.

Loading

0 comments on commit 390ee2a

Please sign in to comment.