feat(server): Add startup script (#63)

## Description

**What issue are you solving (or what feature are you adding) and how
are you doing it?**

We start the container using supervisord, which is limiting as the user
has no way of telling the container what game to run. So, the idea is to
run like so: `docker run... ghcr.io/netrisdotme/netris/server:<tag>
netris-proton /game/yourgame.exe`


Co-authored by @djpremier
This commit is contained in:
Wanjohi
2024-05-25 00:24:45 +03:00
committed by GitHub
parent e6fa6ea6e1
commit 204730450c
8 changed files with 54 additions and 2 deletions

View File

@@ -1,20 +0,0 @@
#This fixes the error where x11-apps in docker cannot seem to access the hosts DISPLAY server
# Error: No protocol specified
# Error: Can't open display: :10.0
#https://askubuntu.com/a/1470341 //Run it on host OS
xhost +Local:*
xhost
#Fun fact Weston won't run if you do not have Wayland running on the host (i have yet to try running with Xwayland inside the container)
#Run weston using your host's X11 display server
weston --backend=x11-backend.so
#Run inside the terminal of the weston you just created... cool right?
weston --backend=wayland-backend.so
#Run
docker run --gpus all --entrypoint /bin/bash --rm -it -v $(pwd):/games -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=$DISPLAY --cap-add=SYS_NICE --cap-add=SYS_ADMIN recorder
docker run --gpus all --entrypoint /bin/bash --device=/dev/dri --rm -it -v $(pwd):/game --cap-add=SYS_NICE --cap-add=SYS_ADMIN ghcr.io/wanjohiryan/netris/server:nightly
ffmpeg -hide_banner -v quiet -stream_loop -1 -re -i /game/test.mp4 -an -f mp4 -movflags empty_moov+frag_every_frame+separate_moof+omit_tfhd_offset - | RUST_LOG=moq_pub=info warp --name "netris" https://fst.so:4443

24
.scripts/startup.sh Normal file
View File

@@ -0,0 +1,24 @@
#!/bin/bash
#TODO: Fix the warp-input startup problem
if [ -z "$SESSION_ID" ]; then
echo "Error: SESSION_ID environment variable is not set."
exit 1
fi
xarg="$*"
if [ -z "$xarg" ]; then
echo "Error: No command specified to run the game. Exiting."
exit 1
fi
#Open udp port to listed for QUIC events on
export PORT=${PORT:-"8080"}
escaped_xarg=$(printf '%s\n' "$xarg" | sed -e 's/[\/&]/\\&/g')
sudo sed -i "s|^command.*=.*$|command=bash -c \"$escaped_xarg\"|" /etc/supervisord.d/game.ini
sudo sed -i 's|^autostart.*=.*$|autostart=true|' /etc/supervisord.d/game.ini
sudo -E /usr/bin/supervisord -c /etc/supervisord.conf

View File

@@ -5,6 +5,9 @@ loglevel=info
logfile=/tmp/supervisord.log
pidfile=/tmp/supervisord.pid
[include]
files = /etc/supervisord.d/*.ini
[program:entrypoint]
command=/etc/entrypoint.sh
logfile=/tmp/entrypoint.log

View File

@@ -0,0 +1,14 @@
[program:game]
priority=30
autostart=false
autorestart=true
user=netris
# directory=/
command=netris-proton -r /games/AlanWake.exe
stopsignal=INT
logfile=/tmp/game.log
pidfile=/tmp/game.pid
stopsignal=INT
autostart=true
autorestart=true
redirect_stderr=true