mysurik.ru

Windows 11 в виртуалке на Proxmox: зачем и как я настроил

Windows 11 в виртуалке на Proxmox: зачем и как я настроил

Я долго был тем самым парнем, который говорит «Linux всё решает». И в целом это правда. Но однажды моей жене понадобилась программа для работы с налоговыми документами. И она, конечно, была только для Windows.

Началось всё не с Windows. Началось с того, что я понял: у меня на Proxmox стоит куча виртуалок с Linux, но Windows нигде нет. И вот пришёл момент, когда она понадобилась.

Я думал: «Ну, поставлю Windows в виртуалку, это же просто». Ох, как я ошибался.

Почему вообще Windows на сервере

Казалось бы, зачем на домашнем сервере Windows? Я сам так думал.

Но на деле причин хватает. Программы под налоговую, бухгалтерию, банковские клиенты с токенами, какое-нибудь ПО для сканера — всё это часто существует только под Windows. Да, есть Wine, есть виртуалки с web-версиями. Но когда дело касается важных документов и электронных подписей — лучше не рисковать.

Так у меня появилась идея: сделать одну виртуалку Windows 11 на Proxmox, которую можно открыть откуда угодно через RDP. Чтобы не держать отдельный комп под эти задачи.

Момент Икс: первая попытка и провал

Первая попытка была провальной. Я скачал ISO Windows 11, создал VM в Proxmox, начал установку. И тут — бац. «Эта версия Windows не поддерживается этим процессором».

Мой Proxmox стоит на AMD Ryzen 7 2700. А Windows 11 официально требует процессор поновее. И хотя по факту он отлично справляется с задачами, установщик Windows 11 упёрся и отказался ставиться.

Я сидел, смотрел на экран и думал: «Ну и ну. Двадцать лет прошло, а Windows всё ещё придумывает, кому можно жить на её земле».

Полез гуглить. Оказалось, обойти это просто — надо вставить в реестр или в командную строку установщика несколько команд. Но хитрость в том, что для этого нужно в самом начале установки нажать Shift+F10 и ввести:

reg add HKLMSYSTEMSetupLabConfig /v BypassTPMCheck /t REG_DWORD /d 1

И аналогично для Secure Boot и CPU Check. После этого установщик перестаёт быть таким принципиальным.

Но, блин, у меня это заняло полчаса. Потому что я сначала не туда вводил команды, потом забыл про BypassCPUCheck и виртуалка опять выругалась. Пока я не понял, что надо добавить все три ключа.

Драйверы и virtio

Вторая боль — драйверы. Windows внутри виртуалки не видит диск, потому что диск создан на virtio-blk. А драйверы virtio в установщике Windows 11 отсутствуют.

Надо скачать ISO с virtio-драйверами с сайта Fedora, примонтировать к виртуалке и в момент выбора диска нажать «Загрузить драйвер». Иначе установщик говорит: «Не найдено устройств для установки».

Я помню, как в первый раз увидел это сообщение и подумал: «Всё, конец. Я сломал сервер». Потому что диск-то создан, а не видно.

Решение было простое, но я о нём не знал. Качаешь virtio-win.iso, подключаешь в Proxmox как CD-ROM, в установщике жмёшь «Загрузить драйвер», указываешь диск virtio-win. Всё, диск появился.

Это, кстати, частая проблема у всех, кто впервые ставит Windows на Proxmox. Если читаешь это и у тебя та же ошибка — знай, ты не один такой. Я тоже прошёл этот круг ада.

Сеть и virtio-net

С драйверами сети та же история. По умолчанию в Proxmox я создал сетевую карту как virtio. Windows её не видит без драйвера.

Вариант — использовать e1000 (эмуляция Intel), тогда Windows опознает сеть сразу. Но e1000 медленнее. Для нагруженных задач лучше virtio.

Я поступил так: сначала поставил Windows с e1000, потом уже внутри системы доставил virtio-драйверы через тот же диск, переключил сетевую карту на virtio и отключил e1000. Прошло безболезненно, сеть поднялась.

Если хочешь сэкономить время на первых шагах — просто ставь сеть как e1000, а потом переключай. Так я советую, потому что сам обжёгся на том, что сначала не мог понять, почему в Windows нет сети.

RDP и доступ из дома

Дальше всё было проще. Я включил RDP в Windows, настроил статический IP на виртуалке (у меня она в VLAN серверов), открыл порт в UFW. И теперь с любого устройства в домашней сети захожу в эту Windows через Remote Desktop.

Но я не остановился на этом. Я захотел доступ извне. Тут помог мой опыт с WireGuard — я уже настраивал туннель на VPS. Закинул Windows-виртуалку в приватную сеть WireGuard, и теперь могу подключиться к ней из любой точки мира, где есть интернет.

Почему не пробросить порт 3389 напрямую в интернет? Потому что это лотерея. RDP без защиты — приглашение для сканеров портов. У меня сразу же начались бы попытки брутфорса. Поэтому — только через VPN, никаких открытых портов RDP наружу.

Вот тут, кстати, я себя похвалил: в этот раз сделал правильно с первого раза.

Что внутри

Дал виртуалке 4 ядра из 8, 8 ГБ памяти из 62 и диск 60 ГБ на SSD. Для офисных задач и пары программ — за глаза. Windows 11 занимает, конечно, немало, но запас есть.

Производительность хорошая. Виртуалка реагирует быстро, программы открываются мгновенно. Для сравнения: на жене нормальный офисный комп с SSD, разницы не замечаю.

Единственное — Windows жрёт оперативку как не в себя. 8 ГБ ей мало не показалось, но и свободно есть откуда взять. Если бы было меньше — было бы грустно.

Что я докрутил внутри системы

После установки я убрал из Windows всё лишнее, что только можно. У меня был опыт с Windows на старом ноутбуке, и я знал: дефолтная одиннадцатая — это балласт.

Первым делом отключил кучу фоновых служб, которые я не использую. Факс, печать, часть телеметрии. Не буду перечислять все — это известный чек-лист, который гуглится за минуту. Важно другое: я не трогал службы, про которые не знал. В виртуалке, которая не выходит в интернет напрямую, это не так критично, но привычка — сила.

Поставил облегчённый антивирус. Не Defender, который грызёт ресурсы, а что-то полегче. Хотя, честно, для виртуалки за VPN-туннелем можно было и просто обновления оставить.

Ещё выключил эффекты интерфейса. Прозрачность, анимации — всё это красиво, но в виртуалке без GPU это дополнительная нагрузка на CPU. Сделал «производительность лучше» в настройках — и интерфейс стал откликаться заметно бодрее.

И последнее: настроил обновления Windows на ночное время. Проснулся как-то утром, а виртуалка висит — обновлялась полночи. С тех пор обновления только ночью, в окно, когда никто не работает.

Диск и производительность

Ещё пара слов про диск. В Proxmox я сделал диск на qcow2, включил discard (это TRIM для виртуалок). Без этого Windows не знает, что может «отдавать» ячейки обратно, и диск со временем пухнет.

Ещё я включил в Proxmox настройку io_uring для диска. Это ускоряет ввод-вывод в современных версиях. Разницу заметил не то чтобы глазами, но в тестах диск перестал быть узким местом.

Кстати, важный момент: не ставь Windows на HDD. Даже в виртуалке. Я пробовал на одном из серверов — это было больно. Windows любит кучу мелких операций ввода-вывода, и HDD с этим справляется ужасно. Только SSD.

Бэкапы

Важный момент — бэкапы. У меня на Proxmox настроено резервное копирование виртуалок. Windows-машину я тоже включил в ротацию: бэкап раз в неделю, хранение две недели.

Зачем? Потому что если жена потеряет документы из этой виртуалки — мне не жить. Лучше перебдеть. Плюс Proxmox Backup Server позволяет быстро откатить систему, если что-то сломается после обновления Windows.

И не забывай про снапшоты перед обновлениями. Windows обновляется так часто, что я боюсь каждого вторника патчей. Снапшот перед обновлением — это моя страховка. Один раз откатился и больше не парюсь.

Чего Windows не смогла заменить

Скажу честно, виртуалка с Windows не решила всех моих проблем. Некоторые вещи я всё равно делаю по старинке.

Во-первых, периферия. Программа для налоговой требует токен с драйвером, который лезет в USB. В виртуалку через Proxmox USB-проброс — это отдельный квест. Я пробовал: virtio-проброс работает, но с современными токенами бывают сюрпризы. Для критичных операций я всё же загружаюсь в Windows на отдельной машине.

Во-вторых, некоторые банковские клиенты капризничают в виртуалках. Они проверяют окружение и могут ругаться. Хорошо, что не все. Мой основной банк работает нормально, но знаю, что у некоторых коллег были с этим проблемы.

В-третьих, если нужна серьёзная работа с 3D или видео — виртуалка без GPU не вариант. У меня есть опыт проброса GPU в Proxmox, но это отдельная история с танцами. Для игр и тяжёлого рендера я держу отдельную машину.

Но для 90% офисных задач виртуалка заменила отдельный компьютер. И это — главный результат.

Что бы я сделал иначе

Если бы я начинал с нуля, я бы поставил Windows 11 с самого начала с virtio-драйверами, а не через e1000. Сэкономил бы час на переключениях сети.

И я бы сразу сделал диск побольше. 60 ГБ хватает, но Windows после всех обновлений и пары программ ест их быстро. Если бы дал 80-100 ГБ — не думал бы о размере вообще.

Ещё я бы поставил Windows в отдельный VLAN с ограниченным доступом к остальной сети. Сейчас она в общей сети, и я не совсем спокоен. В следующий раз — изолирую.

Если вкратце

  • Зачем: программы под Windows (налоговая, банки) в виртуалке на Proxmox.
  • Обход требований: Shift+F10 в установщике, три ключа в LabConfig (TPM, SecureBoot, CPU).
  • Диск не виден — нужен virtio-win.iso и «Загрузить драйвер» в установщике.
  • Сеть не работает на virtio-net без драйвера — ставь сначала e1000, потом переключай.
  • RDP: включил, статический IP, доступ через WireGuard VPN, порт наружу не открывал.
  • Ресурсы: 4 ядра, 8 ГБ RAM, 60 ГБ диск — хватает с запасом.
  • Бэкапы: ротация раз в неделю, снапшот перед каждым обновлением Windows.
  • Итог: одна виртуалка заменила отдельный компьютер для Windows-задач.

Ваш комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *