Tags

Dieses Dokument liefert eine vollständig optimierte Anleitung, um Windsurf‑Remote‑Sessions auf Debian‑basierten VPS‑Systemen stabil und ressourcenschonend zu betreiben. Es zeigt, wie ripgrep (rg) gezielt eingegrenzt, übermäßige Dateisystem‑Scans verhindert und systemweite Speicherlimits gesetzt werden. Der Text wurde sprachlich geglättet, strukturell verfeinert und lesefreundlich gestaltet.


1. Einführung: Windsurf Remote Development

Windsurf ermöglicht komfortables Remote‑Entwickeln per SSH. Dabei laufen alle Analyse‑ und Entwicklungsprozesse – einschließlich Indexing, LSP‑Prozessen und ripgrep‑Suchen – direkt auf der entfernten Maschine. Das bietet volle Kontrolle, führt jedoch auf kleinen Systemen schnell zu hoher CPU‑Last und Verlangsamung, wenn rg unkontrolliert das gesamte Dateisystem durchsucht.

Dieses Dokument zeigt, wie man das verhindert.

Inhalte im Überblick:

  • Ursachen für Überlastung durch rg
  • Kritische Verzeichnisse, die immer ignoriert werden sollten
  • Vollständige empfohlene ripgrep‑Ignore‑Konfiguration
  • Integration unter zsh
  • Minimal‑ und Webserver‑Profile
  • Systemweite RAM‑Limits für root
  • Node.js‑Speicherbegrenzung für LSP und Tools

2. Warum rg einen VPS schnell überlastet

Windsurf behandelt den gesamten Remote‑Server als Workspace. Bei SSH‑Login über root erhält rg Zugriff auf / und durchsucht standardmäßig das komplette System.

Die Folge sind:

  • 100 % CPU‑Auslastung
  • Eingefrorene LSP‑Analyse
  • Deutliche Verzögerungen
  • Potenzielle OOM‑Kills

2.1 Typische Problemverzeichnisse

Diese Bereiche dürfen niemals gescannt werden:

Verzeichnis

Beschreibung

Problem

/proc

Virtuelles Kernel‑FS

Millionen dynamischer Dateien, extrem teuer

/sys

Kernel‑Interface

Ständig wechselnde Einträge

/dev

Geräte & Sockets

Ungeeignet für rg, kann hängen

/run

Laufzeitdaten

Viele kleine, volatile Dateien

/var/log

Logs

Schnell große Dateien

/var/cache

Paket‑Cacher

Tief verschachtelt & groß

/usr/lib, /lib

Systembibliotheken

Unnötiger Scanaufwand

/home, /root

Benutzerdateien

Oft riesige Bäume

Die Lösung: konsequent ignorieren.


3. Globale ripgrep‑Ignore‑Konfiguration (empfohlen)

Diese Konfiguration begrenzt rg auf sinnvolle Bereiche und schließt störende Systempfade aus.

Hinweis zu Distributionen: Debian/Ubuntu verwenden vorwiegend /lib, /usr/lib und /lib64. CentOS/RHEL nutzen zusätzlich /usr/lib64, /usr/local/lib und weitere modulare Pfade. Bei Bedarf dort ergänzen.

3.1 Ordner anlegen

mkdir -p ~/.config/ripgrep

3.2 Konfigurationsdatei erstellen

nano ~/.config/ripgrep/config

3.3 Empfohlener Inhalt

# Performance
--threads 2
--max-filesize 1M

# Virtuelle & volatile FS ignorieren
--glob '!/proc/**'
--glob '!/sys/**'
--glob '!/dev/**'
--glob '!/run/**'
--glob '!/tmp/**'

# Systempfade ignorieren
--glob '!/bin/**'
--glob '!/sbin/**'
--glob '!/lib/**'
--glob '!/lib64/**'
--glob '!/usr/bin/**'
--glob '!/usr/sbin/**'
--glob '!/usr/lib/**'
--glob '!/usr/lib64/**'
--glob '!/usr/share/**'

# Paketmanager & Systemdaten ignorieren
--glob '!/var/cache/**'
--glob '!/var/lib/apt/**'
--glob '!/var/lib/dpkg/**'
--glob '!/var/lib/systemd/**'
--glob '!/var/lib/containerd/**'
--glob '!/var/lib/docker/**'

# Home‑Verzeichnisse ignorieren
# Nur bestimmte Unterordner von /root ausschließen
--glob '!/root/.codeium/**'
--glob '!/root/.windsurf-server/**'

# /root sonst NICHT global ignorieren

# Dev‑Artefakte ignorieren

--glob '!.git/**'
--glob '!.hg/**'
--glob '!.svn/**'
--glob '!node_modules/**'
--glob '!dist/**'
--glob '!build/**'
--glob '!__pycache__/**'
--glob '!*.pyc'

# Sonstiges
--ignore-file-case-insensitive
--max-columns 500

Damit ist die Vollkonfiguration aktiv.


4. Aktivierung unter zsh

~/.zshrc ergänzen:

export RIPGREP_CONFIG_PATH="$HOME/.config/ripgrep/config"

Reload:

source ~/.zshrc

5. Minimal‑Admin‑Konfiguration (optional)

Wenn nur wenige Admin‑Bereiche relevant sind:

--glob '!/**'
--glob '/etc/**'
--glob '/root/scripts/**'
--glob '/var/www/**'

Alles andere wird ausgeschlossen.


6. Webserver‑Erweiterung (optional)

Für Systeme mit mehreren Diensten:

--glob '!/**'
--glob '/etc/**'
--glob '/root/scripts/**'
--glob '/var/www/**'
--glob '/srv/**'
--glob '/opt/**'

7. Überprüfung

7.1 Glob‑Debug

rg --debug "test" 2>&1 | grep "glob"

7.2 Geschwindigkeitstest

time rg -i systemd /etc

8. Systemweite Speicherlimits für root

Überprüfen:

ulimit -a
cat /proc/self/limits

8.1 Limits setzen: /etc/security/limits.conf

root    hard    as    2097152
root    soft    as    2097152

(2 GB in KB: Virtueller Speicher für root‑Sessions)

8.2 PAM‑Integration aktivieren

In /etc/pam.d/sshd sicherstellen:

session required pam_limits.so

9. zsh‑ & Node.js‑Speicherbegrenzung

In /root/.zshrc ergänzen:

ulimit -v 2097152
export NODE_OPTIONS="--max-old-space-size=2048"

Damit bleiben zsh‑Subprozesse und Node‑Werkzeuge unter 2 GB.


10. Fazit & Empfehlung

Die Minimal‑Konfiguration eignet sich für Systeme mit klar abgegrenzten Arbeitsbereichen.
Die Vollkonfiguration ist ideal für Systeme, auf denen Windsurf umfassenden Zugriff hat und maximale Stabilität entscheidend ist.

Mit dieser Kombination aus Ignore‑Regeln, zsh‑Integration und systemweiten Limits:

  • wird das Scannen des Systems verhindert
  • sinkt die CPU‑Last massiv
  • LSP & Indexing bleiben stabil
  • der VPS reagiert zuverlässig während Windsurf‑Sessions

Dies ist die empfohlene Referenzkonfiguration für Windsurf‑basierte Administration auf Debian VPS.