硬件配置

网络配置

SMB

负责内网访问。

httphttps

采用FRP+Nginx Proxy Manager双重代理:

graph TD
    classDef public fill:#FFA07A,stroke:#FF4500,stroke-width:2px;
    classDef key_component fill:#FFD700,stroke:#DAA520,stroke-width:2px;
    classDef internal fill:#D3D3D3,stroke:#696969,stroke-width:2px;
    classDef docker fill:#E0FFFF,stroke:#00CED1,stroke-width:2px;
    classDef service fill:#90EE90,stroke:#3CB371,stroke-width:2px;

    A["用户设备/浏览器"]:::public
    B("HTTP/TCP 80 访问")
    C["DDNS: 贝锐花生壳"]:::key_component
    D["VPS 公网 IP / Vultr"]:::key_component
    E{"frps 服务 (监听 80/443)"}:::key_component
    F["FRP 隧道/流量进入内网"]
    G["树莓派宿主机/内网"]:::internal
    H["Nginx Proxy Manager / NPM"]
    I["HTTPS/SSL 443 流量"]
    
    J1["服务: 拾心咖啡屋 (宿主机)"]:::service
    J2["服务: Dify (Docker)"]:::docker
    J3["服务: Searxng (Docker)"]:::docker
    J4["服务: Gitea (Docker)"]:::docker

    A -- "(1) HTTP 请求(80)" --> B
    B -- "(2) DNS 解析" --> C
    C -- "(3) 返回 VPS IP" --> D
    D -- "(4) 流量到达" --> E
    E -- "(5) 捕获 80 端口" --> F
    F -- "(6) 流量转发到 NPM" --> G
    G -- "(7) 流量进入 NPM 80" --> H
    
    H -- "(8) 强制 301 跳转" --> I
    I -- "(9) HTTPS 流量(443)回环" --> E
    E -- "(10) 重新转发 443" --> F
    F -- "(11) HTTPS 进入 NPM 443" --> H

    H -- "(12)syner.top" --> J1
    H -- "(12)dify.syner.top" --> J2
    H -- "(12)searxng.syner.top" --> J3
    H -- "(12)git.syner.top" --> J4
    
    subgraph "公网/云端"
        D
        E
    end

    subgraph "内网/家庭中控"
        G
        H
        J1
        J2
        J3
        J4
    end

Resilio