Skip to content
foundry-ops docs

Everything foundry-ops sets up lives in a few places inside the container.

Path What
/opt/foundryvtt/app Foundry itself, owned by the foundry user so Foundry’s in-app updater can work.
/opt/foundryvtt/app.prev The version before the last update, for a rollback.
/opt/foundryvtt/run.sh The launcher. It finds Foundry’s main.js each time it starts, since its location moved between Foundry versions.
/opt/foundryvtt/version The version installed by foundry-ops.
/var/lib/foundryvtt Your user data (Foundry’s --dataPath): Data/, Config/ and Logs/.
/var/backups/foundryvtt User data archives made by update.

User data sits apart from the app, so you can mount it separately if you like.

Foundry runs as foundryvtt.service, a systemd unit, under the foundry system user. That user has no login shell and no sudo. The service starts at boot, restarts if Foundry exits with an error, and can’t gain new privileges. Foundry listens on port 30000.

Terminal window
systemctl status foundryvtt # is it running?
systemctl restart foundryvtt # restart it
journalctl -u foundryvtt # its log

Because the foundry user owns /opt/foundryvtt/app and the launcher finds main.js at each start, Foundry’s own updater should work too. That hasn’t been confirmed across a real update yet. An update made that way doesn’t change /opt/foundryvtt/version, keep a previous version or archive your data; update does.