Step 001: Kolejnosc wdrozenia (najpierw WireGuard, potem odciecie publicznego SSH)

Cel: najpierw stawiamy WireGuard i testujemy polaczenie po WG, a dopiero potem ucinamy publiczne SSH.
To minimalizuje ryzyko zablokowania sie na baremetalu.

0) Pre-flight (nie zamykaj obecnej sesji SSH)
- Na baremetalu zostaw otwarta aktualna sesje SSH.
- Przygotuj drugi terminal do testow.

Sprawdz publiczny interfejs/IP routing:
  ip route get 1.1.1.1

1) WireGuard na baremetalu (nie ruszaj SSH/firewall poza WG portem)
  sudo apt-get update
  sudo apt-get install -y wireguard

Jesli uzywasz skryptu:
  sudo /usr/local/sbin/wg_serverctl.py gen-server --force
  sudo /usr/local/sbin/wg_serverctl.py gen-client client1
  sudo /usr/local/sbin/wg_serverctl.py add client1
  sudo /usr/local/sbin/wg_serverctl.py export client1

Uruchom WG na serwerze:
  sudo systemctl enable --now wg-quick@wg0
  sudo wg show
  ip a show wg0

2) WireGuard na kliencie i test polaczenia
Na kliencie:
  sudo apt-get update
  sudo apt-get install -y wireguard
  sudo /usr/local/sbin/wg_client.py install ./client1.conf
  sudo /usr/local/sbin/wg_client.py up
  sudo /usr/local/sbin/wg_client.py status

Testy (z klienta):
  ping 10.66.66.1
  ssh user@10.66.66.1

Dopiero jak to dziala, idziesz dalej.

3) (Opcjonalnie teraz) UFW: wpusc WG, ale NIE odcinaj jeszcze publicznego SSH
Na baremetalu:
  sudo apt-get install -y ufw
  sudo ufw allow 51820/udp
  sudo ufw allow 22/tcp   (tymczasowo, zeby nic nie uciac przy wlaczaniu UFW)
  sudo ufw enable
  sudo ufw status verbose

Uwagi:
- Jesli `sudo ufw status verbose` pokazuje "Status: inactive", to reguly NIE dzialaja.
- W takim wypadku wlacz UFW bezpiecznie (zostawiajac dostep przez WG):

  sudo ufw default deny incoming
  sudo ufw default allow outgoing
  sudo ufw allow 51820/udp
  sudo ufw allow in on wg0 to any port 22 proto tcp
  sudo ufw deny  in on eth0 to any port 22 proto tcp
  sudo ufw enable
  sudo ufw status verbose

4) Przestawienie SSH na "tylko WireGuard"
1) Najpierw pozwol na SSH po wg0:
  sudo ufw allow in on wg0 to any port 22 proto tcp

2) Potem ogranicz sshd do WG IP:
  sudo sshd -t
  sudoedit /etc/ssh/sshd_config

Dodaj/ustaw:
  PasswordAuthentication no
  PermitRootLogin no
  ListenAddress 10.66.66.1

Restart i test:
  sudo systemctl restart ssh

Z klienta:
  ssh user@10.66.66.1

3) Jak test przeszedl: zablokuj publiczne SSH:
  sudo ufw deny 22/tcp
  sudo ufw status verbose

5) RPC tylko po WG (po instalacji Agave)
Docelowo:
- bind RPC/WS na 10.66.66.1 (wg0)
- UFW: allow 8899/8900 tylko "in on wg0"
