- Sessions no longer need a project folder: any name works and starts in DEVDESK_DEFAULT_DIR unless it matches a project; `devdesk new NAME [PROJECT]`. - Rename (✎) and end/forget (×) sessions from the Sessions panel, plus `devdesk rename`. The browser runs them as `devdesk attach --new|--rename|--end` through ttyd. Renames keep the running Claude and its recorded conversation: the hook, the run-wrapper and the statusline ask tmux for the current name. - Claude Context panel is live: devdesk-statusline snapshots model, context-window use, cost and edits per session, which --list reports; Claude's footer gets a one-line summary. The panel now sits under Sessions. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2.8 KiB
2.8 KiB
Deploying DevDesk (CT 126 · dev.lotusguild.org)
1. Install the package
Add the Gitea apt repository once:
curl -fsSL https://code.lotusguild.org/api/packages/LotusGuild/debian/repository.key \
-o /etc/apt/keyrings/gitea-LotusGuild.asc
echo "deb [signed-by=/etc/apt/keyrings/gitea-LotusGuild.asc] https://code.lotusguild.org/api/packages/LotusGuild/debian bookworm main" \
> /etc/apt/sources.list.d/lotusguild.list
apt update && apt install devdesk
On install, /etc/devdesk/secret.env is generated, devdesk-tmux.service and devdesk.service are enabled and started, and ttyd listens on :7681. Requests without the credential get a 401.
2. Nginx Proxy Manager (CT 139)
- Proxy host:
dev.lotusguild.org→http://10.10.10.58:7681.- Websockets Support on.
- SSL: the existing wildcard
*.lotusguild.orgcertificate, with Force SSL.
- Advanced tab: paste
npm-advanced.conf, replacing__DEVDESK_BASIC__with the output of:. /etc/devdesk/secret.env && printf '%s' "$DEVDESK_CREDENTIAL" | base64 -w0 - Why the credential matters: ttyd only checks the credential, so anything on the LAN that bypasses NPM is refused. If you rotate it, delete
secret.env, rundpkg-reconfigure devdesk, update NPM, thensystemctl restart devdesk.
3. Authelia (CT 167)
Add these to access_control.rules in /etc/authelia/configuration.yml, above any broader *.lotusguild.org rule:
- domain: dev.lotusguild.org
policy: two_factor
subject: ['user:jared']
- domain: dev.lotusguild.org
policy: deny
Then run authelia validate-config --config /etc/authelia/configuration.yml && systemctl restart authelia.
4. DNS
- Cloudflare: add a CNAME
dev→ apex, DNS-only (grey cloud). - Pi-hole: add
"10.10.10.27 dev.lotusguild.org"todns.hostsinpve-infra/containers/163-pihole/etc/pihole/pihole.toml. A push auto-deploys it, and LAN clients then reach NPM directly instead of hairpinning.
5. Optional hardening
Enable the Proxmox firewall on CT 126 (firewall=1 on net0) and allow tcp/7681 only from 10.10.10.27. The same rule suits code-server on :8680.
Operations
| Task | Command |
|---|---|
| Sessions | devdesk ls |
| Attach over SSH | devdesk attach <name> (or devdesk pick) |
| New session (optionally in a project) | devdesk new <name> [project], or the Sessions panel form |
| Rename a session | devdesk rename <old> <new>, or ✎ in the Sessions panel |
| End a session | devdesk end <name>, × in the Sessions panel, or [x] in the Claude window's exit menu |
| Restart the web side (safe) | systemctl restart devdesk |
| Stop every session | systemctl stop devdesk-tmux |
| Logs | journalctl -u devdesk -u devdesk-tmux |
| UI-only update | replace /usr/share/devdesk/index.html (ttyd re-reads it per request) |