GOLFS Docs

Configuration

Environment variables, startup validation, listeners, limits, and runtime configuration.

GOLFS reads configuration from environment variables and fails startup before readiness if required values are missing or unsafe.

Start with Installation for the deployment sequence. The chart maps non-secret values through environmentsVars and credentials through a runtime Secret; GitHub App and GCM setup covers App provisioning and client authentication.

Required

VariableMeaning
GOLFS_PUBLIC_URLHTTPS origin clients use to reach GOLFS, without a path
GOLFS_GITHUB_APP_CLIENT_IDGitHub App client ID, not numeric App ID
GOLFS_GITHUB_ALLOWED_INSTALLATION_IDSComma-separated allowlist of GitHub App installation IDs
GOLFS_GITHUB_APP_PRIVATE_KEY_PEMRSA private key PEM for App JWTs
GOLFS_S3_ENDPOINTAbsolute Hetzner Object Storage S3 API endpoint
GOLFS_S3_REGIONSigning region
GOLFS_S3_BUCKETExisting private bucket

For static S3 credentials, supply AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY in the runtime Secret. AWS_SESSION_TOKEN is supported when credentials are temporary. These variables are not mandatory when another provider in the AWS SDK default credential chain supplies credentials, including workload identity.

Optional

VariableDefaultConstraint
GOLFS_HTTP_ADDR:8080Must differ from operations address
GOLFS_ADMIN_ADDR:9090Must differ from public address
GOLFS_S3_USE_PATH_STYLEfalseSet only when the Hetzner endpoint requires it
GOLFS_PRESIGN_TTL1hGreater than zero, at most 168 hours
GOLFS_MAX_OBJECT_SIZE5000000000Positive and configurable only downward
GOLFS_LOG_LEVELinfodebug, info, warn, or error
GOLFS_DEV_ALLOW_HTTPfalseAllows HTTP public and S3 endpoints for local development only

The public URL cannot contain credentials, a query, fragment, or non-root path. Production public and S3 endpoints must use HTTPS.

Startup and readiness

Startup parses and validates the App private key, calls GitHub GET /app using a short-lived RS256 JWT, verifies that every allowed installation ID belongs to the configured App, and checks S3 bucket access. Readiness becomes true only after these checks succeed. Installation IDs are identifiers rather than secrets, but GOLFS accepts them only from its runtime configuration and GitHub's authenticated API responses.

After startup, readiness is local. A shared GitHub or S3 outage does not mark every replica unready; affected LFS requests return retryable errors. Readiness becomes false immediately when graceful shutdown begins.

On this page