BirkhoffLee commited on
Commit
4c031a8
·
unverified ·
1 Parent(s): 64c48f3

feat: 配置好了代理转发架构

Browse files
Files changed (6) hide show
  1. Caddyfile +11 -0
  2. Dockerfile +38 -0
  3. README.md +11 -0
  4. app/main.py +8 -0
  5. app/pyproject.toml +8 -0
  6. 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