gohugoio/hugo · error
--appendPort=false not supported when in multihost mode
Error message
--appendPort=false not supported when in multihost mode
What it means
createServerPorts builds per-language server listeners for multihost configs; multihost requires distinct ports per language (incremented via appendPort), so passing --appendPort=false is incompatible and the server refuses to start (server.go:759-762).
Solutions
- Drop --appendPort=false (allow port appending) when running multihost
- Convert the config to single-host if you must disable appendPort
- Use per-language baseURL and let Hugo assign ports
Example fix
# before hugo server --appendPort=false # in a multihost project # after hugo server
Defensive patterns
Strategy: validation
Validate before calling
if conf.configs.IsMultihost && !c.serverAppend {
return errors.New("--appendPort=false is incompatible with multihost")
} Prevention
- Do not combine --appendPort=false with a multihost config
- Document the multihost constraint alongside your server flags
When it happens
Trigger: `hugo server --appendPort=false` (or serverAppend=false) in a project whose config is multihost (per-language baseURL).
Common situations: Copying server flags from a single-host project into a multihost one; setting appendPort=false globally then enabling multihost.
Related errors
- multihost change detected, please restart server
- failed to create workingDir
- invalid log level: , must be one of debug, warn, info or…
- language not found
- no deployment targets found
AI-assisted analysis of gohugoio/hugo@52c9bd7908 (2026-08-09).
Data as JSON: /api/errors/547a11c8df0445dc.
Report an issue: GitHub.
Appendix: source
Thrown at commands/server.go:761
Roots: roots,
}
if _, err := cert.Verify(opts); err != nil {
return fmt.Errorf("failed to verify certificate: %v", err.Error())
}
return nil
}
func (c *serverCommand) createServerPorts(cd *simplecobra.Commandeer) error {
flags := cd.CobraCommand.Flags()
var cerr error
c.withConf(func(conf *commonConfig) {
isMultihost := conf.configs.IsMultihost
c.serverPorts = make([]serverPortListener, 1)
if isMultihost {
if !c.serverAppend {
cerr = errors.New("--appendPort=false not supported when in multihost mode")
return
}
c.serverPorts = make([]serverPortListener, len(conf.configs.Languages))
}
currentServerPort := c.serverPort
for i := range c.serverPorts {
l, err := net.Listen("tcp", net.JoinHostPort(c.serverInterface, strconv.Itoa(currentServerPort)))
if err == nil {
c.serverPorts[i] = serverPortListener{ln: l, p: currentServerPort}
} else {
if i == 0 && flags.Changed("port") {
// port set explicitly by user -- he/she probably meant it!
cerr = fmt.Errorf("server startup failed: %s", err)
return
}
c.r.Println("port", currentServerPort, "already in use, attempting to use an available port")
l, sp, err := helpers.TCPListen()
if err != nil {View on GitHub (pinned to 52c9bd7908)