Docker image and compose setup for running Foundry Virtual Tabletop. You must already own a valid Foundry VTT license to obtain the application archive.
- Docker Hub: https://hub.docker.com/repository/docker/jignate/vtt
- Default container port: 30000 (mapped in compose)
- Persistent data directory: mounted at
/datainside the container
- Docker and Docker Compose v2
- A licensed copy of Foundry VTT (download the
FoundryVTT-Node-13.<build>.ziparchive from your Foundry account)
- Place
FoundryVTT-Node-13.<build>.zipin the repo root (next to theDockerfile). - Build with your desired Foundry and Node versions:
docker build . \ --pull \ --build-arg VERSION=Node-13.<build> \ --build-arg NODE_VERSION=22-alpine \ --tag vtt:13.<build> \ --tag vtt:13
VERSIONmust match the archive name (e.g.,Node-13.351).NODE_VERSIONdefaults to22-alpine; override if you need a different base.- Add
--build-arg COPY_DIR=/resources/appif building version 12 and under
- Copy
docker-compose.ymlto the directory where you want to run Foundry and rename tocompose.yml. - For each service you enable:
- Set a unique host port on the left side of
ports(e.g.,30013:30000). - Point
volumesto a unique local data folder on the left side (e.g.,C:/path/to/vtt/13:/data).
- Set a unique host port on the left side of
- Start the stack:
docker compose up --pull always --force-recreate --detach
docker run -d \
-p 30013:30000 \
-v C:/path/to/vtt/13:/data \
--name vtt-13 \
jignate/vtt:13- All worlds, modules, and configs live in the mounted
/datavolume; back this up before upgrading. - To upgrade Foundry, rebuild (or pull) the image with the new
VERSIONand restart the container pointing at the same data directory.
- Foundry VTT is proprietary; do not redistribute the archive.
- If you change the container port, also adjust the
EXPOSE/portsmapping accordingly.