chenglu-agent/install.sh

32 lines
1.5 KiB
Shell
Executable file

#!/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