Skip to content

EDFI-2779: Restructure the Windows IIS installation guide - #537

Merged
analiliagutierrez merged 14 commits into
mainfrom
EDFI-2779_Windows_Server_Installation_Guide
Jul 31, 2026
Merged

EDFI-2779: Restructure the Windows IIS installation guide#537
analiliagutierrez merged 14 commits into
mainfrom
EDFI-2779_Windows_Server_Installation_Guide

Conversation

@analiliagutierrez

@analiliagutierrez analiliagutierrez commented Jun 22, 2026

Copy link
Copy Markdown
Contributor

Summary

Rewrites the Windows IIS installation guide to match the current Admin App v4 install scripts and aligns the surrounding reference docs with what the scripts actually deploy (HTTPS by default, httpPlatform hosting, least-privilege DB login, enforcing security headers). Also clarifies which database engine each installation path supports.

Tickets

  • [EDFI-2779] Windows Server Installation Guide
  • [EDFI-2791] Clarify database support for each OS

What changed

Windows IIS guide (EDFI-2779) — rewritten to match the scripts:

  • Two IIS sites over HTTPS (API :3443, FE :4443), HTTP bindings redirect; httpPlatform handler (HttpBridge) replacing iisnode.
  • New web.config for both sites, production.js/.env aligned (edfi_adminapp least-privilege login, API_PORT from HTTP_PLATFORM_PORT, SSL_VERIFICATION).
  • TLS-by-default with a self-signed fallback; enforcing security-headers section.
  • Scripted and manual paths documented side by side; a runnable install-all.ps1 example (SecureString passwords, -AppDbPassword) and a first sign-in note.
  • Identity provider scoped to the Keycloak example for this release.

Reference-doc alignment (EDFI-2779) — brought in line with the v4 scripts:

  • Troubleshooting rewritten from iisnode to the httpPlatform hosting model.
  • configuring-admin-app: fixed the ENABLE_OPEN_API key, corrected DB encryption key length (64 hex chars), de-duplicated frontend build-time variables, fixed the OIDC config table name (oidc).
  • OIDC callback URIs use the configured provider id.
  • Security "Built-in Protections" made installer-neutral; maintenance now updates via a release tag, not git pull origin main.

Database engine support per path (EDFI-2791):

  • Docker Compose: both engines (PostgreSQL default; SQL Server via DB_ENGINE=mssql + -MSSQL).
  • Unix-like: PostgreSQL.
  • Windows IIS: SQL Server (default) and PostgreSQL via Docker.
image

Validation

  • markdownlint clean; Docusaurus build passes (no broken internal links).
  • The companion install scripts were validated end-to-end on Windows/IIS.

Related

Out of scope / follow-ups

  • Microsoft Entra ID and Google Workspace provider docs → EDFI-2794 (after the Admin App v4.1 release, when those providers are officially supported).

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Updates the Admin App v4 documentation to align the Windows/IIS installation path with the current installation scripts and to clarify database/hosting expectations across Windows, Unix-like, and Docker Compose deployment options.

Changes:

  • Rewrites the Windows IIS installation guide around httpPlatform hosting, TLS-by-default, least-privilege DB access, and the scripted vs. manual install flows.
  • Refreshes troubleshooting guidance to match the new IIS/httpPlatform deployment model and adds targeted frontend IIS troubleshooting (e.g., missing .woff2 MIME types).
  • Clarifies configuration and security guidance (OIDC <oidc-id> usage, encryption key format, outbound TLS verification, and security headers expectations).

Reviewed changes

Copilot reviewed 10 out of 10 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
docs/reference/5-admin-app/troubleshooting.md Replaces iisnode-focused troubleshooting with httpPlatform/IIS + TLS-by-default troubleshooting guidance.
docs/reference/5-admin-app/readme.md Adds direct links to key Admin App doc sections (configuration/troubleshooting/maintenance).
docs/reference/5-admin-app/maintenance.md Adjusts update guidance to prefer stable release tags over main.
docs/reference/5-admin-app/getting-started/windows-iis-installation.md Major rewrite to match current Windows install scripts (ports, TLS, httpPlatform, Keycloak example, uninstall guidance).
docs/reference/5-admin-app/getting-started/unix-installation.md Clarifies Postgres-only expectations for the Unix-like path and updates encryption-key guidance.
docs/reference/5-admin-app/getting-started/readme.md Updates the “choose one path” framing and refines reverse-proxy guidance/wording.
docs/reference/5-admin-app/getting-started/docker-installation.md Adds explicit DB engine selection instructions and clarifies NODE_EXTRA_CA_CERTS usage.
docs/reference/5-admin-app/configuration/security-considerations.md Expands security guidance to reflect IIS path defaults and built-in protections across install paths.
docs/reference/5-admin-app/configuration/identity-provider.md Updates redirect URI guidance to use <oidc-id> and clarifies it is not always 1.
docs/reference/5-admin-app/configuration/configuring-admin-app.md Updates configuration reference examples (encryption key format, OIDC table name, outbound TLS verification, and related notes).

Comment thread docs/reference/5-admin-app/readme.md Outdated
Comment thread docs/reference/5-admin-app/getting-started/windows-iis-installation.md Outdated
@analiliagutierrez
analiliagutierrez force-pushed the EDFI-2779_Windows_Server_Installation_Guide branch 2 times, most recently from 0a003f7 to 65033a2 Compare July 17, 2026 16:24

@adiaz-msdf adiaz-msdf left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

#Review of PR #537 (docs)

Suggestion: split the Windows IIS guide into three pages (Manual / Automated / Semi-automated)

The rewrite is a big content upgrade, but the page has also grown a lot, and it now serves three different readers at once — someone who just wants install-all.ps1, someone doing everything by hand, and someone mixing the two. As a reader I found it hard to tell at any given point whether I was looking at a manual step or at a description of what a script does: the "Fast path" table, the "Run everything at once" section, the :::tip Automation shortcut callouts, and the manual numbered steps all interleave on one page, so every reader ends up scanning past content meant for a different path.

Proposal: turn Windows IIS Installation into a small landing page plus three focused pages:

  1. Windows IIS Installation (Automated) — the shortest page: setup-vm-prereqs.ps1 on a fresh VM, then install-all.ps1 with the parameter examples, idempotent re-run flags (-SkipPhase1 / -SkipPhase2), and first sign-in. No manual steps at all.
  2. Windows IIS Installation (Manual) — the current manual numbered steps, with no script references inline: prerequisites, database, IdP, both deployments, web.config listings, production.js. This becomes the authoritative "what actually gets configured" reference.
  3. Windows IIS Installation (Semi-automated) — essentially the current script↔section mapping table, for people who automate some sections and hand-configure others (e.g., scripts for prereqs and build, manual deploy against an existing IIS setup). Each row links to the corresponding manual section on page 2.

If a multi-page split is too big a change for this PR, a lighter fallback would be <Tabs> (Automated / Manual) within each section — but I think separate pages read better for content this long, and search/deep-links land the reader on the right path.

Comment thread docs/reference/5-admin-app/getting-started/docker-installation.md Outdated
Comment thread docs/reference/5-admin-app/configuration/configuring-admin-app.md
@analiliagutierrez

Copy link
Copy Markdown
Contributor Author

#Review of PR #537 (docs)

Suggestion: split the Windows IIS guide into three pages (Manual / Automated / Semi-automated)

The rewrite is a big content upgrade, but the page has also grown a lot, and it now serves three different readers at once — someone who just wants install-all.ps1, someone doing everything by hand, and someone mixing the two. As a reader I found it hard to tell at any given point whether I was looking at a manual step or at a description of what a script does: the "Fast path" table, the "Run everything at once" section, the :::tip Automation shortcut callouts, and the manual numbered steps all interleave on one page, so every reader ends up scanning past content meant for a different path.

Proposal: turn Windows IIS Installation into a small landing page plus three focused pages:

  1. Windows IIS Installation (Automated) — the shortest page: setup-vm-prereqs.ps1 on a fresh VM, then install-all.ps1 with the parameter examples, idempotent re-run flags (-SkipPhase1 / -SkipPhase2), and first sign-in. No manual steps at all.
  2. Windows IIS Installation (Manual) — the current manual numbered steps, with no script references inline: prerequisites, database, IdP, both deployments, web.config listings, production.js. This becomes the authoritative "what actually gets configured" reference.
  3. Windows IIS Installation (Semi-automated) — essentially the current script↔section mapping table, for people who automate some sections and hand-configure others (e.g., scripts for prereqs and build, manual deploy against an existing IIS setup). Each row links to the corresponding manual section on page 2.

If a multi-page split is too big a change for this PR, a lighter fallback would be <Tabs> (Automated / Manual) within each section — but I think separate pages read better for content this long, and search/deep-links land the reader on the right path.

Thank you, I think your suggestion makes total sense. I'll work on these changes.

Rewrite the Windows IIS installation guide to match the current Admin App
v4 install scripts: two IIS sites over HTTPS (API and frontend) with HTTP
redirects, the httpPlatform handler replacing iisnode, aligned web.config
and production.js/.env, TLS by default with a self-signed fallback, and
scripted and manual paths documented side by side. Adds a runnable
install-all.ps1 example and a first sign-in note.
State which database engine each installation path supports: the Docker
Compose stack (both engines, PostgreSQL by default, SQL Server via
DB_ENGINE=mssql and the -MSSQL switch) and the Unix path (PostgreSQL).
Bring the reference pages in line with what the v4 install scripts deploy:

- Troubleshooting rewritten from iisnode to the httpPlatform hosting model.
- configuring-admin-app: fix the ENABLE_OPEN_API key, correct the DB
  encryption key length (64 hex chars), de-duplicate the frontend
  build-time variables, and fix the OIDC config table name.
- OIDC callback URIs use the configured provider id.
- Security "Built-in Protections" made installer-neutral; maintenance now
  updates via a release tag instead of git pull.
- Minor consistency fixes across getting-started, readme, docker, and unix
  (self-signed cert note, encryption-key example, 500.19 references).
The Database engine section appears before the guide establishes a working
directory, so reference the script as compose/start-services.ps1 -MSSQL
rather than ./start-services.ps1 -MSSQL.
…pages

Restructure the single Windows IIS installation page into a category: a
landing overview plus Automated, Semi-automated, and Manual pages. The Manual
page is the authoritative, script-free reference (prerequisites, both IIS
sites, the exact web.config and production.js); Automated and Semi-automated
cover the install-all.ps1 script paths. Repoint the inbound links and anchors
from the other Admin App docs to the new pages.
Add a note to the Windows IIS Automated page that the examples must be run
as-is (each Read-Host -AsSecureString prompts for the value at the console;
do not substitute literal passwords), and point to the scripts repository's
windows-install/README.md and Get-Help for the full parameter list.
Add an interim warning to the manual (Windows/IIS), Docker, and Unix
Admin App install guides telling operators to use only URL-safe
characters in the database password until the source fix ships.
The install now bootstraps SQL Server under Windows Authentication and
connects only as the least-privilege edfi_adminapp login, so the guide no
longer enables or uses sa.
Windows Server 2019/2022 do not ship winget, which the scripts require. Add a
prerequisite section (official Microsoft install links plus an optional
community helper) to the automated path and a pointer from the semi-automated
path.
Use "Web Application" for the frontend site, spell out abbreviations (database,
PostgreSQL, virtual machine, operating-system, identity provider), and clarify
that install-all.ps1 can run without parameters. No functional changes.
The guide did not say where to clone the scripts, even though install-all.ps1
places the Admin App source beside them, so the resulting layout was left to
chance. It also predated the scheduled task that brings the local Keycloak back
after a host restart, and stated the IIS requirement only in passing.

Correct three problems found while reviewing those additions:

- The install-all.ps1 examples passed only parameters the script already prompts
  for, so they demonstrated nothing. One example remains, showing just the
  PostgreSQL parameters that are not prompted for.
- The manual TLS step pointed at New-Item IIS:\SslBindings, which is unavailable
  outside Windows PowerShell. IIS Manager, already used by the binding steps,
  covers it.
- The manual guide asked the reader to resolve the oidc row id before the API had
  created that row. It now says to register 1 and to confirm the id once the API
  has started.

Also promote the manual First sign-in note to a section ahead of Uninstall, point
the prerequisite overview at its own subsections, and drop wording that repeated
itself.
@analiliagutierrez
analiliagutierrez force-pushed the EDFI-2779_Windows_Server_Installation_Guide branch from feceb42 to ad2b6b2 Compare July 30, 2026 03:18
Comment thread docs/reference/5-admin-app/getting-started/readme.md Outdated

@adiaz-msdf adiaz-msdf left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

Keycloak is the only fully supported provider in this release. Microsoft
Entra ID and Google Workspace have been tested and gain full support in
Admin App v4.1.

Drops the stale claim that no other provider has been tested, and the
"in theory any OIDC-compatible IdP will suffice" hedge.
Replaces the category's _category_.json with sidebar_position in its
readme, the mechanism the rest of the repo uses. The label now comes from
the page H1, which is identical to the one the JSON set, and the rendered
sidebar order is unchanged.
@analiliagutierrez
analiliagutierrez added this pull request to the merge queue Jul 31, 2026
Merged via the queue into main with commit 42c78ca Jul 31, 2026
6 checks passed
@analiliagutierrez
analiliagutierrez deleted the EDFI-2779_Windows_Server_Installation_Guide branch July 31, 2026 16:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants