mac-mini-as-headless-server
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseConfigure macOS for Server Use
将macOS配置为服务器使用
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.
sudo通过禁用睡眠、屏幕保护程序、屏幕锁定和App Nap,同时启用Wake-on-LAN、断电后自动重启和SSH远程登录,将macOS配置为无人值守的7×24小时服务器运行状态。
需要 权限。 适用对象:Mac Mini或任何用作无头服务器的Mac。
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
- 将Mac设置为家庭服务器、CI运行器或始终在线设备
- 为Mac Mini配置无头/仅远程访问模式
- 排查Mac频繁睡眠、锁定或无法访问的问题
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 |
| 设置 | 命令 | 效果 |
|---|---|---|
| 关闭屏幕保护程序 | | 禁用屏幕保护程序启动 |
| 关闭屏幕锁定 | | 唤醒时无需密码 |
| 关闭锁定延迟 | | 立即生效 |
| 关闭系统睡眠 | | 永不睡眠 |
| 关闭显示器睡眠 | | 永不关闭显示器 |
| 关闭磁盘睡眠 | | 永不停止磁盘转动 |
| 关闭睡眠前变暗 | | 睡眠前不降低亮度 |
| 启用Wake-on-LAN | | 网络访问时唤醒 |
| 启用自动重启 | | 断电后自动重启 |
| 关闭App Nap | | 阻止应用节流 |
| 启用SSH | | 启用远程登录 |
Implementation
实现步骤
Run as root. is resolved from to apply per-user defaults correctly.
REAL_USER$SUDO_USERbash
#!/usr/bin/env bash
set -euo pipefail以root身份运行。 从 获取,以正确应用每个用户的默认设置。
REAL_USER$SUDO_USERbash
#!/usr/bin/env bash
set -euo pipefailRequire root
Require root
if [[ $EUID -ne 0 ]]; then
echo "Error: run with sudo."
exit 1
fi
REAL_USER="${SUDO_USER:-$USER}"
if [[ $EUID -ne 0 ]]; then
echo "Error: run with sudo."
exit 1
fi
REAL_USER="${SUDO_USER:-$USER}"
1. Disable screen saver
1. Disable screen saver
sudo -u "$REAL_USER" defaults -currentHost write com.apple.screensaver idleTime -int 0
sudo -u "$REAL_USER" defaults -currentHost write com.apple.screensaver idleTime -int 0
2. Disable screen lock password
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
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)
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
pmset -c sleep 0
pmset -c displaysleep 0
pmset -c disksleep 0
pmset -c halfdim 0
4. Wake-on-LAN
4. Wake-on-LAN
pmset -c womp 1
pmset -c womp 1
5. Auto-restart after power failure
5. Auto-restart after power failure
pmset -c autorestart 1
pmset -c autorestart 1
6. Disable App Nap globally
6. Disable App Nap globally
sudo -u "$REAL_USER" defaults write NSGlobalDomain NSAppSleepDisabled -bool YES
sudo -u "$REAL_USER" defaults write NSGlobalDomain NSAppSleepDisabled -bool YES
7. Enable SSH
7. Enable SSH
systemsetup -setremotelogin on 2>/dev/null || {
launchctl load -w /System/Library/LaunchDaemons/ssh.plist 2>/dev/null || true
}
systemsetup -setremotelogin on 2>/dev/null || {
launchctl load -w /System/Library/LaunchDaemons/ssh.plist 2>/dev/null || true
}
Verify
Verify
pmset -g
undefinedpmset -g
undefinedCommon 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
- 未使用sudo运行 — 和
pmset需要root权限;systemsetup命令必须通过defaults以实际用户身份运行sudo -u - 忘记参数 — 如果没有
-c(充电器/交流电),设置会应用到电池模式,而Mac Mini没有电池模式-c - 期望立即生效 — 屏幕保护程序和密码设置的更改可能需要注销或重启才能生效
- FileVault阻止自动登录 — 自动登录(系统设置 > 用户与群组 > 登录选项)需要关闭FileVault
Reverting
恢复设置
To restore display sleep later:
bash
sudo pmset -c displaysleep 10 # 10 minutes之后如需恢复显示器睡眠:
bash
sudo pmset -c displaysleep 10 # 10 minutes