mac-mini-as-headless-server
Original:🇺🇸 English
Translated
Use when setting up a Mac (especially Mac Mini) for unattended 24/7 server operation, headless use, or remote-only access. Covers sleep prevention, screen saver, Wake-on-LAN, auto-restart, App Nap, and SSH enablement.
13installs
Sourcesoulmachine/skills
Added on
NPX Install
npx skill4agent add soulmachine/skills mac-mini-as-headless-serverTags
Translated version includes tags in frontmatterSKILL.md Content
View Translation Comparison →Configure macOS for Server Use
Overview
Configures macOS for unattended 24/7 server operation by disabling sleep, screen saver, screen lock, and App Nap, while enabling Wake-on-LAN, auto-restart after power failure, and SSH remote login.
Requires . Target: Mac Mini or any Mac used as a headless server.
sudoWhen to Use
- Setting up a Mac as a home server, CI runner, or always-on machine
- Preparing a Mac Mini for headless/remote-only operation
- Troubleshooting a Mac that keeps sleeping, locking, or becoming unreachable
Quick Reference
| Setting | Command | Effect |
|---|---|---|
| Screen saver off | | Disables screen saver activation |
| Screen lock off | | No password on wake |
| Lock delay off | | Immediate effect |
| System sleep off | | Never sleep |
| Display sleep off | | Never turn off display |
| Disk sleep off | | Never spin down disks |
| Dim before sleep off | | No pre-sleep dimming |
| Wake-on-LAN | | Wake on network access |
| Auto-restart | | Restart after power loss |
| App Nap off | | Prevents app throttling |
| SSH on | | Enables Remote Login |
Implementation
Run as root. is resolved from to apply per-user defaults correctly.
REAL_USER$SUDO_USERbash
#!/usr/bin/env bash
set -euo pipefail
# Require root
if [[ $EUID -ne 0 ]]; then
echo "Error: run with sudo."
exit 1
fi
REAL_USER="${SUDO_USER:-$USER}"
# 1. Disable screen saver
sudo -u "$REAL_USER" defaults -currentHost write com.apple.screensaver idleTime -int 0
# 2. Disable screen lock password
sudo -u "$REAL_USER" defaults write com.apple.screensaver askForPassword -int 0
sudo -u "$REAL_USER" defaults write com.apple.screensaver askForPasswordDelay -int 0
# 3. Prevent all sleep (charger profile — only profile on Mac Mini)
pmset -c sleep 0
pmset -c displaysleep 0
pmset -c disksleep 0
pmset -c halfdim 0
# 4. Wake-on-LAN
pmset -c womp 1
# 5. Auto-restart after power failure
pmset -c autorestart 1
# 6. Disable App Nap globally
sudo -u "$REAL_USER" defaults write NSGlobalDomain NSAppSleepDisabled -bool YES
# 7. Enable SSH
systemsetup -setremotelogin on 2>/dev/null || {
launchctl load -w /System/Library/LaunchDaemons/ssh.plist 2>/dev/null || true
}
# Verify
pmset -gCommon Mistakes
- Running without sudo — and
pmsetrequire root;systemsetupcommands must run as the real user viadefaultssudo -u - Forgetting flag — Without
-c(charger/AC), settings apply to battery profile, which doesn't exist on Mac Mini-c - Expecting immediate effect — Screen saver and password changes may require logout/restart
- FileVault blocking auto-login — Auto-login (System Settings > Users & Groups > Login Options) requires FileVault off
Reverting
To restore display sleep later:
bash
sudo pmset -c displaysleep 10 # 10 minutes