# dashGO 一个现代化的代理面板管理系统,基于 Go + Vue 3 构建。 > **演示站点**:[misaka.cfd](https://misaka.cfd/) — 出于安全考虑,演示凭据不再公开。 > 想试用的话,自建最快:下面一条命令两分钟就起来了。 ## 特性 - 🚀 **高性能**:Go 后端,Vue 3 前端 - 💾 **灵活数据库**:支持 SQLite(默认)和 MySQL - 🔒 **安全可靠**:JWT 认证、权限控制、SQL 注入防护 - 🐳 **容器化部署**:Docker Compose 一键部署 - 📊 **流量统计**:实时流量监控和统计 - 🎨 **现代 UI**:响应式设计,支持移动端 ## 这是什么,不是什么 **dashGO 是一个自托管的代理面板**:Go 后端 + Vue 3 前端,底层 sing-box。 你在自己的一台 Linux VPS 上跑起来,用它管节点、管用户、看流量。 ### 适合你,如果 - 你有一台 Linux VPS,且愿意自己维护 - 你想**自托管**,不想把用户数据交给第三方面板 - 你能接受用 Docker 部署 - 你缺的是一个面板,不是一整套生态 ### 不适合你,如果 - **你没有 Linux 服务器** —— 目前只支持 Linux(Ubuntu/Debian/CentOS),没有 Windows/macOS 服务端 - **你跑 arm64 又不想装 MySQL** —— SQLite 模式不支持 linux arm64 - **你不想碰 Docker** —— 部署依赖 Docker + Docker Compose,没有免 Docker 的二进制包 ### 先说清楚的局限 | 项 | 现状 | |---|---| | 部署方式 | `install.sh` 一键脚本 / Docker Compose;**没有**免 Docker 安装包 | | 数据库 | SQLite(默认)或 MySQL;**SQLite 不支持 linux arm64** | | 服务端平台 | Linux only | | 最低配置 | 512MB 内存 / 1GB 磁盘,推荐 1GB+ | | 界面截图 | 暂无。装完打开就能看到,或 `bash install.sh` 两分钟自己验证 | | 许可证 | MIT —— 可自改、可分发、可商用 | ### 怎么判断要不要用它 别看宣传,问自己四个问题: 1. **愿不愿意用 Docker?** 不愿意 → 跳过,没有别的安装方式 2. **要不要 SQLite 的轻量?** 要 → 确认自己不是 arm64(arm64 必须 MySQL) 3. **要不要自托管?** 要 → 方向对;不想维护服务器 → 这类面板都不适合你 4. **要不要能改?** MIT,随便改随便分发 **都没有问题 → 直接往下走,两分钟装完。** ## 快速开始 ### 安装 ```bash curl -sSL https://raw.githubusercontent.com/ZYHUO/dashGO/refs/heads/main/install.sh -o install.sh && bash install.sh ``` ### 安装选项 安装时会提示选择: 1. **数据库类型** - SQLite(推荐,轻量级,linux arm64不支持,请不要选择此项) - MySQL(外部数据库) 2. **安装方式** - 预编译版本(推荐,快速) - 源码构建(支持自定义) 3. **HTTPS 配置** - 启用 HTTPS(443 端口) - 证书类型: - Cloudflare Origin Certificate(推荐) - 自签名证书(测试用) - 自有证书 4. **自定义配置** - Web 访问端口(HTTP: 80 / HTTPS: 443) - 管理员邮箱和密码 ## 系统要求 - **操作系统**:Linux(Ubuntu/Debian/CentOS) - **内存**:最低 512MB,推荐 1GB+ - **磁盘**:最低 1GB 可用空间 - **软件**:Docker 和 Docker Compose ## 文档 - [构建指南](BUILD.md) - 如何从源码构建 - [故障排除](#faq) - 常见问题解决(部署打不开、端口、架构不匹配等) - [安全指南](SECURITY.md) - 安全配置和最佳实践 - [更新日志](CHANGELOG.md) - 版本更新记录 ## CDN 和域名配置 ### 使用 Cloudflare CDN **1. 启用 HTTPS(推荐)** 安装时选择启用 HTTPS,使用 Cloudflare Origin Certificate: ```bash bash install.sh panel # 选择 "是否启用 HTTPS" → y # 选择证书类型 → 1 (Cloudflare Origin Certificate) ``` 获取 Cloudflare Origin Certificate: 1. 登录 Cloudflare 控制台 2. 选择你的域名 3. 进入 **SSL/TLS** → **Origin Server** 4. 点击 **Create Certificate** 5. 复制证书和私钥,粘贴到安装脚本提示中 Cloudflare SSL/TLS 设置: - 加密模式:**Full (strict)** - 最低 TLS 版本:TLS 1.2 **2. 使用 HTTP(不推荐)** 如果不想配置 HTTPS,可以: - Cloudflare SSL/TLS 模式设为 **Flexible** - 或关闭 Cloudflare 代理(DNS 记录的橙色云图标改为灰色) ### 不使用 CDN 直接通过 IP 或域名访问: - HTTP: `http://your-ip:80` - HTTPS: `https://your-domain.com:443`(需配置证书) ## 管理命令 ```bash # 查看服务状态 cd /opt/dashgo && docker compose ps # 查看日志 docker compose logs -f # 查看特定服务日志 docker compose logs -f dashgo docker compose logs -f nginx # 重启服务 docker compose restart # 重启特定服务 docker compose restart dashgo docker compose restart nginx # 停止服务 docker compose down # 更新服务 docker compose pull && docker compose up -d --build ``` ## 数据库 ### SQLite(默认) - **优点**:轻量级,无需额外配置 - **数据文件**:`/opt/dashgo/data/dashgo.db` - **适用场景**:中小规模部署(< 10,000 用户) ### MySQL(可选) - **优点**:高并发性能更好 - **配置**:安装时输入外部 MySQL 连接信息 - **适用场景**:大规模生产环境 ### 切换数据库 ```bash cd /opt/dashgo ./use-sqlite.sh # 切换到 SQLite ``` ## 开发 ### 本地开发 ```bash # 后端 go run cmd/server/main.go -config configs/config.yaml # 前端 cd web npm install npm run dev ``` ### 构建 ```bash # 构建所有组件 ./build-all.sh all # 仅构建前端 ./build-all.sh frontend # 仅构建后端 ./build-all.sh server # 使用 Docker 构建(支持交叉编译) ./build-all.sh server-docker ``` ## 架构 ``` dashGO/ ├── cmd/ # 主程序入口 │ ├── server/ # 面板服务 │ └── migrate/ # 数据库迁移工具 ├── internal/ # 内部包 │ ├── config/ # 配置管理 │ ├── handler/ # HTTP 处理器 │ ├── middleware/ # 中间件 │ ├── model/ # 数据模型 │ ├── repository/ # 数据访问层 │ └── service/ # 业务逻辑层 ├── pkg/ # 公共包 │ ├── cache/ # 缓存 │ ├── database/ # 数据库 │ └── utils/ # 工具函数 ├── web/ # 前端(Vue 3) │ ├── src/ │ │ ├── api/ # API 调用 │ │ ├── views/ # 页面组件 │ │ ├── router/ # 路由配置 │ │ └── stores/ # 状态管理 │ └── dist/ # 构建产物 ├── agent/ # 节点代理 ├── configs/ # 配置文件 ├── migrations/ # 数据库迁移 └── docs/ # 文档 ``` ## 技术栈 ### 后端 - **语言**:Go 1.22+ - **框架**:Gin - **ORM**:GORM - **缓存**:Redis - **认证**:JWT ### 前端 - **框架**:Vue 3 - **构建**:Vite - **UI**:Tailwind CSS - **路由**:Vue Router - **状态**:Pinia ### 部署 - **容器**:Docker - **编排**:Docker Compose - **反向代理**:Nginx - **数据库**:SQLite / MySQL ## 安全特性 - ✅ SQL 注入防护(GORM 参数化查询) - ✅ XSS 防护(输入清理 + CSP) - ✅ JWT Token 认证 - ✅ HTTPS/TLS 加密(可选) ## FAQ ### 1. 部署后无法访问面板 按顺序排查: 1. **服务是否起来了**:`cd /opt/dashgo && docker compose ps`,确认 `dashgo` 和 `nginx` 都是 Up 2. **看日志**:`docker compose logs -f dashgo`,启动阶段的报错一般就在这里 3. **端口**:确认 80/443 已放行(见下方防火墙配置) 4. **架构不匹配**:SQLite **不支持 linux arm64**,arm64 机器请选 MySQL 5. **反向代理**:套了 Nginx/Caddy 的话,确认 `/api` 和 WebSocket 已正确转发 以上都试过还不行,带上下面的信息开个 Issue:部署方式(预编译/源码)、数据库类型、CPU 架构、`docker compose logs --tail=30 dashgo` 的输出。 ### 2. 未登录用户访问根目录报错 已修复:未登录用户访问 `/` 会自动重定向到 `/login` ### 3. 防火墙/安全组配置 确保开放以下端口: - **80**:HTTP 访问 - **443**:HTTPS 访问(如果启用) - **6379**:Redis(仅内部,不对外开放) ```bash # Ubuntu/Debian sudo ufw allow 80/tcp sudo ufw allow 443/tcp # CentOS/RHEL sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --permanent --add-service=https sudo firewall-cmd --reload ``` ## 相关项目 同一套自建生态里的其他东西,按需取用: | 项目 | 说明 | |---|---| | [nyat-bot](https://github.com/ZYHUO/nyat-bot) | 🐱 Telegram 群聊 agent,不是指令机器人——会读气氛、只在有话说的时候开口 | | [CLIProxy-Quota-Tray](https://github.com/ZYHUO/CLIProxy-Quota-Tray) | 🖥️ Windows / Linux 托盘,实时盯 CLIProxyAPI 各 OAuth 账号的配额窗口 | | [worker-falling-grass-c407](https://github.com/ZYHUO/worker-falling-grass-c407) | ⚡ Cloudflare Worker 单文件部署:VLESS 订阅 → Clash 配置 | | [tg-newsbot](https://github.com/ZYHUO/tg-newsbot) | 📰 Telegram 频道新闻推送:RSS 轮询 → 去重 → LLM 中文摘要 | | [nyatdb](https://github.com/ZYHUO/nyatdb) | 🗄️ Rust 写的嵌入式页面引擎(nyat-bot 在用) | --- ## 贡献 欢迎提交 Issue 和 Pull Request! ## 许可证 MIT License ## 支持 - **问题反馈**:[GitHub Issues](https://github.com/ZYHUO/dashGO/issues) --- **⭐ 如果这个项目对你有帮助,请给个 Star!** **And give me a cup of coffee🎇** 0x728426bb2d4121da5316f795017cbf068e0db0d0 polygon 0x728426bb2d4121da5316f795017cbf068e0db0d0 xlayer