Panellicense

Plesk on Windows vs Plesk on Linux: what you actually lose

Plesk is the only mainstream panel that runs on Windows Server, and the license costs the same either way — but the stack underneath swaps out and most add-ons go away.

10 min readUpdated 2026-08-23plesk · windows-server · iis · asp-net
schema: Articleschema: FAQPageschema: BreadcrumbList

Plesk Obsidian is the only mainstream hosting panel that runs on Windows Server, which makes it the default answer for anyone hosting ASP.NET, classic ASP, or SQL Server workloads. The license SKU and the price are identical to the Linux build, so on paper it looks like a free platform choice.

It isn't. Below the panel UI, almost every component swaps out: IIS replaces Apache and nginx, MailEnable replaces Postfix and Dovecot, and the entire CloudLinux-shaped ecosystem of add-ons you would normally stack on a shared-hosting box simply does not exist for Windows. This article covers what changes, what you can and cannot license for a Windows Plesk server, and when the trade is worth making.

The license is the same — the OS bill is not

Plesk does not charge differently for Windows. The same six SKUs described in the Plesk tier breakdown apply: Web Admin at $15.99/mo, Web Pro at $28.99/mo, and Web Host at $59.99/mo on VPS or $65.99/mo on dedicated hardware. Domain caps (10 / 30 / unlimited) count the same way on both platforms, and a Plesk license issued for a Linux box activates on a Windows box without a SKU change.

What does change is everything outside the Plesk invoice. You are now paying Microsoft for Windows Server — usually per-core SPLA through your datacentre if you are reselling — and optionally for SQL Server on top. A Windows Plesk node has a materially higher floor cost than the equivalent AlmaLinux node before you have provisioned a single site.

Windows also costs you RAM. Plesk's stated minimum is 2 GB and 32 GB of disk, but the practical baseline on Windows Server sits well above a comparable Linux install once IIS, MailEnable, and the .NET runtimes are resident. Budget 4 GB before you host anything.

Component-for-component: what swaps out

LayerPlesk for LinuxPlesk for Windows
Web serverApache, nginx, or bothIIS 10 only
PHP handlerFPM by nginx, FPM by Apache, FastCGI, CGIFastCGI on IIS
MailPostfix + DovecotMailEnable Standard
DatabasesMariaDB, MySQL, PostgreSQLMS SQL Server 2005–2022, MySQL 5.7, remote PostgreSQL
Brute-force protectionFail2BanPlesk's built-in protection
ModSecurityApache/nginx module, Atomic + OWASP + Comodo rule setsIIS module, Comodo flagged Linux-only in the docs
DockerLocal Docker daemon managed by PleskRemote Docker host only
Node.jsPer-domain version selectionOne server-wide version via iisnode
Isolation modelPer-subscription system user, PHP-FPM poolShared or dedicated IIS application pool

Three of those rows matter more than the rest.

PHP is FastCGI, full stop

The whole FPM-by-nginx versus FPM-by-Apache decision that dominates PHP handler choice on Linux evaporates. On IIS you get FastCGI. That is fine for WordPress and for most PHP applications, but you lose the per-pool memory and process controls that let you pack a Linux box densely, and you lose the option to move a heavy tenant onto its own tuned pool without giving them a whole application pool.

Isolation comes from application pools, not users

Plesk on Windows puts every subscription into a shared IIS application pool by default. A dedicated application pool per subscription is available, and it is the option that gives you real fault isolation — a crash or a runaway worker in one pool does not take out another. Turn it on in the hosting plan; leaving the default in place on a multi-tenant box is the most common Windows Plesk configuration mistake.

Even with dedicated pools, this is weaker than what CloudLinux gives you on Linux. There is no LVE, no per-tenant CPU/IO/entry-process ceiling, and no CageFS. If your business model is dense shared hosting with abusive neighbours, Windows has no equivalent answer.

Fail2Ban is gone

Plesk's own brute-force protection covers the panel, mail, and FTP logins, and the Plesk Firewall extension exists on Windows in a slightly different form. But the jail-per-service model described in the Fail2Ban jails guide is Linux-only. Custom filters against application logs — the WordPress wp-login.php jail, for example — have no direct equivalent.

The add-on catalogue shrinks hard

This is the part that surprises people who price a Windows node by the Plesk SKU alone. Most of the licenses a hosting business stacks on a Plesk server are Linux-only:

Add-onWindows Plesk
CloudLinuxNo — Linux OS, by definition
LiteSpeedNo — Apache drop-in, Linux only
Imunify360No — agent supports Linux panels only
KernelCareNo — live patching targets Linux kernels
JetBackupNo — cPanel and DirectAdmin on Linux
SoftaculousNot a supported install path — Softaculous documents its Plesk integration for Plesk Linux
R1SoftYes — there is a native Windows agent

So a Windows Plesk box's realistic security and backup story is: Plesk's built-in ModSecurity on IIS, Plesk Backup Manager to S3, Wasabi, or B2, and R1Soft's Windows agent for block-level CDP. If you are used to running Imunify360 and JetBackup on every node, plan for the gap before you sell the first account, not after.

What Windows buys you back

The list is short, but for the workloads it covers, nothing else competes:

  • ASP.NET and ASP.NET Core. Plesk exposes the framework version per site. ASP.NET Core 8.0 is supported from Plesk Obsidian 18.0.57 onward, once you install the "Microsoft ASP.NET Core hosting features" component through Plesk Installer.
  • SQL Server. Provisioned and backed up from the panel, with per-subscription database users. There is no way to offer managed MSSQL from a Linux panel.
  • Classic ASP and legacy COM applications. Rare, but the customers who still run them do not migrate, and they pay.
  • One panel across a mixed fleet. If you already run Linux Plesk nodes, Plesk 360 gives you both platforms in one inventory view.

Installing Plesk on Windows Server

The installer is a single binary. On Server Core, pull it with PowerShell:

Invoke-WebRequest -URI https://installer-win.plesk.com/plesk-installer.exe -OutFile plesk-installer.exe

For an unattended install of the recommended component set:

.\plesk-installer.exe --select-product-id=panel --select-release-latest --installation-type=recommended

Budget 30 to 60 minutes. That is Plesk's own figure and it is honest — the .NET and IIS component installs dominate the runtime, and the box reboots partway through.

For an interactive run with a component picker, use the console UI instead:

.\plesk-installer.exe --console

Add "Node.js IIS module (iisnode)" and "Microsoft ASP.NET Core hosting features" at the component step if you need them. Both are also addable later from Tools & Settings → Updates and Upgrades.

Activating the license

The CLI utilities live in %plesk_cli%, which resolves to C:\Program Files (x86)\Plesk\bin by default. Extended utilities are in %plesk_bin% (...\Plesk\admin\bin). Install an activation code:

& "$env:plesk_cli\license.exe" -i AB1C23-4DEF56-7GHI89-JK1L23-MNP456

The binding rules are identical to Linux: the activation code binds to the most recent server that installed it, so never run the same code on two production boxes. Everything in the Plesk license error guide applies, with license.exe substituted for plesk bin license.

Migration paths in and out

Cross-platform migration is the sharp edge here.

  • Plesk Windows → Plesk Windows and Helm 3 → Plesk Windows are supported Plesk Migrator routes.
  • cPanel → Plesk Windows is not a Migrator route. Plesk Migrator's cPanel source targets Plesk for Linux. To land cPanel sites on a Windows node you use the Site Import tool, which moves files, databases, and mail but not hosting configuration, and does not do the staged sync described in the cPanel to Plesk playbook.
  • Plesk Linux ↔ Plesk Windows works, but expect manual work on anything platform-bound: .htaccess rules become IIS web.config rewrites, cron becomes Scheduled Tasks, and any PHP extension you compiled by hand does not come along.

Which platform to pick

Pick Windows when .NET, SQL Server, or a legacy ASP application is the reason the server exists. That is the only case where the higher OS cost and the missing add-on catalogue are worth absorbing.

Pick Linux for everything else, including WordPress-heavy hosting. WordPress Toolkit is identical on both platforms, but on Linux you can put LiteSpeed, CloudLinux, and Imunify360 underneath it, which is a materially better product at a lower cost per account. The cPanel versus Plesk comparison covers the panel-level choice once you have settled on Linux.

Mixed fleets are common and fine: a handful of Windows nodes for .NET customers, Linux for the volume. The Plesk license is per server, so you can run both without a licensing penalty.

Does a Plesk license work on both Windows and Linux?+
Yes. The SKU and price are identical — Web Admin, Web Pro, and Web Host all activate on either platform. You choose the OS at install time, not at purchase time.
Can you run CloudLinux with Plesk on Windows?+
No. CloudLinux is a Linux operating system, so LVE, CageFS, and PHP Selector are unavailable on Windows. Dedicated IIS application pools are the closest isolation mechanism Windows offers, and they are considerably weaker.
Does Imunify360 support Plesk on Windows?+
No. The Imunify360 agent supports Linux panels only. On a Windows Plesk node your WAF is ModSecurity running as an IIS module, configured from Plesk's own interface.
How do I migrate from cPanel to Plesk on Windows?+
Plesk Migrator does not support cPanel as a source for Windows targets. Use the Site Import tool, which transfers files, databases, and mail, then rebuild hosting settings and rewrite rules by hand.
Which Windows Server version should I use for Plesk?+
Windows Server 2022 — it is Plesk's recommended version and has years of support left. 2025 is also supported. Avoid 2016, which leaves extended support in January 2027.
Is Docker available in Plesk for Windows?+
Only against a remote Docker host. Plesk for Windows cannot manage a local Docker daemon the way the Linux build does.

Next steps

Licensing a mixed fleet or unsure which SKU fits a Windows node? Talk to us — volume pricing starts at five licenses on one billing account.

Related articles

All comparisons
how to
Plesk 360 setup guide for centralized licenses and monitoring
Plesk 360 is the SaaS control plane for everyone running more than one Plesk box — license management, uptime monitoring, and SSO into every panel from one dashboard.
7 min read
pricing
Plesk license tiers explained: Web Admin, Pro, and Host
Plesk's three editions cap domains, not accounts, and each one comes in a VPS-priced and a Dedicated-priced version. Here is what each tier limits, what it costs, and when to upgrade.
5 min read
compare
PHP handlers in Plesk: FPM by nginx, FPM by Apache, FastCGI, and CGI
Plesk gives you five PHP handlers per domain — and the choice between nginx-only FPM and Apache-fronted FPM is the one most admins get wrong. Here is the trade-off, with memory math and recommendations.
9 min read
compare
Plesk Web Pro vs Web Host — which edition pays off, and when
Reseller-oriented breakdown of Plesk's editions — domain limits, reseller management, and the two real differentiators that decide the upgrade from Web Pro to Web Host.
3 min read
troubleshoot
Fix Plesk license errors: invalid, expired, and IP-bound keys
Decode the common Plesk license errors — invalid key, expired key, IP-bound, and connectivity failures — and fix each one from the CLI in minutes.
5 min read
how to
Installing Plesk Obsidian on AlmaLinux 9
Clean Plesk Obsidian install on AlmaLinux 9 — auto-installer flags, the SELinux and firewalld settings that bite you on first boot, license activation, and a short post-install checklist.
7 min read
Switch in an afternoon

Switch from your current reseller — free.

We migrate active cPanel, Plesk, LiteSpeed and CloudLinux licenses from any reseller. We prorate the first month so you never pay twice, and your customers see zero downtime during the swap.