--- layout: docs page_title: Installing Nomad description: Learn how to install Nomad. --- # Installing Nomad Nomad is available as a pre-compiled binary or as a package for several operating systems. You can also [build Nomad from source](#from-source). -> If you are interested in trialing Nomad without installing it locally, see the [Quickstart](/nomad/docs/install/quickstart) for options to get started with Nomad. You can download a [precompiled binary](/nomad/downloads) and run it on your machine locally. You can also verify the binary using the available SHA-256 sums. After downloading Nomad, unzip the package. Make sure that the `nomad` binary is available on your `PATH` before continuing with the other guides. [Homebrew](https://brew.sh) is a free and open source package management system for Mac OS X. Install the official [Nomad formula](https://github.com/hashicorp/homebrew-tap) from the terminal. First, install the HashiCorp tap, a repository of all of the HashiCorp Homebrew packages. ```shell-session $ brew tap hashicorp/tap ``` Now, install Nomad with `hashicorp/tap/nomad`. ```shell-session $ brew install hashicorp/tap/nomad ``` ~> **NOTE:** This installs a signed binary and is automatically updated with every new official release. To update to the latest, run ```shell-session $ brew upgrade hashicorp/tap/nomad ``` [Chocolatey](https://chocolatey.org/) is a free and open-source package management system for Windows. Install the [Nomad package](https://chocolatey.org/packages/nomad) from the command-line. ```shell-session $ choco install nomad ``` ~> **NOTE:** Chocolatey and the Nomad package are **NOT** directly maintained by HashiCorp. The latest version of Nomad is always available by manual installation. HashiCorp officially maintains and signs packages for the following Linux distributions. Install the required packages. ```shell-session $ sudo apt-get update && \ sudo apt-get install wget gpg coreutils ``` Add the HashiCorp [GPG key][gpg-key]. ```shell-session $ wget -O- https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /keyrings/hashicorp-archive-keyring.gpg ``` Add the official HashiCorp Linux repository. ```shell-session $ echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list ``` Update and install. ```shell-session $ sudo apt-get update && sudo apt-get install nomad ``` Install `yum-config-manager` to manage your repositories. ```shell-session $ sudo yum install -y yum-utils ``` Use `yum-config-manager` to add the official HashiCorp Linux repository. ```shell-session $ sudo yum-config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo ``` Install. ```shell-session $ sudo yum -y install nomad ``` Install `dnf config-manager` to manage your repositories. ```shell-session $ sudo dnf install -y dnf-plugins-core ``` Use `dnf config-manager` to add the official HashiCorp Linux repository. ```shell-session $ sudo dnf config-manager --add-repo https://rpm.releases.hashicorp.com/fedora/hashicorp.repo ``` Install. ```shell-session $ sudo dnf -y install nomad ``` Install `yum-config-manager` to manage your repositories. ```shell-session $ sudo yum install -y yum-utils ``` Use `yum-config-manager` to add the official HashiCorp Linux repository. ```shell-session $ sudo yum-config-manager --add-repo https://rpm.releases.hashicorp.com/AmazonLinux/hashicorp.repo ``` Install. ```shell-session $ sudo yum -y install nomad ``` -> **TIP:** Now that you have added the HashiCorp repository, you can install [Consul](/consul/tutorials) and [Vault](/vault/tutorials) with the same command. ## Post-installation steps These steps are considered optional but can be helpful for running Nomad and to take advantage of additional Nomad functionalities.

Add the Nomad binary to your system path

Permanently add a new location to your path by editing your shell's settings file (usually called something like `~/.bashrc`, where the part of the filename after the `.` and before `rc` is the name of your shell). In that file you should see a line that starts with `export PATH=`, followed by a colon-separated list of locations. Add the location of the Nomad binary to that list and save the file. Then reload your shell's configuration with the command `source ~/.bashrc`, replacing `bash` with the name of your shell.

Install CNI plugins

Nomad uses CNI plugins to configure network namespaces when using the `bridge` network mode. All Linux Nomad client nodes using network namespaces must have CNI plugins installed. The following commands install the CNI reference plugins. ```shell-session $ curl -L -o cni-plugins.tgz "https://github.com/containernetworking/plugins/releases/download/v1.0.0/cni-plugins-linux-$( [ $(uname -m) = aarch64 ] && echo arm64 || echo amd64)"-v1.0.0.tgz && \ sudo mkdir -p /opt/cni/bin && \ sudo tar -C /opt/cni/bin -xzf cni-plugins.tgz ``` Ensure your Linux operating system distribution has been configured to allow container traffic through the bridge network to be routed via iptables. These tunables can be set as follows. ```shell-session $ echo 1 | sudo tee /proc/sys/net/bridge/bridge-nf-call-arptables && \ echo 1 | sudo tee /proc/sys/net/bridge/bridge-nf-call-ip6tables && \ echo 1 | sudo tee /proc/sys/net/bridge/bridge-nf-call-iptables ``` To preserve these settings on startup of a client node, add a file including the following to `/etc/sysctl.d/` or remove the file your Linux distribution puts in that directory. ```ini net.bridge.bridge-nf-call-arptables = 1 net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 ```

Add the Nomad binary to your system path

Permanently add a new location to your path by editing your shell's settings file (usually called something like `~/.bashrc`, where the part of the filename after the `.` and before `rc` is the name of your shell). In that file you should see a line that starts with `export PATH=`, followed by a colon-separated list of locations. Add the location of the Nomad binary to that list and save the file. Then reload your shell's configuration with the command `source ~/.bashrc`, replacing `bash` with the name of your shell.

Add the Nomad binary to your system path

Add a location to your path via the GUI by navigating to `Environment Variables` in your system settings, and looking for the variable called `PATH`. You should see a semicolon-separated list of locations. Add the Nomad binary's location to that list and then launch a new console window.
No additional steps necessary after installing Nomad using Homebrew. No additional steps necessary after installing Nomad using Chocolatey. Note that if you are running Nomad on Linux, you'll need to run client agents as root (or with `sudo`) so that cpuset accounting and network namespaces work correctly.

Install CNI plugins

Nomad uses CNI plugins to configure network namespaces when using the `bridge` network mode. All Linux Nomad client nodes using network namespaces must have CNI plugins installed. The following commands install the CNI reference plugins. ```shell-session $ curl -L -o cni-plugins.tgz "https://github.com/containernetworking/plugins/releases/download/v1.0.0/cni-plugins-linux-$( [ $(uname -m) = aarch64 ] && echo arm64 || echo amd64)"-v1.0.0.tgz && \ sudo mkdir -p /opt/cni/bin && \ sudo tar -C /opt/cni/bin -xzf cni-plugins.tgz ``` Ensure your Linux operating system distribution has been configured to allow container traffic through the bridge network to be routed via iptables. These tunables can be set as follows. ```shell-session $ echo 1 | sudo tee /proc/sys/net/bridge/bridge-nf-call-arptables && \ echo 1 | sudo tee /proc/sys/net/bridge/bridge-nf-call-ip6tables && \ echo 1 | sudo tee /proc/sys/net/bridge/bridge-nf-call-iptables ``` To preserve these settings on startup of a client node, add a file including the following to `/etc/sysctl.d/` or remove the file your Linux distribution puts in that directory. ```ini net.bridge.bridge-nf-call-arptables = 1 net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 ```
## Verify the Installation To verify Nomad was installed correctly, try the `nomad` command. ```shell-session $ nomad ``` You should see help output, similar to the following. ```plaintext Usage: nomad [-version] [-help] [-autocomplete-(un)install] [args] Common commands: run Run a new job or update an existing job stop Stop a running job status Display the status output for a resource alloc Interact with allocations job Interact with jobs node Interact with nodes agent Runs a Nomad agent Other commands: acl Interact with ACL policies and tokens agent-info Display status information about the local agent config Interact with configurations deployment Interact with deployments eval Interact with evaluations exec Execute commands in task fmt Rewrites Nomad config and job files to canonical format license Interact with Nomad Enterprise License login Login to Nomad using an auth method monitor Stream logs from a Nomad agent namespace Interact with namespaces operator Provides cluster-level tools for Nomad operators plugin Inspect plugins quota Interact with quotas recommendation Interact with the Nomad recommendation endpoint scaling Interact with the Nomad scaling endpoint sentinel Interact with Sentinel policies server Interact with servers service Interact with registered services system Interact with the system API tls Generate Self Signed TLS Certificates for Nomad ui Open the Nomad Web UI var Interact with variables version Prints the Nomad version volume Interact with volumes ``` --- ## Compiling from Source ((#from-source)) To compile from source, you will need [Go](https://golang.org) installed at the version described by the [.go-version][go-version] file. You should properly configure your Go environment, including setting a `GOPATH` environment variable and ensuring `GOPATH/bin` is within your `PATH`. A copy of [`git`](https://www.git-scm.com/) is also needed in your `PATH`. 1. Clone the Nomad repository from GitHub into your `GOPATH`: ```shell-session $ mkdir -p $GOPATH/src/github.com/hashicorp && cd $_ $ git clone https://github.com/hashicorp/nomad.git $ cd nomad ``` 1. Bootstrap the project. This will download and compile libraries and tools needed to compile Nomad: ```shell-session $ make bootstrap ``` 1. Build Nomad for your current system and put the binary in `./bin/` (relative to the git checkout). The `make dev` target is just a shortcut that builds `nomad` for only your local build environment (no cross-compiled targets). ```shell-session $ make dev ``` [consul-dev]: /consul/tutorials/certification-associate-tutorials/get-started-agent#start-the-agent [consul-download]: /consul/downloads [destroy]: /vagrant/docs/cli/destroy [gh-7865]: https://github.com/hashicorp/nomad/issues/7865 [gpg-key]: https://apt.releases.hashicorp.com/gpg "HashiCorp GPG key" [go-version]: https://github.com/hashicorp/nomad/blob/main/.go-version