Фокус
VM / сеть / SSL
curl -I http://domain.ru # Хорошо: ответил nginx, допустимы 200 / 301 / 404 # Плохо: timeout, connection refused или ответ админки роутера
Если VM подключена к bridge и имеет полноценный LAN IP, самый чистый путь — пробрасывать WAN-порты роутера напрямую на IP VM.
WAN 80 → IP_VM:80 WAN 443 → IP_VM:443
Если VM находится во внутренней NAT-сети Virtuality, внешний роутер должен вести трафик на хост Virtuality, а дальше Virtuality DNAT отправит его в VM.
WAN 80/443 → HOST:80/443 HOST DNAT → IP_VM:80/443
| Путь | Назначение |
|---|---|
| /opt/virtuality/source | Исходники GitHub-репозитория Virtuality. |
| /opt/virtuality/web | Установленная web-панель, которую запускает systemd. |
| /opt/virtuality/venv | Python virtualenv панели. |
| /var/lib/virtuality/iso | ISO-образы для установки VM. |
| /var/lib/virtuality/images | qcow2-диски виртуальных машин. |
| /var/lib/virtuality/disk-images | Загруженные готовые .img/.raw/.qcow2 образы и распакованные архивы. |
| /var/lib/virtuality/network | Правила пробросов портов и ручные IP VM. |
| /var/log/virtuality | Логи установки, операций и диагностики. |
cd /opt/virtuality/source sudo git fetch --all sudo git reset --hard origin/main sudo git clean -fd sudo bash scripts/install_web_panel.sh sudo systemctl restart virtuality-web
sudo vhealth sudo systemctl status virtuality-web --no-pager sudo journalctl -u virtuality-web -n 120 --no-pager virsh list --all virsh net-list --all ip route sudo nft list ruleset | grep -A120 virtuality
Если certbot или внешний сайт не открывается, сначала надо понять, где теряется пакет: на роутере, на хосте Virtuality или уже внутри VM.
# На хосте Virtuality sudo tcpdump -ni br0 'tcp port 80 or tcp port 443' # На VM sudo ss -tulpn | grep -E ':80|:443' sudo nginx -t