{"id":28604654,"url":"https://github.com/Heavrnl/nexus-terminal","last_synced_at":"2025-06-11T18:03:08.698Z","repository":{"id":290004703,"uuid":"966014478","full_name":"Heavrnl/nexus-terminal","owner":"Heavrnl","description":" 一款现代化的 Web SSH / RDP / VNC 客户端，提供独立桌面端，支持人机验证、2FA、界面定制、操作审计等强大功能。","archived":false,"fork":false,"pushed_at":"2025-06-04T04:54:41.000Z","size":9298,"stargazers_count":910,"open_issues_count":8,"forks_count":55,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-06-04T08:44:47.318Z","etag":null,"topics":["express","nodejs","typescript","vite","vue3"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Heavrnl.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"ko_fi":"0heavrnl"}},"created_at":"2025-04-14T09:12:55.000Z","updated_at":"2025-06-04T07:21:04.000Z","dependencies_parsed_at":"2025-05-10T12:19:11.466Z","dependency_job_id":"25b9fef9-251d-4765-bfe7-0600932aa289","html_url":"https://github.com/Heavrnl/nexus-terminal","commit_stats":null,"previous_names":["heavrnl/nexus-terminal"],"tags_count":43,"template":false,"template_full_name":null,"purl":"pkg:github/Heavrnl/nexus-terminal","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Heavrnl%2Fnexus-terminal","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Heavrnl%2Fnexus-terminal/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Heavrnl%2Fnexus-terminal/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Heavrnl%2Fnexus-terminal/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Heavrnl","download_url":"https://codeload.github.com/Heavrnl/nexus-terminal/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Heavrnl%2Fnexus-terminal/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259311563,"owners_count":22838746,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["express","nodejs","typescript","vite","vue3"],"created_at":"2025-06-11T18:01:19.402Z","updated_at":"2025-06-11T18:03:08.692Z","avatar_url":"https://github.com/Heavrnl.png","language":"TypeScript","funding_links":["https://ko-fi.com/0heavrnl"],"categories":["TypeScript"],"sub_categories":[],"readme":"![banner.png](https://lsky.tuyu.me/i/2025/04/30/681209e053db7.png)\n---\n\n\u003cdiv align=\"center\"\u003e\n\n[![Docker](https://img.shields.io/badge/-Docker-2496ED?style=flat-square\u0026logo=docker\u0026logoColor=white)][docker-url] [![License: GPL-3.0](https://img.shields.io/badge/License-GPL%203.0-4CAF50?style=flat-square)](https://github.com/Heavrnl/nexus-terminal/blob/main/LICENSE)\n\u003cbr\u003e\n[中文](./README.md) | [English](./doc/README_EN.md)\n\n[docker-url]: https://hub.docker.com/r/heavrnl/nexus-terminal-frontend\n\n\u003c/div\u003e\n\n\u003e 去考研啦，项目暂时停更，考完回来还会继续更新！\n\n## 📖 概述\n\n**星枢终端（Nexus Terminal）** 是一款现代化、功能丰富的 Web SSH / RDP / VNC 客户端，致力于提供高度可定制的远程连接体验。提供独立的本地桌面端。\n\n## ✨ 功能特性\n\n*   多标签页管理 SSH 与 SFTP 连接  \n*   支持 RDP/VNC 协议\n*   支持 PWA\n*   采用 Monaco Editor，支持在线编辑文件  \n*   集成多重登录安全机制，包括人机验证（hCaptcha、Google reCAPTCHA）与双因素认证（2FA）  \n*   高度可定制的界面主题与布局风格\n*   内置简易 Docker 容器管理面板，便于容器运维  \n*   支持 IP 白名单与黑名单，异常访问自动封禁  \n*   通知系统（如登录提醒、异常告警）  \n*   审计日志，全面记录用户行为与系统变更\n*   基于 Node.js 的轻量级后端，资源占用低\n*   内置心跳保活机制，确保连接稳定\n\n## 📸 截图\n\n\n\n\n\n|                            终端界面（Light）                            |\n|:-------------------------------------------------------------:|\n| ![workspace_light.png](https://lsky.tuyu.me/i/2025/04/30/68120a8dd0489.png) |\n\n---\n\n|                            终端界面（Dark）                            |\n|:-------------------------------------------------------------:|\n| ![workspace_darker.png](https://lsky.tuyu.me/i/2025/04/30/68120aa275a76.png) |\n\n---\n\n|                            移动端界面1                            |                            移动端界面2                            |\n|:-------------------------------------------------------------:|:-------------------------------------------------------------:|\n| ![1746339196937.png](https://lsky.tuyu.me/i/2025/05/04/6817056948ac2.png) |![1746339222136.png](https://lsky.tuyu.me/i/2025/05/04/681705820fe01.png) |\n\n---\n\n\n## 🖥️ 桌面端\n\n\u003e 移除了web端的特有功能，如各种登录验证，会话挂起等功能\n\nhttps://github.com/Heavrnl/nexus-terminal/releases/latest\n\n## 🚀 快速开始\n\n### 1️⃣ 配置环境\n\n\u003e 建议在 Debian（AMD64 架构）环境中部署，因本人无 ARM 设备，无法保证其兼容性。\n\n新建文件夹\n```bash\nmkdir ./nexus-terminal \u0026\u0026 cd ./nexus-terminal\n```\n\n\n下载仓库中的 [**docker-compose.yml**](https://raw.githubusercontent.com/Heavrnl/nexus-terminal/refs/heads/main/docker-compose.yml) 和 [**.env**](https://raw.githubusercontent.com/Heavrnl/nexus-terminal/refs/heads/main/.env) 文件到当前目录。\n```bash\nwget https://raw.githubusercontent.com/Heavrnl/nexus-terminal/refs/heads/main/docker-compose.yml -O docker-compose.yml \u0026\u0026 wget https://raw.githubusercontent.com/Heavrnl/nexus-terminal/refs/heads/main/.env -O .env\n```\n\u003e ⚠️ **注意：**\n\u003e\n\u003e * **arm64 用户**请将 `docker-compose.yml` 中的镜像 `guacamole/guacd:latest` 替换为 `guacamole/guacd:1.6.0-RC1`。\n\u003e * **armv7 用户**请参考下方注意事项。\n\n\n\n\n配置 nginx\n```conf\nlocation / {\n    proxy_http_version 1.1;\n    proxy_set_header Upgrade $http_upgrade;\n    proxy_set_header Connection \"upgrade\";\n    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n    proxy_set_header X-Forwarded-Proto $scheme;\n    proxy_set_header Host $http_host;\n    proxy_set_header X-Real-IP $remote_addr;\n    proxy_set_header Range $http_range;\n    proxy_set_header If-Range $http_if_range;\n    proxy_redirect off;\n    proxy_pass http://127.0.0.1:18111;\n}\n```\n\n\n\n为 docker 配置IPv6（可选，如果你不使用ipv6连接服务器可以不配置）\n\n在`/etc/docker/daemon.json`加入以下内容\n```json\n{\n  \"ipv6\": true,\n  \"fixed-cidr-v6\": \"fd00::/80\",\n  \"ip6tables\": true,\n  \"experimental\": true\n}\n```\n重启docker服务\n```\nsudo systemctl restart docker\n```\n\n### 2️⃣ 启动服务\n\n```bash\ndocker compose up -d\n```\n\n### 3️⃣ 更新\n注意：docker-compose 运行不需要拉取仓库源码，除非你打算自己build，否则只需要在项目目录执行以下命令即可更新。\n```bash\ndocker compose down\n```\n```bash\ndocker compose pull\n```\n```bash\ndocker compose up -d\n```\n## 📚 使用指南\n\n### 挂起会话组件\n你可以在 SSH 标签页中右键选择“挂起会话”（移动界面长按即可）。一旦挂起，即使网页断开连接，后端也会自动接管并保持 SSH 连接不中断。你可以随时通过面板组件重新恢复会话，整个过程确保编译、长任务等操作不会因网络波动等原因中断。\n\n### 命令输入框组件\n\n1.  **标签页切换**：当命令输入框获得焦点时，使用 `Alt + ↑/↓` 切换 SSH 会话标签页，使用 `Alt + ←/→` 切换文本编辑器标签页。\n2.  **命令同步**（需在设置中开启）：开启后，在命令输入框中输入的文字将实时同步到选定的目标输入源。使用 `↑/↓` 键选择菜单命令项，然后按下 `Enter` 发送选中的指令。\n\n\n### 文件管理器组件\n\n1.  **文件快速选择**：在文件搜索框获得焦点时，可以使用 `↑/↓` 键快速选择文件。\n2.  **拖拽上传**：支持从浏览器外部拖拽文件或文件夹进行上传。**注意：** 上传大量文件或深层文件夹时，建议先进行打包压缩，以避免浏览器卡死。\n3.  **内部拖拽**：可以直接在文件管理器内部拖动文件或文件夹以进行移动。\n4.  **多选操作**：按住 `Ctrl` 或 `Shift` 键可以选择多个文件或文件夹。\n5.  **右键菜单**：提供复制、粘贴、剪切、删除、重命名、修改权限等常用文件操作。\n\n### 终端组件\n1.  Ctrl + Shift + C 复制，Ctrl + Shift + V 粘贴\n\n\n### 历史命令组件\n\n1.  **查看完整命令**：当历史命令过长被截断时，将鼠标悬停在命令上即可查看完整的指令内容。\n\n### 通用操作\n\n1.  **缩放**：在终端、文件管理器和文本编辑器组件和快捷指令视图中，可以使用 `Ctrl + 鼠标滚轮` 进行缩放。\n2.  **侧栏**：展开的侧栏可以通过拖拽调节宽度。\n3.  **标签栏**：对于ssh标签栏和文件管理器标签栏可以右键弹出菜单，内容项有：关闭，关闭左侧标签页，关闭其他标签页，关闭右侧标签页。\n4.  **标签分组折叠栏** 可以直接点击视图里的标签名字修改标签名称\n5.  **自动重连**：在连接断开状态下，可在命令输入框或终端中按回车，或点击连接列表中的同一 SSH 连接以触发自动重连。\n\n### 其他\n1. **移动端可以通过双指手势放大缩小终端字体**\n2. 如需启用 Passkey 登录，请在 `.env` 文件中设置 `RP_ID` 和 `RP_ORIGIN` 环境变量。\n\n\n## ⚠️ 注意事项\n\n1.  **双文件管理器**：可以在布局中添加两个文件管理器组件（实验性功能，可能存在不稳定情况）。\n2.  **多文本编辑器**：在同一布局中添加多个文本编辑器的功能尚未实现。\n3. ARMv7 用户请使用此处的 [docker-compose.yml](https://github.com/Heavrnl/nexus-terminal/blob/main/doc/arm/docker-compose.yml)。由于 Apache Guacamole 未提供 guacd 的 ARMv7 架构镜像，所以禁用 RDP 功能，相关镜像暂时不再拉取。\n4. 关于数据备份，请自行备份目录下的 data 文件夹，本项目不提供相关备份功能。\n5. 由于浏览器限制，非https或者localhost无法复制终端内容，请使用https访问\n\n\n## 💐 致谢\n\n*   预设主题方案来源于优秀的 [iTerm2-Color-Schemes](https://github.com/mbadolato/iTerm2-Color-Schemes) 项目。\n\n## ☕ 捐赠\n\n如果你觉得这个项目对你有帮助，欢迎通过以下方式请我喝杯咖啡：\n\n[![ko-fi](https://ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/0heavrnl)\n\n\n## 📄 开源协议\n\n本项目采用 [GPL-3.0](LICENSE) 开源协议，详细信息请参阅 [LICENSE](LICENSE) 文件。\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FHeavrnl%2Fnexus-terminal","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FHeavrnl%2Fnexus-terminal","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FHeavrnl%2Fnexus-terminal/lists"}