> 技术文档 > Docker 一键部署 JumpServer 堡垒机_docker安装jumpserver

Docker 一键部署 JumpServer 堡垒机_docker安装jumpserver


一、环境准备

bash

# 更新系统sudo apt update && sudo apt upgrade -y# 安装 Dockersudo apt install -y docker.io docker-composesudo systemctl enable --now docker# 配置 Docker 加速器(国内环境)sudo mkdir -p /etc/dockersudo tee /etc/docker/daemon.json <<EOF{ \"registry-mirrors\": [ \"https://docker.mirrors.ustc.edu.cn\", \"https://hub-mirror.c.163.com\" ]}EOFsudo systemctl restart docker# 创建部署目录sudo mkdir -p /opt/jumpserver && cd /opt/jumpserver

二、一键部署 JumpServer

bash

# 下载官方 Docker-Compose 文件sudo curl -sSL https://github.com/jumpserver/jumpserver/releases/latest/download/docker-compose.yml -o docker-compose.yml# 下载环境配置文件模板sudo curl -sSL https://github.com/jumpserver/installer/releases/latest/download/config-example.txt -o config-example.txt# 生成配置文件(根据提示修改)sudo cp config-example.txt .envsudo nano .env

ini

# 关键配置项示例## 设置强密码!!!SECRET_KEY=your_strong_secret_key_32_charsBOOTSTRAP_TOKEN=your_bootstrap_token_16_chars## 数据库配置DB_PASSWORD=StrongDBPass123!## 邮件配置(必填)EMAIL_HOST=smtp.example.comEMAIL_PORT=587EMAIL_HOST_USER=admin@example.comEMAIL_HOST_PASSWORD=EmailPass123!EMAIL_FROM=admin@example.com## 域名配置DOMAINS=jumpserver.yourdomain.com

bash

# 启动 JumpServersudo docker-compose up -d# 查看启动状态sudo docker-compose ps

预期输出:

text

 Name  Command  State  Ports--------------------------------------------------------------------------------jumpserver-core /opt/startup.sh  Up 0.0.0.0:80->8080/tcpjumpserver-koko /opt/entrypoint.sh Up 5000/tcp, 0.0.0.0:2222->2222/tcpjumpserver-mariadb docker-entrypoint.sh mysqld Up 3306/tcpjumpserver-redis docker-entrypoint.sh redis ... Up 6379/tcpjumpserver-web /init Up 0.0.0.0:443->8443/tcp

三、初始配置与访问
  1. 访问控制台

    • 浏览器访问:https:// 或 https://jumpserver.yourdomain.com

    • 使用默认管理员账号:admin / admin

  2. 首次登录强制修改密码

    bash

    # 如果忘记修改密码,可通过命令行重置sudo docker exec -it jumpserver-web python /opt/jumpserver/apps/manage.py changepassword admin
  3. 基本配置

    • 系统设置 → 基本设置 → 配置系统名称和域名

    • 系统设置 → 邮件设置 → 测试邮件发送

    • 系统设置 → 安全设置 → 配置密码策略和MFA


四、数据备份与恢复
1. 自动备份脚本

bash

#!/bin/bash# /opt/jumpserver/backup.shBACKUP_DIR=\"/backup/jumpserver/$(date +%Y%m%d)\"mkdir -p $BACKUP_DIR# 备份数据库sudo docker exec jumpserver-mariadb mysqldump -uroot -p\"${DB_PASSWORD}\" jumpserver > $BACKUP_DIR/jumpserver.sql# 备份配置文件sudo cp /opt/jumpserver/{.env,docker-compose.yml} $BACKUP_DIR/# 备份持久化数据sudo tar -czf $BACKUP_DIR/volumes.tar.gz \\ /opt/jumpserver/core/data \\ /opt/jumpserver/koko/data \\ /opt/jumpserver/web/data# 加密压缩gpg --batch --passphrase \"YourBackupPass\" --symmetric $BACKUP_DIR/*# 保留30天备份find /backup/jumpserver -type d -mtime +30 -exec rm -rf {} \\;
2. 设置定时任务

bash

sudo crontab -e

cron

# 每天凌晨2点备份0 2 * * * /bin/bash /opt/jumpserver/backup.sh
3. 灾难恢复流程

bash

# 1. 恢复数据库gunzip -c jumpserver.sql.gz | sudo docker exec -i jumpserver-mariadb mysql -uroot -p\"${DB_PASSWORD}\" jumpserver# 2. 恢复配置文件sudo cp /backup/jumpserver/20230101/{.env,docker-compose.yml} /opt/jumpserver/# 3. 恢复持久化数据sudo tar -xzf volumes.tar.gz -C /# 4. 重启服务sudo docker-compose down && sudo docker-compose up -d

五、扩展功能配置
1. 集成 LDAP/AD 认证
  1. 登录 JumpServer → 系统设置 → 认证设置 → LDAP

  2. 配置参数:

    ini

    LDAP服务器:ldap://your-ad-server绑定DN:cn=admin,dc=example,dc=com密码:LDAP_Password用户OU:ou=users,dc=example,dc=com用户过滤器:(objectClass=person)
  3. 启用 \"同步用户\" 和 \"创建用户\"

2. 启用 Web Terminal 审计

yaml

# 修改 docker-compose.ymlservices: web: environment: # 启用会话录像 ENABLE_LION: \"true\" # 配置录像存储路径 LION_VIDEO_DIR: \"/opt/lion/video\" volumes: - ./lion:/opt/lion
3. 配置短信认证

bash

# 安装短信插件sudo docker exec -it jumpserver-web pip install jumpserver-sms-aliyun# 重启服务sudo docker-compose restart web

在控制台:系统设置 → 短信设置 → 配置阿里云短信服务

4. 对接云平台自动同步资产

bash

# 创建同步脚本 /opt/jumpserver/sync_assets.sh#!/bin/bash# AWS 示例docker exec jumpserver-web python manage.py sync_instance_from_aws \\ --access-key-id YOUR_AWS_KEY \\ --secret-access-key YOUR_AWS_SECRET \\ --regions us-east-1

设置定时同步:

cron

# 每小时同步一次0 * * * * /opt/jumpserver/sync_assets.sh

六、高可用部署(生产环境)

yaml

# docker-compose-ha.ymlversion: \'3.6\'services: core: image: jumpserver/core:latest deploy: replicas: 3 web: image: jumpserver/web:latest deploy: replicas: 2 db: image: mariadb:10.6 environment: MYSQL_ROOT_PASSWORD: ${DB_PASSWORD} MYSQL_DATABASE: jumpserver volumes: - db-data:/var/lib/mysql deploy: placement: constraints: [node.role == manager]volumes: db-data: driver: local

启动命令:

bash

sudo docker stack deploy -c docker-compose-ha.yml jumpserver

七、安全加固措施
1. 防火墙配置

bash

sudo ufw default deny incomingsudo ufw allow 22/tcp # SSHsudo ufw allow 80/tcp # HTTPsudo ufw allow 443/tcp # HTTPSsudo ufw allow 2222/tcp # Koko SSHsudo ufw enable
2. 安全配置

bash

# 修改 SSH 端口(可选)sudo nano /opt/jumpserver/docker-compose.yml

yaml

services: koko: ports: - \"22222:2222\" # 改为非常用端口
3. 定期安全扫描

bash

# 使用 Trivy 扫描容器漏洞sudo docker run --rm -v /var/run/docker.sock:/var/run/docker.sock aquasec/trivy:0.18.3 jumpserver/core:latest

八、注意事项
  1. 版本升级

    bash

    # 1. 备份数据# 2. 停止服务sudo docker-compose down# 3. 更新镜像sudo docker-compose pull# 4. 启动服务sudo docker-compose up -d
  2. 性能监控

    bash

    # 安装 cAdvisorsudo docker run \\ --volume=/:/rootfs:ro \\ --volume=/var/run:/var/run:ro \\ --volume=/sys:/sys:ro \\ --volume=/var/lib/docker/:/var/lib/docker:ro \\ --publish=8080:8080 \\ --detach=true \\ --name=cadvisor \\ google/cadvisor:latest

    访问 http://:8080 监控容器资源

  3. 证书管理

    • 使用 Let\'s Encrypt 自动续期:

      bash

      sudo docker run -it --rm --name certbot \\ -v \"/etc/letsencrypt:/etc/letsencrypt\" \\ -v \"/var/lib/letsencrypt:/var/lib/letsencrypt\" \\ certbot/certbot renew
  4. 常见问题排查

    bash

    # 查看日志sudo docker-compose logs -f coresudo docker-compose logs -f web# 数据库连接测试sudo docker exec -it jumpserver-mariadb mysql -uroot -p${DB_PASSWORD}# 重置管理员密码sudo docker exec -it jumpserver-web python manage.py changepassword admin
  5. 合规性要求

    • 开启所有操作的审计日志

    • 配置会话录像保留180天

    • 启用双因素认证(MFA)

    • 定期审查授权规则


通过以上步骤,您将获得一个安全、可靠的企业级堡垒机系统。建议每月执行以下维护任务:

  1. 安全补丁更新:sudo docker-compose pull

  2. 备份恢复测试

  3. 审计日志审查

  4. 漏洞扫描与修复

  5. 授权策略复核

JumpServer 官方文档:JumpServer 文档