2026 Mac Mini mieten: launchd vs. PM2 für 7×24-Langzeit-Tasks – Prozesswächter-Matrix, Plist-Schlüssel, PM2-Boot & Log-Rotation

Lesezeit: 9 Min.

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

  1. Sitzungsabhängigkeit: Prozesse, die nur in einer interaktiven SSH-Shell starten, enden mit der Session – es sei denn, launchd oder PM2 übernimmt die Elternschaft.
  2. Neustart-Stürme: Zu aggressives Respawn ohne ThrottleInterval oder PM2-Backoff verschleiert Root-Causes und füllt Datenträger mit doppelten Logs.
  3. 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
LabelEindeutiger Name für launchctlcom.firma.workerKeine Sonderzeichen, die Shell-Escaping erzwingen
ProgramArgumentsArgumentvektor mit absoluten Pfaden/usr/local/bin/app --config /Pfad/config.jsonVermeidet fragile PATH-Annahmen nach Reboot
WorkingDirectoryArbeitsverzeichnis für relative Pfade/Users/user/appGleiches Verhalten nach Neustart und bei SSH
RunAtLoadStart beim Laden des Agentstrue für Login-StartMit Throttle kombinieren, um Stürme zu vermeiden
KeepAliveNeustart-PolicySuccessfulExit false bei DienstcharakterTrennt erwartetes Beenden von echten Fehlern
ThrottleIntervalMindestabstand zwischen Restarts in Sekunden10 als Startwert bei instabilen JobsSchützt CPU, Logs und Provider-SLA
StandardOutPath / StandardErrorPathDateizugriffe für Logs~/Logs/app.out.logVolume-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.

  1. Node LTS installieren, dann npm install -g pm2 für eine globale CLI.
  2. ecosystem.config.cjs mit name, script, cwd, env und max_memory_restart anlegen – abgestimmt auf verfügbaren Unified Memory.
  3. pm2 start ecosystem.config.cjs ausführen und mit pm2 status prüfen, dass Worker online sind.
  4. Nach stabilem Graph pm2 save ausführen, um die Prozessliste zu persistieren.
  5. pm2 startup launchd ausführen, den ausgegebenen launchctl-Befehl übernehmen, einmal rebooten und pm2 resurrect bzw. Status prüfen.
  6. 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.

Zur Mietübersicht