# Multisite Setup

This tutorial explains how to host multiple sites from one project or installation of Umbraco. For practical reasons, it is recommended to use [Baselines](https://docs.umbraco.com/umbraco-cloud/getting-started/baselines) on Umbraco Cloud projects.

{% hint style="info" %}
When using Baselines on Umbraco Cloud for a multisite solution, you don’t need to worry about [Usage](https://docs.umbraco.com/umbraco-cloud/set-up/project-settings/usage) limits. You may also see better performance compared to hosting multiple websites in one project.
{% endhint %}

To create a multi-language site, see the [Creating a Multilingual Site](https://docs.umbraco.com/umbraco-cms/tutorials/multilanguage-setup) tutorial.

## Structuring your website

The best way to handle a multisite solution is to create multiple root nodes in the Content section. Each root node acts as a separate website.

All websites in the solution use the same schema. In most cases, content pages on website A use the same properties as on website B.

{% hint style="info" %}
On Umbraco Cloud, hostnames must be mapped to the project. Before mapping hostnames to individual websites, add them to the **Hostnames** page in the Cloud portal. This ensures they are secure with TLS.
{% endhint %}

![Adding hostnames to the project](https://2050077833-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fb0WSXUuM7Qx5BfREagAI%2Fuploads%2Fgit-blob-aa391f1a24c89cf030d6048135b14d17387e9e70%2F1-addinghostnames.png?alt=media)

Keep in mind that [hostnames must be configured in a specific way](https://docs.umbraco.com/umbraco-cloud/set-up/project-settings/manage-hostnames).

## Mapping the hostnames to individual websites/root nodes

At this point, multiple root nodes exist, each acting as a separate website. To map hostnames to root nodes:

1. Go to the **Content** section.
2. Click **...** next to the root node to assign the hostname.
3. Select **Culture and Hostnames**.

   ![Culture and hostnames](https://2050077833-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fb0WSXUuM7Qx5BfREagAI%2Fuploads%2Fgit-blob-df46387ba42886f98650af7af70c0cdf15d24805%2Fculturehostnames-v14.png?alt=media)
4. Click **Add new Domain** in the **Domains** section.
5. Enter the domain in the **Domain** field.
6. Select the language from the **Language** drop-down list. For multilanguage setups, different hostnames can map to specific languages.

   ![Domain](https://2050077833-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fb0WSXUuM7Qx5BfREagAI%2Fuploads%2Fgit-blob-ec9d4ea9e01f0433ac3ad6faf052701755bd9215%2Finherit-domain.png?alt=media)
7. Click **Save**.
8. Repeat steps 2-7 for each root node in the Content tree.

The sites are now available under the assigned domains.

![Dolphin Website](https://2050077833-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fb0WSXUuM7Qx5BfREagAI%2Fuploads%2Fgit-blob-98fd5b021c9e0b33f77396a6201b921403ee43a0%2F6-dolphins.png?alt=media)

![Swato Website](https://2050077833-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fb0WSXUuM7Qx5BfREagAI%2Fuploads%2Fgit-blob-6243bd5c891475b2c2fd6196a915da7e37a39d83%2F7-swato.png?alt=media)

## Best practices

This setup can be useful, but it also has drawbacks. Keep in mind that having multiple sites in one Umbraco project:

* Might increase resource usage.
* Could interfere with editors' workflows, especially if multiple people are working on both websites at once. This is because the solution still uses one shared database for both websites.
* Limits options for developing new features and making schema changes.

On Umbraco Cloud, it is recommended to use [Baselines](https://docs.umbraco.com/umbraco-cloud/getting-started/baselines). Baselines provide added benefits and greater stability compared to hosting multiple sites in one project.
