Files
ubuntu-bare-metal/coding-agent/NETWORK-STATIC-IP-HANDOFF.md
T
tomasz-syn-grzegorza 359afb3a59 Initial import: bare-metal stacks, Server UI, GPU fan, tutorials.
Infrastructure configs for GMKtec K11 (Docker, vLLM, LocalAI, ComfyUI,
control-plane, gpu-fan agent, Server UI with CLI/file explorer/GPU fan curve).

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-05 12:02:04 +00:00

110 lines
3.6 KiB
Markdown

# Handoff — statyczne IP (dual NIC) dla agenta kodującego
## Stan: skrypt v2 (skan + menu), wdrożenie przez użytkownika
- [x] [`scripts/configure-static-dual-nic.sh`](../scripts/configure-static-dual-nic.sh) — Netplan **1.2** (`ignore-carrier`, DNS na interfejsie z bramą; bez `networkd:`)
- [x] [`scripts/restore-dhcp-network.sh`](../scripts/restore-dhcp-network.sh) — pomija zepsute backupy; `--force-dhcp`
- [ ] **Użytkownik uruchamia** skrypt na hoście
- [ ] Po apply: uzupełnić [`NETWORK-STATIC-IP-DEPLOYMENT.md`](NETWORK-STATIC-IP-DEPLOYMENT.md) (wybrany profil)
- [ ] Zsynchronizować `192.168.100.5``192.168.100.90` w pozostałych handoffach
Artykuł: [`NETWORK-STATIC-IP-BLOG.md`](NETWORK-STATIC-IP-BLOG.md).
---
## Jak działa skrypt (v2)
1. **Skan** `eno1` / `enp3s0` — stan, link (TAK/NIE), obecny IPv4
2. **Menu CLI** — tylko opcje pasujące do wykrytych kabli
3. **Netplan** — globalne `nameservers`, `optional` / `networkd.ConfigureWithoutCarrier`, brama z `metric: 100`
4. **Weryfikacja** — oczekiwane IP, `networkctl reconfigure`, `ping -I <gw_nic> 192.168.100.1`
### Profile (menu / `--profile`)
| Profil | eno1 | enp3s0 | Brama |
|--------|------|--------|-------|
| `dual-eno1` (dual, zalecane) | `.80` | `.90` | eno1 |
| `dual-enp3s0` | `.90` | `.80` | enp3s0 |
| `single-eno1-80` | `.80` | — | eno1 |
| `single-eno1-both` | `.80` + `.90` | — | eno1 |
| `single-enp3s0-90` | — | `.90` | enp3s0 |
| `single-enp3s0-80` | — | `.80` | enp3s0 |
| `single-enp3s0-both` | — | `.80` + `.90` | enp3s0 |
Menu pokazuje się tylko gdy **co najmniej jeden** interfejs ma link. Żaden link → błąd i `exit 1`.
---
## Uruchomienie
```bash
cd /home/tomasz-syn-grzegorza/cursor/ubuntu-bare-metal/scripts
# Interaktywnie (skan + menu):
sudo ./configure-static-dual-nic.sh
# Podgląd YAML (domyślna opcja 1 z menu po skanie):
sudo ./configure-static-dual-nic.sh --dry-run
# Bez menu (agent / automatyzacja):
sudo ./configure-static-dual-nic.sh --non-interactive --profile dual-eno1
```
Rollback (pomija zepsute backupy ze statycznej konfiguracji):
```bash
sudo ./restore-dhcp-network.sh
# lub wymuś czysty DHCP:
sudo ./restore-dhcp-network.sh --force-dhcp
```
---
## Pre-flight
1. Zarezerwuj `.80` i `.90` na routerze (DHCP)
2. Druga sesja SSH lub konsola fizyczna
3. Skrypt tworzy backup: `/etc/netplan/00-installer-config.yaml.bak.<timestamp>`
**Nie zakładaj** sztywnie kabla w `eno1` — skrypt wykrywa link i proponuje właściwy profil.
---
## Weryfikacja po apply
```bash
ip -br addr show eno1 enp3s0
ip route show default
ping -c 2 -I eno1 192.168.100.1 # lub -I enp3s0, zależnie od profilu
curl -s -o /dev/null -w '%{http_code}\n' http://192.168.100.90:8091
```
---
## Troubleshooting
| Problem | Działanie |
|---------|-----------|
| Brak IPv4 na eno1 mimo kabla (stary bug) | v2: `ConfigureWithoutCarrier` + menu; spróbuj `dual-eno1` lub `single-enp3s0-90` jeśli tylko enp3s0 |
| Brak internetu | `ip route`; brama musi być na interfejsie **z kablem** |
| SSH urwane | `ip a` z konsoli; rollback `restore-dhcp-network.sh` |
| Konflikt IP | Zwolnij `.80`/`.90` na routerze |
---
## Follow-up po wdrożeniu
Pliki z `192.168.100.5`**`.90`** (gdy usługi na enp3s0):
- `coding-agent/DOCKER-UI-*.md`, `SWARMUI-*.md`, `PORTAINER-SETUP-TOKEN.md`, `BACKLOG.md`
- `stacks/npmplus/README.md`, `manual-tutorial/06-gpu-fan-control.md`
Gdy wybrano `single-enp3s0-both` lub `single-enp3s0-90` — usługi pod `.90` na enp3s0.
---
## Backlog
- [ ] Wypełnić `NETWORK-STATIC-IP-DEPLOYMENT.md` z wybranym profilem
- [ ] Zaktualizować IP w handoffach