# Build and run an OrchardCore CMS app on Azure Cobalt (Arm64)

## In this learning path

- [Introduction](https://learn.arm.com/learning-paths/servers-and-cloud-computing/dotnet-migration/)
- [Build and run an OrchardCore CMS app on Azure Cobalt (Arm64)](https://learn.arm.com/learning-paths/servers-and-cloud-computing/dotnet-migration/1-create-orchardcore-app/)
- [Integrate a C shared library into your .NET OrchardCore app](https://learn.arm.com/learning-paths/servers-and-cloud-computing/dotnet-migration/2-add-shared-c-library/)
- [Configure and run an OrchardCore app](https://learn.arm.com/learning-paths/servers-and-cloud-computing/dotnet-migration/3-any-cpu/)
- [Evaluate .NET performance across versions on Arm](https://learn.arm.com/learning-paths/servers-and-cloud-computing/dotnet-migration/4-dotnet-versions/)
- [Next Steps](https://learn.arm.com/learning-paths/servers-and-cloud-computing/dotnet-migration/_next-steps/)

## Getting started with the OrchardCore app
In this section, you’ll build and run a basic [OrchardCore](https://github.com/OrchardCMS/OrchardCore) CMS application, which is a popular Linux-based .NET workload. OrchardCore is a modular and multi-tenant application framework built with ASP.NET Core, that’s commonly used to create content-driven websites.

### Set up your development environment
First, launch an Azure Cobalt 100 instance (Arm-based VM) running Ubuntu 24.04, and open port 8080 to the internet.

For setup instructions, see the [Create an Azure Cobalt 100 VM](../../cobalt) Learning Path.

Next, install .NET SDK:
```
wget https://packages.microsoft.com/config/ubuntu/24.04/packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
sudo apt-get update
sudo apt-get install -y dotnet-sdk-8.0
```
Verify the installation:
```
dotnet --version
```
You should then see output similar to:
```
__output__8.0.117
```
Install gcc for compiling your application:
```
sudo apt install gcc g++ build-essential -y
```

### Install the OrchardCore templates
Install the OrchardCore templates:
```
dotnet new install OrchardCore.ProjectTemplates::2.1.7
```
This command installs the OrchardCore project templates you’ll use to create a new OrchardCore application.

Expected output:
```
__output__Success: OrchardCore.ProjectTemplates::2.1.7 installed the following templates:
__output__Template Name             Short Name   Language  Tags
__output__------------------------  -----------  --------  --------------------
__output__Orchard Core Cms Module   ocmodulecms  [C#]      Web/Orchard Core/CMS
__output__Orchard Core Cms Web App  occms        [C#]      Web/Orchard Core/CMS
__output__Orchard Core Mvc Module   ocmodulemvc  [C#]      Web/Orchard Core/Mvc
__output__Orchard Core Mvc Web App  ocmvc        [C#]      Web/Orchard Core/Mvc
__output__Orchard Core Theme        octheme      [C#]      Web/Orchard Core/CMS
```

### Create a new OrchardCore application
First, create a new project using the `dotnet` CLI to create a new OrchardCore application:
```
dotnet new occms -n MyOrchardCoreApp
```
This command creates a new OrchardCore CMS application in a directory named `MyOrchardCoreApp`.

Now navigate to the project directory:
```
cd MyOrchardCoreApp
```

### Run the OrchardCore application
Build the application:
```
dotnet build
```
The output should look like:
```
__output__MSBuild version 17.8.27+3ab07f0cf for .NET
__output__  Determining projects to restore...
__output__  Restored /home/azureuser/MyOrchardCoreApp/MyOrchardCoreApp.csproj (in 28.95 sec).
__output__  MyOrchardCoreApp -> /home/azureuser/MyOrchardCoreApp/bin/Debug/net8.0/MyOrchardCoreApp.dll
__output__  Copying translation files: MyOrchardCoreApp
__output__  
__output__Build succeeded.
__output__    0 Warning(s)
__output__    0 Error(s)
__output__  
__output__Time Elapsed 00:00:38.05
```
Run the application:
```
dotnet run --urls http://0.0.0.0:8080
```
Access the application:
- In your browser, navigate to `http://[instance IP]:8080` to see your OrchardCore application in action.
- Replace `[instance IP]` with your VM’s public IP address. You can find it in the Azure portal under the **Networking** tab of your virtual machine.

Configure the application:
- On the setup screen, choose the Blog recipe and complete the admin credentials and database configuration to finish setup.

### Summary and next steps
You have successfully created and run a basic OrchardCore CMS application. In the next sections, you will learn how to integrate a C shared library into your .NET application and explore performance optimizations for Arm architecture.
