86 lines
2.2 KiB
Bash
86 lines
2.2 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_USER="headscale"
|
||
|
HEADSCALE_GROUP="headscale"
|
||
|
|
||
|
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 /bin/sh -c "headscale default user" headscale
|
||
|
}
|
||
|
|
||
|
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 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
|
||
|
}
|