NomployNomploy

Manual Installation

Customize how Nomploy installs on your server.

The install script is the supported way to install Nomploy. It is a readable POSIX shell script that sets up the whole control plane — Docker, Consul, Nomad, the CNI plugins, a WireGuard mesh, Traefik, Postgres, Redis and the Nomploy panel — on a fresh Linux server. For most customization you don't need to install anything by hand; you just pass a few environment variables to the same script.

curl -sSL https://nomploy.com/install.sh | sh

Customizing the install

The script reads the following environment variables. Pass them inline (before the pipe) so they reach the script even when it runs under sudo:

VariableDefaultPurpose
NOMPLOY_IMAGEghcr.io/nomploy/nomploy:latestThe panel image to run — set it to use a private mirror or a pinned tag.
NOMPLOY_PORT3000The port the panel listens on. Change it to avoid conflicts.
NOMPLOY_WG_ENDPOINTauto-detected <ip>:51820The public WireGuard endpoint other nodes dial to join the mesh. Set it when auto-detection picks the wrong address.
POSTGRES_PASSWORD(generated default)The panel's Postgres password. Set your own for a production install.
CNI_VERSIONv1.5.1Version of the CNI plugins to install.
CONSUL_CNI_VERSION1.6.3Version of the Consul CNI plugin to install.

Example — run the panel on a different port with your own database password:

curl -sSL https://nomploy.com/install.sh | sudo NOMPLOY_PORT=8080 POSTGRES_PASSWORD='<a-strong-password>' sh

When you run the installer with sudo, pass the variables inline as shown above — sudo resets the environment, so export VAR=... from your shell never reaches the script. Alternatively use sudo -E sh to preserve your environment.

After it runs

The script prints the URLs it exposes:

  • Panel — http://<server-ip>:<NOMPLOY_PORT> (default 3000)
  • Nomad UI — http://<server-ip>:4646
  • Consul UI — http://<server-ip>:8500

See Installation for the standard walkthrough and Architecture for what each component does.

Deeper customization

For anything the environment variables don't cover, read the install.sh script directly — it documents exactly what is installed and where (/etc/nomploy, /etc/nomad.d, /etc/consul.d, /etc/wireguard) — and adapt it to your needs.

Updating

Because the panel runs as a self-updating Nomad job, update in place with:

curl -sSL https://nomploy.com/install.sh | sh -s update

To pin a specific version, use the install.sh from that GitHub release.

On this page