pizza-digital/docs/SSH-CLAUDE-CLOUD-HANDOFF.md
Admin d669f56398 Import Pizza Digital SPECs and docs from Obsidian vault sync
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-11-09 19:52:34 +00:00

85 lines
3 KiB
Markdown

# Handoff — SSH Claude Cloud → VM125
| Campo | Valor |
|-------|--------|
| Data | 2026-10-19 |
| Status | **Parcial** — chave instalada; túnel Cloudflare **ainda não** provisionado |
| Motivo da pausa | Usuário vai desligar a máquina |
---
## Objetivo
Dar SSH à VM125 (`mini@10.10.10.125`, projeto `~/pizza-digital`) para Claude Code em contêiner cloud que:
- não alcança `10.10.10.x` nem Tailscale `100.x`
- só sai via proxy HTTPS (:443)
- só acessa domínios liberados na política de rede do ambiente
---
## Hostname proposto
| Item | Valor |
|------|--------|
| Hostname | **`ssh-pizza.myvexx.com`** |
| Proteção | Cloudflare Access + **service token** (Client ID + Client Secret) |
| Cliente Claude | `cloudflared access ssh` como `ProxyCommand` |
| Backend do tunnel | `localhost:22` na VM125 |
Service token: **não colar no chat** — configurar como secrets/env no ambiente Claude (`CF_ACCESS_CLIENT_ID`, `CF_ACCESS_CLIENT_SECRET`).
---
## Feito nesta sessão (antes do desligamento)
1. **Chave pública instalada** em `/home/mini/.ssh/authorized_keys`:
```
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIlXrLNy18IDQcCqJd+NeXIbng4+39FRqi10CVbSPk2D claude-cloud-pizza
```
2. `chmod 700 ~/.ssh` · `chmod 600 ~/.ssh/authorized_keys`
3. Projeto continua em `/home/mini/pizza-digital`
## Pendente (quando religar a VM)
1. Instalar `cloudflared` na VM125
2. Criar Tunnel Cloudflare apontando SSH → `ssh-pizza.myvexx.com`
3. DNS CNAME no zone `myvexx.com`
4. Cloudflare Access Application (SSH) + **Service Token**
5. Liberar `ssh-pizza.myvexx.com` (e `*.cloudflareaccess.com` se necessário) na Network access do ambiente Claude
6. Testar: `ssh -o ProxyCommand='cloudflared access ssh --hostname %h' mini@ssh-pizza.myvexx.com`
## PasswordAuthentication
| Acesso | Política recomendada |
|--------|----------------------|
| LAN / Tailscale (atual) | Mantém `PasswordAuthentication yes` (ops local com senha `805353`) |
| Via túnel Cloudflare | Só chave (`claude-cloud-pizza`); Access + service token; **não** depender de senha no caminho externo |
**Não** desligamos `PasswordAuthentication` globalmente nesta pausa (quebraria o hop local). Quando o túnel estiver estável, pode restringir senha só em `Match Address` / ou deixar senha só na LAN.
## Alternativa (se Cloudflare atrasar)
Hop público no big1 (`95.216.14.162` ou host público do Proxmox) com `sshd` em **443** + ProxyJump até `10.10.10.125`. Preferência atual do usuário: **Cloudflare Tunnel**.
---
## Credenciais locais (referência ops — não usar no Claude Cloud)
| Campo | Valor |
|-------|--------|
| Host LAN | `10.10.10.125` |
| User | `mini` |
| Password LAN | `805353` |
| Hop Tailscale | `big1` → `100.116.138.100` |
| Projeto | `~/pizza-digital` |
---
## Checklist pós-boot
- [ ] VM125 no ar · Docker pizza-digital up
- [ ] `cloudflared` tunnel `ssh-pizza.myvexx.com` healthy
- [ ] Access service token criado e só em env do Claude
- [ ] Domínio liberado na Network access
- [ ] Claude conecta com a chave `claude-cloud-pizza` sem senha