Add support for runnin a secondary instance of steam

This requires that you still have setup a primary container instance of this image.
We can then run a secondary instance of steam that will use the existing X server.

We are still limited to running one of these steam instances at a time.
This commit is contained in:
Josh.5
2022-02-08 07:56:35 +13:00
parent 74871da011
commit 73a4af0f5c
7 changed files with 60 additions and 22 deletions

View File

@@ -0,0 +1,18 @@
echo "**** Configure pulseaudio ****"
if [ "${MODE}" == "s" ] | [ "${MODE}" == "secondary" ]; then
echo "Configure pulseaudio as simple dummy audio"
sed -i 's|^; autospawn.*$|autospawn = no|' /etc/pulse/client.conf
sed -i 's|^; daemon-binary.*$|daemon-binary = /bin/true|' /etc/pulse/client.conf
sed -i 's|^; flat-volumes.*$|flat-volumes = yes|' /etc/pulse/daemon.conf
else
echo "Configure pulseaudio to pipe audio to a socket"
sed -i 's|^; default-server.*$|default-server = unix:/tmp/pulseaudio.socket|' /etc/pulse/client.conf
sed -i 's|^load-module module-native-protocol-unix.*$|load-module module-native-protocol-unix socket=/tmp/pulseaudio.socket auth-anonymous=1|' \
/etc/pulse/default.pa
fi
chown -R ${USER} /etc/pulse
echo "DONE"

View File

@@ -1,12 +1,6 @@
echo "**** Configure VNC audio ****" echo "**** Configure VNC audio ****"
echo "Configure pulseaudio to pipe audio to a socket"
sed -i 's|^; default-server.*$|default-server = unix:/tmp/pulseaudio.socket|' /etc/pulse/client.conf
sed -i 's|^load-module module-native-protocol-unix.*$|load-module module-native-protocol-unix socket=/tmp/pulseaudio.socket auth-anonymous=1|' \
/etc/pulse/default.pa
chown -R ${USER} /etc/pulse
if [[ "${ENABLE_VNC_AUDIO}" == "true" ]]; then if [[ "${ENABLE_VNC_AUDIO}" == "true" ]]; then
# Credits for this audio patch: # Credits for this audio patch:
# - https://github.com/novnc/noVNC/issues/302 # - https://github.com/novnc/noVNC/issues/302

View File

@@ -13,7 +13,7 @@ fi
# NVIDIA Params # NVIDIA Params
export nvidia_pci_address="$(nvidia-smi --format=csv --query-gpu=pci.bus_id --id="${gpu_select}" 2> /dev/null | sed -n 2p | cut -d ':' -f2,3)" export nvidia_pci_address="$(nvidia-smi --format=csv --query-gpu=pci.bus_id --id="${gpu_select}" 2> /dev/null | sed -n 2p | cut -d ':' -f2,3)"
export nvidia_gpu_name=$(nvidia-smi --format=csv --query-gpu=name --id="${gpu_select}" | sed -n 2p 2> /dev/null) export nvidia_gpu_name=$(nvidia-smi --format=csv --query-gpu=name --id="${gpu_select}" 2> /dev/null | sed -n 2p)
export nvidia_host_driver_version="$(nvidia-smi 2> /dev/null | grep NVIDIA-SMI | cut -d ' ' -f3)" export nvidia_host_driver_version="$(nvidia-smi 2> /dev/null | grep NVIDIA-SMI | cut -d ' ' -f3)"
# Intel params # Intel params

View File

@@ -65,23 +65,20 @@ function configure_x_server {
echo "Configure container to use a virtual framebuffer as the X server" echo "Configure container to use a virtual framebuffer as the X server"
# Disable supervisord script # Disable supervisord script
sed -i 's|^autostart.*=.*$|autostart=false|' /etc/supervisor.d/xorg.ini sed -i 's|^autostart.*=.*$|autostart=false|' /etc/supervisor.d/xorg.ini
else
echo "Configure container as secondary and do not run an X server"
# Disable supervisord script
sed -i 's|^autostart.*=.*$|autostart=false|' /etc/supervisor.d/xorg.ini
fi fi
# Make startup script executable # Make startup script executable
chmod +x /usr/bin/start-xorg.sh chmod +x /usr/bin/start-xorg.sh
} }
if [ "${MODE}" != "s" ] & [ "${MODE}" != "secondary" ]; then
if [[ -z ${nvidia_gpu_hex_id} ]]; then if [[ -z ${nvidia_gpu_hex_id} ]]; then
echo "**** Generate default xorg.conf ****"; echo "**** Generate default xorg.conf ****";
configure_x_server configure_x_server
else else
echo "**** Generate NVIDIA xorg.conf ****"; echo "**** Generate NVIDIA xorg.conf ****";
configure_x_server configure_x_server
configure_nvidia_x_server configure_nvidia_x_server
fi
fi fi
echo "DONE" echo "DONE"

View File

@@ -0,0 +1,28 @@
if [ "${MODE}" == "s" ] | [ "${MODE}" == "secondary" ]; then
echo "Configure container as secondary"
# Disable dbus
echo " - Disable dbus"
sed -i 's|^autostart.*=.*$|autostart=false|' /etc/supervisor.d/dbus.ini
# Disable desktop
echo " - Disable desktop"
sed -i 's|^autostart.*=.*$|autostart=false|' /etc/supervisor.d/desktop.ini
# Disable sshd
echo " - Disable sshd"
sed -i 's|^autostart.*=.*$|autostart=false|' /etc/supervisor.d/sshd.ini
# Disable vnc
echo " - Disable vnc"
sed -i 's|^autostart.*=.*$|autostart=false|' /etc/supervisor.d/vnc.ini
# Disable xorg
echo " - Disable xorg"
sed -i 's|^autostart.*=.*$|autostart=false|' /etc/supervisor.d/xorg.ini
# Enable pulseaudio
echo " - Enable pulseaudio"
sed -i 's|^autostart.*=.*$|autostart=true|' /etc/supervisor.d/pulseaudio.ini
# Enable steam
echo " - Enable steam"
sed -i 's|^autostart.*=.*$|autostart=true|' /etc/supervisor.d/steam.ini
# Enable udev
echo " - Enable udev"
sed -i 's|^autostart.*=.*$|autostart=true|' /etc/supervisor.d/udev.ini
fi

View File

@@ -6,7 +6,8 @@ autorestart=true
priority=50 priority=50
user=%(ENV_USER)s user=%(ENV_USER)s
directory=/home/%(ENV_USER)s directory=/home/%(ENV_USER)s
command=/usr/game/steam -bigpicture # command=/usr/games/steam -bigpicture
command=/usr/games/steam
environment=HOME="/home/%(ENV_USER)s",USER="%(ENV_USER)s",DISPLAY="%(ENV_DISPLAY)s" environment=HOME="/home/%(ENV_USER)s",USER="%(ENV_USER)s",DISPLAY="%(ENV_DISPLAY)s"
stopsignal=QUIT stopsignal=QUIT
stdout_logfile=/home/%(ENV_USER)s/.cache/log/steam.log stdout_logfile=/home/%(ENV_USER)s/.cache/log/steam.log

View File

@@ -19,8 +19,8 @@ file=/run/supervisor.sock ; the path to the socket file
;username=user ; default is no username (open server) ;username=user ; default is no username (open server)
;password=123 ; default is no password (open server) ;password=123 ; default is no password (open server)
[inet_http_server] ; inet (TCP) server disabled by default ;[inet_http_server] ; inet (TCP) server disabled by default
port=127.0.0.1:9001 ; ip_address:port specifier, *:port for all iface ;port=127.0.0.1:9001 ; ip_address:port specifier, *:port for all iface
;username=user ; default is no username (open server) ;username=user ; default is no username (open server)
;password=123 ; default is no password (open server) ;password=123 ; default is no password (open server)