Jpom
【dromara】🚀 简而轻的低侵入式在线构建、自动部署、日常运维、项目监控软件
也是一款原生 Ops 软件 · English
👉 大陆站:https://jpom.top 👈
⚠️ 维护状态:Jpom 已暂停常规功能迭代,安全维护仍在继续。使用
2.11.12及更早版本的用户请尽快升级到2.11.13安全修复版。详情见:项目暂停维护公告 · 2.11.13 安全公告 · 全部安全公告 · 下载中心
- 痛点与解决方案
- 核心功能
- 特别提醒
- 版本更新日志
- 安装 Jpom
- 管理 Jpom 服务
- Linux 系统服务方式管理
- Jpom 参数配置
- 常见问题与实践案例
- 构建案例仓库
- 整体架构
- 交流与反馈
- 周边商品
- 贡献指南
- 知识星球
- 精品项目推荐
- 开源许可证
- 鸣谢
😭 日常开发中,您是否有以下痛点?
- 团队中没有专职运维,开发还要兼做运维的活,需要自己手动构建、部署项目。
- 不同的项目有不同的构建、部署命令。
- 有开发、测试、生产等多环境打包的需求。
- 需要同时监控多个项目的运行状态。
- 需要下载 SSH 工具远程连接服务器。
- 需要下载 FTP 工具传输文件到服务器。
- 多台服务器时,在不同电脑之间同步账号密码很不方便。
- 想使用自动化工具,但工具对服务器性能要求高、搭建麻烦。
- 对自动化工具有个性化需求,想自己修改项目,但市面上的工具太复杂。
如果是分布式项目,以上步骤会更加繁琐。
让 Jpom 来帮您解决这些痛点吧!然而,这些只是 Jpom 解决的最基础的问题。
😁 使用 Jpom 后
- 方便的用户管理
- 用户操作监控,可将指定用户的指定操作以邮件形式通知
- 多用户管理,项目权限独立(上传、删除权限可控制),操作日志完善,支持按工作空间隔离权限
- 账号支持开启 MFA 两步验证,提高账号安全性
- 以界面形式实时查看项目运行状态、控制台日志,管理项目文件
- 支持在线修改项目文本文件
- Docker 容器管理、Docker Swarm 集群管理(Docker UI)
- 在线 SSH 终端,无需安装 PuTTY、Xshell、FinalShell 等软件即可管理服务器
- 登录 Jpom 后无需知道服务器密码
- 可指定 SSH 禁止执行的命令,避免执行高风险命令,并自动记录命令日志
- 设置文件目录后,可在线查看、编辑项目文件及配置文件
- SSH 命令模版可在线执行脚本,并支持定时执行
- 轻量实现了简单的“堡垒机”功能
- 使用项目分发一键完成集群项目的多机部署
- 在线构建,无需手动更新、升级项目
- 支持拉取 Git、SVN 仓库
- 支持容器构建(Docker)
- 支持 SSH、FTP 方式发布
- 支持定时构建
- 支持 WebHook 触发构建
- 支持按路径差异触发构建(仅当变更文件匹配规则时才构建)
- 支持在线编辑 nginx 配置文件并自动 reload
- 管理 nginx 状态、SSL 证书
- 项目状态监控,异常时自动报警并尝试重启
- 支持邮件、钉钉群、微信群通知,主动感知项目运行状况
- 节点脚本模版 + 定时执行或触发器,可拓展更多功能
- 重要路径授权配置,杜绝用户误操作系统文件
🔔️ 特别提醒
- 在 Windows 服务器中,部分功能可能因系统特性出现兼容性问题,建议充分测试后再用于生产。Linux 目前兼容性良好。
- 服务端和插件端请安装到不同目录,切勿安装到同一目录。
- 卸载服务端或插件端时,请先停止对应服务,再删除程序文件、日志文件夹和数据目录文件夹。
- 本地构建依赖系统环境:如果构建命令需要 Maven 或 Node.js,请先在构建项目的服务器上安装对应环境;如果安装环境后服务端已启动,需要通过命令行重启服务端才会生效。
- 在 Ubuntu/Debian 服务器上作为插件端可能会添加失败,请在当前用户根目录创建
.bash_profile文件。- 不建议升级后再降级,可能存在数据不兼容的情况。
- 2.x.x 版本的插件端和服务端主要采用 HTTP 协议通讯,请确保两者网络互通。
- 升级前请阅读 CHANGELOG.md 中的
⚠️ 升级说明;下载安装包后建议先用附带的.sha1文件校验完整性。- Jpom 已暂停常规功能迭代(安全维护继续),详见项目暂停维护公告。
🗒️ 版本更新日志
升级前必看:CHANGELOG.md(含版本变更与 ⚠️ 升级说明);安全修复记录见 安全公告。
📥 安装 Jpom
Jpom 由 Server(服务端) 和 Agent(插件端) 组成:Server 提供 Web 管理界面与 API,Agent 在被管理的服务器上执行项目、脚本、文件、监控等任务。两者默认端口分别为 2122、2123。
Jpom 支持多种安装方式,选择其中一种安装即可。
方式一:🚀(推荐)一键安装(Linux)
注意:安装目录为执行命令时所在的目录。
⚠️ Server 端和 Agent 端不可安装在同一目录下!
修改数据、日志存储路径:编辑安装目录下
conf/application.yml中的jpom.path配置。如果服务器没有
curl,请先安装:yum install -y curl(CentOS)或apt-get install -y curl(Ubuntu/Debian)。
一键安装服务端
# 默认安装(自动安装 JDK)
curl -fsSL https://jpom.top/docs/install.sh | bash -s Server jdk+default
# 默认安装,并配置开机自启服务
curl -fsSL https://jpom.top/docs/install.sh | bash -s Server jdk+default+service
# 安装服务端和 JDK 环境
curl -fsSL https://jpom.top/docs/install.sh | bash -s Server jdk
# 安装服务端和 JDK、Maven 环境
curl -fsSL https://jpom.top/docs/install.sh | bash -s Server jdk+mvn
启动成功后,服务端默认端口为 2122,可通过 http://127.0.0.1:2122/ 访问管理页面(非本机访问时,把 127.0.0.1 换成服务器 IP)。
如果无法访问管理页面,先检查防火墙是否放行
2122端口:# 放行管理系统的 2122 端口 firewall-cmd --add-port=2122/tcp --permanent # 重启防火墙后生效 firewall-cmd --reload如果系统内已放行端口仍无法访问,并且使用的是云服务器,请到云服务器控制台检查安全组规则。
⚠️ Linux 系统可能有 Firewall、Iptables、SELinux 等多种防火墙,排查时需要逐一检查。
一键安装插件端
如果安装服务端的服务器也需要被管理,请在服务端所在服务器上再安装插件端(两者可以安装在同一服务器,但目录必须不同)。
修改插件端数据、日志存储路径:编辑安装目录下
conf/application.yml中的jpom.path配置。
# 默认安装(自动安装 JDK)
curl -fsSL https://jpom.top/docs/install.sh | bash -s Agent jdk+default
# 默认安装,并配置开机自启服务
curl -fsSL https://jpom.top/docs/install.sh | bash -s Agent jdk+default+service
# 安装插件端和 JDK 环境
curl -fsSL https://jpom.top/docs/install.sh | bash -s Agent jdk
启动成功后,插件端默认端口为 2123,供服务端连接使用。
方式二:📦 容器化安装
⚠️ 需要先安装 Docker,参考 Docker 安装文档。
容器化安装仅提供服务端。由于容器与宿主机环境隔离,插件端的很多功能无法正常使用,因此不建议对插件端做容器化。
一条命令安装
docker run -d --name jpom-server --restart=always -p 2122:2122 jpomdocker/jpom
挂载目录存储数据(部分环境可能存在兼容性问题)
- Docker Hub 仓库
docker pull jpomdocker/jpom
mkdir -p /home/jpom-server/logs
mkdir -p /home/jpom-server/data
mkdir -p /home/jpom-server/conf
docker run -d --name jpom-server --restart=always -p 2122:2122 \
-v /home/jpom-server/logs:/usr/local/jpom-server/logs \
-v /home/jpom-server/data:/usr/local/jpom-server/data \
-v /home/jpom-server/conf:/usr/local/jpom-server/conf \
jpomdocker/jpom
- 阿里云镜像仓库(国内网络)
docker pull registry.cn-chengdu.aliyuncs.com/jpomdocker/jpom
mkdir -p /home/jpom-server/logs
mkdir -p /home/jpom-server/data
mkdir -p /home/jpom-server/conf
docker run -d --name jpom-server --restart=always -p 2122:2122 \
-v /home/jpom-server/logs:/usr/local/jpom-server/logs \
-v /home/jpom-server/data:/usr/local/jpom-server/data \
-v /home/jpom-server/conf:/usr/local/jpom-server/conf \
registry.cn-chengdu.aliyuncs.com/jpomdocker/jpom
使用容器卷存储数据
- Docker Hub 仓库
docker pull jpomdocker/jpom
docker volume create jpom-server-data
docker volume create jpom-server-logs
docker volume create jpom-server-conf
docker run -d --name jpom-server --restart=always -p 2122:2122 \
-v jpom-server-data:/usr/local/jpom-server/data \
-v jpom-server-logs:/usr/local/jpom-server/logs \
-v jpom-server-conf:/usr/local/jpom-server/conf \
jpomdocker/jpom
- 阿里云镜像仓库(国内网络)
docker pull registry.cn-chengdu.aliyuncs.com/jpomdocker/jpom
docker volume create jpom-server-data
docker volume create jpom-server-logs
docker volume create jpom-server-conf
docker run -d --name jpom-server --restart=always -p 2122:2122 \
-v jpom-server-data:/usr/local/jpom-server/data \
-v jpom-server-logs:/usr/local/jpom-server/logs \
-v jpom-server-conf:/usr/local/jpom-server/conf \
registry.cn-chengdu.aliyuncs.com/jpomdocker/jpom
在低版本 Docker 中运行可能出现
ls: cannot access '/usr/local/jpom-server/lib/': Operation not permitted错误,此时需要添加--privileged参数,例如:docker run -d --name jpom-server --privileged -p 2122:2122 jpomdocker/jpom安装 Docker、配置镜像、自动启动、查找安装目录等可参考文档 Docker 容器安装教程。
方式三:💾 下载安装包
- 从 下载中心 下载对应的
server-x.x.x-release、agent-x.x.x-release安装包(zip 或 tar.gz)及.sha1校验文件。 - 校验安装包完整性(推荐),例如
sha1sum server-x.x.x-release.zip,与下载的.sha1文件内容比对。 - 解压安装包,并将整个目录上传到目标服务器。
- 安装插件端
agent-x.x.x-release目录为插件端的全部安装文件- 启动插件端:Windows 使用 bat 脚本,Linux 使用 sh 脚本(如出现乱码或无法执行,请检查编码格式、换行符是否匹配)
- 插件端默认运行端口:
2123
- 安装服务端
server-x.x.x-release目录为服务端的全部安装文件- 启动服务端:Windows 使用 bat 脚本,Linux 使用 sh 脚本(如出现乱码或无法执行,请检查编码格式、换行符是否匹配)
- 服务端默认运行端口:
2122,访问管理页面:http://127.0.0.1:2122/(非本机访问时,把127.0.0.1换成服务器 IP)
方式四:⌨️ 编译安装
环境要求:JDK 8、Maven 3.6+、Node.js 18。
⚠️ 构建顺序不能颠倒:必须先构建前端,再打包后端,否则管理页面会 404 或显示旧页面。
- 从 Jpom 仓库 拉取最新完整代码(建议使用 master 分支)
- 构建前端:切换到
web-vue目录,执行npm install,再执行npm run build(产物输出到modules/server/src/main/resources/dist) - 构建后端:回到项目根目录,执行
mvn clean package - 安装插件端:安装包位于
modules/agent/target/agent-x.x.x-release,将整个目录上传到服务器后启动,默认端口2123 - 安装服务端:安装包位于
modules/server/target/server-x.x.x-release,将整个目录上传到服务器后启动,默认端口2122
也可以使用
script/release.bat或script/release.sh快速打包。
方式五:🧩 Docker Compose 一键启动
前提:已安装 Git、Docker 与 Docker Compose。该方式会在本机拉取代码并自动构建、启动服务。
启动前请修改
.env文件中的SERVER_TOKEN等配置,切勿将示例 token 用于生产环境。
# 安装 git(CentOS 使用 yum,Ubuntu/Debian 使用 apt-get install -y git)
yum install -y git
git clone https://gitee.com/dromara/Jpom.git
cd Jpom
# Docker Compose v2
docker compose -f docker-compose.yml up -d
# Docker Compose v1(旧版本)
docker-compose -f docker-compose.yml up -d
仓库还提供
docker-compose-local.yml(本地构建)和docker-compose-cluster.yml(集群)示例,可按需使用。如需重新构建镜像,可执行
docker compose -f docker-compose.yml up -d --build,或docker compose -f docker-compose.yml build --no-cache。
方式六:💻 本地编译运行(开发调试)
- 从 Jpom 仓库 拉取最新完整代码(建议使用 master 分支;想体验新功能可使用 dev 分支)
- 构建前端:切换到
web-vue目录,执行npm install、npm run build - 运行服务端:启动
org.dromara.jpom.JpomServerApplication,默认端口2122 - 运行插件端:启动
org.dromara.jpom.JpomAgentApplication,留意控制台打印的默认账号密码信息,默认端口2123 - 前端开发模式:切换到
web-vue目录执行npm run dev,访问http://127.0.0.1:3000/(非本机访问时把127.0.0.1换成服务器 IP)
🎛️ 管理 Jpom 服务
安装包的 bin/ 目录提供管理脚本,Server 与 Agent 分别使用各自的脚本。
- Windows 系统使用 bat 脚本文件
:: 服务端管理脚本(命令行)
:: 用法:Server.bat [start|stop|restart|status]
./bin/Server.bat start
./bin/Server.bat stop
./bin/Server.bat restart
./bin/Server.bat status
:: 服务端管理脚本(控制面板),按面板提示输入操作
./bin/Server.bat
:: 插件端管理脚本(命令行)
:: 用法:Agent.bat [start|stop|restart|status]
./bin/Agent.bat start
./bin/Agent.bat stop
./bin/Agent.bat restart
./bin/Agent.bat status
:: 插件端管理脚本(控制面板),按面板提示输入操作
./bin/Agent.bat
Windows 系统中执行启动后需要根据日志跟进启动状态;如果出现乱码,请检查或修改编码格式,bat 编码格式推荐为
GB2312。
- Linux 系统使用 sh 脚本文件
# 服务端
./bin/Server.sh start # 启动 Jpom 服务端
./bin/Server.sh stop # 停止 Jpom 服务端
./bin/Server.sh restart # 重启 Jpom 服务端
./bin/Server.sh status # 查看 Jpom 服务端运行状态
./bin/Service.sh install # 创建 Jpom 服务端的应用服务(jpom-server)
# 插件端
./bin/Agent.sh start # 启动 Jpom 插件端
./bin/Agent.sh stop # 停止 Jpom 插件端
./bin/Agent.sh restart # 重启 Jpom 插件端
./bin/Agent.sh status # 查看 Jpom 插件端运行状态
./bin/Service.sh install # 创建 Jpom 插件端的应用服务(jpom-agent)
🐧 Linux 系统服务方式管理
以下服务安装方式仅供参考,实际中可根据需求自定义配置。
在 Server 或 Agent 安装目录执行
./bin/Service.sh install(建议使用 root 或 sudo)后,会注册对应的 systemd 服务(jpom-server/jpom-agent)。systemctl {status | start | stop | restart | enable} jpom-server systemctl {status | start | stop | restart | enable} jpom-agent
⚙️ Jpom 参数配置
配置文件位于程序运行根路径的 conf/ 目录:
程序配置 ./conf/application.yml
- 插件端示例:
application.yml - 服务端示例:
application.yml
日志配置 ./conf/logback.xml
- 插件端示例:
logback.xml - 服务端示例:
logback.xml
数据目录、端口、数据库等均可在
application.yml中配置;升级前建议备份data/、conf/目录。
📝 常见问题、操作说明
实践案例
部分图片加载可能较慢。
- 本地构建 + SSH 发布 Java 项目
- 本地构建 + 项目发布 Node 项目
- 本地构建 + SSH 发布 Node 项目
- 本地构建 + 自定义管理 Python 项目
- 自定义管理 Java 项目
- 管理编译安装的 nginx
- 管理 Docker
- 容器构建 + 项目发布 Java 项目
- 更多实践案例 >>
构建案例仓库代码
Node.js 编译指定目录:
yarn --cwd xxxx/ install
yarn --cwd xxxx/ build
Maven 编译指定目录:
mvn -f xxxx/pom.xml clean package
🛠️ 整体架构

🐞 交流讨论、反馈 BUG、提出建议
- 欢迎加入 Jpom 微信交流群,和我们一起交流讨论(添加小助手时备注 Jpom 进群)
- 开源项目离不开社区的支持。如果项目帮助到了您,并且想给我们加个餐,欢迎扫描下方微信、支付宝收款码赞赏,或通过 Gitee 赞赏(在项目首页下方点击捐赠,支持微信和支付宝)。赞赏记录
- 购买开源周边商品:周边介绍
- 企业技术服务请单独与我们联系沟通服务方案
- 反馈 BUG、提出建议,欢迎新建 issues,开发人员会不定期查看回复
- 参与贡献,请查看贡献指南
感谢所有赞赏以及参与贡献的小伙伴,您们的支持是我们不断更新前进的动力!
💖 周边商品
为了更好地维持开源项目,我们推出了周边商品。
购买周边既能获得一份小商品,也能支持项目持续运营(周边商品价格会比市场价稍高,介意请勿下单)。
🔨 贡献指南
提交贡献即认为签署了 CLA 协议。
贡献须知
Jpom 作为开源项目,离不开社区的支持,欢迎任何人修改和提出建议。贡献无论大小,您的贡献会帮助背后成千上万的使用者以及开发者,您做出的贡献也会永远保留在项目的贡献者名单中,这也是开源项目的意义所在!
为了保证项目代码的质量与规范,以及帮助您更快地了解项目结构,请在贡献之前阅读:
贡献步骤(代码)
Fork 本仓库。
Fork 后您的账号下会多出一个和本仓库一样的仓库,把您账号下的仓库 clone 到本地。请把链接中的用户名替换为您自己的 Gitee 用户名:代码贡献请使用
dev分支。git clone -b dev https://gitee.com/用户名/Jpom.git修改代码并提交。
# 把修改的文件添加到暂存区 git add . # 提交到本地仓库,说明您具体做了什么修改 git commit -m '填写您做了什么修改' # 推送到远程仓库 git push origin dev在 Gitee 上向
dromara/Jpom的dev分支发起 Pull Request,等待维护者审核合并。
文档贡献
项目文档已独立为 jpom-docs 仓库(main 分支),文档站内容位于该仓库的 docs/ 目录。文档相关修改请提交到该仓库,不再提交到主仓的 docs 分支。
项目分支说明
| 分支 | 说明 |
|---|---|
| master | 稳定发布分支,受保护,不接受 PR。beta 分支测试通过后合并到此分支。 |
| beta | beta 预发布分支,受保护,不接受 PR。dev 分支测试通过后合并到此分支。 |
| dev | 开发分支,接受 PR,功能与修复请提交到 dev 分支。 |
目前主要使用
dev分支接受 PR;docs分支已归档,文档请提交到 jpom-docs 仓库。
贡献者
Made with contrib.rocks.
🌍 知识星球
🔔 精品项目推荐
| 项目名称 | 项目地址 | 项目介绍 |
|---|---|---|
| SpringBoot_v2 | https://gitee.com/bdj/SpringBoot_v2 | 基于 SpringBoot 的一款纯净脚手架 |
| TLog GVP 项目 | https://gitee.com/dromara/TLog | 一个轻量级的分布式日志标记追踪神器,10 分钟即可接入,自动对日志打标签完成微服务的链路追踪 |
| Sa-Token | https://gitee.com/dromara/sa-token | 这可能是史上功能最全的 Java 权限认证框架! |
| Erupt | https://gitee.com/erupt/erupt | 零前端代码,纯注解开发 admin 管理后台 |
| hippo4j | https://gitee.com/magegoofy/hippo4j | 强大的动态线程池框架,附带监控报警功能 |
| HertzBeat | https://gitee.com/dromara/hertzbeat | 易用友好的云监控系统,无需 Agent,具备强大的自定义监控能力 |
📄 开源许可证
Jpom 使用 Mulan PSL v2 许可证,详见 LICENSE。
🤝 鸣谢
- 感谢 JetBrains 提供的免费开源 License:
