I get this issue a few seconds after starting the .exe file
NAHFE opened this issue · 7 comments
XIO: fatal IO error 11 (Resource temporarily unavailable) on X server ":100"
Can you let me know what game you are trying to run and any docker configuration that you are using so I can reproduce? Thanks!
I'm trying to run an astroneer server and this is my docker-compose.yml file:
version: '3'
services:
steam:
image: rpufky/steam:stable
ports:
- 8777:8777
- 27015:27015/udp
environment:
- PUID=1002
- PGID=1002
- UPDATE_OS=1
- UPDATE_STEAM=1
- UPDATE_SERVER=1
- PLATFORM=windows
- STEAM_APP_ID=728470
- TZ=Europe/Stockholmz
volumes:
- /space/herman/docker/astroserver/data:/data
- /etc/localtime:/etc/localtime:ro
And my custom_server looks like this:
su steam -c "xvfb-run --auto-servernum \
wine64 ${SERVER_DIR}/AstroServer.exe"
Did some investigation into this.
Looks like a few things:
- wine
5.1
is needed to run. - Astroneer is very sensitive about setting up correctly, and doesn't handle NAT/NAT reflection well.
I'm going to build an experimental
tag, which will include wine-staging. This will bring wine up to whatever the latest staging is (currently 5.10); and should address the crashing issue.
Quick update:
- I've pushed a new
experimental
release, which will use the latest non-dev winehq build. - The dedicated server for astroneer appears to be a tirefire. I tested both the docker container and an explicit windows dedicated server on dedicated hardware and reach the same state.
- This appears to be do to wonkiness in how the server handles NAT/NAT Reflection and local IP's -- in both instances I can connect to the server but fail to join. Please let me know if you get past this point and what you did.
Setup
- Since it's unreal engine based, I modified the launcher for Conan Exiles.
/data/custom_server
#!/bin/bash
#
# Runs as root. Drop privileges.
#
# Capture kill/term signals and send SIGINT to gracefully shutdown server.
PROCESS_WAIT_TIME=25
WATCHDOG_TIME=300
function shutdown() {
echo 'Shutting down server ...'
if [ "$(pgrep -n Astro)" != '' ]; then
echo "Sending SIGINT to Astro server (max ${PROCESS_WAIT_TIME} secs) ..."
kill -SIGINT `pgrep -n Astro`
sleep ${PROCESS_WAIT_TIME}
fi
if [ "$(pgrep wine)" != '' ]; then
echo "Sending SIGINT to wine processes (max ${PROCESS_WAIT_TIME} sec) ..."
kill -SIGINT `pgrep wine`
sleep ${PROCESS_WAIT_TIME}
fi
exit 0
}
trap shutdown SIGINT SIGKILL SIGTERM
function start_server() {
su steam -c "xvfb-run --auto-servernum wine64 ${SERVER_DIR}/AstroServer.exe"
}
function watch_server() {
if ps aux | grep [A]stroServer > /dev/null; then
echo 'Server is running ...'
else
echo 'Starting server ...'
start_server &
fi
}
while true; do
watch_server
# background and using wait enables trap capture.
sleep ${WATCHDOG_TIME} &
wait
done
- I updated the compose file to use the correct ports and experimental.
docker-compose.yml
version: "3"
services:
astroneer:
image: rpufky/steam:experimental
restart: unless-stopped
stop_grace_period: 1m
ports:
- 8777:8777/udp
- 27015:27015
- 27015:27015/udp
environment:
- PUID=1002
- PGID=1002
- UPDATE_OS=1
- UPDATE_STEAM=1
- UPDATE_SERVER=1
- PLATFORM=windows
- STEAM_APP_ID=728470
- TZ=America/Los_Angeles
volumes:
- /d/etc/data/games/astroneer:/data
- /etc/localtime:/etc/localtime:ro
- The dedicated server (on all platforms) will automatically exit with no message if
Port
and some combination ofAstroServerSettings.ini
is not set.
Launch the server and let it run until until these files are generated. Then shutdown the server.
Astro/Saved/Config/WindowsServer/Engine.ini
[URL]
Port=8777
Astro/Saved/Config/WindowsServer/AstroServerSettings.ini
[/Script/Astro.AstroServerSettings]
bLoadAutoSave=True
MaxServerFramerate=30.000000
MaxServerIdleFramerate=3.000000
bWaitForPlayersBeforeShutdown=False
PublicIP={MUST BE SET TO YOUR PUBLIC IP}
ServerName={SERVER NAME}
ServerGuid=D70A9EE8449E9079837E43AFB8262FF6
OwnerName={YOUR STEAM USERNAME NAME}
OwnerGuid=0
PlayerActivityTimeout=0
ServerPassword={SERVER PASSWORD}
bDisableServerTravel=False
DenyUnlistedPlayers=False
VerbosePlayerProperties=False
AutoSaveGameInterval=900
BackupSaveGamesInterval=7200
ActiveSaveFileDescriptiveName=SAVE_1
ServerAdvertisedName={PRESET HASH}
- Relaunch the server.
Edit: clarified some text.
The server is running but I cannot connect to it. Should I forward all the 3 ports?
Yes, you need to expose 8777/udp, 27015 tcp/udp. 8777 is assuming you are following the setup guide for astroneers.
This is essentially where I got with the dedicated server on windows as well as this container.
FYI: There are some folks who are working through some final dependency issues for this server to work on Linux. See this post dedicated server on linux. Looks like there is a discord channel there with the group of folks debugging it.
If they get it working, please re-open this bug and link what needs to be changed for it to work. I'll update the docker image with what's needed then.