mirror of
				https://github.com/juanfont/headscale.git
				synced 2025-10-28 10:51:44 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			87 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			87 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 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
 | 
						|
}
 |