Installation
Install the jaco CLI and jacod daemon on each host that will be a
cluster member. Releases ship .deb, .rpm, .apk, and a generic
.tar.gz for linux/amd64 and linux/arm64, plus a SHA256SUMS
manifest.
All artifacts are published at
https://github.com/PatrickRuddiman/JACO/releases/latest. Swap <arch>
for amd64 or arm64 in the snippets below.
Debian / Ubuntu
curl -fsSL -O https://github.com/PatrickRuddiman/JACO/releases/latest/download/jaco_<arch>.deb
sudo dpkg -i jaco_<arch>.deb
sudo systemctl enable --now jacoThe package depends on docker.io | docker-ce | docker-engine; any of
the three satisfies it.
RHEL / Fedora / CentOS
curl -fsSL -O https://github.com/PatrickRuddiman/JACO/releases/latest/download/jaco_<arch>.rpm
sudo rpm -i jaco_<arch>.rpm # or `sudo dnf install ./jaco_<arch>.rpm`
sudo systemctl enable --now jacoThe rpm depends on /usr/bin/docker (whatever package provides it).
Alpine
curl -fsSL -O https://github.com/PatrickRuddiman/JACO/releases/latest/download/jaco_<arch>.apk
sudo apk add --allow-untrusted ./jaco_<arch>.apkAlpine ships OpenRC, not systemd. The package installs the binaries and
config but does not register a service unit; bring jacod up under your
service manager of choice.
Generic tarball
For hosts without .deb / .rpm / .apk support:
curl -fsSL -O https://github.com/PatrickRuddiman/JACO/releases/latest/download/jaco-vX.Y.Z-linux-<arch>.tar.gz
tar xf jaco-vX.Y.Z-linux-<arch>.tar.gz
cd jaco-vX.Y.Z-linux-<arch>
sudo install -m 0755 jaco /usr/local/bin/jaco
sudo install -m 0755 jacod /usr/local/bin/jacod
sudo install -d -m 0755 /etc/jaco
sudo install -m 0644 jacod.yaml /etc/jaco/jacod.yaml
sudo install -m 0644 jaco.service /lib/systemd/system/jaco.service
sudo systemctl daemon-reload
sudo systemctl enable --now jacoVerify the download
SHA256SUMS lists every artifact in the release. The filename pattern
matches what nfpm / the release workflow emits — for example
jaco_0.1.0_amd64.deb, jaco-0.1.0-1.x86_64.rpm,
jaco_0.1.0_x86_64.apk, jaco-v0.1.0-linux-amd64.tar.gz.
curl -fsSL -O https://github.com/PatrickRuddiman/JACO/releases/latest/download/SHA256SUMS
sha256sum -c --ignore-missing SHA256SUMSFor self-upgrades JACO additionally verifies a minisign signature over
SHA256SUMS against an embedded public key — see
operations/upgrades.md and
contributing/release-and-packaging.md.
On-disk layout
After a successful install you will find:
/usr/local/bin/jaco— the operator CLI./usr/local/bin/jacod— the long-running daemon./etc/jaco/jacod.yaml— daemon config. Editlisten_addr/cluster_addr/data_dirbefore the first start if the defaults don't fit./lib/systemd/system/jaco.service— systemd unit.daemon-reloadruns automatically on package install./var/lib/jaco/— created by the daemon on first boot. Holds raft store, snapshots, the node certificate, and the WireGuard private key./var/run/jaco/jaco.sock— the local control socket. Mode0660, groupjaco; anyone in thejacogroup can drive the local daemon without a bearer token (see Auth and tokens).
Post-install state
The daemon comes up in the uninitialized state. Every RPC except
Cluster.{Init, Join, Status} returns cluster_uninitialized until
either of those two transitions runs. From here, either:
- bootstrap a new cluster with
sudo jaco cluster init, or - join an existing cluster with
sudo jaco node join --peer … --token ….
Both flows are walked end-to-end in Getting started.