On-prem ADO → Apache/.NET Kestrel deploy runbook

Reusable pattern from SlingBuiltAuth (General project). Use this for the next site pipelines.

Architecture (SlingBuiltAuth reference)

Public DNS → edge. LAN DNS must also hit the TLS edge (001), not the app host alone, or HTTPS 404s / wrong certs.

ADO setup checklist

  1. Repo + azure-pipelines.yml on master
  2. Environment (e.g. slingbuilt-prod) + approval if needed
  3. Variable group linked to the pipeline (e.g. slingbuilt-prod)
  4. SSH service connection (e.g. slingbuilt-linux → grok@app-host)
  5. Agent pool: Default (no Microsoft-hosted ubuntu-latest on this ADO)
  6. Secure files optional — prefer host-side cert copy if agent Node TLS fails against internal CA

Pipeline pattern that works here

curl -H="X-Forwarded-Proto: https" -H="Host: public.example.com" http://127.0.0.1:PORT/.well-known/...

systemd

Apache

Edge (TLS)

App host (HTTP)

Secrets / SQL

Agent Node TLS (Secure Files / artifacts)

First-run verification

  1. systemctl is-active <service>
  2. Loopback discovery/health with forwarded Host/Proto
  3. Public https://<host>/... through the edge
  4. LAN DNS points at TLS edge

SlingBuiltAuth concrete paths

Trouble we hit


Revision #2
Created 10 September 2026 22:10:49 by Steve Ling
Updated 11 September 2026 00:22:02 by Steve Ling