Sprache Frankfurt, Deutschland
Nodion erkennt .NET an einer Projektdatei, einer Solution oder einer global.json. Das .NET-Buildpack führt dotnet publish -c Release mit dem SDK aus, auf das dein Projekt zielt, und startet die veröffentlichte App auf der ASP.NET-Core-Runtime, gebunden an den Port, den Nodion setzt; das SDK kommt nicht ins Run-Image. Die App läuft in Frankfurt, auf Wunsch neben einer Managed PostgreSQL-Datenbank.
*.csproj, *.fsproj, *.sln oder global.jsondotnet <App>.dll auf http://0.0.0.0:$PORT.csproj oder .fsproj im Base Directory, Framework-abhängig. Bei mehreren Projekten oder einer Solution mit Projekten in Unterordnern setzt du auf dem Tab Environment DOTNET_PROJECT mit dem Häkchen Build auf den Pfad des Web-Projekts; im Root braucht es dann trotzdem eine .sln oder global.json, damit Nodion .NET erkennt. Das Base Directory auf den Projektordner zu setzen, klappt nur, wenn das Projekt keine Projekte außerhalb davon referenziert, denn der Build sieht nichts oberhalb dieses Ordners. Build variable DOTNET_PROJECT=src/MyApp.Web/MyApp.Web.csproj ASPNETCORE_URLS=http://0.0.0.0:$PORT. Entferne fest eingetragene URLs wie app.Run("http://localhost:5000") und Kestrel-Endpoints in der appsettings.json, denn die haben Vorrang. Eine API ohne Seite unter / braucht einen Health-Endpoint; seinen Pfad trägst du in den App-Einstellungen als Health-Check-Pfad ein. Program.cs var builder = WebApplication.CreateBuilder(args);
builder.Services.AddHealthChecks();
var app = builder.Build();
app.MapHealthChecks("/healthz");
app.MapGet("/", () => "Hello from Nodion");
app.Run(); "AllowedHosts": "*" lässt ihn durch. Eine Liste deiner Domains lässt ASP.NET Core mit 400 antworten, und das Release geht nie live; bleib bei * oder prüf Hosts in einer eigenen Middleware, die den Health-Check-Pfad auslässt. appsettings.json {
"AllowedHosts": "*"
} postgres://-URLs wie DATABASE_URL. Lass dir beim Anhängen auf dem Tab Environment deshalb host, port, database, user und password unter eigenen Namen injizieren und bau daraus den Connection String. Program.cs var cs = new Npgsql.NpgsqlConnectionStringBuilder
{
Host = builder.Configuration["DB_HOST"],
Port = int.Parse(builder.Configuration["DB_PORT"] ?? "5432"),
Database = builder.Configuration["DB_NAME"],
Username = builder.Configuration["DB_USER"],
Password = builder.Configuration["DB_PASSWORD"],
}.ConnectionString;
builder.Services.AddDbContext<AppDbContext>(o => o.UseNpgsql(cs)); dotnet ef kann also nicht als Release-Schritt laufen. Wende sie beim Start der App mit Database.Migrate() an, das passt für eine einzelne Instanz, oder wechsel zu einem Dockerfile, das ein EF-Core-Migration-Bundle baut und es als Release Command der App ausführt. Program.cs using (var scope = app.Services.CreateScope())
{
scope.ServiceProvider.GetRequiredService<AppDbContext>().Database.Migrate();
} global.json, sonst aus dem TargetFramework des Projekts im Base Directory, sonst .NET 10, und das Run-Image bekommt die ASP.NET-Core-Runtime derselben Version. Ein Projekt im Unterordner wird dafür nicht gelesen; eine net8.0- oder net9.0-App, die du per DOTNET_PROJECT auswählst, braucht also eine global.json mit dieser Version. Nodion installiert das aktuelle SDK dieser Version, das ein neueres Feature Band sein kann; setz dort deshalb "rollForward": "latestFeature".ASPNETCORE_ENVIRONMENT nicht, ASP.NET Core läuft also als Production und liest appsettings.Production.json zusätzlich zur appsettings.json. Secrets gehören in Environment-Variablen, die als Secret markiert sind; ConnectionStrings__Default wird zu ConnectionStrings:Default.DATABASE_URL, REDIS_URL oder CLICKHOUSE_URL in die App. release:-Zeile in der Procfile bei jedem neuen Build. Dockerfile-Apps sowie Redeploys und Rollbacks auf ein früheres Image nutzen einen Release Command, der an der App selbst gesetzt ist; er hat auch Vorrang vor der Procfile-Zeile. Bei statischen Sites läuft ein Release-Schritt in einem Image, das nur die gebauten Dateien enthält. Meist bekommt der Health Check eine 400 wegen eingeschränkter AllowedHosts, eine 404 auf / in einem API-Projekt oder gar keine Antwort, weil eine fest eingetragene URL oder ein Kestrel-Endpoint die App woanders lauschen lässt. Lass AllowedHosts auf *, setz einen Health-Check-Pfad wie /healthz und überlass die Adresse ASPNETCORE_URLS.
Blazor-Server-Apps und das Server-Projekt einer Blazor Web App laufen als ASP.NET-Core-Apps; hat das Repository mehrere Projekte, zeigt DOTNET_PROJECT auf das Server-Projekt. Eine eigenständige Blazor-WebAssembly-App hat keinen Server zum Starten, das .NET-Buildpack kann sie also nicht deployen: Hoste sie in einem ASP.NET-Core-Projekt oder nimm ein Dockerfile.
Nein. Wende sie beim Start mit Database.Migrate() an, oder bau in einem Dockerfile ein EF-Core-Migration-Bundle und führ es als Release Command aus. Das Tool dotnet ef braucht das SDK, und das steckt nicht im Run-Image des Buildpacks.
Ja. Eine .fsproj wird genauso erkannt und veröffentlicht wie eine .csproj, F#-Web-Apps auf ASP.NET Core deployst du also auf demselben Weg.
In der Region EU Central in Frankfurt. Build, Registry, die App und ihre Datenbanken, Volumes, Buckets, Logs und Metriken bleiben in dieser Region, API und Control Plane von Nodion werden in Deutschland gehostet. Die Nodion GmbH hat ihren Sitz in Stuttgart.
Nodion schafft die Voraussetzungen dafür: Die Nodion GmbH hat ihren Sitz in Stuttgart, in der Region Frankfurt laufen App, Datenbanken und Volumes in Deutschland, und den Auftragsverarbeitungsvertrag (AVV) nach Art. 28 DSGVO schließt du im Dashboard elektronisch ab. Ob dein Einsatz DSGVO-konform ist, hängt auch davon ab, wie du die App konfigurierst und nutzt.
Eine App-Instanz gibt es ab 1 EUR im Monat. Das Setup im Kostenkasten kostet 3.50 EUR im Monat: App 2 EUR, PostgreSQL 1.50 EUR. Preise sind netto, Abrechnung pro Sekunde, größere Varianten oder mehr Instanzen wählst du jederzeit.
Ja. Jede App bekommt einen Default-Hostnamen mit HTTPS. Deine eigene Domain nimmst du auf dem Tab Domains dazu, das TLS-Zertifikat wird automatisch ausgestellt und erneuert.
Ja. Nodion ist ein deutsches Unternehmen mit Sitz in Stuttgart, der Support antwortet auf Deutsch und auf Englisch.
Bis zu 15 € Guthaben beim Registrieren.
oder per E-Mail
Produktnews, kein Spam. Jederzeit abbestellen.
Erfolgreich eingetragen.