Sign inSign up

dickhub/next-terminal

By dickhub

Updated over 3 years ago

Image
0

10K+

dickhub/next-terminal repository overview

latest Opensource Version was 0.5.0

最后的开源版本为0.5.0

docker run -d \
  -p 8088:8088 \
  --name next-terminal \
  --restart always dickhub/next-terminal:0.5.0

8 README.md @@ -26,7 +26,7 @@ Next Terminal基于 Apache Guacamole 开发,

在线体验

https://next-terminal.typesafe.cn/ https://next.typesafe.cn/

test/test

@@ -36,17 +36,81 @@ test/test

快速安装

本项目未进行严格的安全性测试,不建议部署安装在公网环境。

默认账号密码为 admin/admin

相关截图

截图

资源占用

未使用时资源占用非常小

资源占用截图

控制面板

更方便的概览系统信息

dashboard

资产管理

支持多种RDP、SSH、Telnet、VNC,Kubernetes等多种协议的资产

资产

rdp

rdp

vnc

vnc

ssh

ssh

授权凭证

极为方便的复用资产认证信息

凭证

批量执行命令

批量执行命令

在线监控

实时监控用户的操作,并可以随时断开该会话

在线监控

离线回放

详细的数据回放,定位任何一个可疑操作

离线回放

计划任务

自定义计划任务

计划任务

访问安全

黑白名单访问控制,支持ip、cidr及连续IP

访问安全

用户组授权

灵活的授权策略

用户组授权

联系方式

155 docs/faq.md @@ -1,155 +0,0 @@

常见问题

如何进行反向代理?

主要是反向代理websocket,示例如下

location / {
    proxy_pass http://127.0.0.1:8088/;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $http_connection;
}
访问realvnc提示验证失败?
  1. 把密码类型修改为VNC
  2. 把加密类型修改为 Prefer On
docker安装如何更新?

推荐使用watchtower自动更新

手动更新需要先拉取最新的镜像

docker pull dushixiang/next-terminal:latest

删除掉原来的容器

如果是使用sqlite方式启动的,记得备份next-terminal.db文件哦

docker rm <container-id> -f

再重新执行一次 docker方式安装命令

连接rdp协议的windows7或者windows server 2008直接断开?

因为freerdp的一个问题导致的,把 设置>RDP 下面的禁用字形缓存打开即可。 详情可参考 https://issues.apache.org/jira/browse/GUACAMOLE-1191

ssh协议中文字体乱码怎么办?

参考安装字体章节,给系统安装中文字体。

ssh协议类型的资产连接模式有什么区别?
  1. 默认:默认使用guacd模式
  2. 原生:使用golang+xterm.js方式实现的webssh,传输协议是文本,操作响应更快。但目前尚未实现实时监控。
  3. guacd:Apache Guacamole包装了一层的ssh协议,支持实时监控,录屏播放更加统一。但某些密钥不支持。
系统密码忘记了怎么办? 首先需要进入程序所在目录,使用docker安装的程序目录为:/usr/local/next-terminal

执行命令

./next-terminal --reset-password admin

其中 admin 为用户登录账号,成功之后会输出

 _______                   __    ___________                  .__              .__   
 \      \   ____ ___  ____/  |_  \__    ___/__________  _____ |__| ____ _____  |  |  
 /   |   \_/ __ \\  \/  /\   __\   |    |_/ __ \_  __ \/     \|  |/    \\__  \ |  |  
/    |    \  ___/ >    <  |  |     |    |\  ___/|  | \/  Y Y  \  |   |  \/ __ \|  |__
\____|__  /\___  >__/\_ \ |__|     |____| \___  >__|  |__|_|  /__|___|  (____  /____/
        \/     \/      \/                     \/            \/        \/     \/      v0.3.0
当前数据库模式为:mysql
Mar  5 20:00:16.923 [DEBU] 用户「admin」密码初始化为: next-terminal
TOTP客户端丢了怎么办? 首先需要进入程序所在目录,使用docker安装的程序目录为:/usr/local/next-terminal 执行命令 ```shell ./next-terminal --reset-totp admin ``` 其中 admin 为用户登录账号,成功之后会输出 ``` shell _______ __ ___________ .__ .__ \ \ ____ ___ ____/ |_ \__ ___/__________ _____ |__| ____ _____ | | / | \_/ __ \\ \/ /\ __\ | |_/ __ \_ __ \/ \| |/ \\__ \ | | / | \ ___/ > < | | | |\ ___/| | \/ Y Y \ | | \/ __ \| |__ \____|__ /\___ >__/\_ \ |__| |____| \___ >__| |__|_| /__|___| (____ /____/ \/ \/ \/ \/ \/ \/ \/ v0.4.0 当前数据库模式为:mysql Mar 5 20:00:16.923 [DEBU] 用户「admin」已重置TOTP ```
想要修改数据库敏感信息加密的key怎么办? 首先需要进入程序所在目录,使用docker安装的程序目录为:/usr/local/next-terminal 执行命令 ```shell ./next-terminal --encryption-key 旧的加密key --new-encryption-key 新的的加密key ``` 成功之后会输出 ``` shell _______ __ ___________ .__ .__ \ \ ____ ___ ____/ |_ \__ ___/__________ _____ |__| ____ _____ | | / | \_/ __ \\ \/ /\ __\ | |_/ __ \_ __ \/ \| |/ \\__ \ | | / | \ ___/ > < | | | |\ ___/| | \/ Y Y \ | | \/ __ \| |__ \____|__ /\___ >__/\_ \ |__| |____| \___ >__| |__|_| /__|___| (____ /____/ \/ \/ \/ \/ \/ \/ \/ v0.4.0 当前数据库模式为:mysql Mar 5 20:00:16.923 [DEBU] encryption key has being changed. ``` 最后重新启动程序,并且把加密key修改为新的。
117 docs/install-docker.md @@ -1,117 +0,0 @@ # docker安装

默认使用docker hub源,与Github的docker镜像仓库ghcr.io同步。

国内用户可以使用阿里云镜像仓库 registry.cn-qingdao.aliyuncs.com/dushixiang/next-terminal

使用sqlite存储数据

最简安装

docker run -d \
  -p 8088:8088 \
  --name next-terminal \
  --restart always dushixiang/next-terminal:latest

sqlite数据库文件及存储的录屏文件映射到宿主机器

mkdir -p "/opt/next-terminal/drive"
mkdir -p "/opt/next-terminal/recording"
touch /opt/next-terminal/next-terminal.db
docker run -d \
  -p 8088:8088 \
  -v /opt/next-terminal/drive:/usr/local/next-terminal/drive \
  -v /opt/next-terminal/recording:/usr/local/next-terminal/recording \
  -v /opt/next-terminal/next-terminal.db:/usr/local/next-terminal/next-terminal.db \
  --name next-terminal \
  --restart always dushixiang/next-terminal:latest
使用mysql存储数据
docker run -d \
  -p 8088:8088 \
  -e DB=mysql \
  -e MYSQL_HOSTNAME=172.1.0.1 \
  -e MYSQL_PORT=3306 \
  -e MYSQL_USERNAME=root \
  -e MYSQL_PASSWORD=mysql \
  -e MYSQL_DATABASE=next_terminal \
  --name next-terminal \
  --restart always dushixiang/next-terminal:latest

或者使用docker-compose构建

示例:

  1. 在root目录下创建文件夹 next-terminal

  2. /root/next-terminal文件夹下创建docker-compose.yml文件

    version: '3.3'
    services:
      mysql:
        image: mysql:8.0
        environment:
          MYSQL_DATABASE: next-terminal
          MYSQL_USER: next-terminal
          MYSQL_PASSWORD: next-terminal
          MYSQL_ROOT_PASSWORD: next-terminal
        ports:
          - "3306:3306"
      next-terminal:
        image: "dushixiang/next-terminal:latest"
        environment:
          DB: "mysql"
          MYSQL_HOSTNAME: "mysql"
          MYSQL_PORT: 3306
          MYSQL_USERNAME: "next-terminal"
          MYSQL_PASSWORD: "next-terminal"
          MYSQL_DATABASE: "next-terminal"
        ports:
          - "8088:8088"
        volumes:
          - /root/next-terminal/drive:/usr/local/next-terminal/drive
          - /root/next-terminal/recording:/usr/local/next-terminal/recording
        depends_on:
          - mysql
    
  3. /root/next-terminal文件夹下执行命令docker-compose up

注意事项 ⚠️
  1. docker连接宿主机器上的mysql时连接地址不是127.0.0.1,请使用ipconfigifconfig确认宿主机器的IP。
  2. 使用其他容器内部的mysql时请使用--link <some-mysql-name>,环境变量参数为-e MYSQL_HOSTNAME=<some-mysql-name>
  3. 使用独立数据库的需要手动创建数据库,使用docker-compose不需要。

环境变量

参数含义
DB数据库类型,默认 sqlite,可选['sqlite','mysql']
SQLITE_FILEsqlite数据库文件存放地址,默认 'next-terminal.db'
MYSQL_HOSTNAMEmysql数据库地址
MYSQL_PORTmysql数据库端口
MYSQL_USERNAMEmysql数据库用户
MYSQL_PASSWORDmysql数据库密码
MYSQL_DATABASEmysql数据库名称
SERVER_ADDR服务器监听地址,默认0.0.0.0:8088
ENCRYPTION_KEY授权凭证和资产的密码,密钥等敏感信息加密的key,默认next-terminal

其他

next-terminal 使用了supervisord来管理服务,因此相关日志在 /var/log/supervisor/next-terminal-*.log

程序安装目录地址为:/usr/local/next-terminal

录屏文件存放地址为:/usr/local/next-terminal/recording

远程桌面挂载地址为:/usr/local/next-terminal/drive 186 docs/install-naive.md @@ -1,186 +0,0 @@

原生安装

安装 Apache Guacamole-Server

Centos 安装Apache Guacamole-Server依赖文件
yum install -y gcc cairo-devel libjpeg-turbo-devel libpng-devel uuid-devel freerdp-devel pango-devel libssh2-devel libtelnet-devel libvncserver-devel pulseaudio-libs-devel openssl-devel libvorbis-devel libwebp-devel libwebsockets-devel libtool
Ubuntu 安装Apache Guacamole-Server依赖文件
sudo apt-get install libcairo2-dev libjpeg-turbo8-dev libpng12-dev libtool-bin libossp-uuid-dev freerdp2-dev libpango1.0-dev libssh2-1-dev 	libtelnet-dev libvncserver-dev libwebsockets-dev libpulse-dev libssl-dev libvorbis-dev libwebp-dev
Debian 安装Apache Guacamole-Server依赖文件
sudo apt-get install libcairo2-dev libjpeg62-turbo-dev libpng-dev libtool-bin libossp-uuid-dev freerdp2-dev libpango1.0-dev libssh2-1-dev libtelnet-dev libvncserver-dev libwebsockets-dev libpulse-dev libssl-dev libvorbis-dev libwebp-dev

如有疑问可参考 Guacamole官方安装文档

下载&解压&configure

wget https://archive.apache.org/dist/guacamole/1.3.0/source/guacamole-server-1.3.0.tar.gz
tar -xzf guacamole-server-1.3.0.tar.gz
cd guacamole-server-1.3.0
./configure --with-init-dir=/etc/init.d

如果安装的依赖文件没有缺失的话,会看到RDP SSH VNC 都是 yes

------------------------------------------------
guacamole-server version 1.3.0
------------------------------------------------
   Library status:
     freerdp2 ............ yes
     pango ............... yes
     libavcodec .......... no
     libavformat.......... no
     libavutil ........... no
     libssh2 ............. yes
     libssl .............. yes
     libswscale .......... no
     libtelnet ........... yes
     libVNCServer ........ yes
     libvorbis ........... yes
     libpulse ............ yes
     libwebsockets ....... yes
     libwebp ............. yes
     wsock32 ............. no
   Protocol support:
      Kubernetes .... yes
      RDP ........... yes
      SSH ........... yes
      Telnet ........ yes
      VNC ........... yes
   Services / tools:
      guacd ...... yes
      guacenc .... no
      guaclog .... yes
   FreeRDP plugins: /usr/lib64/freerdp2
   Init scripts: /etc/init.d
   Systemd units: no
Type "make" to compile guacamole-server.

编译和安装

make && make install && ldconfig

配置guacamole-server

mkdir /etc/guacamole/ && cat <<EOF >> /etc/guacamole/guacd.conf
[daemon]
pid_file = /var/run/guacd.pid
log_level = info
[server]
bind_host = 0.0.0.0
bind_port = 4822
EOF

启动 guacamole-server

/etc/init.d/guacd start
安装字体(SSH使用)

安装字体管理软件

yum install -y fontconfig mkfontscale

下载字体文件并移动到 /usr/share/fonts/目录下

cd  /usr/share/fonts/
wget https://raw.githubusercontent.com/dushixiang/next-terminal/master/web/src/fonts/Menlo-Regular-1.ttf

更新字体

mkfontscale
mkfontdir
fc-cache
安装 Next Terminal

示例步骤安装在 /usr/local/next-terminal,你可以自由选择安装目录。 下载

wget https://github.com/dushixiang/next-terminal/releases/latest/download/next-terminal.tgz

解压

tar -zxvf next-terminal.tgz -C /usr/local/

/usr/local/next-terminal/etc/next-terminal下创建或修改配置文件config.yml

db: sqlite
# 当db为sqlite时mysql的配置无效
#mysql:
#  hostname: 172.16.101.32
#  port: 3306
#  username: root
#  password: mysql
#  database: next-terminal
# 当db为mysql时sqlite的配置无效
sqlite:
  file: 'next-terminal.db'
server:
  addr: 0.0.0.0:8088
# 当设置下面两个参数时会自动开启https模式(前提是证书文件存在)
#  cert: /root/next-terminal/cert.pem
#  key: /root/next-terminal/key.pem
# 授权凭证和资产的密码,密钥等敏感信息加密的key,默认`next-terminal`
#encryption-key: next-terminal

启动

./next-terminal

使用系统服务方式启动

/etc/systemd/system/ 目录创建 next-terminal.service 文件并写入以下内容

[Unit]
Description=next-terminal service
After=network.target
[Service]
User=root
WorkingDirectory=/usr/local/next-terminal
ExecStart=/usr/local/next-terminal/next-terminal
Restart=on-failure
[Install]
WantedBy=multi-user.target

重载系统服务&&设置开机启动&&启动服务&&查看状态

systemctl daemon-reload
systemctl enable next-terminal
systemctl start next-terminal
systemctl status next-terminal

69 docs/screenshot.md @@ -1,69 +0,0 @@

资源占用

未使用时资源占用非常小

资源占用截图

控制面板

更方便的概览系统信息

dashboard

资产管理

支持多种RDP、SSH、Telnet、VNC,Kubernetes等多种协议的资产

资产

rdp

rdp

vnc

vnc

ssh

ssh

授权凭证

极为方便的复用资产认证信息

凭证

批量执行命令

批量执行命令

在线监控

实时监控用户的操作,并可以随时断开该会话

在线监控

离线回放

详细的数据回放,定位任何一个可疑操作

离线回放

计划任务

自定义计划任务

计划任务

访问安全

黑白名单访问控制,支持ip、cidr及连续IP

访问安全

用户组授权

灵活的授权策略

用户组授权

Tag summary

Content type

Image

Digest

sha256:82046a87e

Size

24.3 MB

Last updated

over 3 years ago

docker pull dickhub/next-terminal:latest_backdateis_2023-Feb-15_00h30m01s