32 lines
1.5 KiB
Shell
Executable file
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
|
|
|