Skip to content
docker · firecracker · node · fastify · base-image

Fastify-ready Node rootfs forFirecracker

A Fastify-ready Alpine 3.21 + Node.js 22 LTS Firecracker rootfs for long-lived dashboard-IDE endpoints — baking fastify, undici, zod, and pino so staff VMs boot with the server libraries already on disk.

Baked for instant boot

This is the long-lived deploy rootfs for Node endpoints submitted through the dashboard IDE — week-to-month TTL VMs where paying a build-time npm install is the right tradeoff for instant boot. Quick one-shot Node VMs keep the smaller alpine-node rootfs plus the shared npm-cache.ext4 drive.

  • Runtime — Alpine 3.21 + Node.js 22 LTS + npm.
  • Deployment — staff-side firecracker-ctl-net.
firecracker-node-webImage
Node.js 22 LTSRuntime
FastifyServer lib
TAP/WireGuardNetwork

What it gives you

Features

Fastify stack baked

fastify, @fastify/cors, helmet, static, undici, zod, pino, dotenv, nanoid and more resolved into /usr/lib/node_modules.

Network-ready

ca-certificates, iproute2, and /etc/resolv.conf pointing at 1.1.1.1 and 8.8.8.8 for TAP networking via Gluetun/WireGuard.

cp-entrypoint stage image

Multi-stage Docker build whose final layer ships a cp entrypoint so an in-cluster stage Job copies /rootfs.ext4 onto the rootfs PVC.

Boot init

/init mounts /proc /sys /dev, brings up lo + eth0, exports NODE_PATH, then exec /entrypoint.

Rootfs & ecosystem

Overview

Fastify-ready Node rootfs used by the staff-side Firecracker deployment (firecracker-ctl-net). Built as a multi-stage Docker image whose final layer (alpine 3.21 + /rootfs.ext4) ships a cp entrypoint so the in-cluster stage Job can run the image directly and copy /rootfs.ext4 onto the firecracker rootfs PVC.

This is the long-lived deploy rootfs for Node endpoints submitted through the dashboard IDE — week-to-month TTL VMs where paying a build-time npm install is the right tradeoff for instant boot. Quick one-shot Node VMs keep the smaller alpine-node rootfs plus the shared npm-cache.ext4 drive.

  • Alpine 3.21 + Node.js 22 LTS + npm
  • fastify, @fastify/cors, @fastify/helmet, @fastify/static, undici, zod, pino, pino-pretty, dotenv, nanoid, date-fns, commander, chalk resolved into /usr/lib/node_modules
  • ca-certificates-bundle, ca-certificates, iproute2
  • /etc/resolv.conf with 1.1.1.1 and 8.8.8.8
  • /init mounts /proc, /sys, /dev, brings up lo + eth0, exports NODE_PATH=/usr/lib/node_modules, then exec /entrypoint
ImageRuntimeDeploymentNetworkServer lib baked
alpine-pythonPythonfirecracker-ctl (public quick)noneno
alpine-nodeNodefirecracker-ctl (public quick)noneno
firecracker-python-netPythonfirecracker-ctl-net (staff, short-lived)TAP via Gluetun/WireGuardrequests/httpx
firecracker-python-webPythonfirecracker-ctl-net (staff, long-lived)TAP via Gluetun/WireGuardFastAPI
firecracker-node-web (this)Nodefirecracker-ctl-net (staff, long-lived)TAP via Gluetun/WireGuardFastify

Build & publish

Build & publish

Terminal window
npx nx run firecracker-node-web:container
npx nx run firecracker-node-web:extract

Output: packages/docker/firecracker/node/web/dist/node-web.ext4.

Terminal window
npx nx run firecracker-node-web:container:production

Pushes ghcr.io/kbve/firecracker-node-web:latest and :<version>.

Questions

Frequently asked

What is the Firecracker Node Web rootfs?

It is a Fastify-ready Alpine 3.21 + Node.js 22 LTS rootfs used by the staff-side Firecracker deployment (firecracker-ctl-net). It is built as a multi-stage Docker image whose final layer ships a cp entrypoint so an in-cluster stage Job copies /rootfs.ext4 onto the firecracker rootfs PVC.

Why bake npm dependencies into the image?

This is the long-lived deploy rootfs for Node endpoints submitted through the dashboard IDE, running week-to-month TTL VMs. Paying a build-time npm install is the right tradeoff for instant boot, so fastify, undici, zod, pino, and the @fastify ecosystem ship already resolved into /usr/lib/node_modules.

When should I use alpine-node instead?

Quick one-shot Node VMs use the smaller alpine-node rootfs plus the shared npm-cache.ext4 drive. Use firecracker-node-web only for long-lived staff endpoints that benefit from pre-baked server libraries.