JumpServer装完不能访问主因是网络、服务绑定和端口映射未对齐;需检查docker-compose.yml中jms_nginx的ports配置、宿主机80端口占用情况、云平台安全组放行,以及DOCKER_SUBNET与宿主机网段是否冲突。

JumpServer 不是装完就能访问的“开箱即用”软件,装完 ./jmsctl.sh install 成功 ≠ 能打开 Web 界面。绝大多数连不上,问题不在脚本本身,而在网络打通、服务绑定和容器映射这三步没对齐。
docker ps 看不到 jms_nginx 或 PORTS 列没 0.0.0.0:80->80/tcp
说明宿主机 80 端口根本没映射进容器,浏览器自然打不开。
- 检查
/opt/jumpserver/config/docker-compose.yml中jms_nginx的ports段是否被注释或删了——必须保留- "80:80"或- "0.0.0.0:80:80" - 运行
sudo ss -tlnp | grep ':80',确认宿主机 80 端口没被 Nginx/Apache 占用;若被占,要么停掉旧服务,要么改 JumpServer 的对外端口(如- "8080:80") - 云服务器(阿里云/腾讯云/轻量应用服务器)必须在控制台「安全组」里放行 TCP 80(或你改的其他端口),仅开
ufw或firewalld不够
能 ping 通 IP,但浏览器报 502 或连接被拒绝
这是 Nginx 反代失败,本质是它连不上后端 jms_core 容器,常见于数据库/Redis 地址填错。
- 如果用了外部 MySQL/Redis(即
USE_EXTERNAL_MYSQL=1),config.txt里的DB_HOST和REDIS_HOST绝不能填127.0.0.1——容器内127.0.0.1指自己,不是宿主机 - 必须填宿主机真实内网 IP(如
192.168.10.50),并确保该 IP 在 MySQL/Redis 的 bind 配置中显式监听:
— MySQL:修改/etc/my.cnf,设bind-address = 192.168.10.50,再执行GRANT ALL ON jumpserver.* TO 'jumpserver'@'192.168.10.50' IDENTIFIED BY 'xxx';
— Redis:修改/etc/redis.conf,把bind 127.0.0.1改成bind 192.168.10.50,并设protected-mode no - 改完重启服务:
sudo systemctl restart mysqld redis,再用ss -tlnp | grep ':3306\|:6379'确认监听在对应 IP 上
执行 quick_start.sh 卡住或报 curl/tar 错误
不是脚本坏了,是环境准备没到位。
- 先跑
which curl wget tar iptables,缺一个就 halt;CentOS/RHEL 还要yum install -y epel-release再装依赖 - 国内服务器直连 GitHub 极易超时,别用官方原始 URL,换镜像源:
curl -sSL https://resource.fit2cloud.com/jumpserver/jumpserver/releases/latest/download/quick_start.sh | bash - 不要
sudo bash quick_start.sh—— 脚本内部已做权限判断;若提示 permission denied,先chmod +x quick_start.sh - 解压失败大概率是磁盘空间不足(
/var/lib/docker默认路径),用df -h查,必要时加环境变量DOCKER_DIR=/data/docker再重装
docker ps 显示所有容器都是 Exited,./jmsctl.sh status 全是 down
很可能是 DOCKER_SUBNET 和宿主机网段冲突,Docker 静默失败。
- 默认
DOCKER_SUBNET=192.168.250.0/24,如果你的宿主机 IP 正好是192.168.250.x,就会冲突 - 查宿主机网段:
ip route | grep '^default' | awk '{print $3}' | xargs ipcalc -n或直接ip a - 编辑
/opt/jumpserver/config/config.txt,把DOCKER_SUBNET改成不冲突的(如172.20.0.0/16或10.200.0.0/16) - 然后彻底清理:
./jmsctl.sh down→./jmsctl.sh install→./jmsctl.sh start
真正卡住人的从来不是安装命令本身,而是容器网络怎么跟宿主机上的 MySQL/Redis 对上、端口怎么从容器透出来、以及云平台那层安全组有没有被忽略。这些地方一错,日志里往往没明显报错,只表现为“页面打不开”。


















