Главное правило: SSL-ready by default
Let’s Encrypt / HTTP-01curl -I http://domain.ru + +# Хорошо: ответил nginx, допустимы 200 / 301 / 404 +# Плохо: timeout, connection refused или ответ админки роутера+
Bridge VM
br0 / LAN nodeЕсли VM подключена к bridge и имеет полноценный LAN IP, самый чистый путь — пробрасывать WAN-порты роутера напрямую на IP VM.
+WAN 80 → IP_VM:80 +WAN 443 → IP_VM:443+
NAT VM
Virtuality DNATЕсли VM находится во внутренней NAT-сети Virtuality, внешний роутер должен вести трафик на хост Virtuality, а дальше Virtuality DNAT отправит его в VM.
+WAN 80/443 → HOST:80/443 +HOST DNAT → IP_VM:80/443+
Ключевые директории
filesystem| Путь | Назначение |
|---|---|
| /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 | Логи установки, операций и диагностики. |
Обновление панели
GitHub → installcd /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+
Быстрая диагностика
host / VM / networksudo 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+
Проверка проброса к VM
tcpdumpЕсли 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+