BitR / empyrion-docker

Docker image for the Empyrion dedicated server using WINE

Home Page:https://hub.docker.com/r/bitr/empyrion-server

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Adding parameter -dedicated 'z:/server/Saves/Games/Test/dedicated.yaml' breaks docker start

esvarc opened this issue · comments

Created subdirectory in steamapps/common/Empyrion - Dedicated Server/Saves/Games with name Test, put there dedicated.yaml file. Then I started docker

docker run -it -p 30000-30003:30000-30003/udp -p 30004:30004/tcp --name empyrion -v ~/empyrion:/home/user/Steam bitr/empyrion-server -dedicated 'z:/server/Saves/Games/Test/dedicated.yaml'

It generate error where it complain about invalid runuser oprtion

+ '[' 0 '!=' 0 ']'
+ mkdir -p /home/user/Steam
+ chown user: /home/user/Steam
+ runuser -u user /entrypoint.sh -dedicated z:/server/Saves/Games/Trantor/dedicated.yaml
runuser: invalid option -- 'd'
Try 'runuser --help' for more information.

correct syntax should be

runuser -u user -- /entrypoint.sh -dedicated z:/server/Saves/Games/Trantor/dedicated.yaml

Both Issues #17 and # 18 I was able to fix, by exporting /entrypoint.sh to my /home/steam/empyrion.sh and editing it. Edits are

  • create user home and chown only when path doesn't exist
  • adding '--' to runuser command
#!/bin/bash -ex

[ "$UID" != 0 ] || {
    [ -d  ~user/Steam ] || mkdir -p ~user/Steam; chown user: ~user/Steam
    runuser -u user -- "$0" "$@"
    exit 0
}

then I changed owner and added default ACL as root, to accomodate access for second user on my machine which is steam (UID=1001)

chown 1000.1000 -R /home/steam/empyrion
setfacl -d -m u:steam:rwx,g:steam:rwx,o::rx -R /home/steam/empyrion # steamcmd sets +x on avery file anyway
setfacl -m u:steam:rwx -R /home/steam/empyrion

Finally runs with

 docker run -it -p 30000-30003:30000-30003/udp -p 30004:30004/tcp --name empyrion -v ~/empyrion:/home/user/Steam -v ~/empyrion.sh:/entrypoint.sh bitr/empyrion-server -dedicated 'z:/server/Saves/Games/Test/dedicated.yaml'

+ '[' 0 '!=' 0 ']'
+ mkdir -p /home/user/Steam
+ runuser -u user -- /entrypoint.sh -dedicated z:/server/Saves/Games/Test/dedicated.yaml
+ '[' 1000 '!=' 0 ']'
+ GAMEDIR='/home/user/Steam/steamapps/common/Empyrion - Dedicated Server/DedicatedServer'
+ cd /home/user
+ STEAMCMD='./steamcmd.sh +@sSteamCmdForcePlatformType windows +login anonymous '
+ '[' -z '' ']'
+ eval './steamcmd.sh +@sSteamCmdForcePlatformType windows +login anonymous  +app_update 530870 +quit'
++ ./steamcmd.sh +@sSteamCmdForcePlatformType windows +login anonymous +app_update 530870 +quit
Redirecting stderr to '/home/user/Steam/logs/stderr.txt'

... SNIP ...

Waiting for user info...OK
Success! App '530870' already up to date.
CWorkThreadPool::~CWorkThreadPool: work processing queue not empty: 1 items discarded.
+ mkdir -p '/home/user/Steam/steamapps/common/Empyrion - Dedicated Server/DedicatedServer/Logs'
+ rm -f /tmp/.X1-lock
+ export WINEDLLOVERRIDES=mscoree,mshtml=
+ WINEDLLOVERRIDES=mscoree,mshtml=
+ export DISPLAY=:1
+ DISPLAY=:1
+ Xvfb :1 -screen 0 800x600x24
+ cd '/home/user/Steam/steamapps/common/Empyrion - Dedicated Server/DedicatedServer'
+ '[' -dedicated = bash ']'
+ /opt/wine-staging/bin/wine ./EmpyrionDedicated.exe -batchmode -nographics -logFile Logs/current.log -dedicated z:/server/Saves/Games/Test/dedicated.yaml
+ sh -c 'until [ "`netstat -ntl | tail -n+3`" ]; do sleep 1; done
sleep 5 # gotta wait for it to open a logfile
tail -F Logs/current.log ../Logs/*/*.log 2>/dev/null'

... SNIP ...

01-15:59:49.191 15_59 -LOG- INFO: Uptime=00h06m 59.999 2365 heap= 317MB fps=39.5 players= 0 pfs=r0/i2/a0 ticks=8335 nwqueue=
01-16:00:49.209 16_00 -LOG- INFO: Uptime=00h07m 60.018 2379 heap= 317MB fps=39.8 players= 0 pfs=r0/i2/a0 ticks=9536 nwqueue=