MacBook Pro Setup-Tracker

M5 Pro · 48 GB · 2 TB — Migration vom Mac mini M2

Gesamtfortschritt 0 / 105 0%

Worum es geht

Dieser interaktive Tracker führt durch die komplette Einrichtung deines neuen MacBook Pro M5 Pro und die Migration vom alten Mac mini M2. Zehn Phasen — vom Auspacken bis zum 3-2-1-Backup auf der Hetzner Storage Box und der Umfunktionierung des Mac mini als lokaler AI-Server.

Alle Häkchen und Notizen werden lokal im Browser gespeichert (localStorage), nichts wird hochgeladen. Per Export ziehst du dir den Stand als JSON-Datei – etwa für ein zukünftiges Setup oder als Doku im persönlichen Archiv.

  • Klicke einen Schritt an, um ihn als erledigt zu markieren.
  • + notiz öffnet ein Notizfeld pro Schritt (Seriennummer, Beobachtung).
  • Copy-Button auf jedem Codeblock kopiert den Befehl.
  • Nur offene anzeigen in der Toolbar filtert abgehakte Schritte aus.
Phase 01
0/8

Auspacken & Erstinbetriebnahme

Setup-Assistent, iCloud-Strategie, FileVault, erste Updates

Der erste Boot des MacBook Pro M5 Pro (48 GB / 2 TB) entscheidet darüber, wie sauber der Rest läuft. Wir aktivieren FileVault vor dem ersten Sync, übertragen WLAN/Apple-ID per Set Up with iPhone und legen die iCloud-Strategie bewusst fest (Dokumente/Schreibtisch sync, Projekte/Developer/Ressourcen lokal).

MacBook auspacken und unverbunden einschalten

Das Gerät zunächst ohne Dock und ohne Monitor aufsetzen – nur Netzteil. Externe Peripherie (Dock, BenQ, Volt 2, Logitech-Geräte) wird in Phase 2 angeschlossen. Das vermeidet HDR/Resolution-Edge-Cases im Setup-Assistenten.

  • Netzteil anschließen (USB-C → MagSafe oder direkt USB-C)
  • Deckel öffnen → Mac startet automatisch
  • Sprache: Deutsch, Region: Deutschland

"Set Up with iPhone" nutzen (iOS 19+)

Apple überträgt WLAN-Passwort, Apple-ID, Sprache/Region und Datenschutzeinstellungen drahtlos vom iPhone. Spart fünf Minuten Tippen.

  1. Entsperrtes iPhone (mit aktuellem iOS) neben das MacBook legen
  2. Auf dem iPhone erscheint ein Dialog → Fortfahren
  3. Code-Bestätigung am MacBook abtippen
  4. WLAN und Apple-ID werden übernommen, 2FA läuft über iPhone

iCloud-Setup mit klarer Sync-Strategie

Im Setup wirst du nach iCloud-Diensten gefragt. Erst grundsätzlich aktivieren, die fein-granulare Auswahl machen wir später (Phase 6). Wichtig jetzt:

  • iCloud Drive aktivieren
  • Schlüsselbund (Keychain) aktivieren – Passwörter syncen vom alten Mac
  • Fotos später entscheiden (große Library!)
  • Nachrichten in iCloud aktivieren
  • Apple Music / News / Mail nach Bedarf
OrdneriCloudBegründung
~/Dokumente✅ JaKleine Dateien, Zugriff vom iPhone
~/Schreibtisch✅ JaSchneller Zugriff überall
~/Projekte❌ LokalGroße Dateien, externe SSD-Auslagerung
~/Developer❌ LokalGit ist der Sync
~/Ressourcen❌ LokalSample-Libraries zu groß

FileVault sofort aktivieren

Verschlüsselt die interne SSD transparent mit dem T2/Secure-Enclave-Schlüssel. Ohne FileVault ist ein verlorener oder gestohlener Mac ein offenes Buch.

  1. Apple-Menü → Systemeinstellungen
  2. Datenschutz & Sicherheit → bis zu FileVault scrollen
  3. Aktivieren klicken
  4. Wahl: "iCloud-Account erlaubt Entsperrung" – bequem; alternativ Recovery-Key generieren und im Passwort-Manager sichern
FileVault-Status prüfen
fdesetup status

Touch ID und Apple Watch Entsperrung einrichten

  1. Systemeinstellungen → Touch ID & Code
  2. Fingerabdruck hinzufügen → mindestens 2 Finger registrieren (Daumen + Zeigefinger jeder Hand sinnvoll)
  3. Apple Watch-Schalter aktivieren → entsperrt den Mac, wenn die Uhr am Handgelenk sitzt

Migrationsentscheidung treffen: Clean Install vs. Migrationsassistent

WegVorteileNachteile
Migrationsassistent (TB-Kabel oder Netzwerk)Sehr schnell, übernimmt Apps + Configs + Lizenzen automatischAuch Müll und alte Permissions wandern mit; iCloud-Pfade müssen korrigiert werden
Clean Install + selektive MigrationFrischer Start, präzise Kontrolle was übernommen wird, beste PerformanceMehr manuelle Arbeit (~1–2 Tage)

Für diesen Tracker: "Jetzt nicht übertragen" wählen im Setup-Assistenten – Migration läuft in Phase 3 strukturiert ab.

macOS sofort auf neueste Version updaten

Auch ein neues Gerät kommt mit dem Build vom Werk – das Setup landet meist mindestens 1–2 Patches zurück. Vor jeder weiteren Konfiguration: voll patchen.

  1. Apple-Menü → Systemeinstellungen
  2. Allgemein → Softwareupdate
  3. Optional: "Erweitert" → Sicherheits- und Systemupdates automatisch installieren ✅
  4. Falls Update verfügbar: jetzt installieren (Neustart einplanen)
macOS-Version per Terminal prüfen
sw_vers

Gerätenamen und Hostnamen sauber setzen

Der Name erscheint im Netzwerk, in AirDrop, in Time Machine und bei "Find My". Aussagekräftig setzen, nicht "Roys MacBook Pro (2)".

Gerätename setzen (Beispiel)
# Computer-, Host- und lokaler Hostname auf einen Namen vereinheitlichen
sudo scutil --set ComputerName "zkybook"
sudo scutil --set HostName "zkybook"
sudo scutil --set LocalHostName "zkybook"

# Prüfen
scutil --get ComputerName
scutil --get HostName
scutil --get LocalHostName
Phase 02
0/7

Hardware-Aufbau & Anschluss

TB5-Dock, BenQ EW3270U, Volt 2, Logitech-Geräte, Speicheraufteilung

Jetzt kommt die Peripherie an Bord. Die Reihenfolge ist wichtig: erst Strom ans Dock, dann Dock an den Mac, dann erst Monitor/Audio/Eingabegeräte – sonst zickt USB-Bandbreite oder HDR-Handshake. Außerdem klären wir die Aufgabenteilung der beiden externen Datenträger, weil sie im weiteren Setup ständig auftauchen.

Aufgabenteilung: 5 TB HDD (Time Machine) und 2 TB TB4-SSD (Libraries) festlegen

Die zwei externen Datenträger haben unterschiedliche Rollen. Diese Trennung zieht sich durch das gesamte Setup und sollte jetzt mental verankert werden.

DatenträgerRolleBegründung
5 TB externe HDDTime Machine (2,5 TB Limit) + Archiv (Musik 1,5 TB / Bilder 0,7 TB)Time Machine ist inkrementell und im Hintergrund – Durchsatz egal. HDD-€/TB schlägt SSD um Faktor 4-5; die Restlaufzeit fürs Archiv-Volume ist großzügig.
2 TB Thunderbolt-4 SSDSample-Libraries (Kontakt, Logic-Sampler, IRs), DJ-Library (Rekordbox), inaktive DaVinci-Resolve-Projekte/Caches, Plug-In-Content, ScratchHier zählt Latenz und Durchsatz (~2.600 MB/s). Streaming aus Sample-Libraries und 4K-Resolve-Material profitiert massiv – die HDD würde hier ausbremsen.
5 TB Cold-Storage HDD #2Kopie von Musik + Bilder, extern gelagert (exFAT)Brandschutz / Diebstahl: Wenn die Wohnung brennt, sind Musik + Bilder noch da. Update alle 3–6 Monate per rsync.

Anker Thunderbolt-5-Dock korrekt anschließen

  1. Dock zuerst an die Steckdose (eigenes Netzteil) – nicht über MacBook-Netzteil
  2. Thunderbolt-Kabel vom Dock in den TB-Port am MacBook (linke Seite zuerst, dort sitzen die vollwertigen TB5-Ports)
  3. Erst dann Monitor, Audio, USB-Geräte ans Dock hängen

BenQ EW3270U für 4K @ 60 Hz + HDR konfigurieren

Der BenQ EW3270U ist ein 32"-VA-Panel mit 3840×2160, HDR10 ("HDRi"-Marketing) und max. 60 Hz bei 4K. Damit das stabil ankommt, muss die Verkabelung passen.

Kabel/Port4K @ 60 Hz?HDR10?Hinweis
DisplayPort 1.4 (Dock → Monitor)✅ Ja✅ JaBeste Wahl – höchste Bandbreite
HDMI 2.0✅ Ja✅ JaFunktioniert, aber HDMI-Quelle am Monitor explizit wählen
USB-C-DP-Alt-Mode (direkt am Mac, ohne Dock)✅ Ja✅ JaNotfall-Option, blockiert einen TB-Port
HDMI 1.4 oder DP 1.2❌ Nein (nur 30 Hz)❌ NeinVeraltetes Kabel – tauschen
  1. OSD am Monitor → Eingangsquelle auf den genutzten Port stellen (HDMI oder DP)
  2. macOS Systemeinstellungen → Displays
  3. Auflösung: Skaliert → Mehr Platz (zeigt mehr als das Default-2560×1440-Äquivalent; bei 32" gut lesbar)
  4. Bildwiederholrate: 60 Hz – falls 30 Hz angezeigt: Kabel/Port prüfen!
  5. High Dynamic Range aktivieren (Toggle)
  6. Hellig­keit beim Spielen von HDR-Video: aktivieren
  • True Tone ist beim externen Display nicht aktiv (nur intern)
  • Nachtschicht in Displays → Nachtschicht-Tab zeitlich einplanen (z. B. 21:00–7:00)
  • Farbprofil: Standard belassen; Feinkalibrierung in Phase 8 mit BetterDisplay

Universal Audio Volt 2 anschließen

Die Volt 2 ist class-compliant – kein Treiber unter macOS nötig. Direkt am Dock per USB-C oder USB-A. Für niedrige Latenz im Studio empfehlen wir direkt ans MacBook, alltagsmäßig reicht das Dock locker.

  1. USB-Kabel von Volt 2 ans Dock (oder direkt ans MacBook)
  2. Netzteil der Volt 2 anschließen (Phantom-Power braucht den Strom-Boost)
  3. Monitore/Kopfhörer/Instrumente an Volt 2 patchen
  4. Spotlight → Audio-MIDI-Setup öffnen → Volt 2 als Standard-In/Out wählen
  5. Samplerate: 48 kHz / 24 bit (Standard für Logic-Sessions)

MX Keys S + MX Master 3s koppeln

Beide Geräte können per Bluetooth direkt oder per Logi-Bolt-Empfänger (USB-A am Dock) verbunden werden. Bolt = stabiler & niedrigere Latenz; Bluetooth = ein USB-Port weniger belegt.

  • Empfehlung: Logi Bolt für die Maus (Trackerlatenz), Bluetooth für die Tastatur
  • Maus/Tastatur einschalten (Schiebeschalter am Boden)
  • Easy-Switch-Taste (1/2/3) lang drücken bis LED blinkt → Kopplungsmodus
  • Systemeinstellungen → Bluetooth oder Logi Options+ (kommt in Phase 5/8)

Externe Datenträger anschließen und benennen

Damit Time Machine und die Library-SSD später ohne Überraschungen funktionieren: jetzt einmal an den Mac, im Festplattendienstprogramm sichten, Volume-Namen prüfen.

Alle angeschlossenen Volumes auflisten
diskutil list

# Detail zu einem Volume (z.B. disk4s2):
diskutil info disk4s2
  • 5 TB HDD: später als Time Machine umbenennen (APFS, Phase 9)
  • 2 TB TB4-SSD: z. B. Libraries (APFS, Phase 7)
  • 5 TB HDD #2: später als Cold Storage (exFAT, Phase 9)

Kabel-Management am Dock-Setup

  • Klett-Kabelbinder an den langen Zuleitungen (Strom, Monitor, USB-Hubs)
  • Volt 2 möglichst auf Schreibtisch, nicht hinterm Monitor – Pegel-Drehknopf muss greifbar sein
  • MX-Master-Empfänger an einem frontseitigen USB-A-Port des Docks – sonst Sichtblockierung
  • BenQ-Stromkabel auf separate Steckdose; bei HDR-Last zieht das Netzteil ordentlich
Phase 03
0/10

Datenmigration vom Mac mini M2

Lizenzen deaktivieren, Backups sichern, App-Inventar, Übergang

Bevor irgendetwas vom Mac mini gelöscht wird: Lizenzen deaktivieren (DaVinci Resolve Studio, Adobe CC, MS Office), App-Inventar exportieren, SSH/GPG/Mail/Configs sichern. Empfohlener Weg: Clean Install mit selektiver Migration. Der Migrationsassistent bleibt als Notfall-Option.

⛔ Lizenzen auf dem alten Mac mini deaktivieren – VOR Datenlöschung!

SoftwareAktionWo
DaVinci Resolve StudioDeaktivierenHelp → Deactivate License
Adobe Creative CloudAus allen Apps abmeldenCreative Cloud App → Konto → Abmelden
Microsoft OfficeAbmeldenIn jeder App: Konto → Abmelden
iLok-Plug-InsOptional: Lizenzen auf iLok-Stick / iLok Cloud verschiebeniLok License Manager
Native InstrumentsDeautorisierungNative Access → Konto → Mac deautorisieren
Topaz Video AI / Photo AISitzung abmeldenHelp → Sign Out
Screen StudioAbmeldenSettings → Account → Sign Out
Luminar NeoAbmeldenAccount → Sign Out
AffinityAbmeldenHelp → Sign Out / Manage License
motionVFXmInstaller deautorisierenmInstaller → Sign Out
iMessage / FaceTimeAbmelden (sonst Multi-Device-Konflikte)Nachrichten → Einstellungen → Abmelden

App-Inventar des Mac mini in eine Datei exportieren

Damit du nach dem Clean Install nichts vergisst und das Brewfile vollständig wird. Befehle auf dem Mac mini (nicht auf dem MacBook!) ausführen, Outputs landen auf der Backup-SSD/HDD.

Auf dem Mac mini – App-Listen erzeugen
BACKUP="/Volumes/BACKUP/MacMini-Inventar-$(date +%Y%m%d)"
mkdir -p "$BACKUP"

# Klassische Apps
ls -1 /Applications > "$BACKUP/apps-applications.txt"
ls -1 ~/Applications 2>/dev/null > "$BACKUP/apps-user.txt"

# Homebrew
brew bundle dump --describe --file="$BACKUP/Brewfile" 2>/dev/null
brew list > "$BACKUP/brew-formulas.txt"
brew list --cask > "$BACKUP/brew-casks.txt"

# Sprach-Toolchains
npm list -g --depth=0 2>/dev/null > "$BACKUP/npm-global.txt"
pip3 list 2>/dev/null > "$BACKUP/pip-packages.txt"

# Editor-Extensions
code --list-extensions > "$BACKUP/vscode-extensions.txt" 2>/dev/null

# Plug-Ins (Audio)
ls -1 ~/Library/Audio/Plug-Ins/Components > "$BACKUP/au-plugins.txt" 2>/dev/null
ls -1 ~/Library/Audio/Plug-Ins/VST3 > "$BACKUP/vst3-plugins.txt" 2>/dev/null

# Fonts (eigene)
ls -1 ~/Library/Fonts > "$BACKUP/user-fonts.txt" 2>/dev/null

echo "Inventar in $BACKUP"

SSH-Keys + Git-Config sichern (zum späteren Reuse oder als Referenz)

Auf dem Mac mini – Configs sichern
BACKUP="/Volumes/BACKUP/MacMini-Configs-$(date +%Y%m%d)"
mkdir -p "$BACKUP"

# SSH (komplette Verzeichnisstruktur, Berechtigungen mit)
cp -Rp ~/.ssh "$BACKUP/ssh"

# Git
cp ~/.gitconfig "$BACKUP/" 2>/dev/null
cp ~/.gitignore_global "$BACKUP/" 2>/dev/null

# Shell
cp ~/.zshrc "$BACKUP/" 2>/dev/null
cp ~/.zprofile "$BACKUP/" 2>/dev/null
cp ~/.zshenv "$BACKUP/" 2>/dev/null

# Editor / Terminal Settings
cp -R ~/Library/Application\ Support/Code/User "$BACKUP/vscode-user" 2>/dev/null
cp -R ~/Library/Application\ Support/Zed "$BACKUP/zed" 2>/dev/null
cp -R ~/Library/Application\ Support/com.mitchellh.ghostty "$BACKUP/ghostty" 2>/dev/null

# Hosts-Datei (falls angepasst)
sudo cp /etc/hosts "$BACKUP/etc-hosts"

# Karabiner (falls verwendet)
cp -R ~/.config/karabiner "$BACKUP/karabiner" 2>/dev/null

echo "Configs in $BACKUP"

GPG-Keys, 2FA-Backup-Codes, Passwort-Manager prüfen

GPG-Keys exportieren (falls vorhanden)
gpg --list-secret-keys

# Private Keys exportieren
gpg --export-secret-keys --armor > /Volumes/BACKUP/gpg-private-keys.asc
gpg --export --armor > /Volumes/BACKUP/gpg-public-keys.asc
gpg --export-ownertrust > /Volumes/BACKUP/gpg-ownertrust.txt
  • Passwort-Manager (1Password/Bitwarden) – Cloud-Sync aktiv? Master-Passwort sicher?
  • 2FA-Backup-Codes aller wichtigen Konten (Apple-ID, Google, GitHub, Hetzner, Bank) im Passwort-Manager?
  • Apple Keychain – synct via iCloud, aber prüfen ob iCloud-Keychain in den Systemeinstellungen aktiv ist
  • Authenticator-App (Authenticator, Authy, Aegis): Backup/Export?

Mail, Browser-Daten und Lesezeichen sichern

Mail-Daten + Browser-Profile
BACKUP="/Volumes/BACKUP/MacMini-Apps-$(date +%Y%m%d)"
mkdir -p "$BACKUP"

# Apple Mail (POP3 = lokal! IMAP = nur Settings nötig)
cp -R ~/Library/Mail "$BACKUP/AppleMail" 2>/dev/null
cp ~/Library/Preferences/com.apple.mail.plist "$BACKUP/" 2>/dev/null

# Chrome / Firefox / Opera / DuckDuckGo Profile
cp -R ~/Library/Application\ Support/Google/Chrome "$BACKUP/Chrome" 2>/dev/null
cp -R ~/Library/Application\ Support/Firefox "$BACKUP/Firefox" 2>/dev/null
cp -R ~/Library/Application\ Support/com.operasoftware.Opera "$BACKUP/Opera" 2>/dev/null

# Notion / Obsidian Vaults (Pfade prüfen!)
cp -R ~/Library/Application\ Support/Notion "$BACKUP/Notion" 2>/dev/null
# Obsidian-Vault liegt da, wo DU ihn angelegt hast – das ist NICHT der Application-Support-Ordner!
# Beispiel:
# cp -R ~/Documents/Obsidian "$BACKUP/Obsidian-Vault"

echo "App-Daten in $BACKUP"

Logic Pro / Ableton Projekte konsolidieren

Sample-Pfade brechen beim Umzug – "Projekt konsolidieren" bzw. "Sammeln und sichern" packt alle externen Samples ins Projekt, damit später am MacBook nichts fehlt.

  • Logic Pro: Datei → Projekt-Verwaltung → Projekt konsolidieren (zieht Samples + EXS24-Instrumente in den Projektordner)
  • Ableton Live: Datei → Alles im Projekt sammeln und sichern
  • Konsolidierte Projektordner auf Backup-SSD/HDD kopieren
  • Eigene Samples / Sound-Libraries: ~/Library/Audio, ~/Library/Application Support/Logic/Sampler Instruments
  • Plug-In-Presets: ~/Library/Audio/Presets

Schnell-Backup-Script auf dem Mac mini ausführen

Falls noch keines existiert – ein Rundum-Sorglos-Script, das die wichtigsten User-Daten auf die Backup-Platte zieht. Pfade an deine Backup-SSD anpassen.

Auf dem Mac mini – Schnell-Backup schnell-backup-mac-mini.sh
#!/bin/bash
set -e
BACKUP="/Volumes/BACKUP/MacMini-Full-$(date +%Y%m%d)"
mkdir -p "$BACKUP"

echo "=== Schnell-Backup Mac mini → $BACKUP ==="

# Auth & Dev
cp -Rp ~/.ssh "$BACKUP/"
cp ~/.gitconfig "$BACKUP/" 2>/dev/null || true
cp ~/.gitignore_global "$BACKUP/" 2>/dev/null || true

# Shell
cp ~/.zshrc ~/.zprofile ~/.zshenv "$BACKUP/" 2>/dev/null || true

# Dokumente
cp -R ~/Documents "$BACKUP/Documents"
cp -R ~/Desktop "$BACKUP/Desktop"

# Projekte / Developer (sehr wichtig!)
[ -d ~/Projekte ] && cp -R ~/Projekte "$BACKUP/Projekte"
[ -d ~/Developer ] && cp -R ~/Developer "$BACKUP/Developer"

# Logic
[ -d ~/Music/Logic ] && cp -R ~/Music/Logic "$BACKUP/Logic"
[ -d "$HOME/Music/Audio Music Apps" ] && cp -R "$HOME/Music/Audio Music Apps" "$BACKUP/AudioMusicApps"

# Inventar
ls -1 /Applications > "$BACKUP/apps-liste.txt"
brew bundle dump --describe --file="$BACKUP/Brewfile" 2>/dev/null || true

echo "Fertig: $BACKUP"
du -sh "$BACKUP"

Letztes Time-Machine-Backup auf dem Mac mini auslösen

Bevor du den alten Rechner aus dem Setup nimmst: ein finales TM-Backup, das wir später (falls nötig) als Migrations-Quelle nutzen können.

Backup starten und Fortschritt verfolgen
tmutil startbackup --block
tmutil status

Übergang: Apple-ID und WLAN bleiben auf beiden Geräten aktiv

  • Apple-ID NICHT abmelden auf dem Mac mini, solange er noch im Setup-Übergang ist – sonst Probleme mit iMessage-History
  • Beide Macs hängen im selben WLAN → Migrationsassistent (falls genutzt) findet sich automatisch
  • Bluetooth-Geräte ggf. am Mac mini abkoppeln, bevor sie ans MacBook gekoppelt werden (sonst Connection-Flapping)

(Optional) Migrationsassistent statt Clean Install

Wenn du dich gegen den Clean Install entscheidest: der Assistent läuft so.

  1. Auf beiden Macs Migrationsassistent öffnen
  2. Neuer Mac: Von einem Mac, Time Machine-Backup oder Startvolume
  3. Alter Mac: Zu einem anderen Mac
  4. Code-Übereinstimmung bestätigen
  5. Auswählen: Apps + Benutzer + Einstellungen + Dokumente
  6. Übertragung läuft (TB-Kabel ist 10× schneller als WLAN; ~30–60 min für 200 GB)
Phase 04
0/12

macOS-Grundkonfiguration (Tahoe-spezifisch)

Finder, Dock, Trackpad, Liquid Glass, Spotlight Quick Keys, Akku-Limit

Jetzt machen wir das frische macOS Tahoe alltagstauglich. Finder bekommt die für Power-User selbstverständlichen Toggles, Dock und Trackpad werden entrümpelt, neue Tahoe-Features (Liquid Glass, Spotlight Quick Keys, iPhone Mirroring, Akku 80 %) konfiguriert. Am Schluss ein Block kopierbarer defaults write-Befehle für die Dinge, die Apple in den GUI versteckt hat.

Finder: Pfadleiste, Statusleiste, Dateiendungen

  1. Finder öffnen
  2. Menü DarstellungPfadleiste einblenden
  3. Menü DarstellungStatusleiste einblenden
  4. Menü Finder → Einstellungen (Cmd+,) → Erweitert
  5. Alle Dateinamenssuffixe einblenden
  6. Bei Suche: Den aktuellen Ordner durchsuchen
  7. Vor Entfernen des Papierkorbs warnen ❌ (ich weiß was ich tue)
  8. Tab Allgemein: Neues Finder-Fenster zeigt~/Projekte (oder Home)
Optional: dieselben Einstellungen per defaults
# Pfadleiste + Statusleiste
defaults write com.apple.finder ShowPathbar -bool true
defaults write com.apple.finder ShowStatusBar -bool true

# Dateiendungen immer anzeigen
defaults write NSGlobalDomain AppleShowAllExtensions -bool true

# Suche im aktuellen Ordner
defaults write com.apple.finder FXDefaultSearchScope -string "SCcf"

# Versteckte Dateien sichtbar
defaults write com.apple.finder AppleShowAllFiles -bool true

# Finder neu starten
killall Finder

Dock aufräumen und positionieren

  1. Systemeinstellungen → Schreibtisch & Dock
  2. Größe: zwei Drittel der Maximalgröße
  3. Position: links (mehr vertikaler Bildschirmplatz auf 32:9-ähnlichem 32" 4K)
  4. Vergrößerung: aus (oder dezent)
  5. Zuletzt verwendete Apps anzeigen: ❌ aus
  6. Dock automatisch ein-/ausblenden: nach Geschmack
  7. Ungewollte Apps aus dem Dock ziehen, bis 'Entfernen' erscheint
Defaults-Variante
defaults write com.apple.dock orientation -string "left"
defaults write com.apple.dock show-recents -bool false
defaults write com.apple.dock tilesize -int 48
defaults write com.apple.dock autohide -bool false
defaults write com.apple.dock mineffect -string "scale"
killall Dock

Trackpad & Maus: Gesten und Geschwindigkeit

  1. Systemeinstellungen → Trackpad
  2. Zeigen und Klicken: Klick durch Tippen
  3. Mehr Gesten: App-Exposé ✅, Mission Control = 4 Finger hoch
  4. Tracking-Geschwindigkeit: rechts der Mitte (Power-User)
  5. Systemeinstellungen → Bedienungshilfen → Zeigersteuerung → Trackpad-Optionen: 3-Finger-Drag aktivieren (Profi-Geste: Fenster ohne Klick verschieben)
  • Maus (MX Master 3s): Geschwindigkeit ebenfalls hochsetzen – Feintuning später mit Logi Options+ (Phase 8)

Tastatur: Wiederholrate, Autokorrektur, Funktionstasten

  1. Systemeinstellungen → Tastatur
  2. Tastenwiederholung: max. (ganz rechts)
  3. Verzögerung bis Wiederholung: kurz (zweite Stufe rechts)
  4. Bei Texteingabe → Bearbeiten: Rechtschreibung automatisch korrigieren ❌ aus
  5. Smart Quotes / Em-Dashes: nach Geschmack – Entwickler-Hinweis: aus, sonst Code-Snippets in Notion/Slack kaputt
  6. F1-F12 als Standard-Funktionstasten: in Tastatur → Tastaturkurzbefehle → Funktionstasten
Defaults: sehr schnelle Wiederholrate
defaults write NSGlobalDomain KeyRepeat -int 2
defaults write NSGlobalDomain InitialKeyRepeat -int 15

# Autokorrektur und Smart Quotes aus
defaults write NSGlobalDomain NSAutomaticSpellingCorrectionEnabled -bool false
defaults write NSGlobalDomain NSAutomaticQuoteSubstitutionEnabled -bool false
defaults write NSGlobalDomain NSAutomaticDashSubstitutionEnabled -bool false

Tahoe Liquid Glass: Transparenz reduzieren / Tinted-Akzent

Liquid Glass ist hübsch, kann aber bei viel Code/Text unruhig wirken. Zwei Stellschrauben helfen.

  1. Systemeinstellungen → Erscheinungsbild
  2. Dunkel oder Automatisch
  3. Tinted (Getönt) wählen → mildert den Lichtbrechungs-Effekt
  4. Systemeinstellungen → Bedienungshilfen → Anzeige
  5. Transparenz reduzieren ✅ (für ruhigeres Bild)
  6. Kontrast erhöhen ❌ (nur bei Bedarf – ändert die Optik massiv)

Solide Menüleiste statt durchsichtig

  1. Systemeinstellungen → Schreibtisch & Dock
  2. Bereich MenüleisteMenüleisten-Hintergrund anzeigen

Spotlight Quick Keys nutzen (Tahoe-Feature)

Spotlight ist in Tahoe ein Action-Hub. Mit modifier-Tasten filterst du direkt.

ShortcutEffekt
Cmd + SpaceSpotlight öffnen
Cmd + 1Nur Apps
Cmd + 2Nur Dateien
Cmd + 3Nur Aktionen (Shortcuts)
Cmd + 4Zwischenablage-Historie

iPhone Mirroring aktivieren

  1. iPhone Mirroring-App aus dem Dock öffnen (vorinstalliert)
  2. Anweisungen folgen, iPhone bestätigt die Kopplung
  3. Drag & Drop zwischen Mac und iPhone funktioniert in beide Richtungen

Akku-Limit 80 % setzen (Tahoe 26.4+)

  1. Systemeinstellungen → Batterie
  2. Neben Batteriezustand auf das (i) klicken
  3. Optimiertes Laden auf festes Limit umstellen → 80 %

Vor längeren Reisen ohne Steckdose vorübergehend auf 100 % stellen.

Hot Corners mit Modifier-Tasten

Aktive Ecken ohne Modifier triggern zu oft beim Mausweg-Bewegen. Mit gedrückter cmd oder option hingegen praktisch.

  1. Systemeinstellungen → Schreibtisch & Dock → ganz unten Aktive Ecken
  2. Cmd halten, während du eine Funktion (z. B. Bildschirm sperren) auswählst
  3. Beispiele: unten-rechts = Bildschirm sperren (Cmd), oben-rechts = Mission Control (Cmd)

Apple Watch Entsperrung + Hotspot-Hinweise

  • Touch ID & Code → Apple Watch ✅ (haben wir in Phase 1 ggf. schon)
  • WLAN → Auf Hotspots hinweisen ✅ (iPhone als Notfall-Hotspot)

defaults-write-Bundle: Komfort-Tweaks am Stück

Praktische macOS-Defaults, die Apple in keiner GUI anbietet. Block kopieren, im Terminal einfügen, ggf. ab-/zu-kommentieren. Effekt erst nach killall Finder/Dock bzw. Logout/Neustart sichtbar.

macOS-Komfort-Defaults macos-defaults.sh
#!/bin/bash
# macOS-Komfort-Defaults – einmal nach Phase 1-4 ausführen.

# --- Screenshots in ~/Pictures/Screenshots statt Schreibtisch ---
mkdir -p ~/Pictures/Screenshots
defaults write com.apple.screencapture location ~/Pictures/Screenshots
defaults write com.apple.screencapture type -string "png"
defaults write com.apple.screencapture show-thumbnail -bool true

# --- Standardansicht im Finder: Liste ---
defaults write com.apple.finder FXPreferredViewStyle -string "Nlsv"

# --- Tabs statt Fenster bevorzugen ---
defaults write NSGlobalDomain AppleWindowTabbingMode -string "always"

# --- Beim Speichern: detaillierter Save-Dialog (mit allen Ordnern) ---
defaults write NSGlobalDomain NSNavPanelExpandedStateForSaveMode -bool true
defaults write NSGlobalDomain NSNavPanelExpandedStateForSaveMode2 -bool true

# --- Drucken: Drucker-Dialog detailliert ---
defaults write NSGlobalDomain PMPrintingExpandedStateForPrint -bool true
defaults write NSGlobalDomain PMPrintingExpandedStateForPrint2 -bool true

# --- Per Standard auf 'Speichern' bei Schließen (statt Verwerfen) ---
defaults write NSGlobalDomain NSCloseAlwaysConfirmsChanges -bool true

# --- Schreibtisch: Externe Volumes anzeigen (Time-Machine-HDD sichtbar) ---
defaults write com.apple.finder ShowExternalHardDrivesOnDesktop -bool true
defaults write com.apple.finder ShowRemovableMediaOnDesktop -bool true
defaults write com.apple.finder ShowMountedServersOnDesktop -bool true

# --- Spaces NICHT automatisch neu anordnen ---
defaults write com.apple.dock mru-spaces -bool false

# --- Quick Look: Text in Quick Look auswählbar ---
defaults write com.apple.finder QLEnableTextSelection -bool true

# --- Mission Control: Animationen kürzer ---
defaults write com.apple.dock expose-animation-duration -float 0.12

# --- Save Screenshots/Screen Capture als PNG (oben schon, hier no-op) ---

# Anwenden
killall Finder
killall Dock
killall SystemUIServer

echo "Defaults gesetzt. Logout für volle Wirkung."
Phase 05
0/8

Homebrew & Software-Installation

Homebrew unter /opt/homebrew, Brewfile-Bundle, manuelle Installer

Die schnellste Art, ein komplettes macOS-Power-User-Setup aufzubauen: Homebrew + ein gepflegtes Brewfile. Wir installieren Homebrew unter /opt/homebrew (Apple-Silicon-Pfad), spielen das vollständige Brewfile (basierend auf deinem Mac-mini-Inventar Januar 2026) ein, und führen die nicht-Brew-Installer separat auf (Adobe, Apple-iWork, UA Connect, Xcode).

Xcode Command Line Tools installieren

Voraussetzung für Homebrew, git und viele Build-Steps. Apple lädt die Tools (~500 MB) selbstständig nach.

CLT installieren
xcode-select --install

Homebrew installieren (Apple Silicon → /opt/homebrew)

Offizielle Install-Routine
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

Der Installer schreibt am Ende die nötigen PATH-Zeilen ins Terminal. Diese in ~/.zprofile übernehmen, sonst findet die Shell brew nicht.

PATH dauerhaft setzen
echo >> ~/.zprofile
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofile
eval "$(/opt/homebrew/bin/brew shellenv)"

# Prüfen
which brew    # → /opt/homebrew/bin/brew
brew --version

Brewfile herunterladen und installieren

Das finale Brewfile liegt rechts zum Download – oder direkt aus diesem Projekt. Es enthält alle CLI-Tools, Casks und VS-Code-Extensions aus deinem Inventar.

Brewfile-Bundle einspielen brew-bundle.sh
# Brewfile in ein Arbeitsverzeichnis legen (Beispiel: Downloads)
cd ~/Downloads

# Bundle installieren – Casks brauchen ggf. sudo-Passwort für /Applications
brew bundle --file=Brewfile --verbose

# Was hat NICHT geklappt?
brew bundle check --file=Brewfile

# Cleanup: alles deinstallieren, was NICHT im Brewfile steht (vorsichtig!)
# brew bundle cleanup --file=Brewfile --force

Mac App Store CLI (mas) für App-Store-Apps

mas kommt im Brewfile mit. Apple-ID-Login muss einmalig manuell im App Store erfolgen (mas kann kein Login mehr triggern seit macOS 10.15).

Installierte App-Store-Apps anzeigen
mas list

# App im Store suchen
mas search "Logic Pro"

# App installieren (ID herausfinden mit 'mas search')
# mas install 634148309   # Logic Pro
# mas install 409183694   # Keynote
# mas install 409203825   # Numbers
# mas install 409201541   # Pages
# mas install 1289583905  # Pixelmator Pro

VS Code Extensions per Brewfile

Das Brewfile enthält bereits vscode "…"-Zeilen für alle deine Extensions. brew bundle installiert sie automatisch – Voraussetzung: code-CLI ist im PATH (kommt mit dem VS-Code-Cask).

code-CLI prüfen / Extensions verifizieren
which code
code --version
code --list-extensions | sort

Adobe Creative Cloud installieren (manuell)

Adobe ist nicht über Homebrew distribuierbar. Auf creativecloud.adobe.com die Creative-Cloud-App laden und mit Adobe-ID anmelden, dann gewünschte Apps installieren.

  • Adobe Photoshop 2026
  • Adobe Illustrator 2026
  • Adobe Audition 2026
  • Adobe Acrobat DC
  • Adobe Character Animator 2025 (optional)
  • Adobe Photoshop Beta (optional)

Andere manuelle Installer (Affinity, UA Connect, MAS-only)

AppQuelle / Vertriebsweg
Affinity (Photo / Designer / Publisher)affinity.serif.com + Serif-Konto
Logic ProMac App Store (Apple-ID)
Keynote / Numbers / PagesMac App Store
GarageBandMac App Store
Pixelmator ProMac App Store
XcodeMac App Store (~15 GB)
UA Connectuaudio.com – Volt-2-Treiber/Bundle
Blackmagic RAW / Proxy Generatorblackmagicdesign.com
Microsoft OfficeMicrosoft-Konto + Installer (oder MAS)
Garmin ExpressCask vorhanden – sonst Garmin.com
Ultimate Vocal RemoverGitHub-Release (manuell)
Meta Quest Remote Desktop / Virtual Desktop Streamer / ImmersedAnbieter-Seiten
motionVFXmInstaller von motionvfx.com
AntigravityUnbekannte Quelle – nur installieren, wenn vertrauenswürdiger Distributor

Homebrew-Pflege-Routinen einrichten

Damit Homebrew nicht verkrustet: ein Aliase-Block in ~/.zshrc und ein kurzes Pflege-Script.

~/.zshrc – Brew-Aliase
# --- Homebrew Aliases ---
alias bup='brew update && brew upgrade && brew upgrade --cask && brew cleanup'
alias bls='brew leaves'
alias bcheck='brew doctor && brew missing'
alias bdump='brew bundle dump --describe --force --file=~/Ressourcen/Dev/Brewfile'
Wöchentliche Pflege
# Update + Upgrade alles + Cleanup
brew update
brew upgrade
brew upgrade --cask
brew autoremove
brew cleanup

# Probleme prüfen
brew doctor
Phase 06
0/11

Entwicklungsumgebung

Git, SSH (neu generiert), Shell, Node/Python, Claude Code, Ordnerstruktur

Frische, saubere Dev-Umgebung statt 1:1-Klon. Neue SSH-Keys (ed25519), Git-User/Email konfigurieren, ZSH mit Starship-Prompt + Autosuggestions, Node-Versionsmanagement, Python via Brew/uv, Claude Code CLI, und die Projekt-Ordnerstruktur, die der Backup-Konzeption aus Phase 9 zugrunde liegt.

Projekt-Ordnerstruktur anlegen

Diese Struktur ist die Basis für iCloud-Sync, Time Machine, BorgBackup und alle späteren Pfad-Annahmen. Einmal anlegen, dann nie wieder ändern.

Ordnerstruktur create-folders.sh
# --- Aktive Projekte ---
mkdir -p ~/Projekte/{_Archive,_Templates,Audio/{Logic,Ableton,Bitwig},Video/{DaVinci,Footage,Proxies},Dev,Design,DJ}

# --- Ressourcen (projektübergreifend) ---
mkdir -p ~/Ressourcen/{Audio/{Samples,Kontakt-Libraries,Presets,IRs,Loops},Video/{LUTs,Footage,Overlays,PowerGrades,Templates},Dev/{Snippets,Dotfiles,Templates,Scripts},Design/{Fonts,Mockups,Assets,Icons},Software/{Installer,Lizenzen,Keys}}

# --- Developer (Apple-Konvention für Code) ---
mkdir -p ~/Developer

# --- Scripts + Logs ---
mkdir -p ~/Scripts/logs

# --- Dokumente: persönliche Struktur ---
mkdir -p ~/Documents/Privat/{"Haus & Garten",Fahrzeuge,Finanzen,Versicherungen,Gesundheit,Torry,Reisen}
mkdir -p ~/Documents/Arbeit/Stadtverwaltung

# --- VM-Backups (Proxmox etc.) ---
mkdir -p ~/VM-Backups

echo "Struktur fertig:"
tree -L 2 -d ~/Projekte ~/Ressourcen ~/Developer ~/Scripts ~/Documents 2>/dev/null

iCloud Drive: Schreibtisch- & Dokumente-Sync aktivieren

  1. Systemeinstellungen → Apple-ID → iCloud → iCloud Drive
  2. Optionen klicken
  3. Schreibtisch- & Dokumente-Ordner
  4. Alle anderen App-Toggles (welche App in iCloud Drive speichern darf) durchgehen

Git: User, Email, sinnvolle Defaults

~/.gitconfig setzen
git config --global user.name "Roy Risser"
git config --global user.email "royrisser@gmail.com"

# Sane defaults
git config --global init.defaultBranch main
git config --global pull.rebase true
git config --global pull.ff only
git config --global push.default current
git config --global push.autoSetupRemote true
git config --global core.editor "code --wait"
git config --global core.autocrlf input
git config --global core.excludesFile ~/.gitignore_global
git config --global rerere.enabled true
git config --global fetch.prune true
git config --global merge.conflictstyle zdiff3
git config --global diff.colorMoved zebra
git config --global commit.gpgsign false
~/.gitignore_global anlegen .gitignore_global
# macOS
.DS_Store
.AppleDouble
.LSOverride
Icon?
._*
.Spotlight-V100
.Trashes

# IDE
.vscode/
.idea/
*.swp
*.swo
*~
.history/

# Node / Python
node_modules/
.venv/
__pycache__/
*.pyc
.pytest_cache/
.mypy_cache/

# Build outputs
dist/
build/
.next/
.cache/
.turbo/

# Logs / Env
*.log
.env
.env.local
.env.*.local

# Claude
.claude/
Global ignore aktivieren
git config --global core.excludesFile ~/.gitignore_global

Neue SSH-Keys generieren (ed25519) und bei Diensten hinterlegen

Keys generieren
mkdir -p ~/.ssh && chmod 700 ~/.ssh

# GitHub
ssh-keygen -t ed25519 -f ~/.ssh/id_github -C "royrisser+github@gmail.com" -N ""

# Hetzner-Server (Beispiel)
ssh-keygen -t ed25519 -f ~/.ssh/id_hetzner_server -C "macbook → hetzner-server" -N ""

# Hetzner Storage Box (für BorgBackup)
ssh-keygen -t ed25519 -f ~/.ssh/hetzner_storagebox -C "macbook → storagebox u540244" -N ""

# Berechtigungen härten
chmod 600 ~/.ssh/id_* ~/.ssh/hetzner_*
chmod 644 ~/.ssh/*.pub
~/.ssh/config – sauber strukturieren ssh-config
# === GitHub ===
Host github.com
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_github
    IdentitiesOnly yes
    AddKeysToAgent yes
    UseKeychain yes

# === Hetzner Server (Beispiel) ===
Host hetzner-server
    HostName your-hetzner-server.example
    User root
    IdentityFile ~/.ssh/id_hetzner_server
    IdentitiesOnly yes
    AddKeysToAgent yes
    UseKeychain yes
    ServerAliveInterval 60
    ServerAliveCountMax 3

# === Hetzner Storage Box (BorgBackup) ===
Host hetzner-backup
    HostName u540244.your-storagebox.de
    User u540244
    Port 23
    IdentityFile ~/.ssh/hetzner_storagebox
    IdentitiesOnly yes
    AddKeysToAgent yes
    UseKeychain yes
    ServerAliveInterval 60
    ServerAliveCountMax 3
Public Keys ausgeben (zum Hinterlegen)
# Bei GitHub einfügen → Settings → SSH and GPG keys → New SSH key
pbcopy < ~/.ssh/id_github.pub
echo "GitHub-Key in der Zwischenablage."

# Beim Hetzner Robot (Storage Box → SSH Keys)
pbcopy < ~/.ssh/hetzner_storagebox.pub
echo "Storage-Box-Key in der Zwischenablage."
Verbindungen testen
ssh -T git@github.com
# Erwartete Antwort: "Hi <username>! You've successfully authenticated…"

sftp hetzner-backup
# Wenn 'sftp>' kommt → funktioniert. mit 'exit' raus.

ZSH mit Starship-Prompt + Autosuggestions

macOS bringt zsh mit – wir hängen Starship als modernen Prompt und zsh-autosuggestions als History-Hilfe dran (beide im Brewfile).

~/.zshrc – Kernblock .zshrc
# --- Brew shellenv (kommt aus zprofile – sicherheitshalber hier auch) ---
[ -f /opt/homebrew/bin/brew ] && eval "$(/opt/homebrew/bin/brew shellenv)"

# --- History sinnvoll ---
HISTSIZE=20000
SAVEHIST=20000
HISTFILE=~/.zsh_history
setopt SHARE_HISTORY HIST_IGNORE_DUPS HIST_IGNORE_SPACE HIST_REDUCE_BLANKS INC_APPEND_HISTORY

# --- Completions ---
autoload -Uz compinit && compinit -i
zstyle ':completion:*' menu select
zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}'

# --- Autosuggestions ---
[ -f /opt/homebrew/share/zsh-autosuggestions/zsh-autosuggestions.zsh ] && \
  source /opt/homebrew/share/zsh-autosuggestions/zsh-autosuggestions.zsh

# --- zoxide (smartes cd) ---
command -v zoxide >/dev/null 2>&1 && eval "$(zoxide init zsh)"

# --- fzf Tastatur-Bindings ---
[ -f ~/.fzf.zsh ] && source ~/.fzf.zsh

# --- Starship Prompt ---
command -v starship >/dev/null 2>&1 && eval "$(starship init zsh)"

# --- Aliase ---
alias ls='eza --icons --group-directories-first'
alias ll='eza -l --icons --group-directories-first --git'
alias la='eza -la --icons --group-directories-first --git'
alias lt='eza --tree --level=2 --icons --group-directories-first'
alias cat='bat --plain'
alias grep='rg'
alias find='fd'
alias cdp='cd ~/Projekte'
alias cdd='cd ~/Developer'

# --- Homebrew ---
alias bup='brew update && brew upgrade && brew upgrade --cask && brew cleanup'

# --- Git ---
alias gs='git status -sb'
alias gco='git checkout'
alias gp='git pull'
alias gpu='git push'
alias gl='git log --oneline --graph --decorate --all -20'

# --- Editoren ---
export EDITOR="code --wait"
export VISUAL="code --wait"
fzf-Bindings einmalig installieren
$(brew --prefix)/opt/fzf/install --key-bindings --completion --no-update-rc
Starship-Config (~/.config/starship.toml) starship.toml
add_newline = true
command_timeout = 800

format = """
[╭─](#7a8c93) $username$hostname$directory$git_branch$git_status$nodejs$python$cmd_duration
[╰─](#7a8c93)$character """

[character]
success_symbol = "[›](#3DAD66)"
error_symbol   = "[›](#D24D4D)"

[directory]
truncation_length = 4
style = "bold #6AACBB"

[git_branch]
symbol = " "
style = "#C4653A"

[git_status]
style = "#D4B04A"

[cmd_duration]
min_time = 2_000
format = "[$duration]($style) "
style = "#7a8c93"

tmux Basis-Config

~/.tmux.conf .tmux.conf
# Prefix auf Ctrl-a (statt Ctrl-b)
set -g prefix C-a
unbind C-b
bind C-a send-prefix

# Mouse + 24-bit-Color
set -g mouse on
set -g default-terminal "screen-256color"
set -ga terminal-overrides ",xterm-256color:RGB"

# Vim-Style Pane-Navigation
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R

# Splits intuitiver
bind | split-window -h -c "#{pane_current_path}"
bind - split-window -v -c "#{pane_current_path}"

# Reload Config
bind r source-file ~/.tmux.conf \; display "Config reloaded"

# Statusbar
set -g status-position top
set -g status-bg "#11171a"
set -g status-fg "#d7e5e8"
set -g status-left  "#[fg=#3DAD66] #S "
set -g status-right "#[fg=#6AACBB] %H:%M  #[fg=#C4653A]%d.%m. "

Node, Python, uv: Versionsmanagement

nvm initialisieren (kommt aus Brew)
mkdir -p ~/.nvm

# In ~/.zshrc anhängen (nicht doppeln, falls schon drin)
cat >> ~/.zshrc <<'EOF'

# --- NVM ---
export NVM_DIR="$HOME/.nvm"
[ -s "$(brew --prefix nvm)/nvm.sh" ] && \. "$(brew --prefix nvm)/nvm.sh"
[ -s "$(brew --prefix nvm)/etc/bash_completion.d/nvm" ] && \. "$(brew --prefix nvm)/etc/bash_completion.d/nvm"
EOF

# Shell neu laden, dann LTS installieren
source ~/.zshrc
nvm install --lts
nvm alias default 'lts/*'
node --version
npm --version
Python + uv
# Python kommt im Brewfile (python@3.12 oder neuer)
python3 --version

# uv: schneller pip/poetry-Ersatz (im Brewfile)
uv --version

# Globales Tool installieren:
uv tool install ruff
uv tool install yt-dlp

Claude Code CLI einrichten

Anthropics offizielle Coding-CLI. Wir installieren sie global via npm.

Installation
npm install -g @anthropic-ai/claude-code

# Login (öffnet Browser)
claude /login

# In einem Projekt starten:
cd ~/Projekte/Dev/mein-projekt
claude

OneDrive-Daten via rclone migrieren

Daten aus OneDrive in ~/Documents ziehen, ohne OneDrive-App zu installieren. Spart einen Helper-Daemon, der dauerhaft mit­läuft.

rclone konfigurieren
# rclone ist im Brewfile
rclone config
# → n (new remote)
# → name: onedrive
# → storage: 31 (Microsoft OneDrive)
# → leave client_id/secret empty (default app)
# → region: global
# → leave drive_id default
# → use auto config: y
# → browser-Login durchlaufen
# → q (quit)

# Inhalte sichten
rclone lsd onedrive:

# Komplette Documents migrieren
rclone copy onedrive:Documents ~/Documents/ --progress --transfers 8 --checkers 16

# Danach Remote entfernen
rclone config delete onedrive

Terminal-Wahl: Ghostty / iTerm2 / Warp (optional)

macOS-Terminal reicht nominell, aber für Power-User lohnt es:

TerminalStärkenSchwächen
GhosttySehr schnell (GPU), nativ, schöne DefaultsKonfiguration in TOML, lernt man
iTerm2Reichste Feature-Liste seit Jahrzehnten, Profile, TriggerFühlt sich altbacken an
WarpKI-Integration, Block-basierte OutputsAccount-Pflicht, sendet Telemetrie

Raycast als Spotlight-Ersatz

  1. Raycast aus dem Cask startet automatisch nach Install
  2. Systemeinstellungen → Tastatur → Tastaturkurzbefehle → SpotlightCmd+Space deaktivieren
  3. In Raycast-Einstellungen: Cmd+Space als Trigger setzen
  4. Lieblings-Extensions: Calendar, Clipboard History, Snippets, Window Management, GitHub
Phase 07
0/12

Musikproduktion-Setup

Logic Pro, Ableton, Bitwig, Volt 2, iLok, Rekordbox (DDJ-FLX10), Sample-Libraries auf TB4-SSD

Audio braucht klare Pfade: aktive Projekte auf der internen 2 TB SSD (~/Projekte/Audio), Sample-Libraries und Kontakt-Inhalte auf der externen TB4-SSD, Plug-In-Lizenzen über iLok/UA/Native Access. Audio-Interface: Volt 2 als Standard-I/O bei 48 kHz / 24 bit, niedrige Buffer-Size in der DAW.

TB4-SSD als 'Libraries' (APFS) formatieren und benennen

  1. TB4-SSD an einen schnellen TB-Port (am Dock oder direkt am Mac)
  2. FestplattendienstprogrammDarstellung → Alle Geräte einblenden
  3. Physisches Laufwerk (nicht nur Partition) auswählen
  4. Löschen → Name Libraries, Format APFS, Schema GUID-Partitionstabelle
  5. Optional: Verschlüsseln (APFS verschlüsselt) – Performance-Einbuße minimal, aber Passwort sicher aufbewahren
Verfügbarer Platz prüfen
diskutil info /Volumes/Libraries | grep -E '(Capacity|Free)'

Ordnerstruktur auf der Libraries-SSD

Ordner anlegen
mkdir -p /Volumes/Libraries/{Audio/{Samples,"Kontakt-Libraries","Komplete Libraries",Loops,IRs,Presets,"Sample-Packs"},Video/{"DaVinci-Cache","DaVinci-Archive","Footage-Library","LUTs-XL","Stock-Footage"},DJ/{Rekordbox,"DJ-Music","DJ-Stems","DJ-Recordings"},Plugins/{"Spectrasonics-STEAM","Native-Instruments","Output","Komplete-Content"},Scratch}

tree -L 2 -d /Volumes/Libraries

Logic Pro installieren und konfigurieren

  1. App Store → mit Apple-ID anmelden → Logic Pro laden
  2. Beim ersten Start: Zusatzinhalte (Apple Loops, Sound Library) später laden
  3. Logic Pro öffnen → Logic Pro → Sound Library → Sound Library verschieben
  4. Pfad: /Volumes/Libraries/Audio/Logic-Sound-Library – spart 70+ GB intern
Logic-Pfade prüfen
ls -la ~/Music/Audio\ Music\ Apps
ls -la ~/Library/Application\ Support/Logic

Volt 2 als Audio-Device in Logic / Ableton

  1. Spotlight → Audio-MIDI-Setup
  2. Rechtsklick auf Volt 2Dieses Gerät zum Standard-Eingang/Ausgang machen
  3. Samplerate auf 48000 Hz, Bittiefe 24-Bit Ganzzahl
  4. Logic → Einstellungen → Audio → Geräte: Ein- und Ausgabegerät = Volt 2
  5. I/O-Buffer-Größe: 64 oder 128 Samples (Recording), 512 oder 1024 (Mixing mit vielen Plug-Ins)
  6. Prozessorpufferbereich: Mittel
  7. Mehrkern: Wiedergabe und Live-Tracks ✅

Ableton Live einrichten

  1. Ableton Live aus dem Cask oder ableton.com installiert
  2. Login mit Ableton-Konto, Lizenz autorisieren
  3. Live-Einstellungen → Audio: Volt 2, Buffer 128, Sample Rate 48 kHz
  4. Library: Library Location auf /Volumes/Libraries/Audio/Ableton-Library setzen
  5. Pack-Downloads ebenfalls auf Libraries-SSD

Bitwig Studio (optional)

Bitwig (im Brewfile als bitwig-studio) als Modular-/Sound-Design-Alternative. Lizenz via Bitwig-Account.

  • Audio-Settings analog zu Live (Volt 2, 48 kHz, 128 Samples)
  • Library auf /Volumes/Libraries/Audio/Bitwig-Library

iLok + UA Connect: Plug-In-Lizenzen

  1. iLok License Manager (Cask im Brewfile) öffnen, mit iLok-Konto anmelden
  2. Falls iLok-Stick: einstecken; Lizenzen Activate auf den Mac (oder Stick belassen)
  3. UA Connect (von uaudio.com) → UA-Konto → Mac als autorisiert markieren
  4. Bundle-Plug-Ins von Volt 2 (Marshall Plexi, Teletronix LA-2A, Pultec EQ, Melodyne Essential) Download & Install

Native Instruments / Kontakt-Libraries auf TB4-SSD

  1. Native Access (vom NI-Konto) installieren
  2. Vor dem Download von Libraries: Native Access → Settings → Content Location auf /Volumes/Libraries/Plugins/Native-Instruments
  3. Komplette Komplete-Library dort ausrollen
  4. Bestehende Libraries vom Mac mini: in iTunes-Style einfach in den neuen Ordner kopieren und Native Access Locate-Pfad anpassen

Plug-In-Ordner (AU, VST3) und gemeinsame Presets

Standard-Pfade auf macOS
# AU (Logic, GarageBand, Live, andere AU-Hosts)
~/Library/Audio/Plug-Ins/Components/

# VST3 (Live, Bitwig, Studio One, Reaper)
~/Library/Audio/Plug-Ins/VST3/

# Audio-Presets
~/Library/Audio/Presets/

# Validierung in Logic erzwingen:
killall -9 AudioComponentRegistrar
auvaltool -a

Rekordbox für DDJ-FLX10

  1. Rekordbox von rekordbox.com herunterladen und installieren
  2. Mit Rekordbox-Konto anmelden (Performance-Lizenz für DDJ-FLX10 ist kostenlos bei Geräte-Anschluss)
  3. Preferences → Advanced → Database: Datenbank-Ort auf /Volumes/Libraries/DJ/Rekordbox/Database
  4. Preferences → Controller: DDJ-FLX10 erkennen, Firmware ggf. updaten
  5. DJ-Tracks auf /Volumes/Libraries/DJ/DJ-Music hinterlegen (Quelle für Library)
  6. iCloud-Sync der Rekordbox-Library NICHT aktivieren (Konflikte!)
DDJ-FLX10 als USB-Audio sehen
system_profiler SPUSBDataType | grep -i flx10 -A 5

Musik-Bibliothek und Bilder vom alten Setup übernehmen

Größere Musik-Sammlung (1,5 TB laut Backup-Konzept) und Bilder (0,7 TB) wandern auf HDD #1 (Time Machine + Archiv). Die ~/Music/Music-Library bleibt klein und syncronisiert über iCloud-Music-Library.

  • Music.app: Einstellungen → Dateien → Medienordnerverzeichnis – bleibt intern (klein), bei iCloud-Music
  • Archiv-Musik (große Sammlung, FLAC etc.): /Volumes/Time Machine/Archiv/Musik – per Finder, Plex/Jellyfin oder VLC zugreifen
  • XLD (Cask) für CD-Rips und Format-Konvertierung
  • Bilder: ~/Pictures/Photos Library.photoslibrary bleibt intern, große Archive auf /Volumes/Time Machine/Archiv/Bilder

Audio-Projekte ins Backup-Konzept einreihen

Phase 08
0/9

Peripherie-Feinabstimmung

Logi Options+, BetterDisplay (HDR/Skalierung), Tastatur-Profile, Funktionstasten

Jetzt das Feintuning der Eingabegeräte und des Monitors. Logi Options+ für MX Keys S + MX Master 3s mit App-spezifischen Profilen und (optional) Flow. BetterDisplay für saubere Skalierung des EW3270U und besseres HDR-Verhalten als das native macOS.

Logi Options+ einrichten

  1. Logi Options+ (im Brewfile als logi-options+) starten – fragt nach Bedienungshilfen-Permission
  2. Systemeinstellungen → Datenschutz → Bedienungshilfen + Eingabeüberwachung → Logi Options+ ✅
  3. Optional: Logitech-Account – cloud-syncrhonisiert Profile zwischen Macs
  4. Geräte aktualisieren: Firmware-Updates für MX Master 3s + MX Keys S durchziehen

MX Master 3s: Tasten und Gesten

Taste / GesteEmpfohlene BelegungBegründung
Daumentaste (groß)Mission ControlSchneller App-/Fenster-Wechsel
Gestures-ModusVor/Zurück Spaces, Hoch = Mission Control, Runter = Schreibtisch4-Wege-Navigation
Vor-/Zurück-TastenBrowser Vor/Zurück (Standard)Erwartete Default-Funktion
Modus-Taste oberhalbApp-Wechsel (Cmd-Tab)Stört nicht im Klick-Flow
Scrollrad-ClickMitte-Klick (Tab schließen, etc.)Standard

App-spezifische Logi-Profile

  • Logic Pro: Daumentaste = Toggle Loop, Gesten = Marker / Markierung navigieren
  • DaVinci Resolve: Scroll = Timeline-Zoom, Daumengeste = JKL-Playback
  • VS Code: Daumengeste hoch = Cmd+Shift+P (Command Palette)
  • Browser: Daumengeste = Tab-Wechsel
  • Figma / Affinity: Scrollrad-Modus auf Smart Shift

MX Keys S: F-Tasten und Smart Actions

  • F-Tasten: Wahl zwischen Standard-Funktionstasten oder Hotkeys – je nach Workflow. Apple Logic/Final Cut profitiert von F1-F12.
  • Backlight: automatische Helligkeit nach Umgebungslicht
  • Smart Actions: z. B. Snapshot + an Slack senden, Spotify pausieren + Bildschirm sperren
  • FN-Modifier: in Options+ konfigurierbar, z. B. FN+Esc → Sprachausgabe-Toggle

Logi Flow (optional, MacBook ↔ Mac mini AI-Server)

Wenn der Mac mini in Phase 10 als AI-Server headless aber im selben Netz läuft: Flow lässt MX Master + MX Keys mit einer Mausbewegung zum Mac mini springen, inkl. Clipboard-Sharing.

  1. Auf beiden Macs Logi Options+ installieren und im selben Netz
  2. Flow aktivieren auf MacBook und Mac mini
  3. Geräte (MX Master, MX Keys) als flow-fähig markieren
  4. Computer-Layout (links/rechts) festlegen

BetterDisplay: Skalierung + HDR-Tuning für den BenQ

macOS bietet beim EW3270U nur eine Handvoll Skalierungsstufen. BetterDisplay erlaubt jede Auflösung und HiDPI-Erzwingung – wichtig für scharfe Schrift bei nicht-Retina-Skalierungen.

  1. BetterDisplay (Brewfile-Cask) starten
  2. EW3270U auswählen → HiDPI-Auflösungen aktivieren
  3. Empfohlene Skalierung für 32" 4K: 3008 × 1692 HiDPI oder 2560 × 1440 HiDPI – nach Geschmack
  4. Virtual Display für Headless-Setups vorbereiten (relevant für Phase 10, AI-Server)
  5. OSD-Workaround: Helligkeit per BetterDisplay-Slider statt Monitor-Knopf

BenQ EW3270U OSD-Empfehlungen

OSD-SettingEmpfehlungBegründung
BildmodusStandard (oder M-Book)HDR-Modus nur situativ
Helligkeit30–45 (Tag), 15–25 (Abend)VA-Panel hat hohen Black-Level – nicht zu hoch drehen
Kontrast50Default
B.I.+ (Helligkeitssensor)OffReagiert oft fehlerhaft, lieber manuell
Eye-Care: Low Blue LightOn (Multimedia)Vermeidet harten Blauanteil – kombinierbar mit Nachtschicht
FreeSyncOffMac unterstützt es am DP/HDMI nicht zuverlässig
HDROn nur für HDR-MaterialSonst wirken Farben flach

Funktionstasten, Globe-Taste, Modifier

  • Systemeinstellungen → Tastatur → Tastaturkurzbefehle → Funktionstasten: Apps zuweisen, in denen F1-F12 als Standard interpretiert werden (Logic, Resolve)
  • Globe-Taste (Apple-Tastatur): Sprache wechseln vs. Emoji-Picker – einstellbar in Tastatur → Mit der Globustaste
  • Caps Lock → Esc umbelegen: Tastatur → Tastaturkurzbefehle → Sondertasten
  • FN-Stuck-Hack via Karabiner Elements (Cask) für ProUser-Layouts

System-Tastaturkurzbefehle für Audio/DJ-Workflows

  • Sprachausgabe Off bei VoiceOver-Versehen: Bedienungshilfen → VoiceOver-Tastenkürzel deaktivieren
  • Lautstärke / Helligkeit-Tasten: mit Shift+Option fein justierbar (1/4-Stufen)
  • Mediensteuerung: in Tastatur → Tastaturkurzbefehle Spotify/Music gezielt steuern
Phase 09
0/16

Backup-Strategie: 3-2-1 mit Time Machine, BorgBackup (Hetzner) und Cold Storage

Time Machine auf 5 TB HDD, BorgBackup auf Hetzner u540244, HDD #2 als externes Cold Storage

Echtes 3-2-1-Backup: 3 Kopien (Mac SSD + Time Machine + Hetzner), 2 Medientypen (SSD, HDD, Cloud), 1 Offsite (Hetzner Storage Box / Cold-Storage-HDD bei Dritten). Erst nach kompletter Einrichtung einrichten, damit der erste Time-Machine-Snapshot ein "Golden State" ist.

Backup-Konzept im Überblick

DatenKopie 1 (Original)Kopie 2 (lokal)Kopie 3 (offsite)
macOS, Projekte, Dokumente, ConfigsMac SSD (intern)Time Machine (HDD #1)BorgBackup (Hetzner)
Musik (~1,5 TB)HDD #1 / ArchivCold Storage HDD #2
Bilder (~0,7 TB)HDD #1 / ArchivCold Storage HDD #2
Sample-Libraries, Plug-In-ContentTB4-SSD (Libraries)Time Machine (sichert TB4 mit, wenn angeschlossen)
DJ-LibraryTB4-SSD (Libraries)Time Machine

5 TB HDD als 'Time Machine' (APFS) formatieren

  1. HDD #1 (5 TB) an Dock/Mac anschließen
  2. Festplattendienstprogramm → Darstellung → Alle Geräte einblenden
  3. Physisches Laufwerk auswählen → Löschen
  4. Name Time Machine, Format APFS, Schema GUID-Partitionstabelle

Time Machine aktivieren (unverschlüsselt, 2,5 TB Limit)

macOS fragt nach dem Formatieren: "Möchten Sie diese Festplatte für Time Machine verwenden?"Als Backup-Volume verwenden. Oder manuell:

  1. Systemeinstellungen → Allgemein → Time Machine
  2. Backup-Volume hinzufügenTime Machine wählen
  3. Backup verschlüsseln: Aus (Festplatte bleibt zuhause, Geschwindigkeit zählt)
  4. Optionen → Festplattennutzungslimit: 2,5 TB (lässt 2,5 TB frei für Archiv-Ordner)
  5. Optionen → Ausschließen: ~/Downloads, ~/.npm, ~/Library/Caches, node_modules (per Pfad-Pattern in TM nicht direkt – via tmutil addexclusion)
Ausschlüsse setzen (Time Machine)
# Caches und Build-Outputs ausschließen
sudo tmutil addexclusion -p ~/Library/Caches
sudo tmutil addexclusion -p ~/Downloads
sudo tmutil addexclusion -p ~/Developer/**/node_modules
sudo tmutil addexclusion -p ~/Projekte/**/node_modules
sudo tmutil addexclusion -p ~/Projekte/**/.next
sudo tmutil addexclusion -p ~/Projekte/Video/DaVinci/CacheClip
sudo tmutil addexclusion -p ~/Library/Application\ Support/DaVinci\ Resolve/Cache

# Prüfen
sudo tmutil isexcluded ~/Downloads
Erstes Backup auslösen + Fortschritt
tmutil startbackup
tmutil status

# Komfortablerer Status-Watcher:
while true; do clear; tmutil status; sleep 5; done

Archiv-Ordner für Musik und Bilder auf HDD #1

Nach dem ersten Time-Machine-Backup einen Archiv-Ordner auf der TM-HDD anlegen – Time Machine sichert ihn beim nächsten Lauf automatisch mit.

Archiv-Struktur anlegen + Daten ziehen
mkdir -p "/Volumes/Time Machine/Archiv/Musik"
mkdir -p "/Volumes/Time Machine/Archiv/Bilder"

# Beispiele: vom alten Mac mini (oder aus dem Backup) kopieren
# rsync ist robuster als cp:
rsync -avh --progress /Volumes/MacMini-Backup/Musik/ "/Volumes/Time Machine/Archiv/Musik/"
rsync -avh --progress /Volumes/MacMini-Backup/Bilder/ "/Volumes/Time Machine/Archiv/Bilder/"

Hetzner Storage Box (u540244): Dienste aktivieren

  1. Hetzner Robot einloggen → Storage Box → Einstellungen
  2. SSH
  3. BorgBackup
  4. Samba/CIFS ✅ (optional, für Finder-Zugriff)
  5. WebDAV ✅ (optional, für iPhone-Zugriff)
  6. External Reachability ✅ (für Macbook unterwegs)

SSH-Public-Key bei Hetzner Storage Box hinterlegen

Den in Phase 6 erzeugten Public Key ~/.ssh/hetzner_storagebox.pub bei Hetzner hinzufügen.

Public Key in Zwischenablage
pbcopy < ~/.ssh/hetzner_storagebox.pub
echo 'Key in der Zwischenablage – jetzt bei Hetzner einfügen.'
  1. Hetzner Robot → Storage Box → SSH-Keys
  2. Neuen Key hinzufügen → Inhalt aus Zwischenablage einfügen
  3. Speichern
Verbindung testen
sftp hetzner-backup
# Wenn 'sftp>' kommt → funktioniert. mit 'exit' raus.

BorgBackup-Repository initialisieren + Schlüssel exportieren

Repo anlegen
# borgbackup ist im Brewfile
borg --version

# Repo auf der Storage Box erstellen
borg init --encryption=repokey \
  ssh://u540244@u540244.your-storagebox.de:23/./macbook-pro
Schlüssel exportieren, sichten, lokal löschen
borg key export \
  ssh://u540244@u540244.your-storagebox.de:23/./macbook-pro \
  ~/borg-key-macbook-pro.txt

# Inhalt anzeigen → in den Passwort-Manager kopieren
cat ~/borg-key-macbook-pro.txt

# Wenn sicher abgelegt: lokale Kopie LÖSCHEN
rm ~/borg-key-macbook-pro.txt

Borg-Passwort in macOS Keychain ablegen

Passwort sicher in Keychain ablegen
# Einmalig: Passwort hinzufügen
security add-generic-password -a "borg-hetzner" -s "BorgBackup Hetzner u540244" -w "DEIN_BORG_PASSWORT"

# Im Script abrufen
export BORG_PASSPHRASE=$(security find-generic-password -a "borg-hetzner" -w)

# Test
borg info ssh://u540244@u540244.your-storagebox.de:23/./macbook-pro

Erstes Backup ausführen (langer Lauf!)

Manuelles erstes Backup
export BORG_REPO="ssh://u540244@u540244.your-storagebox.de:23/./macbook-pro"
export BORG_PASSPHRASE=$(security find-generic-password -a "borg-hetzner" -w)

borg create --progress --stats --compression lz4 \
  ${BORG_REPO}::erst-${HOSTNAME}-{now:%Y-%m-%d_%H%M} \
  ~/Documents \
  ~/Desktop \
  ~/Projekte \
  ~/Developer \
  ~/Ressourcen/Dev \
  ~/Ressourcen/Software \
  ~/Scripts \
  --exclude '.DS_Store' \
  --exclude 'node_modules' \
  --exclude '.Trash' \
  --exclude '*.wav' \
  --exclude '*.aif' \
  --exclude '*.flac' \
  --exclude 'DerivedData' \
  --exclude '.cache' \
  --exclude '__pycache__' \
  --exclude '.venv' \
  --exclude '.next' \
  --exclude 'dist'

Backup-Script erstellen

~/Scripts/hetzner-backup.sh hetzner-backup.sh
#!/bin/bash
# ============================================
# BorgBackup – MacBook Pro → Hetzner Storage Box (u540244)
# ============================================
set -e

export BORG_REPO="ssh://u540244@u540244.your-storagebox.de:23/./macbook-pro"
export BORG_PASSPHRASE=$(security find-generic-password -a "borg-hetzner" -w)

LOG_DIR="$HOME/Scripts/logs"
mkdir -p "$LOG_DIR"
LOG_FILE="$LOG_DIR/hetzner-backup-$(date +%Y%m%d_%H%M).log"

{
  echo "=== BorgBackup MacBook → Hetzner ==="
  echo "Start: $(date)"

  borg create --progress --stats --compression lz4 \
    ${BORG_REPO}::macbook-{now:%Y-%m-%d_%H%M} \
    ~/Documents \
    ~/Desktop \
    ~/Projekte \
    ~/Developer \
    ~/Ressourcen/Dev \
    ~/Ressourcen/Software \
    ~/Scripts \
    --exclude '.DS_Store' \
    --exclude 'node_modules' \
    --exclude '.Trash' \
    --exclude '*.wav' \
    --exclude '*.aif' \
    --exclude '*.flac' \
    --exclude 'DerivedData' \
    --exclude '.cache' \
    --exclude '__pycache__' \
    --exclude '.venv' \
    --exclude '.next' \
    --exclude 'dist'

  echo "--- Prune ---"
  borg prune --stats \
    ${BORG_REPO} \
    --keep-daily 7 \
    --keep-weekly 4 \
    --keep-monthly 6 \
    --keep-yearly 2

  echo "--- Compact ---"
  borg compact ${BORG_REPO}

  echo "Fertig: $(date)"
} 2>&1 | tee "$LOG_FILE"
Ausführbar machen und testen
chmod +x ~/Scripts/hetzner-backup.sh
~/Scripts/hetzner-backup.sh

Wöchentliche Automatisierung via LaunchAgent (Sonntag 2 Uhr)

~/Library/LaunchAgents/com.roy.hetzner-backup.plist com.roy.hetzner-backup.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.roy.hetzner-backup</string>
    <key>ProgramArguments</key>
    <array>
        <string>/bin/bash</string>
        <string>/Users/royrisser/Scripts/hetzner-backup.sh</string>
    </array>
    <key>StartCalendarInterval</key>
    <dict>
        <key>Hour</key>
        <integer>2</integer>
        <key>Minute</key>
        <integer>0</integer>
        <key>Weekday</key>
        <integer>0</integer>
    </dict>
    <key>StandardOutPath</key>
    <string>/Users/royrisser/Scripts/logs/hetzner-backup.out.log</string>
    <key>StandardErrorPath</key>
    <string>/Users/royrisser/Scripts/logs/hetzner-backup.err.log</string>
    <key>EnvironmentVariables</key>
    <dict>
        <key>PATH</key>
        <string>/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin</string>
    </dict>
</dict>
</plist>
LaunchAgent aktivieren
launchctl unload ~/Library/LaunchAgents/com.roy.hetzner-backup.plist 2>/dev/null
launchctl load ~/Library/LaunchAgents/com.roy.hetzner-backup.plist

# Status checken
launchctl list | grep hetzner
# Logs ansehen
tail -f ~/Scripts/logs/hetzner-backup.out.log

Restore-Test (Pflicht!)

Snapshot listen + Datei extrahieren
export BORG_REPO="ssh://u540244@u540244.your-storagebox.de:23/./macbook-pro"
export BORG_PASSPHRASE=$(security find-generic-password -a "borg-hetzner" -w)

# Snapshots auflisten
borg list $BORG_REPO

# Inhalt eines Snapshots zeigen
borg list $BORG_REPO::macbook-2026-05-17_0200 | head -20

# Eine Datei testweise wiederherstellen
mkdir -p /tmp/borg-test && cd /tmp/borg-test
borg extract $BORG_REPO::macbook-2026-05-17_0200 Users/royrisser/Documents/Privat/Finanzen
ls -la /tmp/borg-test/Users/royrisser/Documents/Privat/Finanzen

# Aufräumen
rm -rf /tmp/borg-test

Komfort-Aliase für tägliche Borg-Operationen

~/.zshrc – Borg-Helper
# --- Borg ---
export BORG_REPO_HETZNER="ssh://u540244@u540244.your-storagebox.de:23/./macbook-pro"

alias borg-list='BORG_PASSPHRASE=$(security find-generic-password -a "borg-hetzner" -w) borg list $BORG_REPO_HETZNER'
alias borg-info='BORG_PASSPHRASE=$(security find-generic-password -a "borg-hetzner" -w) borg info $BORG_REPO_HETZNER'
alias borg-run='~/Scripts/hetzner-backup.sh'
alias borg-mount='BORG_PASSPHRASE=$(security find-generic-password -a "borg-hetzner" -w) borg mount $BORG_REPO_HETZNER /tmp/borg-mnt'
alias borg-unmount='borg umount /tmp/borg-mnt'

Cold Storage HDD #2 (exFAT) vorbereiten und bestücken

  1. HDD #2 (5 TB) an Mac anschließen
  2. Festplattendienstprogramm → Löschen: Name Cold Storage, Format exFAT, Schema GUID-Partitionstabelle
  3. Inhalte kopieren:
Initial-Befüllung
rsync -avh --progress "/Volumes/Time Machine/Archiv/Musik/" "/Volumes/Cold Storage/Musik/"
rsync -avh --progress "/Volumes/Time Machine/Archiv/Bilder/" "/Volumes/Cold Storage/Bilder/"
Update-Run (delta-only)
rsync -avh --delete --progress "/Volumes/Time Machine/Archiv/" "/Volumes/Cold Storage/"

Linux-Server Backup auf dieselbe Storage Box (separates Repo)

Wenn ein Linux-Server zusätzlich gesichert wird: eigenes Repository auf der gleichen Storage Box, eigener SSH-Key, eigene Passphrase. Verhindert Cross-Kontamination und macht Restore-Rechte klar.

Auf dem Linux-Server
# BorgBackup
sudo apt install borgbackup

# Eigener SSH-Key
ssh-keygen -t ed25519 -f ~/.ssh/hetzner_storagebox -C "linux-server → u540244"

# Public Key bei Hetzner hinterlegen (Robot → SSH-Keys, GLEICHE Box)
cat ~/.ssh/hetzner_storagebox.pub

# Eigenes Repo
borg init --encryption=repokey \
  ssh://u540244@u540244.your-storagebox.de:23/./linux-server

# Schlüssel exportieren und sichern!
borg key export \
  ssh://u540244@u540244.your-storagebox.de:23/./linux-server \
  ~/borg-key-linux-server.txt
Cronjob (Sonntag 3 Uhr)
crontab -e
# Folgende Zeile einfügen:
0 3 * * 0 /root/scripts/hetzner-backup.sh >> /var/log/hetzner-backup.log 2>&1

(Optional) Samba-Zugriff von macOS auf die Storage Box

Quick-Mount-Aliase in ~/.zshrc
alias hetzner-mount='open "smb://u540244@u540244.your-storagebox.de/u540244"'
alias hetzner-unmount='diskutil unmount /Volumes/u540244 2>/dev/null'

Alternativ Finder → Cmd+Ksmb://u540244@u540244.your-storagebox.de/u540244. Nur für gelegentliches Durchstöbern – nicht für Backups.

Phase 10
0/12

Verifikation & Abschluss + Mac mini als AI-Server

Abnahme-Checks, sauberer Übergang, Ollama / Open WebUI / Tailscale auf dem Mac mini

Der Übergang ist fast geschafft. Jetzt prüfen wir jedes Subsystem einmal aktiv, machen einen Restore-Test, und erst danach dürfen wir den Mac mini M2 zurücksetzen und zum lokalen AI-Server (Ollama + Open WebUI + Tailscale, headless) umfunktionieren.

Hardware-Abnahme: Monitor, Audio, Eingabe, Dock

  • BenQ EW3270U: 3840 × 2160 @ 60 Hz, HDR-Toggle funktioniert (Apple-Menü → Systeminfo → Grafik/Displays)
  • Volt 2: Wiedergabe + Aufnahme klappt in Logic, Headphones-Out lässt sich umschalten
  • MX Keys S + MX Master 3s: Easy-Switch zwischen Mac/iPad funktioniert, Sondertasten in Options+ greifen
  • TB5-Dock: alle USB-A/USB-C-Ports liefern Daten, Ethernet hat Link
  • Alle externen Volumes (Time Machine, Libraries, Cold Storage) werden korrekt erkannt
System-Inventar in Datei dumpen
system_profiler SPHardwareDataType SPDisplaysDataType SPAudioDataType SPUSBDataType SPThunderboltDataType > ~/Documents/Privat/MBP-Inventar-$(date +%Y%m%d).txt

Software-Abnahme: alle wichtigen Apps starten

  • Logic Pro: leeres Projekt öffnen, Volt 2 erkannt, Plug-Ins laden
  • DaVinci Resolve: leere Timeline, GPU-Performance ok (Project Settings → Hardware)
  • Adobe Photoshop: schnelles RAW öffnen, GPU-Acceleration in Voreinstellungen
  • Ableton/Bitwig: kurzer Audio-Test
  • VS Code: Login-Sync ok, Claude-Code-Extension lädt
  • Rekordbox: DDJ-FLX10 erkannt, Beat-Grid und Pads reagieren
  • Browser: Lesezeichen + Logins via Cloud-Sync da

Backup-Verifikation: Time Machine + Borg

Time Machine: letzter erfolgreicher Lauf
tmutil latestbackup
tmutil status
Borg: Snapshots + Repo-Größe
borg-list
borg-info
  • Restore-Test aus Phase 9 wirklich durchgeführt?
  • Borg-Passwort + Schlüssel im Passwort-Manager?
  • HDD #2 Cold Storage physisch außer Haus?

Dev-Stack: GitHub-Push, SSH zu allen Hosts

End-to-End-Test
# GitHub
cd ~/Developer
git clone git@github.com:royrisser/dotfiles.git test-clone 2>/dev/null || \
  echo "Repo nicht da – Test mit eigenem privatem Repo wiederholen"
ssh -T git@github.com

# Hetzner Server
ssh hetzner-server "uname -a"

# Storage Box
sftp hetzner-backup <<EOF
ls
exit
EOF

⛔ ERST JETZT: Mac mini M2 zurücksetzen (nach verifiziertem Backup!)

  1. Mac mini: Systemeinstellungen → Allgemein → Übertragen oder zurücksetzen
  2. Alle Inhalte und Einstellungen löschen
  3. Apple-ID, Touch-ID, iCloud, Find My – alles wird abgemeldet
  4. Nach Neuinstallation: frischer macOS-Setup mit eigener Apple-ID (oder Familie) und reduzierter Konfiguration

Mac mini headless einrichten

  1. Systemeinstellungen → Bildschirme – falls Monitor angeschlossen: alle Skalierungen + HiDPI prüfen
  2. Apple-Menü → Systemeinstellungen → Energie: Bei ausgeschaltetem Display in den RuhezustandNie
  3. Erweitert: Automatisches Aktivieren des Ruhezustands bei ausgeschaltetem Display außer Kraft setzen
  4. Sharing: Bildschirmfreigabe + Verwaltung aus der Ferne
  5. Headless: HDMI-Dummy-Stecker (4K @ 60 Hz) im HDMI-Port – sonst drosselt die GPU bei nicht-angeschlossenem Display

Tailscale auf MacBook und Mac mini installieren

Tailscale (Wireguard-Mesh) verbindet beide Macs sicher, ohne Router-Ports zu öffnen oder DDNS einzurichten.

  1. Tailscale via Brew (brew install --cask tailscale) auf beiden Macs
  2. Mit gleichem Account anmelden
  3. Mac mini bekommt eine stabile Tailscale-IP (z. B. 100.x.y.z) und einen Hostnamen wie zkyserver
  4. MagicDNS aktivieren – dann reicht http://zkyserver statt IP

Ollama auf dem Mac mini installieren

Ollama installieren und starten
# Über Homebrew (auch auf Mac mini)
brew install ollama

# Service als LaunchAgent starten (läuft beim Login)
brew services start ollama

# Testen
ollama --version
curl http://127.0.0.1:11434/api/tags

Modelle laden – die 60%-RAM-Regel einhalten: maximal 60-70% des RAM für ein Modell. Mac mini M2 hat 16 GB → 7B-14B-Modelle sind das Maximum.

RAMModell-Größe (Faustregel)
8 GB1B – 3B
16 GB (dein Mac mini M2)7B – 14B
32 GB30B+
48 GB (dein MacBook Pro)70B mit Quantisierung
Empfohlene Modelle für 16 GB
# Allrounder
ollama pull llama3.3:8b
ollama pull qwen2.5:14b

# Code
ollama pull qwen2.5-coder:7b
ollama pull deepseek-coder-v2:16b-lite-base-q4_0

# Embeddings (für Open WebUI / RAG)
ollama pull nomic-embed-text

# Liste
ollama list

# Test-Chat
ollama run llama3.3:8b "Erkläre Tailscale in zwei Sätzen."

Ollama im Tailscale-Netzwerk erreichbar machen

Per Default hört Ollama nur auf 127.0.0.1:11434. Damit das MacBook über Tailscale zugreifen kann, muss Ollama auf 0.0.0.0 binden – und mit Tailscale ist das auch sicher, weil Tailscale ein privates Mesh ist.

Ollama-Listen-Adresse setzen
# Als brew service: Environment per launchd plist
launchctl setenv OLLAMA_HOST "0.0.0.0:11434"

# Service neustarten
brew services restart ollama

# Vom MacBook aus testen
curl http://zkyserver:11434/api/tags

Open WebUI als Docker-Container auf dem Mac mini

Docker installieren und Open WebUI starten
# Docker Desktop ist im Brewfile
open -a "Docker"

# Open WebUI Container starten
docker run -d \
  --name open-webui \
  --restart unless-stopped \
  -p 8080:8080 \
  -v open-webui:/app/backend/data \
  -e OLLAMA_BASE_URL=http://host.docker.internal:11434 \
  ghcr.io/open-webui/open-webui:main

# Erreichbar unter:
# http://zkyserver:8080  (vom MacBook via Tailscale)
# http://localhost:8080    (lokal auf dem Mac mini)
  1. Im Browser → http://zkyserver:8080
  2. Admin-Account anlegen (Mail/Passwort, lokal gespeichert)
  3. Settings → Connections → Ollama: http://host.docker.internal:11434
  4. Modelle erscheinen aus der lokalen Ollama-Installation
  5. Chat ausprobieren – Tokens/Sekunde checken (Mac mini M2 mit 16 GB schafft ~20-40 t/s bei 7B-Modellen)

Monitoring auf dem Mac mini einrichten

  • Stats (Cask) in der Menüleiste zeigt CPU/GPU/RAM/Temperatur – auch bei headless-Login einseh­bar via Bildschirmfreigabe
  • btop per ssh zkyserver 'btop' für Remote-Monitoring
  • Ollama-Logs: ~/Library/Logs/Homebrew/ollama/

Finale Abschluss-Checkliste

  • BenQ läuft mit 4K @ 60 Hz (+HDR-Toggle funktioniert)
  • Volt 2 spielt Audio + nimmt auf, Logic & Live testen
  • Tastatur/Maus über Logi Options+ konfiguriert (eigene Profile)
  • Alle Apps aus dem Brewfile installiert, Lizenzen aktiviert
  • ~/Projekte, ~/Ressourcen, ~/Developer angelegt und befüllt
  • iCloud-Schreibtisch/Dokumente-Sync grün
  • OneDrive-Migration abgeschlossen, Remote entfernt
  • Time Machine: erstes Vollbackup auf HDD #1 fertig
  • BorgBackup: erstes Backup + Restore-Test erfolgreich
  • Cold Storage HDD #2: extern gelagert
  • Mac mini: zurückgesetzt, headless mit Tailscale, Ollama + Open WebUI laufen
  • Diesen Tracker-Status als JSON exportiert und mit dem alten Mac mini archiviert

🎉 Setup komplett. Den Tracker-Status kannst du jetzt über den Export-Button oben als JSON sichern – z. B. nach ~/Documents/Privat/Setup-Tracker.json, damit du in 2 Jahren beim nächsten Mac einen Referenzpunkt hast.