Zum Inhalt springen

Fehlerbehebung

”Conflict. The container name is already in use”

Abschnitt betitelt „”Conflict. The container name is already in use”“
Terminal-Fenster
docker rm -f devcontainer
docker compose up -d

Das Image ist möglicherweise veraltet. Laden Sie das neueste herunter und starten Sie neu:

Terminal-Fenster
docker compose pull
docker compose up -d

Der Entrypoint befüllt ~/.claude.json mit Onboarding-Flags. Falls die Datei fehlt:

Terminal-Fenster
echo '{"hasCompletedOnboarding": true}' > ~/.claude.json

Prüfen Sie, welcher Wert tatsächlich gesetzt ist:

Terminal-Fenster
echo "$ANTHROPIC_API_KEY"

Häufige Ursachen:

  • LiteLLM-Proxy-Schlüssel fehlt oder ist ungültig — Wenn Sie den Proxy-Modus verwenden, stellen Sie sicher, dass LITELLM_API_KEY in .env die korrekten Proxy-Anmeldedaten enthält. Starten Sie dann den Container neu, damit der Entrypoint ANTHROPIC_API_KEY ableiten kann.
  • OAuth-Token oder Proxy-Modus-Konflikt — Verwenden Sie genau einen Authentifizierungsmodus. Wenn CLAUDE_CODE_OAUTH_TOKEN gesetzt ist, hat es Vorrang vor dem LiteLLM-Proxy-Modus.

Prüfen Sie, ob Ihr API-Schlüssel korrekt gesetzt ist:

Terminal-Fenster
echo "$ANTHROPIC_API_KEY"

Überprüfen Sie die Funktion durch einen direkten Aufruf an Ihren Anbieter.

Das Modell wird durch Ihren Anbieter und API-Schlüssel bestimmt. Prüfen Sie die Dokumentation Ihres Anbieters für verfügbare Modelle.

Die gh-CLI benötigt eine GH_TOKEN-Umgebungsvariable. Fügen Sie diese Ihrer .env-Datei hinzu:

GH_TOKEN=ghp_your-token-here

Erstellen Sie ein Token unter github.com/settings/tokens. Feingranulare Tokens (empfohlen) oder klassische Tokens mit repo-Berechtigung funktionieren beide. Starten Sie den Container nach der Aktualisierung von .env neu.

Wenn GH_TOKEN gesetzt ist, führt der Entrypoint gh auth setup-git aus, um den Git-Credential-Helper für HTTPS zu konfigurieren. Falls HTTPS-Operationen fehlschlagen:

  1. Überprüfen Sie, ob das Token gültig ist: gh auth status
  2. Prüfen Sie, ob der Credential-Helper konfiguriert ist: git config --global credential.helper
  3. Starten Sie den Container neu, um den Entrypoint erneut auszuführen

Beide Authentifizierungsmethoden können im Container koexistieren:

  • SSH (SSH_PRIVATE_KEY in .env) — verwendet git@github.com:-URLs. Erforderlich, wenn Ihre Organisation SSH vorschreibt.
  • HTTPS (GH_TOKEN in .env) — verwendet https://github.com/-URLs. Einfachere Einrichtung, keine Schlüsselverwaltung.

Wenn beide konfiguriert sind, verwendet Git das Protokoll, das zur Remote-URL passt. Um einen bestehenden Klon umzustellen:

Terminal-Fenster
# SSH zu HTTPS
git remote set-url origin https://github.com/owner/repo.git
# HTTPS zu SSH
git remote set-url origin git@github.com:owner/repo.git
Terminal-Fenster
sudo chown -R $(id -u):$(id -g) /workspace ~

Der Entrypoint konfiguriert automatisch ein benutzerbeschreibbares npm-Global-Prefix unter ~/.npm-global, sodass npm install -g-Befehle zur Laufzeit ohne sudo funktionieren sollten. Falls weiterhin EACCES-Fehler auftreten, wenden Sie die Korrektur manuell an:

Terminal-Fenster
mkdir -p ~/.npm-global
npm config set prefix ~/.npm-global
export PATH="$HOME/.npm-global/bin:$PATH"

Der erste Build lädt das Basis-Image herunter (~1 GB). Nachfolgende Builds verwenden den Cache. Falls es jedes Mal langsam ist:

Terminal-Fenster
docker builder prune
Terminal-Fenster
docker system prune -a --volumes

Warnung: Dies entfernt alle ungenutzten Container, Images und Volumes — nicht nur die dieses Projekts.

Terminal-Fenster
ping -c 1 8.8.8.8
nslookup google.com
curl -I https://github.com

Falls DNS fehlschlägt, fügen Sie auf dem Host in /etc/docker/daemon.json hinzu:

{
"dns": ["8.8.8.8", "8.8.4.4"]
}

Starten Sie dann Docker neu.

Xvfb wurde möglicherweise nicht gestartet. Prüfen Sie innerhalb des Containers:

Terminal-Fenster
ps aux | grep Xvfb

Falls nicht aktiv, überprüfen Sie, dass ENABLE_VNC nicht auf false gesetzt ist, und starten Sie den Container neu.

”Cannot open display” oder “No display”-Fehler

Abschnitt betitelt „”Cannot open display” oder “No display”-Fehler“

Die Umgebungsvariable DISPLAY ist möglicherweise nicht gesetzt. Überprüfen Sie:

Terminal-Fenster
echo "$DISPLAY"

Der Wert sollte :99 sein. Falls leer, fügen Sie DISPLAY=:99 zu Ihrer .env oder devcontainer.json hinzu und starten Sie neu.

noVNC läuft möglicherweise nicht. Prüfen Sie innerhalb des Containers:

Terminal-Fenster
ps aux | grep -E 'novnc|websockify'

Falls nicht aktiv, überprüfen Sie, ob ENABLE_VNC auf true gesetzt ist (Standardwert), und prüfen Sie die Container-Logs:

Terminal-Fenster
docker compose logs dev | grep -i vnc

Ändern Sie den Host-Port in docker-compose.yml:

ports:
- "127.0.0.1:16080:6080"

Die gemeinsam genutzte Chrome-Instanz sollte auf Port 9222 laufen. Prüfen Sie innerhalb des Containers:

Terminal-Fenster
# Läuft Chrome?
curl http://localhost:9222/json/version
# Chrome-Logs prüfen
cat ~/.local/share/chrome-browser/chrome.log
# Symlink überprüfen
ls -la /opt/google/chrome/chrome
# Chrome manuell neu starten
. /usr/local/lib/chrome-browser.sh
start_chrome_browser

Falls der Symlink fehlt, laden Sie das neueste Image herunter und starten Sie den Container neu.

Mit der gemeinsam genutzten Browser-Architektur sollten Profil-Sperrfehler nicht auftreten. Falls dennoch einer erscheint, hält möglicherweise ein verwaister Chrome-Prozess die Sperre:

Terminal-Fenster
# Verwaiste Chrome-Prozesse beenden
pkill -f 'chrome.*remote-debugging-port' || true
# Sperrdatei entfernen
rm -f ~/.cache/chrome-devtools-mcp/chrome-profile/SingletonLock
# Chrome neu starten
. /usr/local/lib/chrome-browser.sh
start_chrome_browser

Der chrome-devtools-mcp-Server ist jetzt global in ~/.claude/settings.json registriert. Wenn Sie eine projektspezifische .mcp.json haben, die ihn ebenfalls registriert, werden doppelte Tools angezeigt. Entfernen Sie den chrome-devtools-mcp-Eintrag aus projektspezifischen .mcp.json-Dateien:

Terminal-Fenster
# Projektspezifische Konfiguration prüfen
cat .mcp.json

Entfernen Sie den chrome-devtools-mcp-Schlüssel aus allen projektspezifischen .mcp.json-Dateien, um die globale Registrierung zu verwenden.

Terminal-Fenster
docker compose down -v
docker rm -f devcontainer 2>/dev/null
docker compose pull
docker compose up -d

Dies löscht alle Daten in Volumes. Sie müssen Repositories erneut klonen und Tools neu konfigurieren.