Foundry VTT Updated April 27, 2026

Deploying Foundry VTT on a WISP/Pterodactyl Panel

Step-by-step guide to installing and configuring Foundry VTT using a Pterodactyl or WISP panel egg, including startup variables and Timed URL activation.

Foundry VTTPterodactylWISPpanelegg

Overview

Pterodactyl and WISP panels manage Foundry VTT through a pre-built "egg" — a JSON configuration that defines how the server is installed, started, and configured. This guide covers the standard Foundry egg variables, the Timed URL activation flow, and important paths inside the container.

Getting the Foundry Egg

The official community egg is available from:

  • pterodactyleggs.com (search "Foundry VTT")
  • github.com/pelican-eggs (open-source Pelican/Pterodactyl eggs repository)

Import the egg JSON through your panel's Admin → Nests → Import Egg interface.

Container File Layout

Inside the container, Foundry uses the following paths:

/home/container/
  main.mjs              ← Foundry application entry point
  public/               ← static assets
  resources/            ← application resources
  data/                 ← user data directory (worlds, modules, config)
    Config/
      options.json
      admin.txt
    Data/
      worlds/
      systems/
      modules/
    Logs/

The data/ subdirectory is your persistent data volume. Application files are reinstalled from the Timed URL on each server reinstall. Never delete data/.

Startup Variables

The egg exposes these key variables. Configure them in the panel's Startup tab for your server:

Variable Description Example
FOUNDRY_PORT TCP port Foundry listens on 30000
FOUNDRY_DATA_PATH Path to data directory inside container /home/container/data
FOUNDRY_TIMED_URL Time-limited download/activation URL from foundryvtt.com (generated per-install)
NODE_VERSION Node.js version to install 24 (for Foundry v14)

Startup Command

The egg's startup command is typically:

node main.mjs --dataPath=/home/container/data --port={{FOUNDRY_PORT}}

Do not modify this unless you understand the implications. The --dataPath and --port flags override any values in options.json.

First-Time Installation

1. Generate a Timed URL:

  • Log in at foundryvtt.com
  • Go to your account profile → Purchased Licenses
  • Find the "Node.js" section and click "Generate Timed URL"
  • Copy the URL — it expires in approximately one hour

2. Set egg variables:

In your panel, navigate to your server → Startup tab and set:

  • FOUNDRY_TIMED_URL to the URL you just generated
  • NODE_VERSION to the required version for your Foundry release (e.g., 24 for v14)
  • FOUNDRY_PORT to the port allocated for your server
  • FOUNDRY_DATA_PATH to /home/container/data

3. Reinstall the server:

In the panel, go to Settings → Reinstall. This triggers the egg's install script, which uses the Timed URL to download and set up Foundry.

4. Start the server:

Use the Start button. Watch the console output for:

Foundry Virtual Tabletop - Server started and listening on port 30000

5. Activate the license:

Open a browser and navigate to http://<server-ip>:<port>. If the egg handled activation automatically via the Timed URL, you may land directly on the Setup menu. If the license screen appears, enter your license key manually. See Activating Your Foundry VTT License.

Node.js Version Management

The egg installs Node.js at the version specified by NODE_VERSION. When upgrading Foundry to a new major version that requires a newer Node.js:

  1. Update the NODE_VERSION variable in the Startup tab
  2. Generate a new Timed URL
  3. Update FOUNDRY_TIMED_URL
  4. Reinstall the server (application files only — data/ is preserved)

Backups in Panel Environments

Use the panel's built-in backup feature for container snapshots, or configure the panel's schedule feature to run:

tar -czf /tmp/foundry-data-$(date +%Y%m%d).tar.gz /home/container/data/