编译文档

    JumpServer 分为多个组件,大致的架构如上图所示。其中 Lina 和 为纯静态文件,最终由 nginx 整合。

    MySQL 和 MariaDB 二选一即可, JumpServer 需要使用 MySQL 或 MariaDB 存储数据

    Core

    Core 是 JumpServer 的核心组件,由 二次开发而来,内置了 Gunicorn Beat Flower 服务。

    环境要求

    NameCorePython
    Versionv2.24.0>= 3.8

    下载源代码

    可以从 Github 网站上获取最新的 副本。这些版本是最新代码的稳定快照,从项目网站下载的源将采用 .tar.gz 存档的形式,通过命令行中提取该存档:

    1. requirements/ # 对应操作系统需要的依赖包
    2. ├── alpine_requirements.txt # Alpine
    3. ├── deb_buster_requirements.txt # Debian 10
    4. ├── deb_requirements.txt # 基于 Debian 的发行版(如: Ubuntu)
    5. ├── issues.txt # macOS 一些问题及解决方案
    6. ├── mac_requirements.txt # macOS
    7. ├── requirements.txt # python
    8. └── rpm_requirements.txt # 基于 RedHat 的发行版(如: CentOS)

    Ubuntu 20.04

    1. apt-get install -y pkg-config libxmlsec1-dev libpq-dev libffi-dev libxml2 libxslt-dev libldap2-dev libsasl2-dev sshpass mariadb-client bash-completion g++ make sshpass

    如果你安装的是 MySQL, 将 mariadb 开发包自行替换成 mysql, 或者不要将 数据库 和 Core 部署在一起

    1. apt-get install -y libmariadb-dev

    安装 Python3

    从 网站获取部署 Python3 的方法,请根据 环境要求,通过命令行中判断是否安装完成:

    1. apt-get install -y python3.8 python3.8-dev python3-venv
    1. python3
    1. Python 3.8.12 (default, Dec 21 2021, 10:55:30)
    2. [GCC 10.2.1 20210110] on linux
    3. Type "help", "copyright", "credits" or "license" for more information.
    4. >>>

    安装 python 依赖

    为 JumpServer 项目单独创建 python3 虚拟环境。

    1. python3 -m venv /opt/py3
    2. source /opt/py3/bin/activate

    每次运行项目都需要先执行 source /opt/py3/bin/activate 载入此环境。

    1. pip install -U pip setuptools wheel
    2. pip install -r requirements/requirements.txt

    修改配置文件

    1. cp config_example.yml config.yml
    2. vi config.yml
    1. # SECURITY WARNING: keep the secret key used in production secret!
    2. # 加密秘钥 生产环境中请修改为随机字符串,请勿外泄, 可使用命令生成
    3. # $ cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 48;echo
    4. SECRET_KEY: **************** # 必填项, 长度推荐 50 位以上
    5. # SECURITY WARNING: keep the bootstrap token used in production secret!
    6. # 预共享Token koko 和 lion 用来注册服务账号,不在使用原来的注册接受机制
    7. # $ cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 24;echo
    8. BOOTSTRAP_TOKEN: *********** # 必填项, 长度推荐 20 位以上
    9. # Development env open this, when error occur display the full process track, Production disable it
    10. # DEBUG 模式 开启DEBUG后遇到错误时可以看到更多日志
    11. DEBUG: true # 开发建议打开 DEBUG, 生产环境应该关闭
    12. # DEBUG, INFO, WARNING, ERROR, CRITICAL can set. See https://docs.djangoproject.com/en/1.10/topics/logging/
    13. # 日志级别
    14. LOG_LEVEL: DEBUG # 开发建议设置 DEBUG, 生产环境推荐使用 ERROR
    15. # LOG_DIR:
    16. # Session expiration setting, Default 24 hour, Also set expired on on browser close
    17. # 浏览器Session过期时间,默认24小时, 也可以设置浏览器关闭则过期
    18. # SESSION_COOKIE_AGE: 86400
    19. SESSION_EXPIRE_AT_BROWSER_CLOSE: true # 浏览器关闭 session 过期
    20. # Database setting, Support sqlite3, mysql, postgres ....
    21. # 数据库设置
    22. # See https://docs.djangoproject.com/en/1.10/ref/settings/#databases
    23. # SQLite setting:
    24. # 使用单文件sqlite数据库
    25. # DB_ENGINE: sqlite3
    26. # DB_NAME:
    27. # MySQL or postgres setting like:
    28. # 使用Mysql作为数据库
    29. DB_ENGINE: mysql
    30. DB_HOST: 127.0.0.1 # 自行配置 数据库相关
    31. DB_PORT: 3306
    32. DB_USER: jumpserver
    33. DB_PASSWORD: ********
    34. DB_NAME: jumpserver
    35. # When Django start it will bind this host and port
    36. # ./manage.py runserver 127.0.0.1:8080
    37. # 运行时绑定端口, 将会使用 0.0.0.0:8080 0.0.0.0:8070 端口
    38. HTTP_BIND_HOST: 0.0.0.0
    39. HTTP_LISTEN_PORT: 8080
    40. WS_LISTEN_PORT: 8070
    41. # Use Redis as broker for celery and web socket
    42. # Redis配置
    43. REDIS_HOST: 127.0.0.1 # 自行配置 Redis 相关
    44. REDIS_PORT: 6379
    45. REDIS_PASSWORD: ********
    46. # REDIS_DB_CELERY: 3
    47. # REDIS_DB_CACHE: 4
    48. # Use OpenID Authorization
    49. # 使用 OpenID 进行认证设置
    50. # AUTH_OPENID: False # True or False
    51. # BASE_SITE_URL: None
    52. # AUTH_OPENID_CLIENT_ID: client-id
    53. # AUTH_OPENID_CLIENT_SECRET: client-secret
    54. # AUTH_OPENID_PROVIDER_ENDPOINT: https://op-example.com/
    55. # AUTH_OPENID_PROVIDER_AUTHORIZATION_ENDPOINT: https://op-example.com/authorize
    56. # AUTH_OPENID_PROVIDER_TOKEN_ENDPOINT: https://op-example.com/token
    57. # AUTH_OPENID_PROVIDER_JWKS_ENDPOINT: https://op-example.com/jwks
    58. # AUTH_OPENID_PROVIDER_USERINFO_ENDPOINT: https://op-example.com/userinfo
    59. # AUTH_OPENID_PROVIDER_END_SESSION_ENDPOINT: https://op-example.com/logout
    60. # AUTH_OPENID_PROVIDER_SIGNATURE_ALG: HS256
    61. # AUTH_OPENID_PROVIDER_SIGNATURE_KEY: None
    62. # AUTH_OPENID_SCOPES: "openid profile email"
    63. # AUTH_OPENID_ID_TOKEN_MAX_AGE: 60
    64. # AUTH_OPENID_ID_TOKEN_INCLUDE_CLAIMS: True
    65. # AUTH_OPENID_USE_STATE: True
    66. # AUTH_OPENID_USE_NONCE: True
    67. # AUTH_OPENID_SHARE_SESSION: True
    68. # AUTH_OPENID_IGNORE_SSL_VERIFICATION: True
    69. # AUTH_OPENID_ALWAYS_UPDATE_USER: True
    70. # Use Radius authorization
    71. # 使用Radius来认证
    72. # AUTH_RADIUS: false
    73. # RADIUS_SERVER: localhost
    74. # RADIUS_PORT: 1812
    75. # RADIUS_SECRET:
    76. # CAS 配置
    77. # AUTH_CAS': False,
    78. # CAS_SERVER_URL': "http://host/cas/",
    79. # CAS_ROOT_PROXIED_AS': 'http://jumpserver-host:port',
    80. # CAS_LOGOUT_COMPLETELY': True,
    81. # CAS_VERSION': 3,
    82. # LDAP/AD settings
    83. # LDAP 搜索分页数量
    84. # AUTH_LDAP_SEARCH_PAGED_SIZE: 1000
    85. #
    86. # 定时同步用户
    87. # 启用 / 禁用
    88. # AUTH_LDAP_SYNC_IS_PERIODIC: True
    89. # 同步间隔 (单位: 时) (优先)
    90. # AUTH_LDAP_SYNC_INTERVAL: 12
    91. # Crontab 表达式
    92. # AUTH_LDAP_SYNC_CRONTAB: * 6 * * *
    93. #
    94. # LDAP 用户登录时仅允许在用户列表中的用户执行 LDAP Server 认证
    95. # AUTH_LDAP_USER_LOGIN_ONLY_IN_USERS: False
    96. #
    97. # LDAP 认证时如果日志中出现以下信息将参数设置为 0 (详情参见:https://www.python-ldap.org/en/latest/faq.html)
    98. # In order to perform this operation a successful bind must be completed on the connection
    99. # AUTH_LDAP_OPTIONS_OPT_REFERRALS: -1
    100. # OTP settings
    101. # OTP/MFA 配置
    102. # OTP_VALID_WINDOW: 0
    103. # OTP_ISSUER_NAME: Jumpserver
    104. # Perm show single asset to ungrouped node
    105. # 是否把未授权节点资产放入到 未分组 节点中
    106. # PERM_SINGLE_ASSET_TO_UNGROUP_NODE: False
    107. #
    108. # 同一账号仅允许在一台设备登录
    109. # USER_LOGIN_SINGLE_MACHINE_ENABLED: False
    110. #
    111. # 启用定时任务
    112. # PERIOD_TASK_ENABLE: True
    113. #
    114. # 启用二次复合认证配置
    115. # LOGIN_CONFIRM_ENABLE: False
    116. #
    117. # Windows 登录跳过手动输入密码
    118. # WINDOWS_SKIP_ALL_MANUAL_PASSWORD: False

    处理国际化

    1. rm -f apps/locale/zh/LC_MESSAGES/django.mo
    2. python apps/manage.py compilemessages

    启动 Core

    后台运行可以加 -d,./jms start -d

    1. ./jms start

    Lina 是 JumpServer 的前端 UI 项目,主要使用 ,Element UI 完成。

    环境要求

    NameLinaNode
    Versionv2.24.010

    源代码部署

    下载源代码

    从 下载 Source code.tar.gz 源代码,通过命令行中提取该存档:

    1. cd /opt
    2. mkdir /opt/lina-v2.24.0
    3. wget -O /opt/lina-v2.24.0.tar.gz https://github.com/jumpserver/lina/archive/refs/tags/v2.24.0.tar.gz
    4. tar -xf lina-v2.24.0.tar.gz -C /opt/lina-v2.24.0 --strip-components 1

    安装 Node

    从 官方网站参考文档部署 Node.js,请根据 环境要求,通过命令行中判断是否安装完成:

    Ubuntu 20.04

    1. cd /opt
    2. wget https://npm.taobao.org/mirrors/node/v10.24.1/node-v10.24.1-linux-x64.tar.xz
    3. tar -xf node-v10.24.1-linux-x64.tar.xz
    4. mv node-v10.24.1-linux-x64 /usr/local/node
    5. chown -R root:root /usr/local/node
    6. export PATH=/usr/local/node/bin:$PATH
    7. echo 'export PATH=/usr/local/node/bin:$PATH' >> ~/.bashrc
    1. node -v

    v10.24.1

    安装依赖

    1. cd /opt/lina-v2.24.0
    2. npm install -g yarn
    3. yarn install

    修改配置文件

    1. vi .env.development
    1. # 全局环境变量 请勿随意改动
    2. ENV = 'development'
    3. # base api
    4. VUE_APP_BASE_API = ''
    5. VUE_APP_PUBLIC_PATH = '/ui/'
    6. # vue-cli uses the VUE_CLI_BABEL_TRANSPILE_MODULES environment variable,
    7. # to control whether the babel-plugin-dynamic-import-node plugin is enabled.
    8. # It only does one thing by converting all import() to require().
    9. # This configuration can significantly increase the speed of hot updates,
    10. # when you have a large number of pages.
    11. # Detail: https://github.com/vuejs/vue-cli/blob/dev/packages/@vue/babel-preset-app/index.js
    12. VUE_CLI_BABEL_TRANSPILE_MODULES = true
    13. # External auth
    14. VUE_APP_LOGIN_PATH = '/core/auth/login/'
    15. VUE_APP_LOGOUT_PATH = '/core/auth/logout/'
    16. # Dev server for core proxy
    17. VUE_APP_CORE_HOST = 'http://localhost:8080' # 修改成 Core 的 url 地址
    18. VUE_APP_CORE_WS = 'ws://localhost:8070'
    19. VUE_APP_ENV = 'development'

    运行 Lina

    1. yarn serve

    构建 Lina

    1. yarn build:prod
    2. cp -rf lina lina-v2.24.0
    3. tar -czf lina-v2.24.0.tar.gz lina-v2.24.0

    构建完成后, 生成在 lina 目录下

    下载 Release 文件

    Github 网站上获取最新的 副本。这些版本是最新代码的稳定快照

    OSArchName
    AllAlllina-v2.24.0.tar.gz

    Luna

    Luna 是 JumpServer 的前端 UI 项目,主要使用 完成。

    源代码部署

    下载源代码

    可以从 网站上获取最新的 Release 副本。这些版本是最新代码的稳定快照,从项目网站下载 Source code.tar.gz 源代码,通过命令行中提取该存档:

    1. cd /opt
    2. mkdir /opt/luna-v2.24.0
    3. wget -O /opt/luna-v2.24.0.tar.gz https://github.com/jumpserver/luna/archive/refs/tags/v2.24.0.tar.gz
    4. tar -xf luna-v2.24.0.tar.gz -C /opt/luna-v2.24.0 --strip-components 1

    安装 Node

    Node 官方网站参考文档部署 Node.js,请根据 ,通过命令行中判断是否安装完成:

      v10.24.1

      安装依赖

      1. cd /opt/luna-v2.24.0
      2. npm install
      3. npm install --dev
      4. npm rebuild node-sass

      修改配置文件

      1. vi proxy.conf.json
      1. {
      2. "/koko": {
      3. "target": "http://localhost:5000", # KoKo 地址
      4. "secure": false,
      5. "ws": true
      6. },
      7. "/media/": {
      8. "target": "http://localhost:8080", # Core 地址
      9. "secure": false,
      10. "changeOrigin": true
      11. },
      12. "/api/": {
      13. "target": "http://localhost:8080", # Core 地址
      14. "secure": false, # https ssl 需要开启
      15. "changeOrigin": true
      16. },
      17. "/core": {
      18. "target": "http://localhost:8080", # Core 地址
      19. "secure": false,
      20. "changeOrigin": true
      21. },
      22. "/static": {
      23. "target": "http://localhost:8080", # Core 地址
      24. "secure": false,
      25. "changeOrigin": true
      26. },
      27. "/lion": {
      28. "target": "http://localhost:9529", # Lion 地址
      29. "secure": false,
      30. "^/lion/monitor": "/monitor"
      31. },
      32. "ws": true,
      33. "changeOrigin": true
      34. },
      35. "/omnidb": {
      36. "target": "http://localhost:8082",
      37. "secure": false,
      38. "ws": true,
      39. "changeOrigin": true
      40. }
      41. }

      运行 Luna

      1. ./node_modules/.bin/ng serve

      构建 Luna

      1. ./node_modules/.bin/ng build
      2. mv dist /opt/luna-v2.24.0
      3. tar -czf luna-v2.24.0.tar.gz luna-v2.24.0

      构建完成后, 生成在 dist 目录下

      使用 Release

      下载 Release 文件

      OSArchName
      AllAll

      Github 网站上获取最新的 副本。这些版本是最新代码的稳定快照

      1. cd /opt
      2. wget https://github.com/jumpserver/luna/releases/download/v2.24.0/luna-v2.24.0.tar.gz
      3. tar -xf luna-v2.24.0.tar.gz

      Koko 是 Go 版本的 coco,重构了 coco 的 SSH/SFTP 服务和 Web Terminal 服务。

      环境要求

      NameKoKoGoNodeRedis Client
      Versionv2.24.01.1710>= 6.0

      源代码部署

      下载源代码

      从项目网站下载 Source code.tar.gz 源代码,通过命令行中提取该存档:

      1. cd /opt
      2. mkdir /opt/koko-v2.24.0
      3. wget -O /opt/koko-v2.24.0.tar.gz https://github.com/jumpserver/koko/archive/refs/tags/v2.24.0.tar.gz
      4. tar -xf koko-v2.24.0.tar.gz -C /opt/koko-v2.24.0 --strip-components 1

      安装 Node

      从 官方网站参考文档部署 Node.js,请根据 环境要求,通过命令行中判断是否安装完成:

      1. node -v

      v10.24.1

      安装 Client 依赖

      Ubuntu 20.04

      1. apt-get update
      2. apt install software-properties-common
      3. add-apt-repository -y ppa:redislabs/redis
      4. apt-get install -y mariadb-client bash-completion redis-tools
      5. cd /opt
      6. mkdir /opt/kubectl-aliases
      7. wget http://download.jumpserver.org/public/kubectl_aliases.tar.gz -O kubectl_aliases.tar.gz
      8. tar -xf kubectl_aliases.tar.gz -C /opt/kubectl-aliases

      安装 Go

      从 官方网站参考文档部署 golang,请根据 环境要求,通过命令行中判断是否安装完成:

      Ubuntu 20.04

      1. cd /opt
      2. wget https://golang.google.cn/dl/go1.17.7.linux-amd64.tar.gz
      3. tar -xf go1.17.7.linux-amd64.tar.gz -C /usr/local/
      4. chown -R root:root /usr/local/go
      5. export PATH=/usr/local/go/bin:$PATH
      6. echo 'export PATH=/usr/local/go/bin:$PATH' >> ~/.bashrc
      1. go version

      go version go1.17.7 linux/amd64

      编译

      OSArchCommand
      Linuxamd64make linux
      macOSamd64make darwin
      1. cd /opt/koko-v2.24.0
      2. make
      3. cp build/koko-v2.24.0-linux-amd64.tar.gz /opt

      构建完成后, 生成在 build 目录下

      下载 Release 文件

      从 网站上获取最新的 Release 副本。这些版本是最新代码的稳定快照。

      Linux/amd64

      1. cd /opt
      2. wget https://download.jumpserver.org/public/kubectl-linux-amd64.tar.gz -O kubectl.tar.gz
      3. tar -xf kubectl.tar.gz
      4. mv kubectl /usr/local/bin/rawkubectl
      5. wget https://download.jumpserver.org/public/helm-v3.9.0-linux-amd64.tar.gz
      6. tar -xf helm-v3.9.0-linux-amd64.tar.gz
      7. mv linux-amd64/helm /usr/local/bin/rawhelm
      8. chmod 755 /usr/local/bin/rawkubectl /usr/local/bin/rawhelm
      9. chown root:root /usr/local/bin/rawkubectl /usr/local/bin/rawhelm
      10. rm -rf linux-amd64
      11. wget https://github.com/jumpserver/koko/releases/download/v2.24.0/koko-v2.24.0-linux-amd64.tar.gz
      12. tar -xf koko-v2.24.0-linux-amd64.tar.gz -C /opt
      13. cd koko-v2.24.0-linux-amd64
      14. mv kubectl /usr/local/bin/kubectl

      Linux/arm64

      1. cd /opt
      2. wget https://download.jumpserver.org/public/kubectl-linux-arm64.tar.gz -O kubectl.tar.gz
      3. tar -xzf kubectl.tar.gz
      4. mv kubectl /usr/local/bin/rawkubectl
      5. wget https://download.jumpserver.org/public/helm-v3.9.0-linux-arm64.tar.gz
      6. tar -xf helm-v3.9.0-linux-arm64.tar.gz
      7. mv linux-arm64/helm /usr/local/bin/rawhelm
      8. chmod 755 /usr/local/bin/rawkubectl /usr/local/bin/rawhelm
      9. chown root:root /usr/local/bin/rawkubectl /usr/local/bin/rawhelm
      10. rm -rf linux-arm64
      11. wget https://github.com/jumpserver/koko/releases/download/v2.24.0/koko-v2.24.0-linux-arm64.tar.gz
      12. tar -xf koko-v2.24.0-linux-arm64.tar.gz -C /opt
      13. cd koko-v2.24.0-linux-arm64
      14. mv kubectl /usr/local/bin/kubectl
      1. cp config_example.yml config.yml
      2. vi config.yml
      1. # 项目名称, 会用来向Jumpserver注册, 识别而已, 不能重复
      2. # NAME:
      3. # Jumpserver项目的url, api请求注册会使用
      4. CORE_HOST: http://127.0.0.1:8080 # Core 的地址
      5. # Bootstrap Token, 预共享秘钥, 用来注册coco使用的service account和terminal
      6. # 请和jumpserver 配置文件中保持一致,注册完成后可以删除
      7. BOOTSTRAP_TOKEN: ******** # 和 Core config.yml 的值保持一致
      8. # 启动时绑定的ip, 默认 0.0.0.0
      9. BIND_HOST: 0.0.0.0
      10. # 监听的SSH端口号, 默认2222
      11. SSHD_PORT: 2222 # 使用 0.0.0.0:2222
      12. # 监听的HTTP/WS端口号,默认5000
      13. HTTPD_PORT: 5000 # 使用 0.0.0.0:5000
      14. # 项目使用的ACCESS KEY, 默认会注册,并保存到 ACCESS_KEY_STORE中,
      15. # 如果有需求, 可以写到配置文件中, 格式 access_key_id:access_key_secret
      16. # ACCESS_KEY: null
      17. # ACCESS KEY 保存的地址, 默认注册后会保存到该文件中
      18. # ACCESS_KEY_FILE: data/keys/.access_key
      19. # 设置日志级别 [DEBUG, INFO, WARN, ERROR, FATAL, CRITICAL]
      20. LOG_LEVEL: DEBUG # 开发建议设置 DEBUG, 生产环境推荐使用 ERROR
      21. # SSH连接超时时间 (default 15 seconds)
      22. # SSH_TIMEOUT: 15
      23. # 语言 [en,zh]
      24. # LANGUAGE_CODE: zh
      25. # SFTP的根目录, 可选 /tmp, Home其他自定义目录
      26. # SFTP_ROOT: /tmp
      27. # SFTP是否显示隐藏文件
      28. # SFTP_SHOW_HIDDEN_FILE: false
      29. # 是否复用和用户后端资产已建立的连接(用户不会复用其他用户的连接)
      30. # REUSE_CONNECTION: true
      31. # 资产加载策略, 可根据资产规模自行调整. 默认异步加载资产, 异步搜索分页; 如果为all, 则资产全部加载, 本地搜索分页.
      32. # ASSET_LOAD_POLICY:
      33. # zip压缩的最大额度 (单位: M)
      34. # ZIP_MAX_SIZE: 1024M
      35. # zip压缩存放的临时目录 /tmp
      36. # ZIP_TMP_PATH: /tmp
      37. # 向 SSH Client 连接发送心跳的时间间隔 (单位: 秒),默认为30, 0则表示不发送
      38. # CLIENT_ALIVE_INTERVAL: 30
      39. # 向资产发送心跳包的重试次数,默认为3
      40. # RETRY_ALIVE_COUNT_MAX: 3
      41. # 会话共享使用的类型 [local, redis], 默认local
      42. # SHARE_ROOM_TYPE: local
      43. # Redis配置
      44. # REDIS_HOST: 127.0.0.1 # 如果需要部署多个 koko, 需要通过 redis 来保持会话
      45. # REDIS_PORT: 6379
      46. # REDIS_PASSWORD:
      47. # REDIS_CLUSTERS:
      48. # REDIS_DB_ROOM:

      启动 KoKo

      后台运行可以加 -d,./koko -d

      1. ./koko

      Lion

      使用了 Apache 软件基金会的开源项目 ,JumpServer 使用 Golang 和 Vue 重构了 Guacamole 实现 RDP/VNC 协议跳板机功能。

      环境要求

      NameJumpServerGuacdLion
      Versionv2.24.0v2.24.0

      可以从 Github 网站上获取对应的 guacd 副本。这些版本是最新代码的稳定快照,从项目网站下载 Source code.tar.gz 源代码,通过命令行中提取该存档:

      1. mkdir /opt/guacamole-v2.24.0
      2. cd /opt/guacamole-v2.24.0
      3. wget http://download.jumpserver.org/public/guacamole-server-1.3.0.tar.gz
      4. tar -xzf guacamole-server-1.3.0.tar.gz
      5. cd guacamole-server-1.3.0/

      参考 官方文档,安装对应操作系统的依赖包。

      Ubuntu 20.04

      1. apt-get install -y libcairo2-dev libjpeg-turbo8-dev libpng-dev libtool-bin libossp-uuid-dev
      2. apt-get install -y libavcodec-dev libavformat-dev libavutil-dev libswscale-dev freerdp2-dev libpango1.0-dev libssh2-1-dev libtelnet-dev libvncserver-dev libwebsockets-dev libpulse-dev libssl-dev libvorbis-dev libwebp-dev

      构建 Guacd

      如果希望使用 systemd 管理, 可以使用 ./configure —with-systemd-dir=/etc/systemd/system/

      下载 Lion

      可以从 Github 网站上获取最新的 副本。

      OSArchName
      Linuxamd64lion-v2.24.0-linux-amd64.tar.gz
      Linuxarm64
      Linuxloong64lion-v2.24.0-linux-loong64.tar.gz
      Darwinamd64
      Windowsamd64lion-v2.24.0-windows-amd64.tar.gz

      Linux/amd64

      1. cd /opt
      2. wget https://github.com/jumpserver/lion-release/releases/download/v2.24.0/lion-v2.24.0-linux-amd64.tar.gz
      3. tar -xf lion-v2.24.0-linux-amd64.tar.gz
      4. cd lion-v2.24.0-linux-amd64

      Linux/arm64

      1. cd /opt
      2. wget https://github.com/jumpserver/lion-release/releases/download/v2.24.0/lion-v2.24.0-linux-arm64.tar.gz
      3. tar -xf lion-v2.24.0-linux-arm64.tar.gz
      4. cd lion-v2.24.0-linux-arm64

      修改配置文件

      1. cp config_example.yml config.yml
      2. vi config.yml
      1. # 项目名称, 会用来向Jumpserver注册, 识别而已, 不能重复
      2. # NAME:
      3. # Jumpserver项目的url, api请求注册会使用
      4. CORE_HOST: http://127.0.0.1:8080 # Core 的地址
      5. # Bootstrap Token, 预共享秘钥, 用来注册使用的service account和terminal
      6. # 请和jumpserver 配置文件中保持一致,注册完成后可以删除
      7. BOOTSTRAP_TOKEN: ******** # 和 Core config.yml 的值保持一致
      8. # 启动时绑定的ip, 默认 0.0.0.0
      9. BIND_HOST: 0.0.0.0
      10. # 监听的HTTP/WS端口号,默认8081
      11. HTTPD_PORT: 8081
      12. # 设置日志级别 [DEBUG, INFO, WARN, ERROR, FATAL, CRITICAL]
      13. LOG_LEVEL: DEBUG # 开发建议设置 DEBUG, 生产环境推荐使用 ERROR
      14. # Guacamole Server ip,默认127.0.0.1
      15. # GUA_HOST: 127.0.0.1
      16. # Guacamole Server 端口号,默认4822
      17. # GUA_PORT: 4822
      18. # 会话共享使用的类型 [local, redis], 默认local
      19. # SHARE_ROOM_TYPE: local
      20. # Redis配置
      21. # REDIS_HOST: 127.0.0.1
      22. # REDIS_PORT: 6379
      23. # REDIS_PASSWORD:
      24. # REDIS_DB_ROOM:

      启动 Guacd

      1. /etc/init.d/guacd start

      启动 Lion

      1. ./lion

      可以从 Github 网站上获取最新的 副本。

      OSArchName
      Linuxamd64magnus-v2.24.0-linux-amd64.tar.gz
      Linuxarm64
      Linuxloong64magnus-v2.24.0-linux-loong64.tar.gz
      Darwinamd64
      Darwinarm64magnus-v2.24.0-darwin-arm64.tar.gz

      Magnus 需要使用 Wisp 与 JumpServer 通信,从 网站上获取最新的 Release 副本。

      Linux/amd64

      解压缩包

      1. cd /opt
      2. wget https://github.com/jumpserver/magnus-release/releases/download/v2.24.0/magnus-v2.24.0-linux-amd64.tar.gz
      3. tar -xf magnus-v2.24.0-linux-amd64.tar.gz
      4. cd magnus-v2.24.0-linux-amd64
      1. wget https://github.com/jumpserver/wisp/releases/download/v0.0.8/wisp-v0.0.8-linux-amd64.tar.gz
      2. tar -xf wisp-v0.0.8-linux-amd64.tar.gz
      3. mv wisp-v0.0.8-linux-amd64/wisp /usr/local/bin/
      4. chown root:root /usr/local/bin/wisp /opt/magnus-v2.24.0-linux-amd64/magnus
      5. chmod 755 /usr/local/bin/wisp /opt/magnus-v2.24.0-linux-amd64/magnus

      修改配置文件

      1. cp config_example.yml config.yml
      2. vi config.yml
      1. # Jumpserver项目的url, api请求注册会使用
      2. CORE_HOST: http://127.0.0.1:8080 # Core 的地址
      3. # Bootstrap Token, 预共享秘钥, 用来注册使用的service account和terminal
      4. # 请和jumpserver 配置文件中保持一致,注册完成后可以删除
      5. BOOTSTRAP_TOKEN: ******** # 和 Core config.yml 的值保持一致
      6. # 服务 bind 地址
      7. BIND_HOST: "0.0.0.0"
      8. # 数据库代理暴露的端口
      9. MYSQL_PORT: 33060
      10. MARIA_DB_PORT: 33061
      11. POSTGRESQL_PORT: 54320
      12. # 日志级别
      13. LOG_LEVEL: "info"
      14. # jumpserver api grpc 组件地址
      15. WISP_HOST: "localhost"

      启动 Wisp

      1. export CORE_HOST="http://127.0.0.1:8080" # Core 的地址
      2. export BOOTSTRAP_TOKEN=******** # 和 Core config.yml 的值保持一致
      3. export WORK_DIR="/opt/magnus-v2.24.0-linux-amd64"
      4. export COMPONENT_NAME="magnus"
      5. export EXECUTE_PROGRAM="/opt/magnus-v2.24.0-linux-amd64/magnus"
      6. wisp

      Linux/arm64

      解压缩包

      1. cd /opt
      2. wget https://github.com/jumpserver/magnus-release/releases/download/v2.24.0/magnus-v2.24.0-linux-arm64.tar.gz
      3. tar -xf magnus-v2.24.0-linux-arm64.tar.gz
      4. cd magnus-v2.24.0-linux-arm64
      1. wget https://github.com/jumpserver/wisp/releases/download/v0.0.8/wisp-v0.0.8-linux-arm64.tar.gz
      2. tar -xf wisp-v0.0.8-linux-arm64.tar.gz
      3. mv wisp-v0.0.8-linux-arm64/wisp /usr/local/bin/
      4. chown root:root /usr/local/bin/wisp /opt/magnus-v2.24.0-linux-arm64/magnus
      5. chmod 755 /usr/local/bin/wisp /opt/magnus-v2.24.0-linux-arm64/magnus

      修改配置文件

      1. cp config_example.yml config.yml
      1. # Jumpserver项目的url, api请求注册会使用
      2. CORE_HOST: http://127.0.0.1:8080 # Core 的地址
      3. # Bootstrap Token, 预共享秘钥, 用来注册使用的service account和terminal
      4. # 请和jumpserver 配置文件中保持一致,注册完成后可以删除
      5. BOOTSTRAP_TOKEN: ******** # 和 Core config.yml 的值保持一致
      6. # 服务 bind 地址
      7. BIND_HOST: "0.0.0.0"
      8. # 数据库代理暴露的端口
      9. MYSQL_PORT: 33060
      10. MARIA_DB_PORT: 33061
      11. POSTGRESQL_PORT: 54320
      12. # 日志级别
      13. LOG_LEVEL: "info"
      14. # jumpserver api grpc 组件地址
      15. WISP_HOST: "localhost"
      16. WISP_PORT: 9090

      启动 Wisp

      1. export CORE_HOST="http://127.0.0.1:8080" # Core 的地址
      2. export BOOTSTRAP_TOKEN=******** # 和 Core config.yml 的值保持一致
      3. export WORK_DIR="/opt/magnus-v2.24.0-linux-arm64"
      4. export COMPONENT_NAME="magnus"
      5. export EXECUTE_PROGRAM="/opt/magnus-v2.24.0-linux-arm64/magnus"
      6. wisp

      Nginx

      Nginx 官方网站上获取 Nginx 的最新发行版本 ,通过命令行验证安装是否完成:

      Ubuntu 20.04

      1. apt-get install -y curl gnupg2 ca-certificates lsb-release ubuntu-keyring
      2. echo "deb http://nginx.org/packages/ubuntu focal nginx" > /etc/apt/sources.list.d/nginx.list
      3. curl -o /etc/apt/trusted.gpg.d/nginx_signing.asc https://nginx.org/keys/nginx_signing.key
      4. apt-get update
      5. apt-get install -y nginx
      6. echo > /etc/nginx/conf.d/default.conf
      1. nginx -v

      nginx version: nginx/1.20.2

      整合 JumpServer

      1. vi /etc/nginx/conf.d/jumpserver.conf
      1. server {
      2. listen 80;
      3. # server_name _;
      4. client_max_body_size 5000m; 文件大小限制
      5. # Luna 配置
      6. location /luna/ {
      7. # 注意将模板中的组件名称替换为服务实际 ip 地址, 如都在本机部署
      8. # proxy_pass http://127.0.0.1:4200;
      9. proxy_pass http://luna:4200;
      10. }
      11. # Core data 静态资源
      12. location /media/replay/ {
      13. add_header Content-Encoding gzip;
      14. root /opt/jumpserver-v2.24.0/data/;
      15. }
      16. location /media/ {
      17. root /opt/jumpserver-v2.24.0/data/;
      18. }
      19. location /static/ {
      20. root /opt/jumpserver-v2.24.0/data/;
      21. }
      22. # KoKo Lion 配置
      23. location /koko/ {
      24. # 注意将模板中的组件名称替换为服务实际 ip 地址, 如都在本机部署
      25. # proxy_pass http://127.0.0.1:5000;
      26. proxy_pass http://koko:5000;
      27. proxy_set_header X-Real-IP $remote_addr;
      28. proxy_set_header Host $host;
      29. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      30. proxy_http_version 1.1;
      31. proxy_buffering off;
      32. proxy_set_header Upgrade $http_upgrade;
      33. proxy_set_header Connection "upgrade";
      34. }
      35. # lion 配置
      36. location /lion/ {
      37. # 注意将模板中的组件名称替换为服务实际 ip 地址, 如都在本机部署
      38. # proxy_pass http://127.0.0.1:8081;
      39. proxy_pass http://lion:8081;
      40. proxy_buffering off;
      41. proxy_request_buffering off;
      42. proxy_http_version 1.1;
      43. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      44. proxy_set_header Upgrade $http_upgrade;
      45. proxy_set_header Connection $http_connection;
      46. proxy_ignore_client_abort on;
      47. proxy_connect_timeout 600;
      48. proxy_send_timeout 600;
      49. proxy_read_timeout 600;
      50. send_timeout 6000;
      51. }
      52. # Core 配置
      53. location /ws/ {
      54. # 注意将模板中的组件名称替换为服务实际 ip 地址, 如都在本机部署
      55. # proxy_pass http://127.0.0.1:8070;
      56. proxy_pass http://core:8070;
      57. proxy_set_header X-Real-IP $remote_addr;
      58. proxy_set_header Host $host;
      59. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      60. proxy_http_version 1.1;
      61. proxy_buffering off;
      62. proxy_set_header Upgrade $http_upgrade;
      63. proxy_set_header Connection "upgrade";
      64. }
      65. location /api/ {
      66. # 注意将模板中的组件名称替换为服务实际 ip 地址, 如都在本机部署
      67. # proxy_pass http://127.0.0.1:8080;
      68. proxy_pass http://core:8080;
      69. proxy_set_header X-Real-IP $remote_addr;
      70. proxy_set_header Host $host;
      71. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      72. }
      73. location /core/ {
      74. # 注意将模板中的组件名称替换为服务实际 ip 地址, 如都在本机部署
      75. # proxy_pass http://127.0.0.1:8080;
      76. proxy_pass http://core:8080;
      77. proxy_set_header X-Real-IP $remote_addr;
      78. proxy_set_header Host $host;
      79. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      80. }
      81. # 前端 Lina
      82. location /ui/ {
      83. # 注意将模板中的组件名称替换为服务实际 ip 地址, 如都在本机部署
      84. # proxy_pass http://127.0.0.1:9528;
      85. proxy_pass http://lina:9528;
      86. proxy_set_header X-Real-IP $remote_addr;
      87. proxy_set_header Host $host;
      88. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      89. }
      90. location / {
      91. rewrite ^/(.*)$ /ui/$1 last;
      92. }
      93. }

      使用 Release

      1. server {
      2. listen 80;
      3. # server_name _;
      4. client_max_body_size 5000m; 文件大小限制
      5. # 前端 Lina
      6. location /ui/ {
      7. try_files $uri / /index.html;
      8. alias /opt/lina-v2.24.0/;
      9. expires 24h;
      10. }
      11. # Luna 配置
      12. location /luna/ {
      13. try_files $uri / /index.html;
      14. alias /opt/luna-v2.24.0/;
      15. expires 24h;
      16. }
      17. # Core data 静态资源
      18. location /media/replay/ {
      19. add_header Content-Encoding gzip;
      20. root /opt/jumpserver-v2.24.0/data/;
      21. }
      22. location /media/ {
      23. root /opt/jumpserver-v2.24.0/data/;
      24. }
      25. location /static/ {
      26. root /opt/jumpserver-v2.24.0/data/;
      27. expires 24h;
      28. }
      29. # KoKo Lion 配置
      30. location /koko/ {
      31. # 注意将模板中的组件名称替换为服务实际 ip 地址, 如都在本机部署
      32. # proxy_pass http://127.0.0.1:5000;
      33. proxy_pass http://koko:5000;
      34. proxy_set_header X-Real-IP $remote_addr;
      35. proxy_set_header Host $host;
      36. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      37. proxy_http_version 1.1;
      38. proxy_buffering off;
      39. proxy_set_header Upgrade $http_upgrade;
      40. proxy_set_header Connection "upgrade";
      41. }
      42. # lion 配置
      43. location /lion/ {
      44. # 注意将模板中的组件名称替换为服务实际 ip 地址, 如都在本机部署
      45. # proxy_pass http://127.0.0.1:8081;
      46. proxy_pass http://lion:8081;
      47. proxy_buffering off;
      48. proxy_request_buffering off;
      49. proxy_http_version 1.1;
      50. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      51. proxy_set_header Upgrade $http_upgrade;
      52. proxy_set_header Connection $http_connection;
      53. proxy_ignore_client_abort on;
      54. proxy_connect_timeout 600;
      55. proxy_send_timeout 600;
      56. proxy_read_timeout 600;
      57. send_timeout 6000;
      58. }
      59. # Core 配置
      60. location /ws/ {
      61. # 注意将模板中的组件名称替换为服务实际 ip 地址, 如都在本机部署
      62. # proxy_pass http://127.0.0.1:8070;
      63. proxy_pass http://core:8070;
      64. proxy_set_header X-Real-IP $remote_addr;
      65. proxy_set_header Host $host;
      66. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      67. proxy_http_version 1.1;
      68. proxy_buffering off;
      69. proxy_set_header Upgrade $http_upgrade;
      70. proxy_set_header Connection "upgrade";
      71. }
      72. location /api/ {
      73. # 注意将模板中的组件名称替换为服务实际 ip 地址, 如都在本机部署
      74. # proxy_pass http://127.0.0.1:8080;
      75. proxy_pass http://core:8080;
      76. proxy_set_header X-Real-IP $remote_addr;
      77. proxy_set_header Host $host;
      78. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      79. }
      80. location /core/ {
      81. # 注意将模板中的组件名称替换为服务实际 ip 地址, 如都在本机部署
      82. # proxy_pass http://127.0.0.1:8080;
      83. proxy_pass http://core:8080;
      84. proxy_set_header X-Real-IP $remote_addr;
      85. proxy_set_header Host $host;
      86. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      87. }
      88. location / {
      89. rewrite ^/(.*)$ /ui/$1 last;
      90. }