Install & update Foundry.
Foundry is two pieces: a self-hosted server you run on your own box, and a desktop client each person downloads. Here is how to install, configure and update both.
Self-host the server
The server is one self-contained binary. Install it, run foundry init for a production :443 setup, point it at TLS certificates, and open the firewall. Binding :443 needs CAP_NET_BIND_SERVICE (or root); certificate renewals hot-reload with no restart.
# published release binary -> /usr/local/bin/foundry
curl -fsSL https://devforge.io/foundry/install.sh | sh
# a specific version / custom directory
FOUNDRY_VERSION=v0.1.0 FOUNDRY_INSTALL_DIR="$HOME/.local/bin" \
curl -fsSL https://devforge.io/foundry/install.sh | sh# scaffold a production config at /etc/foundry/foundry.toml
sudo foundry init
# it presets one public :443 + a media UDP range. edit it:
# bind = "0.0.0.0:443"
# tls_cert = "/etc/letsencrypt/live/foundry.example.com/fullchain.pem"
# tls_key = "/etc/letsencrypt/live/foundry.example.com/privkey.pem"
# public_url = "https://foundry.example.com"# issue a cert over port 80 (foundry keeps 443)
sudo certbot certonly --standalone --preferred-challenges http \
-d foundry.example.com --agree-tos -m you@example.com
# /etc/letsencrypt/{live,archive} are 0700 root, so give a group read access
# and put the foundry user in it. modern certbot preserves the group + mode of
# the renewed key (setgid on the dirs also carries it), so this survives.
sudo groupadd --system ssl-cert 2>/dev/null || true
sudo usermod -aG ssl-cert foundry
sudo chgrp -R ssl-cert /etc/letsencrypt/live /etc/letsencrypt/archive
sudo find /etc/letsencrypt/live /etc/letsencrypt/archive -type d -exec chmod g+rx,g+s {} +
sudo find /etc/letsencrypt/archive -type f -name '*.pem' -exec chmod g+r {} +
# point tls_cert/tls_key at the live paths (see Configure), then restart so the
# service gains its new group. reset-failed clears any earlier crash-loop lock.
sudo systemctl reset-failed foundry
sudo systemctl restart foundry# open the firewall (Ubuntu ufw)
sudo ufw allow 443/tcp # messaging, API, uploads, signaling
sudo ufw allow 16384:32768/udp # call media (SFU RTP/SRTP)
sudo ufw allow 3478:3479/udp # STUN/TURN (coturn), if run here# foreground (Ctrl-C to stop)
foundry
# or as a background daemon (writes a PID file + log)
foundry start
foundry status
foundry stop# dedicated user + dirs, then create the unit yourself
sudo useradd --system --home /var/lib/foundry --create-home foundry
sudo mkdir -p /var/lib/foundry/data /var/log/foundry
sudo chown -R foundry:foundry /var/lib/foundry /var/log/foundry /etc/foundry
sudo tee /etc/systemd/system/foundry.service >/dev/null <<'EOF'
[Unit]
Description=Foundry server
After=network.target
[Service]
Type=simple
User=foundry
WorkingDirectory=/var/lib/foundry
AmbientCapabilities=CAP_NET_BIND_SERVICE
ExecStart=/usr/local/bin/foundry
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable --now foundry
sudo journalctl -u foundry -f# re-run the installer to get the latest binary (your data/ is untouched)
curl -fsSL https://devforge.io/foundry/install.sh | sh
# then restart it
foundry stop && foundry start # or, with systemd: sudo systemctl restart foundry| Port | Proto | For |
|---|---|---|
| 443 | TCP | Messaging, API, uploads, call signaling (HTTPS/WSS) |
| 16384-32768 | UDP | Call media (the SFU's RTP/SRTP range) |
| 3478-3479 | UDP | STUN/TURN (coturn), for NAT traversal |
Optional: set FOUNDRY_GIT_REMOTE (plus a token) or use in-app Sign in with GitHub to push snapshots to a private repo for offsite backup, with restore-by-clone on a fresh boot. For calls across NAT, run coturn and set the STUN/TURN variables.
Install the desktop client
The client is a normal desktop app for macOS and Windows. Download the installer for your OS, point it at your server once, and you are in. It resolves the server address at runtime, so the same build works against any server, and updates never touch your settings.
# macOS: open the .dmg and drag Foundry to Applications
# Windows: run the .msi (or .exe) installer# config.json is created on first launch; set your server URL:
# macOS ~/Library/Application Support/io.devforge.foundry/config.json
# Windows %APPDATA%\io.devforge.foundry\config.json
{ "server": "https://foundry.example.com" }# download the latest installer and reinstall over the top.
# your server address (config.json) and login stay put.
