로컬 AI 인프라 노트 (6/15) — Mac Mini 홈서버 트러블슈팅: macOS 자동 재시작
원격 접속 불가의 원인과 서버용 Mac 전원·업데이트 설정 체크리스트
핵심 요약
- Mac Mini M4 홈서버가 원격 접속 불가 상태로 전환 — 원인은 macOS 소프트웨어 업데이트의 자동 재시작
- 재시작 후 로그인 화면에서 대기 → Tailscale과 에이전트가 미실행 → 장시간 다운
- 자동 업데이트 설치를 차단하고 다운로드만 허용 + 자동 로그인 설정으로 재발 방지
배경
Mac Mini M4를 Tailscale VPN으로 연결하여 원격 홈서버로 운영하는 환경에서, 다수의 에이전트와 자동화 스크립트가 상시 실행됩니다. 이 구성에서 안정성은 핵심 요구사항입니다.
macOS 자동 업데이트로 시스템이 재부팅되면, 사용자 세션 로그인 전까지 LaunchAgent가 실행되지 않는다. 결과적으로 Tailscale VPN·SSH·에이전트 등 백그라운드 서비스가 모두 다운되며, 원격에서 원인을 진단할 수 없는 상태가 된다.
본문
1. 진단 과정
서버에 물리적으로 접근한 뒤, 원인을 추적합니다. macOS는 전원 이벤트와 소프트웨어 업데이트 이력을 각각 다른 로그 채널에 기록합니다.
① 재부팅 이력 확인
last reboot
예상치 못한 reboot 항목이 기록되어 있습니다. 직접 재시작한 기록이 없는 경우, 이 시각이 장애 시점입니다.
② 전원 관리 로그 확인
pmset -g log | grep -i "restart\|shutdown\|sleep"
SoftwareUpdateNotificationManager의 RestartCountdownOperationIdleSleep assertion이 확인됩니다. 이것이 소프트웨어 업데이트가 재시작을 트리거한 증거입니다.
SoftwareUpdateNotificationManager는 macOS가 업데이트 설치를 위해 재시작을 예약할 때 전원 관리 서브시스템에 등록하는 assertion입니다. pmset의 sleep 억제와는 별개로 동작합니다.
③ shutdown 기록 없이 reboot만 존재
정상 종료(shutdown) 기록 없이 reboot만 남아 있는 패턴은 macOS 업데이트의 강제 재시작을 나타냅니다. 사용자가 개입하지 않은 재시작입니다.
④ 재시작 후 로그인 화면에서 멈춤
이것이 실질적인 장애 원인입니다. 재시작 자체는 무해하지만, 로그인 화면에서 비밀번호 입력을 기다리며 대기하는 동안:
- Tailscale 미실행 → 원격 접속 불가
- LaunchAgent 미실행 → 여러 에이전트와 스케줄러 전부 중단
- 사실상 서버 다운 상태
macOS에서 사용자 세션(LaunchAgent, 사용자 환경변수, Tailscale 등)은 로그인 이후에만 시작됩니다. 자동 로그인이 없으면, 재시작 후 물리적 개입 없이는 복구되지 않습니다.
2. 원인 정리
| 항목 | 내용 |
|---|---|
| 직접 원인 | macOS 소프트웨어 업데이트 자동 재시작 |
| 근본 원인 | 재시작 후 로그인 화면에서 대기 → 사용자 서비스 미시작 |
| 기존 설정 | sleep=0, autorestart=1 등 전원 설정은 올바름 |
| 빈틈 | 소프트웨어 업데이트 재시작은 pmset과 별도 메커니즘 |
pmset 전원 설정만으로는 소프트웨어 업데이트 재시작을 막을 수 없습니다. macOS 소프트웨어 업데이트는 별도 경로로 재시작을 강제합니다.
3. 해결: 자동 설치 차단 + 자동 로그인
핵심 원칙: 자동 업데이트를 완전히 막지 말고, 다운로드만 허용하고 설치(재시작)를 차단합니다.
업데이트를 받아두면 보안 패치를 놓치지 않으면서도, 설치 타이밍은 직접 통제할 수 있습니다.
① 자동 업데이트 설치 차단 (다운로드는 유지)
sudo defaults write /Library/Preferences/com.apple.SoftwareUpdate AutomaticallyInstallMacOSUpdates -bool false
sudo defaults write /Library/Preferences/com.apple.SoftwareUpdate AutomaticDownload -bool true
② 자동 로그인 설정 (재시작 시 대비)
sudo defaults write /Library/Preferences/com.apple.loginwindow autoLoginUser "사용자명"
수동으로 업데이트를 설치하여 재시작이 발생하더라도, 자동 로그인이 설정되어 있으면 Tailscale과 LaunchAgent가 즉시 시작됩니다. 물리적 개입 없이 서버가 복구됩니다.
4. 서버용 Mac 전원·업데이트 설정 체크리스트
| 설정 | 값 | 명령어 |
|---|---|---|
| sleep 비활성화 | 0 | sudo pmset -a sleep 0 |
| 정전 후 자동 재시작 | on | sudo pmset -a autorestart 1 |
| Wake on LAN | on | sudo pmset -a womp 1 |
| 업데이트 자동 다운로드 | on | sudo defaults write ...SoftwareUpdate AutomaticDownload -bool true |
| 업데이트 자동 설치 | off | sudo defaults write ...SoftwareUpdate AutomaticallyInstallMacOSUpdates -bool false |
| 자동 로그인 | on | sudo defaults write ...loginwindow autoLoginUser "사용자명" |
5. 진단 도구 정리
서버에 문제가 생겼을 때 원인을 추적하는 명령어들입니다.
last reboot
pmset -g log
uptime
sysctl kern.boottime
주의사항
-
pmset 설정만으로는 부족합니다. 전원 관리와 소프트웨어 업데이트는 별개 메커니즘입니다. 둘 다 설정해야 합니다.
-
자동 업데이트를 완전히 끄면 보안 위험이 생깁니다. 다운로드는 허용하되 설치만 차단하는 것이 균형점입니다. 주기적으로 수동 설치하면 됩니다.
-
자동 로그인은 보안 트레이드오프입니다. 물리적 접근 가능한 환경에서는 허용 가능하지만, 외부 노출된 서버에는 권장하지 않습니다.
마무리
서버 운영에서 장애는 코드 버그보다 OS 레벨 설정에서 오는 경우가 많습니다. 이번 사례는 OAuth 토큰 만료에 이어 발생한 두 번째 인프라 장애였습니다.
공통 교훈은 동일합니다. 장애가 안 나는 구조가 아니라, 장애 후 자동 복구되는 구조를 만드는 것이 핵심입니다. 자동 로그인 하나 설정하는 것만으로, 재시작 후 서버가 스스로 복구되는 구조가 만들어집니다.
시리즈 전체 안내: 시리즈 목차
댓글
댓글 쓰기