新增服务配置,更新 Gitea、HedgeDoc、Homepage、Uptime Kuma 的 Docker Compose 配置,添加 Traefik 路由和 TLS 支持,新增自动发现设置
This commit is contained in:
29
generate_hosts.sh
Executable file
29
generate_hosts.sh
Executable 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 中。"
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user