# ADR-001: Gitea 自托管 + Tailscale Funnel 暴露

**状态**: ✅ 已采纳
**日期**: 2026-06-14
**决策者**: 宋献 + Claude 评审
**关联**: [[Gitea部署指南]] / [[风险跟踪表]] 第十二节

---

## 1. 背景

项目主仓 `D:\资料\03-项目开发\wecom_it_smart_desk\` 需要:
- 跨设备协作(simon's 电脑 + workbuddy 沙箱)
- 推送评审 + 分支保护
- 异地可访问(workbuddy 沙箱无 Tailscale 内网)

## 2. 评估方案

| 方案 | 优势 | 劣势 | 结论 |
|---|---|---|---|
| **A. GitHub 私有仓** | 零运维 + 全球 CDN + 完善 Actions | 代码在境外(企业合规风险)+ 付费 | ❌ 否决 |
| **B. GitLab.com 私有仓** | 免费私有 + 完善 CI | 代码在境外 + workbuddy 沙箱访问延迟 | ❌ 否决 |
| **C. Gitea 自托管(NAS)+ Tailscale Funnel** | 数据本地 + workbuddy 可访问 + 免费 | NAS 单点故障 + Funnel 稳定性依赖 Tailscale | ✅ **采纳** |
| **D. Gitea 自托管 + 公网 IP 暴露** | 不依赖 Tailscale | 需配 SSL + DDOS 风险 + 国内带宽限制 | ❌ 否决 |

## 3. 决策

**采纳 C 方案**: Gitea 套件(DS923+ NAS)+ Tailscale Funnel 暴露公网。

## 4. 关键参数

| 项 | 值 | 备注 |
|---|---|---|
| Gitea 版本 | 1.22+ | 套件中心固定 |
| 端口 | 8418 (HTTP) | 避开被占端口 |
| 数据库 | SQLite3 | 单机够用,简化部署 |
| Tailscale 私网 | `tail58d872.ts.net` | DSM 已配 |
| Funnel 域名 | `https://ds923plus.tail58d872.ts.net` | 沙箱访问 |
| 备份 | `scripts/backup-gitea.sh` cron 3 点 | 见 [[Gitea部署指南]] §6 |
| 异地备份 | OSS / COS 推 | M-1 风险项待解决 |

## 5. 风险与缓解

| 风险 | 等级 | 缓解 |
|---|---|---|
| NAS 硬盘故障 | 🟠 高 | 异地 OSS 备份(待配) |
| Tailscale Funnel 稳定性 | 🟡 中 | Funnel 故障时降级 LAN(`http://100.85.152.112:8418`) |
| 卸载误操作数据丢失 | 🟡 中 | 备份脚本 + 卸载前 checklist |
| token 泄露 | 🟠 高 | token 不入文件,走 wincred |

## 6. 决策影响

- ✅ 团队协作无需 VPN(workbuddy 沙箱直连 Funnel)
- ✅ 推送评审 + 分支保护(PR + 1 reviewer)
- ⚠️ NAS 单点是隐患,需异地备份
- ⚠️ 卸载/迁移需严格按 [[Gitea部署指南]] §8 走

## 7. 后续评审

- 3 个月后(2026-09-14)评审:Funnel 稳定性 + 备份完整度
- 6 个月后(2026-12-14)评审:是否切到企业 GitLab(如果合规要求)
