Node.js hosting panel

Node.js on your own server, with releases you can roll back.

Most hosting panels treat Node.js as a plugin. KLYRN treats it as a site type: deploy from a Git repository as the account user, get an immutable release that is health-checked before nginx switches to it, keep the previous release on disk, and roll back with one command. No PM2, no second supervisor: systemd already provides restarts, sandboxing, cgroup limits and logs.

Deploy

A repository URL and a branch. The rest is the job's.

The URL must be https:// and may not resolve to a private or loopback address. The branch name is validated. Everything else happens as the hosting account's own Unix user, never as root.

klyrn site create app.example.com --type node --runtime 22 \
  --git https://github.com/acme/app --branch main \
  --start "npm start" --build "npm run build"

klyrn app deploy app.example.com --git https://github.com/acme/app
klyrn app rollback app.example.com
klyrn app logs app.example.com --lines 200
  1. CloneA shallow clone of the branch into a new numbered release directory, as the account user.
  2. Install and buildDependencies, then the build command you configured, in the release directory.
  3. Health checkThe release is started and probed on its private port before anything points at it.
  4. Switchnginx is pointed at the new release. The previous one stays on disk.
  5. Roll backOne command switches back to the previous release and restarts the unit.

How it runs

One sandboxed systemd unit per application, behind nginx.

Each application is a service running as the account user with a read-only view of the system, a private /tmp, and memory, CPU and task limits. It listens on the loopback interface only; nginx proxies to it and terminates TLS with a Let's Encrypt certificate.

The isolation model, in full

Runtimes
Official Node.js tarballs under /opt/klyrn/runtimes, verified against nodejs.org's SHA-256 list. klyrn node lists what is installed and available.
Environment
klyrn app env app.example.com KEY=VALUE. Secrets are stored encrypted at rest; revealing them is recorded in the audit log.
Limits
A memory ceiling on the unit, and the account's own CPU, memory and process limits enforced by the kernel through the account's systemd slice.
Logs
journald, read through the panel and klyrn app logs. The logs centre follows them incrementally by cursor.
Health
The health engine watches application units and restarts a crashed one within bounded limits; three restarts in thirty minutes opens the circuit and asks for a human.

Beside it

The same server hosts the PHP and WordPress sites too.

A Node.js application is one of five site types (PHP, static, WordPress, Node.js and reverse proxy) and shares the panel, the backups, the certificate handling and the health engine with the rest.

What it does not do yet.

No deploy keys for private repositories, no deploy-on-push webhook from your Git host, and no rollback to an arbitrary commit: a deploy is a job you or a script starts, and rollback returns to the previous release. Ubuntu 24.04 on x86_64 only. It is a beta. Every limitation, with its reason.

Beta

One email when the paid editions go on sale.

Everything on this page is in the free beta you can install today. This list is for the paid editions and the first stable release.

One email when pricing and the first release are announced. Nothing else.