[{"data":1,"prerenderedAt":1734},["ShallowReactive",2],{"article-\u002Fblog\u002F10-技术专栏\u002F50-AI\u002F02.用-New-API-搭建统一-LLM-网关与-Lucky-反代外网访问":3,"article-around-\u002Fblog\u002F10-技术专栏\u002F50-AI\u002F02.用-New-API-搭建统一-LLM-网关与-Lucky-反代外网访问":1516},{"id":4,"title":5,"author":6,"body":7,"category":1502,"cover":1503,"date":1504,"description":1505,"draft":1506,"extension":1507,"image":1508,"license":1503,"meta":1509,"minutes":324,"navigation":320,"path":1510,"pinned":1506,"seo":1511,"stem":1512,"tags":1513,"__hash__":1515},"blog\u002Fblog\u002F10-技术专栏\u002F50-AI\u002F02.用 New API 搭建统一 LLM 网关与 Lucky 反代外网访问.md","用 New API 搭建统一 LLM 网关与 Lucky 反代外网访问","张萌萌",{"type":8,"value":9,"toc":1475},"minimark",[10,15,24,31,46,57,64,68,73,79,86,90,118,122,148,152,235,244,248,251,255,287,291,799,802,851,855,861,883,887,890,894,901,975,978,982,985,1026,1041,1045,1050,1072,1079,1083,1090,1094,1097,1103,1106,1110,1121,1174,1184,1196,1200,1203,1225,1228,1232,1235,1302,1308,1312,1315,1427,1436,1440,1468,1471],[11,12,14],"h2",{"id":13},"_1-序言","1 序言",[16,17,18,19,23],"p",{},"本地跑起 Ollama 之后，新的问题很快出现：",[20,21,22],"strong",{},"API 碎片化","。",[16,25,26,27,30],{},"我手上现在有三处模型来源——在线租的 API、自己部署的 Ollama、以及偶尔要试的新模型。它们各自的地址、密钥、调用格式都不一样：换一个客户端就要重配一次密钥，想在手机上用还得把每家的域名都记住。更麻烦的是，",[20,28,29],{},"没有一处能统一统计用量","，月底看账单只能靠猜。",[16,32,33,34,37,38,41,42,45],{},"本文用 ",[20,35,36],{},"New API"," 把所有这些上游收敛成",[20,39,40],{},"一个地址、一套密钥、一种格式","，再用 ",[20,43,44],{},"Lucky"," 把它安全地暴露到外网。整条链路是：",[47,48,53],"pre",{"className":49,"code":51,"language":52},[50],"language-text","外网请求 → Lucky（SSL 卸载 + 基础认证）→ New API（鉴权\u002F计费\u002F转发）→ 上游模型\n","text",[54,55,51],"code",{"__ignoreMap":56},"",[16,58,59,60,63],{},"需要说明的是，本文",[20,61,62],{},"不涉及","任何破解或账号共享，只讲自建网关这一件事。",[11,65,67],{"id":66},"_2-什么是-llm-网关核心概念","2 什么是 LLM 网关（核心概念）",[69,70,72],"h3",{"id":71},"_21-基础定义","2.1 基础定义",[16,74,75,78],{},[20,76,77],{},"LLM 网关","是夹在你的客户端和各家模型 API 之间的中间层。对客户端，它表现得像一个标准的 OpenAI API 服务；对上游，它按各家的格式转发请求。",[16,80,81,82,85],{},"它解决的不是「能不能用」，而是「",[20,83,84],{},"好不好管","」。",[69,87,89],{"id":88},"_22-为什么需要它三个真实痛点","2.2 为什么需要它：三个真实痛点",[91,92,93,100,106,112],"ul",{},[94,95,96,99],"li",{},[20,97,98],{},"密钥分散","：三家上游三把钥匙，散落在电脑、手机、平板的客户端里。想换一把就得挨个设备改。",[94,101,102,105],{},[20,103,104],{},"格式不一","：在线 API 是 OpenAI 格式，本地 Ollama 虽是兼容格式但端点不同，部分厂商又各有方言。客户端适配成本高。",[94,107,108,111],{},[20,109,110],{},"无统一观测","：哪个模型用得多、消耗多少额度，各家后台各看一半，没有汇总视图。",[94,113,114,117],{},[20,115,116],{},"暴露风险","：想在外面用，就得把上游地址直接对外，等于把密钥交到了公网。",[69,119,121],{"id":120},"_23-网关带来的核心收益","2.3 网关带来的核心收益",[91,123,124,130,136,142],{},[94,125,126,129],{},[20,127,128],{},"一处配置","：所有客户端只填一个地址、一个密钥。换模型不换配置。",[94,131,132,135],{},[20,133,134],{},"可计量","：按令牌、按渠道、按用户统计消耗，额度用完自动停。",[94,137,138,141],{},[20,139,140],{},"可管控","：能单独禁用某个渠道、设置限速、给不同设备发不同的密钥。",[94,143,144,147],{},[20,145,146],{},"收敛暴露面","：公网只需要暴露网关这一个服务，上游地址和真实密钥不出内网。",[11,149,151],{"id":150},"_3-主流网关方案对比","3 主流网关方案对比",[153,154,155,174],"table",{},[156,157,158],"thead",{},[159,160,161,165,168,171],"tr",{},[162,163,164],"th",{},"方案",[162,166,167],{},"核心优势",[162,169,170],{},"核心短板",[162,172,173],{},"适用场景",[175,176,177,193,207,221],"tbody",{},[159,178,179,184,187,190],{},[180,181,182],"td",{},[20,183,36],{},[180,185,186],{},"界面完整、支持多渠道聚合与计费、中文文档友好、社区活跃",[180,188,189],{},"功能多，配置项偏繁杂",[180,191,192],{},"个人、小团队自建首选",[159,194,195,198,201,204],{},[180,196,197],{},"one-api",[180,199,200],{},"轻量、部署简单、历史悠久",[180,202,203],{},"部分新特性跟进较慢",[180,205,206],{},"只要基础转发",[159,208,209,212,215,218],{},[180,210,211],{},"LiteLLM",[180,213,214],{},"支持上百种模型格式、Python 生态可编程",[180,216,217],{},"无内置管理界面，需自己写前端",[180,219,220],{},"开发者、程序化调用",[159,222,223,226,229,232],{},[180,224,225],{},"直连各上游",[180,227,228],{},"零中间层、延迟最低",[180,230,231],{},"密钥分散、无法统计、暴露面大",[180,233,234],{},"单一上游、临时测试",[236,237,238],"blockquote",{},[16,239,240,241,243],{},"我最终选 ",[20,242,36],{},"：它的定位正好卡在「有完整管理界面」和「部署足够简单」之间。one-api 我也用过，差别主要在渠道类型和统计维度上，够用但没那么顺手。",[11,245,247],{"id":246},"_4-部署-new-api","4 部署 New API",[16,249,250],{},"New API 建议配一个外部数据库，容器重建时数据不会丢。",[69,252,254],{"id":253},"_41-前置目录","4.1 前置目录",[47,256,260],{"className":257,"code":258,"language":259,"meta":56,"style":56},"language-bash shiki shiki-themes github-light github-dark","mkdir -p \u002Fdocker\u002Fapps\u002Fdocker-compose\u002Fnew-api\ncd \u002Fdocker\u002Fapps\u002Fdocker-compose\u002Fnew-api\n","bash",[54,261,262,279],{"__ignoreMap":56},[263,264,267,271,275],"span",{"class":265,"line":266},"line",1,[263,268,270],{"class":269},"sScJk","mkdir",[263,272,274],{"class":273},"sj4cs"," -p",[263,276,278],{"class":277},"sZZnC"," \u002Fdocker\u002Fapps\u002Fdocker-compose\u002Fnew-api\n",[263,280,282,285],{"class":265,"line":281},2,[263,283,284],{"class":273},"cd",[263,286,278],{"class":277},[69,288,290],{"id":289},"_42-docker-composeyaml","4.2 docker-compose.yaml",[47,292,296],{"className":293,"code":294,"language":295,"meta":56,"style":56},"language-yaml shiki shiki-themes github-light github-dark","# 官方文档\n# https:\u002F\u002Fgithub.com\u002FCalcium-Ion\u002Fnew-api\n# https:\u002F\u002Fhub.docker.com\u002Fr\u002Fcalciumion\u002Fnew-api\n\n---\nname: new-api\n# 最后编辑时间：2026-09-23\nservices:\n  new-api:\n    # 镜像地址\n    image: calciumion\u002Fnew-api:latest\n    # 容器名\n    container_name: new-api\n    # 主机名\n    hostname: new-api\n    environment:\n      # 时区\n      TZ: Asia\u002FShanghai\n      # 🔴 数据库连接串（用户名:密码@tcp(主机:端口)\u002F库名）\n      SQL_DSN: \"root:yourpassword@tcp(mysql:3306)\u002Fnew-api\"\n      # 🔴 Redis 连接串，用于缓存与限流（可留空，但不建议）\n      REDIS_CONN_STRING: \"redis:\u002F\u002Fredis:6379\"\n      # 🔴 多机部署时必须设置，单机可留默认，但建议改成随机字符串\n      SESSION_SECRET: \"换成你自己的随机字符串\"\n      # 日志保留天数，0 表示不清理\n      LOG_KEEP_DAYS: \"30\"\n    volumes:\n      # 数据持久化（使用 SQLite 时尤其重要）\n      - \u002Fdocker\u002Fapps\u002Fnew-api:\u002Fdata\n    ports:\n      # WebUI 与 API 共用端口\n      - 3000:3000\n    depends_on:\n      - mysql\n      - redis\n    # 重启策略，总是重启\n    restart: always\n\n  mysql:\n    image: mysql:8.0\n    container_name: new-api-mysql\n    hostname: mysql\n    environment:\n      MYSQL_ROOT_PASSWORD: yourpassword\n      MYSQL_DATABASE: new-api\n      TZ: Asia\u002FShanghai\n    volumes:\n      - \u002Fdocker\u002Fapps\u002Fnew-api-mysql:\u002Fvar\u002Flib\u002Fmysql\n    # 仅内网使用，不对外映射端口\n    expose:\n      - 3306\n    restart: always\n\n  redis:\n    image: redis:7-alpine\n    container_name: new-api-redis\n    hostname: redis\n    volumes:\n      - \u002Fdocker\u002Fapps\u002Fnew-api-redis:\u002Fdata\n    expose:\n      - 6379\n    restart: always\n","yaml",[54,297,298,304,309,315,322,328,342,348,357,365,371,382,388,398,404,414,422,428,439,445,456,462,473,479,490,496,507,515,521,530,538,544,552,560,568,576,582,593,598,606,616,626,635,642,653,663,672,679,687,693,701,709,718,723,731,741,751,760,767,775,782,790],{"__ignoreMap":56},[263,299,300],{"class":265,"line":266},[263,301,303],{"class":302},"sJ8bj","# 官方文档\n",[263,305,306],{"class":265,"line":281},[263,307,308],{"class":302},"# https:\u002F\u002Fgithub.com\u002FCalcium-Ion\u002Fnew-api\n",[263,310,312],{"class":265,"line":311},3,[263,313,314],{"class":302},"# https:\u002F\u002Fhub.docker.com\u002Fr\u002Fcalciumion\u002Fnew-api\n",[263,316,318],{"class":265,"line":317},4,[263,319,321],{"emptyLinePlaceholder":320},true,"\n",[263,323,325],{"class":265,"line":324},5,[263,326,327],{"class":269},"---\n",[263,329,331,335,339],{"class":265,"line":330},6,[263,332,334],{"class":333},"s9eBZ","name",[263,336,338],{"class":337},"sVt8B",": ",[263,340,341],{"class":277},"new-api\n",[263,343,345],{"class":265,"line":344},7,[263,346,347],{"class":302},"# 最后编辑时间：2026-09-23\n",[263,349,351,354],{"class":265,"line":350},8,[263,352,353],{"class":333},"services",[263,355,356],{"class":337},":\n",[263,358,360,363],{"class":265,"line":359},9,[263,361,362],{"class":333},"  new-api",[263,364,356],{"class":337},[263,366,368],{"class":265,"line":367},10,[263,369,370],{"class":302},"    # 镜像地址\n",[263,372,374,377,379],{"class":265,"line":373},11,[263,375,376],{"class":333},"    image",[263,378,338],{"class":337},[263,380,381],{"class":277},"calciumion\u002Fnew-api:latest\n",[263,383,385],{"class":265,"line":384},12,[263,386,387],{"class":302},"    # 容器名\n",[263,389,391,394,396],{"class":265,"line":390},13,[263,392,393],{"class":333},"    container_name",[263,395,338],{"class":337},[263,397,341],{"class":277},[263,399,401],{"class":265,"line":400},14,[263,402,403],{"class":302},"    # 主机名\n",[263,405,407,410,412],{"class":265,"line":406},15,[263,408,409],{"class":333},"    hostname",[263,411,338],{"class":337},[263,413,341],{"class":277},[263,415,417,420],{"class":265,"line":416},16,[263,418,419],{"class":333},"    environment",[263,421,356],{"class":337},[263,423,425],{"class":265,"line":424},17,[263,426,427],{"class":302},"      # 时区\n",[263,429,431,434,436],{"class":265,"line":430},18,[263,432,433],{"class":333},"      TZ",[263,435,338],{"class":337},[263,437,438],{"class":277},"Asia\u002FShanghai\n",[263,440,442],{"class":265,"line":441},19,[263,443,444],{"class":302},"      # 🔴 数据库连接串（用户名:密码@tcp(主机:端口)\u002F库名）\n",[263,446,448,451,453],{"class":265,"line":447},20,[263,449,450],{"class":333},"      SQL_DSN",[263,452,338],{"class":337},[263,454,455],{"class":277},"\"root:yourpassword@tcp(mysql:3306)\u002Fnew-api\"\n",[263,457,459],{"class":265,"line":458},21,[263,460,461],{"class":302},"      # 🔴 Redis 连接串，用于缓存与限流（可留空，但不建议）\n",[263,463,465,468,470],{"class":265,"line":464},22,[263,466,467],{"class":333},"      REDIS_CONN_STRING",[263,469,338],{"class":337},[263,471,472],{"class":277},"\"redis:\u002F\u002Fredis:6379\"\n",[263,474,476],{"class":265,"line":475},23,[263,477,478],{"class":302},"      # 🔴 多机部署时必须设置，单机可留默认，但建议改成随机字符串\n",[263,480,482,485,487],{"class":265,"line":481},24,[263,483,484],{"class":333},"      SESSION_SECRET",[263,486,338],{"class":337},[263,488,489],{"class":277},"\"换成你自己的随机字符串\"\n",[263,491,493],{"class":265,"line":492},25,[263,494,495],{"class":302},"      # 日志保留天数，0 表示不清理\n",[263,497,499,502,504],{"class":265,"line":498},26,[263,500,501],{"class":333},"      LOG_KEEP_DAYS",[263,503,338],{"class":337},[263,505,506],{"class":277},"\"30\"\n",[263,508,510,513],{"class":265,"line":509},27,[263,511,512],{"class":333},"    volumes",[263,514,356],{"class":337},[263,516,518],{"class":265,"line":517},28,[263,519,520],{"class":302},"      # 数据持久化（使用 SQLite 时尤其重要）\n",[263,522,524,527],{"class":265,"line":523},29,[263,525,526],{"class":337},"      - ",[263,528,529],{"class":277},"\u002Fdocker\u002Fapps\u002Fnew-api:\u002Fdata\n",[263,531,533,536],{"class":265,"line":532},30,[263,534,535],{"class":333},"    ports",[263,537,356],{"class":337},[263,539,541],{"class":265,"line":540},31,[263,542,543],{"class":302},"      # WebUI 与 API 共用端口\n",[263,545,547,549],{"class":265,"line":546},32,[263,548,526],{"class":337},[263,550,551],{"class":277},"3000:3000\n",[263,553,555,558],{"class":265,"line":554},33,[263,556,557],{"class":333},"    depends_on",[263,559,356],{"class":337},[263,561,563,565],{"class":265,"line":562},34,[263,564,526],{"class":337},[263,566,567],{"class":277},"mysql\n",[263,569,571,573],{"class":265,"line":570},35,[263,572,526],{"class":337},[263,574,575],{"class":277},"redis\n",[263,577,579],{"class":265,"line":578},36,[263,580,581],{"class":302},"    # 重启策略，总是重启\n",[263,583,585,588,590],{"class":265,"line":584},37,[263,586,587],{"class":333},"    restart",[263,589,338],{"class":337},[263,591,592],{"class":277},"always\n",[263,594,596],{"class":265,"line":595},38,[263,597,321],{"emptyLinePlaceholder":320},[263,599,601,604],{"class":265,"line":600},39,[263,602,603],{"class":333},"  mysql",[263,605,356],{"class":337},[263,607,609,611,613],{"class":265,"line":608},40,[263,610,376],{"class":333},[263,612,338],{"class":337},[263,614,615],{"class":277},"mysql:8.0\n",[263,617,619,621,623],{"class":265,"line":618},41,[263,620,393],{"class":333},[263,622,338],{"class":337},[263,624,625],{"class":277},"new-api-mysql\n",[263,627,629,631,633],{"class":265,"line":628},42,[263,630,409],{"class":333},[263,632,338],{"class":337},[263,634,567],{"class":277},[263,636,638,640],{"class":265,"line":637},43,[263,639,419],{"class":333},[263,641,356],{"class":337},[263,643,645,648,650],{"class":265,"line":644},44,[263,646,647],{"class":333},"      MYSQL_ROOT_PASSWORD",[263,649,338],{"class":337},[263,651,652],{"class":277},"yourpassword\n",[263,654,656,659,661],{"class":265,"line":655},45,[263,657,658],{"class":333},"      MYSQL_DATABASE",[263,660,338],{"class":337},[263,662,341],{"class":277},[263,664,666,668,670],{"class":265,"line":665},46,[263,667,433],{"class":333},[263,669,338],{"class":337},[263,671,438],{"class":277},[263,673,675,677],{"class":265,"line":674},47,[263,676,512],{"class":333},[263,678,356],{"class":337},[263,680,682,684],{"class":265,"line":681},48,[263,683,526],{"class":337},[263,685,686],{"class":277},"\u002Fdocker\u002Fapps\u002Fnew-api-mysql:\u002Fvar\u002Flib\u002Fmysql\n",[263,688,690],{"class":265,"line":689},49,[263,691,692],{"class":302},"    # 仅内网使用，不对外映射端口\n",[263,694,696,699],{"class":265,"line":695},50,[263,697,698],{"class":333},"    expose",[263,700,356],{"class":337},[263,702,704,706],{"class":265,"line":703},51,[263,705,526],{"class":337},[263,707,708],{"class":273},"3306\n",[263,710,712,714,716],{"class":265,"line":711},52,[263,713,587],{"class":333},[263,715,338],{"class":337},[263,717,592],{"class":277},[263,719,721],{"class":265,"line":720},53,[263,722,321],{"emptyLinePlaceholder":320},[263,724,726,729],{"class":265,"line":725},54,[263,727,728],{"class":333},"  redis",[263,730,356],{"class":337},[263,732,734,736,738],{"class":265,"line":733},55,[263,735,376],{"class":333},[263,737,338],{"class":337},[263,739,740],{"class":277},"redis:7-alpine\n",[263,742,744,746,748],{"class":265,"line":743},56,[263,745,393],{"class":333},[263,747,338],{"class":337},[263,749,750],{"class":277},"new-api-redis\n",[263,752,754,756,758],{"class":265,"line":753},57,[263,755,409],{"class":333},[263,757,338],{"class":337},[263,759,575],{"class":277},[263,761,763,765],{"class":265,"line":762},58,[263,764,512],{"class":333},[263,766,356],{"class":337},[263,768,770,772],{"class":265,"line":769},59,[263,771,526],{"class":337},[263,773,774],{"class":277},"\u002Fdocker\u002Fapps\u002Fnew-api-redis:\u002Fdata\n",[263,776,778,780],{"class":265,"line":777},60,[263,779,698],{"class":333},[263,781,356],{"class":337},[263,783,785,787],{"class":265,"line":784},61,[263,786,526],{"class":337},[263,788,789],{"class":273},"6379\n",[263,791,793,795,797],{"class":265,"line":792},62,[263,794,587],{"class":333},[263,796,338],{"class":337},[263,798,592],{"class":277},[16,800,801],{},"启动：",[47,803,805],{"className":257,"code":804,"language":259,"meta":56,"style":56},"docker compose pull && docker compose up -d\n# 首次启动数据库初始化需要一点时间，观察日志\ndocker compose logs -f new-api\n",[54,806,807,831,836],{"__ignoreMap":56},[263,808,809,812,815,818,821,823,825,828],{"class":265,"line":266},[263,810,811],{"class":269},"docker",[263,813,814],{"class":277}," compose",[263,816,817],{"class":277}," pull",[263,819,820],{"class":337}," && ",[263,822,811],{"class":269},[263,824,814],{"class":277},[263,826,827],{"class":277}," up",[263,829,830],{"class":273}," -d\n",[263,832,833],{"class":265,"line":281},[263,834,835],{"class":302},"# 首次启动数据库初始化需要一点时间，观察日志\n",[263,837,838,840,842,845,848],{"class":265,"line":311},[263,839,811],{"class":269},[263,841,814],{"class":277},[263,843,844],{"class":277}," logs",[263,846,847],{"class":273}," -f",[263,849,850],{"class":277}," new-api\n",[69,852,854],{"id":853},"_43-初始化管理员","4.3 初始化管理员",[16,856,857,858,23],{},"浏览器打开 ",[54,859,860],{},"http:\u002F\u002F你的内网IP:3000",[91,862,863,877],{},[94,864,865,866,871,872,23],{},"默认管理员账号 ",[20,867,868],{},[54,869,870],{},"root","，密码 ",[20,873,874],{},[54,875,876],{},"123456",[94,878,879,882],{},[20,880,881],{},"登录后第一件事就是改密码","，默认口令等于没有防护。",[11,884,886],{"id":885},"_5-渠道配置","5 渠道配置",[16,888,889],{},"「渠道」就是一条上游来源，「令牌」是发给自己客户端用的密钥。两者在后台分开管理，这是 New API 最实用的设计。",[69,891,893],{"id":892},"_51-添加在线-api-渠道","5.1 添加在线 API 渠道",[16,895,896,897,900],{},"左侧 ",[20,898,899],{},"「渠道」→「添加渠道」","，以通用的 OpenAI 兼容上游为例：",[153,902,903,913],{},[156,904,905],{},[159,906,907,910],{},[162,908,909],{},"字段",[162,911,912],{},"填什么",[175,914,915,923,934,945,956,964],{},[159,916,917,920],{},[180,918,919],{},"类型",[180,921,922],{},"OpenAI（或对应的厂商类型）",[159,924,925,928],{},[180,926,927],{},"名称",[180,929,930,931],{},"起个能认出来的名字，如 ",[54,932,933],{},"deepseek",[159,935,936,939],{},[180,937,938],{},"分组",[180,940,941,944],{},[54,942,943],{},"default","（或自定义分组，便于区分用途）",[159,946,947,950],{},[180,948,949],{},"模型",[180,951,952,953],{},"手动填入要开放的模型名，如 ",[54,954,955],{},"deepseek-chat",[159,957,958,961],{},[180,959,960],{},"密钥",[180,962,963],{},"上游的 API Key",[159,965,966,969],{},[180,967,968],{},"代理",[180,970,971,972],{},"上游需要走代理时填，如 ",[54,973,974],{},"http:\u002F\u002F192.168.x.x:7890",[16,976,977],{},"保存后在列表里点「测试」，能看到绿色的连通状态才算配置成功。",[69,979,981],{"id":980},"_52-接入本地-ollama","5.2 接入本地 Ollama",[16,983,984],{},"因为 Ollama 提供的就是 OpenAI 兼容接口，所以直接用 OpenAI 类型即可：",[91,986,987,992,1000,1009,1014],{},[94,988,989,991],{},[20,990,919],{},"：OpenAI",[94,993,994,996,997],{},[20,995,927],{},"：",[54,998,999],{},"ollama-local",[94,1001,1002,996,1005,1008],{},[20,1003,1004],{},"代理地址",[54,1006,1007],{},"http:\u002F\u002F192.168.x.x:11434","（Ollama 所在机器的内网 IP）",[94,1010,1011,1013],{},[20,1012,960],{},"：随便填一个非空字符串（Ollama 不校验）",[94,1015,1016,1018,1019,1022,1023],{},[20,1017,949],{},"：填你本地已拉取的模型名，如 ",[54,1020,1021],{},"qwen2.5:7b","、",[54,1024,1025],{},"bge-m3",[236,1027,1028],{},[16,1029,1030,1031,1037,1038,1040],{},"⚠️ ",[20,1032,1033,1034],{},"千万别填 ",[54,1035,1036],{},"127.0.0.1","。New API 在容器里，",[54,1039,1036],{}," 指的是它自己，必然连不通。要填宿主机的内网 IP。",[69,1042,1044],{"id":1043},"_53-创建令牌","5.3 创建令牌",[16,1046,896,1047,996],{},[20,1048,1049],{},"「令牌」→「添加令牌」",[91,1051,1052,1061,1067],{},[94,1053,1054,1056,1057,1060],{},[20,1055,927],{},"：比如 ",[54,1058,1059],{},"手机-冬梅","，一个设备一个，泄露了能单独吊销。",[94,1062,1063,1066],{},[20,1064,1065],{},"额度","：可以设成无限，也可以设上限，跑完自动停。",[94,1068,1069,1071],{},[20,1070,938],{},"：要和渠道的分组匹配，否则会提示无可用渠道。",[16,1073,1074,1075,1078],{},"保存后会得到一串 ",[54,1076,1077],{},"sk-"," 开头的密钥，这就是填进客户端的东西。",[11,1080,1082],{"id":1081},"_6-用-lucky-反代暴露到外网","6 用 Lucky 反代暴露到外网",[16,1084,1085,1086,1089],{},"到这一步网关只在内网可用。要外网访问，",[20,1087,1088],{},"不要直接把 3000 端口转发出去","——那是明文 HTTP，密钥会在公网上裸奔。",[69,1091,1093],{"id":1092},"_61-架构","6.1 架构",[16,1095,1096],{},"沿用我现有的 Lucky 反代思路，在它后面再加一跳：",[47,1098,1101],{"className":1099,"code":1100,"language":52},[50],"外网 HTTPS → Lucky（SSL 卸载 + 基础认证）→ New API (http:\u002F\u002F192.168.x.x:3000) → 上游\n",[54,1102,1100],{"__ignoreMap":56},[16,1104,1105],{},"Lucky 负责证书和第一道门，New API 负责真正的鉴权和计费。",[69,1107,1109],{"id":1108},"_62-lucky-反代规则","6.2 Lucky 反代规则",[16,1111,1112,1113,1116,1117,1120],{},"在 Lucky 后台（默认 ",[54,1114,1115],{},"http:\u002F\u002F内网IP:16601","）",[20,1118,1119],{},"「Web 服务」"," 里新建规则：",[153,1122,1123,1133],{},[156,1124,1125],{},[159,1126,1127,1130],{},[162,1128,1129],{},"配置项",[162,1131,1132],{},"值",[175,1134,1135,1146,1154,1164],{},[159,1136,1137,1140],{},[180,1138,1139],{},"监听端口",[180,1141,1142,1145],{},[54,1143,1144],{},"888","（沿用你现有的主入口端口）",[159,1147,1148,1151],{},[180,1149,1150],{},"开启 TLS",[180,1152,1153],{},"是，选已申请的泛域名证书",[159,1155,1156,1159],{},[180,1157,1158],{},"前端域名",[180,1160,1161],{},[54,1162,1163],{},"api.你的域名.com",[159,1165,1166,1169],{},[180,1167,1168],{},"后端地址",[180,1170,1171],{},[54,1172,1173],{},"http:\u002F\u002F192.168.x.x:3000",[16,1175,1176,1177,1180,1181,23],{},"然后在 ",[20,1178,1179],{},"「安全设置 → 基本认证 → 网页认证」"," 里加一层账号密码，认证信息如 ",[54,1182,1183],{},"admin:你的强密码",[236,1185,1186],{},[16,1187,1188,1191,1192,1195],{},[20,1189,1190],{},"为什么网关已经要填密钥了，外面还要再套一层认证？"," 因为 Basic Auth 拦在",[20,1193,1194],{},"请求到达应用之前","，能挡掉绝大部分自动化扫描和暴力尝试。应用层的密钥校验是第二道，不是第一道。",[69,1197,1199],{"id":1198},"_63-可选叠加雷池-waf","6.3 可选：叠加雷池 WAF",[16,1201,1202],{},"如果需要更强的防护，可以在 Lucky 和 New API 之间再插一层雷池：",[91,1204,1205,1220],{},[94,1206,1207,1208,1211,1212,1215,1216,1219],{},"Lucky 后端地址指向",[20,1209,1210],{},"雷池的 IP 和端口","（如 ",[54,1213,1214],{},"http:\u002F\u002F192.168.x.x:29080","），",[20,1217,1218],{},"不要直接指 New API","；",[94,1221,1222,1223,23],{},"雷池里添加站点，上游填 New API 的真实地址 ",[54,1224,1173],{},[16,1226,1227],{},"这样流量链路变成「Lucky → 雷池 → New API」，异常请求在雷池就被拦掉了。缺点是增加一跳，延迟会略升，个人使用其实不是必需。",[11,1229,1231],{"id":1230},"_7-客户端接入","7 客户端接入",[16,1233,1234],{},"网关搭好后，所有客户端只需填两项：",[153,1236,1237,1250],{},[156,1238,1239],{},[159,1240,1241,1244,1247],{},[162,1242,1243],{},"平台",[162,1245,1246],{},"客户端",[162,1248,1249],{},"需填内容",[175,1251,1252,1270,1281,1291],{},[159,1253,1254,1257,1260],{},[180,1255,1256],{},"电脑",[180,1258,1259],{},"Cherry Studio \u002F Chatbox",[180,1261,1262,1263,1266,1267],{},"API 地址 ",[54,1264,1265],{},"https:\u002F\u002Fapi.你的域名.com","，密钥 ",[54,1268,1269],{},"sk-xxx",[159,1271,1272,1275,1278],{},[180,1273,1274],{},"网页",[180,1276,1277],{},"NextChat 自建",[180,1279,1280],{},"同上",[159,1282,1283,1286,1289],{},[180,1284,1285],{},"手机",[180,1287,1288],{},"同款客户端 App",[180,1290,1280],{},[159,1292,1293,1296,1299],{},[180,1294,1295],{},"浏览器",[180,1297,1298],{},"沉浸式翻译等插件",[180,1300,1301],{},"填 OpenAI 兼容地址与密钥",[16,1303,1304,1307],{},[20,1305,1306],{},"验证方法","：在任一客户端里点「获取模型列表」，能拉出你在渠道里配置过的模型名，说明整条链路通了。",[11,1309,1311],{"id":1310},"_8-安全清单","8 安全清单",[16,1313,1314],{},"上线前逐条对照：",[153,1316,1317,1327],{},[156,1318,1319],{},[159,1320,1321,1324],{},[162,1322,1323],{},"检查项",[162,1325,1326],{},"要求",[175,1328,1329,1340,1364,1376,1384,1392,1400,1412],{},[159,1330,1331,1334],{},[180,1332,1333],{},"管理员密码",[180,1335,1336,1337,1339],{},"已从默认 ",[54,1338,876],{}," 改掉",[159,1341,1342,1345],{},[180,1343,1344],{},"公网暴露",[180,1346,1347,1348,1350,1351,1022,1354,1022,1357,1360,1361],{},"只暴露 Lucky 的 ",[54,1349,1144],{}," 端口，",[54,1352,1353],{},"3000",[54,1355,1356],{},"3306",[54,1358,1359],{},"6379"," ",[20,1362,1363],{},"一律不对公网开放",[159,1365,1366,1369],{},[180,1367,1368],{},"数据库\u002F缓存",[180,1370,1371,1372,1375],{},"使用容器内网互联（",[54,1373,1374],{},"expose","），无端口映射",[159,1377,1378,1381],{},[180,1379,1380],{},"传输加密",[180,1382,1383],{},"外网全程 HTTPS，证书由 Lucky 自动续期",[159,1385,1386,1389],{},[180,1387,1388],{},"入口认证",[180,1390,1391],{},"Lucky 已开启 Basic Auth",[159,1393,1394,1397],{},[180,1395,1396],{},"令牌管理",[180,1398,1399],{},"一设备一令牌，可单独吊销",[159,1401,1402,1405],{},[180,1403,1404],{},"日志",[180,1406,1407,1408,1411],{},"定期检查异常调用记录，",[54,1409,1410],{},"LOG_KEEP_DAYS"," 已设置",[159,1413,1414,1417],{},[180,1415,1416],{},"数据库密码",[180,1418,1419,1422,1423,1426],{},[54,1420,1421],{},"SQL_DSN"," 与 ",[54,1424,1425],{},"MYSQL_ROOT_PASSWORD"," 已改为强密码，非示例值",[236,1428,1429],{},[16,1430,1431,1432,1435],{},"⚠️ 第 1 条和第 8 条最容易被忽略——示例配置里的密码是",[20,1433,1434],{},"给人看的占位符","，直接复制上线的账号等于把门开着。",[11,1437,1439],{"id":1438},"_9-总结","9 总结",[91,1441,1442,1449,1455,1461],{},[94,1443,1444,1445,1448],{},"网关的价值是",[20,1446,1447],{},"把碎片收敛成一处","：一个地址、一套密钥、一份用量统计。",[94,1450,1451,1452,23],{},"New API 负责管理，Lucky 负责安全暴露，",[20,1453,1454],{},"两者职责不要混",[94,1456,1457,1458,23],{},"外网访问必须走 HTTPS + 入口认证，",[20,1459,1460],{},"永远不要直接转发应用端口",[94,1462,1463,1464,1467],{},"这份方案同样适用于把本地 Ollama 分享给家人朋友，但要清楚：",[20,1465,1466],{},"共享上游 API 可能违反上游服务条款","，自建网关合规的前提是只用自己有权使用的接口。",[16,1469,1470],{},"Created with ❤️ by 张萌萌",[1472,1473,1474],"style",{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}",{"title":56,"searchDepth":281,"depth":281,"links":1476},[1477,1478,1483,1484,1489,1494,1499,1500,1501],{"id":13,"depth":281,"text":14},{"id":66,"depth":281,"text":67,"children":1479},[1480,1481,1482],{"id":71,"depth":311,"text":72},{"id":88,"depth":311,"text":89},{"id":120,"depth":311,"text":121},{"id":150,"depth":281,"text":151},{"id":246,"depth":281,"text":247,"children":1485},[1486,1487,1488],{"id":253,"depth":311,"text":254},{"id":289,"depth":311,"text":290},{"id":853,"depth":311,"text":854},{"id":885,"depth":281,"text":886,"children":1490},[1491,1492,1493],{"id":892,"depth":311,"text":893},{"id":980,"depth":311,"text":981},{"id":1043,"depth":311,"text":1044},{"id":1081,"depth":281,"text":1082,"children":1495},[1496,1497,1498],{"id":1092,"depth":311,"text":1093},{"id":1108,"depth":311,"text":1109},{"id":1198,"depth":311,"text":1199},{"id":1230,"depth":281,"text":1231},{"id":1310,"depth":281,"text":1311},{"id":1438,"depth":281,"text":1439},"AI",null,"2026-09-23","把 OpenAI、DeepSeek 与本地 Ollama 统一成一套 OpenAI 兼容接口，并用 Lucky 反代安全暴露到外网",false,"md","https:\u002F\u002Fimg.nw177.cn\u002Fblog\u002F2026\u002F09\u002F25\u002F1790268810559.avif",{"published":1504},"\u002Fblog\u002F10-技术专栏\u002F50-AI\u002F02.用-New-API-搭建统一-LLM-网关与-Lucky-反代外网访问",{"title":5,"description":1505},"blog\u002F10-技术专栏\u002F50-AI\u002F02.用 New API 搭建统一 LLM 网关与 Lucky 反代外网访问",[36,77,44,1514],"反向代理","eLkE7TW22u1KGIydQyqMwwxVoHIlihEK4cIGKoz_KFc",[1517,1521,1525,1528,1529,1532,1536,1539,1543,1547,1551,1555,1559,1563,1567,1571,1575,1579,1583,1586,1590,1594,1598,1602,1605,1609,1613,1617,1621,1625,1629,1633,1637,1641,1645,1649,1653,1656,1660,1664,1668,1672,1676,1679,1682,1685,1688,1691,1694,1697,1700,1703,1706,1709,1712,1715,1718,1721,1724,1727,1730],{"path":1518,"title":1519,"date":1520},"\u002Fblog\u002F10-技术专栏\u002F20-network\u002F16.IPv6与DNS的分手协议","IPv6 与 DNS 的分手协议","2026-10-02",{"path":1522,"title":1523,"date":1524},"\u002Fblog\u002F10-技术专栏\u002F50-AI\u002F04.我的-AI-入坑记","我的 AI 入坑记","2026-09-24",{"path":1526,"title":1527,"date":1504},"\u002Fblog\u002F10-技术专栏\u002F50-AI\u002F01.用-Docker-部署-Ollama-与-Open-WebUI-搭建本地大模型","用 Docker 部署 Ollama 与 Open WebUI 搭建本地大模型",{"path":1510,"title":5,"date":1504},{"path":1530,"title":1531,"date":1504},"\u002Fblog\u002F10-技术专栏\u002F50-AI\u002F03.用-Dify-搭建本地知识库让-AI-读懂你写的博客","用 Dify 搭建本地知识库，让 AI 读懂你写的博客",{"path":1533,"title":1534,"date":1535},"\u002Fblog\u002F20-生活碎片\u002F03-2026年秋季计划","2026 年秋季计划","2026-09-19",{"path":1537,"title":1538,"date":1535},"\u002Fblog\u002F30-学习笔记\u002F02.Python入门书单","Python 入门书单：从第一行代码到写出真正的程序",{"path":1540,"title":1541,"date":1542},"\u002Fblog\u002F10-技术专栏\u002F40-WebsiteBuilding\u002F09-Cloudflare-低延迟接入方案","Cloudflare 低延迟接入方案","2026-07-22 03:17:28",{"path":1544,"title":1545,"date":1546},"\u002Fblog\u002F10-技术专栏\u002F40-WebsiteBuilding\u002F08-Cloudflare-ImgBed-免费私有图床完整部署手册","Cloudflare ImgBed 免费私有图床完整部署手册","2026-07-19 02:09:08",{"path":1548,"title":1549,"date":1550},"\u002Fblog\u002F10-技术专栏\u002F40-WebsiteBuilding\u002F07-腾讯云-EdgeOne-边缘函数实现七牛-S3-随机图床-API","腾讯云 EdgeOne 边缘函数实现七牛云 & S3 存储随机图床 API","2026-07-13 21:25:48",{"path":1552,"title":1553,"date":1554},"\u002Fblog\u002F10-技术专栏\u002F40-WebsiteBuilding\u002F06-腾讯-EdgeOne-部署-Twikoo-评论系统指南","腾讯EdgeOne部署Twikoo评论系统指南","2026-06-14 17:41:11",{"path":1556,"title":1557,"date":1558},"\u002Fblog\u002F10-技术专栏\u002F40-WebsiteBuilding\u002F05-OpenList-接入-S3-对象存储完整使用教程","OpenList 接入 S3 对象存储完整使用教程","2026-06-11 13:08:07",{"path":1560,"title":1561,"date":1562},"\u002Fblog\u002F10-技术专栏\u002F40-WebsiteBuilding\u002F04-Cloudflare-R2-图床与全球加速方案","Cloudflare R2 图床与全球加速方案","2026-06-09 13:07:35",{"path":1564,"title":1565,"date":1566},"\u002Fblog\u002F10-技术专栏\u002F40-WebsiteBuilding\u002F03-免费图床与CDN加速方案","免费图床与 CDN 加速方案","2026-06-09",{"path":1568,"title":1569,"date":1570},"\u002Fblog\u002F10-技术专栏\u002F40-WebsiteBuilding\u002F02-零基础优雅搭建静态博客全教程","零基础优雅搭建静态博客全教程","2026-06-04",{"path":1572,"title":1573,"date":1574},"\u002Fblog\u002F10-技术专栏\u002F40-WebsiteBuilding\u002F01-远古产物—博客","赛博空间的私人岛屿：博客架构与风格美学","2026-06-03",{"path":1576,"title":1577,"date":1578},"\u002Fblog\u002F10-技术专栏\u002F20-network\u002F15.关于NAT回流与内网域名直连的终极指南","关于 NAT 回流与内网域名直连的终极指南","2026-05-13",{"path":1580,"title":1581,"date":1582},"\u002Fblog\u002F10-技术专栏\u002F20-network\u002F14.飞牛安全访问与Lucky反代雷池防护","飞牛安全访问与 Lucky 反代雷池防护","2026-02-03",{"path":1584,"title":1585,"date":1582},"\u002Fblog\u002F10-技术专栏\u002F30-Linux\u002F18.一键DD纯净系统脚本","一键 DD 纯净系统脚本",{"path":1587,"title":1588,"date":1589},"\u002Fblog\u002F10-技术专栏\u002F30-Linux\u002F17.Ventoy多系统启动盘制作与使用全指南","Ventoy 多系统启动盘制作与使用全指南","2026-02-02",{"path":1591,"title":1592,"date":1593},"\u002Fblog\u002F10-技术专栏\u002F30-Linux\u002F16.Emby元数据匹配与中文命名规范","Emby 元数据匹配与中文命名规范","2026-02-01",{"path":1595,"title":1596,"date":1597},"\u002Fblog\u002F10-技术专栏\u002F30-Linux\u002F15.基于PVE系统安装LXC-debian","基于 PVE 系统安装 LXC-debian","2026-01-19",{"path":1599,"title":1600,"date":1601},"\u002Fblog\u002F10-技术专栏\u002F20-network\u002F13.Lucky反向代理终极指南","Lucky 反向代理终极指南","2026-01-16",{"path":1603,"title":1604,"date":1601},"\u002Fblog\u002F10-技术专栏\u002F30-Linux\u002F14.OEC盒子Armbian刷机指南","OEC 盒子 Armbian 刷机指南",{"path":1606,"title":1607,"date":1608},"\u002Fblog\u002F10-技术专栏\u002F30-Linux\u002F13.oec-fnOS安装","OEC-Turbo (RK3566) 安装飞牛 OS","2026-01-15",{"path":1610,"title":1611,"date":1612},"\u002Fblog\u002F10-技术专栏\u002F30-Linux\u002F12.新的篇章，debian12的配置","新的篇章，debian12 的配置","2026-01-14",{"path":1614,"title":1615,"date":1616},"\u002Fblog\u002F10-技术专栏\u002F30-Linux\u002F11.飞牛OS安装后必要配置","飞牛 OS 安装后必要配置","2026-01-06",{"path":1618,"title":1619,"date":1620},"\u002Fblog\u002F10-技术专栏\u002F10-docker\u002F11.NAS-导航页的终极形态","告别繁琐配置：NAS 导航页的终极形态 —— 从 Sun-Panel 到 FlatNAS","2026-01-05",{"path":1622,"title":1623,"date":1624},"\u002Fblog\u002F10-技术专栏\u002F10-docker\u002F10.LogVar-弹幕-API-部署指南","LogVar 弹幕 API  (纯本地缓存版) 部署指南","2025-12-30",{"path":1626,"title":1627,"date":1628},"\u002Fblog\u002F10-技术专栏\u002F30-Linux\u002F10.基于Lucky与QMediaSync的飞牛远程媒体访问","基于 Lucky 与 QMediaSync 的飞牛远程媒体访问","2025-12-26",{"path":1630,"title":1631,"date":1632},"\u002Fblog\u002F10-技术专栏\u002F30-Linux\u002F09.新的篇章，PVE虚拟机","新的篇章，PVE虚拟机","2025-12-21",{"path":1634,"title":1635,"date":1636},"\u002Fblog\u002F10-技术专栏\u002F30-Linux\u002F08.Linux系统，音响有底噪","Linux 系统，音响有底噪怎么办？","2025-12-17",{"path":1638,"title":1639,"date":1640},"\u002Fblog\u002F10-技术专栏\u002F30-Linux\u002F07.飞牛OS的安装","飞牛 OS 的安装","2025-12-14",{"path":1642,"title":1643,"date":1644},"\u002Fblog\u002F10-技术专栏\u002F30-Linux\u002F06.Debian13换源","Debian13 换源","2025-11-29",{"path":1646,"title":1647,"date":1648},"\u002Fblog\u002F10-技术专栏\u002F30-Linux\u002F05.Kodi-CoreELEC安装指南","Kodi & CoreELEC 安装指南","2025-11-21",{"path":1650,"title":1651,"date":1652},"\u002Fblog\u002F10-技术专栏\u002F10-docker\u002F09.兰空图床和高清图标库","兰空图床和高清图标库","2025-11-15",{"path":1654,"title":1655,"date":1652},"\u002Fblog\u002F10-技术专栏\u002F30-Linux\u002F04.N1盒子Armbian刷机与配置","N1 盒子 Armbian 刷机与配置",{"path":1657,"title":1658,"date":1659},"\u002Fblog\u002F10-技术专栏\u002F10-docker\u002F08.你是否需要一个图床？","你是否需要一个图床？","2025-11-14",{"path":1661,"title":1662,"date":1663},"\u002Fblog\u002F10-技术专栏\u002F30-Linux\u002F03.飞牛NAS第三方应用商店安装","飞牛 NAS 第三方应用商店 (FnDepot) 安装指南","2025-10-13",{"path":1665,"title":1666,"date":1667},"\u002Fblog\u002F10-技术专栏\u002F30-Linux\u002F02.Hills播放器-Windows-安卓","Hills 播放器（Windows + 安卓）","2025-09-24",{"path":1669,"title":1670,"date":1671},"\u002Fblog\u002F10-技术专栏\u002F30-Linux\u002F01.一行代码降低服务器功耗","一行代码降低服务器功耗","2025-08-19",{"path":1673,"title":1674,"date":1675},"\u002Fblog\u002F10-技术专栏\u002F10-docker\u002F01.容器-docker-docker-compose","容器 & docker & docker-compose","2025-08-05",{"path":1677,"title":1678,"date":1675},"\u002Fblog\u002F10-技术专栏\u002F10-docker\u002F02.容器项目-传输类","容器项目&传输类",{"path":1680,"title":1681,"date":1675},"\u002Fblog\u002F10-技术专栏\u002F10-docker\u002F03.容器项目-相册类","容器项目&相册类",{"path":1683,"title":1684,"date":1675},"\u002Fblog\u002F10-技术专栏\u002F10-docker\u002F04.容器项目-媒体类","容器项目&媒体类",{"path":1686,"title":1687,"date":1675},"\u002Fblog\u002F10-技术专栏\u002F10-docker\u002F05.Emby自有授权媒体库（一）","Emby 自有授权媒体库（一）",{"path":1689,"title":1690,"date":1675},"\u002Fblog\u002F10-技术专栏\u002F10-docker\u002F06.Emby自有授权媒体库（二）","Emby 自有授权媒体库（二）",{"path":1692,"title":1693,"date":1675},"\u002Fblog\u002F10-技术专栏\u002F10-docker\u002F07.Adguard-Home去广告","Adguard Home 去广告",{"path":1695,"title":1696,"date":1675},"\u002Fblog\u002F10-技术专栏\u002F20-network\u002F01.新的篇章，软路由","新的篇章，软路由",{"path":1698,"title":1699,"date":1675},"\u002Fblog\u002F10-技术专栏\u002F20-network\u002F02.如何玩公网，怎么远程访问（一）","如何玩公网，怎么远程访问（一）",{"path":1701,"title":1702,"date":1675},"\u002Fblog\u002F10-技术专栏\u002F20-network\u002F03.如何玩公网，怎么远程访问（二）","如何玩公网，怎么远程访问（二）",{"path":1704,"title":1705,"date":1675},"\u002Fblog\u002F10-技术专栏\u002F20-network\u002F04.如何玩公网，怎么远程访问（三）","如何玩公网，怎么远程访问（三）",{"path":1707,"title":1708,"date":1675},"\u002Fblog\u002F10-技术专栏\u002F20-network\u002F05.免费域名与远程访问","免费域名与远程访问",{"path":1710,"title":1711,"date":1675},"\u002Fblog\u002F10-技术专栏\u002F20-network\u002F06.没有公网如何远程访问","没有公网如何远程访问",{"path":1713,"title":1714,"date":1675},"\u002Fblog\u002F10-技术专栏\u002F20-network\u002F07.爱快与OpenWRT双软路由MAC地址重复问题修正","爱快与 OpenWRT 双软路由MAC地址重复问题修正",{"path":1716,"title":1717,"date":1675},"\u002Fblog\u002F10-技术专栏\u002F20-network\u002F08.OpenWRT扩容","OpenWRT 扩容",{"path":1719,"title":1720,"date":1675},"\u002Fblog\u002F10-技术专栏\u002F20-network\u002F09.OpenWRT旁路由一条龙教程","OpenWRT 旁路由一条龙教程",{"path":1722,"title":1723,"date":1675},"\u002Fblog\u002F20-生活碎片\u002F02.在裂缝中种满阳光","让灵魂带着光行走：在裂缝中种满太阳",{"path":1725,"title":1726,"date":1675},"\u002Fblog\u002F30-学习笔记\u002F01.Typora学习笔记","Typora学习笔记",{"path":1728,"title":1729,"date":1675},"\u002Fblog\u002F30-学习笔记\u002F02.Markdown-拓展","Markdown 拓展",{"path":1731,"title":1732,"date":1733},"\u002Fblog\u002F20-生活碎片\u002F01.拥抱生活中的光与热","拥抱生活中的光与热","2025-07-05",1791304406308]