Can You Host Foundry VTT on an Ubuntu Server? Complete 2026 Guide
Can You Host Foundry VTT on an Ubuntu Server? Complete 2026 Guide
Yes. You can host Foundry Virtual Tabletop on an Ubuntu server, and a small VPS is often a better home for a regular campaign than the Game Master's laptop. The server stays reachable between sessions, players use an ordinary web browser, and the GM keeps control of worlds, modules, assets, and backups.
The recommended dedicated-server build of the foundry virtual tabletop software runs on Node.js without the desktop interface. This guide installs that build under a restricted Linux account, keeps it alive with systemd, and puts Nginx and HTTPS in front of it. It also explains licensing, capacity planning, modules, upgrades, and when a LightNode server makes sense.
Short answer: use Ubuntu 22.04 or 24.04, 2 GB RAM for a modest world or 4 GB for a busier module-heavy campaign, the Node.js release required by your Foundry version, a domain, and a valid Foundry license. Expose only ports 80 and 443. Keep Foundry's port 30000 on localhost.
Why run Foundry VTT on Ubuntu?
Foundry is a web application even when it runs inside the desktop client. On a dedicated Ubuntu host, the Node process serves the game while Nginx handles public connections. That separation makes the deployment predictable and removes home-router port forwarding, dynamic residential IP addresses, and the risk that a sleeping laptop ends the session.
Ubuntu is supported by Foundry's current server requirements, has long-term-support releases, and includes systemd, UFW, Nginx, and Certbot in familiar packages. Root access also lets you schedule off-site backups and monitor the process. The trade-off is responsibility: a self-managed VPS does not patch itself, verify backups, or troubleshoot an incompatible module for you.
Practical server sizing
Foundry is not usually CPU intensive in the same way as a physics-heavy game server. Asset delivery, database activity, active modules, and audio or video features can still change the load sharply.
| Campaign profile | Starting size | Notes |
|---|---|---|
| 3 to 6 players, compressed maps, few modules | 1 vCPU, 2 GB RAM | Suitable for a small private world |
| 6 to 10 players, automation and larger scenes | 2 vCPU, 4 GB RAM | Better working margin for modules and updates |
| Several large worlds or heavy media use | 4 vCPU, 8 GB RAM | Measure memory and disk I/O before scaling |
Fifty gigabytes of SSD storage is comfortable for many campaigns, but high-resolution maps, animated backgrounds, music, and backups can fill it quickly. Uploading a 30 MB scene to eight players also sends roughly 240 MB from the server before caching. Choose a region near the players, compress images to WebP or AVIF where practical, and do not treat storage capacity as a substitute for a backup.
When LightNode fits a Foundry server
For a self-managed deployment, LightNode Ubuntu VPS is a practical option when the group needs a location outside the usual North American and Western European regions. Its current Ubuntu page lists a 1 vCPU, 2 GB RAM, 50 GB NVMe plan from $7.71 per month, plus hourly billing and more than 40 locations. Those specifications are enough to start a modest Foundry world, while the 2 vCPU and 4 GB plan gives module-heavy games more headroom.
LightNode is infrastructure, not managed Foundry hosting. You receive root access and an Ubuntu instance, but you still install Foundry, secure SSH, configure DNS and HTTPS, and maintain backups. Hourly billing is useful for a test migration, although an always-on campaign should be budgeted at the monthly equivalent. Check the live region, resource, traffic, and price details before ordering because availability can change.
What you need before installation
Prepare the following:
- an Ubuntu 22.04 or 24.04 server with a public IPv4 address;
- a sudo-capable administrator account secured with an SSH key;
- a domain or subdomain such as
foundry.example.comwith anArecord pointed at the server; - a valid foundry virtual tabletop software license;
- the temporary download URL for the Node.js build from your Foundry account.
Foundry V13 requires Node.js 22 or newer, while Foundry V14 requires Node.js 24 or newer according to the current official installation guide. Check the requirement for the exact Foundry release you intend to run. Module and game-system compatibility often lags behind a new core release, so the newest build is not automatically the right production build.
Step 1: prepare and secure Ubuntu
Connect by SSH, install updates, and add the required packages:
sudo apt update
sudo apt upgrade -y
sudo apt install -y unzip curl nginx ufw certbot python3-certbot-nginxCreate a service account with no interactive login, plus separate application and user-data directories:
sudo useradd --system --create-home --home-dir /home/foundry \
--shell /usr/sbin/nologin foundry
sudo install -d -o root -g root -m 0755 /opt/foundryvtt
sudo install -d -o foundry -g foundry -m 0750 /srv/foundrydataEnable the firewall only after allowing SSH. If SSH uses a custom port, allow that port instead of the OpenSSH profile.
sudo ufw allow OpenSSH
sudo ufw allow 'Nginx Full'
sudo ufw enable
sudo ufw status verboseDo not open TCP 30000 publicly. Nginx will reach it over the loopback interface, so the Foundry process does not need direct internet exposure.
Step 2: install the correct Node.js runtime
Ubuntu's default repositories may not contain the major Node.js version required by the selected Foundry release. One reproducible approach is to install Node through NodeSource. The following example uses Node.js 24 for Foundry V14:
curl -fsSL https://deb.nodesource.com/setup_24.x -o /tmp/nodesource_setup.sh
sudo -E bash /tmp/nodesource_setup.sh
sudo apt install -y nodejs
node --versionFor a V13 deployment, change setup_24.x to setup_22.x. Read a third-party repository script before running it as root, or install Node from a distribution or package source your organization already trusts.
Step 3: download and install Foundry
Sign in to the Foundry website, open Purchased Licenses, select the intended release and the Node.js build, then generate a timed URL. The link expires after a few minutes. Downloading requires a licensed account, which is why a search for foundry virtual tabletop free download should not lead to an unofficial mirror.
On the server, use the timed URL without publishing it in shell transcripts, tickets, or public repositories:
cd /tmp
curl -L "PASTE-YOUR-TIMED-FOUNDRY-URL-HERE" -o foundryvtt.zip
sudo unzip -q foundryvtt.zip -d /opt/foundryvtt
sudo chown -R root:root /opt/foundryvtt
sudo chmod -R a=rX /opt/foundryvttTest the server under its dedicated account:
sudo -u foundry /usr/bin/node /opt/foundryvtt/main.js \
--dataPath=/srv/foundrydata --port=30000Open http://SERVER_IP:30000 only for this local test if the provider firewall permits it, accept the EULA, and enter the license key. A safer alternative is an SSH tunnel:
ssh -L 30000:127.0.0.1:30000 your-admin@SERVER_IPThen browse to http://127.0.0.1:30000 on your computer. Stop the foreground process with Ctrl+C after activation.
Step 4: run Foundry as a systemd service
Create /etc/systemd/system/foundryvtt.service with the following content:
[Unit]
Description=Foundry Virtual Tabletop
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=foundry
Group=foundry
WorkingDirectory=/opt/foundryvtt
ExecStart=/usr/bin/node /opt/foundryvtt/main.js --dataPath=/srv/foundrydata --port=30000
Restart=on-failure
RestartSec=5
NoNewPrivileges=true
PrivateTmp=true
ProtectHome=true
ProtectSystem=strict
ReadWritePaths=/srv/foundrydata
[Install]
WantedBy=multi-user.targetLoad and start it:
sudo systemctl daemon-reload
sudo systemctl enable --now foundryvtt
sudo systemctl status foundryvtt --no-pager
sudo journalctl -u foundryvtt -n 100 --no-pagerConfirm that it listens only where expected. If the first line shows 0.0.0.0:30000, UFW should still block direct public access, but binding to loopback in Foundry's configuration is preferable when the selected release supports it.
sudo ss -lntp | grep 30000Step 5: add Nginx and HTTPS
Create /etc/nginx/sites-available/foundryvtt:
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
server {
listen 80;
listen [::]:80;
server_name foundry.example.com;
client_max_body_size 100M;
location / {
proxy_pass http://127.0.0.1:30000;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_read_timeout 300s;
}
}Enable the site and validate the configuration:
sudo ln -s /etc/nginx/sites-available/foundryvtt \
/etc/nginx/sites-enabled/foundryvtt
sudo nginx -t
sudo systemctl reload nginxAfter the DNS record resolves to the server, request a Let's Encrypt certificate:
sudo certbot --nginx -d foundry.example.com
sudo certbot renew --dry-runEdit /srv/foundrydata/Config/options.json after stopping Foundry. Preserve the other generated settings and set the public hostname and proxy values:
{
"hostname": "foundry.example.com",
"port": 30000,
"proxyPort": 443,
"proxySSL": true,
"sslCert": null,
"sslKey": null,
"upnp": false
}The actual file contains more keys than this excerpt. Do not replace the complete file with the excerpt. Restart Foundry after editing it:
sudo systemctl restart foundryvttHTTPS protects login credentials and is required by browsers for camera and microphone capture. The Foundry TLS documentation confirms that proxySSL should be enabled when Nginx or another reverse proxy terminates TLS.
Backups, upgrades, and recovery
The application directory and the user-data directory have different jobs. /opt/foundryvtt contains replaceable program files. /srv/foundrydata contains configuration, worlds, systems, modules, uploaded assets, and the license state. Back up the second directory before every core, system, or module update.
Stop Foundry so its databases are consistent, create an archive, and start it again:
sudo systemctl stop foundryvtt
sudo tar -C /srv -czf "/var/backups/foundrydata-$(date +%F-%H%M).tar.gz" \
foundrydata
sudo systemctl start foundryvttCopy that archive to another provider or local machine. A snapshot and a backup stored on the same VPS can both disappear during an account, disk, or regional failure. Retain several generations and perform a test restoration.
For a core upgrade, back up data, stop the service, download the matching Node build to a new directory such as /opt/foundryvtt-14.x, and test it against a copy of the data. Change the systemd path only after the world, game system, and required modules work. This side-by-side method makes rollback much safer than overwriting the live application folder.
Modules in 2026: compatibility matters more than quantity
People searching for the Best Foundry modules 2026 often find long lists that ignore core-version and game-system compatibility. Start with a specific problem, then check the module's verified Foundry version, latest update, dependencies, and issue tracker. Install through Foundry's Add-on Modules browser or a trusted manifest URL. Test upgrades on a copy of the world.
Useful categories include token controls, encounter automation, calendars, journals, visual effects, and content importers. The right choice depends on the system. A D&D 5e automation stack can be pointless or actively disruptive in Pathfinder 2e, whose system package already automates many rules. Fewer well-maintained modules usually produce a more stable campaign than a large collection with overlapping hooks.
Export or record the active module list before major changes. If a world fails after an update, start in safe mode, disable modules, and re-enable them in small groups. Read the browser console and journalctl output instead of repeatedly restarting the service.
Licensing, free downloads, and discount codes
The official Foundry purchase page lists the individual license at $50 USD before applicable tax. It is a perpetual license with future core updates, and only the host needs to purchase it. Players connect in a browser without buying their own copy.
A foundry virtual tabletop software license may be installed on more than one machine, but the EULA permits only one instance per license to be accessible to other users at a time. A private test instance used only by the owner can coexist with the public game server under the conditions explained in Foundry's licensing FAQ.
Be skeptical of a page advertising a foundry virtual tabletop free download. Foundry's server archive is downloadable after purchase and must not be redistributed. Free demo access, free community systems, and free modules do not make the host software free.
For a Foundry discount code, use only a code shown by Foundry or an authorized promotion. Foundry's FAQ says eligible current or former Patreon supporters may receive a supporter discount based on lifetime support, and temporary official sales sometimes occur. Coupon sites often list expired or invented codes, so verify the final price on Foundry's checkout page.
Troubleshooting common Ubuntu hosting problems
If the page does not load, inspect each layer in order:
sudo systemctl status foundryvtt nginx --no-pager
sudo journalctl -u foundryvtt -n 100 --no-pager
curl -I http://127.0.0.1:30000
sudo nginx -t
sudo ufw status verboseAn HTTP response from localhost but a public timeout points to Nginx, UFW, the provider firewall, or DNS. A 502 Bad Gateway usually means Nginx is running but Foundry is stopped, listening on another port, or failing during startup. WebSocket disconnects often come from missing Upgrade and Connection proxy headers.
If the service exits after a core upgrade, compare node --version with that Foundry release's requirement. If only one world fails, suspect its game system, a module, or migrated data before changing the network. Watch memory with systemctl status, free -h, and journalctl -k; an out-of-memory kill is different from a JavaScript exception.
Is Ubuntu hosting the right choice?
An Ubuntu VPS is a good fit for a GM who wants a permanent URL, root access, off-site backup automation, and control over the Foundry version. It is less suitable for someone who does not want to maintain Linux or respond when a certificate, package update, or module breaks. In that case, an official Foundry hosting partner trades operating-system control for a managed panel and support.
For many groups, a 2 vCPU and 4 GB server is the sensible middle ground. Start smaller only when the world is light and the player count is low. Measure first, then resize. Foundry performance problems are often oversized media or conflicting modules rather than a shortage of CPU cores.
FAQ
How to enable Foundry Virtual Tabletop in Scrivener?
There is no native Foundry switch or official Foundry VTT integration inside Scrivener. Use Scrivener to draft and organize campaign material, export selected documents as Markdown, HTML, PDF, or plain text, and then copy or import the material into Foundry Journal Entries or a custom content module. Keep one application as the source of truth so edits do not diverge. If the phrase refers to a Scrivener add-on, verify its exact name and publisher before installing it.
How much does a Foundry Virtual Tabletop cost?
The individual license currently costs $50 USD plus applicable tax as a one-time purchase. Core updates are included. Players do not need licenses. VPS rental, a domain, premium adventures, and paid modules are separate expenses, so a LightNode starter instance would add its advertised hosting charge to the one-time Foundry cost.
Is Foundry Virtual Tabletop free?
Not for the host. The GM or server owner normally buys the license, while invited players connect through a supported browser for free. Many game systems and add-on modules are free, but some licensed systems, adventures, and assets cost extra.
Is Foundry Virtual Tabletop worth it?
It is worth considering if the group plays regularly and values self-hosting, detailed scenes, strong automation, extensibility, and ownership of its server data. The one-time license can compare well with a recurring VTT subscription. It may not be worth the setup time for an occasional one-shot or for a GM who wants a fully managed, zero-maintenance service.
Which virtual tabletop is best?
There is no universal winner. Foundry virtual tabletop is especially strong for self-hosting, customization, lighting, and system automation. Roll20 reduces setup and runs entirely as a hosted browser service. Owlbear Rodeo is effective for quick, lightweight maps. Fantasy Grounds is attractive when deep rules automation and its licensed catalog match the campaign. Test the actual game system and player workflow before choosing, because module count alone does not predict a good session.