JumpServer 是开源堡垒机中热度较高的一个方案,它把资产纳管、权限分配、会话代理和操作审计集中到一个平台里。部署 JumpServer 有好几种方式,使用 Docker Compose 是其中对新手最友好的一种,不需要手动解决 Python 依赖、前端构建和数据库初始化问题。下面我会以一台干净的 Linux 服务器为对象,从环境检查开始,完整说明部署过程,并给出容易踩坑的环节和对应处理方法。

一、部署前需要准备哪些环境
在开始安装之前,先确认服务器满足最低运行条件。JumpServer 由多个容器组成,包括 Web 服务、Core 核心服务、Koko 和 Lion 等组件,因此内存建议不低于 4GB,磁盘剩余空间最好在 40GB 以上。操作系统可以是主流的 Linux 发行版,Ubuntu 20.04、Debian 11、Rocky Linux 9 或 CentOS 7.9 都可以,本文命令以 Ubuntu/Debian 系为主。
Docker 版本需要 20.10 以上,Compose 需要使用 v2 语法。可以先执行下面的命令检查当前环境:
docker --version docker compose version
如果提示命令不存在,Ubuntu/Debian 可以直接安装 docker.io 和 docker-compose-plugin,CentOS/RHEL 则使用 dnf 或 yum 安装 Docker CE 后确认 docker compose 子命令可用。安装完成后建议执行 docker info 确认没有权限问题,普通用户需要加入 docker 组或者使用 sudo。
端口方面,JumpServer 默认会占用 80 端口作为 Web 入口,8080 端口作为 Core API,2222 端口用于 SSH 资产连接。服务器的安全组或 firewalld 需要放行这些端口,尤其是 80 和 2222。如果 80 端口已经被 Nginx 或其他服务占用,后面可以通过修改 .env 中的 HTTP_PORT 调整,或者在启动前直接改 docker-compose.yml 里的端口映射。
二、获取部署文件并启动容器
JumpServer 官方在 GitHub 仓库中提供了完整的 Docker Compose 编排文件,我们不需要自己编写复杂的 YAML。先使用 git 把仓库克隆到服务器上,加上 --depth=1 可以只取最近一次提交,显著减少下载体积。
git clone --depth=1 https://github.com/jumpserver/jumpserver.git cd jumpserver
克隆完成后,目录里会包含 docker-compose.yml 和 .env.example。其中 .env 用于存放敏感配置,例如 SECRET_KEY 和 BOOTSTRAP_TOKEN。这两个值不能使用示例默认值,必须自行生成随机字符。下面的命令会先复制环境变量模板,再用系统随机数替换关键字段:
cp .env.example .env sed -i "s/SECRET_KEY=/SECRET_KEY=$(cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 50)/g" .env sed -i "s/BOOTSTRAP_TOKEN=/BOOTSTRAP_TOKEN=$(cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 16)/g" .env
执行后可以用 grep -E '^(SECRET_KEY|BOOTSTRAP_TOKEN)' .env 查看这两个字段是否已经变成随机值。确认无误后,运行下面的命令启动全部容器。第一次启动会从镜像仓库拉取多个镜像,耗时取决于网络质量,如果速度较慢可以跳到第四节查看镜像加速方案。
docker compose up -d docker compose ps
docker compose ps 输出中应看到 core、web、koko、lion、mysql、redis 等服务的状态为 Up。如果某个服务处于 Restarting 或 Exited 状态,可以用 docker compose logs 服务名 查看具体报错,常见原因包括端口冲突和数据库文件目录权限不足。
三、首次登录与资产纳管
容器全部启动后,打开浏览器访问 http://服务器IP,如果修改过 HTTP_PORT,则访问对应端口。默认管理员账号是 admin,初始密码也是 admin。第一次登录时系统会强制要求修改密码,这里建议设置成至少 12 位的强密码,因为 admin 同时拥有平台最高权限。
登录后先不要急着添加资产,先理解 JumpServer 的授权模型。平台中几个核心概念是:用户、资产、管理用户、系统用户和授权规则。用户是登录堡垒机的账号;资产是需要纳管的服务器;管理用户是资产上的高权限账号,用于推送系统用户和获取资产信息;系统用户是实际登录资产时使用的账号;授权规则把用户和资产绑定起来。这个模型理解清楚后,添加服务器的流程就很清晰。
以纳管一台 Linux 服务器为例,先在资产管理中创建该资产,填写 IP、协议和端口;然后添加管理用户,通常是 root 或具备 sudo 权限的账号;接着创建系统用户,比如一个普通权限的 SSH 账号;最后在授权规则中把目标用户、资产和系统用户关联起来。完成后可以让用户通过 Web 终端连接资产,或者使用 JumpServer 提供的 SSH 代理地址进行访问。
如果希望使用域名访问并启用 HTTPS,可以将 JumpServer 的 Web 服务放在 Nginx 反向代理之后。Nginx 负责监听 443 端口并转发到本机 80 或 8080,证书申请和续期也可以由 Nginx 统一处理。反向代理配置不复杂,关键是 proxy_set_header 要保留原始 Host 和客户端 IP,否则 JumpServer 中记录的登录来源可能全是 127.0.0.1。
四、常见问题与注意事项
第一类问题是镜像拉取缓慢。Docker Hub 在国内访问不稳定,可以通过配置镜像加速器缓解。编辑 /etc/docker/daemon.json,加入下面的内容后重启 Docker:
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}
重启完成后执行 systemctl restart docker,再重新运行 docker compose up -d。如果服务器之前已经拉取了部分镜像,可以使用 docker compose pull 补齐。
第二类问题是端口冲突。如果 80 端口被占用,web 容器可能启动失败或无法访问。先用 ss -tulnp | grep ':80' 查看占用进程,确认是其他服务后,修改 .env 中的 HTTP_PORT 为 8081 这类空闲端口,再执行 docker compose down 后重新 docker compose up -d。注意不要只改宿主机映射,还要让 Core 的外网访问地址同步调整。
第三类是数据持久化。JumpServer 的核心数据保存在数据库里,容器删除并不等于数据删除,但不要在生产环境随意使用 docker compose down -v,因为 -v 会连数据卷一起删除。日常备份可以直接导出数据库,命令如下:
docker compose exec mysql mysqldump -uroot -p jumpserver > backup.sql
备份文件建议定期复制到其他服务器,避免单点磁盘故障导致数据不可恢复。升级 JumpServer 前也必须先备份数据库和 .env 文件,升级操作需要参考官方文档的版本迁移说明,不要直接改镜像标签后重启。
最后是安全注意事项。默认管理员密码必须修改;.env 文件权限建议设置为 600,避免其他系统用户读取;数据库和 Redis 端口不要暴露到公网;2222 端口如果对公网开放,应配合安全组或防火墙限制来源 IP。只要做好这些基础加固,Docker 版 JumpServer 完全可以作为中小团队的正式堡垒机使用。
Docker安装JumpServerJumpServer堡垒机Docker Compose修改时间:2026-09-29 10:33:33