Mit ServBay unter macOS lokal ein NestJS-Projekt erstellen und ausführen
NestJS ist ein fortschrittliches Node.js-Framework zur Entwicklung effizienter und skalierbarer Serveranwendungen. Es ist in TypeScript geschrieben und von Angular inspiriert und setzt auf eine modulare Architektur sowie auf das Dependency Injection (DI)-Modell. Dank leistungsstarker Features und Tools können Entwickler komplexe, wartbare, testbare und entkoppelte Anwendungen mit Leichtigkeit erstellen.
Hauptmerkmale und Vorteile von NestJS
- Modulare Architektur: Der Code wird durch Module organisiert, wodurch Anwendungen strukturierter, besser verständlich und wartungsfreundlicher werden.
- Dependency Injection: Bietet ein starkes, benutzerfreundliches System für die Abhängigkeitsinjektion, das die Testbarkeit und Wartbarkeit des Codes erheblich verbessert.
- TypeScript als Basis: Nutzt die Vorteile von TypeScript wie statische Typenprüfung, Schnittstellen und moderne JavaScript-Features ideal aus – für höhere Entwicklungsgeschwindigkeit, bessere Codequalität und weniger Laufzeitfehler.
- Reiche Dekoratoren: Kontrollstrukturen wie Controller, Services oder Module werden mit Decorators deklariert, was den Code kürzer, ausdrucksstärker und selbsterklärend macht.
- Starke Ökosystem: Neben einer aktiven Community bietet NestJS eine Vielzahl an Modulen und Plug-ins, sodass Erweiterungen wie TypeORM, Mongoose, GraphQL, WebSockets, Caching oder Validierung problemlos integriert werden können.
- Standardbasiert: Setzt auf bewährte HTTP-Frameworks wie Express oder Fastify und garantiert damit hohe Kompatibilität und Performance.
Mit NestJS lassen sich Best Practices aus der Backend-Entwicklung (wie SOLID-Prinzipien oder Design Patterns) nutzen, um leistungsstarke, unternehmensfähige Web-Apps, APIs oder Microservices zu erstellen.
Mit ServBay ein NestJS-Projekt erstellen und ausführen
ServBay bietet eine leistungsstarke, integrierte lokale Web-Entwicklungsumgebung für macOS mit verschiedenen Node.js-Versionen, gängigen Datenbanken und Webservern. In dieser Anleitung nutzen wir die Node.js-Umgebung und die „Websites“-Funktion von ServBay, um ein NestJS-Projekt zu erstellen, lauffähig zu machen und (per Reverse Proxy) unter einer eigenen Domain zugänglich zu machen.
Voraussetzungen
Bitte stellen Sie vorab sicher, dass Sie Folgendes erledigt haben:
- ServBay installiert: ServBay ist erfolgreich auf Ihrem Mac installiert.
- Node.js-Paket aktiviert: Über das „Pakete“-(Packages-)Tab im ServBay-Kontrollzentrum haben Sie die gewünschte Node.js-Version ausgewählt und installiert. Falls Node.js noch nicht aktiviert ist, lesen Sie bitte die ServBay Node.js-Anleitung.
NestJS-Projekt erstellen
NestJS CLI global installieren
Öffnen Sie das Terminal und installieren Sie das NestJS-CLI mit npm (das mit Node.js mitgeliefert wird) global. Das CLI ist ein leistungsstarkes Werkzeug für die Initialisierung, Entwicklung und Wartung von NestJS-Anwendungen.
bashnpm install -g @nestjs/cli
1Projekt initialisieren
Wechseln Sie in das empfohlene Website-Rootverzeichnis von ServBay:
/Applications/ServBay/www
. Dort ist es am einfachsten, neue Projekte passend für die spätere Webseitenkonfiguration anzulegen. Erstellen Sie dann Ihr Projekt mit dem CLI:bashcd /Applications/ServBay/www nest new servbay-nest-app
1
2Nach dem Ausführen dieses Befehls führt Sie das NestJS CLI durch die Erstellung, einschließlich der Wahl des Paketmanagers (npm, yarn oder pnpm). Wir empfehlen npm, der Konsistenz wegen. Das Projekt wird im Ordner
/Applications/ServBay/www/servbay-nest-app
angelegt.Projektabhängigkeiten installieren
Wechseln Sie in das Projektverzeichnis
servbay-nest-app
und installieren Sie alle Abhängigkeiten:bashcd servbay-nest-app npm install
1
2Das Kommando
nest new
führt bereitsnpm install
aus, aber ein erneutes Ausführen stellt sicher, dass alle Abhängigkeiten vollständig und aktuell installiert sind.
Ausgabe im NestJS-Projekt anpassen (Optional)
Um zu testen, ob das Projekt erfolgreich läuft und über ServBay erreichbar ist, können wir die Standardantwort der Root-Route modifizieren.
Datei
src/app.controller.ts
bearbeitenÖffnen Sie mit einem Editor die Datei
src/app.controller.ts
im Projektverzeichnis. Ersetzen Sie den Inhalt wie folgt – damit gibt die Root-Route (/
) "Hello ServBay!" zurück:typescriptimport { Controller, Get } from '@nestjs/common'; import { AppService } from './app.service'; // Falls Sie AppService beibehalten @Controller() export class AppController { constructor(private readonly appService: AppService) {} // Falls AppService verwendet wird @Get() getHello(): string { // return this.appService.getHello(); // Falls AppService benutzt wird return 'Hello ServBay!'; // Gibt direkt einen String zurück } }
1
2
3
4
5
6
7
8
9
10
11
12
13Dieser Controller beantwortet HTTP-GET-Requests auf die Root-URL
/
mit dem angegebenen String.
NestJS-Projekt im Entwicklermodus starten und per ServBay zugänglich machen
Für die Entwicklung läuft NestJS mit integriertem Server auf einem bestimmten Port. Über ServBays „Websites“-Funktion richten Sie einen Reverse Proxy ein, sodass Sie das Projekt über eine eigene Domain erreichen.
Entwicklungsserver starten
Starten Sie im Verzeichnis
/Applications/ServBay/www/servbay-nest-app
den Entwicklungsserver. Mit der UmgebungsvariablePORT
können Sie den gewünschten Port festlegen, z.B.8585
:bashcd /Applications/ServBay/www/servbay-nest-app PORT=8585 npm run start:dev
1
2Der Befehl
npm run start:dev
ist ein vordefiniertes NestJS-Script, das mitts-node
den TypeScript-Code ausführt und einen Watch-Mode aktiviert, sodass Änderungen sofort übernommen werden. Der Server lauscht dann auflocalhost:8585
.Reverse Proxy in ServBay konfigurieren
Öffnen Sie das ServBay-Kontrollzentrum und wechseln Sie zum Tab „Websites“. Klicken Sie auf das Plus-Symbol, um eine neue Website-Konfiguration anzulegen:
- Name: z.B.
My first NestJS dev site
- Domains: z.B.
servbay-nest-test.dev
. ServBay leitet.dev
-Domains standardmäßig auf den lokalen Rechner um; Änderungen an der hosts-Datei sind nicht nötig. - Typ:
Reverse Proxy
auswählen. - IP-Adresse: Geben Sie die IP-Adresse an, auf der Ihre Node.js-App läuft, meist
127.0.0.1
. - Port: Der Port des NestJS-Projekts, also
8585
.
Speichern Sie die Einstellungen. ServBay aktualisiert die Konfiguration des Webservers (Caddy oder Nginx) automatisch. Weitere Details zur Website-Konfiguration in ServBay finden Sie in der ServBay-Websites-Anleitung.
- Name: z.B.
Entwicklungsseite im Browser aufrufen
Öffnen Sie Ihren Browser und navigieren Sie zu Ihrer konfigurierten Domain:
https://servbay-nest-test.dev
Hinweis:
- Für über ServBay konfigurierte lokale Seiten werden automatisch kostenlose SSL-Zertifikate von der ServBay User CA bereitgestellt, sodass Sie sicher per
https
zugreifen. Falls eine SSL-Warnung erscheint, müssen Sie möglicherweise das ServBay-CA-Zertifikat als vertrauenswürdig markieren. Details finden Sie in der Anleitung Webseite mit SSL sichern. - Stellen Sie sicher, dass Ihr NestJS-Server (
PORT=8585 npm run start:dev
) läuft – andernfalls ist die Domain nicht erreichbar.
- Für über ServBay konfigurierte lokale Seiten werden automatisch kostenlose SSL-Zertifikate von der ServBay User CA bereitgestellt, sodass Sie sicher per
Produktionsversion bereitstellen und über ServBay erreichen
Vor einem produktiven Deployment – auch lokal – sollte das Projekt gebaut werden.
Produktionsbuild erstellen
Führen Sie im Projektverzeichnis den Build-Befehl aus:
bashcd /Applications/ServBay/www/servbay-nest-app npm run build
1
2Das kompiliert den TypeScript-Code ins
dist
-Verzeichnis.Produktionsserver starten
Nach dem Build-Prozess starten Sie den Produktionsserver – typischerweise per
node
auf dem kompilierten JavaScript. Legen Sie den Port (z.B.8586
) und die UmgebungsvariableNODE_ENV=production
fest:bashcd /Applications/ServBay/www/servbay-nest-app PORT=8586 NODE_ENV=production node dist/main.js
1
2Im Produktionsmodus sind File Watching und Hot-Reload in der Regel deaktiviert.
Reverse Proxy für Produktion konfigurieren
Ergänzen oder ändern Sie im ServBay-Kontrollzentrum im Tab „Websites“ die Einstellungen für die Produktionsseite:
- Name: z.B.
My first NestJS production site
- Domains: z.B.
servbay-nest-test.prod
- Typ:
Reverse Proxy
- IP-Adresse:
127.0.0.1
- Port:
8586
(wie im Serverstart)
Speichern Sie die Konfiguration.
- Name: z.B.
Produktionsseite aufrufen
Öffnen Sie im Browser
https://servbay-nest-test.prod
, um Ihre Produktivseite zu testen – auch hier liefert ServBay automatisiert ein SSL-Zertifikat mit.
Anbindung an von ServBay bereitgestellte Datenbanken
ServBay bietet verschiedene integrierte Datenbanksysteme: u. a. MariaDB (MySQL-kompatibel), PostgreSQL, MongoDB und Redis. So können Sie Ihre NestJS-Anwendung einfach mit solchen Datenbanken verbinden.
Wichtiger Hinweis: Aktivieren Sie vor dem Verbinden die gewünschten Datenbank-Pakete im „Pakete“-(Packages-)Tab des ServBay-Kontrollzentrums. Die Standard-Ports, Benutzernamen und Passwörter entnehmen Sie bitte dem ServBay-Kontrollzentrum oder der Dokumentation. Für den Produktivbetrieb sollten Sie die Standardanmeldedaten abändern und einen eigenen User mit minimalen Rechten anlegen.
Im Folgenden finden Sie Beispielkonfigurationen für populäre ORMs/Bibliotheken in NestJS. Diese werden meist im AppModule oder in einem eigenen Datenbank-Modul vorgenommen.
Verbindung zu MongoDB
Mit dem Modul
@nestjs/mongoose
und dem Paketmongoose
verbinden Sie sich zu MongoDB. Zuerst die Pakete installieren:bashnpm install @nestjs/mongoose mongoose
1Im NestJS-Modul dann wie folgt konfigurieren:
typescriptimport { Module } from '@nestjs/common'; import { MongooseModule } from '@nestjs/mongoose'; // ... weitere Importe @Module({ imports: [ MongooseModule.forRoot('mongodb://localhost:27017/servbay-nest-app'), // Standardport 27017 // ... weitere Module ], controllers: [], // ... providers: [], // ... }) export class AppModule {}
1
2
3
4
5
6
7
8
9
10
11
12
13Die Standard-MongoDB-Connection-URL von ServBay ist typischerweise
mongodb://localhost:27017/
. Gegebenenfalls müssen Sie mit einem MongoDB-Client (z.B. MongoDB Compass odermongosh
) auflocalhost:27017
eine Datenbankservbay-nest-app
anlegen.Verbindung zu Redis
Nutzen Sie das Modul
@nestjs/redis
, um Ihre Anwendung mit Redis zu verbinden. Zuerst die erforderlichen Pakete installieren:bashnpm install @nestjs/redis redis @types/redis
1Konfigurieren Sie das Modul dann wie folgt:
typescriptimport { Module } from '@nestjs/common'; import { RedisModule } from '@nestjs/redis'; // ... weitere Importe @Module({ imports: [ RedisModule.forRoot({ url: 'redis://localhost:6379', // Standardport 6379 }), // ... weitere Module ], controllers: [], // ... providers: [], // ... }) export class AppModule {}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15ServBays Standardadresse für Redis lautet
localhost:6379
.Verbindung zu MariaDB (MySQL-kompatibel)
Über das Modul
@nestjs/typeorm
binden Sie MariaDB an. ServBay unterstützt MariaDB und MySQL; beide sind MySQL-Protokoll-kompatibel. Sie können in TypeORM also sowohlmysql
als auchmariadb
als Typ nutzen. Zuerst die Pakete installieren:bashnpm install @nestjs/typeorm mysql2 typeorm
1Dann im Modul konfigurieren:
typescriptimport { Module } from '@nestjs/common'; import { TypeOrmModule } from '@nestjs/typeorm'; // ... weitere Importe @Module({ imports: [ TypeOrmModule.forRoot({ type: 'mariadb', // Oder 'mysql' host: 'localhost', port: 3306, // Standardport 3306 username: 'root', // Standard-Root-User bei ServBay MariaDB/MySQL password: 'password', // Standardpasswort für Root database: 'servbay_nest_app', // Diese DB ggf. vorher anlegen entities: [], // Ihre Entity-Klassen synchronize: true, // In Entwicklung auf true, Produktion mit Vorsicht! }), // ... weitere Module ], controllers: [], // ... providers: [], // ... }) export class AppModule {}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22Hinweis: Das Standard-Root-Passwort für ServBay MariaDB/MySQL lautet
password
. Nutzen Sie einen Datenbank-Client wie TablePlus, DBeaver oder das MySQL-CLI, um sich anlocalhost:3306
anzumelden und die Datenbankservbay_nest_app
zu erstellen. Wir empfehlen dringend, das Root-Passwort in jedem Fall zu ändern und einen eigenen User mit minimalen Rechten für Ihre Anwendung zu nutzen.Verbindung zu PostgreSQL
Für PostgreSQL ebenfalls das Modul
@nestjs/typeorm
, aber mit dem Paketpg
:bashnpm install @nestjs/typeorm pg typeorm
1Und wie folgt einbinden:
typescriptimport { Module } from '@nestjs/common'; import { TypeOrmModule } from '@nestjs/typeorm'; // ... weitere Importe @Module({ imports: [ TypeOrmModule.forRoot({ type: 'postgres', host: 'localhost', port: 5432, // Standardport 5432 username: 'servbay', // Beispielhafter Standardnutzer bei ServBay PostgreSQL – bitte prüfen password: 'password', // Beispielhaftes Standardpasswort – bitte prüfen database: 'servbay_nest_app', // Diese DB vorher anlegen! entities: [], // Ihre Entity-Klassen synchronize: true, // In Entwicklung auf true, Produktion mit Vorsicht! }), // ... weitere Module ], controllers: [], // ... providers: [], // ... }) export class AppModule {}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22Hinweis: Der Standardnutzer und das Standardpasswort bei ServBay PostgreSQL können je nach Version variieren; häufig sind sie
servbay
oderpostgres
. Die genauen Daten entnehmen Sie bitte dem ServBay-Kontrollzentrum oder der Doku. Erstellen Sie mit einem PostgreSQL-Client die Datenbankservbay_nest_app
sowie ggf. einen passenden Benutzer. Ändern Sie die Standardzugangsdaten aus Sicherheitsgründen unbedingt vor dem Produktionseinsatz!
Fazit
Mit dieser Anleitung können Sie schnell und einfach ein NestJS-Projekt in Ihrer lokalen ServBay-Umgebung auf macOS entwickeln, ausführen und testen. ServBay integriert Node.js, macht die Website-Konfiguration besonders mit dem Reverse-Proxy-Feature extrem einfach – und unterstützt zahlreiche eingebundene Datenbanken. So können Sie nahtlos zwischen Entwicklungsmodus und Produktion wechseln, Ihre Anwendung komfortabel über eigene Domains und HTTPS ausrollen und die gesamte Leistungsfähigkeit der von ServBay bereitgestellten Datenbanksysteme nutzen.