<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>小明同学 - 自建服务</title>
  
  <subtitle>分类：自建服务</subtitle>
  <link href="https://xiaomingclassmate.com/categories/%E8%87%AA%E5%BB%BA%E6%9C%8D%E5%8A%A1/atom.xml" rel="self"/>
  
  <link href="https://xiaomingclassmate.com/"/>
  <updated>2026-11-08T12:56:42.915Z</updated>
  <id>https://xiaomingclassmate.com/</id>
  
  <author>
    <name>小明同学</name>
    
  </author>
  
  <generator uri="https://hexo.io/">Hexo</generator>
  
  <entry>
    <title>自建安卓消息推送与通知服务- Gotify</title>
    <link href="https://xiaomingclassmate.com/posts/52327/"/>
    <id>https://xiaomingclassmate.com/posts/52327/</id>
    <published>2026-01-11T14:24:24.000Z</published>
    <updated>2026-11-08T12:56:42.915Z</updated>
    
    <content type="html"><![CDATA[<p>大家好，我是小明同学。</p><p>做安卓机友，有时候真的挺心累的。</p><p>尤其是想给自己的服务器、NAS 或者跑的脚本搞个“消息推送”的时候。</p><p>隔壁 iOS 用户有个神器叫 Bark，链接一填，消息秒到。</p><p><strong>而我们呢？</strong></p><p>❌ <strong>接入微信&#x2F;钉钉机器人？</strong> 门槛越来越高，还得实名认证，时不时还给你限个流。<br>❌ <strong>用邮件？</strong> 实时性太差，等看到邮件，服务器可能都挂了半小时了。<br>❌ <strong>依赖 FCM (谷歌推送)？</strong> 在国内的网络环境下，这就意味着得常年挂着梯子，耗电不说，连接还时不时抽风。</p><p>我就想要一个<strong>简单、干净、实时</strong>的推送服务，怎么就这么难？</p><p>直到我遇见了它 —— <strong>Gotify</strong>。<br><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20260111205124900.png" alt="image.png"><br>用了一周，我只想说四个字：<strong>相见恨晚</strong>。</p><p>如果你也是喜欢折腾的“自托管（Self-hosted）”玩家，这款工具绝对能让你神清气爽。</p><p>今天就带大家看看，这个只有几 MB 的小工具，是怎么解决安卓推送老大难问题的。</p><h3 id="01-🚀-为什么是-Gotify？-不仅仅是“安卓版-Bark”"><a href="#01-🚀-为什么是-Gotify？-不仅仅是“安卓版-Bark”" class="headerlink" title="01 🚀 为什么是 Gotify？(不仅仅是“安卓版 Bark”)"></a>01 🚀 为什么是 Gotify？(不仅仅是“安卓版 Bark”)</h3><p>简单说，Gotify 就是一个<strong>完全属于你自己的消息推送服务器</strong>。</p><p>很多开源软件功能强大，但吃资源也厉害。Gotify 不一样，它是用 Go 语言写的，极其轻量。</p><p>它最大的优势就三个词：<strong>私有、实时、极简。</strong></p><p>✅ <strong>私有</strong> 没有广告，没有第三方窥探。你的数据，只在你的服务器和你的手机之间流动。<br>✅ <strong>实时</strong> 基于 WebSocket 连接，服务器端一发，手机端毫秒级响应。<br>✅ <strong>极简</strong> 没有复杂的依赖，不用配臃肿的数据库，默认 SQLite 就够了。</p><p>对于我们这种有“数据洁癖”的极客来说，这种<strong>完全掌控</strong>的感觉，真的太棒了。</p><h3 id="02-🛠️-一分钟部署-甚至不需要写配置文件"><a href="#02-🛠️-一分钟部署-甚至不需要写配置文件" class="headerlink" title="02 🛠️ 一分钟部署 (甚至不需要写配置文件)"></a>02 🛠️ 一分钟部署 (甚至不需要写配置文件)</h3><p>server端地址：<a href="https://github.com/gotify/server">https://github.com/gotify/server</a><br><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20260111203352655.png" alt="image.png"></p><p>既然主打轻量，部署自然不能复杂。</p><p>如果你会用 Docker，那简直是手到擒来。</p><p>在你的 NAS 或服务器上，创建一个 <code>docker-compose.yml</code> 文件，填入以下内容：</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">services:</span></span><br><span class="line">    <span class="attr">gotify:</span></span><br><span class="line">        <span class="attr">image:</span> <span class="string">gotify/server</span></span><br><span class="line">        <span class="attr">container_name:</span> <span class="string">gotify</span></span><br><span class="line">        <span class="attr">restart:</span> <span class="string">unless-stopped</span></span><br><span class="line">        <span class="attr">ports:</span></span><br><span class="line">            <span class="bullet">-</span> <span class="number">8080</span><span class="string">:80</span></span><br><span class="line">        <span class="attr">environment:</span></span><br><span class="line">            <span class="bullet">-</span> <span class="string">GOTIFY_DEFAULTUSER_PASS=custom_password</span> <span class="comment"># 记得改密码</span></span><br><span class="line">            <span class="bullet">-</span> <span class="string">TZ=Asia/Shanghai</span></span><br><span class="line">        <span class="attr">volumes:</span></span><br><span class="line">            <span class="bullet">-</span> <span class="string">&#x27;./gotify_data:/app/data&#x27;</span></span><br></pre></td></tr></table></figure><p>然后执行 <code>docker compose up -d</code>或者<code>docker-compose up -d</code>。</p><p><strong>也可以使用我之前推荐的Dockge部署</strong><br>打开<code>Dockge</code>面板 -&gt; <code>创建堆栈</code> -&gt; 设置<code>堆栈</code>名称 -&gt; 粘贴<code>compose</code>代码 -&gt; 30秒<code>启动</code>成功！<br><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20260111134740516.png" alt="image.png"><br><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20260111134901370.png" alt="image.png"></p><p><strong>搞定！</strong></p><p>打开浏览器访问 <code>http://你的IP:8080</code>，登录后台，你就拥有了一个私有的推送中心。如果无法打开前台，请检查防火墙相关配置。<br><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20260111134921721.png" alt="image.png"><br>用户名：admin<br>密码：compose里面设置的GOTIFY_DEFAULTUSER_PASS对应的值</p><p>在首页，点击 app，然后新建一个 APP，记好 token，这个是我们后续重要的凭证。<br><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20260111194606919.png" alt="image.png"><br>到这一步，gotify-server 的基础配置就已经完成了。</p><blockquote><p><strong>💡 温馨提示</strong></p><p>NAS部署，如果你想在外网也能收到推送，根据我之前的内网穿透教程进行设置，这里不再赘述。服务器部署，推荐使用OpenResty Manager进行配置（推荐配置 SSL 证书，更安全）。</p></blockquote><h3 id="03-📱-手机端体验：省电到令人发指"><a href="#03-📱-手机端体验：省电到令人发指" class="headerlink" title="03 📱 手机端体验：省电到令人发指"></a>03 📱 手机端体验：省电到令人发指</h3><p>服务端搭好了，手机端怎么收？</p><p>直接去<strong>Google play商店</strong>或者 <strong>GitHub</strong> 下载 Gotify 的安卓 APP。</p><p>GitHub地址：<a href="https://github.com/gotify/android/releases">https://github.com/gotify/android/releases</a><br><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20260111195326804.png" alt="image.png"></p><p>我们将这个 apk 下载好，在要接收消息的 android 手机上安装即可。安装包仅仅 6.75MB</p><p>如果不能下载，可以通过网盘分享的文件：Gotify.apk<br>链接: <a href="https://pan.baidu.com/s/16Z3tLCDyu5Ys-kJJ5MsSlQ?pwd=hkve">https://pan.baidu.com/s/16Z3tLCDyu5Ys-kJJ5MsSlQ?pwd=hkve</a> 提取码: hkve</p><p>安装好后启动 app，我们输入对应的 server 地址，以及用户名和密码，然后登录就行<br><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20260111140629471.png" alt="d852abe816b783ec39c139941607c774.jpg"><br>到这一步，我们要接收消息的客户端也安装好了。</p><p>很多同学担心自建推送会<strong>耗电</strong>。</p><p>实测下来，Gotify 的 APP 非常克制。因为它保持的是一个单一的长连接（WebSocket），不需要频繁唤醒系统。</p><p><strong>在电池优化里把它设为“无限制”，它就能安安静静地在后台待机，耗电量几乎可以忽略不计。</strong></p><h3 id="04-🔔-万物皆可推-解锁三个硬核场景"><a href="#04-🔔-万物皆可推-解锁三个硬核场景" class="headerlink" title="04 🔔 万物皆可推 (解锁三个硬核场景)"></a>04 🔔 万物皆可推 (解锁三个硬核场景)</h3><p>服务跑起来了，怎么用呢？</p><p>Gotify 的逻辑简单到令人发指。它不需要你会写复杂的代码，只要能发 HTTP 请求的地方，就能用它。</p><p>这里分享三个我最常用的场景：</p><p><strong>场景一：NAS 下载任务通知 🎬</strong> 我是极空间用户，以前下载任务完成了不知道。现在写个简单的脚本，下载完自动发一条 Gotify 消息：</p><blockquote><p>“老板，电影下好了，回家就能看。”</p></blockquote><p><strong>场景二：服务器状态报警 🚨</strong> 利用简单的 curl 命令，配合监控脚本。 CPU 占用超过 90%？磁盘空间不足？SSH 有人尝试暴力破解？ 手机直接弹窗震动，优先级设为 High（高），半夜都能把你叫醒处理故障。</p><p><strong>场景三：库存与价格监控 📉</strong> 如果你有写爬虫监控显卡库存、机票价格的习惯，Gotify 是最好的通知渠道。因为它延迟极低，抢购的时候快人一步。</p><p>这是发消息的命令，简单吧？👇<br><strong>1. Curl (命令行党)</strong></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 替换你的 URL 和 Token</span></span><br><span class="line">curl <span class="string">&quot;https://push.example.com/message?token=&lt;你的Token&gt;&quot;</span> \</span><br><span class="line">    -F <span class="string">&quot;title=报警&quot;</span> \</span><br><span class="line">    -F <span class="string">&quot;message=服务器挂啦！&quot;</span> \</span><br><span class="line">    -F <span class="string">&quot;priority=5&quot;</span></span><br></pre></td></tr></table></figure><p> <strong>Python (脚本党)</strong> 如果你在写监控脚本，用 <code>requests</code> 库最方便：</p><p> </p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> requests <span class="comment">#pip install requests</span></span><br><span class="line">resp = requests.post(<span class="string">&#x27;http://push.example.com/message?token=&lt;apptoken&gt;&#x27;</span>, json=&#123; <span class="string">&quot;message&quot;</span>: <span class="string">&quot;Well hello there.&quot;</span>, <span class="string">&quot;priority&quot;</span>: <span class="number">2</span>, <span class="string">&quot;title&quot;</span>: <span class="string">&quot;This is my title&quot;</span> &#125;)</span><br></pre></td></tr></table></figure><p> 将对应的域名，token，以及想发送的标题，内容都替换成自己的即可。<strong>这里要注意的是 token 是 app 的 token，而不是 client 的 token</strong> 发送成功之后，app 内就会收到最新的消息，而且也会收到对应的消息 push。<br> <img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20260111200810278.png" alt="120d44582011631a0271c8c8dbba70e5.jpg"><br>服务端也会收到发送的消息<br> <img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20260111200756926.png" alt="image.png"></p><h3 id="05-✨-进阶玩法：Markdown-与图片"><a href="#05-✨-进阶玩法：Markdown-与图片" class="headerlink" title="05 ✨ 进阶玩法：Markdown 与图片"></a>05 ✨ 进阶玩法：Markdown 与图片</h3><p>虽然是后端工具，但 Gotify 的体验一点都不含糊。</p><p>最让我惊喜的是，它支持 <strong>Markdown</strong> 语法。</p><p>推过来的消息不仅可以是纯文本，还可以带粗体、斜体，甚至可以直接在通知里显示图片。<br>只需在发送请求时指定 <code>extras</code> 参数，告诉客户端“这是一段 Markdown”，就能搞定：<br><strong>1. Curl (命令行党)</strong></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 发送一张带 Markdown 格式图片的通知</span></span><br><span class="line">curl -X POST <span class="string">&quot;https://push.example.com/message?token=&lt;你的Token&gt;&quot;</span> \</span><br><span class="line">  -H <span class="string">&quot;Content-Type: application/json&quot;</span> \</span><br><span class="line">  -d <span class="string">&#x27;&#123;</span></span><br><span class="line"><span class="string">    &quot;message&quot;: &quot;![门铃抓拍](https://example.com/snapshot.jpg)\n\n**⚠️ 有人按门铃**\n*请及时查看监控*&quot;,</span></span><br><span class="line"><span class="string">    &quot;priority&quot;: 8,</span></span><br><span class="line"><span class="string">    &quot;extras&quot;: &#123;</span></span><br><span class="line"><span class="string">      &quot;client::display&quot;: &#123;</span></span><br><span class="line"><span class="string">        &quot;contentType&quot;: &quot;text/markdown&quot;</span></span><br><span class="line"><span class="string">      &#125;</span></span><br><span class="line"><span class="string">    &#125;</span></span><br><span class="line"><span class="string">  &#125;&#x27;</span></span><br></pre></td></tr></table></figure><p><strong>Python (脚本党)</strong> 如果你在写监控脚本，用 <code>requests</code> 库最方便：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> requests</span><br><span class="line"></span><br><span class="line">url = <span class="string">&quot;https://push.example.com/message?token=&lt;你的Token&gt;&quot;</span></span><br><span class="line">payload = &#123;</span><br><span class="line">    <span class="string">&quot;message&quot;</span>: <span class="string">&quot;![每日报表](https://example.com/chart.png)\n\n**📊 今日数据汇总**\nCPU负载: `35%`&quot;</span>,</span><br><span class="line">    <span class="string">&quot;priority&quot;</span>: <span class="number">5</span>,</span><br><span class="line">    <span class="string">&quot;extras&quot;</span>: &#123;</span><br><span class="line">        <span class="string">&quot;client::display&quot;</span>: &#123;</span><br><span class="line">            <span class="string">&quot;contentType&quot;</span>: <span class="string">&quot;text/markdown&quot;</span></span><br><span class="line">        &#125;</span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br><span class="line">requests.post(url, json=payload)</span><br></pre></td></tr></table></figure><p>想象一下，你家的安防摄像头检测到有人移动，直接截个图，通过 Gotify 推送到你手机通知栏上，不用点开 App 就能看到是谁在门口。<br><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20260111214014863.png" alt="b9490cac7e99b94c7c11de8962b9b36a.jpg"><br><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20260111214337786.png" alt="image.png"></p><p><strong>这就是顶级极客的体验。</strong></p><h3 id="写在最后"><a href="#写在最后" class="headerlink" title="写在最后"></a>写在最后</h3><p>在这个大厂把持流量、APP 越来越臃肿的时代，Gotify 是一股清流。</p><p>它不通过微信，不通过谷歌，就在你自己的设备之间，搭起了一座桥。</p><p><strong>即使断了外网，只要在同一个局域网下，它依然能工作。</strong></p><p>如果你也受够了各种第三方推送的限制和不确定性，不妨花个十分钟，搭建一个属于自己的 Gotify。</p><p>那种“我的消息我做主”的自由，试过就回不去了。</p><p>你平时都在用什么方式接收服务器或脚本的通知？Server酱？Telegram？还是直接硬抗？评论区来交流一下避坑指南！</p><h2 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h2><p>好了，以上就是今天给大家分享的内容，我是爱分享的小明同学，如果今天的内容对你有帮助请记得收藏，顺便点点关注，咱们下期再见！谢谢大家~</p>]]></content>
    
    
    <summary type="html">使用 Docker 自建 Gotify 安卓消息推送服务，并接入脚本与自动化通知。</summary>
    
    
    
    <category term="自建服务" scheme="https://xiaomingclassmate.com/categories/%E8%87%AA%E5%BB%BA%E6%9C%8D%E5%8A%A1/"/>
    
    
    <category term="Gotify" scheme="https://xiaomingclassmate.com/tags/Gotify/"/>
    
    <category term="安卓推送" scheme="https://xiaomingclassmate.com/tags/%E5%AE%89%E5%8D%93%E6%8E%A8%E9%80%81/"/>
    
    <category term="自建服务" scheme="https://xiaomingclassmate.com/tags/%E8%87%AA%E5%BB%BA%E6%9C%8D%E5%8A%A1/"/>
    
  </entry>
  
  <entry>
    <title>告别Nginx“配置地狱”！OpenResty Manager：可视化+高性能+安全，你的Web服务“管家”！</title>
    <link href="https://xiaomingclassmate.com/posts/17771/"/>
    <id>https://xiaomingclassmate.com/posts/17771/</id>
    <published>2025-09-30T14:08:10.000Z</published>
    <updated>2026-11-08T12:57:05.247Z</updated>
    
    <content type="html"><![CDATA[<p>OpenResty 基于 Nginx，并通过 Lua 扩展出更丰富的 Web 能力。功能很强，但直接维护配置文件对新手并不友好。</p><p><strong>OpenResty Manager</strong> 为 OpenResty 提供了现代化 Web 管理界面，可以通过可视化方式配置反向代理、证书、应用和站点。</p><p><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20250928215524245.png" alt="OpenResty Manager"></p><p>项目地址：<a href="https://github.com/Safe3/openresty-manager">https://github.com/Safe3/openresty-manager</a></p><blockquote><p><strong>版本提示：</strong> 本文截图和命令来自 2025 年 9 月。管理界面、功能划分和版本权益可能变化，请以项目当前文档为准。远程安装脚本执行前应先查看内容。</p></blockquote><h2 id="一、OpenResty-Manager-适合谁"><a href="#一、OpenResty-Manager-适合谁" class="headerlink" title="一、OpenResty Manager 适合谁"></a>一、OpenResty Manager 适合谁</h2><ul><li>不想手写复杂 Nginx 配置的个人站长；</li><li>需要快速配置 HTTPS 和反向代理的开发者；</li><li>希望统一管理多个 Web 服务的 NAS 或小型服务器用户；</li><li>没有专职运维团队的小型项目。</li></ul><h2 id="二、部署前准备"><a href="#二、部署前准备" class="headerlink" title="二、部署前准备"></a>二、部署前准备</h2><ul><li>一台 Linux 云服务器或 NAS；</li><li>已安装 Docker 时可直接使用容器版；</li><li>云服务器安全组放行 <code>80</code>、<code>443</code>；</li><li>管理端口 <code>34567</code> 建议只对可信 IP 开放；</li><li>如需域名访问，提前把 DNS 指向服务器。</li></ul><h2 id="三、安装"><a href="#三、安装" class="headerlink" title="三、安装"></a>三、安装</h2><h3 id="主机版"><a href="#主机版" class="headerlink" title="主机版"></a>主机版</h3><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">sudo bash -c &quot;$(curl -fsSL https://om.uusec.com/cn/installer.sh)&quot;</span><br></pre></td></tr></table></figure><h3 id="容器版（推荐）"><a href="#容器版（推荐）" class="headerlink" title="容器版（推荐）"></a>容器版（推荐）</h3><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">sudo bash -c &quot;$(curl -fsSL https://om.uusec.com/cn/docker_installer.sh)&quot;</span><br></pre></td></tr></table></figure><p>安装完成后，可通过以下命令管理容器：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">bash /opt/om/om.sh</span><br></pre></td></tr></table></figure><p>如果系统没有 <code>sudo</code>：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">apt update &amp;&amp; apt install -y <span class="built_in">sudo</span></span><br></pre></td></tr></table></figure><p>本文使用 Debian 12 演示。安装脚本在缺少 Docker 时会自动安装 Docker。</p><p><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20250928220443158.png" alt="执行容器安装脚本"></p><p><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20250928220659898.png" alt="安装过程"></p><p>检查容器状态：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">docker ps</span><br></pre></td></tr></table></figure><p><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20250928220935636.png" alt="查看 OpenResty Manager 容器"></p><h2 id="四、登录管理后台"><a href="#四、登录管理后台" class="headerlink" title="四、登录管理后台"></a>四、登录管理后台</h2><p>访问：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">https://服务器IP:34567</span><br></pre></td></tr></table></figure><p>默认用户名为 <code>admin</code>。默认密码请以首次登录页面或官方当前文档为准，不要继续使用公开示例密码。登录后立即修改密码。</p><blockquote><p><strong>安全提示：</strong> <code>34567</code> 是管理入口，不建议直接对全网开放。优先使用防火墙白名单、VPN 或 Cloudflare Access 限制访问。</p></blockquote><p><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20250928221041748.png" alt="登录管理后台"></p><p><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20250928221318049.png" alt="进入管理界面"></p><p><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20250928221553150.png" alt="修改管理员信息"></p><p><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20250928221630900.png" alt="管理面板概览"></p><h2 id="五、申请-SSL-证书"><a href="#五、申请-SSL-证书" class="headerlink" title="五、申请 SSL 证书"></a>五、申请 SSL 证书</h2><p>先把域名的 A 或 CNAME 记录指向 OpenResty Manager 所在服务器。</p><p>进入证书管理，选择申请 Let’s Encrypt 免费证书，或上传已有证书。</p><p><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20250928235832890.png" alt="配置域名解析"></p><p><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20250929000031019.png" alt="申请或上传证书"></p><h2 id="六、安装应用"><a href="#六、安装应用" class="headerlink" title="六、安装应用"></a>六、安装应用</h2><p>进入应用商店，可以选择一键安装 WordPress 等应用。</p><p><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20250928234505699.png" alt="应用商店"></p><h2 id="七、配置上游和站点"><a href="#七、配置上游和站点" class="headerlink" title="七、配置上游和站点"></a>七、配置上游和站点</h2><h3 id="添加上游"><a href="#添加上游" class="headerlink" title="添加上游"></a>添加上游</h3><p>进入上游管理，为应用或服务添加后端地址，并可按需配置负载均衡。</p><p><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20250928235209119.png" alt="添加上游"></p><h3 id="新建站点"><a href="#新建站点" class="headerlink" title="新建站点"></a>新建站点</h3><p>进入站点管理，点击“新建站点”，填写域名、证书和上游。</p><p><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20250929000439746.png" alt="新建站点"></p><h3 id="验证访问"><a href="#验证访问" class="headerlink" title="验证访问"></a>验证访问</h3><p>保存后访问站点域名，确认页面和 HTTPS 正常。</p><p><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20250929000552270.png" alt="站点访问成功"></p><h2 id="八、高级功能"><a href="#八、高级功能" class="headerlink" title="八、高级功能"></a>八、高级功能</h2><p>部分节点管理、节点分组和 Web 安全能力可能需要专业版。使用前先确认当前版本的授权范围和价格。</p><p><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20250929230442454.png" alt="高级功能入口"></p><p><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20250929232150145.png" alt="安全功能示例"></p><h2 id="九、上线前的安全清单"><a href="#九、上线前的安全清单" class="headerlink" title="九、上线前的安全清单"></a>九、上线前的安全清单</h2><ol><li>修改默认管理员密码；</li><li>限制 <code>34567</code> 管理端口；</li><li>只开放 <code>80</code>、<code>443</code> 等必要业务端口；</li><li>定期备份证书、站点和容器数据；</li><li>固定镜像版本，升级前查看版本说明；</li><li>远程安装脚本先审查，再执行。</li></ol><h2 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h2><p>OpenResty Manager 把证书、上游、站点和反向代理配置集中到可视化界面中，适合不想反复手写 Nginx 文件的用户。它降低了操作门槛，但管理端口、管理员密码和容器升级仍然需要认真维护。</p>]]></content>
    
    
    <summary type="html">OpenResty Manager 部署教程：使用 Docker 安装可视化管理面板，配置 SSL、应用、上游和站点，并说明管理端口与默认密码安全。</summary>
    
    
    
    <category term="自建服务" scheme="https://xiaomingclassmate.com/categories/%E8%87%AA%E5%BB%BA%E6%9C%8D%E5%8A%A1/"/>
    
    
    <category term="Nginx" scheme="https://xiaomingclassmate.com/tags/Nginx/"/>
    
    <category term="反向代理" scheme="https://xiaomingclassmate.com/tags/%E5%8F%8D%E5%90%91%E4%BB%A3%E7%90%86/"/>
    
    <category term="OpenResty Manager" scheme="https://xiaomingclassmate.com/tags/OpenResty-Manager/"/>
    
    <category term="OpenResty" scheme="https://xiaomingclassmate.com/tags/OpenResty/"/>
    
    <category term="Web服务" scheme="https://xiaomingclassmate.com/tags/Web%E6%9C%8D%E5%8A%A1/"/>
    
  </entry>
  
  <entry>
    <title>内网穿透系列（六）：你的服务器，再也不是“小透明”了！解锁“节点小宝”的神奇力量！</title>
    <link href="https://xiaomingclassmate.com/posts/18881/"/>
    <id>https://xiaomingclassmate.com/posts/18881/</id>
    <published>2025-09-23T16:29:39.000Z</published>
    <updated>2026-11-08T12:57:00.191Z</updated>
    
    <content type="html"><![CDATA[<p>前面几期介绍了 frp、Cloudflare Tunnel、ZeroNews 和 EasyTier。如果你既想快速穿透，又不想自己维护公网服务器，可以了解 <strong>节点小宝</strong>。</p><p>它提供客户端和服务端节点，配置重点是选择设备、填写内网地址和设置外网访问入口，不需要手写隧道配置文件。</p><p><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20250923232237840.png" alt="节点小宝"></p><blockquote><p><strong>版本提示：</strong> 本文截图和界面来自 2025 年 9 月。节点小宝的客户端、套餐、免费额度和功能可能变化，请以官方当前说明为准。</p></blockquote><h2 id="一、适合哪些场景"><a href="#一、适合哪些场景" class="headerlink" title="一、适合哪些场景"></a>一、适合哪些场景</h2><ul><li>在外访问家中电脑或 NAS；</li><li>临时给客户展示本地 Web 项目；</li><li>访问自建私有云盘和知识库；</li><li>远程管理部分智能设备；</li><li>不想配置路由器端口映射。</li></ul><h2 id="二、主要特点"><a href="#二、主要特点" class="headerlink" title="二、主要特点"></a>二、主要特点</h2><ul><li>注册账号、安装客户端、添加映射即可使用；</li><li>支持 Windows、Linux、macOS 等平台；</li><li>由服务商维护中转节点；</li><li>部分版本支持异地组网；</li><li>通常提供基础免费额度。</li></ul><h2 id="三、注册并安装客户端"><a href="#三、注册并安装客户端" class="headerlink" title="三、注册并安装客户端"></a>三、注册并安装客户端</h2><p>从官方渠道注册账号并进入控制台。</p><p><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20250923232509478.png" alt="注册并登录"></p><p>根据设备类型下载客户端。</p><p><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20250923233219934.png" alt="下载客户端"></p><p>本文以极空间 NAS 演示。安装后打开节点小宝并登录绑定。</p><p><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20250923235829410.png" alt="在 NAS 上登录绑定"></p><h2 id="四、配置内网穿透"><a href="#四、配置内网穿透" class="headerlink" title="四、配置内网穿透"></a>四、配置内网穿透</h2><p>进入控制台配置映射：</p><ul><li>中转设备：选择要作为访问入口的设备；</li><li>内网 IP 地址：填写中转设备能够访问的 <code>IP:PORT</code>；</li><li>外网域名：由节点小宝提供的公网访问入口；</li><li>备注名称：填写容易识别的服务名称；</li><li>访问密码：非可信来源访问时增加一层密码保护。</li></ul><p><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20250924000621908.png" alt="填写穿透配置"></p><p><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20250924001639123.png" alt="确认映射配置"></p><h2 id="五、验证访问"><a href="#五、验证访问" class="headerlink" title="五、验证访问"></a>五、验证访问</h2><p>保存后，在浏览器打开生成的外网域名。</p><p><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20250924001603568.png" alt="通过外网域名访问"></p><p>如果页面能够正常打开，说明映射已经生效。</p><h2 id="六、异地组网"><a href="#六、异地组网" class="headerlink" title="六、异地组网"></a>六、异地组网</h2><p>节点小宝还提供异地组网能力，可用于让多个设备通过虚拟网络互相访问。具体步骤请以官方文档为准。</p><p><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20250924002246414.png" alt="异地组网功能"></p><p><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20250924002333115.png" alt="组网节点管理"></p><h2 id="七、安全与使用建议"><a href="#七、安全与使用建议" class="headerlink" title="七、安全与使用建议"></a>七、安全与使用建议</h2><ol><li>账号使用强密码，并定期更换；</li><li>只穿透确实需要公开的服务；</li><li>为管理后台、NAS 和应用设置独立强密码；</li><li>优先启用访问密码或额外身份验证；</li><li>关注免费套餐的带宽、流量和连接数限制；</li><li>不把数据库、SSH、远程桌面等高风险服务直接暴露给所有人。</li></ol><h2 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h2><p>节点小宝适合不想维护 frp 服务端、希望快速完成配置的用户。它把中转节点和客户端管理交给平台，降低了部署成本。代价是依赖第三方服务，速度、免费额度和安全策略都需要按官方当前规则确认。</p>]]></content>
    
    
    <summary type="html">节点小宝内网穿透教程：注册账号、安装客户端、配置中转设备、内网地址和访问密码，实现 NAS 与本地服务的公网访问。</summary>
    
    
    
    <category term="自建服务" scheme="https://xiaomingclassmate.com/categories/%E8%87%AA%E5%BB%BA%E6%9C%8D%E5%8A%A1/"/>
    
    
    <category term="内网穿透" scheme="https://xiaomingclassmate.com/tags/%E5%86%85%E7%BD%91%E7%A9%BF%E9%80%8F/"/>
    
    <category term="NAS" scheme="https://xiaomingclassmate.com/tags/NAS/"/>
    
    <category term="远程访问" scheme="https://xiaomingclassmate.com/tags/%E8%BF%9C%E7%A8%8B%E8%AE%BF%E9%97%AE/"/>
    
    <category term="节点小宝" scheme="https://xiaomingclassmate.com/tags/%E8%8A%82%E7%82%B9%E5%B0%8F%E5%AE%9D/"/>
    
  </entry>
  
  <entry>
    <title>内网穿透系列（五）：EasyTier异地组网，让你的设备“近在咫尺”！</title>
    <link href="https://xiaomingclassmate.com/posts/15551/"/>
    <id>https://xiaomingclassmate.com/posts/15551/</id>
    <published>2025-09-13T12:50:39.000Z</published>
    <updated>2026-11-08T12:56:27.859Z</updated>
    
    <content type="html"><![CDATA[<p>想在外面访问家里的 NAS，或者让不同地点的设备像在同一个局域网里工作？<strong>EasyTier</strong> 可以把 Windows、Linux、macOS、手机和 NAS 组成一个虚拟局域网。</p><p><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20250911000428114.png" alt="EasyTier"></p><p>项目地址：<a href="https://github.com/EasyTier/EasyTier">https://github.com/EasyTier/EasyTier</a></p><blockquote><p><strong>版本提示：</strong> 本文截图和命令来自 2025 年 9 月。EasyTier 更新较快，请使用官方最新稳定版，并按当前文档调整参数。</p></blockquote><h2 id="一、异地组网适合什么场景"><a href="#一、异地组网适合什么场景" class="headerlink" title="一、异地组网适合什么场景"></a>一、异地组网适合什么场景</h2><ul><li>在外访问家里 NAS、摄像头或管理面板；</li><li>多地设备访问共享文件；</li><li>分支机构连接内部系统；</li><li>和朋友组建虚拟局域网玩联机游戏。</li></ul><p>传统 VPN 方案通常需要公网 IP 和复杂路由配置。EasyTier 可以通过共享节点协调连接，并在条件允许时建立点对点通道。</p><h2 id="二、EasyTier-的工作方式"><a href="#二、EasyTier-的工作方式" class="headerlink" title="二、EasyTier 的工作方式"></a>二、EasyTier 的工作方式</h2><p>可以把 EasyTier 理解成给每台设备分配一张“虚拟身份证”：</p><ol><li>所有节点连接到同一个网络；</li><li>每个节点获得一个虚拟 IP；</li><li>节点之间尽量建立点对点连接；</li><li>P2P 不通时，通过公共节点或自建节点中转；</li><li>传输使用加密通信。</li></ol><h2 id="三、准备节点"><a href="#三、准备节点" class="headerlink" title="三、准备节点"></a>三、准备节点</h2><p>至少准备两台设备。可以使用公共共享节点，也可以自建节点。</p><p>如果自建共享节点，请参考官方文档：</p><p><a href="https://easytier.cn/guide/network/host-public-server.html">https://easytier.cn/guide/network/host-public-server.html</a></p><h2 id="四、下载客户端"><a href="#四、下载客户端" class="headerlink" title="四、下载客户端"></a>四、下载客户端</h2><p>从 GitHub Releases 或官网下载最新版本：</p><ul><li>GitHub：<a href="https://github.com/EasyTier/EasyTier/releases">https://github.com/EasyTier/EasyTier/releases</a></li><li>官网：<a href="https://easytier.cn/guide/download.html">https://easytier.cn/guide/download.html</a></li></ul><p><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20250908201123443.png" alt="GitHub Release"></p><p><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20250908203037221.png" alt="官网下载页"></p><p>本文示例包括 Windows GUI、极空间 NAS Docker 和手机客户端。</p><p><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20250909233133640.png" alt="准备多个节点"></p><h2 id="五、配置-Windows-GUI"><a href="#五、配置-Windows-GUI" class="headerlink" title="五、配置 Windows GUI"></a>五、配置 Windows GUI</h2><p>打开 EasyTier GUI，选择网络方式。如果使用自己的共享节点，点击“手动”。</p><p><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20250909234316569.png" alt="配置手动网络"></p><p>填写相同的网络名称和网络密码，然后点击“运行网络”。</p><p><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20250909234343668.png" alt="运行 EasyTier 网络"></p><h2 id="六、NAS-使用-Docker-Compose"><a href="#六、NAS-使用-Docker-Compose" class="headerlink" title="六、NAS 使用 Docker Compose"></a>六、NAS 使用 Docker Compose</h2><p>先创建数据目录：</p><p><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20250910002623519.png" alt="创建 Docker 目录"></p><p>打开 NAS 的 Docker&#x2F;Compose 页面：</p><p><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20250909235722341.png" alt="进入 Docker"></p><p>新增 Compose 项目：</p><p><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20250910003656435.png" alt="新增 Compose 项目"></p><p>示例配置：</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">services:</span></span><br><span class="line">  <span class="attr">watchtower:</span></span><br><span class="line">    <span class="attr">image:</span> <span class="string">containrrr/watchtower</span></span><br><span class="line">    <span class="attr">container_name:</span> <span class="string">watchtower</span></span><br><span class="line">    <span class="attr">restart:</span> <span class="string">unless-stopped</span></span><br><span class="line">    <span class="attr">environment:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">TZ=Asia/Shanghai</span></span><br><span class="line">    <span class="attr">volumes:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">/var/run/docker.sock:/var/run/docker.sock</span></span><br><span class="line">    <span class="attr">command:</span> <span class="string">--interval</span> <span class="number">3600</span> <span class="string">--cleanup</span> <span class="string">--label-enable</span></span><br><span class="line"></span><br><span class="line">  <span class="attr">easytier:</span></span><br><span class="line">    <span class="attr">image:</span> <span class="string">easytier/easytier:latest</span></span><br><span class="line">    <span class="attr">hostname:</span> <span class="string">easytier</span></span><br><span class="line">    <span class="attr">container_name:</span> <span class="string">easytier</span></span><br><span class="line">    <span class="attr">labels:</span></span><br><span class="line">      <span class="attr">com.centurylinklabs.watchtower.enable:</span> <span class="string">&#x27;true&#x27;</span></span><br><span class="line">    <span class="attr">restart:</span> <span class="string">unless-stopped</span></span><br><span class="line">    <span class="attr">network_mode:</span> <span class="string">host</span></span><br><span class="line">    <span class="attr">cap_add:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">NET_ADMIN</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">NET_RAW</span></span><br><span class="line">    <span class="attr">environment:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">TZ=Asia/Shanghai</span></span><br><span class="line">    <span class="attr">devices:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">/dev/net/tun:/dev/net/tun</span></span><br><span class="line">    <span class="attr">volumes:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">/your/path/easytier:/root</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">/etc/machine-id:/etc/machine-id:ro</span></span><br><span class="line">    <span class="attr">command:</span> <span class="string">-d</span> <span class="string">--network-name</span> <span class="string">你的网络名称</span> <span class="string">--network-secret</span> <span class="string">强密码</span> <span class="string">-p</span> <span class="string">tcp://public.easytier.cn:11010</span></span><br></pre></td></tr></table></figure><p>所有节点必须使用相同的网络名称和网络密码。不需要自动更新时，可以删除 <code>watchtower</code> 部分。</p><h2 id="七、手机加入网络"><a href="#七、手机加入网络" class="headerlink" title="七、手机加入网络"></a>七、手机加入网络</h2><p>安装 EasyTier APK，填写相同的网络名称和网络密码，然后运行网络。</p><p><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20250910234741360.png" alt="手机客户端配置"></p><h2 id="八、查看虚拟-IP"><a href="#八、查看虚拟-IP" class="headerlink" title="八、查看虚拟 IP"></a>八、查看虚拟 IP</h2><p>回到 GUI 界面，可以看到各节点分配的虚拟 IPv4 地址。</p><p><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20250910235130204.png" alt="查看组网节点"></p><p>也可以在设备上使用 <code>ipconfig</code> 或 <code>ifconfig</code> 查看 EasyTier 虚拟网卡。</p><h2 id="九、验证连通性"><a href="#九、验证连通性" class="headerlink" title="九、验证连通性"></a>九、验证连通性</h2><p>在任一节点上 Ping 其他节点：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">ping 10.126.126.1</span><br><span class="line">ping 10.126.126.2</span><br><span class="line">ping 10.126.126.3</span><br></pre></td></tr></table></figure><p>如果能 Ping 通，说明虚拟局域网已经建立。</p><p><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20250911010802726.png" alt="Ping 测试 1"></p><p><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20250911010827009.png" alt="Ping 测试 2"></p><p><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20250910003104533.png" alt="虚拟网卡测试"></p><p><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20250910004125818.png" alt="其他节点测试"></p><h2 id="十、远程访问内网服务"><a href="#十、远程访问内网服务" class="headerlink" title="十、远程访问内网服务"></a>十、远程访问内网服务</h2><p>通过“虚拟 IP + 服务端口”访问：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">http://10.126.126.2:5700</span><br></pre></td></tr></table></figure><p>例如访问 NAS 上的青龙面板：</p><p><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20250910004233506.png" alt="访问青龙面板"></p><p>访问其他 Docker 服务时，替换端口即可：</p><p><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20250910005155094.png" alt="访问其他服务"></p><p>手机也可以通过虚拟 IP 访问 NAS 服务：</p><p><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20250910235640332.png" alt="手机访问 NAS 服务"></p><h2 id="十一、安全建议"><a href="#十一、安全建议" class="headerlink" title="十一、安全建议"></a>十一、安全建议</h2><ol><li>网络密码使用长随机字符串；</li><li>不同用途可以拆分多个网络；</li><li>不需要自动更新时关闭 Watchtower，避免不可预期升级；</li><li>自建节点要限制访问并保持更新；</li><li>敏感服务仍需账号密码、访问控制或 VPN 策略。</li></ol><p>更多内容见 <a href="https://easytier.cn/">EasyTier 官方文档</a>。</p><h2 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h2><p>EasyTier 适合多设备互联和远程访问 NAS，配置比传统 VPN 更简单。部署完成后，优先检查虚拟 IP 连通性、网络密码强度和各节点服务本身的访问控制。</p>]]></content>
    
    
    <summary type="html">EasyTier 异地组网教程：下载客户端、配置 GUI 节点、使用 Docker Compose 部署 NAS 端，并通过虚拟 IP 远程访问内网服务。</summary>
    
    
    
    <category term="自建服务" scheme="https://xiaomingclassmate.com/categories/%E8%87%AA%E5%BB%BA%E6%9C%8D%E5%8A%A1/"/>
    
    
    <category term="EasyTier" scheme="https://xiaomingclassmate.com/tags/EasyTier/"/>
    
    <category term="异地组网" scheme="https://xiaomingclassmate.com/tags/%E5%BC%82%E5%9C%B0%E7%BB%84%E7%BD%91/"/>
    
    <category term="NAS" scheme="https://xiaomingclassmate.com/tags/NAS/"/>
    
    <category term="Docker" scheme="https://xiaomingclassmate.com/tags/Docker/"/>
    
    <category term="虚拟局域网" scheme="https://xiaomingclassmate.com/tags/%E8%99%9A%E6%8B%9F%E5%B1%80%E5%9F%9F%E7%BD%91/"/>
    
  </entry>
  
  <entry>
    <title>内网穿透系列（四）：内网穿透搞不定？试试 zeronews 零讯！简单到离谱！</title>
    <link href="https://xiaomingclassmate.com/posts/14441/"/>
    <id>https://xiaomingclassmate.com/posts/14441/</id>
    <published>2025-08-28T03:39:01.000Z</published>
    <updated>2026-11-08T12:57:23.175Z</updated>
    
    <content type="html"><![CDATA[<p>如果不想租云服务器、不想配置 frp，也不想开路由器端口，可以试试 <strong>ZeroNews 零讯</strong>。它在公网提供中转服务，内网设备运行 Agent 后即可映射服务。</p><p><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20250825214315380.png" alt="ZeroNews"></p><blockquote><p><strong>版本提示：</strong> 本文截图和界面来自 2025 年 8 月。ZeroNews 的套餐、域名格式、带宽和连接数限制可能变化，请以官网当前说明为准。</p></blockquote><h2 id="一、ZeroNews-的特点"><a href="#一、ZeroNews-的特点" class="headerlink" title="一、ZeroNews 的特点"></a>一、ZeroNews 的特点</h2><ul><li>客户端安装后配置域名、协议、内网地址和端口；</li><li>不需要公网 IP，也不需要修改路由器端口映射；</li><li>自动提供 HTTPS 域名；</li><li>支持 HTTP&#x2F;HTTPS&#x2F;TCP 等常见场景；</li><li>免费额度可满足轻量个人用途。</li></ul><h2 id="二、准备工作"><a href="#二、准备工作" class="headerlink" title="二、准备工作"></a>二、准备工作</h2><ol><li>注册 ZeroNews 账号；</li><li>记录授权码 Token；</li><li>确认内网服务的 IP 和端口；</li><li>在内网设备上安装 ZeroNews Agent。</li></ol><p>官网：<a href="https://www.zeronews.cc/">https://www.zeronews.cc/</a></p><p><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20250828103138663.png" alt="获取 Token"></p><h2 id="三、安装-Agent"><a href="#三、安装-Agent" class="headerlink" title="三、安装 Agent"></a>三、安装 Agent</h2><p>本文以极空间 NAS 演示。根据设备类型选择对应客户端或 Docker 方式安装。</p><p><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20250825231635169.png" alt="选择设备类型"></p><p>官方文档见 <a href="https://docs.zeronews.cc/jkjnas">https://docs.zeronews.cc/jkjnas</a>。</p><p><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20250825231555936.png" alt="按照文档安装 Agent"></p><p>安装成功后，ZeroNews 控制台应显示 Agent 已上线。</p><p><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20250828102957851.png" alt="Agent 上线"></p><h2 id="四、添加域名端口"><a href="#四、添加域名端口" class="headerlink" title="四、添加域名端口"></a>四、添加域名端口</h2><p>进入“域名端口”，添加一个公网访问入口：</p><ol><li>自定义域名前缀；</li><li>选择协议，例如 HTTPS；</li><li>选择端口；</li><li>确认创建。</li></ol><p><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20250828105448170.png" alt="添加域名"></p><p><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20250828105516389.png" alt="配置域名端口"></p><h2 id="五、配置映射"><a href="#五、配置映射" class="headerlink" title="五、配置映射"></a>五、配置映射</h2><p>创建映射时需要填写：</p><ul><li>Agent：选择刚才上线的设备；</li><li>协议：例如 HTTPS；</li><li>域名：选择上一步创建的域名；</li><li>带宽：按套餐和需求填写；</li><li>内网地址：如果服务在 Agent 所在主机，可用 <code>127.0.0.1</code>；服务在其他主机时填写真实内网 IP；</li><li>端口：内网服务端口，例如 <code>5700</code>。</li></ul><p><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20250828105723767.png" alt="配置内网服务映射"></p><p>保存后，ZeroNews 会显示公网访问地址。</p><p><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20250828105909664.png" alt="查看公网地址"></p><p>浏览器访问该地址即可打开内网服务。</p><p><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20250828110003690.png" alt="访问内网服务"></p><h2 id="六、常见用途"><a href="#六、常见用途" class="headerlink" title="六、常见用途"></a>六、常见用途</h2><ul><li>远程访问 NAS 管理页面；</li><li>临时演示本地开发服务；</li><li>访问家庭内网的 Web 应用；</li><li>映射远程桌面或 TCP 服务，但需要额外注意安全。</li></ul><h2 id="七、安全提醒"><a href="#七、安全提醒" class="headerlink" title="七、安全提醒"></a>七、安全提醒</h2><p>内网穿透会把服务暴露到公网，务必注意：</p><ol><li>被映射服务使用强密码和最新版本；</li><li>非必要不暴露数据库、SSH、远程桌面；</li><li>只映射需要的服务端口；</li><li>关注免费版带宽、连接数和域名限制；</li><li>敏感服务建议叠加访问控制或 VPN。</li></ol><h2 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h2><p>ZeroNews 适合临时需求和个人轻量项目，配置比 frp 和 Cloudflare Tunnel 更简单。它省去了公网服务器和证书配置，但你需要在速度、免费额度和安全暴露之间做好取舍。</p>]]></content>
    
    
    <summary type="html">ZeroNews 内网穿透实战教程：获取 Token、安装 Agent、配置域名端口和映射，实现 HTTPS 访问内网服务，并说明安全与限制。</summary>
    
    
    
    <category term="自建服务" scheme="https://xiaomingclassmate.com/categories/%E8%87%AA%E5%BB%BA%E6%9C%8D%E5%8A%A1/"/>
    
    
    <category term="内网穿透" scheme="https://xiaomingclassmate.com/tags/%E5%86%85%E7%BD%91%E7%A9%BF%E9%80%8F/"/>
    
    <category term="NAS" scheme="https://xiaomingclassmate.com/tags/NAS/"/>
    
    <category term="远程访问" scheme="https://xiaomingclassmate.com/tags/%E8%BF%9C%E7%A8%8B%E8%AE%BF%E9%97%AE/"/>
    
    <category term="ZeroNews" scheme="https://xiaomingclassmate.com/tags/ZeroNews/"/>
    
  </entry>
  
  <entry>
    <title>内网穿透系列（三）：告别端口映射！Cloudflare Tunnel让你“零配置”安全回家！</title>
    <link href="https://xiaomingclassmate.com/posts/13213/"/>
    <id>https://xiaomingclassmate.com/posts/13213/</id>
    <published>2025-08-24T16:21:05.000Z</published>
    <updated>2026-11-08T12:56:20.635Z</updated>
    
    <content type="html"><![CDATA[<p>如果家里没有公网 IP，也不想在路由器上开端口，<strong>Cloudflare Tunnel</strong> 是很省心的方案。它通过 <code>cloudflared</code> 主动连接 Cloudflare，把公网请求安全转发到内网服务。</p><p><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20250824205309286.png" alt="Cloudflare Tunnel"></p><blockquote><p><strong>版本提示：</strong> 本文截图和界面来自 2025 年 8 月。Cloudflare Zero Trust 控制台入口和功能名称可能变化，请以当前控制台和官方文档为准。</p></blockquote><h2 id="一、适用场景"><a href="#一、适用场景" class="headerlink" title="一、适用场景"></a>一、适用场景</h2><p>Cloudflare Tunnel 适合：</p><ul><li>无公网 IP 的家庭宽带；</li><li>不想暴露路由器端口的场景；</li><li>需要域名和 HTTPS 的 NAS、管理面板或个人网站；</li><li>想利用 Cloudflare 安全防护的个人项目。</li></ul><h2 id="二、为什么它更安全"><a href="#二、为什么它更安全" class="headerlink" title="二、为什么它更安全"></a>二、为什么它更安全</h2><p>传统端口映射会把端口暴露给公网扫描。Cloudflare Tunnel 的思路相反：</p><ol><li>内网设备运行 <code>cloudflared</code>；</li><li><code>cloudflared</code> 主动向 Cloudflare 建立加密出站连接；</li><li>外网请求先进入 Cloudflare；</li><li>Cloudflare 通过已有隧道转发到内网服务；</li><li>路由器无需开放入站端口。</li></ol><p>这样能减少端口暴露，并额外获得 Cloudflare 的防护能力。</p><h2 id="三、准备工作"><a href="#三、准备工作" class="headerlink" title="三、准备工作"></a>三、准备工作</h2><ul><li>Cloudflare 账号；</li><li>已托管在 Cloudflare 的域名；</li><li>一台能访问外网的内网设备；</li><li>内网服务的 IP 和端口。</li></ul><h2 id="四、创建-Tunnel"><a href="#四、创建-Tunnel" class="headerlink" title="四、创建 Tunnel"></a>四、创建 Tunnel</h2><p>进入 Cloudflare 控制台，找到 Zero Trust，然后进入网络相关页面。</p><p><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20250824205740004.png" alt="进入 Zero Trust"></p><p>选择 Tunnels：</p><p><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20250824210004136.png" alt="进入 Tunnels"></p><p>点击添加隧道，选择 Cloudflared：</p><p><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20250824210146217.png" alt="创建 Cloudflared Tunnel"></p><p>为 Tunnel 命名，例如 <code>home-services</code>：</p><p><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20250824210522464.png" alt="设置 Tunnel 名称"></p><h2 id="五、安装-cloudflared"><a href="#五、安装-cloudflared" class="headerlink" title="五、安装 cloudflared"></a>五、安装 cloudflared</h2><p>本文使用 Docker 部署。复制控制台给出的命令后，建议补充容器名、后台运行和重启策略：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">docker run \</span><br><span class="line">  --name cloudflared \</span><br><span class="line">  -d \</span><br><span class="line">  --restart unless-stopped \</span><br><span class="line">  cloudflare/cloudflared:latest \</span><br><span class="line">  tunnel --no-autoupdate run --token 你的隧道令牌</span><br></pre></td></tr></table></figure><p>启动成功后，控制台会显示连接器已上线。</p><p><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20250824211915285.png" alt="cloudflared 连接成功"></p><h2 id="六、配置公共主机名"><a href="#六、配置公共主机名" class="headerlink" title="六、配置公共主机名"></a>六、配置公共主机名</h2><p>进入 Tunnel 的公共主机名配置页：</p><ul><li>Subdomain：填写子域名前缀；</li><li>Domain：选择 Cloudflare 托管域名；</li><li>Type：内网服务为 HTTP 时通常选择 <code>HTTP</code>；</li><li>URL：填写内网服务地址和端口，例如 <code>192.168.3.17:5700</code>。</li></ul><p><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20250824212853563.png" alt="配置公共主机名"></p><p><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20250824213921179.png" alt="填写内网服务地址"></p><p>一个 Tunnel 可以添加多个公共主机名，分别转发到不同内网服务。</p><p><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20250824214653519.png" alt="添加多个公共主机名"></p><h2 id="七、验证访问"><a href="#七、验证访问" class="headerlink" title="七、验证访问"></a>七、验证访问</h2><p>在浏览器访问配置的域名：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">https://nas.example.com</span><br></pre></td></tr></table></figure><p><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20250824214138962.png" alt="访问内网服务"></p><h2 id="八、安全建议"><a href="#八、安全建议" class="headerlink" title="八、安全建议"></a>八、安全建议</h2><ol><li>只把需要的服务加入 Tunnel；</li><li>管理后台启用 Cloudflare Access、登录验证或 IP 白名单；</li><li>不要用 Tunnel 暴露未升级、弱密码的服务；</li><li>定期检查 Tunnel 连接器和公共主机名；</li><li>隧道令牌不要提交到代码仓库。</li></ol><h2 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h2><p>Cloudflare Tunnel 适合不想开端口、没有公网 IP 的用户。它把域名、HTTPS 和安全防护整合在一起，比传统端口映射更省心。代价是流量会经过 Cloudflare，且控制台和策略需要按官方最新文档维护。</p>]]></content>
    
    
    <summary type="html">Cloudflare Tunnel 内网穿透教程：创建 Tunnel、部署 cloudflared、配置公共主机名，实现无公网 IP 和无端口映射的远程访问。</summary>
    
    
    
    <category term="自建服务" scheme="https://xiaomingclassmate.com/categories/%E8%87%AA%E5%BB%BA%E6%9C%8D%E5%8A%A1/"/>
    
    
    <category term="Cloudflare" scheme="https://xiaomingclassmate.com/tags/Cloudflare/"/>
    
    <category term="Cloudflare Tunnel" scheme="https://xiaomingclassmate.com/tags/Cloudflare-Tunnel/"/>
    
    <category term="cloudflared" scheme="https://xiaomingclassmate.com/tags/cloudflared/"/>
    
    <category term="内网穿透" scheme="https://xiaomingclassmate.com/tags/%E5%86%85%E7%BD%91%E7%A9%BF%E9%80%8F/"/>
    
    <category term="Zero Trust" scheme="https://xiaomingclassmate.com/tags/Zero-Trust/"/>
    
  </entry>
  
  <entry>
    <title>内网穿透系列（二）：告别黑窗口！frpc-desktop让内网穿透像点鼠标一样简单！</title>
    <link href="https://xiaomingclassmate.com/posts/12358/"/>
    <id>https://xiaomingclassmate.com/posts/12358/</id>
    <published>2025-08-12T04:12:49.000Z</published>
    <updated>2026-11-08T12:56:32.203Z</updated>
    
    <content type="html"><![CDATA[<p>frp 很强，但每次编辑 <code>frpc.toml</code>、执行命令行并不友好。<strong>frpc-desktop</strong> 提供 Windows、macOS 和 Linux 图形界面，把客户端配置变成表单操作。</p><p><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20250811112300404.png" alt="frpc-desktop"></p><p>项目地址：<a href="https://github.com/luckjiawei/frpc-desktop/releases">https://github.com/luckjiawei/frpc-desktop/releases</a></p><blockquote><p><strong>版本提示：</strong> 本文截图和版本来自 2025 年 8 月。请从 Release 页面下载当前最新稳定版，并保持客户端与 frps 版本不要相差过大。</p></blockquote><h2 id="一、为什么用-frpc-desktop"><a href="#一、为什么用-frpc-desktop" class="headerlink" title="一、为什么用 frpc-desktop"></a>一、为什么用 frpc-desktop</h2><ul><li>不需要手动编辑 <code>frpc.toml</code>；</li><li>代理配置可视化，修改和排错更直观；</li><li>支持多个代理同时管理；</li><li>可设置开机自启动；</li><li>支持常见 Windows、macOS、Linux 平台。</li></ul><h2 id="二、下载并启动"><a href="#二、下载并启动" class="headerlink" title="二、下载并启动"></a>二、下载并启动</h2><p>进入项目 Release 页面，根据系统选择安装版或便携版。Windows 常见包为 <code>Frpc-Desktop-Setup-xxx.exe</code> 或 <code>Frpc-Desktop-xxx-win.zip</code>。</p><p><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20250811113353211.png" alt="下载 frpc-desktop"></p><p>安装或解压后启动，界面如下：</p><p><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20250811115703980.png" alt="frpc-desktop 主界面"></p><h2 id="三、下载-frp"><a href="#三、下载-frp" class="headerlink" title="三、下载 frp"></a>三、下载 frp</h2><p>点击左侧菜单中的下载功能，选择 frp 版本。也可以导入已经下载好的 frp。</p><p><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20250811120231534.png" alt="下载 frp"></p><p>如果 <code>frps</code> 已经部署在云服务器上，尽量使用相近版本，避免配置兼容性问题。</p><h2 id="四、配置服务器连接"><a href="#四、配置服务器连接" class="headerlink" title="四、配置服务器连接"></a>四、配置服务器连接</h2><p>点击左侧“齿轮”图标，选择 frp 版本，填写服务端信息：</p><ul><li>服务器地址：云服务器公网 IP；</li><li>服务器端口：<code>frps.toml</code> 中的 <code>bindPort</code>，默认示例为 <code>7000</code>；</li><li>认证令牌：与 <code>frps.toml</code> 中 <code>auth.token</code> 保持一致；</li><li>其他选项保持默认。</li></ul><p><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20250811121151388.png" alt="配置 frps 连接信息"></p><p>保存配置。</p><h2 id="五、添加代理"><a href="#五、添加代理" class="headerlink" title="五、添加代理"></a>五、添加代理</h2><p>进入“代理”页面，点击“添加代理”。</p><p><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20250811121323344.png" alt="进入代理配置"></p><p><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20250811125357680.png" alt="填写代理信息"></p><p>以穿透内网 Web 服务为例：</p><table><thead><tr><th>配置项</th><th align="right">示例值</th><th>说明</th></tr></thead><tbody><tr><td>代理名称</td><td align="right">青龙面板</td><td>自定义名称</td></tr><tr><td>类型</td><td align="right">TCP</td><td>常用于端口映射</td></tr><tr><td>内网地址</td><td align="right">192.168.3.17</td><td>NAS 或服务所在主机 IP</td></tr><tr><td>内网端口</td><td align="right">5700</td><td>本地服务端口</td></tr><tr><td>外网端口</td><td align="right">8098</td><td>云服务器上对外端口</td></tr></tbody></table><p><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20250811125915827.png" alt="保存代理配置"></p><h2 id="六、启动并验证"><a href="#六、启动并验证" class="headerlink" title="六、启动并验证"></a>六、启动并验证</h2><p>回到主界面，点击“启动”。代理状态显示已启动后，即可访问。</p><p><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20250811130147136.png" alt="启动 frpc 服务"></p><p><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20250811130218656.png" alt="代理已启动"></p><p>浏览器访问：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">http://云服务器公网IP:外网端口</span><br></pre></td></tr></table></figure><p><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20250811130545379.png" alt="访问内网服务"></p><p>其他常见玩法：</p><ul><li>TCP：远程桌面、SSH、NAS 管理页面；</li><li>UDP：DNS、游戏联机等场景；</li><li>多代理：同时映射多个内网服务；</li><li>开机自启动：在设置中开启。</li></ul><p><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20250811192207149.png" alt="更多代理配置"></p><h2 id="七、安全提醒"><a href="#七、安全提醒" class="headerlink" title="七、安全提醒"></a>七、安全提醒</h2><ol><li>不要把管理后台随意暴露到公网；</li><li>为 NAS、数据库和远程桌面设置强密码；</li><li>云服务器只放行需要的外网端口；</li><li>客户端令牌不要写入公开仓库或截图；</li><li>敏感服务建议再套一层 VPN 或访问控制。</li></ol><h2 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h2><p>frpc-desktop 适合不想频繁编辑 TOML 文件的用户。它把 frp 客户端变成了图形化配置工具，日常新增、启停代理更方便。真正需要重视的仍然是令牌安全、端口收敛和被穿透服务本身的防护。</p>]]></content>
    
    
    <summary type="html">frpc-desktop 图形化内网穿透教程：下载客户端、配置 frp 版本和服务器连接、添加 TCP 代理并启动内网服务。</summary>
    
    
    
    <category term="自建服务" scheme="https://xiaomingclassmate.com/categories/%E8%87%AA%E5%BB%BA%E6%9C%8D%E5%8A%A1/"/>
    
    
    <category term="内网穿透" scheme="https://xiaomingclassmate.com/tags/%E5%86%85%E7%BD%91%E7%A9%BF%E9%80%8F/"/>
    
    <category term="NAS" scheme="https://xiaomingclassmate.com/tags/NAS/"/>
    
    <category term="frp" scheme="https://xiaomingclassmate.com/tags/frp/"/>
    
    <category term="frpc-desktop" scheme="https://xiaomingclassmate.com/tags/frpc-desktop/"/>
    
  </entry>
  
  <entry>
    <title>内网穿透系列（一）：还在为公网IP发愁？frp教你“打洞”回家！</title>
    <link href="https://xiaomingclassmate.com/posts/11235/"/>
    <id>https://xiaomingclassmate.com/posts/11235/</id>
    <published>2025-08-10T15:23:02.000Z</published>
    <updated>2026-11-08T12:56:30.747Z</updated>
    
    <content type="html"><![CDATA[<p>想让家里的 NAS、旧电脑、摄像头或本地开发服务在外网访问？但家里没有公网 IP，路由器端口映射和防火墙配置又让人头疼。</p><p>本文介绍免费开源的内网穿透工具 <strong>frp</strong>，用公网服务器中转流量，让内网服务获得“公网身份”。</p><p><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20250803234849502.png" alt="frp 项目"></p><p>项目地址：<a href="https://github.com/fatedier/frp">https://github.com/fatedier/frp</a></p><blockquote><p><strong>版本提示：</strong> 本文截图和配置来自 2025 年 8 月。frp 配置项会随版本调整，请使用官方最新稳定版，并以官方文档为准。</p></blockquote><h2 id="一、frp-的工作原理"><a href="#一、frp-的工作原理" class="headerlink" title="一、frp 的工作原理"></a>一、frp 的工作原理</h2><p>frp 分为两部分：</p><ul><li><code>frps</code>：服务端，部署在有公网 IP 的云服务器上，负责接收外网请求并转发流量。</li><li><code>frpc</code>：客户端，部署在内网设备上，主动连接 <code>frps</code> 并建立隧道。</li></ul><p>外网请求先到达 <code>frps</code>，再通过隧道交给内网的 <code>frpc</code>，最后转发给本机或其他局域网服务。即使内网没有公网 IP，也可以通过这种方式对外提供服务。</p><h2 id="二、准备事项"><a href="#二、准备事项" class="headerlink" title="二、准备事项"></a>二、准备事项</h2><ul><li>一台有公网 IP 的云服务器；</li><li>一台需要穿透的内网设备；</li><li>如需 HTTPS 和域名访问，准备一个域名。</li></ul><h2 id="三、部署-frps"><a href="#三、部署-frps" class="headerlink" title="三、部署 frps"></a>三、部署 frps</h2><h3 id="1-下载-frp"><a href="#1-下载-frp" class="headerlink" title="1. 下载 frp"></a>1. 下载 frp</h3><p>进入 <a href="https://github.com/fatedier/frp/releases">frp Releases</a>，根据系统选择压缩包：</p><ul><li>Linux 服务器：<code>frp_xxx_linux_amd64.tar.gz</code></li><li>Windows 设备：<code>frp_xxx_windows_amd64.zip</code></li></ul><p><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20250804000634042.png" alt="下载 frp"></p><p><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20250803232016325.png" alt="frp 目录文件"></p><h3 id="2-配置服务端"><a href="#2-配置服务端" class="headerlink" title="2. 配置服务端"></a>2. 配置服务端</h3><p>把 <code>frps</code> 和 <code>frps.toml</code> 上传到云服务器，示例配置：</p><figure class="highlight toml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">bindPort</span> = <span class="number">7000</span></span><br><span class="line"><span class="attr">vhostHTTPSPort</span> = <span class="number">443</span></span><br><span class="line"></span><br><span class="line"><span class="attr">auth.method</span> = <span class="string">&quot;token&quot;</span></span><br><span class="line"><span class="attr">auth.token</span> = <span class="string">&quot;请使用强随机字符串&quot;</span></span><br></pre></td></tr></table></figure><blockquote><p><strong>安全提示：</strong> 示例中的简单令牌只用于演示。生产环境请使用长随机令牌，并只放行必要端口。</p></blockquote><p>临时启动：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">cd</span> /opt/frps</span><br><span class="line"><span class="built_in">chmod</span> +x frps</span><br><span class="line"><span class="built_in">nohup</span> ./frps -c ./frps.toml &amp;</span><br></pre></td></tr></table></figure><p><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20250806202446602.png" alt="命令行启动 frps"></p><h3 id="3-使用-systemd-管理服务"><a href="#3-使用-systemd-管理服务" class="headerlink" title="3. 使用 systemd 管理服务"></a>3. 使用 systemd 管理服务</h3><p>创建 <code>/etc/systemd/system/frps.service</code>：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">cat</span> &gt;/etc/systemd/system/frps.service&lt;&lt;<span class="string">EOF</span></span><br><span class="line"><span class="string">[Unit]</span></span><br><span class="line"><span class="string">Description = frp server</span></span><br><span class="line"><span class="string">After = network.target syslog.target</span></span><br><span class="line"><span class="string">Wants = network.target</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">[Service]</span></span><br><span class="line"><span class="string">Type = simple</span></span><br><span class="line"><span class="string">ExecStart = /opt/frps/frps -c /opt/frps/frps.toml</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">[Install]</span></span><br><span class="line"><span class="string">WantedBy = multi-user.target</span></span><br><span class="line"><span class="string">EOF</span></span><br></pre></td></tr></table></figure><p>常用命令：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> systemctl start frps</span><br><span class="line"><span class="built_in">sudo</span> systemctl <span class="built_in">enable</span> frps</span><br><span class="line"><span class="built_in">sudo</span> systemctl status frps</span><br><span class="line"><span class="built_in">sudo</span> systemctl restart frps</span><br></pre></td></tr></table></figure><p><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20250808205612875.png" alt="systemd 管理 frps"></p><p>记得在云服务器的安全组或防火墙放行 <code>7000</code>、<code>443</code> 和实际使用的远程端口。</p><h2 id="四、部署-frpc"><a href="#四、部署-frpc" class="headerlink" title="四、部署 frpc"></a>四、部署 frpc</h2><p>把 <code>frpc</code> 和 <code>frpc.toml</code> 放到内网设备上。</p><h3 id="1-HTTPS-服务示例"><a href="#1-HTTPS-服务示例" class="headerlink" title="1. HTTPS 服务示例"></a>1. HTTPS 服务示例</h3><figure class="highlight toml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">serverAddr</span> = <span class="string">&quot;你的云服务器公网IP&quot;</span></span><br><span class="line"><span class="attr">serverPort</span> = <span class="number">7000</span></span><br><span class="line"></span><br><span class="line"><span class="attr">auth.method</span> = <span class="string">&quot;token&quot;</span></span><br><span class="line"><span class="attr">auth.token</span> = <span class="string">&quot;与服务端一致的令牌&quot;</span></span><br><span class="line"></span><br><span class="line"><span class="section">[[proxies]]</span></span><br><span class="line"><span class="attr">name</span> = <span class="string">&quot;web&quot;</span></span><br><span class="line"><span class="attr">type</span> = <span class="string">&quot;https&quot;</span></span><br><span class="line"><span class="attr">customDomains</span> = [<span class="string">&quot;home.example.com&quot;</span>]</span><br><span class="line"></span><br><span class="line"><span class="section">[proxies.plugin]</span></span><br><span class="line"><span class="attr">type</span> = <span class="string">&quot;https2http&quot;</span></span><br><span class="line"><span class="attr">localAddr</span> = <span class="string">&quot;127.0.0.1:7892&quot;</span></span><br><span class="line"><span class="attr">crtPath</span> = <span class="string">&quot;./server.crt&quot;</span></span><br><span class="line"><span class="attr">keyPath</span> = <span class="string">&quot;./server.key&quot;</span></span><br><span class="line"><span class="attr">hostHeaderRewrite</span> = <span class="string">&quot;127.0.0.1&quot;</span></span><br><span class="line"><span class="attr">requestHeaders.set.x-from-where</span> = <span class="string">&quot;frp&quot;</span></span><br></pre></td></tr></table></figure><p>域名需要解析到云服务器公网 IP。本文示例使用 Cloudflare 客户端证书：</p><p><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20250808203008250.png" alt="创建 Cloudflare 客户端证书"></p><p><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20250808203227951.png" alt="保存证书内容"></p><p>如果使用 Cloudflare DNS，并且 frp 直接处理证书，先关闭该记录的 CDN 代理。</p><p><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20250810185745754.png" alt="关闭 CDN 代理"></p><h3 id="2-TCP-服务示例"><a href="#2-TCP-服务示例" class="headerlink" title="2. TCP 服务示例"></a>2. TCP 服务示例</h3><p>例如把内网 <code>3002</code> 端口映射到公网 <code>9000</code>：</p><figure class="highlight toml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">serverAddr</span> = <span class="string">&quot;你的云服务器公网IP&quot;</span></span><br><span class="line"><span class="attr">serverPort</span> = <span class="number">7000</span></span><br><span class="line"></span><br><span class="line"><span class="attr">auth.method</span> = <span class="string">&quot;token&quot;</span></span><br><span class="line"><span class="attr">auth.token</span> = <span class="string">&quot;与服务端一致的令牌&quot;</span></span><br><span class="line"></span><br><span class="line"><span class="section">[[proxies]]</span></span><br><span class="line"><span class="attr">name</span> = <span class="string">&quot;sunpanel&quot;</span></span><br><span class="line"><span class="attr">type</span> = <span class="string">&quot;tcp&quot;</span></span><br><span class="line"><span class="attr">localIP</span> = <span class="string">&quot;127.0.0.1&quot;</span></span><br><span class="line"><span class="attr">localPort</span> = <span class="number">3002</span></span><br><span class="line"><span class="attr">remotePort</span> = <span class="number">9000</span></span><br></pre></td></tr></table></figure><h3 id="3-启动客户端"><a href="#3-启动客户端" class="headerlink" title="3. 启动客户端"></a>3. 启动客户端</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">chmod</span> +x frpc</span><br><span class="line"></span><br><span class="line"><span class="comment"># Linux</span></span><br><span class="line"><span class="built_in">nohup</span> ./frpc -c ./frpc.toml &amp;</span><br><span class="line"></span><br><span class="line"><span class="comment"># Windows</span></span><br><span class="line">frpc.exe -c frpc.toml</span><br></pre></td></tr></table></figure><p><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20250808211001929.png" alt="启动 frpc"></p><p>也可以创建 <code>/etc/systemd/system/frpc.service</code>：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">cat</span> &gt;/etc/systemd/system/frpc.service&lt;&lt;<span class="string">EOF</span></span><br><span class="line"><span class="string">[Unit]</span></span><br><span class="line"><span class="string">Description = frp client</span></span><br><span class="line"><span class="string">After = network.target syslog.target</span></span><br><span class="line"><span class="string">Wants = network.target</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">[Service]</span></span><br><span class="line"><span class="string">Type = simple</span></span><br><span class="line"><span class="string">ExecStart = /opt/frpc/frpc -c /opt/frpc/frpc.toml</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">[Install]</span></span><br><span class="line"><span class="string">WantedBy = multi-user.target</span></span><br><span class="line"><span class="string">EOF</span></span><br></pre></td></tr></table></figure><p><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20250808211841451.png" alt="systemd 管理 frpc"></p><h2 id="五、验证访问"><a href="#五、验证访问" class="headerlink" title="五、验证访问"></a>五、验证访问</h2><ul><li>HTTPS 代理：使用绑定的域名访问，例如 <code>https://home.example.com</code>；</li><li>TCP 代理：使用 <code>服务器公网IP:remotePort</code> 访问。</li></ul><p><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20250808202354379.png" alt="HTTPS 服务访问成功"></p><p><img src="https://cdn.jsdelivr.net/gh/jumplooper/images/image/20250810225020484.png" alt="TCP 服务访问成功"></p><h2 id="六、安全建议"><a href="#六、安全建议" class="headerlink" title="六、安全建议"></a>六、安全建议</h2><ol><li>使用强随机令牌，不要复用示例值；</li><li>只放行必要的代理端口；</li><li>为被穿透服务设置强密码和访问控制；</li><li>定期更新 frp 和系统补丁；</li><li>敏感服务优先加入 VPN、访问列表或 Cloudflare Access。</li></ol><p>更多用法见 <a href="https://gofrp.org/zh-cn/">frp 中文文档</a>。</p><h2 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h2><p>frp 是一个轻量、稳定的内网穿透方案，适合有公网服务器、希望完全自主控制的用户。部署的关键不是“跑起来”，而是令牌安全、端口收敛和被穿透服务本身的防护。</p>]]></content>
    
    
    <summary type="html">frp 内网穿透实战教程：部署 frps 和 frpc，配置 HTTP/HTTPS/TCP 代理、systemd 服务、域名与证书，并说明安全组与令牌安全。</summary>
    
    
    
    <category term="自建服务" scheme="https://xiaomingclassmate.com/categories/%E8%87%AA%E5%BB%BA%E6%9C%8D%E5%8A%A1/"/>
    
    
    <category term="内网穿透" scheme="https://xiaomingclassmate.com/tags/%E5%86%85%E7%BD%91%E7%A9%BF%E9%80%8F/"/>
    
    <category term="NAS" scheme="https://xiaomingclassmate.com/tags/NAS/"/>
    
    <category term="frp" scheme="https://xiaomingclassmate.com/tags/frp/"/>
    
    <category term="远程访问" scheme="https://xiaomingclassmate.com/tags/%E8%BF%9C%E7%A8%8B%E8%AE%BF%E9%97%AE/"/>
    
  </entry>
  
</feed>
