Installation#

# Install from OCI registry
helm install pages oci://ghcr.io/kup6s/kup6s-pages --version 0.1.0

# Or with custom configuration
helm install pages oci://ghcr.io/kup6s/kup6s-pages \
  --set operator.pagesDomain=pages.example.com \
  --set operator.clusterIssuer=letsencrypt-prod \
  --set 'syncer.allowedHosts={github.com,gitlab.com}' \
  --set storage.storageClassName=longhorn \
  --set webhook.enabled=true \
  --set webhook.domain=webhook.pages.example.com

Key Helm Values#

ValueDefaultDescription
operator.pagesDomainpages.kup6s.comBase domain for auto-generated URLs
operator.clusterIssuerletsencrypt-prodcert-manager ClusterIssuer
syncer.allowedHostsRequiredAllowed Git hosts (SSRF protection)
storage.size10GiPVC size for sites
storage.storageClassName(default)StorageClass (must support RWX)
nginx.replicas2nginx replicas for HA
webhook.enabledfalseEnable webhook IngressRoute
webhook.domainwebhook.pages.kup6s.comWebhook endpoint domain

See Helm Values Reference for all options.

Verify Installation#

# Check operator and syncer are running
kubectl get pods -n kup6s-pages

# Check CRD is registered
kubectl get crd staticsites.pages.kup6s.com

Expected output:

NAME                                      READY   STATUS    RESTARTS   AGE
kup6s-pages-operator-xxx                  1/1     Running   0          1m
kup6s-pages-syncer-xxx                    1/1     Running   0          1m
kup6s-pages-nginx-xxx                     1/1     Running   0          1m
kup6s-pages-nginx-yyy                     1/1     Running   0          1m

Version 1.0.0-rc.1 | Built 2026-02-05
Copyright 2026 Klein & Partner KG, Völs, Austria and contributors