netbirdio/netbird · error

service name exceeds maximum length of 255 characters

Error message

service name exceeds maximum length of 255 characters

What it means

Returned by Service.Validate (management/internals/modules/reverseproxy/service/service.go:860) when Name exceeds 255 characters. The name is stored and referenced by management state and DNS/label derivation, so it is capped at 255 characters; longer names are rejected right after the empty-name check.

Source

Thrown at management/internals/modules/reverseproxy/service/service.go:860

		len(r.AllowedCountries) == 0 && len(r.BlockedCountries) == 0 &&
		r.CrowdSecMode == "" {
		return nil
	}
	return &proto.AccessRestrictions{
		AllowedCidrs:     r.AllowedCIDRs,
		BlockedCidrs:     r.BlockedCIDRs,
		AllowedCountries: r.AllowedCountries,
		BlockedCountries: r.BlockedCountries,
		CrowdsecMode:     r.CrowdSecMode,
	}
}

func (s *Service) Validate() error {
	if s.Name == "" {
		return errors.New("service name is required")
	}
	if len(s.Name) > 255 {
		return errors.New("service name exceeds maximum length of 255 characters")
	}

	if len(s.Targets) == 0 {
		return errors.New("at least one target is required")
	}

	if s.Mode == "" {
		s.Mode = ModeHTTP
	}

	if err := validateHeaderAuths(s.Auth.HeaderAuths); err != nil {
		return err
	}
	if err := validateAccessRestrictions(&s.Restrictions); err != nil {
		return err
	}
	if err := s.validatePrivateRequirements(); err != nil {
		return err

View on GitHub (pinned to 93e97f4bf1)

Solutions

  1. Shorten the name to at most 255 characters.
  2. When generating names programmatically, truncate with a deterministic cap before submitting.
  3. Prefer short slug-style names; put long descriptions in a description field if available.

Example fix

// before
name := fmt.Sprintf("%s-%s-%s", fqdn, cluster, notes) // unbounded

// after
if len(name) > 255 {
    name = name[:255]
}
service.Name = name
Defensive patterns

Strategy: validation

Validate before calling

if len(svc.Name) > 255 {
    return fmt.Errorf("service name too long: %d bytes (max 255)", len(svc.Name))
}

Prevention

When it happens

Trigger: Creating/updating a reverse-proxy service with a name longer than 255 bytes, e.g. a generated name (FQDN, description blob, concatenation) pasted or programmatically built without truncation.

Common situations: Automation that derives the service name from a hostname plus suffixes; copy-paste of a long sentence; template variables that expand unexpectedly.

Related errors


AI-assisted analysis of netbirdio/netbird@93e97f4bf1 (2026-08-16). Data as JSON: /api/errors/fbd3d95b002fc851. Report an issue: GitHub.