c824e22b53
- 新增 cloudflared Docker 服务替代原 Bandwagon frp 方案 - 新增 frpc 转发 Git SSH 到阿里云 VPS - 为所有服务添加 web entrypoint 路由(兼容 cloudflared HTTP) - HedgeDoc 添加 X-Forwarded-Proto 中间件修复 CSP 登录问题 - Homepage 添加 xiteng.site 根域名路由 - Gitea 配置 SSH_DOMAIN=git.xiteng.site - 更新 README 反映当前架构 - .gitignore: frpc.toml / credentials / letsencrypt
96 lines
3.1 KiB
Markdown
96 lines
3.1 KiB
Markdown
# Homelab
|
|
|
|
部署在 CachyOS 上的全套家庭服务,通过 Cloudflare Tunnel + 阿里云 VPS SSH 中转向公网开放。
|
|
|
|
## 架构
|
|
|
|
```
|
|
公网用户
|
|
│
|
|
├─ Web (443) ──→ Cloudflare Tunnel ──→ cloudflared (Docker) ──→ Traefik (反向代理)
|
|
│ │
|
|
└─ SSH (22) ──→ 阿里云 VPS (frps) ──→ frpc (Docker) ──→ Gitea │
|
|
│
|
|
┌───────────────┤
|
|
▼ ▼
|
|
各 Web 服务 Gitea SSH
|
|
```
|
|
|
|
| 入口 | 域名 | 传输 | 延迟 |
|
|
|------|------|------|:--:|
|
|
| Web | `*.xiteng.site` | Cloudflare Tunnel → Traefik | ~50ms |
|
|
| Git SSH | `git.xiteng.site` | 阿里云 VPS → frp → Gitea | ~5ms |
|
|
|
|
## 服务一览
|
|
|
|
| 服务 | 地址 | 说明 |
|
|
|------|------|------|
|
|
| Homepage | [xiteng.site](https://xiteng.site) | 导航面板 |
|
|
| Gitea | [gitea.xiteng.site](https://gitea.xiteng.site) | 代码托管, `git clone git@git.xiteng.site:…` |
|
|
| HedgeDoc | [notes.xiteng.site](https://notes.xiteng.site) | Markdown 协作 |
|
|
| Uptime Kuma | [uptime.xiteng.site](https://uptime.xiteng.site) | 服务监控 |
|
|
| MinIO | 内网 | 对象存储(不暴露公网) |
|
|
| Traefik | 内网 | 反向代理 |
|
|
|
|
## 目录结构
|
|
|
|
```
|
|
homelab/
|
|
├── compose.yml # 共享网络定义 (homelab_net)
|
|
├── .env # 统一环境变量(敏感,gitignore)
|
|
├── cloudflared/
|
|
│ ├── compose.yml
|
|
│ └── config.yml
|
|
├── frpc/
|
|
│ ├── compose.yml
|
|
│ └── frpc.toml # 敏感,gitignore
|
|
├── gitea/
|
|
│ ├── compose.yml
|
|
│ └── data/
|
|
├── hedgedoc/
|
|
│ ├── compose.yml
|
|
│ └── data/
|
|
├── homepage/
|
|
│ ├── compose.yml
|
|
│ └── config/
|
|
├── minio/
|
|
│ ├── compose.yml
|
|
│ └── data/
|
|
├── traefik/
|
|
│ ├── compose.yml
|
|
│ └── letsencrypt/ # gitignore
|
|
└── uptime-kuma/
|
|
├── compose.yml
|
|
└── data/
|
|
```
|
|
|
|
## 网络
|
|
|
|
所有服务加入 `homelab_net` 自定义 bridge 网络,通过容器名互访,不暴露端口到宿主机。
|
|
|
|
## 快速启动
|
|
|
|
```bash
|
|
# 按依赖顺序启动
|
|
docker compose -f compose.yml up -d # 创建网络
|
|
docker compose -f traefik/compose.yml up -d
|
|
docker compose -f gitea/compose.yml up -d
|
|
docker compose -f hedgedoc/compose.yml up -d
|
|
docker compose -f uptime-kuma/compose.yml up -d
|
|
docker compose -f homepage/compose.yml up -d
|
|
docker compose -f cloudflared/compose.yml up -d
|
|
docker compose -f frpc/compose.yml up -d
|
|
```
|
|
|
|
## 所需外部资源
|
|
|
|
| 资源 | 用途 |
|
|
|------|------|
|
|
| Cloudflare DNS | 域名托管 + Tunnel |
|
|
| 阿里云 ECS (上海) | Git SSH 中转 (frps) |
|
|
| Cloudflare Tunnel | Web 流量入口 |
|
|
|
|
## 备案说明
|
|
|
|
所有 Web 流量走 Cloudflare Tunnel(境外边缘终止 TLS),域名未备案。SSH 通过阿里云 IP 直连,不受备案约束。
|