Spug 开源自动化运维平台技术指南从功能架构到 Docker 一键部署实战【免费下载链接】spugSpug is a lightweight agent-free automatic operation and maintenance platform designed for small and medium-sized enterprises. It integrates host management, host batch execution, host online terminal, file management, application release and deployment, pipelines, online task planning, configuration center, monitoring, alarm and so on.项目地址: https://gitcode.com/gh_mirrors/sp/spugSpug 是一个面向中小型企业设计的轻量级、无 Agent 的自动化运维平台本指南以项目根目录 README.md 为纲领结合 spug_api 后端源码与 docs/docker 部署资源系统梳理其功能矩阵、技术栈、进程架构与安装部署方式帮助读者快速掌握该平台的选型依据与落地路径。Spug 是什么面向中小企业的无 Agent 运维平台SpugSpug is a lightweight agent-free automatic operation and maintenance platform的核心设计理念是无 Agent不需要在被管理主机上安装任何客户端仅依赖 SSH/密码或密钥即可完成远程操作这大幅降低了大规模接入主机的部署成本与维护负担。其功能覆盖面相当完整官方将其定位为整合了主机管理、主机批量执行、主机在线终端、文件管理、应用发布部署、流水线、在线任务计划、配置中心、监控、报警等一系列功能的一体化平台。从仓库目录结构可以印证这一功能矩阵spug_api/apps 下按领域拆分了host主机、exec批量执行、deploy发布部署、pipeline流水线、schedule任务计划、config配置中心、monitor监控、alarm报警、notify通知、credential凭据、account账户权限等 16 个 Django App后端架构与功能清单一一对应。核心特性清单结合 README.md 与源码实现Spug 具备以下核心能力功能域能力说明对应后端模块主机管理分组管理、云厂商/Excel 批量导入、批量连通性验证spug_api/apps/host批量执行主机命令在线批量执行支持参数化命令、执行模板与执行历史spug_api/apps/exec在线终端浏览器内直接登录主机终端spug_api/consumerWebSocket文件管理主机文件在线上传与下载spug_api/apps/file文件分发文件/目录从一台主机分发到多台主机spug_api/apps/exectransfer构建部署自定义构建部署支持发布审核、灰度发布与回滚spug_api/apps/deploy流水线将参数化、构建、执行命令、数据传输、数据上传、通知等节点编排为流程支持条件分支与实时控制台spug_api/apps/pipeline任务计划在线配置 Crontab、间隔等任务计划spug_api/apps/schedule配置中心KV、文本、JSON 等格式在线配置spug_api/apps/config监控中心站点、端口、进程、Ping、自定义脚本等监控spug_api/apps/monitor报警中心邮件、微信、钉钉、企业微信、飞书等报警方式spug_api/apps/alarm凭据管理集中管理密码与密钥供主机复用spug_api/apps/credential权限控制细粒度角色权限支持 LDAP 登录与 MFA 认证spug_api/apps/account、libs/ldap.py此外前端 UI 基于 Ant Design界面支持简体中文与英文双语切换docs/i18n.md 记录了国际化接入方式前后端代码完全开源。技术栈与环境要求README.md 明确给出了平台运行的技术环境且与仓库内的 requirements.txt、settings.py 完全一致组件版本要求仓库依据Python3.8Django 4.2 的最低要求docs/install.sh 的 Python 探测逻辑Django4.2Django 4.2.0, 4.3.0requirements.txtNode.js18spug_web/package.jsonReact16.13spug_web/package.jsonRedis5.0docs/docker/redis.conf后端关键依赖还包括paramikoSSH 连接、channelsdaphneWebSocket 实时控制台、apscheduler任务调度、GitPython构建发布时的 Git 操作、python-ldapLDAP 登录、mysqlclientMySQL 驱动、openpyxlExcel 导入主机等完整清单见 requirements.txt。值得注意的两点架构事实源自 settings.pyRedis 是硬依赖不仅作为缓存发布/构建/流水线的实时控制台输出都通过django_redis的get_redis_connection()写入 Redis List 再经 WebSocket 流式推送CHANNEL_LAYERS也使用channels_redis作为 channel layerprefix: spug:channelcapacity 1000expiry 120 秒。多进程协作模型平台通过TOKEN_TTL 8 * 3600登录令牌 8 小时有效以及SCHEDULE_KEY、MONITOR_KEY、EXEC_WORKER_KEY等一批 Redis Key 来协调 API 进程、Worker 进程、监控进程与调度进程之间的任务分发。安装部署两种官方路径路径一Docker Compose 快速部署推荐仓库在 docs/docker/docker-compose.yml 提供了完整编排包含两个服务dbMariaDB 10.8 容器创建spug数据库与spug用户默认密码spug.cc可通过环境变量修改数据持久化到宿主机/data/spug/mysqlspugopenspug/spug-service:4.0镜像映射80:80挂载/data/spug/service与/data/spug/repos两个数据卷。关键参数说明spug: image: openspug/spug-service:4.0 privileged: true # 需要特权模式以支持挂载 sshfs 等 environment: - SPUG_DOCKER_VERSIONv4.0.1 # git 标签容器首次启动时据此拉取代码 - MYSQL_DATABASEspug - MYSQL_USERspug - MYSQL_PASSWORDspug.cc - MYSQL_HOSTdb - MYSQL_PORT3306镜像中只预装运行环境Python/Django 4.2 等具体代码版本由SPUG_DOCKER_VERSION决定——容器首次启动时执行 entrypoint.sh按该标签从 git 拉取后端代码并下载配套的同名前端产物web_${SPUG_DOCKER_VERSION}.tar.gz。因此该变量必须与 CDN 上的前端包配套且 4.0 镜像预装 Django 4.2 / channels 4只能运行 4.x 代码不能用于 3.x 版本。若宿主机 80 端口被占用可将端口映射改为如8000:80。容器内部由 spug.inisupervisor 主配置拉起 5 个常驻进程日志分别输出到spug_api/logs/下的api.log、ws.log、worker.log、monitor.log、scheduler.log进程启动脚本职责nginxnginx -g daemon off;静态资源与/api反向代理redisredis-server /etc/redis.conf缓存与实时通道maxmemory 2GB仅监听 127.0.0.1spug-apistart-api.shDjango APIgunicorn监听 9001spug-wsstart-ws.shWebSocket 服务daphne监听 9002spug-workerstart-worker.sh异步任务执行发布、构建、批量执行spug-monitorstart-monitor.sh监控探测循环spug-schedulerstart-scheduler.sh任务计划调度循环Nginx 配置 中两个关键路由规则location ^~ /api/反代到 9001 端口的 gunicornproxy_read_timeout 180s支撑长时间请求location ^~ /api/ws/反代到 9002 端口的 daphne设置Upgrade/Connection头以支持 WebSocket 长连接在线终端、执行控制台依赖此通道。路径二Linux 一键安装脚本仓库还提供了 docs/install.sh 裸机部署脚本适用于 Debian/Ubuntu 与 RHEL 系CentOS Stream / Rocky / AlmaLinux / Fedora要求 root 权限、Python 3.8 与可访问外网。可用环境变量覆盖默认值SPUG_VERSIONv4.0.1 # 代码版本须与 CDN 前端包配套 ADMIN_USERadmin # 初始管理员用户名 ADMIN_PASSWORDspug.cc # 初始管理员密码 DB_PASSWORDspug.cc # 数据库密码 PIP_INDEX... # pip 镜像源默认清华源脚本流程为检测系统发行版并安装系统依赖MariaDB、nginx、redis、supervisor、rsync、sshfs、iputils-ping 等→ 寻找 3.8 的 Python → clone 代码并下载前端产物 → 生成spug/overrides.py覆盖配置DEBUGFalse、随机SECRET_KEY、MySQL 连接信息→ 初始化数据库与管理员 → 启动各服务。其中python manage.py updatedb完成建表python manage.py user add -u admin -p ... -s -n 管理员创建初始管理员-s为超级管理员。配置覆盖机制两种安装方式都依赖 Django 的overrides.py覆盖机制settings.py 末尾通过from spug.overrides import *加载用户自定义配置覆盖默认的 DEBUG、SECRET_KEY、DATABASES 等。手动部署时数据库使用 utf8mb4 字符集与STRICT_TRANS_TABLESSQL 模式Docker 方式下数据库连接参数则从MYSQL_*环境变量读取见 entrypoint.sh。六大核心功能模块速览主机管理与在线操作主机支持分组管理、从云厂商或 Excel 批量导入并可批量验证连通性。底层通过 spug_api/apps/host 与 libs/ssh.py基于 paramiko实现 SSH 连接凭据统一托管于credential模块。批量执行支持参数化命令与可复用模板执行历史可回溯在线终端与文件上传下载分别通过 WebSocketconsumer与文件接口apps/file实现。构建发布与流水线应用发布支持自定义构建依赖 libs/gitlib.py 的 Git 操作与 apps/deploy 的 ext1/ext2 两套发布扩展并提供发布审核、灰度发布与回滚能力。流水线则把构建、远程命令、数据传输、数据上传、钉钉/飞书/企业微信/推送助手通知等节点编排为可视化流程支持条件分支实时控制台经 Redis WebSocket 推送执行输出核心实现见 apps/pipeline。任务计划、配置中心与监控报警任务计划支持 Crontab 与固定间隔两种调度方式由 apps/schedule 基于 apscheduler 驱动另有runscheduler.py常驻命令配置中心支持 KV、文本、JSON 等格式的在线配置与变更记录apps/config监控中心覆盖站点、端口、进程、Ping、自定义脚本等探测类型apps/monitor配合 apps/alarm 通过邮件、微信、钉钉、企业微信、飞书等渠道报警Ping 探测依赖镜像内置的iputils-ping见 Dockerfile。界面预览平台核心界面如下英文版界面截图来自 docs/img/4.0/en对应中文界面见 docs/img/4.0/zh许可与开源声明Spug 遵循 AGPL-3.0 协议开源前后端代码全部开放可自由部署与二次开发。更多使用细节可参考仓库内文档FAQ、国际化说明 与 Docker 部署资源目录 docs/docker。【免费下载链接】spugSpug is a lightweight agent-free automatic operation and maintenance platform designed for small and medium-sized enterprises. It integrates host management, host batch execution, host online terminal, file management, application release and deployment, pipelines, online task planning, configuration center, monitoring, alarm and so on.项目地址: https://gitcode.com/gh_mirrors/sp/spug创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
