Hugo source for kms.viktorbarzin.me
Find a file
Viktor Barzin a794d1acde kms-website: detect + remove pre-existing MSI Office before C2R VL install (real SXSMSI cause)
Live debug on a user laptop (direct SSH, verbose MSI log) found the true SXSMSI/1603
root cause: a pre-existing 32-bit MSI Office (Office Standard 2010) blocks the 64-bit
C2R VL install. C2R log: SXSMSIValidator "32bit MSI Installation found and trying to
install 64bit C2R". MSI Office cannot coexist with C2R and never appears in C2R
ProductReleaseIds (the only place the script looked) - so it was invisible. This is
why the VM 300 pilot (no old MSI Office) succeeded and DISM/SFC didn't help.

- Get-MsiOffice: detect main MSI Office suites via ARP keys OfficeNN.<RELEASE>
  (Office14.STANDARDR etc.) across both registry hives, with the Office Setup
  Controller path per version.
- Remove-MsiOffice: silent uninstall via the setup controller + Display=none config
  (Office 2010/2013/2016).
- Install-LatestOfficeVL now removes BOTH blockers before the VL install: retail/M365
  C2R AND any MSI Office; shows them in the consent prompt; reboot+re-run after.
- Get-OfficeState telemetry now includes msiOffice=[...].
2026-06-02 20:47:22 +00:00
content Initial commit — Hugo source, Dockerfile, Woodpecker pipeline 2026-05-07 23:13:25 +00:00
data kms-website: auto-fetch + auto-install GVLKs (no manual key lookup) 2026-06-01 10:12:03 +00:00
layouts kms-website: anonymous client diagnostics (Send-Diag -> /diag) + FAQ disclosure 2026-06-01 19:46:49 +00:00
static kms-website: detect + remove pre-existing MSI Office before C2R VL install (real SXSMSI cause) 2026-06-02 20:47:22 +00:00
.dockerignore Initial commit — Hugo source, Dockerfile, Woodpecker pipeline 2026-05-07 23:13:25 +00:00
.gitignore Initial commit — Hugo source, Dockerfile, Woodpecker pipeline 2026-05-07 23:13:25 +00:00
.woodpecker.yml Initial commit — Hugo source, Dockerfile, Woodpecker pipeline 2026-05-07 23:13:25 +00:00
Dockerfile kms-website: anonymous client diagnostics (Send-Diag -> /diag) + FAQ disclosure 2026-06-01 19:46:49 +00:00
hugo.toml kms-website: dedicated activate-windows / activate-office one-liner commands 2026-06-01 19:15:10 +00:00
nginx.conf Initial commit — Hugo source, Dockerfile, Woodpecker pipeline 2026-05-07 23:13:25 +00:00
README.md Initial commit — Hugo source, Dockerfile, Woodpecker pipeline 2026-05-07 23:13:25 +00:00

kms-website

Source for kms.viktorbarzin.me — a single-page reference for activating Microsoft Volume License products against the home-lab KMS host (kms.viktorbarzin.lan / kms.viktorbarzin.me).

Stack

  • Hugo static site (one custom layout, single _index)
  • YAML data file at data/products.yaml is the source of truth for all GVLK tables
  • nginx:alpine Docker image (multi-stage build via Hugo)
  • Woodpecker CI builds + pushes to forgejo.viktorbarzin.me/viktor/kms-website and rolls the kms-web-page Deployment in the kms namespace
  • Terraform in infra/stacks/kms consumes the image (var.image_tag)

Local dev

hugo server -D
# → http://localhost:1313

Update GVLKs

Edit data/products.yaml. Push. CI rebuilds and rolls.

Sources of truth for keys: