mirror of
https://github.com/nestriness/nestri.git
synced 2025-12-12 08:45:38 +02:00
✨ 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:
@@ -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
24
.scripts/startup.sh
Normal 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
|
||||
@@ -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
|
||||
|
||||
14
.scripts/supervisord.d/game.ini
Normal file
14
.scripts/supervisord.d/game.ini
Normal 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
|
||||
Reference in New Issue
Block a user