1 Star 1 Fork 83

一只大冬瓜 / xcloud-webconsole

forked from wl4g / webconsole 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
README_CN.md 5.94 KB
一键复制 编辑 原始数据 按行查看 历史
wl4g 提交于 2020-09-08 13:09 . docs: optimizing

XCloud WebConsole

一个轻量的企业级Web的控制终端程序,汇集了大多数同类产品优点于一身,支持SSH2/lrzsz、(RDP/RFB/Telnet)、审计和录屏等

English version goes here.

快速开始

1. 安装

git clone https://github.com/wl4g/xcloud-webconsole.git # 上游,最新
# git clone https://gitee.com/wl4g/xcloud-webconsole.git
cd xcloud-webconsole/scripts
./build.sh  # 交叉编译为Windows程序
# build.bat # 交叉编译为Linux程序

2. 部署到nginx支持https. (可选)

因为webconsole是基于HTML的,浏览器的复制和粘贴功能受到安全机制的限制,只能在HTTPS下使用,当然若不想麻烦,也可忽略此步骤,直接使用HTTP本地测试,只是不能使用浏览器的复制和粘贴功能。

2.1 添加hosts
127.0.0.1   webconsole.wl4g.debug
sudo mkdir -p /etc/nginx/conf.d && \
cat > /etc/nginx/conf.d/webconsole.conf <<EOF
# Generated by WebConsole docs sample.

# WebConsole Webapps pages.
server {
    listen 443;
    server_name webconsole.sunwuu.fat;
    ssl on;
    ssl_certificate   certs/_wildcard.wl4g.debug.pem;
    ssl_certificate_key  certs/_wildcard.wl4g.debug-key.pem;
    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    location / {
       root /usr/share/nginx/html/webconsole;
       index index.html;
    }
}

# WebConsole APIs.
server {
    listen 26088 ssl;
    server_name  webconsole.sunwuu.fat;
    ssl_certificate   certs/_wildcard.wl4g.debug.pem;
    ssl_certificate_key  certs/_wildcard.wl4g.debug-key.pem;
    ssl_session_timeout  5m;
    ssl_prefer_server_ciphers    on;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;         
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
    location / {
        proxy_http_version 1.1;    
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";     
        proxy_set_header X-real-ip $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_pass http://127.0.0.1:16088;
    }
}
EOF

sudo chmod 755 /etc/nginx/conf.d/webconsole.conf
sudo systemctl restart nginx
2.2. 安装测试CA跟证书 (可选, 跟随步骤2)
  • 将CA跟证书安装到系统及chrome,使其受信任. 例如在Chrome84.x中:
chrome://settings/security

管理证书 -> 受信任的根证书颁发机构 -> 导入 然后重启chrome浏览器尝试访问: https://webconsole.wl4g.debug

特性

  • 它被设计成一个原生JavaScript类库,可以很容易地与React/Vue/AngularJS和其他框架集成
  • 它可以运行在 Android iOS 和任何其他可以呈现HTML的终端上。它几乎可以完全取代基于安装程序的shell客户端
  • 完全支持 lrzsz 命令集(基于zmodem实现)
  • 增强了对移动终端的复制、粘贴、快进、后退等按键组合命令的支持,用户友好的操作习惯
  • 无缝对接 prometheus 度量采集

度量及指标

curl http://localhost:16089/metrics

# HELP goroutines_num Number of goroutines
# TYPE goroutines_num gauge
goroutines_num 16
# HELP mysql_active_conn Current active connections of MySQL
# TYPE mysql_active_conn gauge
mysql_active_conn{dbconnectstr="gzsm:******@tcp(10.0.0.160:3306)/devops_dev?charset=utf8",host="10.0.0.172"} 1
# HELP ssh2_active_dispatch_channels Current active channels of SSH2 dispatcher
# TYPE ssh2_active_dispatch_channels gauge
ssh2_active_dispatch_channels{host="10.0.0.172",user="admin"} 0
# HELP threads_num Number of threads
# TYPE threads_num gauge
threads_num 8
# HELP virtual_free_memory Size of virtual free memory
# TYPE virtual_free_memory gauge
virtual_free_memory 1.731424256
# HELP virtual_total_memory Size of virtual total memory
# TYPE virtual_total_memory gauge
virtual_total_memory 8.50089984

运行环境

  • 客户端建议使用 Chrome 40+、Firefox 38+、Safari 9+
  • 二次开发建议基于 Golang 1.13+ 构建
  • 本程序只能对 Unix/Linux 类的操作系统的 SSH 协议的 OS 远程操作(Windows RDP支持需参考具体发行版是否有RDP实现)

运行截图

  • rz 上传文件
  • rz 上传文件

说明:界面未设置css样式的最精简测试页面

主要依赖项目

其他说明(如果需要)

待办清单

  • [√] 完全统一每个组件的日常输出,如“gin”框架。
  • [√] 增强webconsole服务的管理员功能,例如自身的health/metrics/indicator(CPU/Mem/Network/Connections…)和更详细的指示器
  • Canvas + Object Storage 审计录屏功能
  • 为了实现与windows RDP(远程桌面协议)兼容的基于Web的远程图像UI控制协议, 以及RFB/Telnet等

自定义开发指南

  • 推荐IDE使用 VSCode 进行二次开发,因为项目根目录已包含 .vscode 编辑器配置文件
  • 修改数据库配置: resources/webconsole.yml#datasource.mysql.dbconnectstr,也可以使用环境变量:.vscode/launch.json => WEBCONSOLE_DATASOURCE_MYSQL_DBCONNECTSTR
  • 配置文件说明:本项目使用viper配置框架,加载优先级依次为:Set()/Flags/Env/Config/Default
  • 如果需要添加新的配置项,则必须使用config_generator.go 生成和xxx-config.go 对应的默认配置项webconsole.default.yml.go,参考命令:
cd $WEBCONSOLE_HOME
go run config_generator.go

Successfully for pkg/config/webconsole.default.yml.go
Go
1
https://gitee.com/a-big-wax-gourd/xcloud-webconsole.git
git@gitee.com:a-big-wax-gourd/xcloud-webconsole.git
a-big-wax-gourd
xcloud-webconsole
xcloud-webconsole
master

搜索帮助