PowerConnect 是一个功能完整的远程控制解决方案,让你能够:
- 🖥️ 远程终端:通过浏览器访问家里电脑的终端,支持多终端会话
- 📁 文件管理:浏览、下载文件,支持手机浏览器
- 🌐 内网穿透:一键启动 frp 或 SSH 隧道,无需公网 IP 也能访问
- 📱 移动友好:完美适配手机和平板,随时随地访问
使用场景:
- 在公司访问家里电脑,执行命令、查看日志
- 手机上管理服务器,重启服务、下载文件
- 远程帮助朋友调试电脑
- 演示项目给客户,无需部署到服务器
- ✅ 多终端会话:同时开启多个终端,Tab 切换
- ✅ 真实 Shell:基于 node-pty,完整的 PTY 支持
- ✅ 实时通信:WebSocket 零延迟传输
- ✅ 中文支持:完美支持中文输入和显示
- ✅ 自动清理:30 分钟无活动自动关闭会话
- ✅ 目录浏览:查看文件列表、文件大小、修改时间
- ✅ 文件下载:一键下载文件到本地
- ✅ 路径安全:限制访问范围,防止路径穿越
- ✅ 移动适配:手机上也能方便操作
- ✅ 可选功能:支持创建、删除、重命名文件
- ✅ 双方案支持:frp(高性能)+ SSH 隧道(极简)
- ✅ 一键启动:
remote-tunnel up即可 - ✅ 自动安装:服务器端和客户端自动配置
- ✅ 智能管理:状态监控、日志记录、问题诊断
- ✅ 多端口映射:同时映射多个服务
- ✅ JWT 认证:所有接口必须登录
- ✅ Token 加密:使用强随机密钥
- ✅ 路径限制:文件操作限制在根目录内
- ✅ HTTPS 支持:生产环境推荐启用
- ✅ 会话超时:自动清理过期连接
- ✅ 响应式设计:完美适配各种屏幕
- ✅ 触摸优化:支持触摸操作
- ✅ 系统分享:下载文件可发送到微信等 App
- ✅ WebView 友好:可轻松打包成原生 App
- Node.js 18+
- 一台有公网 IP 的云服务器(可选,用于内网穿透)
# 克隆项目
git clone https://github.com/HecreReed/PowerConnect.git
cd PowerConnect
# 一键安装
./setup.sh# 配置环境变量
cd backend
cp .env.example .env
nano .env # 修改用户名、密码等
# 启动服务
npm run dev
# 或使用 PM2(生产环境)
npm run build
pm2 start ecosystem.config.js打开浏览器:http://localhost:3000
就这么简单! 🎉
如果要从外网访问家里电脑,需要配置内网穿透。
服务器端(有公网 IP 的服务器):
cd remote-tunnel/scripts/frp
chmod +x setup-server.sh
sudo ./setup-server.sh
# 记下输出的 Token!客户端(家里电脑):
cd remote-tunnel
./install.sh
# 编辑配置,填入服务器返回的 Token
nano config/frp/frpc.ini
# 启动隧道
remote-tunnel up外网访问: http://你的服务器IP:8443
# 只需一条命令
remote-tunnel up --ssh详细配置见 remote-tunnel/docs/QUICKSTART.md
- README.md - 项目介绍(本文件)
- DEPLOYMENT.md - 详细部署指南
- QUICKSTART.md - 快速参考
- remote-tunnel/README.md - 内网穿透工具说明
- remote-tunnel/docs/QUICKSTART.md - 5 分钟快速上手
- remote-tunnel/docs/USAGE.md - 完整使用指南
- remote-tunnel/docs/SUMMARY.md - 项目总结
# 家里电脑
remote-tunnel up
# 公司电脑/手机浏览器
# 打开 http://你的服务器:8443
# 登录后执行命令、查看文件# 服务器部署 PowerConnect
# 手机浏览器访问
# 随时随地重启服务、查看日志、下载文件# 朋友电脑上启动 PowerConnect + tunnel
# 你通过浏览器访问
# 帮助调试、解决问题# 本地开发环境启动 PowerConnect
# 启动隧道映射到公网
# 给客户演示,无需部署到服务器简洁的登录界面,支持 PC 和移动端:
┌─────────────────────────────────┐
│ │
│ PowerConnect │
│ Remote Terminal & File Mgr │
│ │
│ ┌───────────────────────────┐ │
│ │ Username: [___________] │ │
│ │ Password: [___________] │ │
│ │ [ Login ] │ │
│ └───────────────────────────┘ │
│ │
│ 🔒 Secure connection │
└─────────────────────────────────┘
Tab 式多终端,随意切换:
┌────────────────────────────────────────────────┐
│ PowerConnect [Files] [Logout] │
├────────────────────────────────────────────────┤
│ [Terminal 1] [Terminal 2] [Terminal 3] [ + ] │
├────────────────────────────────────────────────┤
│ │
│ user@home:~$ ls │
│ Documents Downloads Projects │
│ user@home:~$ cd Projects/PowerConnect │
│ user@home:~/Projects/PowerConnect$ npm start │
│ > powerconnect-backend@1.0.0 start │
│ > node dist/index.js │
│ │
│ 🚀 Starting PowerConnect Backend... │
│ ✅ Server is running! │
│ │
└────────────────────────────────────────────────┘
直观的文件管理界面:
┌────────────────────────────────────────────────┐
│ File Explorer [Terminal] [Logout] │
├────────────────────────────────────────────────┤
│ 🏠 Home / Documents / Projects │
│ [⬆️ Up] [🔄 Refresh] │
├────────────────────────────────────────────────┤
│ Name Size Modified │
├────────────────────────────────────────────────┤
│ 📁 backend - 2024-01-15 │
│ 📁 frontend - 2024-01-15 │
│ 📁 remote-tunnel - 2024-01-15 │
│ 📄 README.md 5.2 KB 2024-01-15 [⬇️] │
│ 📄 package.json 1.1 KB 2024-01-15 [⬇️] │
└────────────────────────────────────────────────┘
- Node.js + TypeScript - 类型安全的 JavaScript
- Fastify - 高性能 Web 框架
- node-pty - 真实的 PTY 终端模拟
- WebSocket (ws) - 实时双向通信
- JWT (@fastify/jwt) - 身份认证
- React + TypeScript - 组件化开发
- Vite - 极速构建工具
- xterm.js - 专业的终端模拟器
- React Router - 路由管理
- frp (0.52.3) - 高性能内网穿透
- SSH - 反向隧道方案
- Bash - 自动化脚本
PowerConnect/
├── backend/ # 后端服务
│ ├── src/
│ │ ├── config/ # 配置管理
│ │ ├── middleware/ # 中间件(JWT 认证)
│ │ ├── routes/ # API 路由
│ │ ├── services/ # 业务逻辑
│ │ └── types/ # 类型定义
│ └── package.json
│
├── frontend/ # 前端应用
│ ├── src/
│ │ ├── components/ # React 组件
│ │ ├── pages/ # 页面组件
│ │ ├── services/ # API 服务
│ │ └── styles/ # 样式文件
│ └── package.json
│
├── remote-tunnel/ # 内网穿透工具
│ ├── bin/ # 命令行工具
│ ├── config/ # 配置文件
│ ├── scripts/ # 自动化脚本
│ └── docs/ # 详细文档
│
├── README.md # 项目说明
├── DEPLOYMENT.md # 部署指南
├── QUICKSTART.md # 快速参考
└── setup.sh # 一键安装脚本
# 后端
cd backend
npm install
npm run dev
# 前端(另一个终端)
cd frontend
npm install
npm run dev# 前端
cd frontend
npm run build
# 后端
cd backend
npm run build
# 启动
npm start
# 或使用 PM2
pm2 start ecosystem.config.js# 测试本地服务
curl http://localhost:3000/health
# 测试 API
curl -X POST http://localhost:3000/api/auth/login \
-H "Content-Type: application/json" \
-d '{"username":"admin","password":"admin"}'欢迎提交 Issue 和 Pull Request!
- 使用 TypeScript
- 遵循 ESLint 规则
- 提交前测试功能
- 更新相关文档
feat: 添加新功能
fix: 修复 bug
docs: 更新文档
style: 代码格式调整
refactor: 重构代码
test: 添加测试
chore: 其他修改
MIT License
Copyright (c) 2024 hecrereed
- 修改默认密码:部署前务必修改用户名和密码
- 使用强密钥:JWT_SECRET 至少 32 位随机字符
- 启用 HTTPS:生产环境必须使用
- 限制访问:推荐使用内网穿透而非直接公网暴露
- 定期更新:及时更新依赖包
- Author: hecrereed
- Email: hecrereed@163.com
- GitHub: @HecreReed
如果这个项目对你有帮助,请给一个 ⭐ Star!
- 支持文件上传
- 终端录制回放
- 多用户权限管理
- Docker 一键部署
- 移动端原生 App
- 终端协作(多人同时操作)
- 文件在线编辑
- 系统监控面板