Zum Inhalt springen

Anwendungseinstellungen – Referenz

RAMP wird über appsettings.json-Dateien im Verzeichnis src/RAMP.API/ konfiguriert. Die Konfiguration folgt den ASP.NET Core-Konventionen mit umgebungsspezifischen Überschreibungen.

DateiZweck
appsettings.jsonBasiskonfiguration (wird immer geladen)
appsettings.Development.jsonEntwicklungsüberschreibungen
appsettings.Production.jsonProduktionsüberschreibungen
appsettings.Docker.jsonDocker-Deployment-Überschreibungen

Die Basiseinstellungen werden zuerst geladen, dann überschreiben umgebungsspezifische Dateien die übereinstimmenden Schlüssel. Spätere Dateien haben Vorrang.

Alle Einstellungen können über Umgebungsvariablen mit dem Präfix RAMP_ überschrieben werden:

RAMP_Database__Provider=Sqlite
RAMP_Jwt__Secret=MyProductionSecret123456789012345
RAMP_Cache__Provider=Redis

Verwenden Sie doppelte Unterstriche (__) zur Trennung verschachtelter Schlüssel.


Konfiguriert den Datenbankanbieter und die Verbindung.

{
"Database": {
"Provider": "SqlServer",
"ConnectionString": "Server=localhost,1433;Database=RAMP;User Id=sa;Password=YourPassword;TrustServerCertificate=True",
"AutoMigrate": true,
"RequireUpToDateSchema": false,
"RequireUpToDateTranslations": false
}
}
EigenschaftTypStandardBeschreibung
ProviderenumSqlServerDatenbankanbieter: SqlServer, Sqlite, PostgreSQL, MySQL
ConnectionStringstring(leer)Datenbankverbindungszeichenfolge. Greift auf ConnectionStrings:DefaultConnection zurück, wenn leer.
AutoMigratebooltrueEntity Framework Core-Migrationen beim Start automatisch anwenden. In der Produktion auf false setzen für kontrollierte Migrations-Deployments.
RequireUpToDateSchemaboolfalseWenn true und ausstehende Migrationen vorhanden sind, schlägt der API-Start fehl. Nützlich zum Erkennen vergessener Migrationen in CI/CD.
RequireUpToDateTranslationsboolfalseWenn true und integrierte Übersetzungen veraltet sind, schlägt der API-Start fehl.
Server=hostname,1433;Database=RAMP;User Id=sa;Password=YourPassword;TrustServerCertificate=True

Zur Abwärtskompatibilität prüft RAMP auch den Standard-Abschnitt ConnectionStrings:

{
"ConnectionStrings": {
"DefaultConnection": "Server=localhost,1433;Database=RAMP;..."
}
}

Wenn Database:ConnectionString leer ist, greift RAMP auf ConnectionStrings:DefaultConnection zurück.


Konfiguriert die JSON Web Token-Authentifizierung für den API-Zugriff.

{
"Jwt": {
"Secret": "YourSuperSecretKeyThatIsAtLeast32CharactersLong!",
"Issuer": "RAMP.API",
"Audience": "RAMP.Web",
"ExpiryHours": 8
}
}
EigenschaftTypStandardBeschreibung
Secretstring(siehe Standard)HMAC-SHA256-Signaturschlüssel. Mindestens 32 Zeichen. Muss in der Produktion geändert werden.
IssuerstringRAMP.APIJWT-Token-Aussteller-Claim
AudiencestringRAMP.WebJWT-Token-Zielgruppen-Claim
ExpiryHoursint8JWT-Token-Gültigkeitsdauer in Stunden

Konfiguriert den Speicherort für hochgeladene Dateien (Anhänge, Nachweise).

{
"FileStorage": {
"Provider": "Local",
"Local": {
"Path": "uploads"
},
"MinIO": {
"Endpoint": "localhost:9000",
"AccessKey": "admin",
"SecretKey": "minio_password",
"BucketName": "ramp-uploads",
"UseSSL": false,
"Region": "us-east-1"
},
"AzureBlob": {
"ConnectionString": "",
"ContainerName": "ramp-uploads"
},
"S3": {
"AccessKey": "",
"SecretKey": "",
"BucketName": "ramp-uploads",
"Region": "us-east-1",
"ServiceUrl": ""
}
}
}
AnbieterBeschreibungGeeignet für
LocalDateien im lokalen Dateisystem gespeichertEntwicklung, Single-Server-Deployments
MinIOS3-kompatibler ObjektspeicherDocker-Deployments, selbst gehostete Cluster
AzureBlobAzure Blob StorageAzure-Cloud-Deployments
S3Amazon S3 oder S3-kompatible DiensteAWS-Deployments, S3-kompatibler Speicher
EigenschaftTypStandardBeschreibung
PathstringuploadsVerzeichnispfad für die Dateispeicherung. Relativ zum API-Arbeitsverzeichnis.
EigenschaftTypStandardBeschreibung
Endpointstringlocalhost:9000MinIO-Server-Endpunkt (Host:Port)
AccessKeystring(leer)MinIO-Zugriffsschlüssel
SecretKeystring(leer)MinIO-Geheimschlüssel
BucketNamestringramp-uploadsName des Speicher-Buckets
UseSSLboolfalseHTTPS für MinIO-Verbindungen verwenden
Regionstringus-east-1MinIO-Region
EigenschaftTypStandardBeschreibung
ConnectionStringstring(leer)Azure Storage-Verbindungszeichenfolge
ContainerNamestringramp-uploadsBlob-Containername
EigenschaftTypStandardBeschreibung
AccessKeystring(leer)AWS-Zugriffsschlüssel-ID
SecretKeystring(leer)Geheimer AWS-Zugriffsschlüssel
BucketNamestringramp-uploadsS3-Bucket-Name
Regionstringus-east-1AWS-Region
ServiceUrlstring(leer)Benutzerdefinierter Endpunkt für S3-kompatible Dienste

Konfiguriert den Caching-Anbieter für Anwendungsdaten und Token-Blacklisting.

{
"Cache": {
"Provider": "InMemory",
"InMemory": {
"SizeLimit": 100000000,
"ExpirationScanFrequency": 60
},
"Redis": {
"ConnectionString": "localhost:6379",
"InstanceName": "RAMP:",
"Database": 0,
"AbortOnConnectFail": false,
"ConnectTimeout": 5000,
"SyncTimeout": 5000
}
}
}
AnbieterBeschreibungGeeignet für
InMemoryIn-Process-Speicher-CacheSingle-Server-Deployments, Entwicklung
RedisVerteilter Redis-CacheMulti-Server-Deployments, Produktion
EigenschaftTypStandardBeschreibung
SizeLimitlong100000000Maximale Cache-Größe in Bytes (100 MB)
ExpirationScanFrequencyint60Wie oft nach abgelaufenen Einträgen gesucht wird (Sekunden)
EigenschaftTypStandardBeschreibung
ConnectionStringstringlocalhost:6379Redis-Server-Verbindungszeichenfolge
InstanceNamestringRAMP:Schlüsselpräfix für Cache-Einträge
Databaseint0Redis-Datenbanknummer (0–15)
AbortOnConnectFailboolfalseAusnahme auslösen, wenn die Erstverbindung fehlschlägt. Auf false setzen für Resilienz.
ConnectTimeoutint5000Verbindungs-Timeout in Millisekunden
SyncTimeoutint5000Timeout für synchrone Operationen in Millisekunden

Konfiguriert SignalR für Echtzeit-Browser-Benachrichtigungen und Kollaborationsfunktionen.

{
"SignalR": {
"UseRedisBackplane": false,
"Redis": {
"ConnectionString": "localhost:6379",
"ChannelPrefix": "RAMP:SignalR:",
"ConnectTimeout": 5000,
"SyncTimeout": 5000
}
}
}
EigenschaftTypStandardBeschreibung
UseRedisBackplaneboolfalseRedis-Backplane für Multi-Server-SignalR aktivieren. Erforderlich für Load-Balanced-Deployments.
EigenschaftTypStandardBeschreibung
ConnectionStringstringlocalhost:6379Redis-Server für das SignalR-Backplane
ChannelPrefixstringRAMP:SignalR:Redis-Kanalpräfix für SignalR-Nachrichten
ConnectTimeoutint5000Verbindungs-Timeout in Millisekunden
SyncTimeoutint5000Timeout für synchrone Operationen in Millisekunden

Diese Werte sind im Code konfiguriert und können nicht über die Konfiguration geändert werden:

EinstellungWertBeschreibung
KeepAliveInterval15 SekundenIntervall zwischen Keep-Alive-Pings
ClientTimeoutInterval30 SekundenClient gilt nach dieser Zeit als getrennt
HandshakeTimeout15 SekundenMaximale Zeit für den initialen Handshake
MaximumReceiveMessageSize32 KBMaximale Größe eingehender Nachrichten
EnableDetailedErrorsNur EntwicklungDetaillierte Fehlermeldungen in der Entwicklung

Konfiguriert SMTP für E-Mail-Benachrichtigungen (Passwort-Zurücksetzen, Eskalationen, Zusammenfassungen).

{
"EmailSettings": {
"SmtpHost": "localhost",
"SmtpPort": 25,
"UseSsl": false,
"Username": null,
"Password": null,
"FromAddress": "noreply@ramp.local",
"FromName": "RAMP Notifications"
}
}
EigenschaftTypStandardBeschreibung
SmtpHoststringlocalhostSMTP-Server-Hostname
SmtpPortint25SMTP-Server-Port (25, 587 oder 465)
UseSslboolfalseSSL/TLS für SMTP-Verbindungen aktivieren. true verwenden mit Port 587 (STARTTLS) oder 465 (Implicit TLS).
UsernamestringnullSMTP-Authentifizierungs-Benutzername (optional)
PasswordstringnullSMTP-Authentifizierungs-Passwort (optional)
FromAddressstringnoreply@ramp.localAbsender-E-Mail-Adresse
FromNamestringRAMP NotificationsAnzeigename des Absenders

Konfiguriert die Unterstützung für Mandantenfähigkeit. Wenn deaktiviert, betreibt RAMP als Single-Mandant-Installation.

{
"MultiTenant": {
"Enabled": false,
"ResolutionStrategy": "Cookie",
"FallbackStrategy": "None",
"AllowDomain": false,
"AllowPath": false,
"AllowDatabasePerTenant": false,
"DomainPattern": "{tenant}.localhost",
"PathPrefix": "/tenant",
"DefaultTenantSlug": "default",
"RequireTenant": false
}
}
EigenschaftTypStandardBeschreibung
EnabledboolfalseMandantenfähigkeit aktivieren. Bei false betreibt RAMP als Single-Mandant.
ResolutionStrategyenumCookiePrimäre Mandanten-Auflösungsmethode: Cookie, DomainSlug, Header
FallbackStrategyenumNoneFallback-Auflösung, wenn die primäre fehlschlägt: Cookie, DomainSlug, Header, None
AllowDomainboolfalseDomain-basierte Mandantenauflösung erlauben (z. B. acme.ramp.example.com)
AllowPathboolfalsePfad-basierte Mandantenauflösung erlauben (z. B. /tenant/acme/)
AllowDatabasePerTenantboolfalseSeparate Datenbanken pro Mandant erlauben (erweitert)
DomainPatternstring{tenant}.localhostDomain-Muster für die domain-basierte Auflösung. {tenant} wird durch den Mandanten-Slug ersetzt.
PathPrefixstring/tenantPfadpräfix für die pfad-basierte Auflösung
DefaultTenantSlugstringdefaultStandard-Mandanten-Slug, wenn kein Mandant aufgelöst wird
RequireTenantboolfalseWenn true, werden Anfragen ohne aufgelösten Mandanten abgelehnt
StrategieFunktionsweiseAnwendungsfall
CookieMandant wird nach dem Login in einem Browser-Cookie gespeichertStandard. Funktioniert mit jedem Deployment.
DomainSlugMandant wird aus der Subdomain extrahiertWenn jeder Mandant seine eigene Subdomain hat
HeaderMandant aus dem X-Tenant-Id-HeaderNur-API-Zugriff, Reverse-Proxy-Setups

Konfiguriert den Mandantenadministrationsbereich, einschließlich der Authentifizierungsmethoden für Mandantenadministratoren.

{
"TenantAdmin": {
"Authentication": {
"AllowRampInternal": true,
"AllowWindowsAuth": false,
"Oidc": {
"Enabled": false,
"Authority": "",
"ClientId": "",
"ClientSecret": "",
"Scopes": ["openid", "profile", "email"],
"DisplayName": "Single Sign-On"
},
"Ldap": {
"Enabled": false,
"Server": "",
"Port": 389,
"UseSsl": false,
"BaseDn": "",
"UserFilter": "(uid={0})",
"BindDn": null,
"BindPassword": null,
"DisplayName": "LDAP Directory"
}
},
"Administrators": [
{ "Username": "admin", "Provider": "RampInternal" }
]
}
}
EigenschaftTypStandardBeschreibung
AllowRampInternalbooltrueBenutzername-/Passwort-Anmeldung für Mandantenadministratoren erlauben
AllowWindowsAuthboolfalseWindows Integrated Authentication erlauben

OIDC-Optionen (für die Mandantenadministrator-Anmeldung)

Abschnitt betitelt „OIDC-Optionen (für die Mandantenadministrator-Anmeldung)“
EigenschaftTypStandardBeschreibung
EnabledboolfalseOIDC-Authentifizierung für Mandantenadministratoren aktivieren
Authoritystring(leer)OIDC-Authority-URL (z. B. https://keycloak.example.com/realms/ramp)
ClientIdstring(leer)OIDC-Client-ID
ClientSecretstring(leer)Geheimer OIDC-Client-Schlüssel
Scopesstring[]["openid", "profile", "email"]Anzufordernde OIDC-Scopes
DisplayNamestringSingle Sign-OnSchaltflächenbeschriftung auf der Anmeldeseite

LDAP-Optionen (für die Mandantenadministrator-Anmeldung)

Abschnitt betitelt „LDAP-Optionen (für die Mandantenadministrator-Anmeldung)“
EigenschaftTypStandardBeschreibung
EnabledboolfalseLDAP-Authentifizierung für Mandantenadministratoren aktivieren
Serverstring(leer)LDAP-Server-Hostname
Portint389LDAP-Server-Port
UseSslboolfalseSSL/TLS (LDAPS) verwenden
BaseDnstring(leer)Basis-DN für die Benutzersuche
UserFilterstring(uid={0})LDAP-Benutzerfilter. {0} wird durch den Benutzernamen ersetzt.
BindDnstringnullBind-DN für das LDAP-Dienstkonto
BindPasswordstringnullBind-Passwort für das LDAP-Dienstkonto
DisplayNamestringLDAP DirectorySchaltflächenbeschriftung auf der Anmeldeseite

Vorautorisierte Mandantenadministratoren. Wird bei der Anmeldung abgeglichen, um zu bestimmen, wer TenantAdministrator-Zugriff hat.

EigenschaftTypBeschreibung
UsernamestringAbzugleichender Benutzername (für RampInternal, WindowsAD, Ldap)
EmailstringAbzugleichende E-Mail (für Oidc)
ProviderstringAuthentifizierungsanbieter: RampInternal, WindowsAD, Oidc, Ldap

Konfiguriert initiale Administratorkonten, die beim ersten Start erstellt werden. Wird für die Ersteinrichtung oder die Notfallwiederherstellung verwendet.

{
"Bootstrap": {
"Administrators": [
{
"IdentityProvider": "RAMP",
"Username": "admin",
"Email": "admin@example.com",
"FirstName": "System",
"LastName": "Administrator",
"Password": "Passw0rd"
}
],
"TenantAdministrators": [
{
"IdentityProvider": "RAMP",
"Username": "tenantadmin",
"Email": "tenantadmin@ramp.local",
"FirstName": "Tenant",
"LastName": "Administrator",
"Password": "Passw0rd"
}
]
}
}
EigenschaftTypStandardBeschreibung
IdentityProviderstringRAMPIdentitätsanbietertyp: RAMP (intern)
Usernamestring(erforderlich)Anmelde-Benutzername
Emailstring(erforderlich)E-Mail-Adresse
FirstNamestringnullVorname
LastNamestringnullNachname
PasswordstringnullPasswort. Wenn nicht gesetzt, wird ein zufälliges Passwort generiert und protokolliert.
ProviderSubjectIdstringnullExterne Anbieter-Subject-ID (für OIDC/LDAP-Bootstrap)

Beim Start prüft RAMP, ob diese Benutzer vorhanden sind. Wenn nicht, werden sie mit den angegebenen Anmeldedaten erstellt und der entsprechenden Rolle (Administrator oder TenantAdministrator) zugewiesen.

Weitere Informationen finden Sie unter Bootstrap-Administratoren.


Konfiguriert die Windows Integrated Authentication (IIS/Kestrel mit Negotiate/NTLM).

{
"Authentication": {
"WindowsAuthentication": {
"AutoProvision": false,
"Administrators": [],
"TenantAdministrators": []
}
}
}
EigenschaftTypStandardBeschreibung
AutoProvisionboolfalseRAMP-Benutzerkonten automatisch bei der ersten Windows-Auth-Anmeldung erstellen
Administratorsstring[][]Windows-Domain-Benutzernamen, die bei der Anmeldung die Administrator-Rolle erhalten
TenantAdministratorsstring[][]Windows-Domain-Benutzernamen, die bei der Anmeldung die TenantAdministrator-Rolle erhalten

Aktiviert den OIDC Resource Owner Password Credentials (ROPC)-Flow für Entwicklung und Tests.

{
"OidcDirectAccess": {
"Enabled": false
}
}
EigenschaftTypStandardBeschreibung
EnabledboolfalseROPC-Flow aktivieren. Nur für Entwicklung – niemals in der Produktion aktivieren.

Konfiguriert die Anwendungsprotokollierung über Serilog.

{
"Serilog": {
"MinimumLevel": {
"Default": "Information",
"Override": {
"Microsoft": "Warning",
"Microsoft.AspNetCore": "Warning",
"Microsoft.AspNetCore.Authentication": "Error",
"Microsoft.IdentityModel": "Error",
"System": "Warning"
}
}
}
}
EbeneBeschreibung
VerboseDetaillierteste Protokollierung
DebugEntwickler-Diagnose
InformationNormale Betriebsereignisse
WarningUnerwartete, aber behandelte Situationen
ErrorFehler, die Aufmerksamkeit erfordern
FatalFehler auf Anwendungsabsturz-Ebene
NamespaceProduktionEntwicklungWarum
DefaultInformationDebugAllgemeine Anwendungsprotokollierung
MicrosoftWarningInformationASP.NET Core-Framework
Microsoft.AspNetCoreWarningInformationHTTP-Anfrage-Pipeline
Microsoft.AspNetCore.AuthenticationErrorErrorAuth-Middleware (sehr gesprächig bei Info/Warning)
Microsoft.IdentityModelErrorErrorJWT-Token-Validierung (gesprächig)
SystemWarningWarning.NET-Laufzeitumgebung

RAMP schreibt Protokolle in:

  1. Konsole – immer aktiviert
  2. Dateilogs/ramp-{date}.log mit täglichem Rollover

Weitere Serilog-Senken können nach Standard-Serilog-Konfigurationsmustern konfiguriert werden.


Übergeordnete Einstellungen, die keinem spezifischen Abschnitt angehören.

{
"FrontendUrl": "http://localhost:5173",
"AllowedHosts": "*"
}
EigenschaftTypStandardBeschreibung
FrontendUrlstring(leer)Frontend-URL für CORS-Richtlinien und E-Mail-Link-Generierung. Auf Ihre Web-Frontend-URL setzen.
AllowedHostsstring*Standard-ASP.NET Core-Host-Filterung. Semikolon-getrennte Liste der erlaubten Hostnamen.

Einige Einstellungen werden automatisch abgeleitet und nicht direkt konfiguriert.

  • Wenn Database.Provider SqlServer ist: Verwendet SQL Server-Speicher für persistente Auftragswarteschlangen
  • Alle anderen Anbieter: Greift auf In-Memory-Speicher zurück (Aufträge gehen beim Neustart verloren)
  • Dashboard verfügbar unter /_hangfire (erfordert die Administrator-Rolle)

Immer verfügbar (keine Konfiguration erforderlich):

EndpunktBeschreibung
/_healthGesamter Systemzustand
/_health/readyBereitschaftsprüfung (Datenbankverbindung)
/_health/liveLebendigkeitsprüfung (Anwendung läuft)
  • Verfügbar unter /_swagger nur in der Entwicklungsumgebung
  • In der Produktion automatisch deaktiviert
  • Wird beim Start unter {BaseDirectory}/ramp-api.{pid}.pid erstellt
  • Wird beim Prozessende automatisch gelöscht
  • Nützlich für Prozessverwaltungsskripte

SQLite + In-Memory-Cache für die lokale Entwicklung:

{
"FrontendUrl": "http://localhost:5173",
"Database": {
"Provider": "Sqlite",
"ConnectionString": "Data Source=ramp_dev.db"
},
"Cache": { "Provider": "InMemory" },
"SignalR": { "UseRedisBackplane": false }
}