On this page
Most pages about nopCommerce hosting are hosting companies selling plans. This one isn’t: it covers what nopCommerce 5.00 needs from a server, how to choose a host, and how to set it up on IIS, Linux and Docker, with the requirements taken from the 5.00 source code.
nopCommerce system requirements
| Requirement | nopCommerce 5.00 | nopCommerce 4.80 and 4.90 |
|---|---|---|
| Runtime | ASP.NET Core Runtime 10.0.12 or later | ASP.NET Core Runtime 9 |
| Windows / IIS | .NET 10 Hosting Bundle | .NET 9 Hosting Bundle |
| Database | SQL Server, MySQL or PostgreSQL | SQL Server, MySQL or PostgreSQL |
| Operating system | Windows, Linux or macOS (any that runs .NET 10) | Windows, Linux or macOS (any that runs .NET 9) |
| Build from source | .NET 10 SDK | .NET 9 SDK |
The 10.0.12 minimum comes from the ASP.NET Core packages nopCommerce 5.00 is built with. A server with an earlier .NET 10 runtime may start the site and then fail, so update the runtime first. .NET 9 and .NET 10 can be installed side by side, which lets one server run a 4.90 store and a 5.00 staging copy.
Which kind of hosting to use
| Type | Good for | What to know |
|---|---|---|
| Shared Windows hosting | Trials and very small stores | Cheap, but you share CPU and memory, may not control the app pool, and scheduled tasks can stop when the site idles. Check the host already offers .NET 10. |
| VPS or cloud VM | Most production stores | Your own Windows or Linux server with full control of the runtime, IIS or nginx, and the database. Needs someone to patch and monitor it. |
| Managed platform (Azure App Service and similar) | Teams that don’t want to run servers | The platform runs .NET for you. Use a managed database and persistent storage for images, plugins and App_Data. |
| Containers (Docker, Kubernetes) | Teams already running containers | Repeatable deployments, but App_Data, Plugins and images must live on volumes or the store loses them on restart. |
How to choose a nopCommerce host
- Supports .NET 10 today (ASP.NET Core Runtime 10.0.12 or later), not “coming soon”
- Lets you set the IIS application pool to always running, or keep the process alive on Linux
- Gives the site write access to the folders listed below
- Offers SQL Server Standard, or MySQL or PostgreSQL, sized for your catalog; SQL Server Express is capped at 10 GB per database
- Has daily backups of both files and database, with restores you can test
- Has servers near your customers, or works with a CDN
- Gives you SSL certificates, ideally free automatic ones
nopCommerce also lists hosting partners on its website. Any host that meets the list above works; a partner label doesn’t replace checking it.
Hosting nopCommerce on Windows and IIS
- Install the .NET 10 Hosting Bundle from Microsoft (it includes the ASP.NET Core Runtime and the IIS module), then run
iisreset. - Create a site and an application pool with .NET CLR version: No Managed Code. nopCommerce runs in-process inside the pool.
- In the pool’s advanced settings set Start Mode to AlwaysRunning and Idle Time-out to 0, and on the site set Preload Enabled to True. Without this, IIS stops the site when it’s quiet and scheduled tasks, such as sending queued emails, stop with it.
- Copy the release files, give the pool’s identity (
IIS AppPool\YourPool) modify rights on the folders listed below, and bind HTTPS with your certificate. - Open the site to run the installation wizard, or for an upgrade, keep your App_Data settings files as described in the upgrade guide.
The web.config that ships with nopCommerce already removes WebDAV (which blocks some admin requests) and adds security headers. Keep it when you deploy, and merge your own changes into it.
Hosting nopCommerce on Linux behind nginx
On Linux, nopCommerce runs as a .NET process and nginx (or Apache) handles HTTPS in front of it:
- Install the ASP.NET Core Runtime 10.0.12 or later and the ICU libraries for globalization, and install
libgdiplusif you use features that render images or PDFs. - Copy the published files and run them as a systemd service with
dotnet Nop.Web.dll, listening on a local port such as 5000, with automatic restart. - Configure nginx to proxy to that port and pass the
X-Forwarded-ProtoandX-Forwarded-Forheaders. - In nopCommerce’s App Settings (Configuration → Settings → App settings, or App_Data/appsettings.json), turn on UseProxy and set the forwarded header names and the proxy address in KnownProxies.
App_Data/appsettings.json · HostingConfig
"HostingConfig": {
"UseProxy": true,
"ForwardedProtoHeaderName": "X-Forwarded-Proto",
"ForwardedForHeaderName": "X-Forwarded-For",
"KnownProxies": "127.0.0.1",
"KnownNetworks": ""
}Without UseProxy, nopCommerce thinks every request is plain HTTP, which causes redirect loops when SSL is enforced, and records the proxy’s IP address for every customer. Linux file names are case-sensitive, so test plugins that load files by name.
Running nopCommerce in Docker
The nopCommerce repository has a Dockerfile that builds the source with the .NET 10 SDK and runs it on Microsoft’s aspnet:10.0-alpine image on port 80, and three compose files: one with SQL Server, one with MySQL and one with PostgreSQL. From the repository root:
Start nopCommerce and SQL Server
docker compose up -d
# or: docker compose -f postgresql-docker-compose.yml up -d The compose files are for trying nopCommerce. For production, change the sample database password, put the database on a managed service or its own volume, and mount volumes for App_Data, Plugins and wwwroot/images. Otherwise settings, uploaded plugins and product pictures disappear when the container is recreated.
Folders nopCommerce must be able to write to
The official Dockerfile grants write access to exactly these folders. Use the same list for the IIS application pool identity or the Linux service user:
App_Data and App_Data/DataProtectionKeysPluginsbin and logswwwroot/bundleswwwroot/db_backupswwwroot/files/exportimportwwwroot/iconswwwroot/images, images/thumbs and images/uploadedwwwroot/sitemaps
Giving write access to the whole site is simpler, but it lets a compromised site change its own code.
Running nopCommerce on more than one server
A load-balanced store needs three things shared between instances:
- Cache: turn on the distributed cache in App Settings. nopCommerce 5.00 supports Redis, Redis with synchronised in-memory cache, and SQL Server. It’s off by default; see our caching and Redis guide.
- Data protection keys: by default they are files in
App_Data/DataProtectionKeys. Every instance needs the same keys, or customers are signed out and forms fail when a request moves between servers. - Files: product pictures and uploaded files must be on shared storage. The bundled Azure Blob storage plugin moves pictures to Azure.
Scheduled tasks run on every instance by default; check that tasks which must run once, such as sending emails, behave correctly. Before adding servers, measure: a single well-tuned server handles a lot. Our performance optimisation service starts with that measurement. A database swollen by logs and guest records slows every server, so clean up an oversized database before sizing up.
Common nopCommerce startup errors
| Error | Cause | Fix |
|---|---|---|
| HTTP Error 500.19 | IIS can’t read the aspNetCore section of web.config because the ASP.NET Core Module isn’t installed. | Install the .NET 10 Hosting Bundle, then restart IIS with iisreset. |
| HTTP Error 500.31 | The required ASP.NET Core runtime wasn’t found. | Install ASP.NET Core Runtime 10.0.12 or later (the Hosting Bundle on IIS). A 4.90 server only has .NET 9. |
| HTTP Error 500.30 | The app started and then crashed: often the database connection, folder permissions or a plugin. | Turn on stdoutLogEnabled in web.config, or check the Windows event log or journalctl, and read the first exception. |
| Redirect loop or http links behind a proxy | nopCommerce sees plain HTTP from the proxy and redirects to HTTPS again. | Set UseProxy and the forwarded header names in App Settings, and add the proxy’s address to KnownProxies. |
| Signed out after every deployment | The data protection keys in App_Data/DataProtectionKeys were replaced or aren’t shared between servers. | Keep the folder between deployments, or store the keys centrally when you run several instances. |
If the site runs but emails or other background jobs don’t, read scheduled tasks not running and store URL and HTTPS settings.
Frequently asked questions
What are the system requirements for nopCommerce 5.0?
A server that runs ASP.NET Core Runtime 10.0.12 or later on Windows, Linux or macOS, and a SQL Server, MySQL or PostgreSQL database. On Windows with IIS, install the .NET 10 Hosting Bundle. nopCommerce 4.80 and 4.90 need .NET 9 instead.
Can nopCommerce run on Linux?
Yes. Run it as a service with dotnet Nop.Web.dll behind nginx or Apache as a reverse proxy, with MySQL, PostgreSQL or SQL Server for Linux. Turn on UseProxy in App Settings so nopCommerce knows requests arrive over HTTPS.
Can I host nopCommerce on shared hosting?
For a small store, yes, if the host supports .NET 10. The limits are shared CPU and memory and less control over the application pool, which can stop scheduled tasks such as email sending when the site idles. Most production stores use a VPS or cloud server.
How much server does nopCommerce need?
It depends on catalog size, traffic, plugins and where the database runs. As a starting point, a small store with the database on the same machine runs on 2 virtual CPUs and 4 GB of memory; give SQL Server its own server or a managed database as traffic grows. Measure with real traffic before sizing up.
Which database is best for nopCommerce?
SQL Server is the most widely used with nopCommerce and the one most plugins are tested on. MySQL and PostgreSQL work well and avoid SQL Server licences, but check that your plugins support them before choosing.
Does nopCommerce have an official Docker image?
The repository includes a Dockerfile and docker-compose files for SQL Server, MySQL and PostgreSQL. You build the image from the source; it uses Microsoft’s .NET 10 Alpine images and listens on port 80.
Next steps
Moving a store to .NET 10 for nopCommerce 5.00, or out of shared hosting? Send us your current host, database and traffic, and we will suggest a setup and handle the move.