Blast Radius - Homelab Dependency and Impact Mapper

ScottiBYTE BlastRadius is an agent-less Homelab dependency and impact dashboard for mapping public services, Nginx Proxy Manager routes, Incus hosts, Incus instances, nested Docker containers, DNS, and external entry points.

Start by creating an Incus container to host Blast Radius:

incus launch images:ubuntu/26.04 BlastRadius -p default -p bridgeprofile -c boot.autostart=true -c security.nesting=true

Move inside the container.

incus shell BlastRadius

Accept the updates.

apt update
apt modernize-sources -y
apt upgrade -y

Install some dependencies.

apt install net-tools nano curl openssh-server incus-client -y

Install docker from the script on the docker website.

curl https://get.docker.com | sh

Add a user account and put it in the sudo and docker groups.

adduser scott
usermod -aG sudo,docker scott

Login to the user account.

su -  scott

Edit the host file to add your incus server names and addresses as shown in the video.

sudo nano /etc/hosts

Once you have added your Incus servers CTRL O and enter to save the file and CTRL X to exit the nano editor.

Create trusts for each server as follows using your server names you just entered.

ssh vmsmist "incus config trust add BlastRadius"

Then enter the command to complete the trust.

incus remote add vmsmist https://vmsmist:8443 --accept-certificate

Paste the token from above when prompted.

You can list your remote servers.

incus remote list

Add a trust for each Incus server that you want Blast Radius to examine.

You can test your trust by having it list the containers on the remote you added.

incus list vmsmist:

Create the required file structure.

mkdir -p blastradius/{data,public} && cd blastradius

Edit a configuration file.

nano data/config.json

Put the following data in the file.

{
  "npm": {
    "enabled": true,
    "url": "http://NginX-IP:81",
    "email": "admin@example.com",
    "password": "changeme",
    "timeoutMs": 5000,
    "defaultCheckMode": "tcp",
    "domainOverrides": {
      "example-service.example.com": {
        "checkMode": "skip",
        "note": "Optional example: skip direct checks for a service that should not be checked directly."
      }
    }
  },
  "incus": {
    "enabled": true,
    "timeoutMs": 8000,
    "cert": "./data/incus-client/client.crt",
    "key": "./data/incus-client/client.key",
    "verifyTls": false,
    "remotes": [
      {
        "name": "vmsmist",
        "url": "https://172.16.1.50:8443",
        "enabled": true,
        "project": "default"
      }
    ]
  },
  "dockerDiscovery": {
    "enabled": true,
    "timeoutMs": 5000,
    "cacheSeconds": 900,
    "maxInstances": 150
  },
  "liveModelCache": {
    "cacheSeconds": 45
  },
  "certificateDiscovery": {
    "enabled": true,
    "highDays": 7,
    "mediumDays": 21,
    "lowDays": 60,
    "externalUseCertificates": {
      "mydomain.com": {
        "note": "Optional example: certificate is used outside NPM, such as by another web server."
      }
    }
  }
}

Change your NginX Proxy Manager address, username, and password in the file about and make the other changes detailed in the tutorial. Save the file with CTRL O and enter and CTRL X to exit the editor.

Create a folder for the Incus client certificate and copy the the certificate and key into it.

mkdir -p data/incus-client

cp ~/.config/incus/client.crt data/incus-client/client.crt
cp ~/.config/incus/client.key data/incus-client/client.key

chmod 644 data/incus-client/client.crt
chmod 600 data/incus-client/client.key

Edit a docker compose file.

nano compose.yml

Insert the following into the editor.

services:
  blastradius:
    image: scottibyte/blastradius:latest
    container_name: blastradius
    restart: unless-stopped
    ports:
      - "3050:3050"
    volumes:
      - ./data:/app/data

Save the file with a CTRL O and enter and then CTRL X to exit the editor.

Start the application.

docker compose up -d

Find out the address of eth0 in your incus container.

ifconfig

Go to your web browser at the address you just found at port 3050.

http://a.b.c.d:3050

If all goes well…

After a few seconds you will have your very own Blast Radius utility.

Enjoy!