Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/wsadza/metal

Containerized Low-Latency Gaming Platform🎮
https://github.com/wsadza/metal

debian docker docker-compose docker-gaming docker-steam gaming helm kubernetes kubernetes-gaming steam streaming ubuntu vdi webapp

Last synced: 11 days ago
JSON representation

Containerized Low-Latency Gaming Platform🎮

Awesome Lists containing this project

README

        
















# Metal

Ever been fascinated by remote gaming? Same! Inspired by the [`selkies-gstreamer`](https://github.com/selkies-project/selkies-gstreamer) project (a relic of [`Google Stadia's`](https://github.com/GoogleCloudPlatform/selkies-examples/tree/master) epicness), I decided to repack their [`egl solution`](https://github.com/selkies-project/docker-nvidia-egl-desktop) for fun - obviously.

Introducing totally modular, Dockerized streaming service. Build it your way, whether you're on Debian or Ubuntu (I went agnostic on dependencies to keep it flexible). I revamped the structure for ultimate control, throwing in [`Supervisor`](http://supervisord.org/) magic, with a dash of [`s6-overlay`](https://github.com/just-containers/s6-overlay) structure.

Now it's a streaming powerhouse. Why? Just because!

##


$\large\color{Goldenrod}{\textbf{TL;DR}}$

> [!NOTE]
> Minimal Debian image that utilizes software rendering ([LLVMpipe](https://docs.mesa3d.org/drivers/llvmpipe.html])), suitable for WSL / Native linux instances.

```sh
docker run -d -p 8080:8080 -p 3478:3478/udp -p 3478:3478/tcp -p 9091:9091 -e STREAMER_HOST=$(hostname -I | awk '{print $1}') ghcr.io/wsadza/metal/minimal-debian:latest && sleep 10 && echo -e "\n\tApplication: http://$(hostname -I | awk '{print $1}'):8080" && echo -e "\tSupervisor: http://$(hostname -I | awk '{print $1}'):9091\n"
```

## Preview


It was easy, right?





## Table Of Contents:
- [Usage](#usage)
- [Setup](#setup)
- [Configuration](#configuration)
- [Development](#development)
- [Miscellaneous](#miscellaneous)
- [Disclaimers](#disclaimers)

## Usage
[(Back to Top)](#table-of-contents)

This section provides guidance on deploying and configuring streaming instances using Docker, Docker Compose, and Kubernetes (K8S) manifests. It includes specific instructions for different Linux distributions and GPU acceleration.

### Table Of Contents:
- $\large\color{Goldenrod}{\textbf{Usage}}$
- [Usage `Docker`](./.docs/10_usage/USAGE.md#usage---docker)
- [Usage `Docker-Compose`](./.docs/10_usage/USAGE.md#usage---docker-compose)
- Usage `Kubernetes`

- Usage `Helm`

Preview



Want to play with others?





## Setup
[(Back to Top)](#table-of-contents)

This repository features an [Ansible Playbook](./setup/ansible) that guides you through a minimal setup, starting from the latest NVIDIA driver all the way to a fully functional Kubernetes cluster with GPU-MPS sharing capabilities. The [Ansible playbook](./setup/ansible/playbooks/playbook.yml) is self explanatory - tailored for Ubuntu and Debian distributions.

### Table Of Contents:
- $\large\color{Goldenrod}{\textbf{Setup}}$
- [Setup `Ansible`](./.docs/20_setup/SETUP.md#setup---ansible)
- Setup `Bash`

- [Setup `WSL`](./.docs/20_setup/SETUP.md#setup---wsl)

Preview



Mobile!





## Configuration
[(Back to Top)](#table-of-contents)

This section highlights the critical configurations and components necessary for maximizing the performance and functionality of your media streaming and communication setup. Each configuration is tailored to improve the overall user experience. You can find all the configurations described below in the [Dockerfile](https://github.com/wsadza/metal/blob/develop/build/docker/Dockerfile.debbased#L1314).

### Table Of Contents:
- $\large\color{Goldenrod}{\textbf{Configuration - Monolithic}}$
- [Configuration - Monolithic - `Selkies Gstreamer`](./.docs/30_configuration/MONOLITHIC.md#configuration---monolithic---selkies-gstreamer)
- [Configuration - Monolithic - `Pipewire`](./.docs/30_configuration/MONOLITHIC.md#configuration---monolithic---pipewire)
- [Configuration - Monolithic - `Coturn`](./.docs/30_configuration/MONOLITHIC.md#configuration---monolithic---coturn)
- [Configuration - Monolithic - `Miscellaneous`](./.docs/30_configuration/MONOLITHIC.md#configuration---monolithic---miscellaneous)
- [Configuration - Monolithic - `Graphic`](./.docs/30_configuration/MONOLITHIC.md#configuration---monolithic---graphic)
- [Configuration - Monolithic - `Desktop`](./.docs/30_configuration/MONOLITHIC.md#configuration---monolithic---desktop)

Preview



Steam? No Problem!





## Development
[(Back to top)](#table-of-contents)

This section explains how we build our software, focusing on different structures like monolithic and distributed systems. You will also find information about our development workflows, including continuous integration and delivery.

### Table Of Contents:
- $\large\color{Goldenrod}{\textbf{Development - Structure}}$
- [Development - Structure - Monolithic](./.docs/40_development/structure/MONOLITHIC.md#development---structure---monolithic)

- Development - Structure - Distributed

- Development - Structure - Repository

- $\large\color{Goldenrod}{\textbf{Development - Workflow}}$
- Development - Workflow - CI

- Development - Workflow - CD

## Miscellaneous
[(Back to top)](#table-of-contents)

The "Miscellaneous" section gathers various resources and content that may not belong to a specific category but are still valuable and worth referencing. It's a place for extra tools, tips, and information that support a wide range of needs.

### Table Of Contents:
- $\large\color{Goldenrod}{\textbf{Helpful Resources}}$
- [Helpful Resources - Setup](./.docs/50_miscellaneous/MISCELLANEOUS.md#helpful-resources---setup)
- [Helpful Resources - Questions / Answers](./.docs/50_miscellaneous/MISCELLANEOUS.md#helpful-resources---questions---answers)
- [Document Template](./.docs/50_miscellaneous/DOCUMENT_TEMPLATE.md)

## Disclaimers
[(Back to top)](#table-of-contents)

This section contains important disclaimers regarding the ownership of software and the funding sources for the project. Please review the details carefully to understand the rights associated with the software and the contributions of supporting organizations.





    Copyright


    I hereby declare that I do not claim any rights to the software used in this repository.
    All software, including any components, libraries, and dependencies, belongs to their original creators.
    All copyright and other intellectual property rights associated with this software remain with their respective owners.
    This statement is intended to clarify that I do not assert any rights to the intellectual property or any part of this software.
    It is recommended to review the licensing terms of each used component before using or modifying them.



    Selkies-Gstreamer


    This project has been developed and is supported in part by the National Research Platform (NRP) and the Cognitive Hardware and Software Ecosystem Community Infrastructure (CHASE-CI) at the University of California, San Diego, by funding from the National Science Foundation (Nbf), with awards #1730158, #1540112, #1541349, #1826967, #2138811, #2112167, #2100237, and #2120019, as well as additional funding from community partners, infrastructure utilization from the Open Science Grid Consortium, supported by the National Science Foundation (Nbf) awards #1836650 and #2030508, and infrastructure utilization from the Chameleon testbed, supported by the National Science Foundation (Nbf) awards #1419152, #1743354, and #2027170. This project has also been funded by the Seok-San Yonsei Medical Scientist Training Program (MSTP) Song Yong-Sang Scholarship, College of Medicine, Yonsei University, the MD-PhD/Medical Scientist Training Program (MSTP) through the Korea Health Industry Development Institute (KHIDI), funded by the Ministry of Health & Welfare, Republic of Korea, and the Student Research Bursary of Song-dang Institute for Cancer Research, College of Medicine, Yonsei University.