Mac mini as a home server: the 24/7 setup checklist
A Mac mini makes a lovely home server. It is quiet, sips power, and Apple silicon runs local AI models, media servers, Docker and agents without breaking a sweat.
But macOS is built for a person sitting in front of it. Out of the box, it sleeps, it waits for you after updates, and after a power cut it may not come back at all. This checklist is everything we set on a Mac mini that has to work while nobody is home.
1. Energy settings
Open System Settings › Energy. On a Mac mini you’ll find three switches that matter:
- Prevent automatic sleeping when the display is off: on. A server with no screen attached should never decide to nap.
- Wake for network access: on. Lets the Mac answer requests for shared resources even if it does sleep.
- Start up automatically after a power failure: on. Without it, a two-second cut leaves your Mac off until you press the button.
The same from the Terminal, which is handy over SSH:
sudo pmset -a sleep 0 # never sleep the system
sudo pmset -a autorestart 1 # power back on after a cut
pmset -g # check: sleep 0, autorestart 1
The display can sleep as much as it likes; only system sleep matters.
If you need to keep the Mac awake temporarily without touching settings (a long download, a render), caffeinate does it for as long as a command runs:
caffeinate -s -t 10800 # stay awake 3 hours (on AC power)
2. A fixed address
You’ll connect to this Mac by IP, from your phone, your laptop, other services. It must not change.
The cleanest way is a DHCP reservation in your router: the router always hands the same address to the Mac’s network card. Set it once in the router’s admin page, under DHCP or “static leases”. The alternative is a manual IP on the Mac (System Settings › Network › your connection › Details › TCP/IP › Configure IPv4: Manually), which works but breaks if you ever change routers.
While you’re there: use Ethernet. It is faster, steadier, and it removes a whole class of “Wi-Fi didn’t come up after boot” surprises.
3. Remote Login (SSH)
Turn on System Settings › General › Sharing › Remote Login, and allow only your account. This is your way in for everything else.
sudo systemsetup -setremotelogin on
ssh yourname@192.168.1.50
Add your SSH key from your laptop for everyday use (ssh-copy-id yourname@192.168.1.50), and keep your password strong. Turn on Screen Sharing in the same pane if you want to see the desktop.
4. The FileVault decision
This is the big one. With FileVault on, every restart stops at a locked screen until someone types the password, and nothing runs until then. With FileVault off, anyone who walks away with your Mac mini walks away with your data and every credential your automations use.
Our view: keep FileVault on, and solve the restart problem instead.
- For restarts you plan (updates, config changes), use
sudo fdesetup authrestart: the Mac comes back once without the FileVault screen. - For power cuts, recent macOS can unlock over SSH: on Apple silicon with macOS 26 or later and Remote Login on, connecting by SSH with your password at the FileVault screen unlocks the disk.
We wrote the full walkthrough, VPN included, in How to unlock FileVault remotely after a power cut.
5. Automatic login: the trade-off
Automatic login (System Settings › Users & Groups) is tempting: the Mac boots straight into your session, and every login item starts. Two problems. It isn’t available while FileVault is on, and on a Mac without FileVault it means whoever powers it on is you.
There is a better pattern: make the things that matter not need a login at all. Which brings us to launchd.
6. Keep your apps and services alive
launchd is macOS’s service manager. It can start a program at boot or at login, and restart it whenever it crashes. Two flavours:
- LaunchDaemons (
/Library/LaunchDaemons) start at boot, before anyone logs in, once the disk is unlocked. Use them for headless servers. - LaunchAgents (
~/Library/LaunchAgents) start when your user logs in. Use them for things that need your session.
A minimal agent that keeps a program running forever:
<?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.me.myserver</string>
<key>ProgramArguments</key>
<array><string>/usr/local/bin/myserver</string></array>
<key>RunAtLoad</key><true/>
<key>KeepAlive</key><true/>
<key>StandardErrorPath</key><string>/tmp/myserver.err</string>
</dict>
</plist>
RunAtLoad starts it right away, KeepAlive relaunches it if it exits. Load it with:
launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/com.me.myserver.plist
launchctl print gui/$(id -u)/com.me.myserver | grep state
For an LLM server, we walk through a full example in How to run Ollama 24/7 on a Mac mini. For Docker, remember Docker Desktop is a regular app that starts at login; tools like colima can be started from a LaunchAgent instead.
7. A UPS
A small uninterruptible power supply turns most power cuts into non-events: the Mac never notices a flicker. Plug the Mac and your router into it (the router matters as much as the Mac, or you can’t reach either). Many UPS models connect over USB, and macOS then offers UPS options in its Energy settings so the Mac can shut down cleanly before the battery runs out.
A UPS doesn’t replace “Start up automatically after a power failure”. Long cuts still happen; you want both.
8. Monitoring and alerts
The hard part about a home server is that when it dies, it can’t tell you. Something outside it has to notice the silence.
Options, from simple to robust:
- A free uptime service pinging a port you expose (only if you already expose one).
- A “dead man’s switch” service: the Mac pings a URL every few minutes from a LaunchAgent, and the service alerts you when the pings stop.
- An always-on device at home watching the Mac on the LAN.
Whatever you choose, test it: unplug the Mac and see how long the alert takes.
9. Updates
macOS updates restart the Mac, and an update restart on a FileVault Mac usually ends at the unlock screen. Two habits help:
- Turn off automatic installation of macOS updates (System Settings › General › Software Update › the (i) next to Automatic updates) and install them when you can watch.
- Check what’s waiting from the Terminal, over SSH:
softwareupdate --list
Keep app and security updates on: they rarely restart the Mac.
10. A way in from outside
Everything above makes the Mac reliable at home. To reach it from away, the steadiest route is your router’s own VPN server (WireGuard on Freebox, FRITZ!Box and a few others), because it works even when the Mac is stuck before macOS starts. Check your box in our router list.
Where Macaron fits
Macaron is the remote control for this exact setup. The free Mac app walks through the checklist with you: restart after a power failure, Remote Login, FileVault, Screen Sharing, a fixed address, and on a Freebox the router VPN. The iPhone app then unlocks FileVault after a cut with Face ID, alerts you when the Mac goes down (the Mac sends a heartbeat; when it stops, your phone hears about it), keeps apps like Ollama, Plex or Docker alive, and gives you power controls, Remote Control and a Terminal from your pocket.
The short version
- Energy: no system sleep, wake for network access, start up after a power failure.
- Reserve the Mac’s IP in your router and use Ethernet.
- Turn on Remote Login; use keys for daily SSH.
- Keep FileVault on; use
authrestartfor planned restarts and SSH unlock for cuts. - Skip automatic login; run what matters with launchd and
KeepAlive. - Put the Mac and the router on a UPS.
- Get alerted by something outside the Mac.
- Install macOS updates when you can watch.
If you want the checklist done for you and the remote in your pocket, download Macaron for Mac, it’s free. Everything the iPhone app adds is on the homepage.