Shell-Eggs Docs · Install

Install the egg

One egg JSON, one Docker image, every shell. Import it into any panel - or skip the panel and run the image directly. Credentials (SHELL_USERS) are the only mandatory input.

The same five steps work on Pterodactyl, Pelican, Feather and Wisp:

  1. 01Download the egg JSON. Grab egg-shell-multi.json from the repo (or let the panel pull it from the raw update_url).
  2. 02Import into your nest. Pterodactyl/Pelican: Admin → Nests → Import Egg. Feather/Wisp: paste or upload the same JSON.
  3. 03Pick the Docker image. ghcr.io/potenfyr-studios/shell-eggs:latest - one universal image carries every shell type.
  4. 04Allocate the primary port. That is all the egg needs. Extra ported shells get extra panel ports via SHELL_EXTRA_PORTS.
  5. 05Set the users. Shell Usernames = alice,bob. Leave Shell User Passwords as auto and secrets are generated for you.
  6. 06Start. SHELL_TYPE=auto (default) opens the interactive paginated picker in the console; pick any shell with your keyboard.

Egg JSON: egg-shell-multi.json · raw (update_url): raw.githubusercontent.com/.../master/egg-shell-multi.json

Docker images

ImageContents
ghcr.io/potenfyr-studios/shell-eggs:latestUniversal Multi-Shell (All Types) - every tool the catalog needs: sshd, dropbear, telnetd, mosh, tmux/screen/zellij, socat/ncat/nc, python, php, node, perl, ruby, lua, go, java, powershell, ttyd, gotty and the debug harnesses.

Multi-arch (amd64 + arm64), rebuilt on every push - GHCR package.

Startup command

The egg's startup command boots the entrypoint from the image, the server dir, or - as a last resort - fetches it from the repo, so old installs self-bootstrap:

if [ -f /entrypoint.sh ]; then exec bash /entrypoint.sh; elif [ -f /usr/local/bin/entrypoint.sh ]; then exec bash /usr/local/bin/entrypoint.sh; elif [ -f ./entrypoint.sh ]; then exec bash ./entrypoint.sh; else curl -fsSL https://raw.githubusercontent.com/PotenFYR-Studios/Shell-Eggs/master/entrypoint.sh | exec bash; fi

It is preconfigured in the egg JSON - you never type it. Self-update defaults to the raw egg on master (EGG_UPDATE_URL, AUTO_UPDATE_EGG=1).

After the first boot

  • Generated credentials are printed once on the console and persisted to .env and .sh-users/credentials (mode 600).
  • SHELL_TYPE=auto opens the interactive paginated picker in the console.
  • Every boot prints the connection guide for the shell you chose - the same content as the family pages.

24 variables in the egg JSON · updated automatically on every build via docs/scripts/sync-data.ts.