Een Koa.js-project bouwen en uitvoeren met ServBay
ServBay is een lokale webontwikkelomgeving voor macOS en Windows. Het biedt een geïntegreerde toolset voor ontwikkelaars, inclusief een Node.js-runtime en diverse databases. In dit artikel lees je hoe je efficiënt jouw Koa.js-project opzet, uitvoert en beheert dankzij ServBay.
Wat is Koa.js?
Koa.js is een next-gen webframework gebouwd op Node.js, ontwikkeld door het Express.js-team. Het staat bekend om zijn eenvoud, expressiviteit en krachtige featureset, waardoor het ideaal is voor zowel webapplicaties als API's. Koa.js benut de voordelen van moderne JavaScript, vooral de async/await
-syntaxis. Dit maakt asynchrone operaties en middleware veel eenvoudiger, met overzichtelijke en onderhoudbare code als resultaat.
Belangrijkste features van Koa.js
- Gebouwd op async/await: Het framework is ontworpen rondom
async/await
voor intuïtieve asynchrone flow control. - Lichtgewicht kern: Koa heeft een compacte kernel met alleen basisfunctionaliteit, die je uitbreidt via modulaire middleware.
- Krachtige middleware: Dankzij een cascade-mechanisme is het verwerken van requests helder en flexibel.
- Geoptimaliseerd voor web: Het is gericht op web en API-ontwikkeling en biedt geen overbodige functies.
Met Koa.js bouw je als ontwikkelaar sneller high-performance, onderhoudbare webservices.
De Koa.js-ontwikkelomgeving opzetten met ServBay
ServBay biedt Node.js-ontwikkelaars een gebruiksklare omgeving, uitgerust met de runtime en databaseservices. Via de handige Website-functie kun je jouw lokale Koa.js-project benaderen via een aangepaste domeinnaam en SSL-certificaat.
Vereisten
Voordat je begint, controleer je het volgende:
- Installeer ServBay: Download en installeer de nieuwste ServBay van de officiële website.
- Node.js-pakket installeren: Open ServBay, ga naar het Packages-beheer, en installeer de gewenste Node.js-versie. Zo niet, selecteer en installeer deze.
- Basiskennis ServBay: Leer hoe je services start/stop en een Website beheert in ServBay.
Een Koa.js-project maken
We werken in de door ServBay aanbevolen webroot: /Applications/ServBay/www
.
Projectdirectory initialiseren
Open de Terminal, navigeer naar ServBay's webroot, maak een nieuwe map aan (bijv.
servbay-koa-app
), ga naar die map, en initialiseer een Node.js-project:bashcd /Applications/ServBay/www mkdir servbay-koa-app cd servbay-koa-app npm init -y
1
2
3
4npm init -y
maakt snel een standaardpackage.json
aan.Koa.js installeren
Installeer Koa.js (en eventueel de types, als je TypeScript gebruikt):
bashnpm install koa # Voor TypeScript kun je ook type-definities installeren # npm install @types/koa --save-dev
1
2
3Hoofdapplicatiebestand maken
Maak in de folder
servbay-koa-app
een bestandapp.js
en voeg deze eenvoudige Koa.js-code toe:javascriptconst Koa = require('koa'); const app = new Koa(); // Middleware: logt verzoekinformatie 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: verwerkt root-verzoeken app.use(async ctx => { ctx.body = 'Hello from ServBay Koa.js App!'; }); // Definieert poort, voorkeur voor PORT-omgevingvariabele const port = process.env.PORT || 3000; // Start de HTTP-server 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
24Deze code maakt een simpele Koa-app met twee middleware: één voor logging en één die op
/
reageert met "Hello from ServBay Koa.js App!". De app luistert op de inPORT
bepaalde poort of standaard op 3000.
Schakelen naar ontwikkelmodus
Tijdens het ontwikkelen draai je een lokale Node.js-server en open je je Koa.js-app via ServBay's Website-functie.
Koa.js-ontwikkelserver starten
Ga in Terminal naar je projectmap
servbay-koa-app
en startapp.js
met node. Om gespetter op poorten te voorkomen en ServBay beter te configureren, neem bijv. poort8585
:bashcd /Applications/ServBay/www/servbay-koa-app PORT=8585 node app.js
1
2Je ziet nu een melding als
Koa.js server running on http://localhost:8585
— de server draait en luistert op poort 8585. Laat dit Terminal-venster open staan om je server actief te houden.ServBay Website reverse proxy instellen
Om je Koa.js-app te benaderen via een eigen domein, stel je in ServBay een Website met reverse proxy in:
- Open ServBay.
- Ga naar de Website-sectie.
- Links onderaan, klik op het
+
-symbool voor een nieuw site. - Vul de configuratie in:
- Naam:
ServBay Koa.js Dev Site
- Domein:
servbay-koa-dev.servbay.demo
(domeinnaam op.servbay.demo
krijgt automatisch een SSL-certificaat) - Type: Kies
Reverse Proxy
- IP-adres:
127.0.0.1
(lokale Node.js-proces) - Poort:
8585
(waar Koa.js op draait) - Document Root: Dit is niet belangrijk voor reverse proxy; leeg laten of pad invullen.
- Naam:
- Opslaan.
- Klik op "toepassen" als ServBay hierom vraagt.
ServBay past nu automatisch je hosts-bestand aan zodat
servbay-koa-dev.servbay.demo
naar127.0.0.1
verwijst, en stuurt al het verkeer vanuit die domeinnaam via haar eigen webserver (Caddy/Nginx) door naar poort 8585. Door.servbay.demo
te gebruiken, ontvang je een vertrouwd SSL-certificaat via ServBay User CA, en heb je veilige HTTPS-toegang.Meer details vind je in de officiële ServBay-documentatie: Een Node.js-ontwikkelwebsite toevoegen (kies Engelse documentatie).
Koa.js-ontwikkelsite openen
Open je browser en ga naar
https://servbay-koa-dev.servbay.demo
.Zie je de tekst "Hello from ServBay Koa.js App!"? Gefeliciteerd: je ontwikkelserver is via ServBay bereikbaar via een custom domein met HTTPS. Na wijzigingen aan
app.js
en een herstart van Node.js zie je direct het resultaat in je browser.
Productieversie simuleren
Als je een productieomgeving nabootst, gebruik je een andere poort, omgevingsvariabelen en eventueel een afwijkende startmethode. Ook hier biedt ServBay's reverse proxy uitkomst.
Productieserver starten (simulatie)
Stop een eventuele actieve dev-server en start in een nieuw Terminalvenster je app op poort
8586
, gebruikmakend van de productie-omgeving:bashcd /Applications/ServBay/www/servbay-koa-app PORT=8586 NODE_ENV=production node app.js
1
2Je app draait nu op poort 8586 in ‘production’-modus.
Reverse proxy voor productiesite instellen
Maak opnieuw een Website in ServBay:
- Open ServBay, ga naar Website.
- Klik op het
+
-symbool. - Vul in:
- Naam:
ServBay Koa.js Prod Site
- Domein:
servbay-koa-prod.servbay.demo
(of een eigen domein via ACME/Let's Encrypt) - Type:
Reverse Proxy
- IP Adres:
127.0.0.1
- Poort:
8586
- Document Root: leeg of pad invullen.
- Naam:
- Sla op en pas toe.
Een
.servbay.demo
-domein gebruikt de ServBay User CA; met een publiek domein kun je via ACME/Let's Encrypt een gratis certificaat ophalen — ideaal voor echte productie. Raadpleeg de ServBay-documentatie over SSL voor websites.Productiesite (simulatie) openen
Navigeer in je browser naar
https://servbay-koa-prod.servbay.demo
.Je ziet dezelfde pagina als in de dev-omgeving, maar nu handelt een Node.js-proces op poort 8586 het verkeer af via ServBay's reverse proxy.
Databaseverbindingen
ServBay biedt standaard MongoDB, Redis, MariaDB (MySQL compatible) en PostgreSQL. Ze draaien lokaal en zijn via localhost
te benaderen, waardoor integratie in je Koa.js-project eenvoudig is.
Hieronder vind je voorbeelden voor het verbinden met ServBay’s databases. Controleer in ServBay’s Packages dat de betreffende database geïnstalleerd en actief is!
MongoDB verbinden
Installeer binnen je Koa.js-project de MongoDB-driver (
mongoose
ofmongodb
):bashcd /Applications/ServBay/www/servbay-koa-app npm install mongoose # Of npm install mongodb
1
2Voeg nu de verbindingscode toe aan bijvoorbeeld
app.js
:javascript// MongoDB-verbinding via Mongoose const mongoose = require('mongoose'); // ServBay’s MongoDB vereist standaard geen authenticatie; zelf naam database kiezen 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)); // Tip: In praktijk plaats je de connectiecode in de opstartlogica, // en start je de server pas na een succesvolle verbinding.
1
2
3
4
5
6
7
8
9
10
11
12
13MongoDB van ServBay draait op poort
27017
en vereist standaard geen wachtwoord of gebruikersnaam. Noem je database direct; deze wordt automatisch aangemaakt.Redis verbinden
Installeer de Redis client-library:
bashcd /Applications/ServBay/www/servbay-koa-app npm install redis
1
2Maak verbinding met Redis:
javascript// Verbinden met Redis via redis-client const redis = require('redis'); // Standaard connectie naar localhost:6379 const client = redis.createClient({ url: 'redis://localhost:6379' // ServBay standaard Redis-poort is 6379 }); client.on('connect', () => { console.log('Connected to Redis'); }); client.on('error', (err) => { console.error('Redis connection error:', err); }); // Start de connectie client.connect(); // Let op: In echte apps wacht je op een succesvolle connectie // voordat je Redis-operaties uitvoert, bijv. met async/await op client.connect()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21Redis in ServBay draait op poort
6379
en vereist standaard geen wachtwoord.MariaDB (of MySQL) verbinden
MariaDB is een MySQL-variant met compatibele API. ServBay levert MariaDB, maar je kunt hem als MySQL-compatibel gebruiken.
Installeer de MariaDB driver:
bashcd /Applications/ServBay/www/servbay-koa-app npm install mariadb # Of npm install mysql2 (aanbevolen voor compatibiliteit)
1
2Verbinden met
mariadb
:javascript// Verbinden met MariaDB via mariadb-client const mariadb = require('mariadb'); // Standaard root-wachtwoord in ServBay is 'password' const pool = mariadb.createPool({ host: 'localhost', user: 'root', password: 'password', database: 'servbay_koa_app', // Zorg dat deze database bestaat connectionLimit: 5 }); pool.getConnection() .then(conn => { console.log("Connected to MariaDB"); conn.release(); // Connection terug in pool }) .catch(err => { console.error("MariaDB connection error:", err); }); // Let op: Connecties uit de pool zijn async
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22Verbinden met
mysql2
(aanbevolen):javascript// Verbinden met MariaDB/MySQL via mysql2-client const mysql = require('mysql2/promise'); // Promise-versie // Root-wachtwoord standaard 'password' const pool = mysql.createPool({ host: 'localhost', user: 'root', password: 'password', database: 'servbay_koa_app', // Zorg dat database bestaat waitForConnections: true, connectionLimit: 10, queueLimit: 0 }); pool.getConnection() .then(conn => { console.log("Connected to MariaDB/MySQL using mysql2"); conn.release(); // Connection terug in pool }) .catch(err => { console.error("MariaDB/MySQL connection error:", err); }); // Tip: Het root-wachtwoord kun je in de ServBay GUI-database-instellingen bekijken/wijzigen. // Gebruik in echte projecten bij voorkeur omgevingsvariabelen voor wachtwoorden!
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 van ServBay draait op poort
3306
. Het standaardwachtwoord voorroot
vind je in ServBay’s databasebeheer. Soms zul je eerst de databaseservbay_koa_app
aan moeten maken via ServBay of een client (zoals TablePlus, DBeaver, e.d.).PostgreSQL verbinden
Installeer de PostgreSQL-driver:
bashcd /Applications/ServBay/www/servbay-koa-app npm install pg
1
2Verbinden met PostgreSQL:
javascript// Verbinden met PostgreSQL via pg-client const { Pool } = require('pg'); // Standaard PostgreSQL user is 'user', wachtwoord is 'password' const pool = new Pool({ user: 'user', // Standaard ServBay-gebruiker host: 'localhost', database: 'servbay_koa_app', // Zorg dat deze bestaat password: 'password', // Standaard password port: 5432, // Standaard ServBay PostgreSQL-poort }); pool.connect((err, client, done) => { if (err) { console.error('PostgreSQL connection error:', err); return; } console.log('Connected to PostgreSQL'); client.release(); // Connection terug in pool }); // Tip: Het wachtwoord voor 'user' vind je in de ServBay GUI-instellingen. // Gebruik geen hardcoded wachtwoorden in productie!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23PostgreSQL draait op poort
5432
. Het standaardwachtwoord en gebruikersnaam zijn in de ServBay interface beschikbaar. Mogelijks moet je de databaseservbay_koa_app
eerst aanmaken.
Databasebeheer in ServBay
Je kunt databases niet alleen via code benaderen, maar ook beheren met desktoptools. ServBay’s databases luisteren lokaal (127.0.0.1
/ localhost
) op hun standaardpoort. Gebruik de in ServBay weergegeven credentials.
- Wachtwoord bekijken/wijzigen: In ServBay kun je bij elke database via het instellingen-icoontje de standaard (root/user) wachtwoorden raadplegen of aanpassen.
- Database/gebruiker aanmaken: Gebruik tools als TablePlus, DBeaver, pgAdmin, MongoDB Compass en verbind met de ServBay databases om nieuwe databases, users of tabellen te creëren.
Belangrijke aandachtspunten
- Poortconflicten: Zorg dat de door jou gekozen poorten (zoals 8585/8586) niet in gebruik zijn door andere processen.
- Status ServBay: Controleer dat ServBay plus de benodigde Node.js- en databaseservices actief zijn.
- Hosts-bestand: ServBay beheert automatisch het
hosts
-bestand, maar bij problemen kun je controleren in/etc/hosts
of de domeinen correct zijn toegevoegd. - Firewall: Laat de macOS-firewall of eventuele externe firewalls niet ServBay of Node.js blokkeren.
- Logging: Raadpleeg ServBay’s logsectie plus de output in de terminal voor debugging bij problemen.
Veelgestelde vragen (FAQ)
Vraag: Waarom ServBay’s reverse proxy gebruiken voor mijn Koa.js-project?
Antwoord: Reverse proxy via ServBay's Website biedt:
- Productie-nabootsing: Werken met een eigen domein (zoals
.servbay.demo
of je eigen domein) komt dichter in de buurt van ‘echte’ online demo’s. - SSL-ondersteuning: ServBay regelt automatische SSL-certificaten (ServBay User CA/Let's Encrypt) zodat je HTTPS direct test.
- Centrale sitebeheer: Beheer al je lokale sites in ServBay op één plek.
- Poorthiding: Externe bezoekers en browsers gebruiken de standaardpoorten 80/443, achter de schermen wordt alles doorgezet naar bijvoorbeeld een Node.js-app op een hoge poort.
- Productie-nabootsing: Werken met een eigen domein (zoals
Vraag: Kan ik mijn Koa.js-app direct via
localhost:PORT
testen, zonder reverse proxy?Antwoord: Ja, direct via
http://localhost:PORT
werkt ook. Dan mis je echter custom domeinnamen, automatische SSL, logging en andere ServBay-websitemogelijkheden. Wil je een workflow die dichter bij echt live deployen staat, gebruik dan ServBay’s reverse proxy.Vraag: Wat is het standaard databasewachtwoord in ServBay en hoe wijzig ik dit?
Antwoord: De standaard databasewachtwoorden vind je in ServBay onder Database. Klik op het instellingenicoontje bij MariaDB of PostgreSQL voor het huidige wachtwoord. Je kunt het daar ook aanpassen. Tip: Verander altijd uit veiligheid het standaard wachtwoord!
Samenvatting
Na deze gids kun je ServBay inzetten om een Koa.js-ontwikkelomgeving op macOS op te zetten. Je hebt een basis Koa.js-app gemaakt, ServBay’s Website-functie gebruikt om via reverse proxy en HTTPS je lokale site toegankelijk te maken, en geleerd hoe je verbindt met de meegeleverde databases.
ServBay biedt Node.js-ontwikkelaars een geïntegreerde, eenvoudig te beheren lokale omgeving, zodat jij je kunt focussen op programmeren en niet op infrastructuur. Zet ServBay slim in om je productiviteit en ontwikkelplezier te verhogen!