{"meta":{"slug":"subnautica","name":"Subnautica","category":"subnautica_nitrox_mod","source":"pterodactyl","owner":"pterodactyl","repo":"game-eggs","branch":"main","path":"subnautica_nitrox_mod/egg-subnautica.json","rawUrl":"https://raw.githubusercontent.com/pterodactyl/game-eggs/main/subnautica_nitrox_mod/egg-subnautica.json","indexedAt":1792246788483},"egg":{"_comment":"DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO","meta":{"version":"PTDL_v2","update_url":null},"exported_at":"2026-05-20T01:14:11+10:00","name":"Subnautica","author":"ptero@redbananaofficial.com","description":"Subnautica is an open world survival action-adventure video game developed and published by Unknown Worlds Entertainment. In it, players are free to explore the ocean on an alien planet, known as planet 4546B, after their spaceship, the Aurora, crashes on the planet's surface.\r\n\r\nNote: NitroxMod version 1.8+ is required","features":["steam_disk_space"],"docker_images":{"ghcr.io/ptero-eggs/yolks:dotnet_9":"ghcr.io/ptero-eggs/yolks:dotnet_9"},"file_denylist":[],"startup":"SUBNAUTICA_INSTALLATION_PATH=/home/container/subnautica XDG_CONFIG_HOME=/home/container/.config ./nitrox/server --save nitrox_world --data-path /home/container/NitroxData","config":{"files":"{\r\n    \"NitroxData/saves/nitrox_world/server.cfg\": {\r\n        \"parser\": \"properties\",\r\n        \"find\": {\r\n            \"ServerPort\": \"{{server.build.default.port}}\",\r\n            \"SaveInterval\": \"{{server.build.env.SAVE_INTERVAL}}\",\r\n            \"DisableAutoSave\": \"{{server.build.env.SAVE_DISABLE}}\",\r\n            \"ServerPassword\": \"{{server.build.env.SUBNAUTICA_PASSWORD}}\",\r\n            \"AdminPassword\": \"{{server.build.env.SUBNAUTICA_ADMIN_PASSWORD}}\",\r\n            \"GameMode\": \"{{server.build.env.SERVER_MODE}}\",\r\n            \"AutoPortForward\": \"{{server.build.env.PORTFORWARD_ENABLE}}\",\r\n            \"SerializerMode\": \"{{server.build.env.SERIALIZER_MODE}}\",\r\n            \"MaxConnections\": \"{{server.build.env.MAX_CONNECTIONS}}\",\r\n            \"DefaultPlayerPerm\": \"{{server.build.env.DEFAULT_PERMISSION}}\",\r\n            \"DisableConsole\": \"{{server.build.env.DISABLE_CONSOLE}}\"\r\n        }\r\n    }\r\n}","startup":"{\r\n    \"done\": \"Server started\"\r\n}","logs":"{}","stop":"^C"},"scripts":{"installation":{"script":"#!/bin/bash\r\n# Installation Script for Subnautica + Nitrox\r\n\r\n# Install dependencies\r\ndpkg --add-architecture i386\r\napt update\r\napt -y --no-install-recommends install curl jq unzip libstdc++6 ca-certificates libsdl2-2.0-0:i386\r\n\r\n# Resolve Nitrox download URL (latest or pinned NITROX_VERSION)\r\nGITHUB_PACKAGE=\"SubnauticaNitrox/Nitrox\"\r\ncase \"$(uname -m)\" in\r\n  aarch64|arm64) ARCH_TAG=\"linux_arm64\" ;;\r\n  *) ARCH_TAG=\"linux_x64\" ;;\r\nesac\r\n\r\nif [ -z \"${NITROX_VERSION}\" ] || [ \"${NITROX_VERSION}\" = \"latest\" ]; then\r\n    RELEASE_JSON=$(curl -fsSL \"https://api.github.com/repos/${GITHUB_PACKAGE}/releases/latest\")\r\nelse\r\n    ALL_RELEASES=$(curl -fsSL \"https://api.github.com/repos/${GITHUB_PACKAGE}/releases\")\r\n    RELEASE_JSON=$(printf '%s' \"${ALL_RELEASES}\" | jq -c --arg v \"${NITROX_VERSION}\" '.[] | select(.tag_name == $v)')\r\n    if [ -z \"${RELEASE_JSON}\" ]; then\r\n        echo \"Nitrox version ${NITROX_VERSION} not found; falling back to latest\"\r\n        RELEASE_JSON=$(curl -fsSL \"https://api.github.com/repos/${GITHUB_PACKAGE}/releases/latest\")\r\n    fi\r\nfi\r\n\r\nDOWNLOAD_URL=$(printf '%s' \"${RELEASE_JSON}\" | jq -r --arg arch \"${ARCH_TAG}\" '.assets[] | select(.name | test($arch; \"i\")) | .browser_download_url' | head -n1)\r\n\r\nif [ -z \"${DOWNLOAD_URL}\" ] || [ \"${DOWNLOAD_URL}\" = \"null\" ]; then\r\n    echo \"Could not determine Nitrox download URL for ${ARCH_TAG}\"\r\n    printf '%s' \"${RELEASE_JSON}\" | jq '.assets[] | {name, browser_download_url}'\r\n    exit 1\r\nfi\r\n\r\n# Install SteamCMD\r\nmkdir -p /mnt/server/steamcmd\r\ncd /tmp\r\ncurl -fsSL -o steamcmd.tar.gz https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz\r\ntar -xzf steamcmd.tar.gz -C /mnt/server/steamcmd\r\ncd /mnt/server/steamcmd\r\n\r\nchown -R root:root /mnt\r\nexport HOME=/mnt/server\r\n\r\nif [ -z \"${STEAM_GUARDCODE}\" ]; then\r\n    echo \"### No Steam Guard code provided.\"\r\n    echo \"### One should be emailed to you shortly; set STEAM_GUARDCODE and reinstall.\"\r\n    sleep 5\r\n    timeout 60 ./steamcmd.sh +force_install_dir \"${HOME}/subnautica\" +login \"${STEAM_USERNAME}\" \"${STEAM_PASSWORD}\" +quit\r\n    exit 1\r\nfi\r\n\r\nmkdir -p \"${HOME}/subnautica\"\r\n./steamcmd.sh +force_install_dir \"${HOME}/subnautica\" +@sSteamCmdForcePlatformType windows +set_steam_guard_code \"${STEAM_GUARDCODE}\" +login \"${STEAM_USERNAME}\" \"${STEAM_PASSWORD}\" +app_update \"${APPID}\" ${EXTRA_FLAGS} validate +quit\r\nstatus=$?\r\n\r\nif [ $status -ne 0 ]; then\r\n    echo \"### Subnautica download failed (likely a bad/expired Steam Guard code).\"\r\n    echo \"### A new code should arrive shortly; update STEAM_GUARDCODE and reinstall.\"\r\n    sleep 5\r\n    timeout 30 ./steamcmd.sh +force_install_dir \"${HOME}/subnautica\" +login \"${STEAM_USERNAME}\" \"${STEAM_PASSWORD}\" +quit\r\n    exit 1\r\nfi\r\n\r\nmkdir -p \"${HOME}/.steam/sdk32\" \"${HOME}/.steam/sdk64\"\r\ncp -v linux32/steamclient.so \"${HOME}/.steam/sdk32/steamclient.so\"\r\ncp -v linux64/steamclient.so \"${HOME}/.steam/sdk64/steamclient.so\"\r\n\r\nrm -rf \"${HOME}/nitrox\"\r\nmkdir -p \"${HOME}/nitrox\"\r\ncd \"${HOME}/nitrox\"\r\ncurl -fsSL \"${DOWNLOAD_URL}\" -o Nitrox.zip\r\nunzip -q Nitrox.zip\r\nrm Nitrox.zip\r\nif [ \"$(find . -mindepth 1 -maxdepth 1 | wc -l)\" = \"1\" ]; then\r\n    WRAPPER=$(find . -mindepth 1 -maxdepth 1 -type d)\r\n    if [ -n \"${WRAPPER}\" ]; then\r\n        mv \"${WRAPPER}\"/* \"${WRAPPER}\"/.[!.]* . 2>/dev/null || true\r\n        rmdir \"${WRAPPER}\"\r\n    fi\r\nfi\r\nif [ -f \"${HOME}/nitrox/Nitrox.Server.Subnautica\" ]; then\r\n    ln -sf Nitrox.Server.Subnautica \"${HOME}/nitrox/server\"\r\nelse\r\n    ln -sf NitroxServer-Subnautica \"${HOME}/nitrox/server\"\r\nfi\r\nchmod +x \"${HOME}/nitrox/server\" 2>/dev/null || true\r\n\r\nmkdir -p \"${HOME}/.config\"\r\n\r\nmkdir -p \"${HOME}/NitroxData/saves/nitrox_world\"\r\nCFG=\"${HOME}/NitroxData/saves/nitrox_world/server.cfg\"\r\nif [ ! -e \"${CFG}\" ]; then\r\n    {\r\n        echo \"CreateFullEntityCache=False\"\r\n        echo \"Seed=\"\r\n        echo \"ServerPort=11000\"\r\n        echo \"SaveInterval=120000\"\r\n        echo \"PostSaveCommandPath=\"\r\n        echo \"MaxConnections=${MAX_CONNECTIONS}\"\r\n        echo \"InitialSyncTimeout=300000\"\r\n        echo \"DisableConsole=${DISABLE_CONSOLE}\"\r\n        echo \"DisableAutoSave=False\"\r\n        echo \"ServerPassword=\"\r\n        echo \"AdminPassword=PleaseChangeMe\"\r\n        echo \"GameMode=SURVIVAL\"\r\n        echo \"SerializerMode=JSON\"\r\n        echo \"DefaultPlayerPerm=${DEFAULT_PERMISSION}\"\r\n        echo \"DefaultOxygenValue=45\"\r\n        echo \"DefaultMaxOxygenValue=45\"\r\n        echo \"DefaultHealthValue=80\"\r\n        echo \"DefaultHungerValue=50.5\"\r\n        echo \"DefaultThirstValue=90.5\"\r\n        echo \"DefaultInfectionValue=0.1\"\r\n        echo \"AutoPortForward=False\"\r\n    } > \"${CFG}\"\r\nfi","container":"ghcr.io/ptero-eggs/installers:debian","entrypoint":"bash"}},"variables":[{"name":"Steam App ID","description":"The ID corresponding to the game to download.","env_variable":"APPID","default_value":"264710","user_viewable":false,"user_editable":false,"rules":"required|numeric|digits_between:1,6","field_type":"text"},{"name":"Steam Username","description":"Your Steam account username","env_variable":"STEAM_USERNAME","default_value":"","user_viewable":true,"user_editable":true,"rules":"required|string|max:64","field_type":"text"},{"name":"Steam Password","description":"Your Steam account password","env_variable":"STEAM_PASSWORD","default_value":"","user_viewable":true,"user_editable":true,"rules":"required|string|max:64","field_type":"text"},{"name":"Steam Guard Code","description":"Your Steam Guard Code","env_variable":"STEAM_GUARDCODE","default_value":"","user_viewable":true,"user_editable":true,"rules":"nullable|string|max:8","field_type":"text"},{"name":"Nitrox Version","description":"Which version of Nitrox to install and use. Use the version e.g. 1.8.1.0 or latest for the newest release","env_variable":"NITROX_VERSION","default_value":"latest","user_viewable":true,"user_editable":true,"rules":"required|string|between:3,12","field_type":"text"},{"name":"Auto Save Interval","description":"Time between auto saves specified in milliseconds. Default is 2 minutes (120000ms).","env_variable":"SAVE_INTERVAL","default_value":"120000","user_viewable":true,"user_editable":true,"rules":"required|numeric|digits_between:6,7","field_type":"text"},{"name":"Disable Auto Save","description":"Disables Auto Save: False / True","env_variable":"SAVE_DISABLE","default_value":"False","user_viewable":true,"user_editable":true,"rules":"required|string|in:True,False","field_type":"text"},{"name":"Save Name","description":"The save name for the server.","env_variable":"SAVE_NAME","default_value":"nitrox_world","user_viewable":true,"user_editable":false,"rules":"alpha_dash|between:1,100","field_type":"text"},{"name":"Server Password","description":"Password neccessary for connecting to the Server","env_variable":"SUBNAUTICA_PASSWORD","default_value":"","user_viewable":true,"user_editable":true,"rules":"nullable|string|between:3,12","field_type":"text"},{"name":"Admin Password","description":"If specified, players must provide this password to gain access to administrator commands on the server.","env_variable":"SUBNAUTICA_ADMIN_PASSWORD","default_value":"PleaseChangeMe","user_viewable":true,"user_editable":true,"rules":"required|string|between:3,16","field_type":"text"},{"name":"Game Mode","description":"Subnautica game mode. SURVIVAL = manage food/water/oxygen. FREEDOM = no survival meters. HARDCORE = permadeath survival. CREATIVE = unlimited resources, no damage.","env_variable":"SERVER_MODE","default_value":"SURVIVAL","user_viewable":true,"user_editable":true,"rules":"required|string|in:SURVIVAL,FREEDOM,HARDCORE,CREATIVE","field_type":"text"},{"name":"Auto Portforward via UPnP","description":"If set to true, the server will try to open port on your router via UPnP","env_variable":"PORTFORWARD_ENABLE","default_value":"False","user_viewable":false,"user_editable":false,"rules":"required|string|in:True,False","field_type":"text"},{"name":"Serializer Mode","description":"Switch between savegame formats.\r\nPossible values: PROTOBUF, JSON","env_variable":"SERIALIZER_MODE","default_value":"JSON","user_viewable":false,"user_editable":false,"rules":"required|string|in:PROTOBUF,JSON","field_type":"text"},{"name":"Max Players","description":"Maximum number of players that can be connected simultaneously. Nitrox alpha is generally tested up to ~10; higher counts work but stability varies. (200 max)","env_variable":"MAX_CONNECTIONS","default_value":"10","user_viewable":true,"user_editable":true,"rules":"required|numeric|between:1,200","field_type":"text"},{"name":"Default Player Permissions","description":"Permission level new players are assigned when they first join. NONE = guest (no commands). PLAYER = standard. MODERATOR = can kick. ADMIN = full server control. CONSOLE = reserved for server console.","env_variable":"DEFAULT_PERMISSION","default_value":"PLAYER","user_viewable":true,"user_editable":true,"rules":"required|string|in:NONE,PLAYER,MODERATOR,ADMIN,CONSOLE","field_type":"text"},{"name":"Disable In-Game Console","description":"Set to True to disable the in-game developer console for connected players. Leave False for normal use.","env_variable":"DISABLE_CONSOLE","default_value":"False","user_viewable":true,"user_editable":true,"rules":"required|string|in:True,False","field_type":"text"}]},"readme":"# Subnautica: Nitrox Mod\n\nSubnautica is an open world survival action-adventure video game developed and published by Unknown Worlds Entertainment.\nIn it, players are free to explore the ocean on an alien planet, known as planet 4546B, after their spaceship, the Aurora, crashes on the planet's surface.\nThe multiplayer function is provided by the mod \"Nitrox\". This mod is still in alpha version and therefore not yet fully stable.\n\n## Requirements\n\n- **Nitrox 1.8+** — older versions are not supported by this egg.\n- A Steam account that owns Subnautica. The account must use **email-based** Steam Guard; the authenticator app is not supported by SteamCMD's `+set_steam_guard_code` flow.\n\n## Steam Guard install flow\n\nSteam Guard codes are single-use and expire quickly.\n\n1. Trigger the first install with `STEAM_GUARDCODE` blank. SteamCMD's login will fail and Steam will email a fresh code to the account owner.\n2. Paste that code into the `Steam Guard Code` variable on the server's Startup page.\n3. **Reinstall** the server — the install script consumes the code and downloads Subnautica.\n4. Clear the `Steam Guard Code` field after the install succeeds; it's not needed on subsequent boots.\n\n## Server Ports\n\nNitrox uses a single UDP port. Pterodactyl's default allocation is assigned automatically.\n\n| Port   | Default | Protocol |\n|--------|---------|----------|\n| Server | any     | UDP      |\n\nMake sure the allocation includes UDP. Nitrox 1.8 removed the old \"must be ≥1024\" port restriction, so any free port the node allows is fine.\n\n## Save folder\n\nThe save folder is hardcoded to `nitrox_world` (visible in the `Save Name` variable as read-only). Files live under `NitroxData/saves/nitrox_world/`. The `Save Name` variable is locked because Pterodactyl's config-file parser does not template variables inside file paths — changing it would break the panel's ability to manage `server.cfg`.\n\n## Configuration\n\nThe egg manages these `server.cfg` keys from variables (no need to hand-edit unless you want options the egg doesn't expose):\n\n- `ServerPort` (from the panel's allocation)\n- `SaveInterval`, `DisableAutoSave`\n- `ServerPassword`, `AdminPassword`\n- `GameMode`, `SerializerMode`\n- `MaxConnections`, `DefaultPlayerPerm`, `DisableConsole`\n- `AutoPortForward`\n\nThe full `server.cfg` lives at `NitroxData/saves/nitrox_world/server.cfg`. Editable through the panel file manager when the server is stopped. Other Nitrox config keys not exposed as variables can be edited directly there.\n\n## Known limitations\n\n- **In-game console is not interactive from the panel console.** Typing `/op`, `/kick`, etc. into Pterodactyl's web console will not reach Nitrox. This is upstream — Nitrox's `ConsoleInputService` requires raw-mode terminal behaviour that Pterodactyl Wings' TTY doesn't currently provide. A yolks-level wrapper is being tracked in the Pterodactyl community. The server itself works fine; admin commands must currently be issued in-game by a player with admin permissions.\n- **Graceful stop uses SIGINT, not the `stop` console command.** Consequence of the above. Pterodactyl's Stop button still works — the egg's stop configuration is set to `^C`, which .NET Generic Host catches and converts into a clean save + shutdown.\n\n## Updating Nitrox\n\nSet the `Nitrox Version` variable to `latest` (default) and reinstall to pull the newest release. Pin to a specific tag (e.g. `1.8.1.0`) if you need to lock the version — see [Nitrox releases](https://github.com/SubnauticaNitrox/Nitrox/releases) for tags.\n"}