#!/bin/sh set -x APP=/Applications/NetBird.app AGENT=/usr/local/bin/netbird LOG_FILE=/var/log/netbird/client_post_install.log mkdir -p /var/log/netbird/ mkdir -p /usr/local/bin/ { echo "Installing NetBird..." if test -d $APP; then echo "NetBird app copied successfully." else echo "NetBird app could not be copied to the Applications folder." exit 1 fi ln -fs $APP/Contents/MacOS/netbird $AGENT if test -f $AGENT; then echo "NetBird binary linked successfully." else echo "NetBird could not create symlink to /usr/local/bin" exit 1 fi $AGENT service install || true $AGENT service start || true # Launch the GUI as the logged-in console user, NOT as the installer's # (root) context. When there is no active GUI session # (unattended MDM install, login window), there is nobody to launch as, skip it; console_user=$(stat -f%Su /dev/console 2>/dev/null) case "$console_user" in ""|root|loginwindow|_mbsetupuser) echo "No active GUI user session (console user: '${console_user:-none}'); skipping UI launch." ;; *) uid=$(id -u "$console_user" 2>/dev/null) home_dir=$(dscl . -read "/Users/$console_user" NFSHomeDirectory 2>/dev/null | awk '{print $2}') if [ -z "$uid" ] || [ -z "$home_dir" ]; then echo "Could not resolve uid/home for console user '$console_user' (uid='$uid', home='$home_dir'); skipping UI launch." else echo "Launching NetBird UI as console user $console_user (uid $uid, home $home_dir)." if ! HOME="$home_dir" launchctl asuser "$uid" open "$APP"; then echo "Failed to launch NetBird UI; it will start at next login via the per-user LaunchAgent." fi fi ;; esac echo "Finished Netbird installation successfully" exit 0 # all good } &> $LOG_FILE