Schlagwort: Remote-Entwicklung

  • tmux: Warum Remote-Entwickler ohne ihn nicht arbeiten können

    Wer einmal eine SSH-Verbindung verloren hat während ein langer Prozess lief — ein Test-Build, ein npm install, ein laufender Entwicklungsserver — kennt das Gefühl. Alles weg. Verbindung neu aufbauen, von vorne anfangen.

    tmux löst genau dieses Problem. Einmal eingerichtet, läuft jede Terminal-Session dauerhaft auf dem Server weiter — egal ob der Laptop zugeklappt, das WLAN gewechselt oder die VPN-Verbindung unterbrochen wurde. Man steigt einfach wieder ein, als wäre nichts gewesen.

    Das Problem mit normalen SSH-Terminals

    Wenn man sich per SSH mit einem Remote-Server verbindet, läuft alles in einem einzigen Prozess: dem SSH-Terminal. Bricht die Verbindung ab — durch Netzwerkprobleme, Sleep-Mode oder VPN-Timeout — sterben alle laufenden Prozesse mit. Entwicklungsserver tot. Lange Kompilierung weg. Claude-Session verloren.

    tmux trennt das Terminal vom SSH-Prozess. Die Session läuft auf dem Server, unabhängig davon ob gerade jemand verbunden ist.


    SSH ohne tmux vs. mit tmux — Vergleich bei Verbindungsabbruch
    Ohne tmux: alles verloren · Mit tmux: Session läuft weiter, Prozesse bleiben aktiv  ·  Klicken zum Vergrößern

    Schneller Überblick: Was läuft gerade?

    Bevor man eine neue Session anlegt, lohnt sich ein kurzer Blick ob schon eine existiert — besonders wenn man sich von einem anderen Rechner verbindet:

    tmux ls
    # Ausgabe, wenn Sessions aktiv sind:
    # partyplaner: 2 windows (created Wed Jun 18 09:12) [220x50]
    # wsai: 1 windows (created Tue Jun 17 14:30) [220x50]
    
    # Ausgabe, wenn keine Session läuft:
    # no server running on /tmp/tmux-0/default

    Keine Ausgabe oder die Fehlermeldung oben bedeutet: tmux läuft noch nicht. Dann einfach eine neue Session anlegen.

    Sessions: das Herzstück

    Eine tmux-Session ist eine eigenständige Terminal-Umgebung auf dem Server. Sie hat einen Namen, merkt sich den Zustand und wartet auf Verbindungen.

    Sessions auflisten

    tmux ls
    # partyplaner: 2 windows (created Wed Jun 18 09:12)
    # wsai: 1 windows (created Tue Jun 17 14:30)

    Neue Session anlegen

    tmux new-session -s partyplaner
    # Kurzform:
    tmux new -s partyplaner

    Session anlegen oder anhängen

    tmux new-session -A -s partyplaner -c /root/projects/partyplaner

    Das -A-Flag ist entscheidend: existiert die Session bereits, wird sie geöffnet — existiert sie nicht, wird sie angelegt.

    An bestehende Session anhängen

    tmux attach -t partyplaner
    # Kurzform:
    tmux a -t partyplaner

    Detach: Session verlassen ohne sie zu beenden

    Ctrl+B  dann  D

    Die Session läuft weiter. Man kann sich von einem anderen Rechner wieder anhängen.

    Fenster und Panes: mehrere Terminals in einer Session

    Alle tmux-Tastenkombinationen beginnen mit Ctrl+B als Präfix:

    Tastenkombination Funktion
    Ctrl+B C Neues Fenster öffnen
    Ctrl+B N / P Nächstes / vorheriges Fenster
    Ctrl+B „ Horizontale Teilung (Pane unten)
    Ctrl+B % Vertikale Teilung (Pane rechts)
    Ctrl+B ←↑→↓ Zwischen Panes wechseln
    Ctrl+B Z Pane maximieren / zurücksetzen
    Ctrl+B X Aktuellen Pane schließen (Bestätigung: y/n)
    Ctrl+B & Aktuelles Fenster schließen (Bestätigung: y/n)
    Ctrl+B D Detach — Session bleibt aktiv
    Ctrl+B Ctrl+B Literales Ctrl+B ans Terminal senden

    Copy & Paste: die kleine Tücke

    Die Maus markiert standardmäßig Text auf dem lokalen Bildschirm — nicht im tmux-Buffer. Es gibt zwei Wege:

    Weg 1: tmux Copy Mode (Terminal-nativ)

    Ctrl+B [       → Copy Mode betreten
    Pfeiltasten    → Cursor bewegen, scrollen
    Page Up/Down   → schnell durch Output scrollen
    Space          → Auswahl starten
    Enter          → Auswahl kopieren, Copy Mode verlassen
    Ctrl+B ]       → Einfügen (aus tmux-Buffer)

    Weg 2: Maus aktivieren (empfohlen)

    In ~/.tmux.conf auf dem Server:

    set -g mouse on

    Dann tmux source ~/.tmux.conf. Mit Maus-Modus:

    • Scrollen: Mausrad funktioniert direkt im Scrollback-Buffer
    • tmux-Buffer: Linke Maustaste gedrückt halten → Auswahl geht in den tmux-Buffer (Ctrl+B ] zum Einfügen)
    • System-Zwischenablage: Shift + Maustaste gedrückt halten → tmux wird umgangen, Text landet direkt in der Systemzwischenablage

    In VSCodium SSH Remote (integriertes Terminal) gilt zusätzlich:
    Ctrl+Shift+C kopiert die aktuelle Auswahl, Ctrl+Shift+V fügt ein — das sind die Standard-Shortcuts des Terminals, die auch mit tmux zuverlässig funktionieren.

    Claude Code in tmux: der wichtigste Anwendungsfall

    Claude Code läuft als interaktiver Prozess im Terminal. Ohne tmux bedeutet ein Verbindungsabbruch: Claude-Session verloren, laufende Aufgabe abgebrochen. Mit tmux:

    tmux new -s partyplaner   # Session starten
    claude                     # Claude starten
    # Aufgabe beschreiben, Laptop zuklappen — Claude arbeitet weiter
    
    # Stunden später, von beliebigem Rechner:
    tmux attach -t partyplaner # → Claude ist noch da, Output im Buffer

    Claude in tmux — Workflow: Session starten, Aufgabe geben, weggehen, zurückkommen
    Schritt-für-Schritt: tmux + Claude · Session bleibt · Output wartet im Buffer  ·  Klicken zum Vergrößern

    Besonders wertvoll für längere Aufgaben: Refactorings, Migrations, umfangreiche Feature-Implementierungen. Claude arbeitet weiter, auch wenn man nicht am Rechner sitzt.

    Minimale .tmux.conf für den Einstieg

    # ~/.tmux.conf auf dem Server
    
    set -g mouse on               # Maus-Scrollen + Markieren
    set -g history-limit 10000    # Längerer Scrollback-Buffer
    set -g status-right '%H:%M %d.%m.%Y'  # Uhrzeit in Statusleiste
    set -g base-index 1           # Fenster-Nummerierung bei 1 beginnen

    Laden: tmux source ~/.tmux.conf

    Fazit

    tmux ist kein optionales Extra für Remote-Entwicklung — es ist die Grundlage. Sessions überleben Verbindungsabbrüche, mehrere Rechner können dieselbe Session beobachten, Claude Code läuft weiter wenn man weg ist.

    Der Einstieg ist in 5 Minuten erledigt: tmux new -s meinprojekt, loslegen, Ctrl+B D zum Verlassen. Der Rest kommt mit der Zeit.

    Dieser Beitrag ist Teil der Reihe „KI in der Praxis“ — echte Setups, keine Theorie.