Spug v4.1.1 介绍与选型指南
Spug v4.1.1 产品定位、架构、功能边界与 JumpServer/AWX/Semaphore 量化选型对比,全部联网溯源并标注查询日期。
Spug v4.1.1 介绍与选型指南
目标:面向正在为中小规模服务器集群挑选「轻量自动化运维平台」的工程师,梳理 Spug v4.1.1 的产品定位、核心架构、功能边界,并给出与 JumpServer、AWX、Semaphore 的量化选型对比。本文为 A1 认知篇(联网溯源),全部事实性内容均于 2026-10-25 从官方渠道(GitHub 仓库 openspug/spug 及其 releases.atom 订阅源、官网 spug.cc、仓库 4.0 分支 docker-compose.yml、shields.io 徽章)实查取得并标注来源;部署、配置与命令的实测内容见本专栏后续各篇。
一、环境信息
本文为 A1 认知篇(联网溯源),写作时不依赖本地环境,所有版本、星数、许可与功能口径均于 2026-10-25 从下列官方渠道实查:
| 信息项 | 取值 | 来源 |
|---|---|---|
| 最新稳定版本 | v4.1.1(2026-10-12 发布,安全修复版) | GitHub Releases(releases.atom 订阅源) |
| 开源许可证 | AGPL-3.0 | shields.io github/license 徽章,查询日期 2026-10-25 |
| 社区规模(GitHub Stars) | 约 11k | shields.io github/stars 徽章,查询日期 2026-10-25 |
| 技术栈(v4.x) | Python 3.8+ / Django 4.2 / channels 4 / Redis 5.0+ 后端,React(antd 4.24 / xterm 5)前端 | v4.0.0 Release Notes,查询日期 2026-10-25 |
| 运维方式 | 无 Agent:通过 SSH 管理目标主机 | GitHub README(查询日期 2026-10-25) |
| 官网 / 文档 / 演示 | https://spug.cc / https://spug.cc/docs/about-spug/ / https://demo.spug.cc | GitHub README,查询日期 2026-10-25 |
| 官方镜像 | openspug/spug(同步发布 ghcr.io/openspug/spug,amd64 与 arm64 双架构) | v4.1.0 Release Notes 与仓库 4.0 分支 docker-compose.yml |
| 演示镜像体积 | 压缩层 148 MB / 解压后 658 MB | 本专栏部署篇实测(openspug/spug:4.1.1,2026-10-25) |
💡 说明:Spug 官网 spug.cc 为单页应用,文档、更新日志与 FAQ 均在该站
docs/路径下;官方另运营「推送助手」push.spug.cc(多通道消息推送平台),与 Spug 的报警通知链路配套。GitHub README 中的「环境」一节(Python 3.6+/Django 2.2)为 3.x 时代遗留描述,v4.0.0 起后端已迁移至 Django 4.2,评估时以 Release Notes 为准。
二、软件概述
2.1 定位与身份
Spug 的官方自我定位只有一句话:「面向中小型企业设计的轻量级无 Agent 的自动化运维平台,整合了主机管理、主机批量执行、主机在线终端、应用发布部署、在线任务计划、配置中心、监控、报警等一系列功能」(来源:GitHub 仓库 openspug/spug README,查询日期 2026-10-25)。
一句话理解它的产品逻辑:把「登录几十台服务器逐台敲命令、传文件、发版」这一日常运维动作,收敛成一个浏览器页面——目标主机只要求能 SSH 登录,不需要预装任何被控端程序;平台自身则是单机部署的一套 Web 服务,一个编排文件即可拉起。
💡 技术拓展:服务器运维平台的「被控端」业界主要有两种形态,选型前应先分清——
形态 代表产品 原理 取舍 无 Agent(SSH 驱动) Spug、Ansible/Semaphore 平台通过 SSH 协议连接目标机执行命令/传文件 目标机零改造、上手快;依赖网络可达与账号权限,大目标量时连接开销高 有 Agent(常驻被控端) JumpServer 的部分能力、Puppet/SaltStack、蓝鲸 目标机常驻守护进程,平台下发任务或反向心跳 实时性好、可做资产采集与审计增强;需在每台目标机安装维护 Agent Spug 属于第一种:目标机器只需「SSH 可达 + 一个可登录账号」即可纳管,这也是它面向中小企业「轻量」定位的核心支撑。
2.2 版本与许可
- 当前稳定版:v4.1.1,2026-10-12 发布,是一次安全修复版——修复 6 个通过 GitHub 私密渠道上报的安全问题,并升级 GitPython 3.1.40→3.1.62、python-ldap 3.4.3→3.4.8、前端 axios 0.21→0.33,官方明确建议所有 4.x 安装升级(来源:v4.1.1 Release Notes,查询日期 2026-10-25)。
- 许可证:AGPL-3.0。对「拿 Spug 二次开发后对外提供网络服务」的场景有传染性开源约束,企业内部使用不受影响(来源:shields.io license 徽章与仓库 LICENSE 声明,查询日期 2026-10-25)。
- 治理与社区:OpenSpug 组织维护的社区项目,官网提供演示环境(demo.spug.cc)、中文文档、更新日志与 FAQ,开发者交流以 QQ 群(122194636)与微信公众号为主(来源:GitHub README,查询日期 2026-10-25)。
- v4 大版本要点:v4.0.0(2026-10-10)是里程碑式的大版本——新增 Pipelines 流水线模块、凭据管理、英文/简体中文双语界面,后端从 Django 2.2 迁移到 Django 4.2 并升级 channels 4,要求 Python 3.8+ 与 Redis 5.0+,3.x 运行时与镜像无法直接运行 4.0(来源:v4.0.0 Release Notes,查询日期 2026-10-25)。
2.3 版本节奏(量化)
近期发布记录(来源:GitHub releases.atom,查询日期 2026-10-25):
| 版本 | 发布时间 | 备注 |
|---|---|---|
| v3.2.7 | 2023-04-18 | 3.x 稳定期补丁 |
| v3.3.0 | 2023-11-16 | 3.x 功能版 |
| v3.3.1 / v3.3.2 | 2023-11-23 / 2023-11-29 | 3.x 补丁 |
| v3.3.3 | 2024-10-14 | 3.x 最后一版,此后进入约 20 个月静默期 |
| v3.4.0 | 2026-06-12 | 复活节点,4.0 前的过渡版 |
| v4.0.0 / v4.0.1 | 2026-10-10 | 大版本:Pipelines、凭据管理、双语界面、Django 4.2 |
| v4.1.0 | 2026-10-10 | 一体化镜像、Open API、失败主机重试、流水线执行历史 |
| v4.1.1 | 2026-10-12 | 当前最新稳定版,安全修复(6 个私密上报问题 + 三个依赖升级) |
解读:v3.x 时代(2023-2024)发布节奏偏慢且 2024-10 至 2026-06 有约 20 个月空窗;2026 年 6 月起恢复活跃,10 月 10 日一天内连发 v4.0.0/v4.0.1/v4.1.0 三个版本,随后 2 天内跟进安全修复 v4.1.1。当前处于 4.x 快速演进期,生产采用建议锁定精确版本标签并关注安全公告(仓库提供安全策略 SECURITY.md 与安全公告页,来源:v4.1.0 Release Notes「Other」节)。
三、核心架构
3.1 运行时构成
Spug 是单机部署的单体 Web 应用:一个 Web 门户(nginx 提供前端静态资源与反向代理)+ 多个后台进程,共享一个数据库与一个 Redis。以下构成来自本专栏部署篇在 v4.1.1 上的实测进程清单(2026-10-25):
| 组成 | 职责 | 说明 |
|---|---|---|
| nginx | 前端静态资源 + 反向代理 | 前端构建产物为 React 单页应用;/api/ 转发到 WSGI 服务(9001),/api/ws/ 以 WebSocket 升级头转发到 ASGI 服务(9002) |
| spug-api(gunicorn,9001) | HTTP API 主服务 | 2 worker × 8 线程,处理登录、主机、应用发布等全部 REST 接口 |
| spug-ws(daphne,9002) | WebSocket 网关 | 基于 Django channels 4 + ASGI,承载在线终端与命令控制台的实时输出 |
| spug-worker | 任务执行进程 | 批量执行、应用发布构建等后台任务的消费者 |
| spug-monitor | 监控探测进程 | 站点/端口/进程/自定义监控的周期探测与报警触发 |
| spug-scheduler | 任务计划进程 | 在线任务计划(类 cron)的调度器 |
| redis(容器内 127.0.0.1:6379) | 缓存/消息队列/会话通道 | 缓存库 1 号库(前缀 spug)、channels 层(前缀 spug:channel)、调度与监控任务队列 |
| MySQL / MariaDB | 业务数据库 | 编排形态由独立的 MariaDB 容器提供;无 MySQL 时可退化为 SQLite(官方定位为试用) |
💡 技术拓展:Spug 用 Redis 同时承担「缓存」与「任务队列/消息通道」两类职责,这类进程间协作形态业界常见选项对比——
形态 原理 适用场景 Redis 列表/发布订阅(Spug 采用) 任务与控制台输出经 Redis 列表/频道流转 单机单体应用,组件少、运维简单 独立消息队列(RabbitMQ/Kafka) 专业 broker 持久化与投递保证 任务量大、需要消息确认与堆积能力的分布式系统 数据库轮询 任务落库定时扫表 极小规模、依赖最少 Spug 选择 Redis 一站式方案,与它「一个编排文件拉起全部组件」的轻量定位一致;本专栏《Spug v4.1.1 配置参数详解》给出了这些 Redis 键前缀与通道参数的实测位置。
3.2 关键数据流
- 登录与鉴权:前端 POST
/api/account/login/提交用户名/密码/登录类型,后端校验通过后签发 32 位access_token(有效期 8 小时,实测值),后续请求以x-token请求头鉴权;登录历史落库。开放 API(/apis/.*)在鉴权豁免清单中按开放凭据独立鉴权(来源:v4.1.1 实测与源码 settings.pyAUTHENTICATION_EXCLUDES,2026-10-25)。 - 批量执行/在线终端(无 Agent):worker/终端进程通过 SSH(paramiko,支持 Ed25519/ECDSA 密钥)连接目标主机执行命令,输出经 Redis 通道由 daphne 推回浏览器 WebSocket(来源:v4.0.0 Release Notes「SSH compatibility」条目与运行进程实测)。
- 应用发布部署:自定义发布流程(检出 Git 仓库→构建→分发→远端命令),Git 凭据可集中托管;4.0 起发布请求支持按主机灰度、仅对失败主机重发(来源:v4.0.0 Release Notes,查询日期 2026-10-25)。
- 监控与报警:monitor 进程周期探测,异常经报警中心路由到邮件、钉钉、飞书、企业微信等通道,或经「推送助手」push.spug.cc 发送短信/电话/微信消息(来源:README 功能清单与 v4.0.0 Release Notes「Feishu channel / Push Service」条目)。
3.3 部署形态
官方支持的部署形态(来源:v4.1.0 Release Notes 与仓库 4.0 分支 docker-compose.yml 头注释,查询日期 2026-10-25):
| 形态 | 适用场景 | 说明 |
|---|---|---|
| Docker Compose(官方主推) | 服务器部署首选 | spug(应用,数据卷 /data)+ db(MariaDB 10.11,数据卷 /var/lib/mysql)两个服务;数据库结构首启自动创建与升级 |
| 单容器快速体验 | 本地试用 | docker run -d -p 8080:80 openspug/spug:4.1,内置 SQLite;官方定位「quick look」,正式使用仍配 MySQL/MariaDB |
| 源码安装 | 无容器环境 | Python 3.8+ / Django 4.2 / channels 4 / Redis 5.0+ 自行组装(v4.1.1 安全公告提示源码安装更新代码后需在 spug_api 执行 pip install -r requirements.txt) |
| 3.x 遗留镜像 | 存量 3.x 用户 | openspug/spug:3.3.2(内置 MariaDB 的一体化镜像)继续可用;4.x 镜像检测到 3.x 数据卷会拒绝启动且不改动卷内数据 |
⚠️ v4.1.0 Release Notes 明确:4.x 容器拒绝在 3.x 遗留数据卷上启动并原样保留卷内数据(镜像内
/data/mysql检测);这是防止误升级破坏数据的设计,跨大版本迁移需按官方升级指南先备份数据库。
四、功能特性
4.1 主机管理、批量执行与在线终端
- 主机管理:SSH 账号(密码或私钥)纳管目标主机,支持按分组管理;v4.0 起支持从阿里云/腾讯云导入主机、批量校验同步主机详情(CPU/内存/磁盘/到期时间)并导出 Excel(来源:v4.0.0 Release Notes,查询日期 2026-10-25)。
- 批量执行:命令模板在线批量执行,v4.1 起支持对失败主机的单台重试与全量重试(来源:v4.1.0 Release Notes「New features」节)。
- 在线终端与文件管理:浏览器在线终端(WebSocket,xterm 5)与主机文件在线上传下载;SSH 兼容 dash/ash shell 与 Ed25519/ECDSA 密钥,改进 Windows 主机的批量执行与部署(来源:v4.0.0 Release Notes「Improvements」节)。
4.2 应用发布、流水线与凭据
- 应用发布:自定义发布流程(申请、审批、执行),4.0 起支持向选定主机灰度发布、仅对失败主机重试发布,新增「灰度成功」状态。
- Pipelines 流水线(v4.0 新增):编排参数、构建、远端命令、数据传输、数据上传、钉钉/飞书/企微/推送助手通知等节点,支持成功/失败/始终三种触发条件与实时控制台;v4.1 起提供执行历史与控制台输出回放。
- 凭据管理(v4.0 新增):密码与私钥集中保存、跨应用共享,流水线构建节点可引用凭据访问私有 Git 仓库。
4.3 任务计划、配置中心、监控与报警
- 任务计划:在线任务计划(类 cron),时区随部署环境
TZ变量(来源:v4.1.0 Release Notes「TZ sets the time zone of scheduled tasks and timestamps」)。 - 配置中心:支持 KV、文本、JSON 格式配置,带变更历史;标准发布可在构建阶段以
SPUG_SET更新配置中心值、以SPUG_GEV_*传递构建变量到目标主机(来源:README 功能清单与 v4.0.0 Release Notes)。 - 监控中心:站点、端口、进程、自定义脚本四类监控;v4.1.1 安全修复后,进程与自定义脚本类型监控任务及其测试按钮要求执行账号对目标主机的访问权限(与批量执行同权)。
- 报警中心:短信、邮件、钉钉、微信等多通道报警;v4.0 起报警联系人、发布结果、任务计划结果新增飞书通道,钉钉/飞书机器人支持加签。
4.4 开放 API 与推送助手
- Open API(v4.1 新增):可触发批量执行模板与流水线并查询结果(
/apis/exec/<template_id>/、/apis/pipeline/),提供只读主机清单 API、可直接用作 Ansible 动态 inventory(来源:v4.1.0 Release Notes,查询日期 2026-10-25)。⚠️ v4.1.1 收紧了开放 API 的行为约束:host_ids只能在模板预设主机范围内缩小而非扩大、参数名必须是合法环境变量名、文件分发要求绝对路径且不含空格与 shell 特殊字符、Git 仓库地址限定 http(s)/ssh/git/file 协议或本机绝对路径(来源:v4.1.1 Release Notes「Behaviour changes」节)。 - 推送助手:官方运营的多通道消息推送平台(https://push.spug.cc ),一个 URL 完成电话/短信/邮件/飞书/钉钉/微信推送,与 Spug 报警、流水线通知节点直接集成(来源:GitHub README,查询日期 2026-10-25)。
五、快速开始(最小可用示例)
以下为官方仓库 4.0 分支 docker-compose.yml 头注释给出的最小路径(来源:仓库 openspug/spug 4.0 分支,查询日期 2026-10-25;完整 0→1 部署、参数说明与验证回显见本专栏部署篇,该篇已在 Ubuntu 22.04 + Docker Engine 29.8.1 环境全量实测通过):
第 1 步:下载官方编排文件并启动(spug 应用服务 + db MariaDB 服务,数据保留在两个命名卷中):
curl -fsSLO https://raw.githubusercontent.com/openspug/spug/4.0/docker-compose.yml
docker compose up -d
第 2 步:取首启随机生成的管理员密码(仅首次启动打印;也可用环境变量 SPUG_ADMIN_PASSWORD 预先指定):
docker compose logs spug | grep password
第 3 步:浏览器打开 http://<服务器地址>/,以 admin 与上一步取到的密码登录。
后续升级官方口径为一句话:docker compose pull && docker compose up -d,数据保留在两个命名卷中不变。
六、适用场景与限制
6.1 适用场景
- 中小企业内网几十到几百台服务器统一运维入口:主机分组纳管 + 批量命令 + 在线终端,替代「逐台 SSH」的日常操作,目标机零 Agent。
- 自研服务的标准化发布:应用发布流程 + 构建凭据托管 + 灰度/重试,适合发布频率中低、流程自定义要求高的团队。
- 定时任务与配置的集中管理:在线任务计划、KV/文本/JSON 配置中心带变更历史,替代散落在各机器的 crontab 与配置文件。
- 轻量监控与多通道报警:站点/端口/进程监控直接对接钉钉/飞书/邮件/短信通道,或经推送助手统一推送。
- 与既有自动化工具链打通:Open API 触发模板/流水线、主机清单 API 直接当 Ansible 动态 inventory 用。
6.2 资源参考
- 官方未给出硬性资源下限;部署形态下应用镜像压缩层 148 MB、解压 658 MB(含 Python 运行时、nginx、redis 与前后端产物),外加 MariaDB 10.11 数据库(压缩层 104 MB,本专栏部署篇 2026-10-25 实测)。同类中属轻量单体形态(对比:AWX 需要任务执行器集群与消息中间件,部署体量大一个数量级)。
- 目标主机侧零常驻进程,仅要求 SSH 端口可达与可登录账号;批量执行与在线终端的并发上限受平台所在主机规格与 Redis 通道容量影响(channels 容量默认 1000,实测见配置篇)。
6.3 限制(评估前必须知道)
- 单机单体、无内建高可用:平台自身是一个单机部署的 Web 应用 + 单点数据库,无集群模式;平台宕机期间批量执行/发布/监控全部中断,高可用需自行在基础设施层解决。
- AGPL-3.0 传染性:二次开发后对外提供网络服务须开源修改;企业内部使用不受影响。
- 版本演进有断代风险:v3.3.3(2024-10)到 v3.4.0(2026-06)之间约 20 个月无发布,且 v3→v4 为破坏性升级(运行时、镜像、数据卷均不兼容,3.x 数据卷上的 4.x 容器拒绝启动);采用方需评估跟进节奏。
- 无 Agent 模式的天然边界:目标主机必须 SSH 可达;审计粒度依赖平台记录,不具备有 Agent 方案的进程级审计与资产实时采集能力。
- 功能面聚焦「主机 + 应用」运维:不包含 CI 引擎本体(构建节点需自行提供构建环境)、不做堡垒机的强审计合规场景(对比 JumpServer 的定位)。
七、同类选型对比
7.1 竞品对照表
以下星数均来自 shields.io github/stars 徽章实查(查询日期 2026-10-25);定性维度来自各项目官方仓库与文档站同日期实查:
| 维度 | Spug v4.1.1 | JumpServer | AWX | Semaphore |
|---|---|---|---|---|
| GitHub Stars | 约 11k | 约 32k | 约 16k | 约 14k |
| 定位 | 轻量无 Agent 自动化运维平台(主机/批量/发布/任务/配置/监控) | 堡垒机 + 运维审计(4A:认证/授权/审计/资产管理) | Ansible 图形化控制台(官方上游) | Ansible/Terraform/Pulp 等的轻量 Web UI |
| 许可证 | AGPL-3.0 | AGPL-3.0 | Apache-2.0 | MIT |
| 被控端 | 无 Agent(SSH) | 无 Agent(SSH/RDP 协议代理)为主,可配增强组件 | 无 Agent(SSH,依赖 Ansible) | 无 Agent(依赖 Ansible) |
| 技术栈 | Python/Django 4.2 + React,单体 | Python/Django + Vue,组件较多 | Python/Django + React + 消息中间件,任务执行器集群 | Go + Vue,单体 |
| 数据库依赖 | MySQL/MariaDB(或 SQLite 试用)+ 内置 Redis | MySQL/PostgreSQL + Redis | PostgreSQL + Redis + RabbitMQ 等一整套 | SQLite/MySQL/PostgreSQL 二选一 |
| 部署体量 | 一个编排文件两个服务,百兆级镜像 | 多组件编排 | 大型编排(含 operator 多形态) | 单二进制/单容器,最轻 |
| 核心能力侧重 | 批量执行、应用发布、任务计划、配置中心、监控报警 | 账号托管、会话审计、命令/文件传输审计、多云资产 | Playbook 编排、作业模板、RBAC、工作流 | Playbook/模板调度、计划任务、凭证管理 |
| 中文界面 | 原生中文(v4 起双语) | 原生中文 | 无官方中文 | 无官方中文 |
| 适合规模 | 中小企业(几十~几百台) | 中大型企业(合规审计诉求) | 已有 Ansible 体系的中大型团队 | 已有 Ansible/terraform 的小团队 |
关键差异解读:四者不是同位替代关系——JumpServer 的核心价值在「审计与合规」(谁在什么时间对哪台机器做了什么),运维自动化只是附带;AWX 与 Semaphore 是「把 Ansible 用起来」的控制台,能力围绕 Playbook/作业模板,不带配置中心、监控报警与应用发布流程;Spug 则是唯一把「主机批量执行 + 应用发布 + 任务计划 + 配置中心 + 监控报警」五件套装进一个轻量单体的选项,代价是平台自身无高可用且社区体量最小(星数口径)。
7.2 兼容与版本活跃度量化对比
| 维度 | Spug v4.1.1 | JumpServer | AWX | Semaphore |
|---|---|---|---|---|
| 目标系统依赖 | 仅 SSH 服务 | SSH/RDP + 视组件 | SSH + Ansible 生态 | SSH + Ansible 生态 |
| 架构支持(官方镜像) | amd64 + arm64(v4.1.0 起) | amd64 为主 | amd64 为主 | amd64 + arm64 |
| 部署形态 | 单机单体(Compose 主推) | 多组件(Compose/Helm) | k8s operator 为主 | 单机单体 |
| 近一年发版(截至 2026-10-25) | v3.4.0(2026-06)→ v4.0.0/v4.0.1/v4.1.0(2026-10-10)→ v4.1.1(2026-10-12),共 5 个版本 | 常规节奏(v3/v4 系列) | 频繁(滚动) | 频繁(滚动) |
| 升级方式 | docker compose pull && up -d(数据卷保留) | 升级脚本/镜像 | operator 滚动 | 镜像替换 |
解读:Spug 的 arm64 支持与「单编排文件」部署在轻量场景占优;但 AWX/Semaphore 的滚动发版意味着跟进成本高、Spug 的断代史则提示锁定版本、跟随安全公告升级更稳妥。
7.3 选型建议(「如果…则…」)
- 如果要给中小规模服务器集群一个「批量执行 + 发布 + 任务计划 + 配置 + 监控报警」的一站式轻量入口、目标机不允许装 Agent → Spug。
- 如果首要诉求是堡垒机式的会话审计、账号托管与合规(等保等) → JumpServer(可与 Spug 并存:审计走堡垒机,自动化走 Spug)。
- 如果团队已深度使用 Ansible,需要图形化作业编排与 RBAC,且能承担较重的部署 → AWX。
- 如果只想要一个极轻的 Ansible Web UI、单二进制即可跑 → Semaphore。
- 如果 AGPL-3.0 传染性不可接受 → 改选 Apache-2.0 的 AWX 或 MIT 的 Semaphore。
- 如果平台自身必须高可用 → 以上单体形态均需自行在外层解决;或考虑把调度与执行外包给 k8s 体系内的方案。
八、参考链接
- GitHub 仓库:https://github.com/openspug/spug
- 官网:https://spug.cc
- 使用文档:https://spug.cc/docs/about-spug/
- 更新日志:https://spug.cc/docs/change-log/
- 常见问题:https://spug.cc/docs/faq/
- 在线演示:https://demo.spug.cc
- 推送助手:https://push.spug.cc
- 官方编排文件(4.0 分支):https://raw.githubusercontent.com/openspug/spug/4.0/docker-compose.yml
- 安全公告:https://github.com/openspug/spug/security/advisories(安全策略/上报渠道:https://github.com/openspug/spug/security/policy )
- shields.io 星数徽章:https://img.shields.io/github/stars/openspug/spug