52 lines
2.6 KiB
Markdown
52 lines
2.6 KiB
Markdown
# Deploying DevDesk (CT 126 · dev.lotusguild.org)
|
|||
|
|
|
||
|
|
## 1. Install the package
|
||
|
|
Add the Gitea apt repository once:
|
||
|
|
```bash
|
||
|
|
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.org` certificate, with Force SSL.
|
||
|
|
- **Advanced tab:** paste [`npm-advanced.conf`](npm-advanced.conf), replacing `__DEVDESK_BASIC__` with the output of:
|
||
|
|
```bash
|
||
|
|
. /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`, run `dpkg-reconfigure devdesk`, update NPM, then `systemctl restart devdesk`.
|
||
|
|
|
||
|
|
## 3. Authelia (CT 167)
|
||
|
|
Add these to `access_control.rules` in `/etc/authelia/configuration.yml`, **above** any broader `*.lotusguild.org` rule:
|
||
|
|
```yaml
|
||
|
|
- 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"` to `dns.hosts` in `pve-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`) |
|
||
|
|
| End a session | `devdesk end <name>` (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) |
|