Un IDE cloud-native pour le homelab
code-server est un portage de VS Code qui s’exécute côté serveur et s’expose via une interface web. L’objectif dans ce homelab : avoir un environnement de développement accessible depuis n’importe quel appareil — tablet, machine de travail, laptop en déplacement — sans installation locale.
Couplé au Cloudflare Tunnel, code-server est accessible sur code.olig-homelab-2025.win depuis n’importe où, avec le workspace persistant sur un volume Longhorn.
Particularités du déploiement
Authentification par mot de passe
code-server expose une interface web protégée par mot de passe. Ce mot de passe est injecté via une variable d’environnement issue d’un SealedSecret :
env:
- name: PASSWORD
valueFrom:
secretKeyRef:
name: code-server-credentials
key: password
WebSocket et Cloudflare
VS Code utilise des WebSockets pour la synchronisation en temps réel de l’éditeur. La configuration Cloudflare Tunnel doit avoir des timeouts WebSocket généreux pour éviter les déconnexions intempestives.
Workspace persistant
Le workspace (fichiers, configuration VS Code, extensions) est stocké dans un PVC critical :
volumeMounts:
- name: workspace
mountPath: /home/coder
Les extensions VS Code installées persistent entre les redémarrages du pod.
Leçons apprises
strategy: Recreate est posée dès le départ, en précaution proactive plutôt qu’en leçon apprise après coup : deux instances de code-server sur le même workspace PVC causent des conflits de fichiers. Recreate garantit qu’une seule instance accède au workspace à la fois. Ce même pattern PVC unique + Recreate a ensuite été repris pour d’autres apps à état persistant, comme Silex.
Ressources : code-server + les extensions consomment facilement 512 Mi - 1 Gi de RAM. Prévoir un limit de 2 Gi pour les sessions de travail intensives avec de nombreuses extensions actives.
Proxy de terminal : le terminal intégré de code-server fonctionne directement dans le pod — ce n’est pas le nœud Kubernetes. Pour interagir avec le cluster, installer kubectl et kubeseal dans l’image code-server, et monter le kubeconfig via un secret.