UM

Umbraco

Friendly open-source .NET content management system

Content Management Systems ★ 5.3k stars Medium setup MIT

Umbraco is a popular open-source CMS built on ASP.NET Core, known for its flexible content modeling and editor-friendly backoffice. It is widely used for corporate and marketing websites on the Microsoft stack.

Key features

  • Flexible document types
  • Editor-friendly backoffice
  • Headless delivery API
  • Strong .NET integration

Pros & cons

Strengths

  • Great choice on the .NET stack
  • Polished editor experience

Trade-offs

  • Requires Windows or .NET hosting knowledge
  • Cloud add-ons are paid

Umbraco replaces

Last reviewed Sep 13, 2026 · 852 words

If nobody on your team writes C#, do not self-host Umbraco. That is the whole decision. The CMS itself is excellent, the editor backoffice is the most pleasant one I have put non-technical people in front of, and the MIT licence means the 5,239-star core costs nothing. But an Umbraco site is a .NET application you compile, not a PHP folder you upload, and every meaningful customisation (document types are fine in the UI, but views, controllers, and anything headless) goes through the .NET toolchain. Teams with that skill get a better CMS than WordPress. Teams without it get a very handsome project they cannot maintain.

It runs on Linux now, and Docker is the sensible shape

The "requires Windows" reputation is a decade stale. Since the move to ASP.NET Core, Umbraco runs on Linux and macOS, and a Debian container is the normal production home. There is no one-line official image to pull; you scaffold a project and build your own:

dotnet new install Umbraco.Templates
dotnet new umbraco -n MySite
cd MySite && dotnet run

The install wizard appears on first launch and the backoffice lives at /umbraco. For production, a two-stage Dockerfile (SDK image to publish, ASP.NET runtime image to serve) yields a container around 250 MB that listens on port 8080 by default on current .NET runtimes. Put Caddy or Traefik in front for TLS; the reverse proxy showdown covers the trade-offs, and forwarded-headers middleware must be enabled in Program.cs or the backoffice will generate http:// links behind your https:// proxy.

SQLite is fine for small sites, SQL Server is the supported path for real ones

Umbraco supports SQL Server and SQLite. It dropped MySQL years ago and PostgreSQL is not an officially supported option, which is the single biggest surprise for people coming from the PHP CMS world. SQLite is genuinely usable for a brochure site with 1 or 2 editors and a few hundred nodes; I would not run a multi-editor site on it because SQLite serialises writes and the backoffice does a lot of them. SQL Server on Linux is free in its Express edition (10 GB database cap, 1 GB buffer pool), runs happily in a mcr.microsoft.com/mssql/server container, and wants about 2 GB of RAM for itself. Budget the catalogue's 1 GB minimum for Umbraco alone, then add the database.

Back up two things: the database and the wwwroot/media folder. Everything else is code and belongs in git.

The backoffice is the reason to choose it

Umbraco's content model is built from document types you compose in the UI: properties, tabs, inheritance, and compositions that behave like mixins. An editor sees a tree of pages with exactly the fields you defined and nothing else. Block List and Block Grid give structured, repeatable content without a page-builder plugin. Compared to bolting Advanced Custom Fields onto WordPress, the modelling is cleaner and the editor experience is more consistent. Compared to a headless-only CMS like Directus, you get real page rendering with Razor views out of the box, and the Content Delivery API when you want headless output too.

What the paid cloud actually gates

Umbraco Cloud is a hosted product with deployment pipelines, and Umbraco sells add-ons (Forms, Deploy, Workflow, Commerce) under commercial licences. None of those are required. The open-source core includes the full backoffice, member management, the delivery API, and the package ecosystem. The honest cost of self-hosting is not licence money; it is that upgrades between major versions can require code changes, because Umbraco ships 2 majors a year and only some are long-term support releases. Pin to the current LTS line, plan a code-touching upgrade every 2 years, and the maintenance load is reasonable for a .NET shop.

Where it loses to the bigger names

WordPress has a plugin for everything and a freelancer in every town. Umbraco's package directory is smaller and community themes are almost nonexistent; you build the front end. Umbraco also has no free forms package in core (Umbraco Forms is paid), so a contact form means writing a controller or trusting a community package. For a personal blog or a small business with no developer, the CMS category has cheaper-to-run options and I would send you there.

What I'd do

If I ran a .NET team and needed a marketing or corporate site with several editors, I would pick Umbraco over WordPress without much thought: a compiled app, a clean content model, editors who stop asking for help. I would run it as a two-stage Docker build on the LTS release, SQL Server Express in a sidecar container, media on a mounted volume backed up nightly, Caddy in front. If I did not have C# on the team, I would treat the polished backoffice as a temptation to resist and choose something from the PHP or Go world that the people I actually have can maintain.

Compare Umbraco

7 head-to-head comparisons.

Similar content management systems apps