diff --git a/Dockerfile b/Dockerfile index 1669c08..20c32f5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -21,7 +21,7 @@ COPY --chown=progression:progression progression_backend ./progression_backend COPY --chown=progression:progression art ./art COPY --chmod=755 docker-entrypoint.sh /usr/local/bin/progression-entrypoint -ENV HOME=/root \ +ENV HOME=/home/progression \ PROGRESSION_HOST=0.0.0.0 \ PROGRESSION_PORT=8000 \ PROGRESSION_DB_PATH=.data/progression.db \ diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index 7f6723c..3c76533 100644 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -12,7 +12,33 @@ prepare_volume() { fi } +prepare_steam_volume() { + path="$1" + marker="$path/.progression-steam-owner-v2" + + # SteamCMD starts as root in this container, but its Linux filesystem + # workers use the account that owns the SteamCMD installation. Keep both + # its HOME and Workshop library writable by that account. + mkdir -p \ + /home/progression/Steam/logs \ + "$path/workshop/content/294100" + chown -R progression:progression /home/progression + + if [ ! -e "$marker" ]; then + echo "Preparing persistent Steam library for SteamCMD: $path" + chown -R progression:progression "$path" + touch "$marker" + chown progression:progression "$marker" + else + chown progression:progression \ + "$path" \ + "$path/workshop" \ + "$path/workshop/content" \ + "$path/workshop/content/294100" + fi +} + prepare_volume /srv/progression/.data -prepare_volume /srv/steam-library/steamapps +prepare_steam_volume /srv/steam-library/steamapps exec "$@"