2026 Mac Mini mieten: launchd vs. PM2 für 7×24-Langzeit-Tasks – Prozesswächter-Matrix, Plist-Schlüssel, PM2-Boot & Log-Rotation
Indie-Entwicklerinnen und kleine Teams, die auf einem gemieteten Mac Mini 7×24-Aufgaben fahren, brauchen eine klare Entscheidung: Soll macOS launchd der Prozesswächter sein oder PM2 vor Node- und Python-Workern?
Dieser Leitfaden liefert eine Vergleichstabelle (Einsatzszenario, Logging, Crash-Restart, Ressourcen), eine launchd-Plist-Schlüsselliste, PM2-Konfiguration mit Anmelde-Autostart, Hinweise zu Ressourcen und Log-Rotation sowie ein FAQ. Vertiefung: Langzeit-SLA-FAQ, Cron und Watchdog, Ollama 7×24-Schritte. Navigation: Startseite, Blog, Kaufen, Hilfe-Center.
Typische Engpässe vor der Wahl des Supervisors
- Sitzungsabhängigkeit: Prozesse, die nur in einer interaktiven SSH-Shell starten, enden mit der Session – es sei denn, launchd oder PM2 übernimmt die Elternschaft.
- Neustart-Stürme: Zu aggressives Respawn ohne ThrottleInterval oder PM2-Backoff verschleiert Root-Causes und füllt Datenträger mit doppelten Logs.
- Betriebssichtbarkeit: Für Audits und Störungen brauchen Sie nachvollziehbare Log-Pfade, Exit-Gründe und einen definierten Ort für den Zustand nach Wartungsfenstern des Providers.
Sicherheit: Plist- und PM2-Konfigurationen versionieren, keine langfristigen Secrets in Klartext in Repos; auf dem gemieteten Mac Mini nach Least Privilege arbeiten (eigener User, eingeschränkte LaunchAgents).
Auswahl-Entscheidungsmatrix
Vergleich der Prozesswächter für Apple-Silicon-Hosts mit Fokus auf Passung, Logging, Verhalten nach Crash und stationären Ressourcen.
| Supervisor | Einsatzszenario | Logging | Crash / Restart | Ressourcenbedarf |
|---|---|---|---|---|
| launchd User Agent | Ein natives Binary, Swift- oder Go-Worker oder ein schlankes Wrapper-Skript, das Sie vollständig unter macOS kontrollieren. | StandardOutPath und StandardErrorPath auf selbst verwaltete Dateien; bei Bedarf Anbindung an Unified Logging. | KeepAlive mit SuccessfulExit feinjustieren; ThrottleInterval begrenzt enge Respawn-Schleifen nach Fehlern. | Minimaler zusätzlicher RAM neben dem Job; kein dauerhafter Interpreter-Elternprozess, sofern nicht explizit gestartet. |
| PM2 | Mehrere Node-Dienste, Python-Apps oder gemischte Runtimes mit einem gemeinsamen ecosystem-Modell. | App-Logs unter der PM2-Home; optional JSON-Logs und Rotationsmodule. | Eingebaute Restarts mit Zählern; Cluster-Modus und graceful Reload für Rolling-Deploys. | Persistenter Node-Elternteil plus PM2-Daemon – realistisch etwa 50–90 MB RSS vor den Anwendungs-Heaps. |
Ein bewährtes Hybridmuster ist PM2 unter launchd: launchd sichert den Anmelde-Autostart, PM2 verwaltet App-Neustarts. Ergänzend helfen Health-Probes und Webhooks wie im Artikel OpenClaw Daemon, launchd & Webhook.
launchd-Plist: Schlüsselfelder-Checkliste
User Agents liegen unter ~/Library/LaunchAgents. Validierung mit plutil -lint, Laden auf aktuellem macOS mit launchctl bootstrap gui/$UID bzw. nach Änderungen bootout und erneutes bootstrap.
| Schlüssel | Funktion | Typischer Wert / Hinweis | Stabilität / Sicherheit |
|---|---|---|---|
| Label | Eindeutiger Name für launchctl | com.firma.worker | Keine Sonderzeichen, die Shell-Escaping erzwingen |
| ProgramArguments | Argumentvektor mit absoluten Pfaden | /usr/local/bin/app --config /Pfad/config.json | Vermeidet fragile PATH-Annahmen nach Reboot |
| WorkingDirectory | Arbeitsverzeichnis für relative Pfade | /Users/user/app | Gleiches Verhalten nach Neustart und bei SSH |
| RunAtLoad | Start beim Laden des Agents | true für Login-Start | Mit Throttle kombinieren, um Stürme zu vermeiden |
| KeepAlive | Neustart-Policy | SuccessfulExit false bei Dienstcharakter | Trennt erwartetes Beenden von echten Fehlern |
| ThrottleInterval | Mindestabstand zwischen Restarts in Sekunden | 10 als Startwert bei instabilen Jobs | Schützt CPU, Logs und Provider-SLA |
| StandardOutPath / StandardErrorPath | Dateizugriffe für Logs | ~/Logs/app.out.log | Volume-Quota und Rotation planen |
Ergänzend: EnvironmentVariables für nicht-sensible Konfiguration, Nice oder LowPriorityIO, wenn Batch-Jobs interaktiven Sessions Vorrang lassen sollen. Geheimnisse möglichst aus dem Schlüsselbund oder verschlüsselten Stores beziehen, nicht dauerhaft in der Plist.
PM2-Konfiguration und Autostart nach Anmeldung
PM2 bleibt Anwendungs-Supervisor; macOS verwaltet weiterhin Sitzungen. Die folgenden Schritte entsprechen dem typischen Setup nach erstem SSH-Zugang auf einem gemieteten Mac Mini.
- Node LTS installieren, dann
npm install -g pm2für eine globale CLI. ecosystem.config.cjsmit name, script, cwd, env und max_memory_restart anlegen – abgestimmt auf verfügbaren Unified Memory.pm2 start ecosystem.config.cjsausführen und mitpm2 statusprüfen, dass Worker online sind.- Nach stabilem Graph
pm2 saveausführen, um die Prozessliste zu persistieren. pm2 startup launchdausführen, den ausgegebenen launchctl-Befehl übernehmen, einmal rebooten undpm2 resurrectbzw. Status prüfen.- Ports, Health-URLs und Zugangsdaten aus der Konsole im Runbook dokumentieren; Alarmierung mit den genannten Langzeit-Artikeln verknüpfen.
Ressourcen und Log-Rotation
Langläufer auf einem gemieteten Mac Mini scheitern oft leise, wenn freier APFS-Speicher schrumpft, weil unkomprimierte Logs ohne Obergrenze wachsen.
- launchd: Stdout-Dateien in einen eigenen
logs/-Baum legen und newsyslog, externes logrotate oder wöchentliche Truncate-Jobs definieren. - PM2: Rotations-Modul aktivieren oder Logs an zentrale Speicher zu spiegeln, wenn Aufbewahrung Wochen überschreitet.
- Unified Memory: Speicherdruck beobachten, wenn parallel Inferenz und viele Worker laufen; max_memory_restart an reale RAM-Grenzen koppeln.
Zitierfähige Standardwerte (Betrieb)
- ThrottleInterval: Startwert 10 Sekunden bei fehleranfälligen Workern.
- PM2-Basis-Overhead: grob 50–90 MB RSS vor Anwendungsheaps (messbar mit
pm2 monit). - Speicher-Ampel: Logs rotieren oder komprimieren, bevor Warnungen unter ca. 15 % freiem Volume häufig werden – konsistent mit anderen RunMini-Langzeit-FAQs.
FAQ
launchd oder PM2 für eine Node-API?
Beides ist üblich. launchd für den kleinsten Stack und einen Dienst. PM2, wenn Cluster, Reload ohne Downtime oder viele benannte Prozesse in einer Datei gefragt sind.
Ersetzt PM2 launchd unter macOS?
Nein. PM2 benötigt einen Anmeldekontext. Das unterstützte Muster ist pm2 startup launchd, damit launchd PM2 nach Reboot wieder anhebt.
Wie vermeide ich unendliche Neustart-Schleifen?
ThrottleInterval bei launchd setzen, bei PM2 max_restarts und exponentielles Backoff im Deploy-Skript, damit Operateure ein klares Fehlersignal erhalten.
Wo bestelle ich passende Hardware?
Unter Kaufen einen Mac Mini-Tarif mit passendem RAM wählen, Hilfe-Center für SSH befolgen und bei Bedarf Preise vergleichen.
Nächste Schritte
Prozesswächter verdrahten, einmal Reboot-Verhalten testen, dann Automation auf einen dedizierten Knoten legen. Mieten Sie einen Mac Mini bei RunMini, wenn Sie 7×24-Kapazität ohne Eigenhardware-Ausbau brauchen – ergänzend Startseite, Blog mit Langzeit-Hosting-Guides und Hilfe für Zugang.
Mac Mini für launchd- und PM2-Workloads mieten
Apple Silicon online für 7×24-Builds, Agenten oder Batch: Startseite, Preise, Jetzt mieten, Blog zu Langzeit-Hosting, Hilfe-Center für SSH.