💻 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
- login at
auth.loca.zonefirst (one-factor), then the editor shell loads - wiki (public, no login): https://wiki.cdsr.loca.zone
- login at
- service:
cdsr.service(system scope,User=loca)systemctl status cdsr --no-pagersudo -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/
- config:
🔐 Auth flow
- Browser → Nginx
cdsr.loca.zone:443→auth_requestto Authelia → code-server127.0.0.1:52224 - Authelia rule:
cdsr.loca.zone=one_factor; default policy staysbypass, so the wiki host needs no rule and stays public - code-server runs
auth: none+cert: falseon purpose: TLS and identity are terminated in front of it, and it never listens on a public interface
🧩 Extension baseline
| Extension | Version | Role |
|---|---|---|
Continue.continue | 2.1.0 | open-source AI agent, chat, edit, autocomplete |
Anthropic.claude-code | 2.1.235 | first-party Claude Code IDE integration |
ms-python.python | 2026.4.0 | Python language support |
ms-python.debugpy | 2026.6.0 | Python debugger, pinned explicitly |
ms-toolsai.jupyter | 2025.9.1 | notebooks in the browser IDE |
ms-azuretools.vscode-containers | 2.4.5 | Container 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-ai1.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 cdsrExtensions 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 openhttps://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@locaunit; state belongs indata/ - don’t: add an Authelia rule for
wiki.cdsr.loca.zone; the wiki is public by design
Start here
| Need | Page |
|---|---|
| Understand the deployed shape | runtime-topology |
| Install or upgrade the runtime | install-upgrade |
| Fix auth or TLS | auth-tls |
| Manage the extension baseline | extensions |
| Re-run proof checks | verification |
| Look up a path or port | config-paths |
| Expose a dev server | dev-routing |