diff --git a/README.md b/README.md index 1f2444b..18b1ac5 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,7 @@ intellectual property law, this will no longer be the case. Users will now be re - Although I'm trying to put out updates, I don't have the time for testing thoroughly, so if you find issues, please put in an issue request and I will try to help. - Thanks printfuck for the base code. +- @evert fork: Removed GOG version, tweaked configs a bit for personal use. Buy Me A Coffee @@ -27,7 +28,7 @@ export STEAM_USER= export STEAM_PASS= export STEAM_GUARD= # If you account is not protected, don't set -docker compose -f docker-compose-steam.yml up +docker compose up ``` #### Steam Guard @@ -39,19 +40,12 @@ export the current Steam Guard to `STEAM_GUARD` environment variable code right After starting build, pay attention to your app. Even with the code, it will request for authorization which must be granted. -If the build fails or when you want to update with `docker compose -f docker-compose-steam.yml build --no-cache`, you should set the newer `STEAM_GUARD` again. +If the build fails or when you want to update with `docker compose build --no-cache`, you should set the newer `STEAM_GUARD` again. ``` ## Remove env variables after build unset STEAM_USER STEAM_PASS STEAM_GUARD ``` -### GOG - -To my knowledge there is no way to automate this. To use game files from GOG, you will need to download the Linux installer. -Sign in, go to Games, find Stardew, change the system to Linux, and download the game installer. The file will look something -like `stardew_valley_x.x.x.xxx.sh`. Unzip this file (using Git Bash if you are on Windows), and copy the files within the -`data/noarch/` directory to `docker/game_data/`. Start the container using `docker compose -f docker-compose-gog.yml up`. To -rebuild the container after updating the files, use `docker compose -f docker-compose-gog.yml build --no-cache`. ### Configuration diff --git a/docker-compose-gog.yml b/docker-compose-gog.yml deleted file mode 100644 index db7fa37..0000000 --- a/docker-compose-gog.yml +++ /dev/null @@ -1,139 +0,0 @@ -version: '2.2' - -services: - valley: - build: - context: docker - dockerfile: Dockerfile-gog - container_name: stardew - environment: - # VNC - - VNC_PASSWORD=insecure - - DISPLAY_HEIGHT=900 - - DISPLAY_WIDTH=1200 - - # Always On Server mod - ## Removing this will probably defeat the point of ever using this? - - ENABLE_ALWAYSONSERVER_MOD=${ENABLE_ALWAYSONSERVER_MOD-true} - - ALWAYS_ON_SERVER_HOTKEY=${ALWAYS_ON_SERVER_HOTKEY-F9} - - ALWAYS_ON_SERVER_PROFIT_MARGIN=${ALWAYS_ON_SERVER_PROFIT_MARGIN-100} - - ALWAYS_ON_SERVER_UPGRADE_HOUSE=${ALWAYS_ON_SERVER_UPGRADE_HOUSE-0} - - ALWAYS_ON_SERVER_PET_NAME=${ALWAYS_ON_SERVER_PET_NAME-Rufus} - - ALWAYS_ON_SERVER_FARM_CAVE_CHOICE_MUSHROOMS=${ALWAYS_ON_SERVER_FARM_CAVE_CHOICE_MUSHROOMS-true} - - ALWAYS_ON_SERVER_COMMUNITY_CENTER_RUN=${ALWAYS_ON_SERVER_COMMUNITY_CENTER_RUN-true} - - ALWAYS_ON_SERVER_TIME_OF_DAY_TO_SLEEP=${ALWAYS_ON_SERVER_TIME_OF_DAY_TO_SLEEP-2200} - - ALWAYS_ON_SERVER_LOCK_PLAYER_CHESTS=${ALWAYS_ON_SERVER_LOCK_PLAYER_CHESTS-false} - - ALWAYS_ON_SERVER_CLIENTS_CAN_PAUSE=${ALWAYS_ON_SERVER_CLIENTS_CAN_PAUSE-true} - - ALWAYS_ON_SERVER_COPY_INVITE_CODE_TO_CLIPBOARD=${ALWAYS_ON_SERVER_COPY_INVITE_CODE_TO_CLIPBOARD-false} - - - ALWAYS_ON_SERVER_FESTIVALS_ON=${ALWAYS_ON_SERVER_FESTIVALS_ON-true} - - ALWAYS_ON_SERVER_EGG_HUNT_COUNT_DOWN=${ALWAYS_ON_SERVER_EGG_HUNT_COUNT_DOWN-600} - - ALWAYS_ON_SERVER_FLOWER_DANCE_COUNT_DOWN=${ALWAYS_ON_SERVER_FLOWER_DANCE_COUNT_DOWN-600} - - ALWAYS_ON_SERVER_LUAU_SOUP_COUNT_DOWN=${ALWAYS_ON_SERVER_LUAU_SOUP_COUNT_DOWN-600} - - ALWAYS_ON_SERVER_JELLY_DANCE_COUNT_DOWN=${ALWAYS_ON_SERVER_JELLY_DANCE_COUNT_DOWN-600} - - ALWAYS_ON_SERVER_GRANGE_DISPLAY_COUNT_DOWN=${ALWAYS_ON_SERVER_GRANGE_DISPLAY_COUNT_DOWN-600} - - ALWAYS_ON_SERVER_ICE_FISHING_COUNT_DOWN=${ALWAYS_ON_SERVER_ICE_FISHING_COUNT_DOWN-600} - - - ALWAYS_ON_SERVER_END_OF_DAY_TIMEOUT=${ALWAYS_ON_SERVER_END_OF_DAY_TIMEOUT-300} - - ALWAYS_ON_SERVER_FAIR_TIMEOUT=${ALWAYS_ON_SERVER_FAIR_TIMEOUT-1200} - - ALWAYS_ON_SERVER_SPIRITS_EVE_TIMEOUT=${ALWAYS_ON_SERVER_SPIRITS_EVE_TIMEOUT-900} - - ALWAYS_ON_SERVER_WINTER_STAR_TIMEOUT=${ALWAYS_ON_SERVER_WINTER_STAR_TIMEOUT-900} - - - ALWAYS_ON_SERVER_EGG_FESTIVAL_TIMEOUT=${ALWAYS_ON_SERVER_EGG_FESTIVAL_TIMEOUT-120} - - ALWAYS_ON_SERVER_FLOWER_DANCE_TIMEOUT=${ALWAYS_ON_SERVER_FLOWER_DANCE_TIMEOUT-120} - - ALWAYS_ON_SERVER_LUAU_TIMEOUT=${ALWAYS_ON_SERVER_LUAU_TIMEOUT-120} - - ALWAYS_ON_SERVER_DANCE_OF_JELLIES_TIMEOUT=${ALWAYS_ON_SERVER_DANCE_OF_JELLIES_TIMEOUT-120} - - ALWAYS_ON_SERVER_FESTIVAL_OF_ICE_TIMEOUT=${ALWAYS_ON_SERVER_FESTIVAL_OF_ICE_TIMEOUT-120 } - - # Auto Load Game mod - ## Removing this will mean you need to VNC in to manually start the game each boot - - ENABLE_AUTOLOADGAME_MOD=${ENABLE_AUTOLOADGAME-true} - - AUTO_LOAD_GAME_LAST_FILE_LOADED=${AUTO_LOAD_GAME_LAST_FILE_LOADED-null} - - AUTO_LOAD_GAME_FORGET_LAST_FILE_ON_TITLE=${AUTO_LOAD_GAME_FORGET_LAST_FILE_ON_TITLE-true} - - AUTO_LOAD_GAME_LOAD_INTO_MULTIPLAYER=${AUTO_LOAD_GAME_LOAD_INTO_MULTIPLAYER-true} - - # Unlimited Players Mod - - ENABLE_UNLIMITEDPLAYERS_MOD=${ENABLE_UNLIMITEDPLAYERS-true} - - UNLIMITED_PLAYERS_PLAYER_LIMIT=${UNLIMITED_PLAYERS_PLAYER_LIMIT-10} - - # Chat Commands mod - - ENABLE_CHATCOMMANDS_MOD=${ENABLE_CHATCOMMANDS_MOD-false} - - # Console Commands mod - - ENABLE_CONSOLECOMMANDS_MOD=${ENABLE_CONSOLECOMMANDS_MOD-false} - - # Time Speed mod - - ENABLE_TIMESPEED_MOD=${ENABLE_TIMESPEED_MOD-false} - - ## Days are only 20 hours long - ## 7.0 = 14 mins per in game day (default) - ## 10.0 = 20 mins - ## 15.0 = 30 mins - ## 20.0 = 40 mins - ## 30.0 = 1 hour - ## 120.0 = 4 hours - ## 300.0 = 10 hours - ## 600.0 = 20 hours (realtime) - - - TIME_SPEED_DEFAULT_TICK_LENGTH=${TIME_SPEED_DEFAULT_TICK_LENGTH-7.0} - - TIME_SPEED_TICK_LENGTH_BY_LOCATION_INDOORS=${TIME_SPEED_TICK_LENGTH_BY_LOCATION_INDOORS-7.0} - - TIME_SPEED_TICK_LENGTH_BY_LOCATION_OUTDOORS=${TIME_SPEED_TICK_LENGTH_BY_LOCATION_OUTDOORS-7.0} - - TIME_SPEED_TICK_LENGTH_BY_LOCATION_MINE=${TIME_SPEED_TICK_LENGTH_BY_LOCATION_MINE-7.0} - - - TIME_SPEED_ENABLE_ON_FESTIVAL_DAYS=${TIME_SPEED_ENABLE_ON_FESTIVAL_DAYS-false} - - TIME_SPEED_FREEZE_TIME_AT=${TIME_SPEED_FREEZE_TIME_AT-null} - - TIME_SPEED_LOCATION_NOTIFY=${TIME_SPEED_LOCATION_NOTIFY-false} - - - TIME_SPEED_KEYS_FREEZE_TIME=${TIME_SPEED_KEYS_FREEZE_TIME-N} - - TIME_SPEED_KEYS_INCREASE_TICK_INTERVAL=${TIME_SPEED_KEYS_INCREASE_TICK_INTERVAL-OemPeriod} - - TIME_SPEED_KEYS_DECREASE_TICK_INTERVAL=${TIME_SPEED_KEYS_DECREASE_TICK_INTERVAL-OemComma} - - TIME_SPEED_KEYS_RELOAD_CONFIG=${TIME_SPEED_KEYS_RELOAD_CONFIG-B} - - # Crops Anytime Anywhere mod - - ENABLE_CROPSANYTIMEANYWHERE_MOD=${ENABLE_CROPSANYTIMEANYWHERE_MOD-false} - - - CROPS_ANYTIME_ANYWHERE_ENABLE_IN_SEASONS_SPRING=${CROPS_ANYTIME_ANYWHERE_ENABLE_IN_SEASONS_SPRING-true} - - CROPS_ANYTIME_ANYWHERE_ENABLE_IN_SEASONS_SUMMER=${CROPS_ANYTIME_ANYWHERE_ENABLE_IN_SEASONS_SUMMER-true} - - CROPS_ANYTIME_ANYWHERE_ENABLE_IN_SEASONS_FALL=${CROPS_ANYTIME_ANYWHERE_ENABLE_IN_SEASONS_FALL-true} - - CROPS_ANYTIME_ANYWHERE_ENABLE_IN_SEASONS_WINTER=${CROPS_ANYTIME_ANYWHERE_ENABLE_IN_SEASONS_WINTER-true} - - - CROPS_ANYTIME_ANYWHERE_FARM_ANY_LOCATION=${CROPS_ANYTIME_ANYWHERE_FARM_ANY_LOCATION-true} - - - CROPS_ANYTIME_ANYWHERE_FORCE_TILLABLE_DIRT=${CROPS_ANYTIME_ANYWHERE_FORCE_TILLABLE_DIRT-true} - - CROPS_ANYTIME_ANYWHERE_FORCE_TILLABLE_GRASS=${CROPS_ANYTIME_ANYWHERE_FORCE_TILLABLE_GRASS-true} - - CROPS_ANYTIME_ANYWHERE_FORCE_TILLABLE_STONE=${CROPS_ANYTIME_ANYWHERE_FORCE_TILLABLE_STONE-false} - - CROPS_ANYTIME_ANYWHERE_FORCE_TILLABLE_OTHER=${CROPS_ANYTIME_ANYWHERE_FORCE_TILLABLE_OTHER-false} - - # Friends Forever mod - - ENABLE_FRIENDSFOREVER_MOD=${ENABLE_FRIENDSFOREVER_MOD-false} - - - FRIENDS_FOREVER_AFFECT_SPOUSE=${FRIENDS_FOREVER_AFFECT_SPOUSE-false} - - FRIENDS_FOREVER_AFFECT_DATES=${FRIENDS_FOREVER_AFFECT_DATES-true} - - FRIENDS_FOREVER_AFFECT_EVERYONE_ELSE=${FRIENDS_FOREVER_AFFECT_EVERYONE_ELSE-true} - - FRIENDS_FOREVER_AFFECT_ANIMALS=${FRIENDS_FOREVER_AFFECT_ANIMALS-true} - - # No Fence Decay mod - - ENABLE_NOFENCEDECAY_MOD=${ENABLE_NOFENCEDECAY_MOD-false} - - # Non-destructive NPCs mod - - ENABLE_NONDESTRUCTIVENPCS_MOD=${ENABLE_NONDESTRUCTIVENPCS_MOD-false} - - ports: - # VNC - - 5902:5900 - # NOVNC WEB - - 5801:5800 - # Game - - 24642:24642/udp - volumes: - # Saves go here now - - ./valley_saves:/config/xdg/config/StardewValley/Saves - # If you'd like to set an existing savegame before the first start otherwise this file will be edited when starting the first game - - ./configs/autoload.json:/data/Stardew/game/Mods/AutoLoadGame/config.json - # deploy: - # ## The container is CPU hungry, you can limit using this block - # ## If you don't plan to play using VNC, 1 core should be enough to host for others - # resources: - # limits: - # cpus: "1" - diff --git a/docker-compose-steam.yml b/docker-compose.yml similarity index 99% rename from docker-compose-steam.yml rename to docker-compose.yml index fcb7eb9..cfddf12 100644 --- a/docker-compose-steam.yml +++ b/docker-compose.yml @@ -1,5 +1,3 @@ -version: '2.2' - services: valley: build: @@ -21,7 +19,7 @@ services: - DISPLAY_HEIGHT=900 - DISPLAY_WIDTH=1200 - X11VNC_EXTRA_OPTS=-noxdamage -reopen -forever - + # Always On Server mod ## Removing this will probably defeat the point of ever using this? - ENABLE_ALWAYSONSERVER_MOD=${ENABLE_ALWAYSONSERVER_MOD-true} diff --git a/docker/Dockerfile-gog b/docker/Dockerfile-gog deleted file mode 100644 index 4fbdc2a..0000000 --- a/docker/Dockerfile-gog +++ /dev/null @@ -1,41 +0,0 @@ -# Pull base image. -FROM jlesage/baseimage-gui:debian-11 - -# Set the name of the application. -ENV APP_NAME="StardewValley" - -# Uses a distinct PATH from Stardew/game/ that GOG has. -ENV GAME_PATH="/data/Stardew" - -RUN apt-get update && apt-get install -y wget unzip tar strace mono-complete xterm gettext-base jq netcat procps locales && apt-get clean - -RUN mkdir -p ${GAME_PATH} && \ - mkdir -p /data/nexus - -COPY game_data /data/Stardew - -RUN wget -qO dotnet.tar.gz https://download.visualstudio.microsoft.com/download/pr/d4b71fac-a2fd-4516-ac58-100fb09d796a/e79d6c2a8040b59bf49c0d167ae70a7b/dotnet-sdk-5.0.408-linux-arm64.tar.gz &&\ - tar -zxf dotnet.tar.gz -C /usr/share/dotnet &&\ - rm dotnet.tar.gz &&\ - ln -s /usr/share/dotnet/dotnet /usr/bin/dotnet - -RUN wget --user-agent="Mozilla" https://github.com/Pathoschild/SMAPI/releases/download/4.0.8/SMAPI-4.0.8-installer.zip -qO /data/nexus.zip && \ - unzip /data/nexus.zip -d /data/nexus/ && \ - SMAPI_INSTALLER=$(find /data/nexus -name 'SMAPI*.*Installer' -type f -path "*/SMAPI * installer/internal/linux/*" | head -n 1) && \ - /bin/bash -c "SMAPI_NO_TERMINAL=true SMAPI_USE_CURRENT_SHELL=true echo -e '2\n\n' | \"$SMAPI_INSTALLER\" --install --game-path '/data/Stardew/game'" || : - -# Add Mods & Scripts -COPY ["mods/", "/data/Stardew/game/Mods/"] -COPY scripts/ /opt/ - -RUN chmod +x /data/Stardew/game/StardewValley && \ - chmod -R 777 /data/Stardew/ && \ - chown -R 1000:1000 /data/Stardew && \ - chmod +x /opt/*.sh - -RUN mkdir /etc/services.d/utils && touch /etc/services.d/app/utils.dep -COPY run /etc/services.d/utils/run -RUN chmod +x /etc/services.d/utils/run - -COPY docker-entrypoint-gog.sh /startapp.sh -RUN chmod +x /startapp.sh diff --git a/docker/docker-entrypoint-gog.sh b/docker/docker-entrypoint-gog.sh deleted file mode 100644 index f8d70a6..0000000 --- a/docker/docker-entrypoint-gog.sh +++ /dev/null @@ -1,40 +0,0 @@ -#!/bin/bash -export HOME=/config - -for modPath in /data/Stardew/game/Mods/*/ -do - mod=$(basename "$modPath") - - # Normalize mod name ot uppercase and only characters, eg. "Always On Server" => ENABLE_ALWAYSONSERVER_MOD - var="ENABLE_$(echo "${mod^^}" | tr -cd '[A-Z]')_MOD" - - # Remove the mod if it's not enabled - if [ "${!var}" != "true" ]; then - echo "Removing ${modPath} (${var}=${!var})" - rm -rf "$modPath" - continue - fi - - if [ -f "${modPath}/config.json.template" ]; then - echo "Configuring ${modPath}config.json" - - # Seed the config.json only if one isn't manually mounted in (or is empty) - if [ "$(cat "${modPath}config.json" 2> /dev/null)" == "" ]; then - envsubst < "${modPath}config.json.template" > "${modPath}config.json" - fi - fi -done - -# Run extra steps for certain mods -/opt/configure-remotecontrol-mod.sh - -/opt/tail-smapi-log.sh & - -# Ready to start! - -export XAUTHORITY=~/.Xauthority -sed -i 's/env TERM=xterm $LAUNCHER "$@"/env SHELL=\/bin\/bash TERM=xterm xterm -e "\/bin\/bash -c $LAUNCHER \"$@\""/' /data/Stardew/game/Stardew\ Valley - -bash -c "/data/Stardew/start.sh" - -sleep 233333333333333