基于docker-compose部署jumpserver

组件说明

Jumpserver 为管理后台, 管理员可以通过 Web 页面进行资产管理、用户管理、资产授权等操作, 用户可以通过 Web 页面进行资产登录, 文件管理等操作

koko 为 SSH Server 和 Web Terminal Server 。用户可以使用自己的账户通过 SSH 或者 Web Terminal 访问 SSH 协议和 Telnet 协议资产

Luna 为 Web Terminal Server 前端页面, 用户使用 Web Terminal 方式登录所需要的组件

Guacamole 为 RDP 协议和 VNC 协议资产组件, 用户可以通过 Web Terminal 来连接 RDP 协议和 VNC 协议资产 (暂时只能通过 Web Terminal 来访问)

端口说明

Jumpserver 默认 Web 端口为 8080/tcp, 默认 WS 端口为 8070/tcp, 配置文件 jumpserver/config.yml

koko 默认 SSH 端口为 2222/tcp, 默认 Web Terminal 端口为 5000/tcp 配置文件在 koko/config.yml

Guacamole 默认端口为 8081/tcp, 配置文件 /config/tomcat9/conf/server.xml

Nginx 默认端口为 80/tcp

Redis 默认端口为 6379/tcp

Mysql 默认端口为 3306/tcp

Protocol Server name Port
TCP Jumpserver 80
TCP Guacamole
TCP Db 3306
TCP Redis 6379
TCP koko 2222
环境

系统: Centos 7

NFS-server: 192.168.150.192

数据库 IP: 192.168.150.45

Redis ip: 192.168.150.45

Jumpserver IP: 192.168.150.45 192.168.150.26

koko IP: 192.168.150.45 192.168.150.26

Guacamole IP: 192.168.150.45 192.168.150.26

Tengine 代理IP: 192.168.150.45 192.168.150.26

安全设置

ssh、telnet协议 资产的防火墙设置允许 koko 与 jumpserver 访问

rdp协议 资产的防火墙设置允许 guacamole 与jumpserver 访问

防火墙设置

根据需求开放对应的端口,或者直接关闭防火墙

systemctl stop firewalld.service
systemctl disable firewalld.service
NFS部署
  1. 安装epel库

    yum -y install epel-release wget
  2. 安装nfs-server

    yum -y install nfs-utils rpcbind
    systemctl enable rpcbind nfs-server nfs-lock nfs-idmap
    systemctl start rpcbind nfs-server nfs-lock nfs-idmap
  3. 创建NFS共享目录

    mkdir /data
  4. 设置NFS访问权限

    vim /etc/exports
    /data 192.168.150.*(rw,sync,no_root_squash)

    /data 是刚才创建的将被共享的目录, 192.168.150.* 表示整个 192.168.150.* 的资产都有括号里面的权限

    也可以写具体的授权对象 /data 192.168.150.45(rw,sync,no_root_squash) 192.168.150.26(rw,sync,no_root_squash)

  5. 使exports生效

    exportfs -a
  6. 安装nfs-client (150.45 and 150.26)

    showmount -e 192.168.150.192
    mkdir -p /opt/jumpserver/data
    restorecon -R /opt/jumpserver/data/
    mount -t nfs 192.168.150.192:/data /opt/jumpserver/data
    echo "192.168.150.192:/data /opt/jumpserver/data nfs defaults 0 0" >> /etc/fstab
docker-compose部署
  1. 安装docker

安装以下依赖包

yum install -y yum-utils device-mapper-persistent-data lvm2

添加docker的yum源

yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

更新yum源缓存, 安装docker-ce

$ sudo yum makecache fast
$ sudo yum install docker-ce

配置镜像加速器

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://zggyaen3.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

普通用户需要加入docker组

$ sudo usermod -a -G docker ${USER}

修改docker存储位置(可以不改)

$ sudo systemctl stop docker
$ sudo mv /var/lib/docker /home/lan/docker
$ sudo ln -s /home/lan/docker /var/lib/docker
$ sudo systemctl start docker
$ sudo systemctl enable docker
  1. docker-compose安装
$ sudo curl -L https://github.com/docker/compose/releases/download/1.23.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose

如果下载很慢可手动下载,再上传至系统

下载路径: https://github.com/docker/compose/releases/ 可以选择对应的版本下载

部署jumpserver
  1. 下载jumpserver压缩包

    wget https://github.com/jumpserver/Dockerfile.git
    unzip Dockerfile-master.zip
  2. 使用shell脚本生成SECRET_KEY和BOOTSTRAP_TOKEN

    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
    echo $SECRET_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
    echo $BOOTSTRAP_TOKEN;
    fi
  3. 修改.env文件,设置mysql,redis密码

    vim .env
    
    
    # 版本号可以自己根据项目的版本修改
    Version=1.5.9 # MySQL
    DB_HOST=192.168.150.45
    DB_PORT=3306
    DB_USER=jumpserver
    DB_PASSWORD=password
    DB_NAME=jumpserver # Redis
    REDIS_HOST=192.168.150.45
    REDIS_PORT=6379
    REDIS_PASSWORD=password # Core
    SECRET_KEY=15hMccXFn40TCKJETDnjlUhkZEXIAcq3E3aQ6T6LDmfLUN0oAV
    BOOTSTRAP_TOKEN=HT8qH0wSuyQjcNyh ##
    # SECRET_KEY 保护签名数据的密匙, 首次安装请一定要修改并牢记, 后续升级和迁移不可更改, 否则将导致加密的数据不可解密。
    # BOOTSTRAP_TOKEN 为组件认证使用的密钥, 仅组件注册时用。组件指 koko、guacamole

    在150.45上修改docker-compose

    vim docker-compose.yml
    
    
    version: '3' # 由于测试环境资源有限,我的mysql跟redis也是部署在了150.45, 所以在150.26那台上面指定mysql跟redis的地址就可以,不需要在启动mysql和redis的容器
    services:
    mysql:
    image: jumpserver/jms_mysql:${Version}
    container_name: jms_mysql
    restart: always
    tty: true
    environment:
    DB_PORT: $DB_PORT
    DB_USER: $DB_USER
    DB_PASSWORD: $DB_PASSWORD
    DB_NAME: $DB_NAME
    ports:
    - 3306:3306
    volumes:
    - /opt/jumpserver/data/mysql-master:/var/lib/mysql
    - /opt/jumpserver/data/mysql-master.cnf:/etc/my.cnf
    networks:
    - jumpserver redis:
    image: jumpserver/jms_redis:${Version}
    container_name: jms_redis
    restart: always
    tty: true
    environment:
    REDIS_PORT: $REDIS_PORT
    REDIS_PASSWORD: $REDIS_PASSWORD
    ports:
    - 6379:6379
    volumes:
    - /opt/jumpserver/data/redis-data:/var/lib/redis/
    networks:
    - jumpserver core:
    image: jumpserver/jms_core:${Version}
    container_name: jms_core
    restart: always
    tty: true
    environment:
    SECRET_KEY: $SECRET_KEY
    BOOTSTRAP_TOKEN: $BOOTSTRAP_TOKEN
    DB_HOST: $DB_HOST
    DB_PORT: $DB_PORT
    DB_USER: $DB_USER
    DB_PASSWORD: $DB_PASSWORD
    DB_NAME: $DB_NAME
    REDIS_HOST: $REDIS_HOST
    REDIS_PORT: $REDIS_PORT
    REDIS_PASSWORD: $REDIS_PASSWORD
    depends_on:
    - mysql
    - redis
    volumes:
    - core-data:/opt/jumpserver/data
    networks:
    - jumpserver koko:
    image: jumpserver/jms_koko:${Version}
    container_name: jms_koko
    restart: always
    tty: true
    environment:
    CORE_HOST: http://core:8080
    BOOTSTRAP_TOKEN: $BOOTSTRAP_TOKEN
    depends_on:
    - core
    - mysql
    - redis
    volumes:
    - koko-keys:/opt/koko/data/keys
    ports:
    - 2222:2222
    networks:
    - jumpserver guacamole:
    image: jumpserver/jms_guacamole:${Version}
    container_name: jms_guacamole
    restart: always
    tty: true
    environment:
    JUMPSERVER_SERVER: http://core:8080
    BOOTSTRAP_TOKEN: $BOOTSTRAP_TOKEN
    JUMPSERVER_KEY_DIR: /config/guacamole/keys
    GUACAMOLE_HOME: /config/guacamole
    GUACAMOLE_LOG_LEVEL: ERROR
    JUMPSERVER_ENABLE_DRIVE: 'true'
    depends_on:
    - core
    - mysql
    - redis
    volumes:
    - guacamole-keys:/config/guacamole/keys
    networks:
    - jumpserver nginx:
    image: jumpserver/jms_nginx:${Version}
    container_name: jms_nginx
    restart: always
    tty: true
    depends_on:
    - core
    - koko
    - mysql
    - redis
    volumes:
    - core-data:/opt/jumpserver/data
    ports:
    - 80:80
    networks:
    - jumpserver volumes:
    mysql-data:
    redis-data:
    core-data:
    koko-keys:
    guacamole-keys: networks:
    jumpserver:

    在150.26上修改docker-compose文件

    version: '3'
    services:
    core:
    image: jumpserver/jms_core:${Version}
    container_name: jms_core
    restart: always
    tty: true
    environment:
    SECRET_KEY: $SECRET_KEY
    BOOTSTRAP_TOKEN: $BOOTSTRAP_TOKEN
    DB_HOST: $DB_HOST
    DB_PORT: $DB_PORT
    DB_USER: $DB_USER
    DB_PASSWORD: $DB_PASSWORD
    DB_NAME: $DB_NAME
    REDIS_HOST: $REDIS_HOST
    REDIS_PORT: $REDIS_PORT
    REDIS_PASSWORD: $REDIS_PASSWORD
    volumes:
    - /opt/jumpserver/data/core-data:/opt/jumpserver/data
    networks:
    - jumpserver koko:
    image: jumpserver/jms_koko:${Version}
    container_name: jms_koko
    restart: always
    tty: true
    environment:
    CORE_HOST: http://core:8080
    BOOTSTRAP_TOKEN: $BOOTSTRAP_TOKEN
    depends_on:
    - core
    volumes:
    - /opt/jumpserver/data/koko-keys:/opt/koko/data/keys
    ports:
    - 2222:2222
    networks:
    - jumpserver guacamole:
    image: jumpserver/jms_guacamole:${Version}
    container_name: jms_guacamole
    restart: always
    tty: true
    environment:
    JUMPSERVER_SERVER: http://core:8080
    BOOTSTRAP_TOKEN: $BOOTSTRAP_TOKEN
    JUMPSERVER_KEY_DIR: /config/guacamole/keys
    GUACAMOLE_HOME: /config/guacamole
    GUACAMOLE_LOG_LEVEL: ERROR
    JUMPSERVER_ENABLE_DRIVE: 'true'
    depends_on:
    - core
    volumes:
    - /opt/jumpserver/data/guacamole-keys:/config/guacamole/keys
    networks:
    - jumpserver nginx:
    image: jumpserver/jms_nginx:${Version}
    container_name: jms_nginx
    restart: always
    tty: true
    depends_on:
    - core
    - koko
    volumes:
    - /opt/jumpserver/data/core-data:/opt/jumpserver/data
    ports:
    - 80:80
    networks:
    - jumpserver volumes:
    core-data:
    koko-keys:
    guacamole-keys: networks:
    jumpserver:
  4. 启动容器

docker-compose up -d

  1. 打开浏览器访问150.45和150.26,默认账号密码是admin, 在浏览器上测试数据是否会同步

基于docker-compose部署jumpserver的更多相关文章

  1. 基于Docker Compose部署分布式MinIO集群

    一.概述 Minio 是一个基于Go语言的对象存储服务.它实现了大部分亚马逊S3云存储服务接口,可以看做是是S3的开源版本,非常适合于存储大容量非结构化的数据,例如图片.视频.日志文件.备份数据和容器 ...

  2. 使用Docker Compose部署基于Sentinel的高可用Redis集群

    使用Docker Compose部署基于Sentinel的高可用Redis集群 https://yq.aliyun.com/articles/57953 Docker系列之(五):使用Docker C ...

  3. Docker Compose部署项目到容器-基于Tomcat和mysql的项目yml配置文件代码

    场景 Docker-Compose简介与Ubuntu Server 上安装Compose: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/deta ...

  4. Ubuntu Server 上使用Docker Compose 部署Nexus(图文教程)

    场景 Docker-Compose简介与Ubuntu Server 上安装Compose: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/deta ...

  5. Docker Compose部署Nexus3时的docker-compose,yml代码

    场景 Docker-Compose简介与Ubuntu Server 上安装Compose: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/deta ...

  6. Docker Compose部署GitLab服务,搭建自己的代码托管平台(图文教程)

    场景 Docker-Compose简介与Ubuntu Server 上安装Compose: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/deta ...

  7. Docker Compose 部署 Redis 及原理讲解 | 懒人屋

    原文:Docker Compose 部署 Redis 及原理讲解 | 懒人屋 Docker Compose 部署 Redis 及原理讲解  4.4k  字    16  分钟    2019-10-1 ...

  8. 基于docker 如何部署surging分布式微服务引擎

    1.前言 转眼间surging 开源已经有1年了,经过1年的打磨,surging已从最初在window 部署的分布式微服务框架,到现在的可以在docker部署利用rancher 进行服务编排的分布式微 ...

  9. DCOS实践分享(2):基于Docker Compose和Swarm的Docker化之路

    2016 年1 月 23 日,北京史上气温最低的一天. 在下午 1 点半的时候,由 DaoCloud 赞助的 2016 年度首次 Docker Meetup 准时开始. 在这次Meetup中,我分享了 ...

  10. Docker Compose 部署前后端分离应用

    部署前后端分离应用 容器化 Abp 应用 关于 Abp 应用的容器化,其实和普通的 ASP.NET Core 应用差不多,大家可以参考我此前的文章. 唯一需要注意的是:因为 Abp 解决方案中有多个项 ...

随机推荐

  1. ImportError: /lib64/libstdc++.so.6: version `CXXABI_1.3.9' not found

    问题背景描述: 在做图片验证码识别安装 tensorflow 启动程序报错: ImportError: /lib64/libstdc++.so.6: version `CXXABI_1.3.9' no ...

  2. vue展开过度动画

    有一段时间没用vue动画了,就忘了,又仔细去看了vue官网 的过渡&动画,记录下来方便快速使用 (可以多看vue官网 过渡&动画 实现更多效果) 1.实际效果 展开收起效果.gif 2 ...

  3. 阿里P9精心编写高并发设计手册,来看大厂是如何进行系统设计

    在看这篇文章的应该都是IT圈的朋友吧,不知道你们有没有考虑过这样几件事: 淘宝双11的剁手狂欢为什么天猫没崩掉? 为什么滴滴打车高峰如何滴滴依旧可以平稳运行? 为什么疫情期间,钉钉能支撑那么多人同时上 ...

  4. Order by 优化

    写在前面 文章涉及到的 customer 表来源于案例库 sakila,下载地址为 http://downloads.mysql.com/docs/sakila-db.zip MySQL 排序方式 通 ...

  5. [FlashDevelop] 002.FlashDevelop + LayaFlash播放SWF并转成HTML5

    在上一个教程中,我讲解了如何搭建FLashDevelop环境,并创建了Hello的小Demo.那么接下来,我们来看看如何实现播放swf文件,并将其转成可以在浏览器上播放的HTML5文件.那么首先我们得 ...

  6. Python中出现 SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 12-13: truncated \UXXXXXXXX escape

    Python中出现 SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 12-13: t ...

  7. Spring boot Sample 002之spring-boot-banner

    一.环境 1.1.Idea 2020.1 1.2.JDK 1.8 二.目的 学习Spring Boot Banner自定义的操作   三.步骤 3.1.点击File -> New Project ...

  8. (String),toString(),String.valueOf()

    String.valueOf("")的源码:(推荐这种写法) 注意:obj问null时,返回值是字符串"null" toString("") ...

  9. 最新 iOS 框架整体梳理(一)

    前言 这段话其实是我差不多写完文章之后再回过头来写的,原本在写文章之前想写一下写的初衷的,但当我写完之后感觉初衷没有收获更真切一些.其实到这篇为止总结出来的也就三十多个,有些是比较新的框架,有些是我们 ...

  10. Spring Boot笔记(六) springboot 集成 timer 定时任务

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 1.创建具体要执行的任务类: package com.example.poiutis.timer; im ...