💻 Code Server SSOT

Browser IDE for user loca, reverse-proxied by Nginx, gated by Authelia one-factor login, running loopback-only on 127.0.0.1:52224. Extensions come from Open VSX and are pinned in a lock file, never installed ad hoc.

🚀 Quick start

  • open: https://cdsr.loca.zone
  • service: cdsr.service (system scope, User=loca)
    • systemctl status cdsr --no-pager
    • sudo -n systemctl restart cdsr
    • health: curl -sf http://127.0.0.1:52224/healthz
  • project root: /home/loca/dev/code-server
    • config: config/config.yaml
    • extension pins: config/extensions.lock.json
    • runtime pin: config/runtime-version.txt
    • state: data/user/, data/extensions/

🔐 Auth flow

  • Browser → Nginx cdsr.loca.zone:443auth_request to Authelia → code-server 127.0.0.1:52224
  • Authelia rule: cdsr.loca.zone = one_factor; default policy stays bypass, so the wiki host needs no rule and stays public
  • code-server runs auth: none + cert: false on purpose: TLS and identity are terminated in front of it, and it never listens on a public interface

🧩 Extension baseline

ExtensionVersionRole
Continue.continue2.1.0open-source AI agent, chat, edit, autocomplete
Anthropic.claude-code2.1.235first-party Claude Code IDE integration
ms-python.python2026.4.0Python language support
ms-python.debugpy2026.6.0Python debugger, pinned explicitly
ms-toolsai.jupyter2025.9.1notebooks in the browser IDE
ms-azuretools.vscode-containers2.4.5Container Tools, successor to the old Docker extension
  • install or repair: cd /home/loca/dev/code-server && ./scripts/install-extensions.sh
  • audit against the lock file: ./scripts/list-extension-versions.sh
  • optional, enterprise-only: sourcegraph.cody-ai 1.155.0 via ./scripts/install-extensions.sh --include-optional
  • details: extensions

⬆️ Upgrade sequence

cd /home/loca/dev/code-server/tmp
curl -fsSL -O https://github.com/coder/code-server/releases/download/v<NEW>/code-server_<NEW>_amd64.deb
sudo -n dpkg -i code-server_<NEW>_amd64.deb
echo "<NEW>" > /home/loca/dev/code-server/config/runtime-version.txt
cd /home/loca/dev/code-server
./scripts/install-extensions.sh
./scripts/list-extension-versions.sh
sudo -n systemctl restart cdsr

Extensions land on disk before the restart, so the restart is what loads them into the extension host; reload the browser window afterwards if a session was open. The currently deployed pin is 4.133.0. Full procedure: install-upgrade.

🔀 Dev server routing

  • default: start a dev server on 127.0.0.1:<port>, then open https://cdsr.loca.zone/proxy/<port>/
  • path-sensitive frameworks: use https://cdsr.loca.zone/absproxy/<port>/ and set the framework’s base path
  • pretty per-port subdomains are intentionally not configured; see dev-routing

✅ Do / don’t

  • do: install extensions only from Open VSX through config/extensions.lock.json
  • do: keep the bind address loopback-only and let Nginx own TLS
  • do: sign in to AI providers inside the running editor UI
  • don’t: commit provider tokens, cookies, or extension secrets into this project
  • don’t: enable the packaged code-server@loca unit; state belongs in data/
  • don’t: add an Authelia rule for wiki.cdsr.loca.zone; the wiki is public by design

Start here

NeedPage
Understand the deployed shaperuntime-topology
Install or upgrade the runtimeinstall-upgrade
Fix auth or TLSauth-tls
Manage the extension baselineextensions
Re-run proof checksverification
Look up a path or portconfig-paths
Expose a dev serverdev-routing