joshuafuller/qrtak
GitHub: joshuafuller/qrtak
一款通过生成二维码实现 TAK 客户端快速部署与配置的渐进式 Web 应用。
Stars: 26 | Forks: 3
# qrtak
[](LICENSE) [](https://github.com/joshuafuller/qrtak/pkgs/container/qrtak) [](https://nodejs.org/) [](https://deepwiki.com/joshuafuller/qrtak)
[](https://snyk.io/test/github/joshuafuller/qrtak) [](https://bestpractices.coreinfrastructure.org/projects/10934) [](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, 二维码生成, 战术通信, 数据可视化, 自定义脚本, 请求拦截, 运维部署