一个在线协作式 Linux 终端学习平台,让用户可以在浏览器中使用真实的 Linux 环境,并与其他用户实时互动。
- 真实 Linux 环境 - 每个用户独享一个 Docker 容器
- 多发行版支持 - Alpine Linux / Debian Slim 可选
- 持久化容器 - 断线重连后环境保持不变
- Fish Shell - 开箱即用的现代化 Shell
- LiveWall 实时墙 - 查看所有在线用户的终端
- 实时聊天 - 内置聊天室,支持图片分享
- 点赞与置顶 - 给喜欢的终端点赞或置顶
- 远程协助 - 邀请其他用户控制你的终端
- 实时同步 - 小窗口实时显示终端输出
- 双向控制 - 被邀请者可以输入命令
- LinuxDo OAuth2 - 一键登录,无需注册
- 游客模式 - 无需登录即可浏览
- 信任等级 - 基于 LinuxDo 信任等级的权限控制
| 组件 | 技术 |
|---|---|
| 后端 | Go + Gin + WebSocket |
| 前端 | Vue 3 + TypeScript + Tailwind CSS |
| 终端 | xterm.js + Docker API |
| 数据库 | SQLite |
| 认证 | LinuxDo OAuth2 + JWT |
- Go 1.21+
- Node.js 18+
- Docker
# 克隆项目
git clone https://github.com/webwww123/linuxdo-bash.git
cd linuxdo-bash
# 启动后端
cd linux-study-room-backend
cp .env.example .env
go run ./cmd/server
# 启动前端(新终端)
cd linux-study-room-web
npm install
npm run dev参考 DEPLOY.md 获取完整部署指南。
# 服务器
PORT=8080
# 数据库
DB_PATH=./data/study_room.db
# JWT 密钥
JWT_SECRET=your-random-secret
# LinuxDo OAuth2(从 https://connect.linux.do 获取)
LINUXDO_CLIENT_ID=your_client_id
LINUXDO_CLIENT_SECRET=your_client_secret
LINUXDO_CALLBACK_URL=https://your-domain/api/auth/linuxdo/callback
FRONTEND_URL=https://your-domainlinuxdo-bash/
├── linux-study-room-backend/ # Go 后端
│ ├── cmd/server/ # 入口
│ ├── internal/
│ │ ├── handler/ # HTTP/WS 处理器
│ │ ├── service/ # 业务逻辑
│ │ └── store/ # 数据存储
│ └── .env.example
│
├── linux-study-room-web/ # Vue 前端
│ ├── src/
│ │ ├── components/ # 组件
│ │ ├── api.ts # API 封装
│ │ └── App.vue
│ └── package.json
│
├── DEPLOY.md # 部署文档
└── README.md
- 容器隔离 - 每个用户独立容器,禁止容器间通信
- 资源限制 - CPU/内存限制防止滥用
- 权限控制 - 容器内 Drop 不必要的 Linux Capabilities
- 无特权容器 - 禁止容器内提权
欢迎提交 Issue 和 Pull Request!
MIT License