Architektur

Request-Pfad, Datenmodell, Auslieferung, Erweiterungsmodell und der Umfang einer einzelnen Installation.

Request-Pfad

Ein winget-Client spricht HTTPS mit Ihrem Reverse-Proxy, der einfaches HTTP an den Origin weiterleitet. Der Origin liest und schreibt in PostgreSQL sowie — für auf ihm abgelegte Installer — in sein eigenes Speicher-Volume.

  • GET /api/{siteToken}/information — Quell-Metadaten und unterstützte Versionen.
  • POST /api/{siteToken}/manifestSearch — Volltextsuche.
  • GET /api/{siteToken}/packageManifests/{id} — Manifest-Auslieferung mit serverseitiger Platzhalter-Auflösung.

Es werden ausschließlich freigegebene Versionen ausgeliefert.

Datenmodell

Pakete, Versionen und Manifeste sind relational gespeichert, in Formen, die wingets eigenes Manifest-Schema spiegeln, zusammen mit dem unangetasteten Upstream-Snapshot und jedem Overlay darüber. Sites, Edge-Nodes, Benutzer, das Audit-Log und Telemetrie-Ereignisse liegen in derselben Datenbank. Eine Datenbank ist der gesamte Zustand einer Installation, plus das Installer-Volume.

Installer-Auslieferung

Auf dem Origin abgelegte Installer werden von seinem eigenen Volume unter /dl/... ausgeliefert, mit bei jeder Auslieferung neu berechnetem SHA-256.

Node-Steuerungsebene

Der Origin enrollt, scopt und überwacht Edge-Nodes; er betreibt den Node selbst nicht. Siehe Edge-Nodes.

Erweiterungsmodell

Auth-Provider registrieren sich über einen Plugin-Host und werden über Berechtigungen freigeschaltet, die aus dem Lizenz-Token gelesen werden — ein Plugin aktiviert sich erst, wenn die passende Berechtigung vorliegt. @kvellman/plugin-sdk ist die öffentliche Typ-Oberfläche dafür.

Stack

Nuxt 4 (Vue 3 + Nitro), TypeScript, PostgreSQL mit Drizzle ORM, Zod und die offiziellen winget-JSON-Schemas (via ajv) für die Manifest-Validierung, Nuxt UI, deutsche und englische Oberfläche. Ausschließlich On-Premise — selbst hostbar, inklusive Air-Gap-Betrieb.

Umfang einer Installation

Ein Anwendungsprozess übernimmt Requests, Installer-Auslieferung und geplante Arbeit (Telemetrie-Rollup, Katalog-Sync). Installer liegen auf einem lokalen Volume oder werden per URL referenziert. Konten sind in der Core-Edition an die jeweilige Installation gebunden. Die Komponenten einer Installation sind der Anwendungscontainer und eine Datenbank.