fatedier/frp · error

plugin %s: %v

Error message

plugin %s: %v

What it means

Error "plugin %s: %v" thrown in fatedier/frp.

Source

Thrown at pkg/config/v1/validation/proxy.go:61

	if c.Plugin.Type == "" {
		if err := ValidatePort(c.LocalPort, "localPort"); err != nil {
			return fmt.Errorf("localPort: %v", err)
		}
	}

	if !slices.Contains([]string{"", "tcp", "http"}, c.HealthCheck.Type) {
		return fmt.Errorf("not support health check type: %s", c.HealthCheck.Type)
	}
	if c.HealthCheck.Type != "" {
		if c.HealthCheck.Type == "http" &&
			c.HealthCheck.Path == "" {
			return fmt.Errorf("health check path should not be empty")
		}
	}

	if c.Plugin.Type != "" {
		if err := ValidateClientPluginOptions(c.Plugin.ClientPluginOptions); err != nil {
			return fmt.Errorf("plugin %s: %v", c.Plugin.Type, err)
		}
	}
	return nil
}

func validateProxyBaseConfigForServer(c *v1.ProxyBaseConfig) error {
	if err := ValidateAnnotations(c.Annotations); err != nil {
		return err
	}
	return nil
}

func validateDomainConfigForClient(c *v1.DomainConfig) error {
	if c.SubDomain == "" && len(c.CustomDomains) == 0 {
		return errors.New("subdomain and custom domains should not be both empty")
	}
	return nil
}

View on GitHub (pinned to 6c8a8d0a97)

Solutions

  1. Correct the plugin options reported in the nested error message.
  2. Read the documentation of the plugin type to check which fields are required.

When it happens

Trigger: Raised by validateProxyBaseConfigForClient in pkg/config/v1/validation/proxy.go when validation of the configured client plugin fails; the inner plugin validation error is wrapped with the plugin name.

Common situations: A plugin block (e.g. http2https, staticFile, unixDomainSocket) has missing or invalid fields such as localAddr, localPath, or unixPath. Fix by correcting the plugin fields named in the wrapped error.


AI-assisted analysis of fatedier/frp@6c8a8d0a97 (2026-08-15). Data as JSON: /api/errors/c53f881631421e05. Report an issue: GitHub.