Membuat dan Menjalankan Proyek Koa.js dengan ServBay
ServBay adalah lingkungan pengembangan web lokal khusus untuk macOS yang terintegrasi dengan berbagai paket perangkat lunak yang sering digunakan developer, termasuk runtime Node.js dan sejumlah database. Artikel ini akan memandu Anda memanfaatkan kemudahan yang disediakan ServBay untuk membuat, menjalankan, dan mengelola proyek Koa.js Anda dengan cepat.
Apa itu Koa.js?
Koa.js adalah framework web generasi berikutnya berbasis Node.js yang dikembangkan oleh tim Express.js. Framework ini dikenal karena kesederhanaan, ekspresifitas, serta kumpulan fitur yang kuat, sehingga sangat cocok untuk membangun aplikasi web dan API. Koa.js memanfaatkan fitur JavaScript modern, khususnya sintaks async/await
, sehingga proses penulisan kode asynchronous dan middleware jadi jauh lebih mudah dan jelas untuk dipelihara.
Fitur Utama Koa.js
- Berbasis async/await: Desain inti sepenuhnya memanfaatkan
async/await
, sehingga pengelolaan alur asynchronous jadi lebih intuitif. - Core ringan: Library inti Koa sangat ramping, hanya berisi fungsi dasar, dan fitur lainnya dapat ditambahkan lewat middleware modular.
- Middleware powerful: Mekanisme middleware cascading memudahkan alur pemrosesan request secara fleksibel dan jelas.
- Fokus pada web: Dikhususkan untuk pengembangan aplikasi web dan API tanpa fitur tambahan yang tidak perlu.
Dengan Koa.js, developer dapat membangun layanan web yang performa tinggi dan mudah dipelihara secara lebih efisien.
Menyiapkan Lingkungan Pengembangan Koa.js dengan ServBay
ServBay menyediakan lingkungan siap pakai untuk pengembang Node.js, sudah dilengkapi runtime Node.js dan berbagai layanan database populer. Dengan fitur Website di ServBay, Anda bisa dengan mudah mengakses proyek Koa.js lokal melalui domain khusus dan sertifikat SSL.
Prasyarat
Sebelum memulai, pastikan Anda telah melakukan berikut:
- Instalasi ServBay: Kunjungi situs resmi ServBay untuk mengunduh dan memasang ServBay versi terbaru.
- Instal paket Node.js: Buka aplikasi ServBay, masuk ke menu Packages, dan pastikan versi Node.js yang diinginkan sudah terpasang. Jika belum, pilih dan instal yang dibutuhkan.
- Pahami operasi dasar ServBay: Pelajari cara memulai/menghentikan layanan serta mengelola Website di ServBay.
Membuat Proyek Koa.js
Direktori root website yang disarankan ServBay adalah /Applications/ServBay/www
untuk penyimpanan file proyek.
Inisialisasi Folder Proyek
Buka aplikasi Terminal, navigasikan ke direktori root ServBay, lalu buat folder proyek baru (misalnya
servbay-koa-app
). Masuk ke folder tersebut dan inisialisasi proyek Node.js:bashcd /Applications/ServBay/www mkdir servbay-koa-app cd servbay-koa-app npm init -y
1
2
3
4Perintah
npm init -y
akan membuat filepackage.json
default secara cepat.Instal Koa.js
Di direktori proyek
servbay-koa-app
, instal Koa.js dan, bila menggunakan TypeScript, type definition-nya:bashnpm install koa # Jika memakai TypeScript, install type definition # npm install @types/koa --save-dev
1
2
3Buat File Entry Aplikasi
Di dalam folder
servbay-koa-app
, buat fileapp.js
dan tambahkan kode aplikasi Koa.js sederhana:javascriptconst Koa = require('koa'); const app = new Koa(); // Middleware: Mencatat informasi permintaan app.use(async (ctx, next) => { const start = Date.now(); await next(); const ms = Date.now() - start; console.log(`${ctx.method} ${ctx.url} - ${ms}ms`); }); // Middleware: Menangani permintaan pada path root app.use(async ctx => { ctx.body = 'Hello from ServBay Koa.js App!'; }); // Mendefinisikan port, mengutamakan environment variable PORT const port = process.env.PORT || 3000; // Menjalankan server HTTP app.listen(port, () => { console.log(`Koa.js server running on http://localhost:${port}`); console.log(`Project path: ${__dirname}`); });
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24Kode ini membuat aplikasi Koa dasar dengan dua middleware: satu untuk logging waktu dan url request, satu lagi untuk merespons permintaan pada path
/
dengan teks "Hello from ServBay Koa.js App!". Aplikasi akan berjalan pada port yang ditentukan oleh variabel lingkunganPORT
atau 3000 secara default.
Masuk ke Mode Pengembangan
Dalam mode pengembangan, biasanya Anda menjalankan proses Node.js lokal untuk menjalankan aplikasi Koa.js, lalu mengaksesnya dengan fitur Website pada ServBay.
Menjalankan Server Koa.js Mode Pengembangan
Buka Terminal, masuk ke folder proyek
servbay-koa-app
, lalu jalankan fileapp.js
dengan perintah node. Agar tidak terjadi bentrok port dan mudah dikonfigurasi lewat ServBay, Anda bisa menggunakan port khusus seperti8585
:bashcd /Applications/ServBay/www/servbay-koa-app PORT=8585 node app.js
1
2Terminal akan menampilkan pesan seperti
Koa.js server running on http://localhost:8585
, artinya server berjalan pada port8585
. Biarkan terminal tetap terbuka agar server tetap berjalan.Mengonfigurasi Reverse Proxy Website di ServBay
Agar situs Koa.js yang berjalan di
localhost:8585
dapat diakses melalui domain khusus, lakukan konfigurasi Website dan reverse proxy di ServBay:- Buka aplikasi ServBay.
- Masuk ke tab Website.
- Klik tombol
+
di kiri bawah untuk menambah Website baru. - Atur konfigurasi website sebagai berikut:
- Name:
ServBay Koa.js Dev Site
- Domain:
servbay-koa-dev.servbay.demo
(domain dengan akhiran.servbay.demo
otomatis mendapat sertifikat SSL dari ServBay) - Type: pilih
Reverse Proxy
- IP Address:
127.0.0.1
(mengarah ke proses Node.js lokal) - Port:
8585
(mengarah ke port aplikasi Koa.js) - Document Root: Untuk reverse proxy bisa kosong atau isi dengan path proyek
/Applications/ServBay/www/servbay-koa-app
.
- Name:
- Klik Save.
- Jika muncul pemberitahuan untuk apply/perubahan, klik apply.
Setelah konfigurasi, ServBay secara otomatis memperbarui file hosts lokal Anda agar
servbay-koa-dev.servbay.demo
mengarah ke127.0.0.1
, dan menggunakan server built-in Caddy atau Nginx untuk melakukan reverse proxy ke port8585
. Selain itu, dengan domain.servbay.demo
, ServBay User CA akan menerbitkan dan mengautentikasi sertifikat SSL otomatis; artinya, Anda dapat mengakses via HTTPS secara aman.Untuk panduan lebih detail, silakan lihat dokumentasi ServBay pada bagian Menambah Website Node.js Development (pilih versi bahasa Inggris).
Mengakses Website Koa.js Development
Buka browser dan kunjungi
https://servbay-koa-dev.servbay.demo
.Jika konfigurasi telah benar, Anda akan melihat halaman dengan tulisan "Hello from ServBay Koa.js App!". Artinya, Anda berhasil mengakses server Koa.js lokal lewat fitur Website ServBay. Bila Anda mengubah file
app.js
dan me-restart proses Node.js, cukup refresh browser untuk melihat perubahan.
Deploy Versi Produksi (Simulasi)
Untuk simulasi environment produksi, Anda dapat menjalankan aplikasi pada port yang berbeda, menggunakan environment variable yang relevan, atau mode start yang lebih sesuai produksi. Reverse proxy ServBay tetap dapat digunakan di skenario ini.
Menjalankan Server Koa.js Produksi (Simulasi)
Di jendela Terminal baru, hentikan server development sebelumnya (jika masih berjalan), dan jalankan aplikasi dalam mode produksi simulasi, misalnya pada port
8586
dan mengatur environment variableNODE_ENV
:bashcd /Applications/ServBay/www/servbay-koa-app PORT=8586 NODE_ENV=production node app.js
1
2Hal ini menjalankan instance Koa.js di port
8586
dalam mode simulasi produksi.Konfigurasi Reverse Proxy Website (Simulasi Produksi) di ServBay
Buat Website baru untuk simulasi produksi dengan cara serupa di ServBay:
- Buka ServBay, ke tab Website.
- Klik
+
untuk menambah Website baru. - Isi dengan:
- Name:
ServBay Koa.js Prod Site
- Domain:
servbay-koa-prod.servbay.demo
(atau domain asli Anda; jika memakai domain sendiri, gunakan fungsi ACME/Let's Encrypt pada ServBay agar dapat sertifikat SSL gratis) - Type: pilih
Reverse Proxy
- IP Address:
127.0.0.1
- Port:
8586
(mengarah ke port Koa Producction Simulasi) - Document Root: bisa kosong atau isi path proyek.
- Name:
- Klik Save dan Apply.
Domain
.servbay.demo
akan tetap memakai sertifikat User CA ServBay. Jika memakai domain publik milik Anda, ServBay mendukung pengajuan/kelola sertifikat SSL/TLS gratis lewat protokol ACME (misal Let's Encrypt), untuk simulasi environment produksi nyata. Untuk penjelasan lebih lanjut, lihat dokumentasi ServBay tentang Mengamankan Website dengan SSL.Mengakses Website Koa.js Produksi (Simulasi)
Buka browser dan kunjungi
https://servbay-koa-prod.servbay.demo
.Halaman yang tampil harus sama dengan environment development, hanya saja request kini dialihkan oleh ServBay lewat reverse proxy ke proses Node.js pada port
8586
.
Koneksi ke Database
ServBay terintegrasi dengan beberapa sistem database populer seperti MongoDB, Redis, MariaDB (kompatibel MySQL), dan PostgreSQL. Dalam proyek Koa.js Anda, menghubungkan database sangat mudah karena semua servis berjalan secara lokal dan dapat diakses dengan localhost
menggunakan konfigurasi default.
Berikut contoh kode untuk menghubungkan Node.js ke database yang didukung ServBay. Pastikan Anda telah menginstal database terkait di ServBay (menu Packages) dan servicenya berjalan.
Koneksi ke MongoDB
Instal driver Node.js untuk MongoDB pada folder proyek Anda (misalnya memakai
mongoose
ataumongodb
):bashcd /Applications/ServBay/www/servbay-koa-app npm install mongoose # atau npm install mongodb
1
2Lalu tambahkan kode penghubung di
app.js
atau modul lain:javascript// Menggunakan Mongoose untuk koneksi MongoDB const mongoose = require('mongoose'); // MongoDB ServBay secara default tanpa autentikasi, nama database bisa kustom mongoose.connect('mongodb://localhost:27017/servbay-koa-app', { useNewUrlParser: true, useUnifiedTopology: true }) .then(() => console.log('Connected to MongoDB')) .catch(err => console.error('MongoDB connection error:', err)); // Catatan: Pada aplikasi nyata, kode koneksi biasanya diletakkan pada proses init aplikasi, // dan server baru dijalankan setelah koneksi sukses.
1
2
3
4
5
6
7
8
9
10
11
12
13MongoDB ServBay umumnya berjalan pada port
27017
, dan secara default tidak memerlukan username atau password. Anda bisa menentukan nama database (jika belum ada akan otomatis dibuat).Koneksi ke Redis
Instal library client Redis Node.js:
bashcd /Applications/ServBay/www/servbay-koa-app npm install redis
1
2Lakukan koneksi Redis seperti berikut:
javascript// Menggunakan client redis untuk koneksi ke Redis const redis = require('redis'); // Membuat client Redis, secara default ke localhost:6379 const client = redis.createClient({ url: 'redis://localhost:6379' // ServBay Redis default port 6379 }); client.on('connect', () => { console.log('Connected to Redis'); }); client.on('error', (err) => { console.error('Redis connection error:', err); }); // Hubungkan ke Redis server client.connect(); // Catatan: Pada prakteknya, sebaiknya lakukan operasi setelah koneksi sukses, // misal dengan async/await pada client.connect()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21Redis ServBay default mendengarkan pada port
6379
, tanpa password.Koneksi ke MariaDB (atau MySQL)
MariaDB adalah turunan dari MySQL dengan API kompatibel tinggi. ServBay menyediakan MariaDB yang dapat digunakan sebagaimana MySQL.
Instal driver MariaDB untuk Node.js:
bashcd /Applications/ServBay/www/servbay-koa-app npm install mariadb # atau npm install mysql2 (lebih kompatibel dan direkomendasikan)
1
2Koneksi menggunakan
mariadb
driver:javascript// Menggunakan client mariadb untuk koneksi MariaDB const mariadb = require('mariadb'); // Password root MariaDB default ServBay: 'password' const pool = mariadb.createPool({ host: 'localhost', user: 'root', password: 'password', database: 'servbay_koa_app', // Pastikan DB sudah dibuat atau sesuaikan namanya connectionLimit: 5 }); pool.getConnection() .then(conn => { console.log("Connected to MariaDB"); conn.release(); // Kembalikan koneksi ke pool }) .catch(err => { console.error("MariaDB connection error:", err); }); // Catatan: Pengambilan koneksi pool bersifat asynchronous
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22Atau gunakan
mysql2
(direkomendasikan):javascript// Menggunakan client mysql2 (versi with promise) untuk MariaDB/MySQL const mysql = require('mysql2/promise'); // Password root MariaDB default ServBay: 'password' const pool = mysql.createPool({ host: 'localhost', user: 'root', password: 'password', database: 'servbay_koa_app', // Pastikan DB sudah tersedia waitForConnections: true, connectionLimit: 10, queueLimit: 0 }); pool.getConnection() .then(conn => { console.log("Connected to MariaDB/MySQL using mysql2"); conn.release(); // Kembalikan koneksi ke pool }) .catch(err => { console.error("MariaDB/MySQL connection error:", err); }); // Catatan: Password default root MariaDB bisa dilihat/diubah di menu Database ServBay GUI. // Disarankan untuk tidak menulis password hardcoded; gunakan environment variable untuk produksi.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25MariaDB dari ServBay berjalan di port
3306
. Password default userroot
bisa dicek lewat pengaturan database di aplikasi ServBay. Sebelum koneksi, Anda perlu memastikan databaseservbay_koa_app
telah dibuat (bisa lewat aplikasi klien seperti TablePlus, DBeaver, dll).Koneksi ke PostgreSQL
Instal driver PostgreSQL untuk Node.js:
bashcd /Applications/ServBay/www/servbay-koa-app npm install pg
1
2Hubungkan ke server PostgreSQL:
javascript// Menggunakan client pg untuk PostgreSQL const { Pool } = require('pg'); // User 'user' dan password 'password' adalah default ServBay PostgreSQL const pool = new Pool({ user: 'user', // Pengguna default ServBay host: 'localhost', database: 'servbay_koa_app', // Pastikan database sudah dibuat password: 'password', // Password default port: 5432, // Port PostgreSQL default }); pool.connect((err, client, done) => { if (err) { console.error('PostgreSQL connection error:', err); return; } console.log('Connected to PostgreSQL'); client.release(); // Kembalikan koneksi ke pool }); // Catatan: Password user default dapat dilihat/diubah melalui pengaturan di ServBay GUI. // Hindari menuliskan password secara hardcoded.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23PostgreSQL ServBay default berjalan pada port
5432
. User dan password default tersedia di pengaturan Database ServBay. Anda juga bisa perlu membuat databaseservbay_koa_app
terlebih dahulu.
Mengelola Database di ServBay
Selain lewat kode, database di ServBay bisa dikelola dengan berbagai aplikasi GUI. Semua service database ServBay berjalan di localhost
atau 127.0.0.1
, gunakan port/username/password default yang tampil di GUI ServBay untuk terhubung.
- Melihat/Mengubah password default: Di aplikasi ServBay, temukan database serta ikon settingsnya untuk melihat atau mengubah password user default (
root
MariaDB atauuser
PostgreSQL). - Membuat database/user: Gunakan aplikasi seperti TablePlus, DBeaver, pgAdmin, MongoDB Compass, dsb. Sambungkan ke database ServBay, lalu buat database/user/tabel baru lewat SQL atau GUI.
Catatan Penting
- Bentrokan port: Pastikan port yang Anda pilih untuk aplikasi Koa.js (misal 8585, 8586) tidak dipakai aplikasi lain di sistem.
- Status ServBay: Pastikan aplikasi ServBay serta seluruh paket Node.js dan database yang dibutuhkan dalam keadaan aktif.
- File hosts: ServBay secara otomatis mengatur file
hosts
, tapi jika terjadi masalah resolusi domain, cek apakah ada entri terkait pada/etc/hosts
. - Firewall: Pastikan firewall macOS atau aplikasi firewall lain tidak memblokir koneksi jaringan ServBay atau Node.js.
- Cek log: Bila ada kendala, cek log ServBay (biasa ada di tab log aplikasi ServBay) serta output proses Node.js di terminal untuk diagnosis masalah lebih lanjut.
FAQ (Tanya Jawab Umum)
Tanya: Mengapa perlu memakai reverse proxy pada Website ServBay untuk mengakses proyek Koa.js saya?
Jawab: Reverse proxy (melalui fitur Website ServBay) punya beberapa keuntungan:
- Simulasi produksi: Domain khusus (misal
.servbay.demo
atau domain asli) membuat pengalaman akses mirip website produksi, tidak hanyalocalhost:PORT
. - Dukungan SSL: ServBay bisa otomatis mengelola sertifikat SSL untuk website lokal, sehingga Anda bisa melakukan development dan testing HTTPS.
- Manajemen terpusat: Semua website pengembangan lokal Anda mudah dikelola dalam satu tempat di ServBay.
- Port tersembunyi: Browser/akses luar menggunakan port standar 80/443, sementara internal akan di-forward ke proses Node.js di port tinggi.
- Simulasi produksi: Domain khusus (misal
Tanya: Bolehkah saya akses langsung
localhost:PORT
tanpa reverse proxy ServBay?Jawab: Bisa saja. Jika aplikasi Koa.js Anda berjalan di port (misal 3000 atau port lain), Anda bisa mengakses
http://localhost:PORT
langsung melalui browser. Namun Anda akan kehilangan fitur domain khusus, SSL otomatis, manajemen log, serta fitur lainnya yang disediakan Website ServBay. Untuk pengembangan yang lebih menyerupai produksi, reverse proxy adalah pilihan terbaik.Tanya: Berapa password default database ServBay? Bagaimana cara mengubahnya?
Jawab: Password default database dapat dicek di tab Database aplikasi ServBay. Klik ikon setting pada database (contoh MariaDB atau PostgreSQL), dan lihat pada bagian konfigurasi/informasi username dan password. Anda juga dapat mengubah password di sini. Demi keamanan, selalu disarankan untuk mengubah password default.
Kesimpulan
Dengan panduan ini, Anda telah mempelajari cara men-setup lingkungan pengembangan Koa.js di macOS menggunakan ServBay. Kita membangun aplikasi Koa.js dasar, lalu melalui fitur Website ServBay, mengkonfigurasi reverse proxy sehingga aplikasi bisa diakses langsung memakai domain custom dan HTTPS. Anda juga mempelajari cara menghubungkan aplikasi ke berbagai database populer yang tersedia di ServBay.
ServBay memberikan lingkungan pengembangan lokal terintegrasi dan mudah dikelola untuk developer Node.js, memungkinkan Anda lebih fokus pada penulisan kode daripada konfigurasi environment yang rumit. Manfaatkan fitur-fitur ServBay untuk meningkatkan efisiensi serta produktivitas pengembangan Anda.