新增服务配置,更新 Gitea、HedgeDoc、Homepage、Uptime Kuma 的 Docker Compose 配置,添加 Traefik 路由和 TLS 支持,新增自动发现设置

This commit is contained in:
2026-04-04 17:58:11 +08:00
parent 6e18226e0c
commit 90d7db8782
6 changed files with 114 additions and 10 deletions

29
generate_hosts.sh Executable file
View File

@@ -0,0 +1,29 @@
#!/bin/bash
# 你的台式机局域网 IP
TARGET_IP="192.168.4.2"
echo "================ 小米路由器 Hosts 配置 ================"
# 1. 抓取所有运行中容器的详细信息
# 2. 提取出 Traefik 规则里 Host(...) 括号内的内容
# 3. 删掉所有的反引号、单双引号和空格
# 4. 把逗号替换成换行符 (兼容 Host(`a.com`, `b.com`) 这种多域名写法)
# 5. 去重并格式化输出
domains=$(docker inspect $(docker ps -q) 2>/dev/null \
| grep -oP 'Host\(\K[^)]+' \
| tr -d '\`"'\''\ ' \
| tr ',' '\n' \
| sort -u)
if [ -z "$domains" ]; then
echo "未在当前运行的容器中发现任何 Traefik Host 规则。"
else
for domain in $domains; do
echo "$TARGET_IP $domain"
done
fi
echo "======================================================="
echo "请将以上内容直接复制,并粘贴到米家 App 中。"

View File

@@ -29,9 +29,27 @@ services:
- "3004:3000"
- "222:22"
labels:
# --- 1. Traefik 路由设置 ---
- "traefik.enable=true"
- "traefik.http.routers.gitea.rule=Host(`gitea.homelab`)"
- "traefik.http.routers.gitea.rule=Host(`gitea.xiteng.site`)"
- "traefik.http.services.gitea.loadbalancer.server.port=3000"
- "traefik.http.routers.gitea.entrypoints=websecure"
# --- 新增:开启 TLS 并指定解析器 ---
- "traefik.http.routers.gitea.tls=true"
- "traefik.http.routers.gitea.tls.certresolver=cfresolver"
# --- 2. Homepage 自动发现设置 ---
- "homepage.group=生产力工具" # 分组名称
- "homepage.name=Gitea" # 显示名称
- "homepage.icon=gitea" # 图标 (支持 si, mdi 等前缀)
- "homepage.href=https://gitea.xiteng.site" # 点击跳转的链接
- "homepage.description=代码托管平台" # 副标题描述
# --- 3. AutoKuma 自动发现设置 ---
# 格式: kuma.<自定义ID>.<监控类型>.<属性>
- "kuma.gitea.http.name=Gitea" # 监控项名称
- "kuma.gitea.http.url=https://gitea.xiteng.site" # 监控的目标 URL
# (可选) 每 60 秒检查一次,重试 3 次
- "kuma.gitea.http.interval=60"
- "kuma.gitea.http.max_retries=3"
networks:
- homelab_net

View File

@@ -17,11 +17,10 @@ services:
env_file:
- ../.env
environment:
- CMD_DOMAIN=localhost
- CMD_DB_URL=postgres://$POSTGRES_USER:$POSTGRES_PASSWORD@db/$POSTGRES_DB
- CMD_URL_ADDPORT=true
- CMD_ALLOW_ORIGIN=localhost,hedgedoc.homelab,notes.xiteng.site
- CMD_PROTOCOL_USESSL=false
- CMD_DOMAIN=notes.xiteng.site
- CMD_URL_ADDPORT=false
- CMD_ALLOW_ORIGIN=localhost,notes.xiteng.site
- CMD_PROTOCOL_USESSL=true
volumes:
- ./uploads:/hedgedoc/public/uploads
depends_on:
@@ -29,9 +28,28 @@ services:
ports:
- "3000:3000"
labels:
# --- 1. Traefik 路由设置 ---
- "traefik.enable=true"
- "traefik.http.routers.hedgedoc.rule=Host(`hedgedoc.homelab`)"
- "traefik.http.routers.hedgedoc.rule=Host(`notes.xiteng.site`)"
- "traefik.http.services.hedgedoc.loadbalancer.server.port=3000"
# 强制使用 websecure (443端口) 入口
- "traefik.http.routers.hedgedoc.entrypoints=websecure"
# --- 新增:开启 TLS 并指定解析器 ---
- "traefik.http.routers.hedgedoc.tls=true"
- "traefik.http.routers.hedgedoc.tls.certresolver=cfresolver"
# --- 2. Homepage 自动发现设置 ---
- "homepage.group=生产力工具" # 分组名称
- "homepage.name=HedgeDoc" # 显示名称
- "homepage.icon=hedgedoc" # 图标 (支持 si, mdi 等前缀)
- "homepage.href=https://notes.xiteng.site" # 点击跳转的链接
- "homepage.description=实时 Markdown 协作" # 副标题描述
# --- 3. AutoKuma 自动发现设置 ---
# 格式: kuma.<自定义ID>.<监控类型>.<属性>
- "kuma.hedgedoc.http.name=HedgeDoc" # 监控项名称
- "kuma.hedgedoc.http.url=https://notes.xiteng.site" # 监控的目标 URL
# (可选) 每 60 秒检查一次,重试 3 次
- "kuma.hedgedoc.http.interval=60"
- "kuma.hedgedoc.http.max_retries=3"
networks:
- homelab_net

View File

@@ -5,14 +5,27 @@ services:
restart: unless-stopped
volumes:
- ./config:/app/config
- /var/run/docker.sock:/var/run/docker.sock:ro
ports:
- "3003:3000"
environment:
- HOMEPAGE_ALLOWED_HOSTS=homepage.homelab
- HOMEPAGE_ALLOWED_HOSTS=home.xiteng.site,xiteng.site
labels:
# --- 1. Traefik 路由设置 ---
- "traefik.enable=true"
- "traefik.http.routers.homepage.rule=Host(`homepage.homelab`)"
- "traefik.http.routers.homepage.rule=Host(`home.xiteng.site`)"
- "traefik.http.services.homepage.loadbalancer.server.port=3000"
- "traefik.http.routers.homepage.entrypoints=websecure"
# --- 新增:开启 TLS 并指定解析器 ---
- "traefik.http.routers.homepage.tls=true"
- "traefik.http.routers.homepage.tls.certresolver=cfresolver"
# --- 3. AutoKuma 自动发现设置 ---
# 格式: kuma.<自定义ID>.<监控类型>.<属性>
- "kuma.homepage.http.name=HomePage" # 监控项名称
- "kuma.homepage.http.url=https://home.xiteng.site" # 监控的目标 URL
# (可选) 每 60 秒检查一次,重试 3 次
- "kuma.homepage.http.interval=60"
- "kuma.homepage.http.max_retries=3"
networks:
- homelab_net

View File

@@ -3,17 +3,29 @@ services:
image: traefik:v3.6
container_name: traefik
restart: unless-stopped
env_file: ../.env
command:
- --api.insecure=true
- --providers.docker=true
- --entrypoints.web.address=:80
- --entrypoints.websecure.address=:443
- --api.dashboard=true
- --log.level=INFO
# --- 下面是新增的 Let's Encrypt DNS-01 配置 ---
# 定义一个名为 "cfresolver" 的证书解析器
- --certificatesresolvers.cfresolver.acme.dnschallenge=true
- --certificatesresolvers.cfresolver.acme.dnschallenge.provider=cloudflare
# 填入你的真实邮箱,用于接收证书快过期的通知
- --certificatesresolvers.cfresolver.acme.email=LiuXiteng72@gmail.com
# 证书保存路径(对应上面 volumes 里的挂载)
- --certificatesresolvers.cfresolver.acme.storage=/letsencrypt/acme.json
ports:
- "80:80"
- "443:443"
- "8080:8080"
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./letsencrypt:/letsencrypt
networks:
- homelab_net

View File

@@ -1,6 +1,6 @@
services:
uptime-kuma:
image: louislam/uptime-kuma:latest
image: louislam/uptime-kuma:2
container_name: uptime-kuma
restart: unless-stopped
volumes:
@@ -14,6 +14,20 @@ services:
networks:
- homelab_net
autokuma:
image: ghcr.io/bigboot/autokuma:latest
restart: unless-stopped
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
env_file: ../.env
environment:
# 指向你的 Uptime Kuma 内部地址 (如果在同一 bridge 网络下,直接用容器名:端口)
AUTOKUMA__KUMA__URL: http://uptime-kuma:3001
depends_on:
- uptime-kuma
networks:
- homelab_net
networks:
homelab_net:
external: true