-
-
Notifications
You must be signed in to change notification settings - Fork 155
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
SteamCMD download error #389
Comments
I did some more testing: v1.7.4 works, as some other people described in #306. The solution for that issue was the host CPU in Proxmox, but that doesn't work for me (like I already described above). I'm now able to play by downloading the game on image v1.7.4 and then playing on v1.9.1 with |
@voruti Does |
No. |
Weird, so it's a unique issue with using later versions of Ubuntu on your system. I'm not too sure what to suggest unfortunately, as this is a SteamCMD issue rather than an issue with this container. Please try running the following:
|
That works without issues with all of the following images: steamcmd/steamcmd:ubuntu-18
steamcmd/steamcmd:ubuntu-20
steamcmd/steamcmd:ubuntu-22
steamcmd/steamcmd:ubuntu-24 Interesting... 🤔 |
Now that is surprising! Could you try this, please? It's a direct rip from what the container runs:
I suspect it could be a difference in how filesystem permissions may be handled between different versions of Ubuntu. So if this exact command does work, please try it with |
Also successful. I checked out the repo (on main branch) and did some testing with the diff --git a/init.sh b/init.sh
index 78d2987..284cc2e 100755
--- a/init.sh
+++ b/init.sh
@@ -5,7 +5,6 @@ set -e
printf "===== Satisfactory Server %s =====\\nhttps://github.com/wolveix/satisfactory-server\\n\\n" "$VERSION"
CURRENTUID=$(id -u)
-HOME="/home/steam"
MSGERROR="\033[0;31mERROR:\033[0m"
MSGWARNING="\033[0;33mWARNING:\033[0m"
NUMCHECK='^[0-9]+$'
@@ -111,7 +110,7 @@ echo "Satisfactory logs can be found in /config/gamefiles/FactoryGame/Saved/Logs
if [[ "${ROOTLESS,,}" != "true" ]]; then
chown -R "$PUID":"$PGID" /config /home/steam /tmp/dumps
- exec gosu "$USER" "/home/steam/run.sh" "$@"
+ exec "/home/steam/run.sh" "$@"
else
exec "/home/steam/run.sh" "$@"
fi |
The exec change you highlight shouldn't make a difference, as you're using In which case, the issue seems to be with setting |
I'm sorry for the confusion.
I ran the locally built image without any parameters at all (just like |
Could you try (keep going until success):
|
I crafted a minimal "non-working" example. Setting another user or staying on root doesn't change the error. FROM steamcmd/steamcmd:ubuntu-22
ENV HOME=/customhome
# when running as another user, correct permissions must be set for the directory:
#RUN mkdir -p $HOME
#RUN chown -R 1000:1000 $HOME
#USER 1000
# the following fails:
CMD "steamcmd +login anonymous +app_update 1690800 validate +quit" When keeping the default value of
Oh, just saw your message. I think the above also helps. |
1. problem persists |
With |
So to summarise, the current image works with |
Yes. But after looking at the diff --git a/init.sh b/init.sh
index 78d2987..b224b5d 100755
--- a/init.sh
+++ b/init.sh
@@ -54,20 +54,20 @@ if [[ "${LOG,,}" != "true" ]]; then
fi
# check if the user and group IDs have been set
-if [[ "$CURRENTUID" -ne "0" ]] && [[ "${ROOTLESS,,}" != "true" ]]; then
+if [[ "$CURRENTUID" -ne "0" ]] && [[ "${ROOTLESS,,}" != "true" ]]; then # CURRENTUID is 0, skipping this
printf "${MSGERROR} Current user (%s) is not root (0)\\nPass your user and group to the container using the PGID and PUID environment variables\\nDo not use the --user flag (or user: field in Docker Compose) without setting ROOTLESS=true\\n" "$CURRENTUID"
exit 1
fi
-if ! [[ "$PGID" =~ $NUMCHECK ]] ; then
+if ! [[ "$PGID" =~ $NUMCHECK ]] ; then # PGID is at default value 1000, skipping
printf "${MSGWARNING} Invalid group id given: %s\\n" "$PGID"
PGID="1000"
-elif [[ "$PGID" -eq 0 ]]; then
+elif [[ "$PGID" -eq 0 ]]; then # 1000 != 0, skipping
printf "${MSGERROR} PGID/group cannot be 0 (root)\\n"
exit 1
fi
-if ! [[ "$PUID" =~ $NUMCHECK ]] ; then
+if ! [[ "$PUID" =~ $NUMCHECK ]] ; then # same as PGID
printf "${MSGWARNING} Invalid user id given: %s\\n" "$PUID"
PUID="1000"
elif [[ "$PUID" -eq 0 ]]; then
@@ -75,7 +75,7 @@ elif [[ "$PUID" -eq 0 ]]; then
exit 1
fi
-if [[ "${ROOTLESS,,}" != "true" ]]; then
+if [[ "${ROOTLESS,,}" != "true" ]]; then # ROOTLESS is true, skipping
if [[ $(getent group $PGID | cut -d: -f1) ]]; then
usermod -a -G "$PGID" steam
else
@@ -109,9 +109,9 @@ mkdir -p \
echo "Satisfactory logs can be found in /config/gamefiles/FactoryGame/Saved/Logs" > /config/logs/satisfactory-path.txt
-if [[ "${ROOTLESS,,}" != "true" ]]; then
+if [[ "${ROOTLESS,,}" != "true" ]]; then # ROOTLESS is true, skipping
chown -R "$PUID":"$PGID" /config /home/steam /tmp/dumps
exec gosu "$USER" "/home/steam/run.sh" "$@"
else
- exec "/home/steam/run.sh" "$@"
+ exec "/home/steam/run.sh" "$@" # starting Steamcmd here, as root, while ROOTLESS is true ?!?
fi |
The whole point of I just pushed a new revision to |
It doesn't fix it. I think I will take a look into Steamcmd and why it behaves this way. I'll open a PR afterwards. But I appreciate the removal (see following excerpt) of the diff --git a/init.sh b/init.sh
index 78d2987..29e3aff 100755
--- a/init.sh
+++ b/init.sh
@@ -54,9 +54,8 @@ if [[ "${LOG,,}" != "true" ]]; then
fi
# check if the user and group IDs have been set
-if [[ "$CURRENTUID" -ne "0" ]] && [[ "${ROOTLESS,,}" != "true" ]]; then
- printf "${MSGERROR} Current user (%s) is not root (0)\\nPass your user and group to the container using the PGID and PUID environment variables\\nDo not use the --user flag (or user: field in Docker Compose) without setting ROOTLESS=true\\n" "$CURRENTUID"
- exit 1
+if [[ "$CURRENTUID" -ne "0" ]]; then
+ printf "${MSGWARNING} Current user (%s) is not root (0).\\nNo permissions will be adjusted as we're running within a rootless environment.\\n" "$CURRENTUID"
fi
if ! [[ "$PGID" =~ $NUMCHECK ]] ; then
@@ -75,7 +74,7 @@ elif [[ "$PUID" -eq 0 ]]; then
exit 1
fi
-if [[ "${ROOTLESS,,}" != "true" ]]; then
+if [[ "$CURRENTUID" -eq "0" ]]; then
if [[ $(getent group $PGID | cut -d: -f1) ]]; then
usermod -a -G "$PGID" steam
else
@@ -109,9 +108,10 @@ mkdir -p \
echo "Satisfactory logs can be found in /config/gamefiles/FactoryGame/Saved/Logs" > /config/logs/satisfactory-path.txt
-if [[ "${ROOTLESS,,}" != "true" ]]; then
+if [[ "$CURRENTUID" -eq "0" ]]; then
chown -R "$PUID":"$PGID" /config /home/steam /tmp/dumps
exec gosu "$USER" "/home/steam/run.sh" "$@"
else
+ # running within a rootless environment
exec "/home/steam/run.sh" "$@"
fi |
Yeah, as I was reminding myself of what the hell the variable did in the first place (prompted by your query), I realised it was totally unnecessary anyway. I'm curious why that didn't work, when it's effectively the same as the version you said should have. Hm. |
Copying my message from #393, I don't really see a way around the rootless permissions issues, outside of requiring people who wish to run it rootless to build it with new build arguments 🤷♂ If you're running with any UID/GID that's not |
I've adjusted the rootless design to follow my previous message. Please take a look at the new README, and let me know how you get on :) |
Copy some Steam files to the newly created user's home directory.
I created a PR. I don't really understand why the added copy statement is necessary for my machine/server, but with this it works. |
How peculiar! Thanks :) |
The game won't start (see logs below).
Docker Compose File
Debug Output
System Specs
===== START ISSUE REPORT ===== OS: Linux hostname 6.6.71 #1-NixOS SMP PREEMPT_DYNAMIC Fri Jan 10 13:31:36 UTC 2025 x86_64 GNU/Linux CPU: 12th Gen Intel(R) Core(TM) i5-12500 RAM: 38GB/56GB HDD: 152GB/295GB (54% used) ===== END ISSUE REPORT =====
Logs
Docker Version
Additional Context (/ what I already tried)
satisfactory-gamefiles
volume (and re-setting the owner to id 1000) - didn't help.ping media.steampowered.com
and add to/etc/hosts
hack didn't help.network_mode: host
- same result.The text was updated successfully, but these errors were encountered: