快速开始
服务器能访问发布站时,一条命令完成全部部署:
在客户服务器上执行
curl -fsSL http://112.126.72.86:18001/releases/1.1.5/install.sh | sudo bash
脚本是幂等的:中途失败可直接重跑,会复用已生成的配置继续,不会重新生成密钥。
脚本依次完成七个步骤,全程无需应答:
- 环境检查 — root 权限、x86_64 架构、Docker 与 Compose、磁盘余量
- 状态判定 — 自动识别全新安装 / 升级 / 上次装到一半继续
- 获取交付包 — 从发布站下载,或读同目录文件(离线)
- 完整性校验 —
SHA256SUMS不通过立即中止 - 载入镜像 —
docker load并确认镜像存在 - 初始化 — 生成随机
JWT_SECRET/CREDENTIAL_ENC_KEY,迁移建库,创建管理员 - 启动 —
up -d,轮询/health最多 120 秒,最后打印访问地址与口令
结束时终端会给出控制台地址、管理员账号和随机生成的口令(同时保存在 /opt/argus/.admin-password,权限 600)。首次登录后请修改口令并删除该文件。
交付物清单
| 文件 | 说明 |
|---|---|
argus-<版本>-image.tar.gz | 运行镜像(编译产物 + 生产依赖,无源码 / sourcemap / 私钥) |
install.sh | 一键安装 / 升级脚本(版本号已内置) |
docker-compose.yml | 服务编排(api + collector 共用一个镜像) |
env.example | 环境变量模板(复制为 .env 后填写) |
deploy-docker.md | 本手册的 Markdown 版 |
SHA256SUMS | 全部交付文件的校验和 |
收到交付包后先校验完整性:
sha256sum -c SHA256SUMS
前置条件
- Ubuntu 20.04 / 22.04 / 24.04(x86_64)
- 内存 ≥ 2G,磁盘剩余 ≥ 5G
- 服务器可访问被纳管设备所在局域网(采集器需探测 SNMP / ICMP / SSH)
安装 Docker(已有可跳过;也可在安装时加 --install-docker 让脚本代装):
curl -fsSL https://get.docker.com | sh
systemctl enable --now docker
i
用 Ubuntu 官方源装
docker.io 时不带 compose 插件,需另装 docker-compose-v2;安装脚本检测到缺失会自动补装。客户环境无法访问公网时,请提前准备 docker 离线安装包。一键安装
完整命令见「快速开始」。需要定制时,参数跟在 bash -s -- 后面:
# 自己指定管理员口令(不给则随机生成)
curl -fsSL http://112.126.72.86:18001/releases/1.1.5/install.sh | sudo bash -s -- \
--admin-password 'YourStrongPass'
# 换端口
curl -fsSL http://112.126.72.86:18001/releases/1.1.5/install.sh | sudo bash -s -- --port 18080
# 服务器没装 Docker,让脚本一并安装
curl -fsSL http://112.126.72.86:18001/releases/1.1.5/install.sh | sudo bash -s -- --install-docker
参数说明
| 参数 | 说明 | 默认 |
|---|---|---|
--version <x.y.z> | 指定版本(脚本已内置,一般不用给) | 脚本内置 |
--port <端口> | 控制台端口 | 18080 |
--install-dir <目录> | 程序目录 | /opt/argus |
--data-dir <目录> | 数据目录(SQLite 所在) | /var/lib/argus |
--admin-password <口令> | 初始管理员口令 | 随机生成 |
--mirror <url> | 发布站基地址 | http://112.126.72.86:18001/releases |
--install-docker | 未装 Docker 时自动安装 | 关闭 |
--local | 用脚本同目录的文件(离线包) | 关闭 |
--no-start | 只初始化,不启动服务 | 关闭 |
--force | 覆盖已有安装 / 重新载入镜像 | 关闭 |
离线安装(客户内网不能出网)
把交付包 6 个文件放到同一目录,然后本地执行:
cd /opt/argus-pkg
sudo bash install.sh --local
升级
curl -fsSL http://112.126.72.86:18001/releases/<新版本>/install.sh | sudo bash
脚本识别到已有安装后:备份 .env → 切换镜像版本 → 执行数据库迁移 → 重启服务,保留原配置、密钥、账号与数据,不会重置管理员口令。
重装 / 覆盖
curl -fsSL http://112.126.72.86:18001/releases/1.1.5/install.sh | sudo bash -s -- --force
手动部署
一键脚本不适用时(例如需要逐项审计每一步),按下面五步执行。
1. 目录与镜像
mkdir -p /opt/argus && cd /opt/argus
# 将交付文件放到此目录
docker load -i argus-<版本>-image.tar.gz
# 输出 Loaded image: argus:<版本>
2. 配置环境变量
cp env.example .env
chmod 600 .env
vi .env
必填项(其余用默认值即可):
# 数据目录(SQLite 数据库所在位置,须与 compose 卷一致)
DB_FILE=/var/lib/argus/argus.db
# 安全凭据,两个都必须替换
# JWT_SECRET ≥32 字符随机串
# CREDENTIAL_ENC_KEY 32 字节 base64(主机凭据加密密钥)
JWT_SECRET=<替换>
CREDENTIAL_ENC_KEY=<替换>
# 控制台访问地址(通知邮件里的跳转链接)
CONSOLE_BASE_URL=http://<服务器IP>:18080
!
CREDENTIAL_ENC_KEY 一旦设定不可更换,换了历史主机凭据全部无法解密。生成方式:node -e "console.log(require('crypto').randomBytes(32).toString('base64'))"。3. 初始化数据库
mkdir -p /var/lib/argus
# 宿主 root 建的目录需改属主,容器内以 argus 用户运行
docker compose run --rm -u root api chown -R argus:argus /var/lib/argus
# 迁移(建表 / 升级 schema)
docker compose run --rm api node apps/api/dist/cli/migrate.js
# 创建管理员(只在首次部署执行,务必用强口令)
docker compose run --rm -e SEED_ADMIN_PASSWORD='<初始管理员密码>' api node apps/api/dist/cli/seed.js
4. 启动
docker compose up -d
docker compose ps # api 与 collector 均应为 running / healthy
curl -s http://127.0.0.1:18080/health # 应返回 ok
浏览器访问 http://<服务器IP>:18080,用初始化的管理员账号登录。
5. 镜像版本
docker-compose.yml 默认使用 argus:${ARGUS_IMAGE_TAG:-latest}。若镜像 tag 带版本号,在 .env 中加一行:
ARGUS_IMAGE_TAG=1.1.5
!
镜像同时打过
latest 标签,同机载入新版本会覆盖它。回滚必须显式指定 ARGUS_IMAGE_TAG,靠默认值回不去。日常运维
查看日志
cd /opt/argus
docker compose logs -f --tail 200 api
docker compose logs -f --tail 200 collector
数据备份
数据库是 SQLite 单文件(/var/lib/argus/argus.db)。系统内置每日自动备份(「系统设置 → 数据备份」),优先使用内置机制;手动备份:
# 建议在停写窗口内执行,或接受 WAL 场景下的一致性快照
cp /var/lib/argus/argus.db /backup/argus-$(date +%F).db
升级(手动)
cd /opt/argus
# 升级前先备份
cp /var/lib/argus/argus.db /var/lib/argus/argus.pre-upgrade-$(date +%s).db
docker load -i argus-<新版本>-image.tar.gz
# 修改 .env 中 ARGUS_IMAGE_TAG=<新版本>
docker compose run --rm api node apps/api/dist/cli/migrate.js
docker compose up -d
回滚
# 修改 .env 中 ARGUS_IMAGE_TAG=<旧版本>
docker compose up -d
!
数据库回滚需厂商指导。
migrate down 会清数据,禁止客户自行执行。回滚只回镜像,不回数据库。安全说明
- 容器以非 root 用户(argus)运行;数据卷
/var/lib/argus是容器内唯一可写位置 .env含安全凭据,权限必须为 600,属客户机敏感文件,不得外传- 镜像中不含源码与调试符号;license 验签私钥由厂商保管,镜像内只有公钥
- 建议 18080 端口仅对管理网段开放(防火墙 / 安全组控制),不要暴露到公网
- 交付包提供
SHA256SUMS,安装前可逐项核对;安装脚本内部亦会自校验
常见问题
| 现象 | 处理 |
|---|---|
docker compose ps 显示 unhealthy | docker compose logs api 看报错;常见为 .env 缺 JWT_SECRET 或 DB_FILE 目录不可写 |
| 采集器探测不到设备 | collector 使用 host 网络,确认服务器能 ping 通目标设备;防火墙放行出站 SNMP(161/udp)与 ICMP |
| 登录页打不开 | 检查 PORT 与 compose 端口映射是否一致;检查防火墙 |
| 数据库磁盘满 | 清理 /var/lib/argus 下旧备份;调整 .env 中各保留天数 |
docker compose 提示未知命令 | 缺 compose 插件,执行 apt install -y docker-compose-v2 |
| 安装中途退出、容器未创建 | 直接重跑同一条安装命令,脚本会复用已有 .env 继续初始化 |
i