Beginner’s Guide: Step-by-Step Local Installation for Sitecore XM Cloud
Many times, we want to accomplish a task but aren’t sure where to start—the same applies to Sitecore XM Cloud local setup and installation. In this guide, I’ll Walk you through the process of setting up a Sitecore XM Cloud environment locally, step by step.
Sitecore XM Cloud is the cloud-native, headless version of
Sitecore Experience Manager (XM), designed for modern, omnichannel digital
experiences. It separates content management (authoring) from content delivery,
enabling fast, API-driven, and scalable architectures. Developers can deliver
content to web, mobile, and other channels via GraphQL APIs and Experience Edge,
while content authors manage items in a cloud-first environment.
Even though XM Cloud is cloud-first, a local environment is
essential for:
- Experimenting
safely with content, templates, and workflows.
- Testing
headless frontends like Angular, React, or Next.js.
- Debugging
GraphQL queries and APIs efficiently.
- Validating
scheduled tasks, content previews, and personalization before deployment.
Prerequisites for Local Installation
Before starting, ensure the following are installed and
configured on your local machine:
- .Net
SDK 6.0 and runtime
(https://dotnet.microsoft.com/en-us/download/dotnet/thank-you/sdk-6.0.404-windows-x64-installer)
- .NET
Framework 4.8 SDK
(https://dotnet.microsoft.com/en-us/download/dotnet-framework/net48)
- Node
LTS (v18.13.0)
(https://nodejs.org/en/)
- Valid
Sitecore license.xml
- Administrator
access to PowerShell (v5.1)
- Docker
Desktop v4.11.1
(https://docs.docker.com/desktop/setup/install/windows-install/)
- Hyper-V
enabled (via 'Turn Windows features on or off')
- Access
to Sitecore Cloud account https://portal.sitecorecloud.io.
- Ensure
that IIS and any running Solr services are stopped before starting with setup
and installation
Step-by-Step Local installation guide
1. Clone the Sitecore XM Cloud Repository
Repository:
https://github.com/sitecorelabs/xmcloud-foundation-head
Open Visual Studio → Clone a repository → provide the Repository Location URL and a path to clone (e.g., C:\xmcloud) → Clone.
2. Initialize the Local Project:
Open PowerShell as administrator and navigate to the scripts
folder
cd C:\xmcloud\local-containers\scripts
After completion, you’ll be prompted to set the
NODE_EXTRA_CA_CERTS environment variable. Copy the command provided and run it.
After success, restart your terminal and navigate back to the cloned repository
directory.
3. Download Required Docker Images
Run the following command to download the images required
for the XM Cloud
.\up.ps1
This process takes some time.
During the end of the process, a
browser window will be opened asking for device confirmation.
Confirm to proceed further and you
will see below screen
4. Start the Environment:
Once images are downloaded and confirmed, preconfigured
processes like indexing and restoring items will run automatically.
After completion, your local Sitecore XM Cloud environment
will open in the browser.
At this point, we have
successfully installed XM Cloud on our local environment using Docker
Container.
This setup allows developers to mirror cloud functionality
locally, providing a safe and efficient environment for development, testing,
and experimentation.
Initially, the Content Editor may appear empty. The Headless Tenant and Headless Site are not yet configured. You can create these locally or synchronize with your cloud environment to ensure correct rendering host values. We will setup and configure that in next blogs.
Hope this helps!
Thanks for Informative blog post. Request you to let us know your machine requirements, if any.
ReplyDeleteAdditionally, we would like to explore the possibility of utilizing the 15-day free trial of XM Cloud to support this initiative.
I am using machine with Windows 11 Pro, 32 GB RAM.
DeleteHi Nidhi, I am unable to publish the Sitecore items and getting the following error in my local.
ReplyDeleteJob started: Publish to 'experienceedge'(Publish Home /sitecore/content/ISC2/Main a3f19fd1-65a9-45d0-bd82-b1da596a4ecd)|#Exception: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> Sitecore.ExperienceEdge.Connector.ContentHubDelivery.Exceptions.EdgeApiException: [ExperienceEdge Publishing]: An error has occurred while publishing JobStart event 5d4ecf38-d98c-4032-a3cd-fe643fc57c37 for publishing job '638947702647580000'. Please see inner exception for more details. ---> Sitecore.Exceptions.ConfigurationException: Invalid Authority connection string. Required parameter 'url' is missing.
at Sitecore.ExperienceEdge.Connector.ContentHubDelivery.Infrastructure.TargetSpecificSettings.Throw(String reason)
at Sitecore.ExperienceEdge.Connector.ContentHubDelivery.Infrastructure.TargetSpecificSettings.ParseValue(String connectionString, String key, String defaultValue)
at Sitecore.ExperienceEdge.Connector.ContentHubDelivery.Infrastructure.TargetSpecificSettings.Parse(String connectionString)
at Sitecore.ExperienceEdge.Connector.ContentHubDelivery.Infrastructure.TargetSpecificSettings.LoadSettingsFromTarget(IDatabaseAccessor databaseAccessor, String databaseName, Guid targetId)
at Sitecore.ExperienceEdge.Connector.ContentHubDelivery.Infrastructure.TargetSpecificSettings..ctor(IDatabaseAccessor databaseAccessor, PublishJobTarget publishJobTarget, BaseSettings settings)
at Sitecore.ExperienceEdge.Connector.ContentHubDelivery.Infrastructure.TargetSpecificSettingsFactory.<>c__DisplayClass4_0.b__0(Guid key)
at System.Collections.Concurrent.ConcurrentDictionary`2.GetOrAdd(TKey key, Func`2 valueFactory)
at Sitecore.ExperienceEdge.Connector.ContentHubDelivery.Infrastructure.TargetSpecificSettingsFactory.GetSettingsForTarget(PublishJobTarget publishJobTarget)
at Sitecore.ExperienceEdge.Connector.ContentHubDelivery.Infrastructure.AccessTokenProviderFactory.<>c__DisplayClass5_0.b__0(Guid key)
at System.Collections.Concurrent.ConcurrentDictionary`2.GetOrAdd(TKey key, Func`2 valueFactory)
at Sitecore.ExperienceEdge.Connector.ContentHubDelivery.Infrastructure.AccessTokenProviderFactory.CreateAccessTokenProvider(PublishJobTarget publishJobTarget)
at Sitecore.ExperienceEdge.Connector.ContentHubDelivery.Infrastructure.EdgePublishClientFactory.<>c__DisplayClass9_0.b__0(Guid key)
at System.Collections.Concurrent.ConcurrentDictionary`2.GetOrAdd(TKey key, Func`2 valueFactory)
at Sitecore.ExperienceEdge.Connector.ContentHubDelivery.Infrastructure.EdgePublishClientFactory.CreateEdgePublishClient(PublishJobTarget publishJobTarget)
at Sitecore.ExperienceEdge.Connector.ContentHubDelivery.Delivery.PublishEvent.EdgePublishEvent.d__5.MoveNext()
--- End of inner exception stack trace ---