NATS philosophy is simplicity.

The best way to get the NATS Streaming Server is to use one of the pre-built release binaries which are available for OSX, Linux (x86-64/ARM), Windows.

Of course you can build the latest version of the server from the master branch. The master branch will always build and pass tests, but may not work correctly in your environment. First you will need at least Go version 1.11+ installed on your machine to build the NATS Streaming Server.

Installation is just decompressing a zip file and copying the binary to an appropriate directory; you can also use your favorite package manager.

Installing via a Package Manager

On Mac OS:

> brew install nats-streaming-server

Via Docker:

> docker pull nats-streaming

Installing a release build

You can find the latest release of nats-streaming-server here.

Download the zip file matching your systems architecture, and unzip. For this example, assuming version 0.14.2 of the server, and a Linux AMD64:

> curl -L -o

> unzip -d tmp
   creating: tmp/nats-streaming-server-v0.14.2-linux-amd64/
  inflating: tmp/nats-streaming-server-v0.14.2-linux-amd64/  
  inflating: tmp/nats-streaming-server-v0.14.2-linux-amd64/LICENSE  
  inflating: tmp/nats-streaming-server-v0.14.2-linux-amd64/nats-streaming-server 

> cp tmp/nats-streaming-server-v0.14.2-linux-amd64/nats-streaming-server /usr/local/bin

Installing from the source

If you have go installed, installing the binary is easy:

> go get

This mechanism will install a build of master, which almost certainly will not be a released version. If you are a developer and want to play with the latest, this is the easiest way of obtaining it.

You can run the test suite from the nats-streaming-server root directory:

go test -v -p=1 ./...

Some of the store tests require a SQL server to be running. To skip those, use this command instead:

go test -v -p=1 ./... -sql=false

Testing Your Installation

To test your installation (provided the executable is visible to your shell):

> nats-streaming-server
[58061] 2019/05/22 13:56:45.463562 [INF] STREAM: Starting nats-streaming-server[test-cluster] version 0.14.2
[58061] 2019/05/22 13:56:45.463639 [INF] STREAM: ServerID: Avb51sMf9imRPVVwv6Ts0v
[58061] 2019/05/22 13:56:45.463657 [INF] STREAM: Go version: go1.11.10
[58061] 2019/05/22 13:56:45.463659 [INF] STREAM: Git commit: [not set]
[58061] 2019/05/22 13:56:45.464086 [INF] Starting nats-server version 1.4.1
[58061] 2019/05/22 13:56:45.464092 [INF] Git commit [not set]
[58061] 2019/05/22 13:56:45.464310 [INF] Listening for client connections on
[58061] 2019/05/22 13:56:45.464328 [INF] Server is ready
[58061] 2019/05/22 13:56:45.495045 [INF] STREAM: Recovering the state...
[58061] 2019/05/22 13:56:45.495055 [INF] STREAM: No recovered state
[58061] 2019/05/22 13:56:45.749604 [INF] STREAM: Message store is MEMORY
[58061] 2019/05/22 13:56:45.749658 [INF] STREAM: ---------- Store Limits ----------
[58061] 2019/05/22 13:56:45.749664 [INF] STREAM: Channels:                  100 *
[58061] 2019/05/22 13:56:45.749668 [INF] STREAM: --------- Channels Limits --------
[58061] 2019/05/22 13:56:45.749671 [INF] STREAM:   Subscriptions:          1000 *
[58061] 2019/05/22 13:56:45.749675 [INF] STREAM:   Messages     :       1000000 *
[58061] 2019/05/22 13:56:45.749678 [INF] STREAM:   Bytes        :     976.56 MB *
[58061] 2019/05/22 13:56:45.749682 [INF] STREAM:   Age          :     unlimited *
[58061] 2019/05/22 13:56:45.749686 [INF] STREAM:   Inactivity   :     unlimited *
[58061] 2019/05/22 13:56:45.749690 [INF] STREAM: ----------------------------------