🚀 使用 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 可用磁盘空间
环境检查
-
检查 Docker 服务状态
bash systemctl status docker确保 Docker 服务处于active (running)状态 -
检查 Docker 版本
bash docker -v确保版本为 27.1.1 或更高 -
检查 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"
关键配置说明
- 网络配置:使用自定义的 bridge 网络,并启用 IPv6 支持
- 端口映射:前端服务映射到宿主机的 18111 端口
- 数据持久化:后端服务的
/app/data目录映射到本地的./data目录 - 服务依赖:确保服务按正确顺序启动
架构说明:
- frontend: Web 前端界面服务
- backend: 后端主逻辑服务
- remote-gateway: 协议转发网关
- guacd: Apache Guacamole 后端服务,处理远程桌面连接
🚀 启动与验证
拉取镜像并启动服务
docker compose up -d
验证服务状态
-
检查容器运行状态
bash docker ps应该看到 4 个服务都处于Up状态 -
查看服务日志
bash docker compose logs -f -
访问 Web 界面 在浏览器中访问
http://你的服务器IP:18111
初始设置
首次访问会显示管理员注册页面: - 设置管理员用户名和密码 - 完成基础系统配置
🔌 基础配置与使用
添加远程连接
- 登录系统后,在仪表盘或终端页面点击"+"号添加新连接
- 根据协议填写连接信息:
- SSH:主机地址、端口、用户名、认证方式(密码/密钥)
- RDP:主机地址、端口、用户名、密码、域(可选)
-
VNC:主机地址、端口、密码
-
保存连接,即可在连接列表中看到新添加的连接
主要功能使用
| 功能模块 | 描述 | 使用场景 |
|---|---|---|
| 多标签页管理 | 同时管理多个 SSH 与 SFTP 连接 | 同时操作多台服务器 |
| 文件管理 | 内置 Monaco Editor,直接在线编辑服务器文件 | 快速修改配置文件 |
| Docker 管理 | 简易 Docker 容器管理面板 | 容器运维和状态监控 |
| 快捷指令 | 预设常用命令,快速执行 | 提高运维效率 |
| 服务器状态 | 图表展示 CPU、内存、网络使用情况 | 服务器性能监控 |
安全配置
- 配置双因素认证(2FA) 增强账户安全
- 设置 IP 白名单,限制访问来源
- 配置邮件通知,接收登录提醒和异常告警
🛠️ 维护与管理
日常维护操作
- 服务启动/停止 ```bash # 停止服务 docker compose down
# 启动服务 docker compose up -d ```
-
数据备份
bash # 备份数据目录 tar -czf nexus-terminal-backup-$(date +%Y%m%d).tar.gz ./data -
服务更新 ```bash # 进入部署目录 cd /data/nexus-terminal
# 拉取最新镜像 docker compose pull
# 重启服务 docker compose down docker compose up -d ```
监控与日志
-
查看实时日志
bash docker compose logs -f [服务名] -
审计日志:在 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,现在可以享受这款现代化远程连接工具带来的便利了。如果在使用过程中遇到其他问题,可以参考项目官方文档或社区支持资源。