config

package
v0.0.5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 16, 2026 License: MIT Imports: 5 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Config

type Config struct {
	Port                string
	DataDir             string
	BridgeName          string
	SubnetCIDR          string
	SubnetGateway       string
	UplinkInterface     string
	JwtSecret           string
	DNSServer           string
	MaxConcurrentBuilds int
	MaxOverlaySize      string
	LogMaxSize          string
	LogMaxFiles         int
	LogRotateInterval   string

	// Resource limits - per instance
	MaxVcpusPerInstance  int    // Max vCPUs for a single VM (0 = unlimited)
	MaxMemoryPerInstance string // Max memory for a single VM (0 = unlimited)

	// Resource limits - aggregate
	MaxTotalVcpus         int    // Aggregate vCPU limit across all instances (0 = unlimited)
	MaxTotalMemory        string // Aggregate memory limit across all instances (0 = unlimited)
	MaxTotalVolumeStorage string // Total volume storage limit (0 = unlimited)

	// OpenTelemetry configuration
	OtelEnabled           bool   // Enable OpenTelemetry
	OtelEndpoint          string // OTLP endpoint (gRPC)
	OtelServiceName       string // Service name for tracing
	OtelServiceInstanceID string // Service instance ID (default: hostname)
	OtelInsecure          bool   // Disable TLS for OTLP
	Version               string // Application version for telemetry
	Env                   string // Deployment environment (e.g., dev, staging, prod)

	// Logging configuration
	LogLevel string // Default log level (debug, info, warn, error)

	// Caddy / Ingress configuration
	CaddyListenAddress  string // Address for Caddy to listen on
	CaddyAdminAddress   string // Address for Caddy admin API
	CaddyAdminPort      int    // Port for Caddy admin API
	InternalDNSPort     int    // Port for internal DNS server (used for dynamic upstreams)
	CaddyStopOnShutdown bool   // Stop Caddy when hypeman shuts down

	// ACME / TLS configuration
	AcmeEmail             string // ACME account email (required for TLS ingresses)
	AcmeDnsProvider       string // DNS provider: "cloudflare"
	AcmeCA                string // ACME CA URL (empty = Let's Encrypt production)
	DnsPropagationTimeout string // Max time to wait for DNS propagation (e.g., "2m")
	DnsResolvers          string // Comma-separated DNS resolvers for propagation checking
	TlsAllowedDomains     string // Comma-separated list of allowed domain patterns for TLS (e.g., "*.example.com,api.example.com")

	// Cloudflare configuration (if AcmeDnsProvider=cloudflare)
	CloudflareApiToken string // Cloudflare API token

	// Build system configuration
	MaxConcurrentSourceBuilds int    // Max concurrent source-to-image builds
	BuilderImage              string // OCI image for builder VMs
	RegistryURL               string // URL of registry for built images
	BuildTimeout              int    // Default build timeout in seconds
	BuildSecretsDir           string // Directory containing build secrets (optional)

	// Hypervisor configuration
	DefaultHypervisor string // Default hypervisor type: "cloud-hypervisor" or "qemu"

	// Oversubscription ratios (1.0 = no oversubscription, 2.0 = 2x oversubscription)
	OversubCPU     float64 // CPU oversubscription ratio
	OversubMemory  float64 // Memory oversubscription ratio
	OversubDisk    float64 // Disk oversubscription ratio
	OversubNetwork float64 // Network oversubscription ratio
	OversubDiskIO  float64 // Disk I/O oversubscription ratio

	// Network rate limiting
	UploadBurstMultiplier   int // Multiplier for upload burst ceiling vs guaranteed rate (default: 4)
	DownloadBurstMultiplier int // Multiplier for download burst bucket vs rate (default: 4)

	// Resource capacity limits (empty = auto-detect from host)
	DiskLimit       string  // Hard disk limit for DataDir, e.g. "500GB"
	NetworkLimit    string  // Hard network limit, e.g. "10Gbps" (empty = detect from uplink speed)
	DiskIOLimit     string  // Hard disk I/O limit, e.g. "500MB/s" (empty = auto-detect from disk type)
	MaxImageStorage float64 // Max image storage as fraction of disk (0.2 = 20%), counts OCI cache + rootfs
}

func Load

func Load() *Config

Load loads configuration from environment variables Automatically loads .env file if present

func (*Config) Validate

func (c *Config) Validate() error

Validate checks configuration values for correctness. Returns an error if any configuration value is invalid.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL