Membuat dan Menjalankan Proyek NestJS Secara Lokal di macOS dengan ServBay
NestJS adalah framework Node.js progresif yang digunakan untuk membangun aplikasi server-side yang efisien dan skalabel. Ditulis menggunakan TypeScript dan terinspirasi dari Angular, NestJS memanfaatkan arsitektur modular dan pola Dependency Injection (DI). Framework ini menawarkan berbagai fitur canggih agar developer dapat membangun aplikasi kompleks yang mudah dirawat, diuji, dan sangat terdekapling.
Fitur Utama dan Keunggulan NestJS
- Arsitektur Modular: Struktur kode disusun dalam bentuk modul sehingga aplikasi menjadi lebih terorganisir, mudah dipahami, dan mudah dipelihara.
- Dependency Injection: Sistem dependency injection yang kuat dan mudah digunakan meningkatkan testabilitas serta kemudahan dalam pemeliharaan kode.
- Menggunakan TypeScript: Mendukung pemeriksaan tipe statis, interface, serta fitur JavaScript modern untuk meningkatkan produktivitas dan kualitas kode, serta meminimalisasi error saat runtime.
- Dekorator yang Kaya Fitur: Mengadopsi decorator untuk mendeklarasikan controller, service, modul, dan lain sebagainya, sehingga kode lebih ringkas dan jelas.
- Ekosistem yang Kuat: Komunitas aktif dan banyak dukungan plugin/modul pihak ketiga memudahkan integrasi dengan berbagai teknologi populer seperti TypeORM, Mongoose, GraphQL, WebSockets, cache, validasi, dan lainnya.
- Berbasis Standar Industri: Menggunakan HTTP server populer seperti Express atau Fastify sebagai dasar, memberikan kompatibilitas dan performa yang andal.
Dengan NestJS, developer dapat mengadopsi praktik terbaik backend (seperti prinsip SOLID, pola desain software) untuk membangun aplikasi web, layanan API, dan mikroservis berskala enterprise dengan cepat.
Membuat dan Menjalankan Proyek NestJS dengan ServBay
ServBay menyediakan lingkungan pengembangan web lokal terintegrasi untuk macOS, lengkap dengan berbagai versi Node.js, database, dan web server bawaan. Dalam panduan ini, Anda akan memanfaatkan environment Node.js dari ServBay dan fitur "Situs Web" (Websites) untuk membuat, menjalankan, serta mengonfigurasi proyek NestJS. Fitur reverse proxy ServBay akan memungkinkan Anda mengakses aplikasi NestJS lokal melalui domain yang disesuaikan.
Prasyarat
Sebelum memulai, pastikan Anda telah:
- Menginstal ServBay: ServBay sudah diinstal dan berjalan di macOS Anda.
- Mengaktifkan Paket Node.js: Pada tab "Paket" (Packages) di panel kontrol ServBay, pastikan Anda sudah mengaktifkan dan memilih versi Node.js yang diperlukan. Jika belum, silakan ikuti panduan Menggunakan Node.js di ServBay terlebih dahulu.
Membuat Proyek NestJS
Instalasi NestJS CLI Secara Global
Buka terminal, lalu gunakan npm (yang umumnya sudah terpasang bersama Node.js) untuk menginstal NestJS CLI secara global. CLI ini membantu dalam inisialisasi, pengembangan, dan maintenance aplikasi NestJS.
bashnpm install -g @nestjs/cli
1Inisialisasi Proyek
Pindah ke direktori root web yang direkomendasikan ServBay, yaitu
/Applications/ServBay/www
. Direktori ini adalah lokasi default penyimpanan website ServBay, sehingga memudahkan konfigurasi situs di langkah selanjutnya. Lalu, buat proyek baru dengan NestJS CLI:bashcd /Applications/ServBay/www nest new servbay-nest-app
1
2Setelah perintah dijalankan, Anda akan diarahkan untuk memilih package manager (npm, yarn, atau pnpm). Disarankan menggunakan npm agar konsisten. Proyek akan dibuat pada folder
/Applications/ServBay/www/servbay-nest-app
.Install Dependency Proyek
Masuk ke direktori proyek yang baru dibuat (
servbay-nest-app
) dan pastikan semua dependency terinstall dengan perintah:bashcd servbay-nest-app npm install
1
2Perintah
nest new
sebenarnya sudah menjalankannpm install
, namun menjalankan ulang memastikan seluruh dependency sudah terpasang dan diperbarui.
Mengubah Output Respons Proyek NestJS (Opsional)
Untuk verifikasi bahwa proyek telah berjalan dan dapat diakses melalui ServBay, Anda bisa mengubah respons default root route pada aplikasi.
Edit File
src/app.controller.ts
Gunakan editor favorit Anda untuk membuka file
src/app.controller.ts
pada direktori proyek. Ubah isinya seperti berikut, supaya endpoint root (/
) akan mengembalikan string "Hello ServBay!":typescriptimport { Controller, Get } from '@nestjs/common'; import { AppService } from './app.service'; // Misal AppService tetap digunakan @Controller() export class AppController { constructor(private readonly appService: AppService) {} // Jika tetap memakai AppService @Get() getHello(): string { // return this.appService.getHello(); // Jika menggunakan AppService return 'Hello ServBay!'; // Mengembalikan string langsung } }
1
2
3
4
5
6
7
8
9
10
11
12
13Kode di atas mendefinisikan controller sederhana yang merespons permintaan HTTP GET ke path root aplikasi (
/
) dengan string yang ditentukan.
Menjalankan Proyek NestJS dalam Mode Pengembangan & Akses melalui ServBay
Aplikasi NestJS biasanya dijalankan dalam mode development menggunakan built-in server dan mendengarkan pada port tertentu. Selanjutnya, Anda bisa memanfaatkan fitur "Situs Web" (Websites) ServBay untuk mengonfigurasi reverse proxy sehingga domain custom akan mengarah ke port server NestJS yang sedang berjalan.
Menjalankan Development Server
Dari direktori proyek
/Applications/ServBay/www/servbay-nest-app
, jalankan perintah berikut untuk menjalankan NestJS dalam mode pengembangan. Misal kita tentukan port8585
dengan variable environmentPORT
:bashcd /Applications/ServBay/www/servbay-nest-app PORT=8585 npm run start:dev
1
2Script
npm run start:dev
sudah tersedia secara default di proyek NestJS dan menjalankan kode TypeScript dengan hot reload. Server akan aktif padalocalhost:8585
.Konfigurasi Reverse Proxy Situs Web di ServBay
Buka panel kontrol ServBay, masuk ke tab "Situs Web" (Websites), lalu klik + untuk menambahkan konfigurasi situs baru:
- Nama (Name): Isi dengan nama deskriptif, misal
My first NestJS dev site
. - Domain (Domains): Masukkan domain lokal yang ingin Anda gunakan, misal
servbay-nest-test.dev
. ServBay akan mengarahkan domain seperti.dev
langsung ke lokal secara otomatis, tanpa perlu modifikasi hosts file. - Tipe (Type): Pilih
Reverse Proxy
. - Alamat IP (IP Address): Masukkan IP aplikasi Node.js - biasanya
127.0.0.1
(localhost). - Port: Masukkan nomor port aplikasi NestJS, yaitu
8585
.
Setelah diisi, simpan konfigurasi. ServBay akan otomatis memperbarui web server-nya (Caddy/Nginx). Untuk penjelasan detail tentang penambahan website pada ServBay, silakan baca Dokumentasi Menambah Website di ServBay.
- Nama (Name): Isi dengan nama deskriptif, misal
Akses Website dalam Mode Development
Buka browser, lalu akses domain yang sudah dikonfigurasi, misalnya
https://servbay-nest-test.dev
.Catatan:
- ServBay menyediakan sertifikat SSL gratis (ditandatangani oleh ServBay User CA) untuk setiap situs lokal yang dikonfigurasi. Jadi Anda dapat mengakses secara aman lewat
https
. Jika muncul peringatan sertifikat, berarti Anda perlu mempercayai sertifikat CA ServBay. Detail, silakan cek Dokumentasi Melindungi Situs Web dengan SSL. - Pastikan development server aplikasi NestJS (
PORT=8585 npm run start:dev
) sedang aktif. Jika tidak berjalan, domain tidak dapat diakses.
- ServBay menyediakan sertifikat SSL gratis (ditandatangani oleh ServBay User CA) untuk setiap situs lokal yang dikonfigurasi. Jadi Anda dapat mengakses secara aman lewat
Deploy Versi Produksi dan Akses lewat ServBay
Sebelum aplikasi NestJS digunakan dalam lingkungan produksi (termasuk simulasi lokal), pastikan proyek telah melalui proses build.
Build Versi Produksi
Pada direktori proyek
/Applications/ServBay/www/servbay-nest-app
, jalankan perintah:bashcd /Applications/ServBay/www/servbay-nest-app npm run build
1
2Perintah di atas akan melakukan kompilasi TypeScript ke JavaScript yang siap produksi di folder
dist
.Menjalankan Server Produksi
Setelah build selesai, jalankan aplikasi NestJS menggunakan perintah berikut untuk mode produksi. Misalnya, gunakan port
8586
dan environment variableNODE_ENV=production
.bashcd /Applications/ServBay/www/servbay-nest-app PORT=8586 NODE_ENV=production node dist/main.js
1
2Pada mode produksi, tidak ada fitur watching/hot reload secara default.
Konfigurasikan Reverse Proxy ServBay untuk Produksi
Kembali ke panel kontrol ServBay di tab "Situs Web" (Websites), tambahkan atau edit situs untuk akses versi produksi:
- Nama (Name): Misal
My first NestJS production site
. - Domain (Domains): Misal
servbay-nest-test.prod
. - Tipe (Type):
Reverse Proxy
. - Alamat IP (IP Address):
127.0.0.1
. - Port:
8586
(sesuaikan dengan port server produksi).
Klik simpan.
- Nama (Name): Misal
Akses Website di Mode Produksi
Buka browser dan akses
https://servbay-nest-test.prod
untuk melihat aplikasi NestJS versi produksi. ServBay juga menyediakan akses SSL untuk situs produksi Anda.
Koneksi ke Database yang Disediakan ServBay
ServBay menyediakan berbagai database populer seperti MariaDB (kompatibel MySQL), PostgreSQL, MongoDB, dan Redis. Ketika mengembangkan aplikasi NestJS, Anda dapat dengan mudah terhubung dan memanfaatkan layanan database ini.
Catatan Penting: Pastikan Anda sudah mengaktifkan service database terkait pada tab "Paket" (Packages) di ServBay. Informasi default port, username, dan password database bisa dilihat di panel ServBay atau dokumentasinya. Sebaiknya, untuk keamanan di environment produksi, ganti credential default dan buat user database khusus.
Berikut contoh konfigurasi koneksi database pada NestJS menggunakan ORM/driver populer. Umumnya konfigurasi ini ditempatkan di modul utama (AppModule
) atau modul database khusus.
Koneksi ke MongoDB
Gunakan modul
@nestjs/mongoose
untuk integrasi dengan MongoDB. Pertama, install dependency yang diperlukan:bashnpm install @nestjs/mongoose mongoose
1Selanjutnya, konfigurasi
MongooseModule
di dalam modul NestJS:typescriptimport { Module } from '@nestjs/common'; import { MongooseModule } from '@nestjs/mongoose'; // ... import lainnya @Module({ imports: [ MongooseModule.forRoot('mongodb://localhost:27017/servbay-nest-app'), // Port default 27017 // ... modul lain ], controllers: [], // ... providers: [], // ... }) export class AppModule {}
1
2
3
4
5
6
7
8
9
10
11
12
13String koneksi default MongoDB di ServBay biasanya adalah
mongodb://localhost:27017/
. Anda bisa membuat databaseservbay-nest-app
melalui MongoDB Compass ataumongosh
jika belum ada.Koneksi ke Redis
Gunakan
@nestjs/redis
. Pasang dependensinya:bashnpm install @nestjs/redis redis @types/redis
1Lalu, konfigurasi
RedisModule
:typescriptimport { Module } from '@nestjs/common'; import { RedisModule } from '@nestjs/redis'; // ... import lainnya @Module({ imports: [ RedisModule.forRoot({ url: 'redis://localhost:6379', // Port default 6379 }), // ... modul lain ], controllers: [], // ... providers: [], // ... }) export class AppModule {}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15Alamat server Redis default ServBay adalah
localhost:6379
.Koneksi ke MariaDB (MySQL compatible)
Untuk MariaDB/MySQL, gunakan
@nestjs/typeorm
. Keduanya kompatibel dengan protokol MySQL. Install dulu dependensi:bashnpm install @nestjs/typeorm mysql2 typeorm
1Lalu konfigurasikan
TypeOrmModule
:typescriptimport { Module } from '@nestjs/common'; import { TypeOrmModule } from '@nestjs/typeorm'; // ... import lainnya @Module({ imports: [ TypeOrmModule.forRoot({ type: 'mariadb', // atau 'mysql' host: 'localhost', port: 3306, // Port default 3306 username: 'root', // Username default MariaDB/MySQL pada ServBay password: 'password', // Password default MariaDB/MySQL pada ServBay database: 'servbay_nest_app', // Buat database ini dulu entities: [], // Array entitas Anda synchronize: true, // Hanya untuk development! Jangan aktifkan di production }), // ... modul lain ], 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
22Catatan: Password default user
root
MariaDB/MySQL di ServBay adalahpassword
. Anda bisa mengelola database dan user melalui client seperti TablePlus, DBeaver, atau MySQL CLI. Untuk keamanan, disarankan mengganti passwordroot
dan membuat user baru khusus aplikasi dengan hak akses minimum.Koneksi ke PostgreSQL
Gunakan
@nestjs/typeorm
juga untuk PostgreSQL. Install:bashnpm install @nestjs/typeorm pg typeorm
1Lalu konfigurasikan koneksi pada modul aplikasi:
typescriptimport { Module } from '@nestjs/common'; import { TypeOrmModule } from '@nestjs/typeorm'; // ... import lainnya @Module({ imports: [ TypeOrmModule.forRoot({ type: 'postgres', host: 'localhost', port: 5432, // Port default 5432 username: 'servbay', // Contoh user default PostgreSQL di ServBay, silakan cek yang sesuai password: 'password', // Password default di ServBay, cek info panel database: 'servbay_nest_app', // Pastikan database sudah dibuat entities: [], // Array entitas aplikasi Anda synchronize: true, // Hanya untuk pengembangan }), // ... modul lain ], 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
22Catatan: User dan password default PostgreSQL pada ServBay bisa saja berbeda antar versi. Cek kembali pada panel atau dokumentasi ServBay (bisa
servbay
ataupostgres
). Untuk keamanan, di lingkungan produksi sebaiknya ganti credential default dan gunakan user dengan izin minimum. Database dapat dibuat menggunakan client PostgreSQL seperti TablePlus, DBeaver, ataupsql
.
Kesimpulan
Lewat panduan ini, Anda telah mempelajari cara memanfaatkan ServBay di macOS untuk membuat, menjalankan, dan mengakses proyek NestJS secara lokal dengan cepat. Lingkungan Node.js bawaan ServBay, konfigurasi situs yang mudah (terutama feature reverse proxy), serta dukungan database yang lengkap, sangat membantu dalam pengembangan dan pengujian aplikasi NestJS. Anda dapat dengan mudah berpindah antara development dan production mode, mengakses aplikasi menggunakan domain custom yang aman lewat HTTPS, serta mengintegrasikan layanan database lokal yang tangguh dari ServBay.