Konfiguration¶
Unabhängig vom Deployment und der verwendeten Hardware/Server bietet turnierplan.NET zahlreiche Konfigurationsmöglichkeiten, welche nachfolgend näher beschrieben sind.
Erforderliche Einstellungen¶
Für eine produktive Installation müssen die folgenden Umgebungsvariablen zwingend gesetzt sein:
| Umgebungsvariable | Beschreibung |
|---|---|
Turnierplan__ApplicationUrl |
Die URL, welche für den Web-Zugriff auf den Server verwendet wird. |
Database__ConnectionString |
Connection-String für die PostgreSQL-Datenbank. |
Allgemeine Einstellungen¶
Die folgenden Einstellungen können gesetzt werden, um das allgemeine Aussehen und Verhalten von turnierplan.NET zu konfigurieren:
| Umgebungsvariable | Beschreibung | Standard |
|---|---|---|
Turnierplan__InstanceName |
Dieser Name wird in der Kopfzeile und Fußzeile von den öffentlichen Seiten angezeigt. Falls nicht spezifiert, wird der Text turnierplan.NET angezeigt. |
- |
Turnierplan__LogoUrl |
Die URL für das Vereins-/Firmenlogo, welches in der Kopfzeile von öffentlichen Seiten angezeigt werden soll. Falls nicht spezifiert, wird das turnierplan.NET-Logo angezeigt. | - |
Turnierplan__ImprintUrl |
Die URL für den Verweis auf ein externes Impressum, welches bspw. auf Ihrer Vereins-/Firmenseite gehostet ist. | - |
Turnierplan__PrivacyUrl |
Die URL für den Verweis auf eine externe Datenschutz-Seite, welche bspw. auf Ihrer Vereins-/Firmenseite gehostet ist. | - |
Turnierplan__InitialUserName |
Der Benutzername für den initalen Administratorbenutzer. Sofern nicht angegeben, wird der Benutzername von der Anwendung vorgegeben und beim ersten Start in der Konsole ausgegeben. | - |
Turnierplan__InitialUserPassword |
Das Passwort für den initialen Administratorbenutzer. Sofern nicht angegeben, wird beim ersten Start der Anwendung ein zufälliges Passwort generiert und in der Konsole ausgegeben. | - |
Bilder-Uploads¶
In der Weboberfläche können Bilddateien hochgeladen werden. Diese werden mit einer bestimmten Qualitätseinstellung in das webp-Format konvertiert und anschließend standardmäßig als Dateien in einem Container-Verzeichnis gespeichert. Das entsprechende Verzeichnis sollte als Volume persistiert werden. Folgende Einstellungen sind verfügbar:
| Umgebungsvariable | Beschreibung | Standard |
|---|---|---|
Turnierplan__ImageMaxSize |
Die maximale Dateigröße für Bild-Uploads in Bytes. Der Standard-Wert entspricht 8 MiB (8 · 1024 · 1024) | 8388608 |
Turnierplan__ImageQuality |
Die Qualitätseinstellung für Bild-Uploads. Ein Wert von 100 entspricht einer verlustfreien Komprimierung. |
80 |
ImageStorage__StoragePath |
Das Verzeichnis innerhalb vom Container, hochgeladene Bilder gespeichert werden. | /var/turnierplan/images |
Alternativ können externe Services zum Speichern der Bilder konfiguriert werden. Dies hat den Vorteil, dass das Bereitstellen von Bilddateien keine CPU- und Netzwerkresourcen vom turnierplan.NET-Server beansprucht. Aktuell werden die folgenden externen Services unterstützt:
- AWS S3 (oder kompatibler Dienst)
- Azure Blob Storage
Warning
Die nachfolgend vorgestellten Alternativen verwenden nicht zwangsläufig eine identische Verzeichnisstruktur zur Organisation der Dateien. Dadurch wird eine nachträgliche Umstellung ggf. erschwert!
AWS S3¶
Um Bilder in einem AWS S3 oder S3-kompatiblen Bucket zu speichern, müssen die folgenden Umgebungsvariablen gesetzt werden:
| Umgebungsvariable | Beschreibung |
|---|---|
ImageStorage__Type |
Muss S3 sein. |
ImageStorage__RegionEndpoint |
Der Name der AWS-Region, bspw. eu-central-1. |
ImageStorage__ServiceUrl |
Die Service-URL, falls ein S3-kompatibler Bucket verwendet wird. |
ImageStorage__AccessKey |
Der Name vom Access-Key. |
ImageStorage__AccessKeySecret |
Der Schlüssel vom Access-Key. |
ImageStorage__BucketName |
Der Bucket-Name. |
Der verwendete Access-Key benötigt Rechte zum Erstellen, Lesen und Löschen von Objekten.
Die Eigenschaften RegionEndpoint und ServiceUrl schließen sich gegenseitig aus! Erstere muss verwendet werden, wenn ein AWS S3-Bucket verwendet wird. Letztere muss verwendet werden, wenn ein S3-kompatibler Bucket von einem Drittanbieter verwendet wird.
Azure Blob Storage¶
Um Bilder in einem Azure Blob Storage Container zu speichern, müssen die folgenden Umgebungsvariablen gesetzt werden:
| Umgebungsvariable | Beschreibung |
|---|---|
ImageStorage__Type |
Muss Azure sein. |
ImageStorage__StorageAccountName |
Der Name des Azure Blob Storage Account. |
ImageStorage__ContainerName |
Der Name des Containers innerhalb vom o.g. Storage Account. |
Standardmäßig wird ein DefaultAzureCredential verwendet. Falls also bspw. der turnierplan.NET-Container innerhalb eines Azure App Service betrieben wird, kann für diesen App Service eine Managed Identity erstellt und auf den Blob Storage Account berechtigt werden. Weitere Konfigurationsmöglichkeiten für Deployment-Szenarien, in denen keine Managed Identities verwendet werden können, sind nachfolgend beschrieben.
Sofern eine Entra ID-basierte Authentifizierung verwendet wird (dies betrifft alle Optionen außer Access Keys), muss die entsprechende Managed Identity bzw. App-Registrierung die Rechte zum Erstellen, Lesen und Löschen von Blobs innerhalb vom Storage Account haben. Dies kann am besten mit der Zuweisung der Rolle Storage Blob Data Contributor erreicht werden.
Account Key¶
Die Erstellung von einem Account Key ist in der Dokumentation von Microsoft beschrieben. Um einen Account Key zu verwenden, müssen die folgenden Umgebungsvariablen zusätzlich zu den oben genannten gesetzt werden:
| Umgebungsvariable | Beschreibung |
|---|---|
ImageStorage__UseAccountKey |
Muss true sein, um Acount Key zu verwenden. |
ImageStorage__AccountKey |
Der eigentliche Account Key. |
Client Secret¶
Hierfür ist eine App-Registrierung innerhalb von Entra ID notwendig, welche wie o.g. die notwendigen Zugriffsrechte auf dem Blob Storage Account hat. Innerhalb der App-Registrierung muss zudem ein Client Secret angelegt werden. Um dieses zu verwenden, müssen die folgenden Umgebungsvariablen zusätzlich zu den oben genannten gesetzt werden:
| Umgebungsvariable | Beschreibung |
|---|---|
ImageStorage__UseClientSecret |
Muss true sein, um Client Secret zu verwenden. |
ImageStorage__TenantId |
Die ID des Tenant, wo die App-Registrierung angelegt wurde. |
ImageStorage__ClientId |
Die Client-ID der App-Registrierung. |
ImageStorage__ClientSecret |
Der Wert des angelegten Client Secrets. |
Authentifizierung¶
Die folgenden Einstellungen können gesetzt werden, um die Benutzerauthentifizierung von turnierplan.NET zu konfigurieren:
| Umgebungsvariable | Beschreibung | Standard |
|---|---|---|
Identity__AccessTokenLifetime |
Die Gültigkeitsdauer von ausgestellten Access-Tokens. | 00:03:00 |
Identity__RefreshTokenLifetime |
Die Gültigkeitsdauer von ausgestellten Refresh-Tokens. Innerhalb diesem Zeitraum ist kein erneuter Login erforderlich. | 1.00:00:00 |
Identity__SigningKey |
Optional ein base64-kodierter 512-bit Schlüssel zur Signierung der ausgestellten Access- und Refresh-Tokens. | - |
Identity__StoragePath |
Falls kein Signature-Key angegeben wird, wird in diesem Verzeichnis ein zufällig generierter Schlüssel gespeichert. | /var/turnierplan/identity |
Identity__UseInsecureCookies |
Kann auf true gesetzt werde, um HTTP Cookies ohne secure auszustellen. Dies ist erforderlich, wenn nicht mit HTTPS auf turnierplan.NET zugegriffen wird. |
false |
Für ein produktives Deployment sind die Standardwerte ausreichend und müssen nicht geändert werden.
Note
Die Gültigkeitsdauer muss als .NET TimeSpan formatiert werden. Das Format ist HH:mm:ss bzw. d.HH:mm:ss also bspw. 00:03:00 für 3 Minuten oder 1.00:00:00 für 1 Tag.
Note
Falls kein Signaturschlüssel festgelegt wird, sollte der Identity__StoragePath auf einen Pfad im Container verweisen, welcher als Volume persistiert wird. Ansonsten werden nach jedem Neustart des Containers alle zuvor ausgestellten Tokens ungültig, da ein neuer Schlüssel generiert werden würde.
Monitoring¶
Der turnierplan.NET-Server kann Telemetriedaten (Logs, Metrics & Traces) an Azure Application Insights senden:
| Umgebungsvariable | Beschreibung | Standard |
|---|---|---|
ApplicationInsights__ConnectionString |
Kann gesetzt werden, um Daten an Azure Application Insights zu senden. | - |