docker搭建jumpserver

  |  

简介

Jumpserver 是全球首款完全开源的堡垒机,使用 GNU GPL v2.0 开源协议,是符合 4A 的专业运维审计系统。
Jumpserver 使用 Python / Django 进行开发,遵循 Web 2.0 规范,配备了业界领先的 Web Terminal 解决方案,交互界面美观、用户体验好。
Jumpserver 采纳分布式架构,支持多机房跨区域部署,中心节点提供 API,各机房部署登录节点,可横向扩展、无并发访问限制。

配置

假设你使用了 docker 安装 mysql 和 redis
创建数据库

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
mysql> create database jumpserver default charset 'utf8mb4';
Query OK, 1 row affected (0.05 sec)

mysql> show
-> ^C
mysql> show database
-> ^C
mysql> show database;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'database' at line 1
mysql> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| jumpserver |
| mysql |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.09 sec)

随机生成密钥

1
2
3
 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

执行如下:

1
2
3
4
5
6
[root@hecs-354665 ~]# 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
DcsIfFmV15aUhHf6oDZJKYl73umsyNRGtWSneWve7DPXMEBqwO
[root@hecs-354665 ~]#
[root@hecs-354665 ~]# 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
CTt9mtpAdNlidBRN
[root@hecs-354665 ~]#

获取 docker 容器中 mysql 和 redis 的内部 ip

1
2
docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' mysql
docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' redis

启动 jumpserver

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
docker run -d --name jumpserver -h jumpserver --restart=always  \
-v /root/docker/jumpserver:/opt/jumpserver/data/media \
-p 8071:80 \
-p 2222:2222 \
-e SECRET_KEY=DcsIfFmV15aUhHf6oDZJKYl73umsyNRGtWSneWve7DPXMEBqwO \
-e BOOTSTRAP_TOKEN=CTt9mtpAdNlidBRN \
-e DOMAINS=www.wjc66.cn \
-e DB_HOST=172.17.0.3 \
-e DB_PORT=3306 \
-e DB_USER=root \
-e DB_PASSWORD="123456" \
-e DB_NAME=jumpserver \
-e REDIS_HOST=172.17.0.4 \
-e REDIS_PORT=6379 \
-e REDIS_PASSWORD="123456" \
jumpserver/jms_all

启动有点慢 可以使用docker logs -f jumpserver 查看执行日志

遇到的问题

  1. 页面提示 连接 WebSocket 失败

因为 nginx 配置有问题 需要加上

1
2
3
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
文章目录
  1. 1. 简介
  2. 2. 配置
  3. 3. 随机生成密钥
  4. 4. 获取 docker 容器中 mysql 和 redis 的内部 ip
  5. 5. 启动 jumpserver
  6. 6. 遇到的问题