#!/usr/bin/env bash set -euo pipefail if [[ ${EUID} -ne 0 ]]; then echo "run as root" >&2; exit 1; fi source_dir=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) id chenglu-agent >/dev/null 2>&1 || useradd --system --home /var/lib/chenglu-agent --shell /usr/sbin/nologin chenglu-agent install -d -m 0755 /opt/chenglu-agent /opt/chenglu-agent/src install -d -m 0700 /etc/chenglu-agent install -d -o chenglu-agent -g chenglu-agent -m 0700 /var/lib/chenglu-agent install -m 0644 "$source_dir"/src/*.js /opt/chenglu-agent/src/ install -m 0644 "$source_dir"/package.json "$source_dir"/IDENTITY.hdlp /opt/chenglu-agent/ install -m 0644 "$source_dir"/systemd/chenglu-agent.service "$source_dir"/systemd/chenglu-daily.service "$source_dir"/systemd/chenglu-daily.timer /etc/systemd/system/ if [[ ! -f /etc/chenglu-agent/identity.key ]]; then openssl genpkey -algorithm ED25519 -out /etc/chenglu-agent/identity.key openssl pkey -in /etc/chenglu-agent/identity.key -pubout -out /etc/chenglu-agent/identity.pub fi chown root:chenglu-agent /etc/chenglu-agent/identity.key /etc/chenglu-agent/identity.pub chmod 0640 /etc/chenglu-agent/identity.key chmod 0644 /etc/chenglu-agent/identity.pub touch /etc/chenglu-agent/secrets.env chown root:chenglu-agent /etc/chenglu-agent/secrets.env chmod 0640 /etc/chenglu-agent/secrets.env systemctl daemon-reload systemctl enable --now chenglu-agent.service chenglu-daily.timer systemctl restart chenglu-agent.service systemctl is-active --quiet chenglu-agent.service systemctl is-active --quiet chenglu-daily.timer echo CHENGLU_AGENT_INSTALLED