89 lines
2.3 KiB
Bash
89 lines
2.3 KiB
Bash
#!/bin/sh
|
|
# Determine OS platform
|
|
# shellcheck source=/dev/null
|
|
. /etc/os-release
|
|
|
|
HEADSCALE_EXE="/usr/bin/headscale"
|
|
BSD_HIER=""
|
|
HEADSCALE_RUN_DIR="/var/run/headscale"
|
|
HEADSCALE_HOME_DIR="/var/lib/headscale"
|
|
HEADSCALE_USER="headscale"
|
|
HEADSCALE_GROUP="headscale"
|
|
HEADSCALE_SHELL="/usr/sbin/nologin"
|
|
|
|
ensure_sudo() {
|
|
if [ "$(id -u)" = "0" ]; then
|
|
echo "Sudo permissions detected"
|
|
else
|
|
echo "No sudo permission detected, please run as sudo"
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
ensure_headscale_path() {
|
|
if [ ! -f "$HEADSCALE_EXE" ]; then
|
|
echo "headscale not in default path, exiting..."
|
|
exit 1
|
|
fi
|
|
|
|
printf "Found headscale %s\n" "$HEADSCALE_EXE"
|
|
}
|
|
|
|
create_headscale_user() {
|
|
printf "PostInstall: Adding headscale user %s\n" "$HEADSCALE_USER"
|
|
useradd -s "$HEADSCALE_SHELL" -d "$HEADSCALE_HOME_DIR" -c "headscale default user" "$HEADSCALE_USER"
|
|
}
|
|
|
|
create_headscale_group() {
|
|
if command -V systemctl >/dev/null 2>&1; then
|
|
printf "PostInstall: Adding headscale group %s\n" "$HEADSCALE_GROUP"
|
|
groupadd "$HEADSCALE_GROUP"
|
|
|
|
printf "PostInstall: Adding headscale user %s to group %s\n" "$HEADSCALE_USER" "$HEADSCALE_GROUP"
|
|
usermod -a -G "$HEADSCALE_GROUP" "$HEADSCALE_USER"
|
|
fi
|
|
|
|
if [ "$ID" = "alpine" ]; then
|
|
printf "PostInstall: Adding headscale group %s\n" "$HEADSCALE_GROUP"
|
|
addgroup "$HEADSCALE_GROUP"
|
|
|
|
printf "PostInstall: Adding headscale user %s to group %s\n" "$HEADSCALE_USER" "$HEADSCALE_GROUP"
|
|
addgroup "$HEADSCALE_USER" "$HEADSCALE_GROUP"
|
|
fi
|
|
}
|
|
|
|
create_run_dir() {
|
|
printf "PostInstall: Creating headscale run directory \n"
|
|
mkdir -p "$HEADSCALE_RUN_DIR"
|
|
|
|
printf "PostInstall: Modifying group ownership of headscale run directory \n"
|
|
chown "$HEADSCALE_USER":"$HEADSCALE_GROUP" "$HEADSCALE_RUN_DIR"
|
|
}
|
|
|
|
summary() {
|
|
echo "----------------------------------------------------------------------"
|
|
echo " headscale package has been successfully installed."
|
|
echo ""
|
|
echo " Please follow the next steps to start the software:"
|
|
echo ""
|
|
echo " sudo systemctl enable headscale"
|
|
echo " sudo systemctl start headscale"
|
|
echo ""
|
|
echo " Configuration settings can be adjusted here:"
|
|
echo " ${BSD_HIER}/etc/headscale/config.yaml"
|
|
echo ""
|
|
echo "----------------------------------------------------------------------"
|
|
}
|
|
|
|
#
|
|
# Main body of the script
|
|
#
|
|
{
|
|
ensure_sudo
|
|
ensure_headscale_path
|
|
create_headscale_user
|
|
create_headscale_group
|
|
create_run_dir
|
|
summary
|
|
}
|