Почему я отказался от Windows на сервере и перешёл на Linux
Как я дошёл до жизни такой
На заре моего админства у меня на сервере стоял Windows Server 2019. Я думал: «Ну GUI, всё понятно, RDP захожу, кнопочки тыкаю». Но чем больше я работал, тем сильнее меня бесил Windows на сервере.
Всё началось с обновлений. Выходит патч от Microsoft — сервер просит перезагрузку. Я работаю, люди на сайте, а мне говорят «перезагрузись». Ладно, перезагружаюсь — 20 минут ребут, потому что «Configuring updates, do not turn off your computer». В это время сайт лежит.
Потом лицензии. Windows Server стоит денег. А если нужно больше 2 ВМ — ещё CAL-лицензии докупать. Я посчитал, сколько я отдал Microsoft за три года — и мне поплохело.
Решил попробовать Ubuntu Server. Поставил на тестовую ВМ, поковырялся неделю. Первые два дня было непривычно — нет GUI, всё через консоль. Но потом я понял прелесть: ни одного ребута за полгода.
Что мне дал переезд
Никаких перезагрузок. Пакеты обновляются без ребута, ядро обновляется с livepatch. Сервер работает месяцами без перезагрузки. У меня сейчас uptime 47 дней, и это я сам перезагружал, когда розетку чинил.
Производительность. На тех же ресурсах Linux тащит больше. Windows Server жрёт около 2-3 GB RAM на себя, Ubuntu — 300-500 MB. Эти 2 GB я отдал базам данных и контейнерам.
Docker из коробки. На Windows Server Docker работает через Hyper-V прослойку — тормозит. На Linux — нативный, летает.
Автоматизация. Всё через скрипты: bash, ansible, docker-compose. Не надо тыкать в GUI. Написал один раз — забыл.
Конкретный пример — PowerShell vs Bash
На Windows Server я писал PowerShell скрипты для автоматизации. Кривой синтаксис, командлеты с огромными названиями, и всё тормозит при запуске. Когда перешёл на Linux, Bash показался раем. Просто `apt update && apt upgrade -y` — и система обновлена. Никаких Install-WindowsFeature, Get-Service, Restart-Computer.
Помню, как настраивал IIS вместо nginx. Веб-сервер от Microsoft — это боль. GUI медленный, настройка через GUI негибкая, а через CLI — PowerShell с километровыми командами. nginx на Linux настраивается одним конфигом в 20 строк. И работает быстрее.
Как я переезжал
Я не делал cut-over в один день. Поставил Ubuntu на Hyper-V (ещё на Windows хосте), перенёс по одному сервису: сначала тестовый сайт, потом базу данных, потом основной сайт, потом почту. Переезд занял две недели. Каждый день по паре часов.
Самое сложное было перенести IIS конфиги и базы данных. С IIS скопировал конфиги руками — там xml, который я переписал под nginx. С БД — дамп через mysqldump, залил на новый сервер. Легко.
Неожиданные плюсы
Документация. У Linux она бесплатная и качественная. DigitalOcean tutorials, Arch Wiki, Ubuntu docs — всё работает. Для Windows Server документация есть, но половина ссылок ведёт на платные курсы Microsoft.
Сообщество. На форумах Linux тебе помогут бесплатно. На форумах Windows тебе скажут «купи техподдержку Microsoft». Разница чувствуется.
Безопасность. На Windows Server я регулярно чистил lastpass от попыток взлома. На Linux за два года — ни одного успешного взлома. Fail2ban блокирует брутфорс, SSH отключен по паролю, всё обновляется автоматически.
Итог через два года
Сейчас у меня на Linux работают: nginx, PHP-FPM, MySQL, PostgreSQL, Docker, n8n, Home Assistant, Gitea, Mosquitto, Zigbee2MQTT. Всё на одном сервере с 8 GB RAM. На Windows Server я бы еле 4 сервиса запустил.
Windows — отличная десктопная ОС. Но на сервере ей не место. Если вы до сих пор на Windows Server — попробуйте Ubuntu хотя бы на тестовой ВМ. Через месяц вы удивитесь, как жили раньше.
Что я потерял
Active Directory. Если у вас сеть на Windows и AD, переезжать на Linux больно. Пришлось поднимать Samba DC и OpenLDAP — работает, но настройка не для слабонервных.
Exchange. Для почты я перешёл на iRedMail на Ubuntu — работает отлично, но интерфейс Roundcube уныл по сравнению с Outlook Web App.
Remote Desktop. Вместо RDP я использую SSH + Mosh. Для файлов — rsync и scp. Если очень нужен GUI — X2Go.
Совет
Если ваш сервер только для сайтов, баз и контейнеров — Linux будет в разы легче, дешевле и стабильнее. Windows оставьте для десктопа и специфического софта, который без него не работает.
Я переехал 2 года назад и ни разу не пожалел. Если боитесь — поставьте Ubuntu на тестовую ВМ и поиграйтесь месяц. Через месяц вы не захотите возвращаться.
Расширю рассказ о переходе с Windows Server на Linux дополнительными деталями. Как я дошёл до жизни такой. На заре моего админства у меня на сервере стоял Windows Server 2019. Я думал: «Ну GUI, всё понятно, RDP захожу, кнопочки тыкаю». Но чем больше я работал, тем сильнее меня бесил Windows на сервере. Всё началось с обновлений. Выходит патч от Microsoft — сервер просит перезагрузку. Я работаю, люди на сайте, а мне говорят «перезагрузись». Ладно, перезагружаюсь — 20 минут ребут, потому что «Configuring updates, do not turn off your computer». В это время сайт лежит. Каждое обновление превращалось в простой сервиса и ночные дежурства.
Потом лицензии. Windows Server стоит денег. А если нужно больше 2 ВМ — ещё CAL-лицензии докупать. Я посчитал, сколько я отдал Microsoft за три года — и мне поплохело. Каждый год лицензионные платежи, каждая ВМ — новые CAL. Для маленького проекта это серьёзные деньги, которые можно потратить на железо или софт. Решил попробовать Ubuntu Server. Поставил на тестовую ВМ, поковырялся неделю. Первые два дня было непривычно — нет GUI, всё через консоль. Но потом я понял прелесть: ни одного ребута за полгода. Первая неделя была самой тяжёлой: я переучивался работать в терминале. Но как только освоился — понял, что назад дороги нет.
Что мне дал переезд — никаких перезагрузок. Пакеты обновляются без ребута, ядро обновляется с livepatch. Сервер работает месяцами без перезагрузки. У меня сейчас uptime 47 дней, и это я сам перезагружал, когда розетку чинил. Для сервера простои — это потерянные деньги и нервы. На Linux обновления применяются без остановки сервисов: apt upgrade работает на лету. Только обновление ядра иногда требует перезагрузки, но и это решается livepatch. Представьте: сервер работает месяцами без единой перезагрузки. На Windows Server такое невозможно в принципе — обновления требуют ребут постоянно.
Производительность. На тех же ресурсах Linux тащит больше. Windows Server жрёт около 2-3 GB RAM на себя, Ubuntu — 300-500 MB. Эти 2 GB я отдал базам данных и контейнерам. Это ключевое преимущество: экономия оперативной памяти напрямую означает больше места для ваших сервисов. На сервере с 8 GB RAM Windows оставлял бы вам 5 гигабайт на всё, а Ubuntu — 7.5. Для баз данных и контейнеров эта разница решает всё. Я запускаю на одном сервере nginx, PHP-FPM, MySQL, PostgreSQL, Docker, n8n, Home Assistant, Gitea, Mosquitto, Zigbee2MQTT — и всё умещается в 8 GB. На Windows я бы еле 4 сервиса запустил.
Docker из коробки. На Windows Server Docker работает через Hyper-V прослойку — тормозит. На Linux — нативный, летает. Контейнеры на Linux — это родная технология: cgroups, namespaces, overlayfs — всё из коробки. Docker на Windows — это эмуляция Linux-контейнеров через виртуализацию, со всеми вытекающими задержками и проблемами. На Linux Docker работает быстро и стабильно. Для меня контейнеризация стала поворотным моментом: я развернул десяток сервисов в контейнерах за вечер. Развёртывание, изоляция, обновление — всё стало проще на порядок. Это один из главных аргументов за Linux.
Автоматизация. Всё через скрипты: bash, ansible, docker-compose. Не надо тыкать в GUI. Написал один раз — забыл. Автоматизация — это то, что превращает администрирование из рутины в управление. На Linux я автоматизировал: обновления, бэкапы, деплой сайтов, мониторинг. Скрипты и docker-compose описывают инфраструктуру текстом — её можно версионировать, переиспользовать, переносить на другие серверы. Инфраструктура как код. На Windows автоматизация возможна, но через PowerShell с GUI-наследием, и это боль. Linux дал мне полный контроль через простые текстовые инструменты.
Конкретный пример — PowerShell vs Bash. На Windows Server я писал PowerShell скрипты для автоматизации. Кривой синтаксис, командлеты с огромными названиями, и всё тормозит при запуске. Когда перешёл на Linux, Bash показался раем. Просто apt update && apt upgrade -y — и система обновлена. Никаких Install-WindowsFeature, Get-Service, Restart-Computer. PowerShell мощный, но его синтаксис многословен, а запуск скриптов медленный из-за загрузки всей инфраструктуры .NET. Bash — короткий, прозрачный, быстрый. Одна команда вместо целого скрипта. Для меня переход на Bash — это переход от «битвы с синтаксисом» к «решению задач».
Помню, как настраивал IIS вместо nginx. Веб-сервер от Microsoft — это боль. GUI медленный, настройка через GUI негибкая, а через CLI — PowerShell с километровыми командами. nginx на Linux настраивается одним конфигом в 20 строк. И работает быстрее. IIS — это GUI-ориентированный веб-сервер, настройка которого через интерфейс муторна, а через скрипты — сложна. nginx — это текстовый конфиг, который понятен и версионируется. Перенос конфигураций с IIS на nginx я сделал за пару дней. А производительность nginx на тех же ресурсах оказалась выше. Веб-сервер — это ещё один довод за Linux.
Как я переезжал. Я не делал cut-over в один день. Поставил Ubuntu на Hyper-V (ещё на Windows хосте), перенёс по одному сервису: сначала тестовый сайт, потом базу данных, потом основной сайт, потом почту. Переезд занял две недели. Каждый день по паре часов. Самое сложное было перенести IIS конфиги и базы данных. С IIS скопировал конфиги руками — там xml, который я переписал под nginx. С БД — дамп через mysqldump, залил на новый сервер. Легко. Постепенная миграция — правильная стратегия: каждый сервис переезжал отдельно, и при проблеме я откатывался. К концу второй недели все сервисы работали на Linux, а Windows-сервер был выключен.
Неожиданные плюсы — документация. У Linux она бесплатная и качественная. DigitalOcean tutorials, Arch Wiki, Ubuntu docs — всё работает. Для Windows Server документация есть, но половина ссылок ведёт на платные курсы Microsoft. Это огромное преимущество: любая проблема Linux уже описана, и решение находится за минуту бесплатно. Арч-вики — это лучший справочник по Linux в принципе. Сообщество: на форумах Linux тебе помогут бесплатно. На форумах Windows тебе скажут «купи техподдержку Microsoft». Разница чувствуется. Сообщество Linux — это тысячи людей, готовых делиться знаниями безвозмездно. Такая поддержка дорогого стоит.
Безопасность. На Windows Server я регулярно чистил логи от попыток взлома. На Linux за два года — ни одного успешного взлома. Fail2ban блокирует брутфорс, SSH отключён по паролю, всё обновляется автоматически. Безопасность Linux строится на нескольких принципах: прозрачность (конфиги читаемы), модульность (можно отключить лишнее), автоматизация (fail2ban, обновления). Windows Server исторически привлекает больше атакующих — это массовая цель. Linux на сервере — это защита через прозрачность и контроль. За два года на Linux ни одного успешного взлома, тогда как на Windows я постоянно чистил логи от попыток.
Что я потерял. Active Directory: если у вас сеть на Windows и AD, переезжать на Linux больно. Пришлось поднимать Samba DC и OpenLDAP — работает, но настройка не для слабонервных. Exchange: для почты я перешёл на iRedMail на Ubuntu — работает отлично, но интерфейс Roundcube уныл по сравнению с Outlook Web App. Remote Desktop: вместо RDP я использую SSH + Mosh. Для файлов — rsync и scp. Если очень нужен GUI — X2Go. Переезд не был без потерь: корпоративные экосистемы Microsoft завязаны на AD и Exchange. Но для моих задач — сайты, базы, контейнеры — эти потери оказались несущественными. Альтернативы есть и работают.
Совет. Если ваш сервер только для сайтов, баз и контейнеров — Linux будет в разы легче, дешевле и стабильнее. Windows оставьте для десктопа и специфического софта, который без него не работает. Я переехал 2 года назад и ни разу не пожалел. Если боитесь — поставьте Ubuntu на тестовую ВМ и поиграйтесь месяц. Через месяц вы не захотите возвращаться. Windows — отличная десктопная ОС, и я не спорю с этим. Но на сервере ей не место. Linux — это стабильность, экономия ресурсов, автоматизация и безопасность. Попробуйте месяц на тестовой ВМ — и сами увидите разницу. Через месяц вы удивитесь, как жили раньше.