mirror of
https://github.com/nestriness/nestri.git
synced 2025-12-12 16:55:37 +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:
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
|
logfile=/tmp/supervisord.log
|
||||||
pidfile=/tmp/supervisord.pid
|
pidfile=/tmp/supervisord.pid
|
||||||
|
|
||||||
|
[include]
|
||||||
|
files = /etc/supervisord.d/*.ini
|
||||||
|
|
||||||
[program:entrypoint]
|
[program:entrypoint]
|
||||||
command=/etc/entrypoint.sh
|
command=/etc/entrypoint.sh
|
||||||
logfile=/tmp/entrypoint.log
|
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
|
||||||
3
dev/build.sh
Normal file
3
dev/build.sh
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
#!/bin/bash -e
|
||||||
|
|
||||||
|
docker build -t server -f server.Dockerfile .
|
||||||
3
dev/run-input.sh
Normal file
3
dev/run-input.sh
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
#!/bin/bash -e
|
||||||
|
|
||||||
|
cargo run -- --namespace $SESSION_ID --bind "[::]:8080" https://fst.so:4443
|
||||||
5
dev/run.sh
Normal file
5
dev/run.sh
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
#!/bin/bash -e
|
||||||
|
NAME="${NAME:-$(head /dev/urandom | LC_ALL=C tr -dc 'a-zA-Z0-9' | head -c 16)}"
|
||||||
|
|
||||||
|
# docker run --gpus all --device=/dev/dri --rm -it --entrypoint /bin/bash -e SESSION_ID=G4r06Kc8vDmwIXPG -v "$(pwd)":/game -p 8080:8080/udp --cap-add=SYS_NICE --cap-add=SYS_ADMIN server
|
||||||
|
docker run --gpus all --device=/dev/dri --rm -it --entrypoint /bin/bash -e SESSION_ID=$NAME -v "$(pwd)":/game -p 8080:8080/udp --cap-add=SYS_NICE --cap-add=SYS_ADMIN server
|
||||||
@@ -70,8 +70,8 @@ RUN apt-get update && apt-get install --no-install-recommends -y \
|
|||||||
COPY --from=ghcr.io/wanjohiryan/netris/warp:nightly /usr/bin/warp /usr/bin/
|
COPY --from=ghcr.io/wanjohiryan/netris/warp:nightly /usr/bin/warp /usr/bin/
|
||||||
COPY --from=ghcr.io/games-on-whales/inputtino:stable /inputtino/input-server /inputtino/input-server
|
COPY --from=ghcr.io/games-on-whales/inputtino:stable /inputtino/input-server /inputtino/input-server
|
||||||
RUN chmod +x /usr/bin/warp
|
RUN chmod +x /usr/bin/warp
|
||||||
COPY .scripts/entrypoint.sh .scripts/supervisord.conf /etc/
|
COPY .scripts /etc/
|
||||||
RUN chmod 755 /etc/supervisord.conf /etc/entrypoint.sh
|
RUN chmod 755 /etc/supervisord.conf /etc/entrypoint.sh /etc/startup.sh
|
||||||
|
|
||||||
USER 1000
|
USER 1000
|
||||||
ENV SHELL=/bin/bash \
|
ENV SHELL=/bin/bash \
|
||||||
|
|||||||
Reference in New Issue
Block a user