feat: 配置好了代理转发架构
Browse files- Caddyfile +11 -0
- Dockerfile +38 -0
- README.md +11 -0
- app/main.py +8 -0
- app/pyproject.toml +8 -0
- entrypoint.sh +11 -0
Caddyfile
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
:7860 {
|
| 2 |
+
# /sub* 转发到 subconverter
|
| 3 |
+
handle /sub* {
|
| 4 |
+
reverse_proxy localhost:25500
|
| 5 |
+
}
|
| 6 |
+
|
| 7 |
+
# 其余流量转发到 FastAPI
|
| 8 |
+
handle {
|
| 9 |
+
reverse_proxy localhost:8000
|
| 10 |
+
}
|
| 11 |
+
}
|
Dockerfile
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
FROM debian:bookworm-20260223-slim
|
| 2 |
+
|
| 3 |
+
# 安装基础依赖
|
| 4 |
+
RUN apt-get update && apt-get install -y --no-install-recommends \
|
| 5 |
+
curl \
|
| 6 |
+
ca-certificates \
|
| 7 |
+
tar \
|
| 8 |
+
&& rm -rf /var/lib/apt/lists/*
|
| 9 |
+
|
| 10 |
+
# 从官方镜像直接复制 caddy 和 uv 二进制,避免 apt repo 和 gpg 依赖
|
| 11 |
+
COPY --from=caddy:latest /usr/bin/caddy /usr/local/bin/caddy
|
| 12 |
+
COPY --from=ghcr.io/astral-sh/uv:latest /uv /usr/local/bin/uv
|
| 13 |
+
|
| 14 |
+
# 下载并校验 subconverter
|
| 15 |
+
ARG SUBCONVERTER_URL=https://github.com/tindy2013/subconverter/releases/download/v0.9.0/subconverter_linux64.tar.gz
|
| 16 |
+
ARG SUBCONVERTER_SHA256=884a6d1168267eba076fcdd5171215bacf98c17948ab526e4cbbdcad5f7a0217
|
| 17 |
+
RUN curl -fsSL "$SUBCONVERTER_URL" -o /tmp/subconverter.tar.gz && \
|
| 18 |
+
echo "${SUBCONVERTER_SHA256} /tmp/subconverter.tar.gz" | sha256sum -c - && \
|
| 19 |
+
tar -xzf /tmp/subconverter.tar.gz -C /opt && \
|
| 20 |
+
rm /tmp/subconverter.tar.gz
|
| 21 |
+
|
| 22 |
+
# 安装 FastAPI 依赖(利用 uv 缓存层)
|
| 23 |
+
WORKDIR /app
|
| 24 |
+
COPY app/pyproject.toml .
|
| 25 |
+
RUN uv sync --no-dev
|
| 26 |
+
|
| 27 |
+
# 复制应用代码
|
| 28 |
+
COPY app/ .
|
| 29 |
+
|
| 30 |
+
# Caddy 配置
|
| 31 |
+
COPY Caddyfile /etc/caddy/Caddyfile
|
| 32 |
+
|
| 33 |
+
COPY entrypoint.sh /entrypoint.sh
|
| 34 |
+
RUN chmod +x /entrypoint.sh
|
| 35 |
+
|
| 36 |
+
EXPOSE 7860
|
| 37 |
+
|
| 38 |
+
CMD ["/entrypoint.sh"]
|
README.md
CHANGED
|
@@ -7,4 +7,15 @@ sdk: docker
|
|
| 7 |
pinned: false
|
| 8 |
---
|
| 9 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 10 |
Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
|
|
|
|
| 7 |
pinned: false
|
| 8 |
---
|
| 9 |
|
| 10 |
+
## Subconverter on HuggingFace Space
|
| 11 |
+
|
| 12 |
+
订阅转换服务,基于 [tindy2013/subconverter](https://github.com/tindy2013/subconverter)。
|
| 13 |
+
|
| 14 |
+
### API 示例
|
| 15 |
+
|
| 16 |
+
```
|
| 17 |
+
/sub?target=clash&url=<订阅链接>
|
| 18 |
+
/sub?target=surge&ver=4&url=<订阅链接>
|
| 19 |
+
```
|
| 20 |
+
|
| 21 |
Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
|
app/main.py
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from fastapi import FastAPI
|
| 2 |
+
|
| 3 |
+
app = FastAPI()
|
| 4 |
+
|
| 5 |
+
|
| 6 |
+
@app.get("/")
|
| 7 |
+
def root():
|
| 8 |
+
return {"status": "ok"}
|
app/pyproject.toml
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
[project]
|
| 2 |
+
name = "app"
|
| 3 |
+
version = "0.1.0"
|
| 4 |
+
requires-python = ">=3.11"
|
| 5 |
+
dependencies = [
|
| 6 |
+
"fastapi>=0.115.0",
|
| 7 |
+
"uvicorn>=0.32.0",
|
| 8 |
+
]
|
entrypoint.sh
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#!/bin/bash
|
| 2 |
+
set -e
|
| 3 |
+
|
| 4 |
+
# Start subconverter
|
| 5 |
+
/opt/subconverter/subconverter &
|
| 6 |
+
|
| 7 |
+
# Start FastAPI via uv
|
| 8 |
+
cd /app && uv run uvicorn main:app --host 127.0.0.1 --port 8000 &
|
| 9 |
+
|
| 10 |
+
# Start Caddy (foreground, as PID 1 child)
|
| 11 |
+
exec caddy run --config /etc/caddy/Caddyfile
|