joshuafuller/qrtak

GitHub: joshuafuller/qrtak

一款通过生成二维码实现 TAK 客户端快速部署与配置的渐进式 Web 应用。

Stars: 26 | Forks: 3

# qrtak [![License](https://img.shields.io/badge/license-MIT-brightgreen)](LICENSE) [![Docker Version](https://img.shields.io/github/v/release/joshuafuller/qrtak?label=docker&color=brightgreen)](https://github.com/joshuafuller/qrtak/pkgs/container/qrtak) [![Node.js](https://img.shields.io/badge/Node.js-20.x-brightgreen)](https://nodejs.org/) [![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/joshuafuller/qrtak) [![Known Vulnerabilities](https://snyk.io/test/github/joshuafuller/qrtak/badge.svg)](https://snyk.io/test/github/joshuafuller/qrtak) [![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/10934/badge)](https://bestpractices.coreinfrastructure.org/projects/10934) [![Dependabot](https://img.shields.io/badge/dependabot-enabled-brightgreen?logo=dependabot)](https://github.com/joshuafuller/qrtak/network/updates) 一款渐进式 Web 应用(PWA),旨在通过生成二维码(QR code)实现 TAK (Tactical Assault Kit) 客户端的快速部署。非常适合对速度和简易性有严格要求的战术环境。 ## 功能 - **ATAAK 登记** - 为 ATAK 客户端登记生成二维码 - **iTAK 配置** - 为 iTAK 客户端设置生成二维码 - **URL 导入** - 为数据包导入生成二维码 - **实时预览** - 边输入边查看二维码更新 - **下载与分享** - 将二维码保存为 PNG 或复制 tak:// URI - **配置管理** - 保存和加载配置 - **PWA 支持** - 首次访问后支持离线使用 - **响应式设计** - 支持桌面端、平板和移动端 ## 快速开始 ### 选项 1:在线体验(推荐) **无需安装,直接使用在线版本:** 🌐 **[https://joshuafuller.github.io/qrtak/](https://joshuafuller.github.io/qrtak/)** **特性:** - ⚡ 即开即用 - 无需设置 - 📱 支持 PWA - 可安装至移动设备 - 🔄 自动更新 - 始终保持最新版本 - 🌍 全球 CDN - 全球范围内快速加载 - 🔒 安全 - 仅限 HTTPS ### 选项 2:使用 Docker 自托管 **一条命令即可运行您自己的实例 — 支持 x86 和 ARM 架构(Raspberry Pi 4 及以上版本):** ``` docker run -d -p 8080:80 --name qrtak ghcr.io/joshuafuller/qrtak:latest ``` **打开 http://localhost:8080** — 搞定。 Docker 会自动拉取与您系统架构(amd64 或 arm64)匹配的镜像。 ### 选项 3:本地开发 **面向开发者和自定义定制:** **前置条件:** - Node.js 20+ - npm **设置:** ``` # 克隆并设置 git clone https://github.com/joshuafuller/qrtak.git cd qrtak npm install # 启动开发服务器 npm run dev ``` **生产环境构建:** ``` npm run build npm run preview ``` 有关其他部署选项(Netlify、Vercel、ngrok),请参阅 [DEPLOYMENT.md](docs/DEPLOYMENT.md)。 ## Docker 详情 每次发布时都会将镜像发布到 GitHub Container Registry: ``` ghcr.io/joshuafuller/qrtak ``` **支持的架构:** `linux/amd64`、`linux/arm64`(Raspberry Pi 4 及以上版本、Apple Silicon、AWS Graviton) **标签:** `latest` 以及每次发布的 semver 标签(例如:`4.0.6`、`4.0`、`4`、`v4.0.6`) **Docker Compose:** ``` services: qrtak: image: ghcr.io/joshuafuller/qrtak:latest ports: - "8080:80" restart: unless-stopped ``` 镜像大小约为 97MB,以非 root 用户(nginx)身份运行,并基于 Alpine Linux。 ## 使用说明 ### ATAK 登记 1. 切换到 "ATAK Enroll" 标签页 2. 输入服务器的主机名/IP、用户名和 token 3. 二维码将自动生成 4. 下载或复制 tak:// URI ### iTAK 配置 1. 切换到 "iTAK Config" 标签页 2. 输入服务器详细信息(描述、URL、端口、协议) 3. 二维码将自动生成 4. 下载或复制 tak:// URI ### URL 导入 1. 切换到 "URL Import" 标签页 2. 输入数据包或配置文件的 URL 3. 二维码将自动生成 4. 下载或复制 tak:// URI ## 架构 - **前端**:基于 Vanilla JavaScript 和 ES6 modules - **构建工具**:使用 Vite 进行快速开发和优化构建 - **PWA**:使用 Service Worker 实现离线功能 - **二维码生成**:使用 qrcode 库 - **存储**:使用 LocalStorage 持久化配置 ## 🔒 安全 ### 安全优先开发 QR TAK 实施了全面的安全扫描和最佳实践: #### 自动化安全扫描 - **🛡️ SAST 分析**:Semgrep、CodeQL 和 ESLint Security 在每次提交时进行扫描 - **📦 依赖安全**:npm audit、Snyk、OWASP 和 OSV Scanner 检查漏洞 - **🐳 容器安全**:Trivy 和 Hadolint 扫描 Docker 镜像 - **🔍 密钥检测**:TruffleHog 防止凭据泄露 - **📊 供应链**:为容器镜像生成 SBOM #### 安全特性 - **纯客户端处理**:所有处理均在您的浏览器中完成 - 不传输任何数据 - **内容安全策略**:严格的 CSP 标头防止 XSS 攻击 - **输入验证**:对所有输入进行过滤,以防止注入攻击 - **安全的依赖项**:通过 Dependabot 和 Renovate 进行自动化更新 - **强制 HTTPS**:Service worker 需要在安全上下文中运行 #### 查看安全结果 - **[📊 安全仪表盘](docs/SECURITY-DASHBOARD.md)**:全面的安全概览和指标 - **[🛡️ GitHub 安全](https://github.com/joshuafuller/qrtak/security)**:GitHub Security 标签页显示所有扫描结果 - **[✅ 工作流状态](https://github.com/joshuafuller/qrtak/actions/workflows/security.yml)**:实时安全扫描状态 - **[🔗 依赖图](https://github.com/joshuafuller/qrtak/network/dependencies)**:查看所有依赖项 - **[📋 安全政策](SECURITY.md)**:负责任地报告漏洞 ### 运营安全 使用 QR TAK 时,请注意: - **二维码可见性**:屏幕上的二维码可能会被他人看到 - **Token 安全**:尽可能使用短期的 token - **配置存储**:配置存储在浏览器的本地存储中 - **网络安全**:在生产环境中始终使用 HTTPS ## 浏览器支持 - Chrome 60+ - Firefox 55+ - Safari 11.1+ - Edge 79+ ## 许可证 MIT 许可证 - 详情请参阅 [LICENSE](LICENSE) 文件 ## 支持 如遇问题或疑问: 1. 查看现有的 [issues](https://github.com/joshuafuller/qrtak/issues) 2. 创建包含详细信息的新 issue 3. 提供浏览器版本和复现步骤 **注意**:专为需要快速部署 TAK 客户端的战术环境而设计。在正式部署前,请务必在安全的环境中测试配置。
标签:ATAK, GNU通用公共许可证, Node.js, PWA, TAK, 二维码生成, 战术通信, 数据可视化, 自定义脚本, 请求拦截, 运维部署