Files
bootstrap.grlx.dev/latest/sprout
Tai Groot dc0a27291e fix(bootstrap): safe uninstall, add license, CI, and docs
- Fix uninstall to only remove own files (farmer/sprout can coexist)
- Add systemctl daemon-reload after removing unit files
- Suppress userdel error if user doesn't exist
- Add 0BSD LICENSE (matches gogrlx/grlx)
- Add GitHub Actions CI workflow (shellcheck)
- Expand README: non-interactive install, uninstall docs, arch list, badges
2026-03-06 09:02:16 +00:00

86 lines
1.9 KiB
Bash
Executable File

#!/usr/bin/env bash
set -e -o pipefail
export PATH=$PATH:/usr/local/bin:/usr/sbin:/usr/bin
arch=$(uname -m)
case $arch in
"x86_64")
machine_arch="amd64"
;;
"i686"|"i386")
machine_arch="386"
;;
"aarch64"|"arm64"|"armv8")
machine_arch="arm64"
;;
"armv7l")
machine_arch="arm"
;;
*)
echo "Unknown machine architecture: $arch"
exit 1
;;
esac
if [ -z "$UNINSTALL" ]; then
if [ ! -f /etc/grlx/sprout ]; then
mkdir -p /etc/grlx
if [ -z "$FARMERINTERFACE" ]; then
echo "FARMERINTERFACE is not set. Please set it to the domain or IP of your farmer."
exit 1
fi
if [ -z "$FARMERAPIPORT" ]; then
FARMERAPIPORT=5405
fi
if [ -z "$FARMERBUSPORT" ]; then
FARMERBUSPORT=5406
fi
cat << EOF > /etc/grlx/sprout
farmerinterface: $FARMERINTERFACE
farmerbusport: $FARMERBUSPORT
farmerapiport: $FARMERAPIPORT
EOF
fi
chmod 600 /etc/grlx/sprout
systemctl stop grlx-sprout || true
curl -s "https://artifacts.grlx.dev/linux/${machine_arch}/v1.0.5/sprout" > /usr/local/bin/grlx-sprout
chmod +x /usr/local/bin/grlx-sprout
cat << EOF > /etc/systemd/system/grlx-sprout.service
[Unit]
Description=grlx sprout
Documentation=https://docs.grlx.dev
After=network-online.target
[Service]
Type=simple
ExecStart=/usr/local/bin/grlx-sprout
Restart=always
RestartSec=30
User=root
Group=root
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable --now grlx-sprout
else
systemctl disable --now grlx-sprout
rm -f /etc/systemd/system/grlx-sprout.service
systemctl daemon-reload
rm -f /usr/local/bin/grlx-sprout
rm -f /etc/grlx/sprout
rm -rf /etc/grlx/pki/sprout
# Only remove /etc/grlx if empty (farmer config may still exist)
rmdir /etc/grlx/pki 2>/dev/null || true
rmdir /etc/grlx 2>/dev/null || true
rm -rf /var/cache/grlx/sprout
# Only remove /var/cache/grlx if empty
rmdir /var/cache/grlx 2>/dev/null || true
fi