Versions in this module Expand all Collapse all v0 v0.3.0 Aug 5, 2026 v0.2.0 Jul 8, 2026 v0.1.1 Jun 12, 2026 v0.1.0 Jun 4, 2026 Changes in this version type CreateIngressRequest + Tags tags.Tags type Ingress + Tags tags.Tags 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