Jumpserver-01 容器部署

Jumpserver 堡垒机教程

  • 本教程由羞涩梦整理同步发布,本人技术分享站点:blog.hukanfa.com
  • 转发本文请备注原文链接,本文内容整理日期:2024-02-05
  • csdn 博客名称:五维空间-影子,欢迎关注

1 基础配置

  • 操作如下
    • mysql(5.7及以上版本)配置,具体安装方式请参考前面文章
    # 创建数据库
    create database jumpserver default charset 'utf8' collate utf8_general_ci;
    # 创建用户并授权
    CREATE USER 'jumpserver'@'%' IDENTIFIED BY 'otiA&ZgHWr';
    GRANT ALL ON jumpserver.* TO 'jumpserver'@'%';
    flush privileges;
    
    • redis(6.0及以上),具体安装方式请参考前面文章
    # 设置下密码 redis.conf
    requirepass 26enyp3LjoNF
    
    • 机器配置
    # 官网推荐2核8G,2核4G也可以但生产的话建议给大点
    2core 6G
    

2 随机密钥

  • 说明
    • 分别需要生成 $SECRET_KEY$BOOTSTRAP_TOKEN
    • SECRET_KEY 在后续升级或迁移中需要,做好保存及保密
    • 升级或迁移前请现确保 SECRET_KEY一致,否则数据库所有加密的字段均无法解密
  • 生成操作如下
    • 随机生成 key
    if [ "SECRET_KEY" = "" ]; then SECRET_KEY=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 50`; echo "SECRET_KEY=SECRET_KEY" >> ~/.bashrc; echo SECRET_KEY; else echoSECRET_KEY; fi
    
    • 随机生成 token
    if [ "BOOTSTRAP_TOKEN" = "" ]; then BOOTSTRAP_TOKEN=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 16`; echo "BOOTSTRAP_TOKEN=BOOTSTRAP_TOKEN" >> ~/.bashrc; echo BOOTSTRAP_TOKEN; else echoBOOTSTRAP_TOKEN; fi
    
    • 使用generate_key_token.sh 一键生成
    #!/bin/bash
    if [ ! "SECRET_KEY" ]; then
    SECRET_KEY=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 50`;
    echo "SECRET_KEY=SECRET_KEY" >> ~/.bashrc;
    echo SECRET_KEY;
    else
    echoSECRET_KEY;
    fi  
    if [ ! "BOOTSTRAP_TOKEN" ]; then
    BOOTSTRAP_TOKEN=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 16`;
    echo "BOOTSTRAP_TOKEN=BOOTSTRAP_TOKEN" >> ~/.bashrc;
    echo BOOTSTRAP_TOKEN;
    else
    echoBOOTSTRAP_TOKEN;
    fi
    

3 创建容器

  • 操作如下
    • 创建目录
    mkdir Jumpserver/conf
    
    • 创建存放环境变量信息的文件 conf/jms.env
    SECRET_KEY = xxxxx                # 自行生成随机的字符串, 不要包含特殊字符串, 长度推荐大于等于 50
    BOOTSTRAP_TOKEN = xxxxx           # 自行生成随机的字符串, 不要包含特殊字符串, 长度推荐大于等于 24
    LOG_LEVEL = ERROR                 # 日志等级, 测试环境推荐设置为 DEBUG
    DOMAINS = jms.hkf56.com           # 配置访问域名
    
    DB_ENGINE = mysql                 # 使用 MySQL 数据库
    DB_HOST = 192.168.26.3            # MySQL 数据库 IP 地址
    DB_PORT = 3307                    # MySQL 数据库 端口
    DB_USER = jumpserver              # MySQL 数据库认证用户
    DB_PASSWORD = otiA&ZgHWr          # MySQL 数据库认证密码
    DB_NAME = jumpserver              # JumpServer 使用的数据库名称
    
    REDIS_HOST = 192.168.26.3         # 使用 Redis 缓存
    REDIS_PORT = 6389                 # Redis 服务器 IP 地址
    REDIS_PASSWORD = 26enyp3LjoNF     # Redis 认证密码
    
    • 创建 docker-compose.yaml
    version: '3.5'
    services:
    jumpserver:
      image: jumpserver/jms_all:v3.10.3
      container_name: jumpserver
      restart: always
      ports:
        - 8088:80
        - 2622:2222
      env_file:
        - ./conf/jms.env
      volumes:
        - ./data/core:/opt/jumpserver/data
        - ./data/koko:/opt/koko/data
        - ./data/lion:/opt/lion/data
        - ./data/kael:/opt/kael/data
        - ./data/chen:/opt/chen/data
        - ./data/ngx_logs:/var/log/nginx
    
    • 创建容器
    docker-compose up -d
    

4 访问测试

  • 操作如下
    • 登录信息
    # 地址 http://192.168.26.3:8088
    # 账号密码: admin/admin
    

    image-20240204183126780

5 域名配置

  • 操作如下
    • 创建jms.hkf56.com.conf配置文件
    server {
    listen 80;
    server_name jms.hkf56.com;
    
    location / {
      proxy_pass http://localhost:8088;
    }
    }
    
    • 配置本地解析
    # window 路径  C:\Windows\System32\drivers\etc
    192.168.26.3 jms.hkf56.com
    
    • 接下来就可以使用域名访问