Taal Frankfurt, Duitsland

Deploy Node.js op Nodion

Koppel een repository met een package.json en Nodion bouwt die met het Node.js-buildpack: je dependencies worden uit de lockfile geïnstalleerd, je build-script draait en de server start met je start-script. Zo werken Express, Fastify, Hono en andere Node.js-servers, en ook Bun-projecten. De app draait in Frankfurt, naast een managed PostgreSQL-database als je die nodig hebt.

Op Nodion deployen ›

vanaf 1 EUR / maand

Tot € 15 welkomsttegoed bij registratie

Herkend aan
package.json zonder statisch frontendframework
Start
start-script, anders node server.js, index.js of app.js
Node.js
22, 24 (standaard), 26
Regio
EU Central (Frankfurt)

Node.js stap voor stap deployen

  1. Luister op PORT Nodion stelt PORT in voor het webproces en stuurt het verkeer daarheen. Lees de variabele uit en bind aan 0.0.0.0. Fastify luistert standaard op localhost, dus geef host: '0.0.0.0' mee aan listen. server.js
    const express = require("express");
    
    const app = express();
    app.get("/", (req, res) => res.send("ok"));
    
    const port = process.env.PORT || 3000;
    app.listen(port, "0.0.0.0");
  2. Commit een lockfile en een startscript Commit package-lock.json, yarn.lock, pnpm-lock.yaml of bun.lock; zonder lockfile mislukt de build. Nodion voert het start-script direct uit, dus npm-hooks zoals prestart draaien niet. Zonder startscript krijgen bekende frameworks zoals Nuxt hun eigen standaardcommando; al het andere start met node server.js, index.js of app.js, en als laatste met node .. Dev-dependencies worden na de build verwijderd, dus tools die je tijdens runtime nodig hebt, zoals tsx of een migratie-CLI, horen in dependencies. package.json
    "scripts": {
      "start": "node server.js"
    }
  3. TypeScript: zorg voor een JavaScript-entrybestand Heeft package.json een build-script en bestaat geen van server.js, app.js, index.js, src/server.js, src/index.js of src/app.js, dan behandelt Nodion de repository als statische site en start je server niet. Een TypeScript-server die tsc naar dist/ compileert, ziet er precies zo uit. Zet naast package.json een index.js die de gecompileerde server laadt (het voorbeeld heeft "type": "module" nodig; schrijf in CommonJS require("./dist/server.js")), en laat het startscript naar het gecompileerde bestand wijzen, bijvoorbeeld node dist/server.js, niet naar een devtool. index.js
    import "./dist/server.js";
  4. Maak de app aan en stel variabelen in Maak in het dashboard een applicatie aan vanuit je GitHub-, GitLab-, Bitbucket- of Gitea-repository en kies de branch en de regio EU Central. Variabelen die je buildscript leest, hebben de vlag Build op het tabblad Environment nodig; alle andere bestaan alleen tijdens runtime. Markeer API-sleutels als secret.
  5. Koppel PostgreSQL en voer migraties uit Maak een PostgreSQL-database aan in dezelfde regio en koppel die op het tabblad Environment: vanaf de volgende deployment leest je app DATABASE_URL. Een release:-regel in een Procfile draait één keer per build, na de build en voordat de nieuwe versie start; mislukt die, dan blijft de draaiende versie live. Procfile
    release: npm run migrate
  6. Push om te deployen Elke push naar de branch bouwt een nieuwe release. Het verkeer gaat ernaar over zodra / antwoordt met een 2xx- of 3xx-status. Antwoordt je API met 404 op /, voeg dan een route zoals /health toe en stel die in de app-instellingen in als pad voor de health check.

Goed om te weten

  • Vite in package.json betekent een statische siteStaat vite in dependencies of devDependencies, dan bouwt Nodion de repository als statische site en levert alleen de build-output uit, ook als er een server.js bestaat. Hetzelfde geldt voor Angular, Gatsby, Create React App en Eleventy. Gebruik voor een Node.js-server die ook een Vite-frontend bouwt een Dockerfile.
  • BunMet een bun.lock installeert Nodion je dependencies en draait de build met Bun. De app start nog steeds via het startscript, dus dat script moet Bun aanroepen, bijvoorbeeld "start": "bun run index.ts"; zonder startscript start Nodion de app met node. De regel voor het entrybestand hierboven geldt ook voor Bun-projecten.
  • Queue-workersZet web: node server.js en worker: node worker.js in een Procfile; zonder web:-regel wordt de eerste Procfile-regel anders dan release: het standaardcommando. Voeg daarna op het tabblad Processes een proces met de naam worker zonder poort toe. Valkey in dezelfde regio geeft je queue een REDIS_URL.

Wat Nodion voor je regelt

  • Deploys zonder downtime Push naar je branch en Nodion bouwt een nieuwe release. Het verkeer schakelt over zodra de nieuwe instanties hun health check doorstaan; een mislukte release laat de draaiende versie staan. Apps met een lokaal volume herstarten in plaats daarvan, omdat de schijf bij één instantie hoort.
  • Databases naast de app Managed PostgreSQL, pgvector, MySQL, Valkey en ClickHouse in dezelfde regio. Gekoppelde databases komen binnen als DATABASE_URL, REDIS_URL of CLICKHOUSE_URL.
  • Previews per pull request Zet previews aan en pull requests uit je repository krijgen een eigen app met een eigen URL en nieuwe, lege databases, automatisch of handmatig aangemaakt. Forks en pull requests van bots worden overgeslagen.
  • Workers, cronjobs en schalen Draai workers als extra processen van dezelfde app, plan jobs op het tabblad Cron en schaal elk proces naar maximaal 16 instanties.
  • Releasestap Met buildpacks draait een release:-regel in het Procfile bij elke nieuwe build. Dockerfile-apps, en redeploys of rollbacks naar een eerdere image, gebruiken een releasecommando dat op de app zelf is ingesteld en dat ook voorrang heeft op de Procfile-regel. Bij statische sites draait een releasestap in een image die alleen de gebouwde bestanden bevat.
  • Logs en metrics Build-, release- en runtimelogs plus metrics voor CPU, geheugen, schijf en netwerk van elke instantie in het dashboard.
  • Domeinen en HTTPS Een standaardhostnaam met HTTPS vanaf de eerste deploy; je eigen domeinen krijgen automatisch certificaten.

Verder lezen

Node.js op Nodion: vragen en antwoorden

Waarom wordt mijn Node.js-server als statische site gebouwd?

Nodion heeft een build-script gevonden maar geen van de entrybestanden server.js, app.js of index.js (ook gezocht in src/), of een statisch frontendframework zoals Vite in package.json. Zet naast package.json een index.js die je gecompileerde server laadt; staat Vite in dezelfde package.json, gebruik dan een Dockerfile.

Welke Node.js-versie krijgt mijn app?

Node.js 24, tenzij je zelf een versie kiest. Nodion leest .node-version, .nvmrc en engines.node, in die volgorde. Een bereik wordt omgezet naar de nieuwste passende release, dus "node": ">=20" krijgt Node.js 26; zet 24 in .nvmrc om op 24 te blijven.

Kan ik pnpm, Yarn of Bun gebruiken?

Ja. Nodion kiest de package manager op basis van de lockfile (pnpm-lock.yaml, yarn.lock, bun.lock of package-lock.json) en installeert precies de versies die daarin staan. Bun-projecten hebben daarnaast een startscript nodig dat bun aanroept.

Waar draait mijn Node.js-app?

In de regio EU Central in Frankfurt, Duitsland. Build, registry, de app en de bijbehorende databases, volumes, buckets, logs en metrics blijven in die regio, en de API en het control plane van Nodion worden in Duitsland gehost. Nodion GmbH is gevestigd in Stuttgart.

Kan ik Node.js gebruiken volgens de AVG (GDPR)?

Nodion biedt hiervoor de basis: Nodion GmbH is gevestigd in Stuttgart (Duitsland). Kies je de regio Frankfurt, dan draaien de app, de databases en de volumes in Duitsland. De verwerkersovereenkomst (DPA, art. 28 AVG) sluit je elektronisch af in het dashboard. Of je configuratie aan de AVG voldoet, hangt ook af van hoe je de app instelt en gebruikt.

Wat kost het om Node.js op Nodion te draaien?

Een appinstantie kost vanaf 1 EUR per maand. De configuratie in het kostenoverzicht kost 3.50 EUR per maand: App 2 EUR, PostgreSQL 1.50 EUR. Prijzen zijn excl. btw en worden per seconde gefactureerd, en je kiest grotere formaten of meer instanties wanneer je ze nodig hebt.

Kan ik een eigen domein gebruiken voor mijn Node.js-app?

Ja. Elke app krijgt een standaardhostnaam met HTTPS. Voeg je eigen domein toe op het tabblad Domains van de app; het TLS-certificaat wordt automatisch uitgegeven en vernieuwd.

Geef je agent een cloud.

Ontvang tot € 15 welkomsttegoed bij je registratie.

Doorgaan met GitHub

of met e-mail

Blijf op de hoogte.

Productnieuws, geen spam. Je kunt je altijd weer afmelden.