{"ArticleId":null,"Name":"System requirements","Content":"\u003Cp\u003EGrandNode is a single ASP.NET Core application with a MongoDB database. It runs on Windows, Linux and macOS, on a developer laptop, a virtual machine, a container platform or a managed cloud service. This article lists what you need for each way of running it, so you can prepare the machine before you \u003Ca href=\u0022/getting-started-installing\u0022\u003Einstall\u003C/a\u003E.\u003C/p\u003E\n\n\u003Ch2 id=\u0022summary\u0022\u003ESummary\u003C/h2\u003E\n\u003Ctable\u003E\n\u003Cthead\u003E\u003Ctr\u003E\u003Cth\u003EComponent\u003C/th\u003E\u003Cth\u003EVersion\u003C/th\u003E\u003Cth\u003ENeeded for\u003C/th\u003E\u003C/tr\u003E\u003C/thead\u003E\n\u003Ctbody\u003E\n\u003Ctr\u003E\u003Ctd\u003E.NET SDK\u003C/td\u003E\u003Ctd\u003E10.0 \u2014 the exact SDK is pinned in \u003Ccode\u003Eglobal.json\u003C/code\u003E (currently 10.0.301, later 10.0.3xx patches also work)\u003C/td\u003E\u003Ctd\u003EBuilding from source or from the release package\u003C/td\u003E\u003C/tr\u003E\n\u003Ctr\u003E\u003Ctd\u003EASP.NET Core Runtime\u003C/td\u003E\u003Ctd\u003E10.0\u003C/td\u003E\u003Ctd\u003ERunning a published build (the SDK includes it)\u003C/td\u003E\u003C/tr\u003E\n\u003Ctr\u003E\u003Ctd\u003EMongoDB\u003C/td\u003E\u003Ctd\u003E4.0 or newer\u003C/td\u003E\u003Ctd\u003EThe database. A local server, a Docker container or a MongoDB Atlas cluster\u003C/td\u003E\u003C/tr\u003E\n\u003Ctr\u003E\u003Ctd\u003EDocker\u003C/td\u003E\u003Ctd\u003EAny current version\u003C/td\u003E\u003Ctd\u003EOnly if you install with the Docker image\u003C/td\u003E\u003C/tr\u003E\n\u003Ctr\u003E\u003Ctd\u003ENode.js \u002B npm\u003C/td\u003E\u003Ctd\u003E20 LTS or newer (20.19\u002B for the admin panels)\u003C/td\u003E\u003Ctd\u003EOnly when you change the storefront or panel frontend sources\u003C/td\u003E\u003C/tr\u003E\n\u003Ctr\u003E\u003Ctd\u003EIDE\u003C/td\u003E\u003Ctd\u003EVisual Studio, JetBrains Rider or VS Code with .NET 10 support\u003C/td\u003E\u003Ctd\u003EOptional, for development\u003C/td\u003E\u003C/tr\u003E\n\u003C/tbody\u003E\n\u003C/table\u003E\n\n\u003Ch2 id=\u0022dotnet\u0022\u003E.NET\u003C/h2\u003E\n\u003Cp\u003EGrandNode targets .NET 10. To build it you need the .NET 10 SDK. The repository contains a \u003Ccode\u003Eglobal.json\u003C/code\u003E file that pins the SDK version with \u003Ccode\u003ErollForward: latestPatch\u003C/code\u003E: any patch of the same feature band is accepted, an older one is not. If \u003Ccode\u003Edotnet build\u003C/code\u003E reports that the requested SDK was not found, install the version named in \u003Ccode\u003Eglobal.json\u003C/code\u003E from the .NET download page.\u003C/p\u003E\n\u003Cp\u003EA server that only runs a build you published elsewhere needs just the ASP.NET Core 10 runtime. The official Docker image already contains it.\u003C/p\u003E\n\n\u003Ch2 id=\u0022mongodb\u0022\u003EMongoDB\u003C/h2\u003E\n\u003Cp\u003EMongoDB 4.0 or newer is required. The installation wizard accepts either a server name with a database name (and optional user name and password) or a full connection string, so all of these work:\u003C/p\u003E\n\u003Cul\u003E\n\u003Cli\u003Ea MongoDB Community server on the same machine (\u003Ccode\u003Elocalhost:27017\u003C/code\u003E);\u003C/li\u003E\n\u003Cli\u003Ethe \u003Ccode\u003Emongo\u003C/code\u003E Docker image;\u003C/li\u003E\n\u003Cli\u003EMongoDB Atlas or another hosted MongoDB, using a \u003Ccode\u003Emongodb\u002Bsrv://\u003C/code\u003E connection string.\u003C/li\u003E\n\u003C/ul\u003E\n\u003Cp\u003EThe wizard also lists Azure Cosmos DB and Amazon DocumentDB as data providers; both are used through their MongoDB-compatible APIs and a connection string. For very small or test setups GrandNode can also run on \u003Cstrong\u003ELiteDB\u003C/strong\u003E, an embedded file database \u2014 this requires setting \u003Ccode\u003EDatabase:UseLiteDb\u003C/code\u003E to \u003Ccode\u003Etrue\u003C/code\u003E in \u003Ccode\u003EApp_Data/appsettings.json\u003C/code\u003E before installing. MongoDB is the recommended choice for anything that goes live.\u003C/p\u003E\n\u003Cp\u003ECreate a separate database for each installation. The wizard refuses to install into a database that already contains GrandNode.\u003C/p\u003E\n\n\u003Ch2 id=\u0022operating-system-and-hosting\u0022\u003EOperating system and hosting\u003C/h2\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cstrong\u003EWindows\u003C/strong\u003E \u2014 run with Kestrel directly or behind IIS.\u003C/li\u003E\n\u003Cli\u003E\u003Cstrong\u003ELinux\u003C/strong\u003E \u2014 run as a systemd service behind nginx (or another reverse proxy). When a proxy terminates HTTPS, set \u003Ccode\u003ESecurity:UseForwardedHeaders\u003C/code\u003E to \u003Ccode\u003Etrue\u003C/code\u003E in \u003Ccode\u003Eappsettings.json\u003C/code\u003E so GrandNode sees the original scheme and host.\u003C/li\u003E\n\u003Cli\u003E\u003Cstrong\u003EContainers\u003C/strong\u003E \u2014 the \u003Ccode\u003Egrandnode/grandnode2\u003C/code\u003E image listens on port 8080 and keeps uploaded images and \u003Ccode\u003EApp_Data\u003C/code\u003E in volumes.\u003C/li\u003E\n\u003C/ul\u003E\n\u003Cp\u003EThe application process needs write access to \u003Ccode\u003EApp_Data\u003C/code\u003E (it writes \u003Ccode\u003ESettings.cfg\u003C/code\u003E with the database connection during installation), \u003Ccode\u003Ewwwroot\u003C/code\u003E (uploaded images) and \u003Ccode\u003EPlugins\u003C/code\u003E (uploaded plugins).\u003C/p\u003E\n\n\u003Ch2 id=\u0022hardware\u0022\u003EHardware\u003C/h2\u003E\n\u003Cp\u003EThere is no fixed minimum; a small store with a few thousand products runs comfortably on 2 CPU cores and 2\u20134 GB of RAM for the application, with MongoDB on the same machine or separately. Give MongoDB its own resources as the catalog and order history grow. Several application instances can share one database; for that, GrandNode can synchronise its memory cache through Redis (the \u003Ccode\u003ERedis\u003C/code\u003E section in \u003Ccode\u003Eappsettings.json\u003C/code\u003E).\u003C/p\u003E\n\n\u003Ch2 id=\u0022nodejs\u0022\u003ENode.js \u2014 only for frontend work\u003C/h2\u003E\n\u003Cp\u003EThe built JavaScript and CSS bundles of the storefront and the panels are committed to the repository. You do not need Node.js to build, run or deploy GrandNode. You need it only if you change files under \u003Ccode\u003Esrc/Web/Grand.Web/vueapp\u003C/code\u003E, the theme stylesheets or the admin frontend sources, and then you must rebuild the bundles with \u003Ccode\u003Enpm run build\u003C/code\u003E.\u003C/p\u003E\n\n\u003Ch2 id=\u0022related\u0022\u003ERelated\u003C/h2\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Ca href=\u0022/getting-started-installing\u0022\u003EInstalling GrandNode\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003E\u003Ca href=\u0022/getting-started-installation-wizard\u0022\u003EThe installation wizard\u003C/a\u003E\u003C/li\u003E\n\u003C/ul\u003E","ParentCategoryId":"6abdec6c83d2816248229ea1","SeName":"getting-started-system-requirements","MetaKeywords":null,"MetaDescription":"What you need to run GrandNode: the .NET 10 SDK or runtime, MongoDB 4.0 or newer, any OS that runs .NET, and Node.js only for frontend changes.","MetaTitle":null,"AllowComments":false,"Captcha":{"ReCaptchaChallengeField":null,"ReCaptchaResponseField":null,"ReCaptchaResponseValue":null,"ReCaptchaResponse":null},"RelatedArticles":[],"CategoryBreadcrumb":[{"Name":"Getting started","Description":null,"IsCurrent":false,"Children":null,"Parent":null,"SeName":"docs-getting-started","Id":"6abdec6c83d2816248229ea1","UserFields":[]}],"AddNewComment":{"CommentText":null,"DisplayCaptcha":false,"Id":null,"UserFields":[]},"Comments":[],"Id":"6abdec6c83d2816248229ea5","UserFields":[]}