64d6812ec3
- requirements.txt: 添加 passlib[bcrypt] 依赖 - deploy-server/nginx.conf: /ws/ 路径添加 access_log off - docs/ADRs/: 新增 4 个 ADR 决策记录 - docs/SOPs/: 新增 4 个 SOP 操作规程
62 lines
2.3 KiB
Markdown
62 lines
2.3 KiB
Markdown
# 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(如果合规要求)
|