Skip to content

Install Forge

Forge is meant to start from a fresh Ubuntu or Debian server where it can own the deployment stack cleanly.

  • A server you control.
  • Ubuntu or Debian with shell access.
  • DNS access for any hostname you want to point at the server.
  • Public ports 80 and 443 available for Caddy.
  • Port 25 available if you plan to use inbound email forwarding (optional).
  • Docker support. The installer starts the Docker-backed runtime services Forge needs.
  • Enough disk for builds, images, database volumes, static output, email logs, and local backups.
Terminal window
curl -fsSL https://get.forgecloud.cc/install.sh | sh

The installer creates /opt/forgecloud, clones Forge into that directory, writes a production environment file, builds the control plane locally, and starts the host services.

  • forge-cloud, the systemd service for the control plane.
  • deploy-buildkit on 127.0.0.1:1234.
  • deploy-caddy on ports 80 and 443.

After the script finishes, open the printed URL and complete onboarding in the browser.

The default install keeps Forge under /opt/forgecloud. Runtime state, generated Caddy config, static site output, database backup files, email send logs, migration files, and maintenance history live under the configured DATA_DIR.

If you later export a Forge migration bundle, the bundle includes logical Forge data, system settings, runtime env, database dumps, static sites, backup files, Postgres TLS assets, email identities, and the Caddyfile when those files exist.

Set environment variables before sh to override defaults:

Terminal window
curl -fsSL https://get.forgecloud.cc/install.sh | \
FORGE_PUBLIC_URL=https://app.yourdomain.com \
FORGE_EMAIL_ENABLED=true \
sh

Common options:

  • FORGE_HOME: install directory. Defaults to /opt/forgecloud.
  • FORGE_REPO_URL: repository to clone. Defaults to the Forge repository.
  • FORGE_REPO_BRANCH: branch to install and update from. Defaults to main.
  • FORGE_PUBLIC_URL: public URL written to PUBLIC_URL.
  • FORGE_PORT: control plane port. Defaults to 4310.
  • FORGE_EMAIL_ENABLED: enable the email platform. Defaults to false.
  • FORGE_EMAIL_INBOUND_ENABLED: enable inbound email forwarding (requires port 25). Defaults to false.

Use FORGE_PUBLIC_URL when you already know the dashboard hostname. You can still set or change the dashboard hostname later in System Settings.

Terminal window
sudo journalctl -u forge-cloud -f
cd /opt/forgecloud && git status
cd /opt/forgecloud && sudo docker compose logs -f caddy buildkit

If UFW is enabled, allow the public ports:

Terminal window
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 4310/tcp
# Only if using email forwarding:
sudo ufw allow 25/tcp

Continue to Browser Onboarding to create the owner user, configure the dashboard domain, set the wildcard root domain, connect GitHub, configure R2, enable email features, or import a Forge migration bundle.