Skip to main content

Binary packages

Download the Linux amd64 / arm64 tarball from GitHub releases, verify the checksum, point it at your MySQL and Redis, and run n9e under systemd.

Last reviewed

By the end of this page you have an n9e process managed by systemd, talking to your own MySQL and Redis, listening on 17000.

Download and verify​

Releases carry two Linux builds, amd64 and arm64. There is no Windows or macOS package — Nightingale is a server-side program. (If you really need one, the Makefile in the repository shows how to build it.)

VERSION=9.1.1
curl -LO https://github.com/ccfos/nightingale/releases/download/v${VERSION}/n9e-v${VERSION}-linux-amd64.tar.gz
curl -LO https://github.com/ccfos/nightingale/releases/download/v${VERSION}/checksums.txt
sha256sum -c checksums.txt --ignore-missing

Expected result: n9e-v9.1.1-linux-amd64.tar.gz: OK.

The archive has no top-level directory, so create one before extracting or the files scatter into the current directory:

mkdir -p /opt/n9e && tar zxf n9e-v${VERSION}-linux-amd64.tar.gz -C /opt/n9e

What is in the package​

PathWhat it is
n9eThe Center process, the only binary you have to have
n9e-edgeLocal alerting engine for edge data centers
n9e-cliOne-shot v5 → v6 data migration tool; not an operations CLI
etc/Configuration directory, required by the process
integrations/Integration templates (dashboards, alert rules, collector configs), required
agents/categraf/Bundled categraf packages, served by the "install collector" page
docker/Compose bundles and schema SQL
n9e.sqlA copy of docker/initsql/a-n9e.sql, the MySQL bootstrap script

The n9e process only needs etc/ and integrations/ next to the binary; everything else can go.

n9e-alert and n9e-pushgw are not in the release. The Makefile has build-alert and build-pushgw targets, but they are not part of the release build — splitting those out means building from source.

Get it running​

cd /opt/n9e && ./n9e

The defaults need nothing else installed: SQLite for metadata, an in-process miniredis, and the embedded TSDB for metrics. Open http://<server>:17000 and sign in as root / root.2020.

Expected result: the log says http server listening on: 0.0.0.0:17000 and the login works.

Those defaults are not for production. Keep going to replace them, or walk the Production readiness checklist.

Point it at an existing MySQL and Redis​

Create the database. You do not have to import a schema — n9e runs AutoMigrate on every start, so an empty database plus an account that may create and alter tables is enough:

CREATE DATABASE n9e_v6 DEFAULT CHARACTER SET utf8mb4;

The database is conventionally called n9e_v6; the name has been carried since v6 and the bundled schema scripts still use it.

Then edit etc/config.toml:

[DB]
DBType = "mysql"
DSN = "n9e:<password>@tcp(mysql:3306)/n9e_v6?charset=utf8mb4&parseTime=True&loc=Local"

[Redis]
RedisType = "standalone"
Address = "redis:6379"

Expected result after a restart: no failed to migrate table in the log, and the login is still root / root.2020 — that row is written into the new database on first start. For the choice itself and the permissions involved, see Choosing a metadata database.

Run it under systemd​

[Unit]
Description=Nightingale
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=n9e
WorkingDirectory=/opt/n9e
ExecStart=/opt/n9e/n9e
Restart=always
RestartSec=5
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target

Save it as /etc/systemd/system/n9e.service. WorkingDirectory has to be the directory you extracted into: etc/, integrations/, data/tsdb and logs/ are all resolved relative to it.

sudo systemctl daemon-reload
sudo systemctl enable --now n9e
curl -s http://127.0.0.1:17000/ping

Expected result: /ping returns pong.

Edge data centers​

n9e-edge, from the same package, runs at an edge site. It must be started with a config directory, not a config file:

./n9e-edge --configs etc/edge

Passing --configs etc makes it load the central config.toml instead, and it does not complain. See Edge data centers.

Next​