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-задач.