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

  1. Drop --appendPort=false (allow port appending) when running multihost
  2. Convert the config to single-host if you must disable appendPort
  3. 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

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


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)