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 导航面板
Gitea gitea.xiteng.site 代码托管, git clone git@git.xiteng.site:…
HedgeDoc notes.xiteng.site Markdown 协作
Uptime Kuma 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 网络,通过容器名互访,不暴露端口到宿主机。

快速启动

# 按依赖顺序启动
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 直连,不受备案约束。

Description
No description provided
Readme 56 KiB
Languages
Shell 100%