From eb154ab9ab32bb85b864a3f69787ea82232a80d8 Mon Sep 17 00:00:00 2001 From: Jonathan Esser <36900138+EsserGaming@users.noreply.github.com> Date: Fri, 26 Jun 2026 10:53:22 -0500 Subject: [PATCH 1/6] Add egg --- scpsl/scpsl-egg.json | 83 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 scpsl/scpsl-egg.json diff --git a/scpsl/scpsl-egg.json b/scpsl/scpsl-egg.json new file mode 100644 index 00000000..e35b9579 --- /dev/null +++ b/scpsl/scpsl-egg.json @@ -0,0 +1,83 @@ +{ + "_comment": "PTERODACTYL: Update URL is used for Pelican", + "meta": { + "version": "PTDL_v2", + "update_url": "https:\/\/raw.githubusercontent.com\/EsserGaming\/scpsl-egg\/refs\/heads\/master\/scpsl-egg.json" + }, + "exported_at": "2026-06-25T17:02:57-05:00", + "name": "scpsl-egg_steamdepot", + "author": "upwordstudent@gmail.com", + "description": "A customizable egg for the SCP: Secret Laboratory Dedicated Linux server builds.", + "features": [], + "docker_images": { + "essergaming\/docker-scpsl": "ghcr.io\/essergaming\/docker-scpsl:master", + "parkeymon\/exiled-scpsl-image": "quay.io\/parkeymon\/exiled-scpsl-image:latest" + }, + "file_denylist": [], + "startup": "[ \"{{INSTALL_SCPDBOT}}\" = \"true\" ] && .\/.egg\/SCPDBot\/scpdiscord --config .\/.egg\/SCPDBot\/config.yml & .\/LocalAdmin {{SERVER_PORT}}", + "config": { + "files": "{}", + "startup": "{\r\n \"done\": \"Waiting for players..\"\r\n}", + "logs": "{}", + "stop": "exit" + }, + "scripts": { + "installation": { + "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n\r\necho \"\r\n$(tput setaf 4) ____________________________ ______________\r\n$(tput setaf 4) \/ _____\/\\_ ___ \\______ \\ \/\\ \/ _____\/| |\r\n$(tput setaf 4) \\_____ \\ \/ \\ \\\/| ___\/ \\\/ \\_____ \\ | |\r\n$(tput setaf 4) \/ || \\___| | \/\\ \/ \\| |___\r\n$(tput setaf 4)\/_________\/ \\________\/____| \\\/ \/_________\/|________|\r\n$(tput setaf 1) ___ __ __ __\r\n$(tput setaf 1)| | ____ _______\/ |______ | | | | ___________\r\n$(tput setaf 1)| |\/ \\ \/ ___\/\\ __\\__ \\ | | | | _\/ __ \\_ __ |\r\n$(tput setaf 1)| | | |\\___ \\ | | \/ __ \\| |_| |_\\ ___\/| | \\\/\r\n$(tput setaf 1)|___|___|__\/______| |__| (______|____|____\/\\___ |__|\r\n$(tput sgr0)\r\n\"\r\n\r\necho \"\r\n$(tput setaf 2)This installer was created by $(tput setaf 1)Parkeymon$(tput setaf 2) and maintained by $(tput setaf 6)EsserGaming$(tput setaf 2).$(tput sgr0)\r\n\"\r\n\r\n# Egg version checking, do not touch!\r\ncurrentVersion=\"4.0.0\"\r\nlatestVersion=$(curl --silent \"https:\/\/api.github.com\/repos\/EsserGaming\/scpsl-egg\/releases\/latest\" | jq -r .tag_name)\r\n\r\nif [ \"${currentVersion}\" == \"${latestVersion}\" ]; then\r\n echo \"$(tput setaf 2)Installer is up to date\"\r\nelse\r\n\r\n echo \"\r\n $(tput setaf 1)THE INSTALLER IS NOT UP TO DATE!\r\n\r\n Current Version: $(tput setaf 1)${currentVersion}\r\n Latest: $(tput setaf 2)${latestVersion}\r\n\r\n $(tput setaf 3)Please update to the latest version found here: https:\/\/github.com\/EsserGaming\/scpsl-egg\/releases\/latest\r\n$(tput setaf 4)Installation will start in 3 seconds...\r\n\r\n \"\r\n sleep 3\r\nfi\r\n\r\n# Download SteamDepotDownloader and install it.\r\ncd \/tmp || { \r\n echo \"$(tput setaf 1) FAILED TO MOUNT TO \/TMP\"\r\n exit \r\n}\r\nmkdir -p \/mnt\/server\/.DepotDownloader\r\ncurl -sSL -o DepotDownloader-linux-x64.zip https:\/\/github.com\/SteamRE\/DepotDownloader\/releases\/latest\/download\/DepotDownloader-linux-x64.zip\r\nunzip -oq DepotDownloader-linux-x64.zip -d \/mnt\/server\/.DepotDownloader\r\ncd \/mnt\/server\/.DepotDownloader || {\r\n echo \"$(tput setaf 1) FAILED TO MOUNT TO \/mnt\/server\/.DepotDownloader\"\r\n exit\r\n}\r\n\r\n# Install SCP: Secret Laboratory using SteamDepotDownloader\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\nif [ \"${BRANCH_TAG}\" == \"\" ]; then\r\n echo \"$(tput setaf 4)Installing SCP:SL..$(tput sgr0)\"\r\n .\/DepotDownloader -app 996560 -depot 996562 -dir \/mnt\/server -validate > \/dev\/null # silence output\r\n echo \"$(tput setaf 2)Done.$(tput sgr0)\"\r\nelse\r\n echo \"$(tput setaf 4)Installing SCP:SL $(tput bold)on custom branch (output enabled)..$(tput sgr0)\" \r\n .\/DepotDownloader -app 996560 -depot 996562 -dir \/mnt\/server -branch ${BRANCH_TAG} -validate # keeping this normal if debugging is needed\r\nfi\r\n\r\n# Exit if \/mnt\/server doesn't exist\r\ncd \/mnt\/server || {\r\n echo \"$(tput setaf 1) FAILED TO MOUNT TO \/mnt\/server\"\r\n exit\r\n}\r\n\r\n# Ensure permissions are correct\r\nchmod +x LocalAdmin SCPSL.x86_64\r\n\r\n#Install SCPDiscord Bot\r\nif [ \"${INSTALL_SCPDBOT}\" == \"true\" ]; then\r\n mkdir -p \/mnt\/server\/.egg\/SCPDBot\r\n # Remove old SCPDiscord bot\r\n rm \/mnt\/server\/.egg\/SCPDBot\/scpdiscord >\/dev\/null 2>&1\r\n\r\n echo \"$(tput setaf 5)Installing latest SCPDiscord Bot.\"\r\n wget -q https:\/\/github.com\/KarlOfDuty\/SCPDiscord\/releases\/latest\/download\/scpdiscord -P \/mnt\/server\/.egg\/SCPDBot\r\n chmod +x \/mnt\/server\/.egg\/SCPDBot\/scpdiscord\r\nelse\r\n echo $(tput setaf 3)\"Skipping SCPDiscord Bot install.\"$(tput sgr0)\r\nfi\r\n\r\n #Install SCPDiscord Plugin\r\n if [ \"${INSTALL_SCPDPLUGIN}\" == \"true\" ]; then\r\n rm '\/mnt\/server\/.config\/SCP Secret Laboratory\/LabAPI\/plugins\/global\/SCPDiscord.dll' >\/dev\/null 2>&1\r\n echo \"$(tput setaf 5)Installing SCPDiscord Plugin.\"\r\n\r\n echo \"$(tput setaf 5)SCPDiscord: Grabbing plugin and dependencies..\"\r\n wget -q https:\/\/github.com\/KarlOfDuty\/SCPDiscord\/releases\/latest\/download\/dependencies.zip -P '\/mnt\/server\/.config\/SCP Secret Laboratory\/LabAPI\/dependencies\/global'\r\n wget -q https:\/\/github.com\/KarlOfDuty\/SCPDiscord\/releases\/latest\/download\/SCPDiscord.dll -P '\/mnt\/server\/.config\/SCP Secret Laboratory\/LabAPI\/plugins\/global'\r\n\r\n\r\n echo \"$(tput setaf 5)SCPDiscord: Extracting dependencies..\"\r\n unzip -oq '\/mnt\/server\/.config\/SCP Secret Laboratory\/LabAPI\/dependencies\/global\/dependencies.zip' -d '\/mnt\/server\/.config\/SCP Secret Laboratory\/LabAPI\/dependencies\/global\/'\r\n rm '\/mnt\/server\/.config\/SCP Secret Laboratory\/LabAPI\/dependencies\/global\/dependencies.zip' >\/dev\/null 2>&1\r\nelse\r\n echo $(tput setaf 3)\"Skipping SCPDiscord Plugin install.\"$(tput sgr0)\r\nfi\r\n\r\n\r\n# EXILED installation\r\nif [[ \"${INSTALL_EXILED}\" == \"true\" ]]; then\r\n echo \"$(tput setaf 4)Downloading $(tput setaf 1)EXILED $(tput setaf 4)installer.\"\r\n mkdir -p .config\/\r\n rm Exiled.Installer-Linux >\/dev\/null 2>&1\r\n wget -q https:\/\/github.com\/ExMod-Team\/EXILED\/releases\/latest\/download\/Exiled.Installer-Linux\r\n chmod +x .\/Exiled.Installer-Linux\r\n\r\n if [[ \"${EXILED_PRE}\" == \"true\" ]]; then\r\n echo \"$(tput setaf 4)Installing latest $(tput setaf 1)EXILED $(tput setaf 4)pre-release..\"\r\n .\/Exiled.Installer-Linux -p \/mnt\/server\/ --pre-releases >\/dev\/null\r\n\r\n elif [[ \"${EXILED_PRE}\" == \"false\" ]]; then\r\n echo \"$(tput setaf 4)Installing latest $(tput setaf 1)EXILED $(tput setaf 4)release..\"\r\n .\/Exiled.Installer-Linux -p \/mnt\/server\/ --skip-version-select >\/dev\/null\r\n\r\n else\r\n echo \"$(tput setaf 4)Installing $(tput setaf 1)EXILED$ $(tput setaf 4)version: $(tput bold)$(tput setaf 1)${EXILED_PRE}$(tput sgr0)\"\r\n .\/Exiled.Installer-Linux -p \/mnt\/server\/ --target-version \"${EXILED_PRE}\" # un-silenced in case debugging is needed\r\n\r\n fi\r\nelse\r\n echo $(tput setaf 3)\"Skipping Exiled installation.\"$(tput sgr0)\r\nfi\r\n\r\n\r\n# Cleanup, I also silenced rm if it doesn't find the file.\r\necho \"$(tput setaf 5)Cleaning up..$(tput sgr 0)\"\r\nrm \/mnt\/server\/core >\/dev\/null 2>&1\r\nrm \/mnt\/server\/Exiled.Installer-Linux >\/dev\/null 2>&1\r\nrm \/mnt\/server\/config-gameplay.txt >\/dev\/null 2>&1\r\nrm -r \/mnt\/server\/? >\/dev\/null 2>&1\r\nrm -r \/mnt\/server\/.local >\/dev\/null 2>&1\r\n\r\necho \"$(tput setaf 2)Installation Complete!$(tput sgr 0)\"", + "container": "quay.io\/esserlamp\/scpsl-install:latest", + "entrypoint": "bash" + } + }, + "variables": [ + { + "name": "Branch Tag", + "description": "Keep empty for public branch.\r\nFor branches with passwords add \"-branchpassword \" before the password.", + "env_variable": "BRANCH_TAG", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "max:200", + "field_type": "text" + }, + { + "name": "Install EXILED?", + "description": "Installs the latest EXILED release.", + "env_variable": "INSTALL_EXILED", + "default_value": "false", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:5", + "field_type": "text" + }, + { + "name": "Use EXILED Pre-Releases?", + "description": "Allows you to install the latest Pre-Release of EXILED.\r\nTo install a specific version, replace with the specified EXILED version.", + "env_variable": "EXILED_PRE", + "default_value": "false", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:20", + "field_type": "text" + }, + { + "name": "Install SCPDiscord?", + "description": "This will install the SCPDiscord Bot and start it alongside the SL server.", + "env_variable": "INSTALL_SCPDBOT", + "default_value": "false", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:5", + "field_type": "text" + }, + { + "name": "Install SCPDiscord Plugin?", + "description": "Disable if you use a plugin manager. The plugin will be installed for LabAPI.", + "env_variable": "INSTALL_SCPDPLUGIN", + "default_value": "false", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:20", + "field_type": "text" + } + ] +} \ No newline at end of file From 07236499fe704d946b1ac28cd9f59b6f1f6cb8d7 Mon Sep 17 00:00:00 2001 From: Jonathan Esser <36900138+EsserGaming@users.noreply.github.com> Date: Fri, 26 Jun 2026 11:32:56 -0500 Subject: [PATCH 2/6] Changed install container --- scpsl/scpsl-egg.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/scpsl/scpsl-egg.json b/scpsl/scpsl-egg.json index e35b9579..48ecb25a 100644 --- a/scpsl/scpsl-egg.json +++ b/scpsl/scpsl-egg.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": "https:\/\/raw.githubusercontent.com\/EsserGaming\/scpsl-egg\/refs\/heads\/master\/scpsl-egg.json" }, - "exported_at": "2026-06-25T17:02:57-05:00", + "exported_at": "2026-06-26T11:16:08-05:00", "name": "scpsl-egg_steamdepot", "author": "upwordstudent@gmail.com", "description": "A customizable egg for the SCP: Secret Laboratory Dedicated Linux server builds.", @@ -24,7 +24,7 @@ "scripts": { "installation": { "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n\r\necho \"\r\n$(tput setaf 4) ____________________________ ______________\r\n$(tput setaf 4) \/ _____\/\\_ ___ \\______ \\ \/\\ \/ _____\/| |\r\n$(tput setaf 4) \\_____ \\ \/ \\ \\\/| ___\/ \\\/ \\_____ \\ | |\r\n$(tput setaf 4) \/ || \\___| | \/\\ \/ \\| |___\r\n$(tput setaf 4)\/_________\/ \\________\/____| \\\/ \/_________\/|________|\r\n$(tput setaf 1) ___ __ __ __\r\n$(tput setaf 1)| | ____ _______\/ |______ | | | | ___________\r\n$(tput setaf 1)| |\/ \\ \/ ___\/\\ __\\__ \\ | | | | _\/ __ \\_ __ |\r\n$(tput setaf 1)| | | |\\___ \\ | | \/ __ \\| |_| |_\\ ___\/| | \\\/\r\n$(tput setaf 1)|___|___|__\/______| |__| (______|____|____\/\\___ |__|\r\n$(tput sgr0)\r\n\"\r\n\r\necho \"\r\n$(tput setaf 2)This installer was created by $(tput setaf 1)Parkeymon$(tput setaf 2) and maintained by $(tput setaf 6)EsserGaming$(tput setaf 2).$(tput sgr0)\r\n\"\r\n\r\n# Egg version checking, do not touch!\r\ncurrentVersion=\"4.0.0\"\r\nlatestVersion=$(curl --silent \"https:\/\/api.github.com\/repos\/EsserGaming\/scpsl-egg\/releases\/latest\" | jq -r .tag_name)\r\n\r\nif [ \"${currentVersion}\" == \"${latestVersion}\" ]; then\r\n echo \"$(tput setaf 2)Installer is up to date\"\r\nelse\r\n\r\n echo \"\r\n $(tput setaf 1)THE INSTALLER IS NOT UP TO DATE!\r\n\r\n Current Version: $(tput setaf 1)${currentVersion}\r\n Latest: $(tput setaf 2)${latestVersion}\r\n\r\n $(tput setaf 3)Please update to the latest version found here: https:\/\/github.com\/EsserGaming\/scpsl-egg\/releases\/latest\r\n$(tput setaf 4)Installation will start in 3 seconds...\r\n\r\n \"\r\n sleep 3\r\nfi\r\n\r\n# Download SteamDepotDownloader and install it.\r\ncd \/tmp || { \r\n echo \"$(tput setaf 1) FAILED TO MOUNT TO \/TMP\"\r\n exit \r\n}\r\nmkdir -p \/mnt\/server\/.DepotDownloader\r\ncurl -sSL -o DepotDownloader-linux-x64.zip https:\/\/github.com\/SteamRE\/DepotDownloader\/releases\/latest\/download\/DepotDownloader-linux-x64.zip\r\nunzip -oq DepotDownloader-linux-x64.zip -d \/mnt\/server\/.DepotDownloader\r\ncd \/mnt\/server\/.DepotDownloader || {\r\n echo \"$(tput setaf 1) FAILED TO MOUNT TO \/mnt\/server\/.DepotDownloader\"\r\n exit\r\n}\r\n\r\n# Install SCP: Secret Laboratory using SteamDepotDownloader\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\nif [ \"${BRANCH_TAG}\" == \"\" ]; then\r\n echo \"$(tput setaf 4)Installing SCP:SL..$(tput sgr0)\"\r\n .\/DepotDownloader -app 996560 -depot 996562 -dir \/mnt\/server -validate > \/dev\/null # silence output\r\n echo \"$(tput setaf 2)Done.$(tput sgr0)\"\r\nelse\r\n echo \"$(tput setaf 4)Installing SCP:SL $(tput bold)on custom branch (output enabled)..$(tput sgr0)\" \r\n .\/DepotDownloader -app 996560 -depot 996562 -dir \/mnt\/server -branch ${BRANCH_TAG} -validate # keeping this normal if debugging is needed\r\nfi\r\n\r\n# Exit if \/mnt\/server doesn't exist\r\ncd \/mnt\/server || {\r\n echo \"$(tput setaf 1) FAILED TO MOUNT TO \/mnt\/server\"\r\n exit\r\n}\r\n\r\n# Ensure permissions are correct\r\nchmod +x LocalAdmin SCPSL.x86_64\r\n\r\n#Install SCPDiscord Bot\r\nif [ \"${INSTALL_SCPDBOT}\" == \"true\" ]; then\r\n mkdir -p \/mnt\/server\/.egg\/SCPDBot\r\n # Remove old SCPDiscord bot\r\n rm \/mnt\/server\/.egg\/SCPDBot\/scpdiscord >\/dev\/null 2>&1\r\n\r\n echo \"$(tput setaf 5)Installing latest SCPDiscord Bot.\"\r\n wget -q https:\/\/github.com\/KarlOfDuty\/SCPDiscord\/releases\/latest\/download\/scpdiscord -P \/mnt\/server\/.egg\/SCPDBot\r\n chmod +x \/mnt\/server\/.egg\/SCPDBot\/scpdiscord\r\nelse\r\n echo $(tput setaf 3)\"Skipping SCPDiscord Bot install.\"$(tput sgr0)\r\nfi\r\n\r\n #Install SCPDiscord Plugin\r\n if [ \"${INSTALL_SCPDPLUGIN}\" == \"true\" ]; then\r\n rm '\/mnt\/server\/.config\/SCP Secret Laboratory\/LabAPI\/plugins\/global\/SCPDiscord.dll' >\/dev\/null 2>&1\r\n echo \"$(tput setaf 5)Installing SCPDiscord Plugin.\"\r\n\r\n echo \"$(tput setaf 5)SCPDiscord: Grabbing plugin and dependencies..\"\r\n wget -q https:\/\/github.com\/KarlOfDuty\/SCPDiscord\/releases\/latest\/download\/dependencies.zip -P '\/mnt\/server\/.config\/SCP Secret Laboratory\/LabAPI\/dependencies\/global'\r\n wget -q https:\/\/github.com\/KarlOfDuty\/SCPDiscord\/releases\/latest\/download\/SCPDiscord.dll -P '\/mnt\/server\/.config\/SCP Secret Laboratory\/LabAPI\/plugins\/global'\r\n\r\n\r\n echo \"$(tput setaf 5)SCPDiscord: Extracting dependencies..\"\r\n unzip -oq '\/mnt\/server\/.config\/SCP Secret Laboratory\/LabAPI\/dependencies\/global\/dependencies.zip' -d '\/mnt\/server\/.config\/SCP Secret Laboratory\/LabAPI\/dependencies\/global\/'\r\n rm '\/mnt\/server\/.config\/SCP Secret Laboratory\/LabAPI\/dependencies\/global\/dependencies.zip' >\/dev\/null 2>&1\r\nelse\r\n echo $(tput setaf 3)\"Skipping SCPDiscord Plugin install.\"$(tput sgr0)\r\nfi\r\n\r\n\r\n# EXILED installation\r\nif [[ \"${INSTALL_EXILED}\" == \"true\" ]]; then\r\n echo \"$(tput setaf 4)Downloading $(tput setaf 1)EXILED $(tput setaf 4)installer.\"\r\n mkdir -p .config\/\r\n rm Exiled.Installer-Linux >\/dev\/null 2>&1\r\n wget -q https:\/\/github.com\/ExMod-Team\/EXILED\/releases\/latest\/download\/Exiled.Installer-Linux\r\n chmod +x .\/Exiled.Installer-Linux\r\n\r\n if [[ \"${EXILED_PRE}\" == \"true\" ]]; then\r\n echo \"$(tput setaf 4)Installing latest $(tput setaf 1)EXILED $(tput setaf 4)pre-release..\"\r\n .\/Exiled.Installer-Linux -p \/mnt\/server\/ --pre-releases >\/dev\/null\r\n\r\n elif [[ \"${EXILED_PRE}\" == \"false\" ]]; then\r\n echo \"$(tput setaf 4)Installing latest $(tput setaf 1)EXILED $(tput setaf 4)release..\"\r\n .\/Exiled.Installer-Linux -p \/mnt\/server\/ --skip-version-select >\/dev\/null\r\n\r\n else\r\n echo \"$(tput setaf 4)Installing $(tput setaf 1)EXILED$ $(tput setaf 4)version: $(tput bold)$(tput setaf 1)${EXILED_PRE}$(tput sgr0)\"\r\n .\/Exiled.Installer-Linux -p \/mnt\/server\/ --target-version \"${EXILED_PRE}\" # un-silenced in case debugging is needed\r\n\r\n fi\r\nelse\r\n echo $(tput setaf 3)\"Skipping Exiled installation.\"$(tput sgr0)\r\nfi\r\n\r\n\r\n# Cleanup, I also silenced rm if it doesn't find the file.\r\necho \"$(tput setaf 5)Cleaning up..$(tput sgr 0)\"\r\nrm \/mnt\/server\/core >\/dev\/null 2>&1\r\nrm \/mnt\/server\/Exiled.Installer-Linux >\/dev\/null 2>&1\r\nrm \/mnt\/server\/config-gameplay.txt >\/dev\/null 2>&1\r\nrm -r \/mnt\/server\/? >\/dev\/null 2>&1\r\nrm -r \/mnt\/server\/.local >\/dev\/null 2>&1\r\n\r\necho \"$(tput setaf 2)Installation Complete!$(tput sgr 0)\"", - "container": "quay.io\/esserlamp\/scpsl-install:latest", + "container": "ghcr.io\/ptero-eggs\/installers:debian", "entrypoint": "bash" } }, @@ -80,4 +80,4 @@ "field_type": "text" } ] -} \ No newline at end of file +} From a89d42ca1b2e48b1b1ca0041f4b9466f087e43de Mon Sep 17 00:00:00 2001 From: Jonathan Esser Date: Thu, 9 Jul 2026 20:51:53 -0500 Subject: [PATCH 3/6] Change dir & more Put the egg into it's own folder Made changes that follow the PR guidelines --- scpsl/{ => scpsl-egg}/scpsl-egg.json | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) rename scpsl/{ => scpsl-egg}/scpsl-egg.json (96%) diff --git a/scpsl/scpsl-egg.json b/scpsl/scpsl-egg/scpsl-egg.json similarity index 96% rename from scpsl/scpsl-egg.json rename to scpsl/scpsl-egg/scpsl-egg.json index 48ecb25a..5c9a5dc0 100644 --- a/scpsl/scpsl-egg.json +++ b/scpsl/scpsl-egg/scpsl-egg.json @@ -4,14 +4,13 @@ "version": "PTDL_v2", "update_url": "https:\/\/raw.githubusercontent.com\/EsserGaming\/scpsl-egg\/refs\/heads\/master\/scpsl-egg.json" }, - "exported_at": "2026-06-26T11:16:08-05:00", - "name": "scpsl-egg_steamdepot", + "exported_at": "2026-07-09T19:16:01-05:00", + "name": "scpsl-egg", "author": "upwordstudent@gmail.com", "description": "A customizable egg for the SCP: Secret Laboratory Dedicated Linux server builds.", "features": [], "docker_images": { - "essergaming\/docker-scpsl": "ghcr.io\/essergaming\/docker-scpsl:master", - "parkeymon\/exiled-scpsl-image": "quay.io\/parkeymon\/exiled-scpsl-image:latest" + "ghcr.io\/ptero-eggs\/yolks:debian_trixie": "ghcr.io\/ptero-eggs\/yolks:debian_trixie" }, "file_denylist": [], "startup": "[ \"{{INSTALL_SCPDBOT}}\" = \"true\" ] && .\/.egg\/SCPDBot\/scpdiscord --config .\/.egg\/SCPDBot\/config.yml & .\/LocalAdmin {{SERVER_PORT}}", @@ -23,7 +22,7 @@ }, "scripts": { "installation": { - "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n\r\necho \"\r\n$(tput setaf 4) ____________________________ ______________\r\n$(tput setaf 4) \/ _____\/\\_ ___ \\______ \\ \/\\ \/ _____\/| |\r\n$(tput setaf 4) \\_____ \\ \/ \\ \\\/| ___\/ \\\/ \\_____ \\ | |\r\n$(tput setaf 4) \/ || \\___| | \/\\ \/ \\| |___\r\n$(tput setaf 4)\/_________\/ \\________\/____| \\\/ \/_________\/|________|\r\n$(tput setaf 1) ___ __ __ __\r\n$(tput setaf 1)| | ____ _______\/ |______ | | | | ___________\r\n$(tput setaf 1)| |\/ \\ \/ ___\/\\ __\\__ \\ | | | | _\/ __ \\_ __ |\r\n$(tput setaf 1)| | | |\\___ \\ | | \/ __ \\| |_| |_\\ ___\/| | \\\/\r\n$(tput setaf 1)|___|___|__\/______| |__| (______|____|____\/\\___ |__|\r\n$(tput sgr0)\r\n\"\r\n\r\necho \"\r\n$(tput setaf 2)This installer was created by $(tput setaf 1)Parkeymon$(tput setaf 2) and maintained by $(tput setaf 6)EsserGaming$(tput setaf 2).$(tput sgr0)\r\n\"\r\n\r\n# Egg version checking, do not touch!\r\ncurrentVersion=\"4.0.0\"\r\nlatestVersion=$(curl --silent \"https:\/\/api.github.com\/repos\/EsserGaming\/scpsl-egg\/releases\/latest\" | jq -r .tag_name)\r\n\r\nif [ \"${currentVersion}\" == \"${latestVersion}\" ]; then\r\n echo \"$(tput setaf 2)Installer is up to date\"\r\nelse\r\n\r\n echo \"\r\n $(tput setaf 1)THE INSTALLER IS NOT UP TO DATE!\r\n\r\n Current Version: $(tput setaf 1)${currentVersion}\r\n Latest: $(tput setaf 2)${latestVersion}\r\n\r\n $(tput setaf 3)Please update to the latest version found here: https:\/\/github.com\/EsserGaming\/scpsl-egg\/releases\/latest\r\n$(tput setaf 4)Installation will start in 3 seconds...\r\n\r\n \"\r\n sleep 3\r\nfi\r\n\r\n# Download SteamDepotDownloader and install it.\r\ncd \/tmp || { \r\n echo \"$(tput setaf 1) FAILED TO MOUNT TO \/TMP\"\r\n exit \r\n}\r\nmkdir -p \/mnt\/server\/.DepotDownloader\r\ncurl -sSL -o DepotDownloader-linux-x64.zip https:\/\/github.com\/SteamRE\/DepotDownloader\/releases\/latest\/download\/DepotDownloader-linux-x64.zip\r\nunzip -oq DepotDownloader-linux-x64.zip -d \/mnt\/server\/.DepotDownloader\r\ncd \/mnt\/server\/.DepotDownloader || {\r\n echo \"$(tput setaf 1) FAILED TO MOUNT TO \/mnt\/server\/.DepotDownloader\"\r\n exit\r\n}\r\n\r\n# Install SCP: Secret Laboratory using SteamDepotDownloader\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\nif [ \"${BRANCH_TAG}\" == \"\" ]; then\r\n echo \"$(tput setaf 4)Installing SCP:SL..$(tput sgr0)\"\r\n .\/DepotDownloader -app 996560 -depot 996562 -dir \/mnt\/server -validate > \/dev\/null # silence output\r\n echo \"$(tput setaf 2)Done.$(tput sgr0)\"\r\nelse\r\n echo \"$(tput setaf 4)Installing SCP:SL $(tput bold)on custom branch (output enabled)..$(tput sgr0)\" \r\n .\/DepotDownloader -app 996560 -depot 996562 -dir \/mnt\/server -branch ${BRANCH_TAG} -validate # keeping this normal if debugging is needed\r\nfi\r\n\r\n# Exit if \/mnt\/server doesn't exist\r\ncd \/mnt\/server || {\r\n echo \"$(tput setaf 1) FAILED TO MOUNT TO \/mnt\/server\"\r\n exit\r\n}\r\n\r\n# Ensure permissions are correct\r\nchmod +x LocalAdmin SCPSL.x86_64\r\n\r\n#Install SCPDiscord Bot\r\nif [ \"${INSTALL_SCPDBOT}\" == \"true\" ]; then\r\n mkdir -p \/mnt\/server\/.egg\/SCPDBot\r\n # Remove old SCPDiscord bot\r\n rm \/mnt\/server\/.egg\/SCPDBot\/scpdiscord >\/dev\/null 2>&1\r\n\r\n echo \"$(tput setaf 5)Installing latest SCPDiscord Bot.\"\r\n wget -q https:\/\/github.com\/KarlOfDuty\/SCPDiscord\/releases\/latest\/download\/scpdiscord -P \/mnt\/server\/.egg\/SCPDBot\r\n chmod +x \/mnt\/server\/.egg\/SCPDBot\/scpdiscord\r\nelse\r\n echo $(tput setaf 3)\"Skipping SCPDiscord Bot install.\"$(tput sgr0)\r\nfi\r\n\r\n #Install SCPDiscord Plugin\r\n if [ \"${INSTALL_SCPDPLUGIN}\" == \"true\" ]; then\r\n rm '\/mnt\/server\/.config\/SCP Secret Laboratory\/LabAPI\/plugins\/global\/SCPDiscord.dll' >\/dev\/null 2>&1\r\n echo \"$(tput setaf 5)Installing SCPDiscord Plugin.\"\r\n\r\n echo \"$(tput setaf 5)SCPDiscord: Grabbing plugin and dependencies..\"\r\n wget -q https:\/\/github.com\/KarlOfDuty\/SCPDiscord\/releases\/latest\/download\/dependencies.zip -P '\/mnt\/server\/.config\/SCP Secret Laboratory\/LabAPI\/dependencies\/global'\r\n wget -q https:\/\/github.com\/KarlOfDuty\/SCPDiscord\/releases\/latest\/download\/SCPDiscord.dll -P '\/mnt\/server\/.config\/SCP Secret Laboratory\/LabAPI\/plugins\/global'\r\n\r\n\r\n echo \"$(tput setaf 5)SCPDiscord: Extracting dependencies..\"\r\n unzip -oq '\/mnt\/server\/.config\/SCP Secret Laboratory\/LabAPI\/dependencies\/global\/dependencies.zip' -d '\/mnt\/server\/.config\/SCP Secret Laboratory\/LabAPI\/dependencies\/global\/'\r\n rm '\/mnt\/server\/.config\/SCP Secret Laboratory\/LabAPI\/dependencies\/global\/dependencies.zip' >\/dev\/null 2>&1\r\nelse\r\n echo $(tput setaf 3)\"Skipping SCPDiscord Plugin install.\"$(tput sgr0)\r\nfi\r\n\r\n\r\n# EXILED installation\r\nif [[ \"${INSTALL_EXILED}\" == \"true\" ]]; then\r\n echo \"$(tput setaf 4)Downloading $(tput setaf 1)EXILED $(tput setaf 4)installer.\"\r\n mkdir -p .config\/\r\n rm Exiled.Installer-Linux >\/dev\/null 2>&1\r\n wget -q https:\/\/github.com\/ExMod-Team\/EXILED\/releases\/latest\/download\/Exiled.Installer-Linux\r\n chmod +x .\/Exiled.Installer-Linux\r\n\r\n if [[ \"${EXILED_PRE}\" == \"true\" ]]; then\r\n echo \"$(tput setaf 4)Installing latest $(tput setaf 1)EXILED $(tput setaf 4)pre-release..\"\r\n .\/Exiled.Installer-Linux -p \/mnt\/server\/ --pre-releases >\/dev\/null\r\n\r\n elif [[ \"${EXILED_PRE}\" == \"false\" ]]; then\r\n echo \"$(tput setaf 4)Installing latest $(tput setaf 1)EXILED $(tput setaf 4)release..\"\r\n .\/Exiled.Installer-Linux -p \/mnt\/server\/ --skip-version-select >\/dev\/null\r\n\r\n else\r\n echo \"$(tput setaf 4)Installing $(tput setaf 1)EXILED$ $(tput setaf 4)version: $(tput bold)$(tput setaf 1)${EXILED_PRE}$(tput sgr0)\"\r\n .\/Exiled.Installer-Linux -p \/mnt\/server\/ --target-version \"${EXILED_PRE}\" # un-silenced in case debugging is needed\r\n\r\n fi\r\nelse\r\n echo $(tput setaf 3)\"Skipping Exiled installation.\"$(tput sgr0)\r\nfi\r\n\r\n\r\n# Cleanup, I also silenced rm if it doesn't find the file.\r\necho \"$(tput setaf 5)Cleaning up..$(tput sgr 0)\"\r\nrm \/mnt\/server\/core >\/dev\/null 2>&1\r\nrm \/mnt\/server\/Exiled.Installer-Linux >\/dev\/null 2>&1\r\nrm \/mnt\/server\/config-gameplay.txt >\/dev\/null 2>&1\r\nrm -r \/mnt\/server\/? >\/dev\/null 2>&1\r\nrm -r \/mnt\/server\/.local >\/dev\/null 2>&1\r\n\r\necho \"$(tput setaf 2)Installation Complete!$(tput sgr 0)\"", + "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n\r\necho \"\r\n$(tput setaf 4) ____________________________ ______________\r\n$(tput setaf 4) \/ _____\/\\_ ___ \\______ \\ \/\\ \/ _____\/| |\r\n$(tput setaf 4) \\_____ \\ \/ \\ \\\/| ___\/ \\\/ \\_____ \\ | |\r\n$(tput setaf 4) \/ || \\___| | \/\\ \/ \\| |___\r\n$(tput setaf 4)\/_________\/ \\________\/____| \\\/ \/_________\/|________|\r\n$(tput setaf 1) ___ __ __ __\r\n$(tput setaf 1)| | ____ _______\/ |______ | | | | ___________\r\n$(tput setaf 1)| |\/ \\ \/ ___\/\\ __\\__ \\ | | | | _\/ __ \\_ __ |\r\n$(tput setaf 1)| | | |\\___ \\ | | \/ __ \\| |_| |_\\ ___\/| | \\\/\r\n$(tput setaf 1)|___|___|__\/______| |__| (______|____|____\/\\___ |__|\r\n$(tput sgr0)\r\n\"\r\n\r\necho \"\r\n$(tput setaf 2)This installer was created by $(tput setaf 1)Parkeymon$(tput setaf 2) and maintained by $(tput setaf 6)EsserGaming$(tput setaf 2).$(tput sgr0)\r\n\"\r\n\r\n# Egg version checking, do not touch!\r\ncurrentVersion=\"4.0.0\"\r\nlatestVersion=$(curl --silent \"https:\/\/api.github.com\/repos\/EsserGaming\/scpsl-egg\/releases\/latest\" | jq -r .tag_name)\r\n\r\nif [ \"${currentVersion}\" == \"${latestVersion}\" ]; then\r\n echo \"$(tput setaf 2)Installer is up to date\"\r\nelse\r\n\r\n echo \"\r\n $(tput setaf 1)THE INSTALLER IS NOT UP TO DATE!\r\n\r\n Current Version: $(tput setaf 1)${currentVersion}\r\n Latest: $(tput setaf 2)${latestVersion}\r\n\r\n $(tput setaf 3)Please update to the latest version found here: https:\/\/github.com\/EsserGaming\/scpsl-egg\/releases\/latest\r\n$(tput setaf 4)Installation will start in 3 seconds...\r\n\r\n \"\r\n sleep 3\r\nfi\r\n\r\n# Download SteamDepotDownloader and install it.\r\ncd \/tmp || { \r\n echo \"$(tput setaf 1) FAILED TO MOUNT TO \/TMP\"\r\n exit \r\n}\r\nmkdir -p \/mnt\/server\/.DepotDownloader\r\ncurl -sSL -o DepotDownloader-linux-x64.zip https:\/\/github.com\/SteamRE\/DepotDownloader\/releases\/latest\/download\/DepotDownloader-linux-x64.zip\r\nunzip -oq DepotDownloader-linux-x64.zip -d \/mnt\/server\/.DepotDownloader\r\ncd \/mnt\/server\/.DepotDownloader || {\r\n echo \"$(tput setaf 1) FAILED TO MOUNT TO \/mnt\/server\/.DepotDownloader\"\r\n exit\r\n}\r\n\r\n# Install SCP: Secret Laboratory using SteamDepotDownloader\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\nif [ \"${BRANCH_TAG}\" == \"\" ]; then\r\n echo \"$(tput setaf 4)Installing SCP:SL..$(tput sgr0)\"\r\n .\/DepotDownloader -app 996560 -depot 996562 -dir \/mnt\/server -validate > \/dev\/null # silence output\r\n echo \"$(tput setaf 2)Done.$(tput sgr0)\"\r\nelse\r\n echo \"$(tput setaf 4)Installing SCP:SL $(tput bold)on custom branch (output enabled)..$(tput sgr0)\" \r\n .\/DepotDownloader -app 996560 -depot 996562 -branch ${BRANCH_TAG} -dir \/mnt\/server -validate # keeping this normal if debugging is needed\r\nfi\r\n\r\n# Exit if \/mnt\/server doesn't exist\r\ncd \/mnt\/server || {\r\n echo \"$(tput setaf 1) FAILED TO MOUNT TO \/mnt\/server\"\r\n exit\r\n}\r\n\r\n# Ensure permissions are correct\r\nchmod +x LocalAdmin SCPSL.x86_64\r\n\r\n#Install SCPDiscord Bot\r\nif [ \"${INSTALL_SCPDBOT}\" == \"true\" ]; then\r\n mkdir -p \/mnt\/server\/.egg\/SCPDBot\r\n # Remove old SCPDiscord bot\r\n rm \/mnt\/server\/.egg\/SCPDBot\/scpdiscord >\/dev\/null 2>&1\r\n\r\n echo \"$(tput setaf 5)Installing latest SCPDiscord Bot.\"\r\n wget -q https:\/\/github.com\/KarlOfDuty\/SCPDiscord\/releases\/latest\/download\/scpdiscord -P \/mnt\/server\/.egg\/SCPDBot\r\n chmod +x \/mnt\/server\/.egg\/SCPDBot\/scpdiscord\r\nelse\r\n echo $(tput setaf 3)\"Skipping SCPDiscord Bot install.\"$(tput sgr0)\r\nfi\r\n\r\n #Install SCPDiscord Plugin\r\n if [ \"${INSTALL_SCPDPLUGIN}\" == \"true\" ]; then\r\n rm '\/mnt\/server\/.config\/SCP Secret Laboratory\/LabAPI\/plugins\/global\/SCPDiscord.dll' >\/dev\/null 2>&1\r\n echo \"$(tput setaf 5)Installing SCPDiscord Plugin.\"\r\n\r\n echo \"$(tput setaf 5)SCPDiscord: Grabbing plugin and dependencies..\"\r\n wget -q https:\/\/github.com\/KarlOfDuty\/SCPDiscord\/releases\/latest\/download\/dependencies.zip -P '\/mnt\/server\/.config\/SCP Secret Laboratory\/LabAPI\/dependencies\/global'\r\n wget -q https:\/\/github.com\/KarlOfDuty\/SCPDiscord\/releases\/latest\/download\/SCPDiscord.dll -P '\/mnt\/server\/.config\/SCP Secret Laboratory\/LabAPI\/plugins\/global'\r\n\r\n\r\n echo \"$(tput setaf 5)SCPDiscord: Extracting dependencies..\"\r\n unzip -oq '\/mnt\/server\/.config\/SCP Secret Laboratory\/LabAPI\/dependencies\/global\/dependencies.zip' -d '\/mnt\/server\/.config\/SCP Secret Laboratory\/LabAPI\/dependencies\/global\/'\r\n rm '\/mnt\/server\/.config\/SCP Secret Laboratory\/LabAPI\/dependencies\/global\/dependencies.zip' >\/dev\/null 2>&1\r\nelse\r\n echo $(tput setaf 3)\"Skipping SCPDiscord Plugin install.\"$(tput sgr0)\r\nfi\r\n\r\n\r\n# EXILED installation\r\nif [[ \"${INSTALL_EXILED}\" == \"true\" ]]; then\r\n echo \"$(tput setaf 4)Downloading $(tput setaf 1)EXILED $(tput setaf 4)installer.\"\r\n mkdir -p .config\/\r\n rm Exiled.Installer-Linux >\/dev\/null 2>&1\r\n wget -q https:\/\/github.com\/ExMod-Team\/EXILED\/releases\/latest\/download\/Exiled.Installer-Linux\r\n chmod +x .\/Exiled.Installer-Linux\r\n\r\n if [[ \"${EXILED_PRE}\" == \"true\" ]]; then\r\n echo \"$(tput setaf 4)Installing latest $(tput setaf 1)EXILED $(tput setaf 4)pre-release..\"\r\n .\/Exiled.Installer-Linux -p \/mnt\/server\/ --pre-releases >\/dev\/null\r\n\r\n elif [[ \"${EXILED_PRE}\" == \"false\" ]]; then\r\n echo \"$(tput setaf 4)Installing latest $(tput setaf 1)EXILED $(tput setaf 4)release..\"\r\n .\/Exiled.Installer-Linux -p \/mnt\/server\/ --skip-version-select >\/dev\/null\r\n\r\n else\r\n echo \"$(tput setaf 4)Installing $(tput setaf 1)EXILED$ $(tput setaf 4)version: $(tput bold)$(tput setaf 1)${EXILED_PRE}$(tput sgr0)\"\r\n .\/Exiled.Installer-Linux -p \/mnt\/server\/ --target-version \"${EXILED_PRE}\" # un-silenced in case debugging is needed\r\n\r\n fi\r\nelse\r\n echo $(tput setaf 3)\"Skipping Exiled installation.\"$(tput sgr0)\r\nfi\r\n\r\n\r\n# Cleanup, I also silenced rm if it doesn't find the file.\r\necho \"$(tput setaf 5)Cleaning up..$(tput sgr 0)\"\r\nrm \/mnt\/server\/core >\/dev\/null 2>&1\r\nrm \/mnt\/server\/Exiled.Installer-Linux >\/dev\/null 2>&1\r\nrm \/mnt\/server\/config-gameplay.txt >\/dev\/null 2>&1\r\nrm -r \/mnt\/server\/? >\/dev\/null 2>&1\r\nrm -r \/mnt\/server\/.local >\/dev\/null 2>&1\r\n\r\necho \"$(tput setaf 2)Installation Complete!$(tput sgr 0)\"", "container": "ghcr.io\/ptero-eggs\/installers:debian", "entrypoint": "bash" } @@ -80,4 +79,4 @@ "field_type": "text" } ] -} +} \ No newline at end of file From 95997e0c0981709514216936528bd9c44b3b40b3 Mon Sep 17 00:00:00 2001 From: Jonathan Esser Date: Thu, 9 Jul 2026 21:02:07 -0500 Subject: [PATCH 4/6] Initial README --- scpsl/scpsl-egg/README.md | 53 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 scpsl/scpsl-egg/README.md diff --git a/scpsl/scpsl-egg/README.md b/scpsl/scpsl-egg/README.md new file mode 100644 index 00000000..8336dbb4 --- /dev/null +++ b/scpsl/scpsl-egg/README.md @@ -0,0 +1,53 @@ +## Documentation + +Official technical documentation is available at . + +## Minimum RAM + +Minimum memory required to run the server: `4096 MB` + +## Server Port + +Default port required to run the server. + +| Port | Default | +|---------|---------| +| Game | 7777 | + + +## Features: +- Game branch tag support (e.g for public betas) + - Able to use private branches, see the SteamDepotDownloader [documentation](https://github.com/SteamRE/DepotDownloader#authentication) +- Options to choose the release, pre-release or a specific version of [EXILED](https://github.com/ExMod-Team/EXILED) +- Support to run the [SCPDiscord](https://github.com/KarlOfDuty/SCPDiscord/) Bot alongside the plugin +- Automatically checks if the egg is up to date and notifies you when there is an update +- FFmpeg support (for use with audio player plugins) + + +## Using the SCPDiscord bot +1. Go to the startup tab in your server, then set `INSTALL SCP DISCORD?` to `true`. +2. Under the settings tab, press "Reinstall Server" and wait until the server has finished the process. **Re-installing will *not* delete your important files.** +1. Go to the files tab, and go to `/.egg/SCPDBot` and open `config.yml` to configure the bot. +> [!TIP] +> **To configure the bot and plugin, read the [installation guide](https://github.com/KarlOfDuty/SCPDiscord/blob/main/docs/Installation.md).** + + +## Verification + +The server must be verified in order for it to be visible in the server browser. +Make sure your server complies with the [Community Server Guidelines](https://scpslgame.com/CSG.pdf). + +### Automatic Verification + +Run one of the following commands in the server console: + +* `!verify static` if you have a static IP address. +* `!verify dynamic` if you have a dynamic IP address. + +### Manual Verification + +Send an email to safety.compliance@scpslgame.com with the following info: + +* Your Public IPv4 (IPv6 or Domain Server Verification isn't supported). +* Whether your IP is Static or Dynamic. +* The port that your server is running on. \ No newline at end of file From 4c7b863e409516595bc7bc4b0484c9990743c966 Mon Sep 17 00:00:00 2001 From: Jonathan Esser Date: Thu, 9 Jul 2026 21:08:34 -0500 Subject: [PATCH 5/6] Fixup readme and remove update checker --- scpsl/scpsl-egg/README.md | 3 +-- scpsl/scpsl-egg/scpsl-egg.json | 4 ++-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/scpsl/scpsl-egg/README.md b/scpsl/scpsl-egg/README.md index 8336dbb4..a3c11a5b 100644 --- a/scpsl/scpsl-egg/README.md +++ b/scpsl/scpsl-egg/README.md @@ -17,10 +17,9 @@ Default port required to run the server. ## Features: - Game branch tag support (e.g for public betas) - - Able to use private branches, see the SteamDepotDownloader [documentation](https://github.com/SteamRE/DepotDownloader#authentication) + - Can use private branches as well, see the SteamDepotDownloader [documentation](https://github.com/SteamRE/DepotDownloader#authentication) - Options to choose the release, pre-release or a specific version of [EXILED](https://github.com/ExMod-Team/EXILED) - Support to run the [SCPDiscord](https://github.com/KarlOfDuty/SCPDiscord/) Bot alongside the plugin -- Automatically checks if the egg is up to date and notifies you when there is an update - FFmpeg support (for use with audio player plugins) diff --git a/scpsl/scpsl-egg/scpsl-egg.json b/scpsl/scpsl-egg/scpsl-egg.json index 5c9a5dc0..9359e38f 100644 --- a/scpsl/scpsl-egg/scpsl-egg.json +++ b/scpsl/scpsl-egg/scpsl-egg.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": "https:\/\/raw.githubusercontent.com\/EsserGaming\/scpsl-egg\/refs\/heads\/master\/scpsl-egg.json" }, - "exported_at": "2026-07-09T19:16:01-05:00", + "exported_at": "2026-07-09T21:07:06-05:00", "name": "scpsl-egg", "author": "upwordstudent@gmail.com", "description": "A customizable egg for the SCP: Secret Laboratory Dedicated Linux server builds.", @@ -22,7 +22,7 @@ }, "scripts": { "installation": { - "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n\r\necho \"\r\n$(tput setaf 4) ____________________________ ______________\r\n$(tput setaf 4) \/ _____\/\\_ ___ \\______ \\ \/\\ \/ _____\/| |\r\n$(tput setaf 4) \\_____ \\ \/ \\ \\\/| ___\/ \\\/ \\_____ \\ | |\r\n$(tput setaf 4) \/ || \\___| | \/\\ \/ \\| |___\r\n$(tput setaf 4)\/_________\/ \\________\/____| \\\/ \/_________\/|________|\r\n$(tput setaf 1) ___ __ __ __\r\n$(tput setaf 1)| | ____ _______\/ |______ | | | | ___________\r\n$(tput setaf 1)| |\/ \\ \/ ___\/\\ __\\__ \\ | | | | _\/ __ \\_ __ |\r\n$(tput setaf 1)| | | |\\___ \\ | | \/ __ \\| |_| |_\\ ___\/| | \\\/\r\n$(tput setaf 1)|___|___|__\/______| |__| (______|____|____\/\\___ |__|\r\n$(tput sgr0)\r\n\"\r\n\r\necho \"\r\n$(tput setaf 2)This installer was created by $(tput setaf 1)Parkeymon$(tput setaf 2) and maintained by $(tput setaf 6)EsserGaming$(tput setaf 2).$(tput sgr0)\r\n\"\r\n\r\n# Egg version checking, do not touch!\r\ncurrentVersion=\"4.0.0\"\r\nlatestVersion=$(curl --silent \"https:\/\/api.github.com\/repos\/EsserGaming\/scpsl-egg\/releases\/latest\" | jq -r .tag_name)\r\n\r\nif [ \"${currentVersion}\" == \"${latestVersion}\" ]; then\r\n echo \"$(tput setaf 2)Installer is up to date\"\r\nelse\r\n\r\n echo \"\r\n $(tput setaf 1)THE INSTALLER IS NOT UP TO DATE!\r\n\r\n Current Version: $(tput setaf 1)${currentVersion}\r\n Latest: $(tput setaf 2)${latestVersion}\r\n\r\n $(tput setaf 3)Please update to the latest version found here: https:\/\/github.com\/EsserGaming\/scpsl-egg\/releases\/latest\r\n$(tput setaf 4)Installation will start in 3 seconds...\r\n\r\n \"\r\n sleep 3\r\nfi\r\n\r\n# Download SteamDepotDownloader and install it.\r\ncd \/tmp || { \r\n echo \"$(tput setaf 1) FAILED TO MOUNT TO \/TMP\"\r\n exit \r\n}\r\nmkdir -p \/mnt\/server\/.DepotDownloader\r\ncurl -sSL -o DepotDownloader-linux-x64.zip https:\/\/github.com\/SteamRE\/DepotDownloader\/releases\/latest\/download\/DepotDownloader-linux-x64.zip\r\nunzip -oq DepotDownloader-linux-x64.zip -d \/mnt\/server\/.DepotDownloader\r\ncd \/mnt\/server\/.DepotDownloader || {\r\n echo \"$(tput setaf 1) FAILED TO MOUNT TO \/mnt\/server\/.DepotDownloader\"\r\n exit\r\n}\r\n\r\n# Install SCP: Secret Laboratory using SteamDepotDownloader\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\nif [ \"${BRANCH_TAG}\" == \"\" ]; then\r\n echo \"$(tput setaf 4)Installing SCP:SL..$(tput sgr0)\"\r\n .\/DepotDownloader -app 996560 -depot 996562 -dir \/mnt\/server -validate > \/dev\/null # silence output\r\n echo \"$(tput setaf 2)Done.$(tput sgr0)\"\r\nelse\r\n echo \"$(tput setaf 4)Installing SCP:SL $(tput bold)on custom branch (output enabled)..$(tput sgr0)\" \r\n .\/DepotDownloader -app 996560 -depot 996562 -branch ${BRANCH_TAG} -dir \/mnt\/server -validate # keeping this normal if debugging is needed\r\nfi\r\n\r\n# Exit if \/mnt\/server doesn't exist\r\ncd \/mnt\/server || {\r\n echo \"$(tput setaf 1) FAILED TO MOUNT TO \/mnt\/server\"\r\n exit\r\n}\r\n\r\n# Ensure permissions are correct\r\nchmod +x LocalAdmin SCPSL.x86_64\r\n\r\n#Install SCPDiscord Bot\r\nif [ \"${INSTALL_SCPDBOT}\" == \"true\" ]; then\r\n mkdir -p \/mnt\/server\/.egg\/SCPDBot\r\n # Remove old SCPDiscord bot\r\n rm \/mnt\/server\/.egg\/SCPDBot\/scpdiscord >\/dev\/null 2>&1\r\n\r\n echo \"$(tput setaf 5)Installing latest SCPDiscord Bot.\"\r\n wget -q https:\/\/github.com\/KarlOfDuty\/SCPDiscord\/releases\/latest\/download\/scpdiscord -P \/mnt\/server\/.egg\/SCPDBot\r\n chmod +x \/mnt\/server\/.egg\/SCPDBot\/scpdiscord\r\nelse\r\n echo $(tput setaf 3)\"Skipping SCPDiscord Bot install.\"$(tput sgr0)\r\nfi\r\n\r\n #Install SCPDiscord Plugin\r\n if [ \"${INSTALL_SCPDPLUGIN}\" == \"true\" ]; then\r\n rm '\/mnt\/server\/.config\/SCP Secret Laboratory\/LabAPI\/plugins\/global\/SCPDiscord.dll' >\/dev\/null 2>&1\r\n echo \"$(tput setaf 5)Installing SCPDiscord Plugin.\"\r\n\r\n echo \"$(tput setaf 5)SCPDiscord: Grabbing plugin and dependencies..\"\r\n wget -q https:\/\/github.com\/KarlOfDuty\/SCPDiscord\/releases\/latest\/download\/dependencies.zip -P '\/mnt\/server\/.config\/SCP Secret Laboratory\/LabAPI\/dependencies\/global'\r\n wget -q https:\/\/github.com\/KarlOfDuty\/SCPDiscord\/releases\/latest\/download\/SCPDiscord.dll -P '\/mnt\/server\/.config\/SCP Secret Laboratory\/LabAPI\/plugins\/global'\r\n\r\n\r\n echo \"$(tput setaf 5)SCPDiscord: Extracting dependencies..\"\r\n unzip -oq '\/mnt\/server\/.config\/SCP Secret Laboratory\/LabAPI\/dependencies\/global\/dependencies.zip' -d '\/mnt\/server\/.config\/SCP Secret Laboratory\/LabAPI\/dependencies\/global\/'\r\n rm '\/mnt\/server\/.config\/SCP Secret Laboratory\/LabAPI\/dependencies\/global\/dependencies.zip' >\/dev\/null 2>&1\r\nelse\r\n echo $(tput setaf 3)\"Skipping SCPDiscord Plugin install.\"$(tput sgr0)\r\nfi\r\n\r\n\r\n# EXILED installation\r\nif [[ \"${INSTALL_EXILED}\" == \"true\" ]]; then\r\n echo \"$(tput setaf 4)Downloading $(tput setaf 1)EXILED $(tput setaf 4)installer.\"\r\n mkdir -p .config\/\r\n rm Exiled.Installer-Linux >\/dev\/null 2>&1\r\n wget -q https:\/\/github.com\/ExMod-Team\/EXILED\/releases\/latest\/download\/Exiled.Installer-Linux\r\n chmod +x .\/Exiled.Installer-Linux\r\n\r\n if [[ \"${EXILED_PRE}\" == \"true\" ]]; then\r\n echo \"$(tput setaf 4)Installing latest $(tput setaf 1)EXILED $(tput setaf 4)pre-release..\"\r\n .\/Exiled.Installer-Linux -p \/mnt\/server\/ --pre-releases >\/dev\/null\r\n\r\n elif [[ \"${EXILED_PRE}\" == \"false\" ]]; then\r\n echo \"$(tput setaf 4)Installing latest $(tput setaf 1)EXILED $(tput setaf 4)release..\"\r\n .\/Exiled.Installer-Linux -p \/mnt\/server\/ --skip-version-select >\/dev\/null\r\n\r\n else\r\n echo \"$(tput setaf 4)Installing $(tput setaf 1)EXILED$ $(tput setaf 4)version: $(tput bold)$(tput setaf 1)${EXILED_PRE}$(tput sgr0)\"\r\n .\/Exiled.Installer-Linux -p \/mnt\/server\/ --target-version \"${EXILED_PRE}\" # un-silenced in case debugging is needed\r\n\r\n fi\r\nelse\r\n echo $(tput setaf 3)\"Skipping Exiled installation.\"$(tput sgr0)\r\nfi\r\n\r\n\r\n# Cleanup, I also silenced rm if it doesn't find the file.\r\necho \"$(tput setaf 5)Cleaning up..$(tput sgr 0)\"\r\nrm \/mnt\/server\/core >\/dev\/null 2>&1\r\nrm \/mnt\/server\/Exiled.Installer-Linux >\/dev\/null 2>&1\r\nrm \/mnt\/server\/config-gameplay.txt >\/dev\/null 2>&1\r\nrm -r \/mnt\/server\/? >\/dev\/null 2>&1\r\nrm -r \/mnt\/server\/.local >\/dev\/null 2>&1\r\n\r\necho \"$(tput setaf 2)Installation Complete!$(tput sgr 0)\"", + "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n\r\necho \"\r\n$(tput setaf 4) ____________________________ ______________\r\n$(tput setaf 4) \/ _____\/\\_ ___ \\______ \\ \/\\ \/ _____\/| |\r\n$(tput setaf 4) \\_____ \\ \/ \\ \\\/| ___\/ \\\/ \\_____ \\ | |\r\n$(tput setaf 4) \/ || \\___| | \/\\ \/ \\| |___\r\n$(tput setaf 4)\/_________\/ \\________\/____| \\\/ \/_________\/|________|\r\n$(tput setaf 1) ___ __ __ __\r\n$(tput setaf 1)| | ____ _______\/ |______ | | | | ___________\r\n$(tput setaf 1)| |\/ \\ \/ ___\/\\ __\\__ \\ | | | | _\/ __ \\_ __ |\r\n$(tput setaf 1)| | | |\\___ \\ | | \/ __ \\| |_| |_\\ ___\/| | \\\/\r\n$(tput setaf 1)|___|___|__\/______| |__| (______|____|____\/\\___ |__|\r\n$(tput sgr0)\r\n\"\r\n\r\necho \"\r\n$(tput setaf 2)This installer was created by $(tput setaf 1)Parkeymon$(tput setaf 2) and maintained by $(tput setaf 6)EsserGaming$(tput setaf 2).$(tput sgr0)\r\n\"\r\n\r\n# Download SteamDepotDownloader and install it.\r\ncd \/tmp || { \r\n echo \"$(tput setaf 1) FAILED TO MOUNT TO \/TMP\"\r\n exit \r\n}\r\nmkdir -p \/mnt\/server\/.DepotDownloader\r\ncurl -sSL -o DepotDownloader-linux-x64.zip https:\/\/github.com\/SteamRE\/DepotDownloader\/releases\/latest\/download\/DepotDownloader-linux-x64.zip\r\nunzip -oq DepotDownloader-linux-x64.zip -d \/mnt\/server\/.DepotDownloader\r\ncd \/mnt\/server\/.DepotDownloader || {\r\n echo \"$(tput setaf 1) FAILED TO MOUNT TO \/mnt\/server\/.DepotDownloader\"\r\n exit\r\n}\r\n\r\n# Install SCP: Secret Laboratory using SteamDepotDownloader\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\nif [ \"${BRANCH_TAG}\" == \"\" ]; then\r\n echo \"$(tput setaf 4)Installing SCP:SL..$(tput sgr0)\"\r\n .\/DepotDownloader -app 996560 -depot 996562 -dir \/mnt\/server -validate > \/dev\/null # silence output\r\n echo \"$(tput setaf 2)Done.$(tput sgr0)\"\r\nelse\r\n echo \"$(tput setaf 4)Installing SCP:SL $(tput bold)on custom branch (output enabled)..$(tput sgr0)\" \r\n .\/DepotDownloader -app 996560 -depot 996562 -branch ${BRANCH_TAG} -dir \/mnt\/server -validate # keeping this normal if debugging is needed\r\nfi\r\n\r\n# Exit if \/mnt\/server doesn't exist\r\ncd \/mnt\/server || {\r\n echo \"$(tput setaf 1) FAILED TO MOUNT TO \/mnt\/server\"\r\n exit\r\n}\r\n\r\n# Ensure permissions are correct\r\nchmod +x LocalAdmin SCPSL.x86_64\r\n\r\n#Install SCPDiscord Bot\r\nif [ \"${INSTALL_SCPDBOT}\" == \"true\" ]; then\r\n mkdir -p \/mnt\/server\/.egg\/SCPDBot\r\n # Remove old SCPDiscord bot\r\n rm \/mnt\/server\/.egg\/SCPDBot\/scpdiscord >\/dev\/null 2>&1\r\n\r\n echo \"$(tput setaf 5)Installing latest SCPDiscord Bot.\"\r\n wget -q https:\/\/github.com\/KarlOfDuty\/SCPDiscord\/releases\/latest\/download\/scpdiscord -P \/mnt\/server\/.egg\/SCPDBot\r\n chmod +x \/mnt\/server\/.egg\/SCPDBot\/scpdiscord\r\nelse\r\n echo $(tput setaf 3)\"Skipping SCPDiscord Bot install.\"$(tput sgr0)\r\nfi\r\n\r\n #Install SCPDiscord Plugin\r\n if [ \"${INSTALL_SCPDPLUGIN}\" == \"true\" ]; then\r\n rm '\/mnt\/server\/.config\/SCP Secret Laboratory\/LabAPI\/plugins\/global\/SCPDiscord.dll' >\/dev\/null 2>&1\r\n echo \"$(tput setaf 5)Installing SCPDiscord Plugin.\"\r\n\r\n echo \"$(tput setaf 5)SCPDiscord: Grabbing plugin and dependencies..\"\r\n wget -q https:\/\/github.com\/KarlOfDuty\/SCPDiscord\/releases\/latest\/download\/dependencies.zip -P '\/mnt\/server\/.config\/SCP Secret Laboratory\/LabAPI\/dependencies\/global'\r\n wget -q https:\/\/github.com\/KarlOfDuty\/SCPDiscord\/releases\/latest\/download\/SCPDiscord.dll -P '\/mnt\/server\/.config\/SCP Secret Laboratory\/LabAPI\/plugins\/global'\r\n\r\n\r\n echo \"$(tput setaf 5)SCPDiscord: Extracting dependencies..\"\r\n unzip -oq '\/mnt\/server\/.config\/SCP Secret Laboratory\/LabAPI\/dependencies\/global\/dependencies.zip' -d '\/mnt\/server\/.config\/SCP Secret Laboratory\/LabAPI\/dependencies\/global\/'\r\n rm '\/mnt\/server\/.config\/SCP Secret Laboratory\/LabAPI\/dependencies\/global\/dependencies.zip' >\/dev\/null 2>&1\r\nelse\r\n echo $(tput setaf 3)\"Skipping SCPDiscord Plugin install.\"$(tput sgr0)\r\nfi\r\n\r\n\r\n# EXILED installation\r\nif [[ \"${INSTALL_EXILED}\" == \"true\" ]]; then\r\n echo \"$(tput setaf 4)Downloading $(tput setaf 1)EXILED $(tput setaf 4)installer.\"\r\n mkdir -p .config\/\r\n rm Exiled.Installer-Linux >\/dev\/null 2>&1\r\n wget -q https:\/\/github.com\/ExMod-Team\/EXILED\/releases\/latest\/download\/Exiled.Installer-Linux\r\n chmod +x .\/Exiled.Installer-Linux\r\n\r\n if [[ \"${EXILED_PRE}\" == \"true\" ]]; then\r\n echo \"$(tput setaf 4)Installing latest $(tput setaf 1)EXILED $(tput setaf 4)pre-release..\"\r\n .\/Exiled.Installer-Linux -p \/mnt\/server\/ --pre-releases >\/dev\/null\r\n\r\n elif [[ \"${EXILED_PRE}\" == \"false\" ]]; then\r\n echo \"$(tput setaf 4)Installing latest $(tput setaf 1)EXILED $(tput setaf 4)release..\"\r\n .\/Exiled.Installer-Linux -p \/mnt\/server\/ --skip-version-select >\/dev\/null\r\n\r\n else\r\n echo \"$(tput setaf 4)Installing $(tput setaf 1)EXILED$ $(tput setaf 4)version: $(tput bold)$(tput setaf 1)${EXILED_PRE}$(tput sgr0)\"\r\n .\/Exiled.Installer-Linux -p \/mnt\/server\/ --target-version \"${EXILED_PRE}\" # un-silenced in case debugging is needed\r\n\r\n fi\r\nelse\r\n echo $(tput setaf 3)\"Skipping Exiled installation.\"$(tput sgr0)\r\nfi\r\n\r\n\r\n# Cleanup, I also silenced rm if it doesn't find the file.\r\necho \"$(tput setaf 5)Cleaning up..$(tput sgr 0)\"\r\nrm \/mnt\/server\/core >\/dev\/null 2>&1\r\nrm \/mnt\/server\/Exiled.Installer-Linux >\/dev\/null 2>&1\r\nrm \/mnt\/server\/config-gameplay.txt >\/dev\/null 2>&1\r\nrm -r \/mnt\/server\/? >\/dev\/null 2>&1\r\nrm -r \/mnt\/server\/.local >\/dev\/null 2>&1\r\n\r\necho \"$(tput setaf 2)Installation Complete!$(tput sgr 0)\"", "container": "ghcr.io\/ptero-eggs\/installers:debian", "entrypoint": "bash" } From 8adb3c1c7bab54ac2c8d9608db17936f4b34e62d Mon Sep 17 00:00:00 2001 From: Jonathan Esser Date: Thu, 9 Jul 2026 21:18:12 -0500 Subject: [PATCH 6/6] Add READMEs Somehow SCPSL isn't in the root readme. --- README.md | 2 ++ scpsl/README.md | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/README.md b/README.md index cd5d060f..1f2a6e0d 100644 --- a/README.md +++ b/README.md @@ -262,6 +262,8 @@ Below is a categorized list of games with links to their respective server confi #### [Romestead](./romestead) +#### [SCP: Secret Laboratory](./scpsl) + #### [SCUM](./scum) #### [Plains of Pain](./plains_of_pain) diff --git a/scpsl/README.md b/scpsl/README.md index a7f3e5b0..b898878c 100644 --- a/scpsl/README.md +++ b/scpsl/README.md @@ -9,6 +9,10 @@ This Server is NOT compatible with ServerMod2 or MultiAdmin SCP: Secret Laboratory Pterodactyl egg with Exiled Plugin Framework +## [scpsl-egg](scpsl-egg) + +SCP: Secret Laboratory Pterodactyl egg with EXILED and [SCPDiscord](https://github.com/KarlOfDuty/SCPDiscord/) support + ## Documentation Official technical documentation is available at .