← ClaudeAtlas

mac-mini-as-headless-serverlisted

Use when setting up a Mac (especially Mac Mini or Apple Silicon Mac Studio) for unattended 24/7 server operation, headless use, or remote-only access. Covers sleep prevention, screen saver, Wake-on-LAN, auto-restart, App Nap, SSH enablement, and — on Apple Silicon — a caffeinate LaunchDaemon that stops the headless display from parking (physical panel and VNC/screen-share going black even with displaysleep=0). Targets macOS 15 (Sequoia) and later.
soulmachine/skills · ★ 3 · DevOps & Infrastructure · score 76
Install: claude install-skill soulmachine/skills
# Configure macOS for Server Use ## Overview Configures macOS for unattended 24/7 server operation by disabling sleep, screen saver, and App Nap, while enabling Wake-on-LAN, auto-restart after power failure, and SSH remote login. The screen lock lives in the user keybag and changing it requires the user's account password (root alone can't), so the script verifies it, offers to turn it off when run interactively (you type the user's password once), and prints the exact CLI/GUI fix on unattended runs. **Requires `sudo`. Targets macOS 15 (Sequoia) and later.** Target hardware: Mac Mini, Mac Studio, or any Mac used as a headless server. **Apple Silicon caveat:** on an Apple Silicon Mac with no local keyboard/mouse, `pmset displaysleep 0` is *not* enough. WindowServer still *parks* the physical display (DPMS off ~30s after each wake), which turns the panel black **and** makes RealVNC / screen-capture sessions show black, because they capture the physical display. The only reliable fix is to hold a `PreventUserIdleDisplaySleep` assertion continuously — this skill installs a `caffeinate -d` LaunchDaemon (step 7) for that. ## When 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 - Fixing a headless Apple Silicon Mac whose physical display or VNC/screen-share session goes black despite `displaysleep 0` ## Quick Refer