Newansage v0.4.0 is out
Getting started / Install

Install

Install ansage as a systemd service with the installer script.

curl -fsSL https://github.com/miggish/ansage/releases/latest/download/install.sh \
  | sudo sh -s -- --config ./ansage.toml --operator "$USER"
curl -fsSL https://github.com/miggish/ansage/releases/latest/download/install.sh \
  | sudo ANSAGE_VERSION=v0.2.0 sh -s -- --config ./ansage.toml --operator "$USER"
sudo ./install.sh --binary target/release/ansage --config ./ansage.toml --operator "$USER"

Installer options

OptionMeaning
--config PATHinstall PATH as /etc/ansage/ansage.toml; checked with the new binary first, the old file is kept as .bak.<time>
--operator USERadd USER to group ansage, for ansage show etc.; may repeat; takes effect at the next login
--restartif ansage runs and the binary or unit changed, restart it with ansage upgrade
--binary PATHinstall this binary instead of downloading one
EnvironmentMeaning
ANSAGE_VERSIONrelease tag to install, e.g. v0.2.0 (default: latest)
ANSAGE_BASE_URLdownload from here instead of GitHub Releases; must hold ansage-<arch>-linux-musl, ansage.service and SHA256SUMS

Requirements: root, systemd, curl or wget, x86_64 or aarch64 Linux.

What the installer does

Downloads the binary

The static binary for the machine (x86_64 or aarch64), checked against SHA256SUMS. ANSAGE_VERSION=v0.2.0 pins a release, ANSAGE_BASE_URL downloads from another server and --binary PATH installs a local build instead.

Creates the user and the files

The system user and group ansage, /usr/local/bin/ansage, /etc/ansage (root:ansage, files 0640: they may hold TCP-MD5 keys) and dist/ansage.service. --operator USER adds USER to group ansage, which may use the control socket (ansage show, ...).

Starts the service

It enables the service and starts it once a config exists.

Running it again

Running the installer again is safe: only changed files are replaced (the old ones are kept as .bak.<time>), and a new config is checked with the new binary and applied with a reload. A running ansage keeps the old binary until ansage upgrade, or until you pass --restart, which runs it for you. See Upgrades.

The systemd unit

dist/ansage.service runs ansage as user ansage with Type=notify-reload (readiness and reloads are reported to systemd; the installer switches to Type=notify before systemd 253) and a hardened sandbox. With [kernel] in the config, the installer also enables CAP_NET_ADMIN and netlink in the unit, see Kernel routes.

Without the installer

Download ansage-<arch>-linux-musl, ansage.service and SHA256SUMS from a release, then:

sha256sum -c --ignore-missing SHA256SUMS
install -m 0755 ansage-x86_64-linux-musl /usr/local/bin/ansage
groupadd --system ansage
useradd --system --gid ansage --no-create-home --shell /usr/sbin/nologin ansage
install -d -o root -g ansage -m 0750 /etc/ansage
install -o root -g ansage -m 0640 ansage.toml /etc/ansage/ansage.toml
install -m 0644 ansage.service /etc/systemd/system/ansage.service
systemctl daemon-reload && systemctl enable --now ansage

On systemd older than 253, change Type=notify-reload to Type=notify and uncomment ExecReload=. With [kernel], uncomment the three CAP_NET_ADMIN / AF_NETLINK lines. Without systemd, see Run without systemd.

Uninstall

systemctl disable --now ansage
rm /etc/systemd/system/ansage.service /usr/local/bin/ansage
systemctl daemon-reload
rm -r /etc/ansage            # the config and keys
userdel ansage               # also removes group ansage if it is the user's primary group

Esc to close