Versions in this module Expand all Collapse all v0 v0.0.7 Mar 3, 2026 v0.0.6 Feb 16, 2026 Changes in this version + var ErrCaddyNotEmbedded = fmt.Errorf("caddy binary is not embedded on macOS; install via: brew install caddy") — darwin/amd64 + type APIIngressConfig struct + Hostname string + Port int + RedirectHTTP bool + TLS bool + func (c *APIIngressConfig) IsEnabled() bool type Config + APIIngress APIIngressConfig v0.0.5 Jan 16, 2026 v0.0.4 Jan 12, 2026 Changes in this version + const CaddyVersion + const DefaultDNSPort + var ErrAlreadyExists = errors.New("ingress already exists") + var ErrAmbiguousName = errors.New("ambiguous ingress identifier matches multiple ingresses") + var ErrConfigValidationFailed = errors.New("config validation failed") + var ErrDomainNotAllowed = errors.New("domain not allowed for TLS") + var ErrHostnameInUse = errors.New("hostname already in use by another ingress") + var ErrInstanceNoNetwork = errors.New("target instance has no network configured") + var ErrInstanceNotFound = errors.New("target instance not found") + var ErrInvalidRequest = errors.New("invalid request") + var ErrNotFound = errors.New("ingress not found") + var ErrPortInUse = errors.New("port already in use") + func ExtractCaddyBinary(p *paths.Paths) (string, error) + func GetCaddyBinaryPath(p *paths.Paths) (string, error) + func HasTLSRules(ingresses []Ingress) bool + func ParseCaddyError(caddyError string) error + func SupportedDNSProviders() string + type ACMEConfig struct + AllowedDomains string + CA string + CloudflareAPIToken string + DNSPropagationTimeout string + DNSProvider DNSProvider + DNSResolvers string + Email string + func (c *ACMEConfig) IsDomainAllowed(hostname string) bool + func (c *ACMEConfig) IsTLSConfigured() bool + type CaddyConfigGenerator struct + func NewCaddyConfigGenerator(p *paths.Paths, listenAddress string, adminAddress string, adminPort int, ...) *CaddyConfigGenerator + func (g *CaddyConfigGenerator) GenerateConfig(ctx context.Context, ingresses []Ingress) ([]byte, error) + func (g *CaddyConfigGenerator) WriteConfig(ctx context.Context, ingresses []Ingress) error + type CaddyDaemon struct + func NewCaddyDaemon(p *paths.Paths, adminAddress string, adminPort int, stopOnShutdown bool) *CaddyDaemon + func (d *CaddyDaemon) AdminPort() int + func (d *CaddyDaemon) AdminURL() string + func (d *CaddyDaemon) DiscoverRunning() (int, bool) + func (d *CaddyDaemon) GetPID() int + func (d *CaddyDaemon) IsRunning() bool + func (d *CaddyDaemon) ReloadConfig(config []byte) error + func (d *CaddyDaemon) Start(ctx context.Context) (int, error) + func (d *CaddyDaemon) Stop(ctx context.Context) error + func (d *CaddyDaemon) StopOnShutdown() bool + type CaddyLogForwarder struct + func NewCaddyLogForwarder(p *paths.Paths, logger *slog.Logger) *CaddyLogForwarder + func (f *CaddyLogForwarder) Start(ctx context.Context) error + func (f *CaddyLogForwarder) Stop() + type Config struct + ACME ACMEConfig + AdminAddress string + AdminPort int + DNSPort int + ListenAddress string + StopOnShutdown bool + func DefaultConfig() Config + type CreateIngressRequest struct + Name string + Rules []IngressRule + func (r *CreateIngressRequest) Validate() error + type DNSProvider string + const DNSProviderCloudflare + const DNSProviderNone + func ParseDNSProvider(s string) (DNSProvider, error) + type HostnamePattern struct + CaddyLabels map[string]string + Captures []string + Original string + Wildcard string + func (p *HostnamePattern) ResolveInstance(targetInstance string) string + type Ingress struct + CreatedAt time.Time + ID string + Name string + Rules []IngressRule + type IngressMatch struct + Hostname string + Port int + func (m *IngressMatch) GetPort() int + func (m *IngressMatch) IsPattern() bool + func (m *IngressMatch) ParsePattern() (*HostnamePattern, error) + type IngressRule struct + Match IngressMatch + RedirectHTTP bool + TLS bool + Target IngressTarget + type IngressTarget struct + Instance string + Port int + type InstanceResolver interface + InstanceExists func(ctx context.Context, nameOrID string) (bool, error) + ResolveInstance func(ctx context.Context, nameOrID string) (name string, id string, err error) + ResolveInstanceIP func(ctx context.Context, nameOrID string) (string, error) + type Manager interface + AdminURL func() string + Create func(ctx context.Context, req CreateIngressRequest) (*Ingress, error) + Delete func(ctx context.Context, idOrName string) error + Get func(ctx context.Context, idOrName string) (*Ingress, error) + Initialize func(ctx context.Context) error + List func(ctx context.Context) ([]Ingress, error) + Shutdown func(ctx context.Context) error + func NewManager(p *paths.Paths, config Config, instanceResolver InstanceResolver, ...) Manager + type ValidationError struct + Field string + Message string + func (e *ValidationError) Error() string