Hugo hosting in Europe

Push a Hugo site and it builds in Paris with Hugo extended and goes live on Bunny.net's CDN. There is nothing to install, so the build is just Hugo.

What the build runs.

A Hugo build runs in its own image, not the Node one, and skips the install step. Every folder Hugo writes answers at its clean address, with or without the trailing slash.

The steps of a Hugo build on deploybase and the tools in the build image: Hugo 0.168.0 extended, Dart Sass, Go, Node with npm, and Git.
ghcr.io/gohugoio/hugo:v0.168.0 arm64
  1. Clone Your repository at the commit you pushed
  2. Install Skipped. Hugo needs none
  3. Build hugo --minify
  4. Upload public/ to the CDN
In the image
  • Hugo 0.168.0 extended
  • Dart Sass
  • Go
  • Node and npm
  • Git

Three lines in hugo.toml decide it.

An example config. Set baseURL to the address you serve, pin the version you build with, and bring your theme in as a module so the build can fetch it.

hugo.toml
  1. baseURL = 'https://example.com/' Your real address. Keep the slash.
  2. languageCode = 'en-us'
  3. title = 'Example'
  4. [module]
  5. [module.hugoVersion]
  6. extended = true
  7. min = '0.168.0' The version we build with.
  8. [[module.imports]]
  9. path = 'github.com/example/theme' A module, not a Git submodule.

How long a build takes here.

The median build on deploybase, from build start to live, across every framework and every team. Counted on 25 September 2026.

Mean, pulled up by a few long builds
78 s
Builds timed
1,641
Builds that succeed
81.5 %
Time limit per build
15 min Free, 30 min paid

Failed builds are left out of the times: they measure how long we took to give up. There is no figure for Hugo alone yet; at our size it could point at one customer. The live numbers are on /open.

What Hugo does here that we cannot yet.

  • Choosing your Hugo version Every site builds with the same Hugo release, and HUGO_VERSION is ignored. A site that needs an older release cannot ask for it.
  • Git submodules Builds do not fetch them, so a theme added as a submodule arrives empty. Commit it or use a Hugo module.
  • A build cache Nothing carries over between builds, so Hugo modules download and images process again each time.

Questions about Hugo on deploybase.

Something else? Write to support@deploybase.eu. A person answers.

Which Hugo version does deploybase use?

Hugo 0.168.0, extended edition, with Dart Sass, on arm64. We build with Hugo's official image and move to new Hugo releases as they come out. Setting HUGO_VERSION does nothing yet: you cannot choose a version, so pin the minimum in hugo.toml. If your site needs a specific release, write to support@deploybase.eu.

My theme is a Git submodule. Will it build?

Not as it is. Builds clone one repository and do not fetch submodules, so the theme folder is empty and the build fails on a missing layout. Commit the theme into your repository, or import it as a Hugo module, which the build fetches like any dependency.

My theme uses PostCSS or Tailwind. What do I do?

Node and npm are in the image, but there is no install step for Hugo. Put the install in the build command: npm ci && hugo --minify. The command is yours to change in the project settings.

Why are some pages missing after the deploy?

Hugo leaves out drafts, pages dated in the future and expired pages when it builds for production. That is Hugo's default, not ours. Add --buildDrafts, --buildFuture or --buildExpired to the build command if you meant to publish them.

What does a build cost?

Build minutes. Free includes 200 a month, Starter 1,000, Pro 3,000 and Scale 10,000, and a failure on our side or a build you cancel never counts. With no install step, a Hugo build is usually among the shortest.

Pricing

Put your Hugo site live.

Create a team on the free plan and connect the repository. The settings are already Hugo's.