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
| Layer | Plesk for Linux | Plesk for Windows |
|---|---|---|
| Web server | Apache, nginx, or both | IIS 10 only |
| PHP handler | FPM by nginx, FPM by Apache, FastCGI, CGI | FastCGI on IIS |
| Postfix + Dovecot | MailEnable Standard | |
| Databases | MariaDB, MySQL, PostgreSQL | MS SQL Server 2005–2022, MySQL 5.7, remote PostgreSQL |
| Brute-force protection | Fail2Ban | Plesk's built-in protection |
| ModSecurity | Apache/nginx module, Atomic + OWASP + Comodo rule sets | IIS module, Comodo flagged Linux-only in the docs |
| Docker | Local Docker daemon managed by Plesk | Remote Docker host only |
| Node.js | Per-domain version selection | One server-wide version via iisnode |
| Isolation model | Per-subscription system user, PHP-FPM pool | Shared 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-on | Windows Plesk |
|---|---|
| CloudLinux | No — Linux OS, by definition |
| LiteSpeed | No — Apache drop-in, Linux only |
| Imunify360 | No — agent supports Linux panels only |
| KernelCare | No — live patching targets Linux kernels |
| JetBackup | No — cPanel and DirectAdmin on Linux |
| Softaculous | Not a supported install path — Softaculous documents its Plesk integration for Plesk Linux |
| R1Soft | Yes — 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:
.htaccessrules become IISweb.configrewrites, 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?+
Can you run CloudLinux with Plesk on Windows?+
Does Imunify360 support Plesk on Windows?+
How do I migrate from cPanel to Plesk on Windows?+
Which Windows Server version should I use for Plesk?+
Is Docker available in Plesk for Windows?+
Next steps
- Plesk license tiers explained — the six SKUs, domain caps, and where the VPS/dedicated split matters
- Install Plesk on AlmaLinux 9 — the Linux path, for the rest of the fleet
- Plesk 360 centralized license monitoring — one inventory view across mixed Windows and Linux nodes
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.