47 lines
2.7 KiB
Bash
47 lines
2.7 KiB
Bash
#!/usr/bin/env bash
|
|
# Run as your normal Ubuntu user, not as root. Uses sudo for installation.
|
|
set -euo pipefail
|
|
[[ $(uname -m) == x86_64 ]] || { echo 'This installer targets x86_64 only'; exit 1; }
|
|
base=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)
|
|
[[ ! -e /etc/smartpark-runner/config.yaml ]] || { echo 'Runner already configured; inspect it rather than overwrite.'; exit 1; }
|
|
sudo apt-get update
|
|
sudo apt-get install --no-install-recommends curl ca-certificates xz-utils
|
|
downloads=$(mktemp -d)
|
|
cd "$downloads"
|
|
# Resolve the current Node 22 release from its official checksum list, then
|
|
# install and record that exact release. No downloaded install script is run.
|
|
curl -fSLO https://nodejs.org/dist/latest-v22.x/SHASUMS256.txt
|
|
node_archive=$(awk '$2 ~ /^node-v22\.[0-9]+\.[0-9]+-linux-x64\.tar\.xz$/ {print $2}' SHASUMS256.txt)
|
|
[[ -n "$node_archive" && "$node_archive" != *$'\n'* ]]
|
|
node_version=${node_archive#node-}
|
|
node_version=${node_version%-linux-x64.tar.xz}
|
|
curl -fSLO "https://nodejs.org/dist/$node_version/$node_archive"
|
|
awk -v f="$node_archive" '$2 == f' SHASUMS256.txt | sha256sum -c -
|
|
tar -xf "$node_archive"
|
|
[[ ! -e /opt/smartpark-node ]] || { echo '/opt/smartpark-node exists; inspect before continuing'; exit 1; }
|
|
sudo mv "${node_archive%.tar.xz}" /opt/smartpark-node
|
|
sudo chown -R root:root /opt/smartpark-node
|
|
|
|
runner_version=2.3.0
|
|
runner_file="gitea-runner-$runner_version-linux-amd64"
|
|
curl -fSLO "https://dl.gitea.com/gitea-runner/$runner_version/$runner_file"
|
|
curl -fSLO "https://dl.gitea.com/gitea-runner/$runner_version/$runner_file.sha256"
|
|
sha256sum -c "$runner_file.sha256"
|
|
sudo install -m 0755 "$runner_file" /usr/local/bin/gitea-runner
|
|
if id smartpark-runner >/dev/null 2>&1; then
|
|
echo 'smartpark-runner account already exists; inspect its permissions before continuing.'
|
|
exit 1
|
|
fi
|
|
sudo useradd --system --create-home --home-dir /var/lib/smartpark-runner --shell /usr/sbin/nologin smartpark-runner
|
|
sudo chmod 700 /var/lib/smartpark-runner
|
|
sudo install -d -o smartpark-runner -g smartpark-runner -m 700 /var/lib/smartpark-runner/work
|
|
sudo install -d -o root -g smartpark-runner -m 750 /etc/smartpark-runner
|
|
sudo install -o root -g smartpark-runner -m 640 "$base/runner-config.yaml" /etc/smartpark-runner/config.yaml
|
|
sudo install -m 644 "$base/smartpark-runner.service" /etc/systemd/system/smartpark-runner.service
|
|
sudo systemctl daemon-reload
|
|
sudo -u smartpark-runner /opt/smartpark-node/bin/node --version
|
|
sudo -u smartpark-runner /usr/local/bin/gitea-runner --version
|
|
sudo -u smartpark-runner latexmk -v
|
|
echo 'Installed, but NOT registered or started. Registration requires an authorized token.'
|
|
echo "Verified downloads remain in $downloads; remove those files later using the Files app if desired."
|