Visual Studio Code im Webinterface mit Docker und Caddy

Microsofts Visual Studio Code hat sich über die letzten Jahre als Quasi-Standard, nicht nur für das editieren von Quellcode in allen möglichen (Programmier-)Sprachen, sondern auch für eine Vielzahl weiterer Operationen etabliert.

Einer der Kritikpunkte bleibt die durch den Editor verursachte realtiv hohe Systemlast, die zwar begründet ist aber für einen „Texteditor“ doch etwas merkwüdig erschenint. Ein anderer Kritikpunkt ist, dass für das beliebte „Remote SSH“ Plugin, welches es ermöglicht auf einen beliebigen über SSH erreichbaren Server mit VS Code zu arbeiten, ziemlich viele dynamische Ports geöffnet werden und auch generell einige Firewalls hier Probleme machen können.

Nun basiert VS Code selbst auf dem Electron Framework, welches wiederum auf JavaScript aufbaut. Warum also nicht die VS Code Installation auf einem Server hosten und per Webinterface zur Verfügung stellen? Das haben sich offensichtlich viele gefragt und deshalb ist dies mit Hilfe von Docker und Caddy schnell bewerkstelligt.

Installation

Zur Installation verlassen wir uns wieder auf Docker Compose für die Verwaltung unserer Containers und Caddy als Reverse Proxy. Ein passendes und regelmäßig aktualisiertes VS Code Image finden wir von Linuxserver.io auf Docker Hub.

Unsere „compose.yml“ Datai kann dann so aussehen:

 1---
 2version: "2.1"
 3services:
 4  code-server:
 5    image: lscr.io/linuxserver/code-server:latest
 6    container_name: code-server
 7    environment:
 8      - PUID=1001
 9      - PGID=1001
10      - TZ=Etc/UTC
11      - PASSWORD=PASSWORT
12      #- HASHED_PASSWORD=#optional
13      #- SUDO_PASSWORD=#optional
14      #- SUDO_PASSWORD_HASH=#optional
15      #- PROXY_DOMAIN=#optional
16      - DEFAULT_WORKSPACE=ORDNERCONTAINER #optional
17    volumes:
18      - ./config:/config
19      - /ORDNERHOST:/ORDNDERCONTAINER
20    restart: unless-stopped
21    logging:
22      options:
23        max-size: "10m"
24        max-file: "3"
25    networks:
26        - caddy
27volumes:
28    data:
29    db:
30networks:
31    caddy:
32        external: true

Die wichtigsten Parameter hier kurz erläutert:

Nun können wir den Container mit „docker compose up -d“ starten.

Härtung und Reverse Proxy Konfiguration

In unserem Caddyfile unseres Rerverse Proxy ergänzen wir einen Block für die neue VS Code Instanz. Das kann so aussehen:

1code.handtrixxx.com {
2    basicauth {
3        USER HASHWERT
4    }
5    reverse_proxy code-server:8443
6}

Man beachte die Werte in den geschweiften Klammern hinter „basicauth“. Diese bringen zusätzlichem Schutz vor möglichen Angreifern, in dem sie ein weitere Anmeldung bereitstellen, sobald jemand die URL öffnet. Als USER könnten ihr einen Namen euerer Wahl festlegen während man für die Generierung des Hashwerts auf der Kommandoziele in den Docker Compose Ordener von Caddy wechselt und dort folgendes Kommando ausführt: docker compose exec -w /etc/caddy caddy caddy hash-password

Den aus der Abfrage resultierenden Wert kopiert ihr einfach in das Caddyfile als HASHWERT.

Nachdem wir die Konfiguration von Caddy neu geladen haben, ist VS Code unter der angegebenen URL erreichbar und die eine zusätzliche Sicherheitsschicht aktiviert.