NuajLens · Deployment

Deploying NuajLens

NuajLens is a self-hosted vulnerability scanner that installs from one package. Inside it are the web console, the datastore, the scheduler, the report engine and the nuclei scan engine itself — so there is no database to provision, no web server to configure and nothing fetched from the network while it installs. It runs under systemd as its own service account, keeps every piece of state in one directory, and serves its console over HTTPS from the first time it starts.

Requirements

A Linux server
and two gigabytes.

NuajLens deployment requirements
Operating system Linux with systemd — Debian, Ubuntu, RHEL, Fedora, Rocky, Alma and openSUSE
Architectures x86_64 and aarch64
Packaging deb and rpm, installed and upgraded by name through your own package manager
Memory 2 GB
Database None to provision — the datastore is part of the package
Web server None to configure — the console is served by the service itself, over HTTPS on port 8443. Your own certificate, or a reverse proxy in front, are both supported
Network at install Nothing is fetched. An air-gapped host installs identically
Scan engine The open-source nuclei engine, bundled in the package and read-only to the service
State One directory, /opt/nuajlens
Service account Created by the package. The systemd unit is hardened and does not run as root
Multi-customer One install serves a book of clients — assets, schedules and reports are kept per customer
Price Free of charge, commercial use included. No licence key, no seat count, no trial timer

The package

Everything it needs
is already inside it.

Installing a scanner should not mean trusting a chain of downloads at the moment you are least able to inspect them. Your own package manager installs one file, and that file is complete.

What it installs

One Go binary holding the web console, the datastore, the scheduler and the report engine — and a matching nuclei binary beside it, owned by dpkg or rpm.

What it configures

The service account, a hardened systemd unit, and a self-signed TLS certificate — generated before the service is started, so the console is not served in plaintext during setup.

What it does not do

At install time it does not reach the network, add a repository of its own, or run a scan — and the only port it opens is the console you are about to log into.

State

Backup, migration and removal
are each one path.

/opt/nuajlens/
├── bin/          nuajlens + scan engine
├── nuajlens.conf configuration
└── data/         db, scan logs, templates, cert

Copy that directory and you have copied the install: the asset inventory, the schedules, the scan history, the triage decisions your team made and the certificate the console is served with. Move it to another host with the same package installed and the console comes up where you left it.

Removing the package leaves the directory in place, so a reinstall finds your scan history again. Purging takes everything — which is the point of having exactly one path to purge.

Air-gapped hosts

The install that fetches nothing
works anywhere.

Scanners are often deployed exactly where downloads are not welcome: a management network, a segment behind a jump host, a site whose whole point is that it has no route out. Because every part of NuajLens — the scan engine and its templates included — is inside the package, such a host installs the same way as any other, and the first scan can run before the machine has ever spoken to the internet.

What an isolated host gives up is updates arriving by themselves. Templates change daily and the engine every few weeks, and both normally update independently of the package. On a disconnected host they advance when the package does — and engine-updates = off makes that explicit: it pins the install to the bundled binary and makes the API refuse version changes, restoring the property that every executable the service can run is read-only to it.

Engine updates

A download becomes the engine
only after it proves itself.

On a connected host the scan engine can move forward without waiting for a package release. What arrives from the network still has to earn it. Before a fetched build can become the active engine it must:

  • arrive over HTTPS — a redirect off TLS aborts the download;
  • match the SHA-256 published in the release checksums;
  • unpack under a size ceiling, writing only the path intended;
  • report a version matching the release tag;
  • parse the installed template set.

Only then does the active pointer move, by atomic rename — a scan starting mid-swap sees one version or the other, never a broken link. Any failure discards the download and leaves the running engine untouched. The bundled engine is never garbage-collected and the service cannot write to it, so a rollback target exists even on a host that has been offline since the day it was installed. Version changes are refused while a scan is in flight, and every scan records the engine that produced it.

Access

Free. The download
is by request.

There is no licence key, no seat count and no trial timer. NuajLens is licensed rather than public domain, and builds are served from download.nuaj.com, which is opened per organisation.

1

Read the licence

The End User Licence Agreement is the whole agreement, and it is worth the ten minutes. NuajLens is supplied free of charge and without warranty, and you are responsible for holding authorisation to test every asset you register.

2

Email the helpdesk

One email naming your organisation, your distribution and your architecture. Access is usually granted the same business day.

3

Install by name

The reply carries the repository setup — one keyring and one source line, added once per host. From then on apt install nuajlens or dnf install nuajlens, and your package manager verifies every install and upgrade against that key.

Questions

Before you install it.

What does NuajLens need to run?
A Linux server with systemd and 2 GB of RAM. Packages are published as deb and rpm for x86_64 and aarch64, and the distributions we build for are Debian, Ubuntu, RHEL, Fedora, Rocky, Alma and openSUSE. There is no database to provision, no web server to configure and no container runtime to install: the package carries the console, the datastore, the scheduler, the report engine and the scan engine.
Can NuajLens be installed on an air-gapped server?
Yes, and the install is identical. Nothing is fetched at install time — the nuclei scan engine and its templates are already inside the package — so a host with no route to the internet installs exactly as a connected one does. What such a host gives up is engine and template updates arriving on their own, which is a deliberate trade rather than a limitation to work around.
Where does NuajLens keep its data?
One directory: /opt/nuajlens, holding the binaries, the configuration file and a data directory with the database, scan logs, templates and the TLS certificate. Backup, migration and removal are each a single path. Removing the package leaves that directory, so a reinstall finds your scan history again; purging it takes everything.
Is the console served over HTTPS?
Yes, from the first time it starts, on port 8443. The package generates a self-signed certificate before starting the service rather than after, so there is no window in which the console is served in plaintext while you are setting it up. Replace the certificate with your own, or put a reverse proxy in front — both are supported.
How does the scan engine get updated?
A fetched engine has to prove itself before it becomes the active one: it must arrive over HTTPS with no redirect off TLS, match the published SHA-256, unpack under a size ceiling into the intended path only, report the version its release tag claims, and parse the installed template set. Only then does the active pointer move, by atomic rename. Any failure discards the download and leaves the running engine untouched — and the bundled engine, which the service cannot write to, is always there to fall back to.
Can one NuajLens install serve several customers?
Yes. Assets, schedules and reports are kept per customer, so a provider can run one install across a book of clients and send each of them their own report. NuajLens is free for commercial use, so charging for that work needs no licence from us.
How do I get the NuajLens packages?
NuajLens is free of charge and there is no licence key, but builds are served from download.nuaj.com, which is opened per organisation. Read the licence, email our helpdesk, and access is usually granted the same business day; the reply carries the repository setup — one keyring and one source line — after which NuajLens installs and upgrades by name through your own package manager.