Skip to content

🚀 使用 Docker Compose 部署 Nexus Terminal(远程终端管理平台)

🚀 使用 Docker Compose 部署 Nexus Terminal

Nexus Terminal 是一款现代化的 Web SSH、RDP、VNC 客户端,提供独立桌面端应用,集成了高级安全机制与丰富的用户功能,适用于开发者、运维人员及企业团队,实现高效、安全的远程连接与管理。

📝 项目简介

Nexus Terminal(星枢终端)是一款现代化、功能丰富的 Web SSH / RDP / VNC 客户端,致力于提供高度可定制的远程连接体验。

核心特点: - 多协议支持:同时支持 SSH、SFTP、RDP 和 VNC 协议,满足不同场景下的远程连接需求 - 强大的文件编辑:采用 Monaco Editor(VS Code 同款编辑器),支持在线编辑远程文件,提供语法高亮与智能补全 - 完善的管理功能:内置简易 Docker 容器管理面板,便于容器运维 - 高级安全机制:集成人机验证(hCaptcha、Google reCAPTCHA)与双因素认证(2FA),支持 IP 白名单与黑名单,异常访问自动封禁 - 多平台支持:支持 PWA(渐进式 Web 应用),可安装为类原生应用,同时提供独立的桌面端应用 - 审计与监控:全面记录用户行为与系统变更,内置心跳保活机制,确保连接稳定

🔧 部署前准备

系统环境要求

  • 操作系统:推荐 Linux 发行版(如 Ubuntu 22.04+)
  • Docker 版本:Docker 27.1.1+
  • Docker Compose:版本 2.0+
  • 硬件资源:至少 2GB 内存,20GB 可用磁盘空间

环境检查

  1. 检查 Docker 服务状态 bash systemctl status docker 确保 Docker 服务处于 active (running) 状态

  2. 检查 Docker 版本 bash docker -v 确保版本为 27.1.1 或更高

  3. 检查 Docker Compose 版本 bash docker compose version 确保版本为 v2.19.1 或更高

⚙️ 配置 Docker Compose

创建部署目录

mkdir -p /data/nexus-terminal && cd /data/nexus-terminal

准备配置文件

创建 docker-compose.yml 文件,内容如下:

services:
  frontend:
    image: heavrnl/nexus-terminal-frontend:latest   # # Web 前端界面服务
    container_name: nexus-terminal-frontend
    ports:
      - "18111:80"     # 本地监听端口,供反向代理使用,左侧自行调整
    depends_on:
      - backend
      - remote-gateway
    restart: always
    networks:
      - nexus-terminal-network

  backend:
    image: heavrnl/nexus-terminal-backend:latest      # # 后端主逻辑服务
    container_name: nexus-terminal-backend
    env_file:
      - .env
    environment:
      NODE_ENV: production # 设置为生产环境,非调试开发不要动
      PORT: 3001
      #DEPLOYMENT_MODE: docker
      #REMOTE_GATEWAY_API_BASE_LOCAL: http://localhost:9090
      #REMOTE_GATEWAY_API_BASE_DOCKER: http://remote-gateway:9090
      #REMOTE_GATEWAY_WS_URL_LOCAL: ws://localhost:8085
      #REMOTE_GATEWAY_WS_URL_DOCKER: ws://remote-gateway:8085
      #RP_ID: "yourdomain.com"
      #RP_ORIGIN: "https://yourdomain.com"
    volumes:
      - ./data:/app/data
    restart: always
    networks:
      - nexus-terminal-network

  remote-gateway:
    image: heavrnl/nexus-terminal-remote-gateway:latest  # 协议转发网关
    container_name: nexus-terminal-remote-gateway
    environment:
      GUACD_HOST: guacd
      GUACD_PORT: 4822
      REMOTE_GATEWAY_API_PORT: 9090
      REMOTE_GATEWAY_WS_PORT: 8085
      FRONTEND_URL: http://frontend
      MAIN_BACKEND_URL: http://backend:3001
      NODE_ENV: production
    restart: always
    networks:
      - nexus-terminal-network
    depends_on:
      - guacd
      - backend

  guacd:
    image: guacamole/guacd:latest  # Apache Guacamole 后端服务
    container_name: nexus-terminal-guacd
    networks:
      - nexus-terminal-network
    #restart: unless-stopped
    restart: always

networks:
  nexus-terminal-network:
    driver: bridge
    name: nexus-terminal-network
    enable_ipv6: true
    ipam:
      config:
        - subnet: fd01::/80    
          gateway: fd01::1    


#配置环境
#建议在 Debian(AMD64 架构)环境中部署,因本人无 ARM 设备,无法保证其兼容性。

#新建文件夹

#mkdir ./nexus-terminal && cd ./nexus-terminal
#下载仓库中的 docker-compose.yml 和 .env 文件到当前目录。

#wget https://raw.githubusercontent.com/Heavrnl/nexus-terminal/refs/heads/main/docker-compose.yml -O docker-compose.yml && wget https://raw.githubusercontent.com/Heavrnl/nexus-terminal/refs/heads/main/.env -O .env
#⚠️ 注意:
#arm64 用户请将 docker-compose.yml 中的镜像 guacamole/guacd:latest 替换为 guacamole/guacd:1.6.0-RC1。
#armv7 用户请参考下方注意事项。


创建 .env 环境配置文件:

# 部署模式 (local/docker)
DEPLOYMENT_MODE=docker

# 2. 服务通信地址(Docker 部署无需修改,本地部署需调整)
# 远程网关API地址 (Docker内部网络)
REMOTE_GATEWAY_API_BASE_LOCAL=http://localhost:9090
REMOTE_GATEWAY_API_BASE_DOCKER=http://remote-gateway:9090  # 容器内 API 地址(默认正确)
# 远程网关WebSocket地址 (Docker内部网络)
REMOTE_GATEWAY_WS_URL_LOCAL=ws://localhost:8085
REMOTE_GATEWAY_WS_URL_DOCKER=ws://remote-gateway:8085     # 容器内 WebSocket 地址(默认正确)

# 1. WebAuthn 身份验证配置(远程访问必须修改,本地测试可设为 localhost)
# RP_ID:认证依赖的域名(如部署在 example.com,填 example.com)
# RP_ORIGIN:前端访问地址(如 https://example.com 或 http://localhost:18111)
RP_ID="localhost"  # 本地测试用;远程访问改为你的域名(如 yourdomain.com)
RP_ORIGIN="http://localhost:18111"  # 本地测试用;远程访问改为 https://yourdomain.com
# Passkey认证配置 (重要!请替换为您的实际域名)
#RP_ID="yourdomain.com"
#RP_ORIGIN="https://yourdomain.com"

关键配置说明

  1. 网络配置:使用自定义的 bridge 网络,并启用 IPv6 支持
  2. 端口映射:前端服务映射到宿主机的 18111 端口
  3. 数据持久化:后端服务的 /app/data 目录映射到本地的 ./data 目录
  4. 服务依赖:确保服务按正确顺序启动

架构说明: - frontend: Web 前端界面服务 - backend: 后端主逻辑服务
- remote-gateway: 协议转发网关 - guacd: Apache Guacamole 后端服务,处理远程桌面连接

🚀 启动与验证

拉取镜像并启动服务

docker compose up -d

验证服务状态

  1. 检查容器运行状态 bash docker ps 应该看到 4 个服务都处于 Up 状态

  2. 查看服务日志 bash docker compose logs -f

  3. 访问 Web 界面 在浏览器中访问 http://你的服务器IP:18111

初始设置

首次访问会显示管理员注册页面: - 设置管理员用户名和密码 - 完成基础系统配置

🔌 基础配置与使用

添加远程连接

  1. 登录系统后,在仪表盘或终端页面点击"+"号添加新连接
  2. 根据协议填写连接信息
  3. SSH:主机地址、端口、用户名、认证方式(密码/密钥)
  4. RDP:主机地址、端口、用户名、密码、域(可选)
  5. VNC:主机地址、端口、密码

  6. 保存连接,即可在连接列表中看到新添加的连接

主要功能使用

功能模块 描述 使用场景
多标签页管理 同时管理多个 SSH 与 SFTP 连接 同时操作多台服务器
文件管理 内置 Monaco Editor,直接在线编辑服务器文件 快速修改配置文件
Docker 管理 简易 Docker 容器管理面板 容器运维和状态监控
快捷指令 预设常用命令,快速执行 提高运维效率
服务器状态 图表展示 CPU、内存、网络使用情况 服务器性能监控

安全配置

  1. 配置双因素认证(2FA) 增强账户安全
  2. 设置 IP 白名单,限制访问来源
  3. 配置邮件通知,接收登录提醒和异常告警

🛠️ 维护与管理

日常维护操作

  1. 服务启动/停止 ```bash # 停止服务 docker compose down

# 启动服务 docker compose up -d ```

  1. 数据备份 bash # 备份数据目录 tar -czf nexus-terminal-backup-$(date +%Y%m%d).tar.gz ./data

  2. 服务更新 ```bash # 进入部署目录 cd /data/nexus-terminal

# 拉取最新镜像 docker compose pull

# 重启服务 docker compose down docker compose up -d ```

监控与日志

  1. 查看实时日志 bash docker compose logs -f [服务名]

  2. 审计日志:在 Web 界面的"审计日志"模块查看用户操作记录

🐛 常见问题排查

1. 容器启动失败

问题现象docker ps 显示容器状态不是 Up

解决方案: - 检查日志:docker compose logs [服务名] - 验证端口占用:netstat -tulpn | grep 18111 - 检查镜像拉取:docker images | grep heavrnl

2. 无法访问 Web 界面

问题现象:浏览器访问 http://IP:18111 无响应

解决方案: - 检查防火墙设置: bash # 开放 18111 端口 ufw allow 18111 - 验证服务状态:curl http://localhost:18111

3. 远程连接失败

问题现象:可以登录 Nexus Terminal,但无法建立 SSH/RDP 连接

解决方案: - 检查目标服务器网络连通性 - 验证认证信息(用户名、密码、密钥) - 查看网关服务日志:docker compose logs remote-gateway

4. 数据持久化问题

问题现象:重启后配置丢失

解决方案: - 检查数据目录权限:chmod -R 755 ./data - 验证卷挂载:docker inspect nexus-terminal-backend

5. 性能问题

问题现象:界面响应慢或连接卡顿

解决方案: - 检查服务器资源使用:docker stats - 调整容器资源限制 - 考虑升级服务器配置

通过本教程,您应该已经成功部署并配置了 Nexus Terminal,现在可以享受这款现代化远程连接工具带来的便利了。如果在使用过程中遇到其他问题,可以参考项目官方文档或社区支持资源。