From 55f40f1e11b744304b563b434f174c5157e18c54 Mon Sep 17 00:00:00 2001 From: HoleInTheSeat <58385663+HoleInTheSeat@users.noreply.github.com> Date: Sat, 14 Oct 2023 17:36:42 -0500 Subject: [PATCH 1/4] Add Automatic mod downloading allows user to enter a modpack dependency string from thunderstore.io for automatic mod downloading. --- .../valheim_bepinex/egg-valheim-bep-i-nex.json | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/game_eggs/steamcmd_servers/valheim/valheim_bepinex/egg-valheim-bep-i-nex.json b/game_eggs/steamcmd_servers/valheim/valheim_bepinex/egg-valheim-bep-i-nex.json index ab2dca35..97a0e602 100644 --- a/game_eggs/steamcmd_servers/valheim/valheim_bepinex/egg-valheim-bep-i-nex.json +++ b/game_eggs/steamcmd_servers/valheim/valheim_bepinex/egg-valheim-bep-i-nex.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-03-03T16:16:01+01:00", + "exported_at": "2023-10-14T17:31:55-05:00", "name": "Valheim BepINex", "author": "eggs@goover.dev", "description": "A brutal exploration and survival game for 1-10 players, set in a procedurally-generated purgatory inspired by viking culture incl the Plugin Framework BepInEx", @@ -24,7 +24,7 @@ }, "scripts": { "installation": { - "script": "#!\/bin\/bash\r\n# Valheim Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n# Image to install with is 'debian:buster-slim'\r\napt -y update\r\napt -y --no-install-recommends --no-install-suggests install wget\r\n\r\n## just in case someone removed the defaults.\r\nif [ \"${STEAM_USER}\" == \"\" ]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} +app_update ${SRCDS_APPID} ${EXTRA_FLAGS} +quit\r\n\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so\r\n\r\necho \"-------------------------------------------------------\"\r\necho \"installing BepInEx...\"\r\necho \"-------------------------------------------------------\"\r\nif ! api_response=$(curl -sfSL -H \"accept: application\/json\" \"https:\/\/valheim.thunderstore.io\/api\/experimental\/package\/denikson\/BepInExPack_Valheim\/\"); then\r\n fatal \"Error: could not retrieve BepInEx release info from Thunderstore.io API\"\r\nfi\r\n\r\ndownload_url=$(jq -r \".latest.download_url\" <<< \"$api_response\" )\r\nversion_number=$(jq -r \".latest.version_number\" <<< \"$api_response\" )\r\n \r\ncd \/mnt\/server\r\n#echo $download_url\r\nwget --content-disposition $download_url\r\nunzip -o denikson-BepInExPack_Valheim-${version_number}.zip\r\ncp -r \/mnt\/server\/BepInExPack_Valheim\/* \/mnt\/server\r\n\r\n\r\n##cleanup\r\necho \"-------------------------------------------------------\"\r\necho \"cleanup files...\"\r\necho \"-------------------------------------------------------\"\r\nrm -fR BepInExPack_Valheim\r\nrm -fR icon.png\r\nrm -fR denikson-BepInExPack_Valheim-*\r\nrm -fR manifest.json\r\nrm -fR README.m\r\n\r\n#rm -fR start_*\r\n\r\necho \"-------------------------------------------------------\"\r\necho \"Installation completed\"\r\necho \"-------------------------------------------------------\"", + "script": "#!\/bin\/bash\r\n# Valheim Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n# Image to install with is 'debian:buster-slim'\r\napt -y update\r\napt -y --no-install-recommends --no-install-suggests install wget\r\n\r\n## just in case someone removed the defaults.\r\nif [ \"${STEAM_USER}\" == \"\" ]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} +app_update ${SRCDS_APPID} ${EXTRA_FLAGS} +quit\r\n\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so\r\n\r\necho \"-------------------------------------------------------\"\r\necho \"installing BepInEx and Selected ModPacks...\"\r\necho \"-------------------------------------------------------\"\r\nif ! api_response=$(curl -sfSL -H \"accept: application\/json\" \"https:\/\/valheim.thunderstore.io\/api\/experimental\/package\/denikson\/BepInExPack_Valheim\/\"); then\r\n fatal \"Error: could not retrieve BepInEx release info from Thunderstore.io API\"\r\nfi\r\n\r\ndownload_url=$(jq -r \".latest.download_url\" <<< \"$api_response\" )\r\nversion_number=$(jq -r \".latest.version_number\" <<< \"$api_response\" )\r\n\r\nif [ ! -z \"$V_MODPACK\" ]\r\nthen\r\n#Modpack Name dashes to slashes for URL\r\nV_MODPACK=$(echo \"$V_MODPACK\" | sed 's\/-\/\\\/\/g')\r\n\r\n#Extract dependencies from ModPack JSON data\r\nV_MODPACK_DEPENDENCIES=$(curl -sfSL -H \"accept: application\/json\" \"https:\/\/valheim.thunderstore.io\/api\/experimental\/package\/${V_MODPACK}\" | jq -r '.dependencies[]')\r\nfi\r\n\r\ncd \/mnt\/server\r\n#echo $download_url\r\nwget --content-disposition $download_url\r\nunzip -o denikson-BepInExPack_Valheim-${version_number}.zip\r\ncp -r \/mnt\/server\/BepInExPack_Valheim\/* \/mnt\/server\r\n\r\nif [ ! -z \"$V_MODPACK\" ]\r\nthen\r\n#Delete Old Mods\r\nrm -rf \/mnt\/server\/BepInEx\/plugins\/*\r\n\r\n#Download and extract the modpack dlls files\r\nfor V_MODPACK_DEPENDENCY in $V_MODPACK_DEPENDENCIES; do\r\n #ignore bepinex\r\n if [[ \"$V_MODPACK_DEPENDENCY\" == *\"denikson-BepInExPack_Valheim\"* ]]; then\r\n continue # Skip this dependency\r\n fi\r\n \r\n #replace dashes with slashes for url\r\n V_MODPACK_DEPENDENCY_WITH_SLASH=$(echo \"$V_MODPACK_DEPENDENCY\" | sed 's\/-\/\\\/\/g')\r\n \r\n #download dependencies\r\n wget -O \"$V_MODPACK_DEPENDENCY.zip\" \"https:\/\/thunderstore.io\/package\/download\/$V_MODPACK_DEPENDENCY_WITH_SLASH\"\r\n\r\n #Set the destination directory and ensure it exists\r\n destination_directory=\"\/mnt\/server\/BepInEx\/plugins\"\r\n if [ ! -d \"$destination_directory\" ]; then\r\n mkdir -p \"$destination_directory\"\r\n fi\r\n\r\n #Extract DLL files from the ZIP and delete the zip file\r\n unzip -j \"$V_MODPACK_DEPENDENCY.zip\" \"*.dll\" -d \"$destination_directory\"\r\n \r\n #Cleanup\r\n rm $V_MODPACK_DEPENDENCY.zip\r\ndone\r\nfi\r\n\r\n##cleanup\r\necho \"-------------------------------------------------------\"\r\necho \"cleanup files...\"\r\necho \"-------------------------------------------------------\"\r\nrm -fR BepInExPack_Valheim\r\nrm -fR icon.png\r\nrm -fR denikson-BepInExPack_Valheim-*\r\nrm -fR manifest.json\r\nrm -fR README.m\r\n\r\n#rm -fR start_*\r\n\r\necho \"-------------------------------------------------------\"\r\necho \"Installation completed\"\r\necho \"-------------------------------------------------------\"", "container": "ghcr.io\/parkervcp\/installers:debian", "entrypoint": "bash" } @@ -189,6 +189,16 @@ "user_editable": false, "rules": "required|string|max:20", "field_type": "text" + }, + { + "name": "ModPack", + "description": "Enter the Dependency String name for a ModPack to automatically be installed\r\nNOTE: If the modpack Updates, you will need to update this variable with the new Dependency String. This is done to allow Old Versions to be used.\r\nCHANGING THIS REQUIRES A SERVER REINSTALL", + "env_variable": "V_MODPACK", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "string|nullable", + "field_type": "text" } ] } \ No newline at end of file From 4e2875a2cbdb60e73afaec4a8ae68cb03f108718 Mon Sep 17 00:00:00 2001 From: HoleInTheSeat <58385663+HoleInTheSeat@users.noreply.github.com> Date: Sat, 14 Oct 2023 17:39:23 -0500 Subject: [PATCH 2/4] Update README.md --- game_eggs/steamcmd_servers/valheim/valheim_bepinex/README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/game_eggs/steamcmd_servers/valheim/valheim_bepinex/README.md b/game_eggs/steamcmd_servers/valheim/valheim_bepinex/README.md index c8b1e400..72bdd70b 100644 --- a/game_eggs/steamcmd_servers/valheim/valheim_bepinex/README.md +++ b/game_eggs/steamcmd_servers/valheim/valheim_bepinex/README.md @@ -28,6 +28,9 @@ In particular, the changes from base BepInEx releases are: - Updated Doorstop configuration and BepInEx to allow to load unstripped DLLs without having to overwrite game DLLs. - Added scripts necessary to run both game and dedicated server on Linux machines +## Automatic Mod Downloading +Mods can be downloaded from modpacks automatically by entering the "dependency string" for the modpack from https://valheim.thunderstore.io/ + ## Server Ports | Port | default | From 268182ef325ae3ddbb588932f8174a5ca9c2393e Mon Sep 17 00:00:00 2001 From: HoleInTheSeat <58385663+HoleInTheSeat@users.noreply.github.com> Date: Wed, 8 Nov 2023 07:59:31 -0600 Subject: [PATCH 3/4] Remove DOORSTOP_CORLIB_OVERRIDE_PATH from startup --- .../valheim/valheim_bepinex/egg-valheim-bep-i-nex.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/game_eggs/steamcmd_servers/valheim/valheim_bepinex/egg-valheim-bep-i-nex.json b/game_eggs/steamcmd_servers/valheim/valheim_bepinex/egg-valheim-bep-i-nex.json index 97a0e602..b05828a9 100644 --- a/game_eggs/steamcmd_servers/valheim/valheim_bepinex/egg-valheim-bep-i-nex.json +++ b/game_eggs/steamcmd_servers/valheim/valheim_bepinex/egg-valheim-bep-i-nex.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-10-14T17:31:55-05:00", + "exported_at": "2023-11-08T07:57:54-06:00", "name": "Valheim BepINex", "author": "eggs@goover.dev", "description": "A brutal exploration and survival game for 1-10 players, set in a procedurally-generated purgatory inspired by viking culture incl the Plugin Framework BepInEx", @@ -15,7 +15,7 @@ "ghcr.io\/parkervcp\/games:valheim": "ghcr.io\/parkervcp\/games:valheim" }, "file_denylist": [], - "startup": "export DOORSTOP_ENABLE=TRUE; export DOORSTOP_INVOKE_DLL_PATH=.\/BepInEx\/core\/BepInEx.Preloader.dll; export DOORSTOP_CORLIB_OVERRIDE_PATH=.\/unstripped_corlib; export LD_LIBRARY_PATH=\".\/doorstop_libs:$LD_LIBRARY_PATH\"; export LD_PRELOAD=\"libdoorstop_x64.so:$LD_PRELOAD\"; export templdpath=$LD_LIBRARY_PATH; export LD_LIBRARY_PATH=\".\/linux64:$LD_LIBRARY_PATH\"; export SteamAppId=892970; export LD_LIBRARY_PATH=$templdpath; .\/valheim_server.x86_64 -nographics -batchmode -name \"{{SERVER_NAME}}\" -port {{SERVER_PORT}} -world \"{{WORLD}}\" -password \"{{PASSWORD}}\" -public {{PUBLIC_SERVER}} -saveinterval {{BACKUP_INTERVAL}} -backups {{BACKUP_COUNT}} -backupshort {{BACKUP_SHORTTIME}} -backuplong {{BACKUP_LONGTIME}} $( [[ {{ENABLE_CROSSPLAY}} -eq 1 ]] && echo \" -crossplay \") > >(sed -uE \"{{CONSOLE_FILTER}}\") & trap \"{{STOP}}\" 15; wait $!", + "startup": "export DOORSTOP_ENABLE=TRUE; export DOORSTOP_INVOKE_DLL_PATH=.\/BepInEx\/core\/BepInEx.Preloader.dll; export LD_LIBRARY_PATH=\".\/doorstop_libs:$LD_LIBRARY_PATH\"; export LD_PRELOAD=\"libdoorstop_x64.so:$LD_PRELOAD\"; export templdpath=$LD_LIBRARY_PATH; export LD_LIBRARY_PATH=\".\/linux64:$LD_LIBRARY_PATH\"; export SteamAppId=892970; export LD_LIBRARY_PATH=$templdpath; .\/valheim_server.x86_64 -nographics -batchmode -name \"{{SERVER_NAME}}\" -port {{SERVER_PORT}} -world \"{{WORLD}}\" -password \"{{PASSWORD}}\" -public {{PUBLIC_SERVER}} -saveinterval {{BACKUP_INTERVAL}} -backups {{BACKUP_COUNT}} -backupshort {{BACKUP_SHORTTIME}} -backuplong {{BACKUP_LONGTIME}} $( [[ {{ENABLE_CROSSPLAY}} -eq 1 ]] && echo \" -crossplay \") > >(sed -uE \"{{CONSOLE_FILTER}}\") & trap \"{{STOP}}\" 15; wait $!", "config": { "files": "{}", "startup": "{\r\n \"done\": \"DungeonDB Start\"\r\n}", From cb732e2933730d58c1d1d6abbb18d331a27647f1 Mon Sep 17 00:00:00 2001 From: Quinten <67589015+QuintenQVD0@users.noreply.github.com> Date: Thu, 9 Nov 2023 09:03:09 +0100 Subject: [PATCH 4/4] Add update note --- game_eggs/steamcmd_servers/valheim/valheim_bepinex/README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/game_eggs/steamcmd_servers/valheim/valheim_bepinex/README.md b/game_eggs/steamcmd_servers/valheim/valheim_bepinex/README.md index 72bdd70b..a3642c00 100644 --- a/game_eggs/steamcmd_servers/valheim/valheim_bepinex/README.md +++ b/game_eggs/steamcmd_servers/valheim/valheim_bepinex/README.md @@ -37,3 +37,6 @@ Mods can be downloaded from modpacks automatically by entering the "dependency s |-------|---------| | Game | 2456 | | Query | 2457 | + +## Updating +Because the `DOORSTOP_CORLIB_OVERRIDE_PATH=./unstripped_corlib;` has been removed from the startup with the latest update of this egg. If your server is already running, update the startup manually. \ No newline at end of file