NextScan 是同城安全的开源漏洞扫描器,这套compose一次性拉起全部依赖+业务组件:
redis、mongo、etcd、minio + web管理端、scan扫描引擎、craw爬虫
一、compose服务清单说明
| 服务 | 作用 | 说明 |
|---|---|---|
| ns-redis | 缓存、任务队列 | 带密码 3d7a6447328dcde6 |
| ns-mongo | 主数据库 | 4.2.23,开启auth;root账号,自动初始化NextScan库和业务用户,依赖./mongo/init下的初始化脚本 |
| ns-etcd | 配置中心 | bitnami/etcd,root密码0117be99f79bf9e2 |
| ns-minio | 对象存储 | 保存扫描报告、截图;端口9000,ak/sk:vi75e / hFimqbrlBE |
| ns-minio-buckets | 一次性初始化脚本 ✅正常会退出 | minio/mc镜像,等待10s后:创建别名 → 创建bucket next-scan → 设置匿名下载权限;任务完成exit 0,属于一次性Job,docker ps看不到running是正常现象,不用处理 |
| ns-admin(web) | Web管理后台 | 端口映射宿主机80;依赖所有组件,页面入口 |
| ns-scan | 漏洞扫描引擎 | 由web调度执行漏洞检测 |
| ns-craw | 爬虫模块 | 站点爬虫,采集页面 |
二、部署步骤(国内源推荐)
bash
# 1. 创建目录
mkdir nextscan && cd nextscan
# 国内下载(推荐,github下载慢)
wget [https://oss.17usoft.com/nextscan/download/v1.2.0/mongo.tar.gz](https://oss.17usoft.com/nextscan/download/v1.2.0/mongo.tar.gz)
wget [https://oss.17usoft.com/nextscan/download/v1.2.0/docker-compose.yaml](https://oss.17usoft.com/nextscan/download/v1.2.0/docker-compose.yaml)
# 解压mongo初始化脚本(必须!否则mongo不会自动创建业务库)
tar zxvf mongo.tar.gz
# 2. 启动后台运行
docker-compose up -d
# 查看容器状态
docker ps -a
目录结构必须是:
docker-compose.yaml和mongo文件夹同级,否则mongo初始化脚本挂载失败,数据库账号创建失败,web启动连库报错
yml
version: '3'
#必须安装redis、mongo、etcd
services:
redis:
image: "redis:alpine"
command:
# redis 密码,需要可修改
--requirepass "3d7a6447328dcde6"
container_name: ns-redis
mongo:
image: "mongo:4.2.23"
ports:
- '27017:27017'
command: [--auth]
environment:
MONGO_INITDB_ROOT_USERNAME: root
MONGO_INITDB_ROOT_PASSWORD: root
MONGO_DATABASE: NextScan
MONGO_USERNAME: NextScan
# 数据库NextScan密码
MONGO_PASSWORD: 56074e26d5a39aad
volumes:
- ./mongo/init:/docker-entrypoint-initdb.d
- ./mongo/data:/data/db
container_name: ns-mongo
etcd:
image: "bitnami/etcd:latest"
environment:
# etcd root用户密码
- ETCD_ROOT_PASSWORD=0117be99f79bf9e2
container_name: ns-etcd
minio:
image: minio/minio:latest
container_name: ns-minio
ports:
- 9000:9000
volumes:
- ./minio/data:/data
environment:
MINIO_ACCESS_KEY: "vi75e"
MINIO_SECRET_KEY: "hFimqbrlBE"
command: server /data
restart: always
createbuckets:
image: minio/mc
container_name: ns-minio-buckets
depends_on:
- minio
entrypoint: >
/bin/sh -c "
sleep 10;
/usr/bin/mc alias set myminio http://ns-minio:9000 vi75e hFimqbrlBE;
/usr/bin/mc mb myminio/next-scan;
/usr/bin/mc anonymous set download myminio/next-scan;
exit 0;
"
web:
image: "lysec/ns-admin:latest"
ports:
- "80:80"
depends_on:
- redis
- mongo
- etcd
- minio
- createbuckets
container_name: ns-admin
# volumes:
# # 配置文件
# - ./conf.ini:/next-scan/conf.ini
scan:
image: "lysec/ns-scan:latest"
depends_on:
- web
container_name: ns-scan
craw:
image: "lysec/ns-craw:latest"
depends_on:
- web
container_name: ns-craw
三、访问信息
浏览器打开:http://宿主机IP
- 默认账号:
admin - 默认密码:
nextscan
四、常用运维命令
bash
# 停止服务(保留容器、数据卷)
docker-compose stop
# 停止并删除容器(数据卷mongo/minio数据保留)
docker-compose down
# 彻底清理(删除容器+数据,重装用)
docker-compose down -v
# 查看某个容器日志(排查启动失败)
docker logs ns-admin
docker logs ns-scan
docker logs ns-mongo
五、高频坑点
-
ns-minio-buckets Exited(0)
✅正常,一次性任务,创建完bucket就退出,不影响业务;重复up会报bucket已存在,直接忽略。
-
80端口被占用
修改web的ports,例如
"8080:80",访问改为 http://ip:8080 -
mongo起不来 / web连不上mongo
- 确认解压
mongo.tar.gz,目录存在./mongo/init - 看
docker logs ns-mongo,看初始化脚本报错 - mongo镜像版本4.2.23比较老,arm服务器会拉取失败,仅amd64(x86)服务器
-
etcd、redis连接失败
等依赖顺序:compose的depends_on只控制启动顺序,不等待服务就绪,mongo/etcd/redis初始化需要时间,web会重试连接;等2分钟再访问页面。
-
宿主机防火墙放行端口:
80、27017、9000
六、数据持久化
- mongo数据:
./mongo/data - minio文件存储:
./minio/data
直接
docker-compose down不会删除本地目录里的扫描数据,加-v才会删除卷。
