1. 为什么选择Mac mini作为服务器?
把Mac mini改造成24小时运行的服务器是个性价比极高的方案。我手头这台M1芯片的Mac mini功耗实测待机仅7-8W,满载也不过40W左右。相比传统服务器动辄几百瓦的功耗,一年光电费就能省下上千元。金属机身的设计也让散热表现优异,连续运行三个月从未出现过热降频。
但全天候运行对硬件寿命有影响,特别是SSD写入损耗。我的解决方案是设置每天凌晨3点自动关机,早上7点自动开机。这样既保证了工作时间段的可用性,又让机器有4小时休息时间。实测这种作息下,SSD健康度两年仅下降2%。
2. 系统级定时开关机配置
2.1 图形界面设置(适合新手)
打开系统设置 > 电池 > 调度(Schedule),这是最直观的设置方式:
- 勾选"启动或唤醒"设置每天7:00
- 勾选"睡眠"设置每天3:00
- 关机选项需要按住Option键才会出现
注意:如果设置了开机密码,需要在"用户与群组"中配置自动登录,否则定时开机后会卡在登录界面。
2.2 终端命令配置(更灵活)
通过pmset命令可以实现更精细的控制,这是我正在使用的配置:
# 设置每天3:00关机 sudo pmset repeat shutdown MTWRFSU 03:00:00 # 设置工作日7:00开机,周末8:30开机 sudo pmset repeat wake MTWRF 07:00:00 sudo pmset repeat wake SU 08:30:00参数说明:
- MTWRFSU代表星期几(周一到周日)
- 时间格式为24小时制
- 使用sudo才能修改系统级设置
3. 进阶电源管理技巧
3.1 网络唤醒配置
想让Mac mini在关机状态下也能被远程唤醒?需要两个步骤:
- 在终端执行:
sudo pmset -a womp 1 sudo pmset -a powernap 1 - 在路由器设置ARP绑定,给Mac mini分配固定IP
测试唤醒命令(同一局域网内):
wakeonlan [MAC地址]3.2 防止睡眠干扰
作为服务器运行时,需要防止系统自动睡眠:
# 禁用睡眠 sudo pmset -a sleep 0 # 关闭显示器睡眠 sudo pmset -a displaysleep 0 # 设置硬盘永不休眠 sudo pmset -a disksleep 04. 配套自动化方案
4.1 开机自启动服务
在/Library/LaunchDaemons/创建plist文件实现服务自启:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>com.myapp.server</string> <key>ProgramArguments</key> <array> <string>/path/to/your/script.sh</string> </array> <key>RunAtLoad</key> <true/> </dict> </plist>4.2 关机前的预处理
创建关机前执行的脚本(保存在/Library/Scripts/):
#!/bin/zsh # 备份数据库 mysqldump -u root -p[password] mydb > /backups/mydb_$(date +%Y%m%d).sql # 通知已连接用户 wall "服务器将在5分钟后关机,请保存工作" # 清理临时文件 rm -rf /tmp/*然后在/etc/rc.shutdown.local中调用这个脚本。
5. 常见问题解决方案
5.1 定时开机失效排查
如果发现Mac mini没有按时唤醒:
- 检查BIOS电池是否没电(会导致时钟不准)
- 终端输入
pmset -g sched查看当前计划 - 确保没有其他电源管理设置冲突
- 尝试重置SMC(关机后按住Control+Option+Shift+电源键7秒)
5.2 外设唤醒干扰
接入了蓝牙设备可能导致意外唤醒,解决方法:
# 禁用蓝牙唤醒 sudo pmset -b bluetooth 0 # 禁用USB设备唤醒 sudo pmset -b acwake 05.3 日志监控
查看电源事件日志有助于排查问题:
# 实时监控电源事件 log stream --predicate 'eventMessage contains "PM"' # 查看历史唤醒记录 syslog | grep -i "Wake reason"6. 性能优化建议
6.1 内存管理
即使8GB内存的Mac mini也能稳定运行多个服务,关键是要做好内存分配:
- 使用
purge命令定期清理缓存 - 为每个服务配置内存上限(比如Docker的-m参数)
- 将日志服务配置为按大小轮转
6.2 存储优化
建议将频繁写入的目录挂载到外置SSD:
# 创建符号链接将Docker数据迁移到外置存储 sudo ln -s /Volumes/ExternalSSD/Docker /var/lib/docker使用tmutil排除不需要备份的目录:
sudo tmutil addexclusion /var/log sudo tmutil addexclusion /tmp7. 安全加固措施
7.1 防火墙配置
启用并配置pf防火墙:
# 启用防火墙 sudo pfctl -e # 编辑规则文件 sudo nano /etc/pf.conf # 示例规则:仅开放SSH和HTTP端口 pass in inet proto tcp from any to any port { 22, 80 } block drop in7.2 SSH安全
修改/etc/ssh/sshd_config增加安全性:
PermitRootLogin no PasswordAuthentication no MaxAuthTries 3 ClientAliveInterval 3008. 监控与告警系统
8.1 基础监控方案
安装mtail轻量级监控:
brew install mtail mtail --progs /usr/local/etc/mtail --logs '/var/log/*.log'配置监控规则示例(监控内存使用):
gauge memory_used_percent by host /memfree: (\d+) kB/ { memory_used_percent = 100 - ($1 * 100) / ${total_memory} }8.2 温度监控
实时监控CPU温度:
sudo powermetrics --samplers smc -i 1000 | grep -i "CPU die temperature"设置温度过高自动关机:
sudo pmset -a ttys 0 # 禁用TTY响应 sudo pmset -a sms 1 # 启用SMS保护