Zum Inhalt

Code-Server mit Docker installieren: VS Code aus dem Browser

Veröffentlicht am 3. Oktober 2026 · Geschätzte Lesezeit: 6 Minuten

Code-Server ist VS Code auf einem entfernten Rechner, den du über den Browser bedienst. Damit kannst du auf jedem Gerät mit Internetverbindung – vom Tablet über das Chromebook bis zum Thin Client – entwickeln, ohne lokal Tools installieren zu müssen. Die Rechenlast liegt auf dem Server. Die Einrichtung dauert ungefähr 20 Minuten.

Voraussetzungen

  • Ein Linux-Server mit Docker und Docker Compose
  • Ein freier TCP-Port 8443 im Heimnetz
  • Die IP-Adresse des Docker-Servers
  • Zugriff auf die Kommandozeile des Servers

1. Benutzer-ID und Gruppen-ID ermitteln

Code-Server verwendet die Berechtigungen deines Host-Benutzers, damit Dateien im Workspace die richtigen Besitzer erhalten. Ermittle deine IDs mit diesen Befehlen:

id -u
id -g

Die Ausgaben sehen zum Beispiel so aus:

1000
1000

Notiere beide Werte (meistens 1000). Du brauchst sie in Schritt 3 für die Platzhalter PUID und PGID.

2. Projektordner anlegen

Erstelle einen eigenen Ordner für Code-Server und wechsle hinein:

mkdir -p ~/code-server/config ~/code-server/projects
cd ~/code-server

Das Verzeichnis config nimmt später die VS-Code-Einstellungen, Extensions und persönlichen Daten auf. Der Ordner projects wird der Arbeitsbereich (Workspace).

3. Compose-Datei anlegen

Lege im Ordner ~/code-server eine Datei namens compose.yaml mit diesem Inhalt an:

services:
  code-server:
    image: lscr.io/linuxserver/code-server:latest
    container_name: code-server
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Berlin
      - PASSWORD=<dein-sicheres-passwort>
      - SUDO_PASSWORD=<dein-sicheres-sudo-passwort>
      - DEFAULT_WORKSPACE=/config/workspace
    volumes:
      - ./config:/config
      - ./projects:/config/workspace
    ports:
      - "8443:8443"
    restart: unless-stopped

Bedeutung der einzelnen Zeilen:

Abschnitt Erklärung
image: Das offizielle LinuxServer.io-Image mit Code-Server
PUID=1000 / PGID=1000 Ersetze beide Werte durch die Ausgabe von id -u beziehungsweise id -g
TZ=Europe/Berlin Ersetze durch deine Zeitzone (Liste unter Wikipedia: tz database)
PASSWORD=<dein-sicheres-passwort> WebUI-Passwort – unbedingt ändern. Ersetze <dein-sicheres-passwort> durch ein starkes Passwort. Ist der Wert leer, gibt es keinen Login-Schutz
SUDO_PASSWORD=<dein-sicheres-sudo-passwort> Sudo-Passwort für Terminal-Befehle im Container. Ersetze <dein-sicheres-sudo-passwort> durch ein zweites, anderes Passwort. Optional, aber empfohlen
DEFAULT_WORKSPACE= Ordner, den Code-Server nach dem Login öffnet
./config:/config Speichert Einstellungen, Extensions und SSH-Schlüssel dauerhaft
./projects:/config/workspace Dein Arbeitsbereich mit den Projektdateien
"8443:8443" Der Port der Weboberfläche (links: Host-Port, rechts: Container-Port)
restart: unless-stopped Startet den Container nach einem Neustart des Servers automatisch

Der Port 8443 heißt nur so, bietet aber normales HTTP und kein HTTPS. Für den Zugriff aus dem Internet brauchst du einen Reverse Proxy mit eigener HTTPS-Verschlüsselung.

4. Container starten

Starte Code-Server im Projektordner:

docker compose up -d

Prüfe anschließend den Status:

docker compose ps

In der Spalte STATUS sollte Up erscheinen. Falls der Container nicht startet, zeigen die Protokollzeilen meist die Ursache:

docker compose logs --tail=50

5. Weboberfläche öffnen und einrichten

Öffne auf einem Gerät im gleichen Heimnetz diese Adresse:

http://<deine-server-ip>:8443

Ersetze <deine-server-ip> durch die IP-Adresse deines Docker-Servers, zum Beispiel 192.168.1.50.

Du siehst jetzt die Login-Seite von Code-Server. Gib das Passwort aus der compose.yaml ein (das unter PASSWORD).

Passwort wird nicht übernommen?

Wenn du das Passwort nachträglich in der compose.yaml ändern möchtest, verwende docker compose up -d (nicht docker compose restart), damit die neuen Umgebungsvariablen geladen werden.

6. Terminal testen

Öffne in der geöffneten VS-Code-Oberfläche das integrierte Terminal mit ++ctrl+shift+backtick++. Führe dort aus:

code-server --version

Die aktuelle Versionsnummer wird angezeigt. Teste auch, ob du mit dem Sudo-Passwort Administratorrechte bekommst:

sudo whoami

Nach Eingabe des SUDO_PASSWORD sollte root erscheinen.

7. Erste Extension installieren

Code-Server verwendet den offenen Open VSX-Extension-Marktplatz statt dem Microsoft-Marketplace. Nicht alle Extensions aus dem offiziellen VS-Code-Marketplace sind dort verfügbar – zum Beispiel fehlt GitHub Copilot. Installiere eine Extension im Terminal des Containers:

code-server --install-extension ms-python.python

Nach erfolgreicher Installation erscheint die Extension im Bereich Erweiterungen der Oberfläche.

.vsix-Datei manuell installieren

Fehlt eine Extension im Open-VSX-Katalog, lade die .vsix-Datei von der Projektseite herunter und installiere sie im Container-Terminal mit code-server --install-extension <dateiname>.vsix. Ersetze <dateiname> durch den tatsächlichen Dateinamen der heruntergeladenen Extension.

8. Workspace prüfen

Im Explorer der VS-Code-Oberfläche sollte der Inhalt deines lokalen Ordners ~/code-server/projects sichtbar sein. Lege testweise eine neue Datei an:

echo "Hallo Code-Server" > /config/workspace/test.md

Die Datei erscheint in der Dateiliste. Lösche sie nach dem Test:

rm /config/workspace/test.md

9. Git-Konfiguration einrichten

Lege deine Git-Identität im Container fest, damit Commits korrekt signiert werden:

git config --global user.name "Dein Name"
git config --global user.email "deine@email.de"

SSH-Schlüssel für den Zugriff auf private Repositories legst du im Ordner ~/code-server/config/.ssh auf dem Host ab. Der Container übernimmt sie automatisch, weil /config als Volume gemountet ist. Setze die richtigen Berechtigungen:

chmod 600 ~/code-server/config/.ssh/id_ed25519
chmod 700 ~/code-server/config/.ssh

10. Backup und Rückweg

Sichere die Compose-Datei und den Config-Ordner regelmäßig. So erstellst du ein komprimiertes Archiv:

docker compose stop
tar -czf ../code-server-backup-$(date +%F).tar.gz compose.yaml config projects
docker compose start

Das Archiv liegt eine Ebene über dem Arbeitsordner und trägt das aktuelle Datum im Namen.

Zum vollständigen Entfernen von Code-Server:

docker compose down -v
rm -rf ~/code-server

Alle Projekte im Ordner projects sind dann ebenfalls weg. Sichere sie vorher, wenn du sie behalten möchtest.

11. Aktualisieren

Lade zuerst das aktuelle Image:

docker compose pull

Erstelle den Container mit dem neuen Image neu:

docker compose up -d

Deine Einstellungen, Extensions und Projekte bleiben erhalten, weil sie im config- und projects-Volume liegen.

12. Typische Fehler beheben

  • Die Seite lädt nicht: Prüfe mit docker compose ps, ob der Container läuft. Kontrolliere die Firewall des Servers (sudo ufw status). Der Port 8443 muss freigegeben sein.
  • Berechtigungsprobleme bei Dateien: Die Werte für PUID und PGID in der compose.yaml stimmen nicht mit dem Host-Benutzer überein. Korrigiere sie und führe docker compose up -d aus.
  • Passwort wird nicht akzeptiert: Der Container wurde nur neugestartet (docker compose restart) und hat die neuen Umgebungsvariablen nicht geladen. Stattdessen docker compose up -d verwenden.
  • Terminal im Browser öffnet nicht: Ein Reverse Proxy unterstützt keine WebSockets. Setze beim Proxy die Header Upgrade und Connection korrekt.
  • Extension nicht gefunden: Nicht jede Extension ist im Open-VSX-Katalog verfügbar. Installiere sie als .vsix-Datei oder verwende eine Alternative.
  • Port 8443 ist bereits belegt: Ändere den Host-Port, zum Beispiel auf "8444:8443".

13. Sicherheitshinweise

Code-Server nicht direkt ins Internet stellen

Der Port 8443 verwendet normales HTTP ohne Verschlüsselung. Leite ihn nicht direkt im Router weiter. Für den Zugriff von unterwegs verwendest du ein VPN (WireGuard, Tailscale) oder einen Reverse Proxy mit HTTPS und vorgeschalteter Authentifizierung.

  • Verwende ein starkes, einmaliges Passwort für PASSWORD und SUDO_PASSWORD.
  • Gib Port 8443 nur im Heimnetz frei. Binde ihn notfalls an die IP des Servers: "<deine-server-ip>:8443:8443".
  • SSH-Schlüssel im config/.ssh-Ordner liegen unverschlüsselt auf der Festplatte. Schütze sie mit einem Passphrase.

14. Quellen

Fertig

Code-Server ist nun unter http://<deine-server-ip>:8443 im Heimnetz erreichbar. Öffne die Oberfläche, melde dich mit dem Passwort an und erstelle im Terminal eine neue Python-Datei. Schreibst du print("Hello Code-Server") und führst sie aus (++f5++), funktioniert die gesamte Entwicklungsumgebung aus dem Browser.