kms-website: activate against vlmcs.viktorbarzin.me, drop ODT-install + deep-legacy GVLKs

The page advertised kms.viktorbarzin.me:1688 as the KMS host, but that name
is the website (Traefik) — internally it resolves to 10.0.20.203 which has no
:1688 listener, so LAN clients failed with "KMS server cannot be reached".
Split the concern: siteHost (kms.viktorbarzin.me) serves the page + /scripts
downloads; kmsHost is now the dedicated A-only vlmcs.viktorbarzin.me endpoint
that resolves to the vlmcsd MetalLB IP (10.0.20.202) on the LAN (Technitium)
and to the public IP over the internet (Cloudflare -> pfSense WAN NAT :1688).

Moderate cleanup:
- remove the Office-install-via-ODT path from kms-bootstrap.ps1 (activation
  only now; manual ODT install docs stay on the page)
- collapse Windows 8.1/8/7/Vista + Server 2012/2008 GVLK tables into a legacy
  note (those keys still activate; just no longer tabled)
- drop the unused kmsHostLan param

Pairs with the infra /scripts Anubis carve-out that makes `iwr | iex` work.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
Viktor Barzin 2026-06-01 08:05:31 +00:00
parent 8bcb64bf99
commit efa1353e6b
5 changed files with 30 additions and 202 deletions

View file

@ -70,15 +70,15 @@
<div class="quickstart-grid">
<div class="card terminal">
<div class="card-head"><span>Windows only</span><button class="btn-copy" data-copy-target="quickstart-win">Copy</button></div>
<pre id="quickstart-win"><code>$env:KMS_AUTO='win'; iwr -UseBasicParsing https://{{ .Site.Params.kmsHost }}{{ .Site.Params.bootstrapURL }} | iex</code></pre>
<pre id="quickstart-win"><code>$env:KMS_AUTO='win'; iwr -UseBasicParsing https://{{ .Site.Params.siteHost }}{{ .Site.Params.bootstrapURL }} | iex</code></pre>
</div>
<div class="card terminal">
<div class="card-head"><span>Office / Project / Visio</span><button class="btn-copy" data-copy-target="quickstart-office">Copy</button></div>
<pre id="quickstart-office"><code>$env:KMS_AUTO='office,project,visio'; iwr -UseBasicParsing https://{{ .Site.Params.kmsHost }}{{ .Site.Params.bootstrapURL }} | iex</code></pre>
<pre id="quickstart-office"><code>$env:KMS_AUTO='office,project,visio'; iwr -UseBasicParsing https://{{ .Site.Params.siteHost }}{{ .Site.Params.bootstrapURL }} | iex</code></pre>
</div>
<div class="card terminal">
<div class="card-head"><span>Windows + Office</span><button class="btn-copy" data-copy-target="quickstart-both">Copy</button></div>
<pre id="quickstart-both"><code>$env:KMS_AUTO='win,office,project,visio'; iwr -UseBasicParsing https://{{ .Site.Params.kmsHost }}{{ .Site.Params.bootstrapURL }} | iex</code></pre>
<pre id="quickstart-both"><code>$env:KMS_AUTO='win,office,project,visio'; iwr -UseBasicParsing https://{{ .Site.Params.siteHost }}{{ .Site.Params.bootstrapURL }} | iex</code></pre>
</div>
</div>
<p class="hint">
@ -111,7 +111,7 @@ cscript "C:\Program Files\Microsoft Office\Office16\ospp.vbs" /act</code></pre>
Click any key to copy.
</p>
{{ $order := slice "Windows 11 / 10" "Windows LTSC" "Legacy desktop" }}
{{ $order := slice "Windows 11 / 10" "Windows LTSC" }}
{{ range $family := $order }}
{{ $items := where $windows "family" $family }}
{{ if $items }}
@ -131,6 +131,13 @@ cscript "C:\Program Files\Microsoft Office\Office16\ospp.vbs" /act</code></pre>
{{ end }}
{{ end }}
<p class="hint">
<strong>Legacy desktop</strong> (Windows 8.1 / 8 / 7 / Vista) is out of support and omitted.
Those GVLKs still work against this KMS — look them up in Microsoft's
<a href="https://learn.microsoft.com/en-us/windows-server/get-started/kms-client-activation-keys" target="_blank" rel="noopener">KMS client key list</a>
and activate with the same <code>slmgr</code> steps below.
</p>
<details class="card">
<summary>How to use a GVLK on Windows</summary>
<pre><code>:: open cmd.exe as Administrator
@ -146,7 +153,7 @@ slmgr /dlv :: verify (look for &quot;LICEN
<h2>Windows Server</h2>
<p class="muted">Server SKUs need only 5 unique clients to satisfy the KMS activation count threshold (vs. 25 for desktop).</p>
{{ $serverOrder := slice "Windows Server 2025" "Windows Server 2022" "Windows Server 2019" "Windows Server 2016" "Windows Server 2012 R2" "Windows Server 2012" "Windows Server 2008 R2" "Windows Server 2008" }}
{{ $serverOrder := slice "Windows Server 2025" "Windows Server 2022" "Windows Server 2019" "Windows Server 2016" }}
{{ range $family := $serverOrder }}
{{ $items := where $servers "family" $family }}
{{ if $items }}
@ -165,6 +172,11 @@ slmgr /dlv :: verify (look for &quot;LICEN
</table>
{{ end }}
{{ end }}
<p class="hint">
<strong>Server 2012 R2 / 2012 / 2008 R2 / 2008</strong> are end-of-life and omitted.
Their GVLKs still activate here — see Microsoft's
<a href="https://learn.microsoft.com/en-us/windows-server/get-started/kms-client-activation-keys" target="_blank" rel="noopener">KMS client key list</a>.
</p>
</section>
<section id="office">