---
layout: docs
page_title: Install Consul
description: >-
  Install Consul to get started with service discovery and service mesh. Follow the installation instructions to download the precompiled binary, or use Go to compile from source.
---

# Install Consul

Installing Consul is simple. There are three approaches to installing Consul:

1. Using a [precompiled binary](#precompiled-binaries)

1. Installing [from source](#compiling-from-source)

1. Installing [on Kubernetes](/docs/k8s/installation/install)

Downloading a precompiled binary is easiest, and we provide downloads over TLS
along with SHA256 sums to verify the binary. We also distribute a PGP signature
with the SHA256 sums that can be verified.

The [Getting Started guides](https://learn.hashicorp.com/collections/consul/get-started-vms?utm_source=docs) provide a quick walkthrough of installing and using Consul on a VM.

## Precompiled Binaries

To install the precompiled binary, [download](/downloads) the appropriate
package for your system. Consul is currently packaged as a zip file. We do not
have any near term plans to provide system packages.

Once the zip is downloaded, unzip it into any directory. The `consul` binary
inside is all that is necessary to run Consul (or `consul.exe` for Windows).
No additional files are required to run Consul.

Copy the binary to anywhere on your system. If you intend to access it from the
command-line, make sure to place it somewhere on your `PATH`.

## Compiling from Source

To compile from source, you will need [Go](https://golang.org) installed and
a copy of [`git`](https://www.git-scm.com/) in your `PATH`.

1. Clone the Consul repository from GitHub:

   ```shell
   $ git clone https://github.com/hashicorp/consul.git
   $ cd consul
   ```

1. Build Consul for your target system. The binary will be placed in `./bin`
   (relative to the git checkout).

   <!--
      The tabs below are intended to be indented with the step immediately
      above, but getting that to work is tricky.

      The pre-commit linting rules will automatically unindent the <Tab>
      element upon commit. This causes compilation to fail, because <Tabs>
      and all its contained <Tab> elements need to be at the same indent level
      for compilation.

      To circumvent the pre-commit linting rules, commit with:
      $ git commit --no-verify
   -->
   
   <Tabs>
   <Tab heading="Compile for your current system">

   ```shell-session
   $ make dev
   ```

   </Tab>
   <Tab heading="Cross-compile for another system">

   Specify your target system by setting the following environment variables
   before building:

   - `GOOS`: Target operating system. Valid values include:
     `linux`, `darwin`, `windows`, `solaris`, `freebsd`.
   - `GOARCH`: Target architecture. Valid values include:
     `386`, `amd64`, `arm`, `arm64`

   ```shell-session
   $ export GOOS=linux GOARCH=amd64
   $ make dev
   ```

   </Tab>
   </Tabs>

## Verifying the Installation

To verify Consul is properly installed, run `consul version` on your system. You
should see help output. If you are executing it from the command line, make sure
it is on your PATH or you may get an error about Consul not being found.

```shell-session
$ consul version
```

## Browser Compatibility Considerations

Consul currently supports all 'evergreen' browsers, as they are generally on
up-to-date versions. For more information on supported browsers, please see our
[FAQ](/docs/troubleshoot/faq)