Vardion

Home / Documentation

Documentation

Updated 2 November 2026

Install Vardion on your own server and connect the tools your team already uses, or start on the hosted console with its first steps.

Contents

Getting Vardion

Ask on the demo form. For the hosted console we open a workspace and invite its owner. For your own server we deliver the release as source with its Docker files. Unpack it into a folder on the server, the Vardion folder below.

Licence

Vardion is used under the licence or service agreement each customer signs. The open-source tools in the image, with their versions and licences, are listed on the console's licences page under Diagnostics. All carry permissive licences, and none is GPL or AGPL.

Install

NeedWhat it takes
SoftwareDocker. The image carries Node and every scanner, so nothing else goes on the server.
SizingThe hosted console, its database included, runs within a 4 GB memory limit. The install test of 30 October 2026 gave first results in 4 minutes 17 seconds on a machine with 12 GB and 14 CPUs for Docker.

An empty server has its first results in under 10 minutes. From the Vardion folder, create the settings file from its example and start the console:

cp .env.example .env
docker compose up -d --build

The console is bound to 127.0.0.1:8080 only. On a server, reach it through an SSH tunnel:

ssh -L 8080:127.0.0.1:8080 user@your-server

Open http://127.0.0.1:8080 and finish first-run setup, which creates the owner account.

First steps

  1. Scope: declare your domains.
  2. Scope > Domain verification: publish the record it shows and press Verify now. It approves no address.
  3. Scans: run discovery, or the express run, which approves the addresses that show no sign of shared infrastructure and leaves the rest for you.
  4. Scope > Approvals: approve the addresses that are yours.
  5. Scans: run the internet-facing scan, then read Findings and the fix plan.
  6. Compliance > Which rules apply: classify the organisation, then apply a package under Programme.

The Getting started page in the account menu takes each part in order. For 3 months of sample data, press Create the demo under Manage workspaces in the workspace menu.

Publish the console

To reach the console over the internet with HTTPS, point a hostname at the server and start it with the bundled Caddy configuration, which fetches the certificate:

VARDION_DOMAIN=console.yourcompany.com docker compose -f docker-compose.yml -f docker-compose.public.yml up -d --build

Scanning stays on when you publish. Check that your hosting provider allows it, and set VARDION_SCAN_DISABLED=1 to turn it off. Until the first account exists, only a health check is served. Make the owner account inside the container:

docker compose exec vardion node src/cli.ts user add <name> --role owner

Two-step verification, password rules and single sign-on are set under Admin.

The hosted console

It runs your security programme from day one, with email and DNS checks and imported scan results. It keeps active scanning switched off and ranks your Tenable, Qualys or Defender findings with a fix plan. Vardion's own port and vulnerability scans need your own server.

First steps on the hosted console

  1. Compliance > Which rules apply: classify the organisation, then apply a package under Programme.
  2. Compliance > Assessments: start a maturity assessment or one from Greece's National Cybersecurity Authority (ΕΑΚ), and give each section to whoever answers it.
  3. Scope: declare your domains. Discovery and the email and DNS checks run without scanning.
  4. Findings > Imported: import a scanner's file or connect Tenable, Qualys or Microsoft Defender. Its findings join the ranked list.

How scanning works

Scan profile

SettingDefault
Port scan (naabu)Connect scan at 133 probes a second across the scan, 1.2 second timeout, 3 attempts per port, about 160 connections open at once
Port depth39 high-risk service ports; the 100 or 1,000 most common ports or every port on request
Vulnerability checks (nuclei)At most 50 requests a second to any one host, lower for hosts you name; up to 25 hosts are checked side by side; templates tagged dos, intrusive or fuzz never run in monitoring scans
Web scan (OWASP ZAP, optional)Passive only: a crawl capped in depth, duration and threads that submits no forms; the active scanner is never called
Industrial control portsRecognised from the port scan and sent no further probe
User-AgentVardion-ASM/1.0 (internal attack-surface monitor) by default, on every web request

Connect your tools

Software inventory

Agents for Linux, Docker and Windows report each host's operating system and packages once a day, with an enrolment token from Settings > Enrolment tokens and the inventory listener open to your hosts (docker-compose.ingest.yml, with TLS). Packages are matched against OSV and NVD.

API

A REST API answers at /api/v1 with a bearer token made under Settings > API. The OpenAPI document describes it.

curl -H "Authorization: Bearer $TOKEN" https://console.yourcompany.com/api/v1/findings

Writes run the console's own forms, with the token's scope.

Webhooks

Under Settings > Webhooks a workspace posts events to an https address, each signed as X-Vardion-Signature: t=SECONDS,v1=HEX: HMAC-SHA256 of the seconds, a full stop and the body. The platform owner turns writes and webhooks on under Admin > Scanning policy.

Command line

Every command runs inside the container and acts on one workspace, the first unless --workspace <id> names another.

docker compose exec vardion node src/cli.ts run-now --dry-run
CommandWhat it does
run-now [--discovery | --quick | --express]Starts a run
passiveRuns the passive checks
approve-ip, reject-ipDecides an address
list, reportPrints findings or the report
user add <name> --role ownerMakes an account
backup, restore <file> --forceSaves or restores the configuration and data
buildPrints the fingerprint of the code that is running

Backup and updates

State lives in config/ and data/ in the Vardion folder and in Docker volumes. Run each command in the Vardion folder on the server.

TaskHow
Back updocker compose exec vardion node src/cli.ts backup --include-credentials writes one archive with the accounts and keys to data/backups/. Copy it off the server.
RestorePut the archive in data/backups/, run docker compose exec vardion node src/cli.ts restore data/backups/<file>.tar.gz --force, then docker compose restart vardion. The files it replaces stay in a pre-restore folder.
UpdateUnpack the new release over the folder and run sh scripts/deploy.sh. Your .env, config/ and data/ stay as they are. On a published console, first put VARDION_COMPOSE_EXTRA=docker-compose.public.yml in .deploy.env.
Update a scanner soonerEach release carries the reviewed scanner versions. To move them between releases, run node scripts/update-tools.ts in the Vardion folder, then sh scripts/deploy.sh. That needs Node 26 and Docker's buildx on the server.
RemoveRun docker compose down -v with the -f files the console was started with, then delete the folder. -v deletes the database and keys, so back up first.

Support

Write to support@getvardion.com. The support page says when we answer.