<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <author>
    <name>Honcho</name>
  </author>
  <generator uri="https://hexo.io/">Hexo</generator>
  <icon>https://honcho.cc.cd/assets/honcho.jpeg</icon>
  <id>https://honcho.cc.cd/</id>
  <link href="https://honcho.cc.cd/" rel="alternate"/>
  <link href="https://honcho.cc.cd/atom.xml" rel="self"/>
  <rights>All rights reserved 2026, Honcho</rights>
  <subtitle>学习的进步 | 专注于硬件改造与全栈开发技术博客</subtitle>
  <title>honcho | ChatGPT | AI | Kimi</title>
  <updated>2026-07-26T08:56:19.003Z</updated>
  <entry>
    <author>
      <name>Honcho</name>
    </author>
    <category term="软件技术" scheme="https://honcho.cc.cd/categories/%E8%BD%AF%E4%BB%B6%E6%8A%80%E6%9C%AF/"/>
    <category term="技术分享" scheme="https://honcho.cc.cd/tags/%E6%8A%80%E6%9C%AF%E5%88%86%E4%BA%AB/"/>
    <content>
      <![CDATA[<h1 id="一、打造零成本无限前缀的顶级域名邮箱系统"><a href="#一、打造零成本无限前缀的顶级域名邮箱系统" class="headerlink" title="一、打造零成本无限前缀的顶级域名邮箱系统"></a>一、打造零成本无限前缀的顶级域名邮箱系统</h1><p>做 Web3 的都知道，邮箱是数字身份证。市面上主流的邮箱方案，要么收费贵，要么隐私堪忧，要么前缀固定不能随意创建。利用 Cloudflare 的边缘计算能力，配合开源项目 CloudMail，实现零成本、免服务器、无限前缀、能收能发的私有邮箱系统。数据完全在自己手里。</p><h2 id="为什么要私有邮箱"><a href="#为什么要私有邮箱" class="headerlink" title="为什么要私有邮箱"></a>为什么要私有邮箱</h2><table><thead><tr><th>场景</th><th>痛点</th><th>价值</th></tr></thead><tbody><tr><td>注册交易所</td><td>垃圾邮件轰炸主邮箱</td><td>用 exchange@ 专门收验证码</td></tr><tr><td>注册空投项目</td><td>担心隐私泄露</td><td>用 airdrop@ 隔离风险</td></tr><tr><td>注册金融机构</td><td>需要高安全性</td><td>用 bank@ 独立管理</td></tr><tr><td>日常使用</td><td>主邮箱被污染</td><td>无限前缀随意切换</td></tr></tbody></table><h2 id="准备工作：Cloudflare-三件套"><a href="#准备工作：Cloudflare-三件套" class="headerlink" title="准备工作：Cloudflare 三件套"></a>准备工作：Cloudflare 三件套</h2><table><thead><tr><th>服务</th><th>角色</th><th>说明</th></tr></thead><tbody><tr><td>D1 数据库</td><td>账本</td><td>记录邮件索引、发件人等</td></tr><tr><td>KV 存储</td><td>中转站</td><td>存储临时配置</td></tr><tr><td>R2 对象存储</td><td>仓库</td><td>免费 10GB，存邮件附件和正文</td></tr></tbody></table><p>三个服务都在 Cloudflare 免费套餐内。</p><h2 id="部署与环境搭建"><a href="#部署与环境搭建" class="headerlink" title="部署与环境搭建"></a>部署与环境搭建</h2><h3 id="Fork-代码与部署-Worker"><a href="#Fork-代码与部署-Worker" class="headerlink" title="Fork 代码与部署 Worker"></a>Fork 代码与部署 Worker</h3><p>  CloudMail GitHub：<a href="https://github.com/honcholee/cloud-mail">点击前往</a><br>  点 Fork 把代码复制到你自己的 GitHub。回到 Cloudflare 控制台，创建 Workers 应用程序，选择连接 GitHub 仓库。在高级设置里把路径设为 mail worker，点部署。</p><h3 id="绑定自定义域"><a href="#绑定自定义域" class="headerlink" title="绑定自定义域"></a>绑定自定义域</h3><p>  别用 CF 默认分配的那串长地址，绑自己的域名。比如 mail.你的域名.com。这样你的邮箱访问地址就是 <a href="https://mail.你的域名.com./">https://mail.你的域名.com。</a></p><h3 id="配置核心变量"><a href="#配置核心变量" class="headerlink" title="配置核心变量"></a>配置核心变量</h3><p>进 Workers 设置 → 变量，添加这三个：</p><table><thead><tr><th>变量名</th><th>类型</th><th>示例值</th><th>说明</th></tr></thead><tbody><tr><td>domain</td><td>JSON</td><td>[“你的域名.com”]</td><td>你的根域名</td></tr><tr><td>admin</td><td>文本</td><td>admin@你的域名.com</td><td>管理员邮箱</td></tr><tr><td>SECRET</td><td>文本</td><td>一串复杂字符</td><td>用于初始化后台</td></tr></tbody></table><p>备注：SECRET 设复杂一点，大小写字母加数字加符号。</p><h3 id="开通存储与绑定"><a href="#开通存储与绑定" class="headerlink" title="开通存储与绑定"></a>开通存储与绑定</h3><h4 id="创建-D1-数据库"><a href="#创建-D1-数据库" class="headerlink" title="创建 D1 数据库"></a>创建 D1 数据库</h4><p>Cloudflare → Workers 和 Pages → D1 数据库 → 创建数据库，起名 cloud-mail-db。记录下数据库 ID。</p><h4 id="创建-KV-命名空间"><a href="#创建-KV-命名空间" class="headerlink" title="创建 KV 命名空间"></a>创建 KV 命名空间</h4><p>进 KV 命名空间 → 创建，起名 cloud-mail-kv。</p><h4 id="创建-R2-存储桶"><a href="#创建-R2-存储桶" class="headerlink" title="创建 R2 存储桶"></a>创建 R2 存储桶</h4><p>进 R2 对象存储 → 创建存储桶，起名 cloud-mail-r2。</p><h4 id="绑定到-Worker"><a href="#绑定到-Worker" class="headerlink" title="绑定到 Worker"></a>绑定到 Worker</h4><p>进 Worker → 设置 → 变量 → 绑定：</p><table><thead><tr><th>绑定项</th><th>变量名</th><th>选择的内容</th></tr></thead><tbody><tr><td>D1 数据库</td><td>db</td><td>你创建的 D1 数据库</td></tr><tr><td>KV 命名空间</td><td>kv</td><td>你创建的 KV 空间</td></tr><tr><td>R2 存储桶</td><td>r2</td><td>你创建的 R2 存储桶</td></tr><tr><td>变量名大小写都可以，但别填错。</td><td></td><td></td></tr></tbody></table><h3 id="开启收信与初始化"><a href="#开启收信与初始化" class="headerlink" title="开启收信与初始化"></a>开启收信与初始化</h3><h4 id="设置电子邮件路由"><a href="#设置电子邮件路由" class="headerlink" title="设置电子邮件路由"></a>设置电子邮件路由</h4><p>进 Cloudflare 域名管理 → 电子邮件路由 → 添加记录并启用。在路由规则中把 Catch-all 地址的操作设为”发送至 Worker”，目标选择你的 cloud-mail Worker。<br>这样无论别人往你域名的什么前缀发信，你都能收到。</p><h4 id="初始化后台"><a href="#初始化后台" class="headerlink" title="初始化后台"></a>初始化后台</h4><p>访问 https:&#x2F;&#x2F;你的域名&#x2F;api&#x2F;init&#x2F;你的SECRET</p><p>看到 {“success”:true} 就行了。然后直接访问你的域名，注册并登录管理员账号。</p><h4 id="对接-Resend-实现发信"><a href="#对接-Resend-实现发信" class="headerlink" title="对接 Resend 实现发信"></a>对接 Resend 实现发信</h4><p>Cloudflare 默认只能收信。想发信需要 Resend。</p><p>去 Resend 官网 注册账号。添加你的域名，系统会提供 DNS 验证记录，回到 Cloudflare DNS 设置里添加。如果自动没加上就手动加。_dmarc 的 TXT 记录（内容 v&#x3D;DMARC1; p&#x3D;none;）也要添上，不然你的邮件可能被对方当成垃圾邮件。</p><p>在 Resend 生成 API Key，回到 CloudMail 后台 → 邮件设置，填入 Resend Token。配置完就能用任意前缀发邮件了。</p><h4 id="绑定电报机器人（可选）"><a href="#绑定电报机器人（可选）" class="headerlink" title="绑定电报机器人（可选）"></a>绑定电报机器人（可选）</h4><p>把 Telegram 机器人挂上，新邮件实时推送。</p><p>找 @BotFather 申请机器人 Token。找 @userinfobot 获取你的 Telegram ID。在 CloudMail 后台系统设置中开启 Telegram 推送，填入 Token 和 ID。记得去 Telegram 给你的机器人发个 &#x2F;start，不然它没权限给你弹窗。</p><p>配置完成后，每封新邮件都会实时推送到手机。</p><h1 id="体验"><a href="#体验" class="headerlink" title="体验"></a>体验</h1><p>完全免费，无限前缀，数据自持，能收能发，电报秒提醒。就是配置步骤有点多，需要耐心。发信依赖 Resend，但免费额度每月 3000 封，个人用完全够。需要一个自己的域名。</p><h1 id="一些常见的问题"><a href="#一些常见的问题" class="headerlink" title="一些常见的问题"></a>一些常见的问题</h1><h2 id="这套方案完全免费吗？"><a href="#这套方案完全免费吗？" class="headerlink" title="这套方案完全免费吗？"></a>这套方案完全免费吗？</h2><p>是的。Cloudflare 的 D1、KV、R2、Workers 都在免费套餐内。Resend 每月 3000 封免费邮件。</p><h2 id="能创建多少个邮箱前缀？"><a href="#能创建多少个邮箱前缀？" class="headerlink" title="能创建多少个邮箱前缀？"></a>能创建多少个邮箱前缀？</h2><p>无限个。有人往你域名发信，任何前缀都会自动创建邮箱。</p><h2 id="能发邮件吗？"><a href="#能发邮件吗？" class="headerlink" title="能发邮件吗？"></a>能发邮件吗？</h2><p>能。对接 Resend 就行。</p><h2 id="没有域名可以用吗？"><a href="#没有域名可以用吗？" class="headerlink" title="没有域名可以用吗？"></a>没有域名可以用吗？</h2><p>不行。需要有一个自己的域名。</p><h2 id="电报机器人收不到推送怎么办？"><a href="#电报机器人收不到推送怎么办？" class="headerlink" title="电报机器人收不到推送怎么办？"></a>电报机器人收不到推送怎么办？</h2><p>确认给机器人发过 &#x2F;start，确认 Token 和 ID 填对了，确认 Worker 自定义域地址正确。</p><h2 id="Resend-免费额度够用吗？"><a href="#Resend-免费额度够用吗？" class="headerlink" title="Resend 免费额度够用吗？"></a>Resend 免费额度够用吗？</h2><p>每月 3000 封，个人完全够。超出可以考虑付费。</p>]]>
    </content>
    <id>https://honcho.cc.cd/posts/cloud%20mail</id>
    <link href="https://honcho.cc.cd/posts/cloud%20mail"/>
    <published>2026-06-14T03:52:29.000Z</published>
    <summary>
      <![CDATA[<h1 id="一、打造零成本无限前缀的顶级域名邮箱系统"><a href="#一、打造零成本无限前缀的顶级域名邮箱系统" class="headerlink" title="一、打造零成本无限前缀的顶级域名邮箱系统"></a>一、打造零成本无限前缀的顶级域名邮箱系统</h1><]]>
    </summary>
    <title>打造零成本无限前缀的顶级域名邮箱系统</title>
    <updated>2026-07-26T08:56:19.003Z</updated>
  </entry>
  <entry>
    <author>
      <name>Honcho</name>
    </author>
    <category term="软件技术" scheme="https://honcho.cc.cd/categories/%E8%BD%AF%E4%BB%B6%E6%8A%80%E6%9C%AF/"/>
    <category term="Umami 免费 云服务 站点流量统计 额度大" scheme="https://honcho.cc.cd/tags/Umami-%E5%85%8D%E8%B4%B9-%E4%BA%91%E6%9C%8D%E5%8A%A1-%E7%AB%99%E7%82%B9%E6%B5%81%E9%87%8F%E7%BB%9F%E8%AE%A1-%E9%A2%9D%E5%BA%A6%E5%A4%A7/"/>
    <content>
      <![CDATA[<h1 id="使用-Umami-官方的免费云服务（零基础，3分钟搞定）"><a href="#使用-Umami-官方的免费云服务（零基础，3分钟搞定）" class="headerlink" title="使用 Umami 官方的免费云服务（零基础，3分钟搞定）"></a>使用 Umami 官方的免费云服务（零基础，3分钟搞定）</h1><p>  如果你不想折腾代码和服务器，Umami 官方提供了名为 Umami Cloud 的托管服务，免费额度非常大（每月可承载多达 10,000 次访问量），对个人博客来说绰绰有余。</p><ul><li>访问 Umami Cloud 官网 并注册一个账号。</li><li>登录后进入控制台，点击 “Add Website”。</li><li>输入你的网站名称和域名（例如 honcho.cc.cd）。</li><li>保存后，点击 “Get tracking code”，你就能直接拿到属于你自己的那行 <script> 追踪代码和 data-website-id 了。</li><li>把代码复制到你的 _config.stellar.yml 中部署，大功告成！</li></ul>]]>
    </content>
    <id>https://honcho.cc.cd/posts/%E5%85%8D%E8%B4%B9%E7%BD%91%E7%AB%99%E6%B5%81%E9%87%8F%E7%BB%9F%E8%AE%A1</id>
    <link href="https://honcho.cc.cd/posts/%E5%85%8D%E8%B4%B9%E7%BD%91%E7%AB%99%E6%B5%81%E9%87%8F%E7%BB%9F%E8%AE%A1"/>
    <published>2026-06-06T10:41:14.000Z</published>
    <summary>
      <![CDATA[<h1 id="使用-Umami-官方的免费云服务（零基础，3分钟搞定）"><a href="#使用-Umami-官方的免费云服务（零基础，3分钟搞定）" class="headerlink" title="使用 Umami 官方的免费云服务（零基础，3分钟搞定）"></a>使用]]>
    </summary>
    <title>使用 Umami 官方的免费云服务</title>
    <updated>2026-07-26T08:56:19.003Z</updated>
  </entry>
  <entry>
    <author>
      <name>Honcho</name>
    </author>
    <category term="软件技术" scheme="https://honcho.cc.cd/categories/%E8%BD%AF%E4%BB%B6%E6%8A%80%E6%9C%AF/"/>
    <category term="技术分享" scheme="https://honcho.cc.cd/tags/%E6%8A%80%E6%9C%AF%E5%88%86%E4%BA%AB/"/>
    <content>
      <![CDATA[<h2 id="一、Hexo简介"><a href="#一、Hexo简介" class="headerlink" title="一、Hexo简介"></a>一、Hexo简介</h2><p>Hexo快速、简洁且高效的博客框架，属于静态网站，因为是开源的，所以官网有许多精致的主题供大家选择，这款博客框架可以部署到github和gitee上，非常适合我们计算机从业者记录生活与笔记。下面我们开始搭建把 首先我先概述下我们接下来的流程：         </p><p><strong>1、安装hexo</strong> </p><ul><li><p><input disabled="" type="checkbox"> ​安装git              </p></li><li><p><input disabled="" type="checkbox"> ​安装nodejs              </p></li><li><p><input disabled="" type="checkbox"> ​安装hexo</p></li></ul><p><strong>2、搭建博客</strong>       </p><p><strong>3、部署博客</strong></p><p>提示：在部署博客时我们推荐使用另一个托管平台名叫Vercel，后面我会专门写一章关于此平台的简介</p><h2 id="二、安装Git"><a href="#二、安装Git" class="headerlink" title="二、安装Git"></a>二、安装Git</h2><p>Git是目前比较流行分布式版本控制系统，可以有效、高速的处理从很小到非常大的项目版本管理<br><strong>ubantu命令:</strong></p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">apt-get install git -y</span><br></pre></td></tr></table></figure><p><strong>Windows下载地址:</strong></p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">https://git-scm.com</span><br></pre></td></tr></table></figure><p><strong>Mac在安装Xcode时会自动安装git，或使用breaw命令进行安装</strong></p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">brew install git</span><br></pre></td></tr></table></figure><h2 id="三、安装nodejs"><a href="#三、安装nodejs" class="headerlink" title="三、安装nodejs"></a>三、安装nodejs</h2><p>Hexo是基于nodejss所开发的，所以我们需要安装一下nodeJs和里面的npm工具 <strong>ubantu命令:</strong></p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">apt-get install nodejs npm -y</span><br></pre></td></tr></table></figure><p><strong>windows和mac可以进入官网直接下载安装包</strong> 如果速度较慢建议采用迅雷下载</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">https://nodejs.org/en/</span><br></pre></td></tr></table></figure><p>安装完后，输入命令</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">node -v</span><br></pre></td></tr></table></figure><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">npm -v</span><br></pre></td></tr></table></figure><p>检查是否安装成功</p><p>如果接下来的安装hexo速度较慢，建议更换npm源为国内的淘宝源</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">npm config set registry https://registry.npm.taobao.org  </span><br></pre></td></tr></table></figure><h2 id="四、安装hexo"><a href="#四、安装hexo" class="headerlink" title="四、安装hexo"></a>四、安装hexo</h2><p>此时我们不区分系统，都是在终端输入命令安装hexo</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">npm install -g hexo-cli</span><br></pre></td></tr></table></figure><p>输入命令</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">hexo -v</span><br></pre></td></tr></table></figure><p>查看版本信息</p><p>初始化hexo</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">hexo init filename</span><br></pre></td></tr></table></figure><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">cd filename</span><br></pre></td></tr></table></figure><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">npm install</span><br></pre></td></tr></table></figure><p>filename为博客文件夹的名字，可以进行更改 cd 是切换用户命令，这里我们通过终端进入到博客的文件夹中 hexo init 是初始化我们的博客目录，简单来说，就是从网上拉去我们所需要的文件 npm install #说明：安装依赖包 hexo generate #说明：构建，会在hexo1中创建public文件夹 执行完以上命令后，会多出以下文件和文件夹 例如</p><p>新建完成后，指定文件夹目录下有：</p><p>_config.yml：站点的配置文件 themes：主题文件夹 source：博客文章存放的文件夹 scaffolds：文章的模板 package.json：安装包的名称 .gitignore：限定在 push 时哪些文件可以忽略 .git：主题和站点都有，标志这是一个 git 项目 node_modules：是安装包的目录，在执行 npm install 的时候会重新生成 public：是 hexo g 生成的静态网页 .deploy_git：同上，hexo g 也会生成 db.json：文件</p><h2 id="五、本地运行"><a href="#五、本地运行" class="headerlink" title="五、本地运行"></a>五、本地运行</h2><p>这里我们的博客就搭建起来了，接下来我们来运行博客</p><p>输入命令</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">hexo g</span><br></pre></td></tr></table></figure><p>这是将原文件生成静态网页</p><p>输入命令</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">hexo s</span><br></pre></td></tr></table></figure><p>这里是运行我们的博客</p><p>然后我们在浏览器输入</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">http://localhost:4000</span><br></pre></td></tr></table></figure><p>就可以看到我们的内容了</p><p>如果需要停止 我们需要在终端按ctrl+c键盘</p><h2 id="六、部署"><a href="#六、部署" class="headerlink" title="六、部署"></a>六、部署</h2><p>接下来是我们的部署博客</p><h2 id="1、vercel部署"><a href="#1、vercel部署" class="headerlink" title="1、vercel部署"></a>1、vercel部署</h2><p>首先我们需要进入vercel注册一个账户</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">https://vercel.com/</span><br></pre></td></tr></table></figure><p>这里我们采用github登陆 所以我们还需要去github注册一个账户</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">https://github.com</span><br></pre></td></tr></table></figure><p>然后我们需要在GitHub创建一个个人仓库 注册登录github官网，点击右上角加号，点击New repository，新建仓库 这里不要勾选初始化README.md 点击create repository 然后github会提示通过git上传文件夹内容到github仓库 接下来我们需要将hexo的博客目录里的内容，通过git上传到github仓库 然后我们在vercel中点击右边的Add New… 然后点击project去拉去我们的github中的仓库 然后vercel就会自动部署我们的hexo博客了，在外面部署后，vercel会提示我们的访问链接 如果需要通过自己的域名访问，可以在设置中的第二选项里设置</p><h2 id="2、Hexo-Github"><a href="#2、Hexo-Github" class="headerlink" title="2、Hexo+Github"></a>2、Hexo+Github</h2><p>首先我们需要在GitHub创建一个个人仓库</p><p>注册登录github官网，点击右上角加号，点击New repository，新建仓库</p><p>创建一个和用户名相同的仓库,即<a href="http://xxxx.github.io,其中xxx是github的用户名/">http://xxxx.github.io，其中xxx是github的用户名</a></p><p>点击create repository</p><p>Git初始化设置</p><p>接下来我们要在终端中输入命令</p><figure class="highlight plaintext"><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">git config --global user.name &quot;yourname&quot;   </span><br><span class="line">git config --global user.email &quot;youremail&quot;  </span><br><span class="line">(yourname是github用户名，youremail是注册github的邮箱)  </span><br></pre></td></tr></table></figure><p>检查是否正确，输入命令</p><figure class="highlight plaintext"><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">git config user.name</span><br><span class="line">git config user.email</span><br></pre></td></tr></table></figure><p>生成SSH添加到GitHub</p><p>输入命令，创建SSH,一路回车</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">ssh-keygen -t rsa -C &quot;youremail&quot;</span><br></pre></td></tr></table></figure><p>查看SSH KEY，输入命令</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">cat ~/.ssh/id_rsa.pub</span><br></pre></td></tr></table></figure><p>windows用户请在用户文件夹中寻找，该文件默认隐藏，需打开隐藏文件与文件夹</p><p>然后复制id_rsa.pub里面的全部内容</p><p>在github的setting中，找到SSH keys的设置选项，点击New SSH key，粘贴id_rsa.pub里面的全部内容</p><p>输入命令</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">ssh -T git@github.com</span><br></pre></td></tr></table></figure><p>查看是否连接成功</p><p>打开站点配置文件 _config.yml，修改添加以下内容</p><figure class="highlight plaintext"><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">deploy:</span><br><span class="line">  type: git</span><br><span class="line">  repo: git@github.com:yourgithubname/yourgithubname.github.io.git  </span><br><span class="line">  branch: master</span><br></pre></td></tr></table></figure><p>安装deploy-git ，也就是部署的命令,这样才能用命令部署到github</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">npm install hexo-deployer-git --save</span><br></pre></td></tr></table></figure><p>输入命令</p><figure class="highlight plaintext"><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">hexo clean 清除缓存</span><br><span class="line"></span><br><span class="line">hexo g = hexo generate 生成静态文件</span><br><span class="line"></span><br><span class="line">hexo deploy 部署网站  </span><br><span class="line"></span><br><span class="line">hexo clean &amp;&amp;　hexo g -d 　这是上面三句的缩写</span><br></pre></td></tr></table></figure><p>然后在github的设置中配置GitHub pages就可以通过一下网址访问到我们的网站了</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">http://yourname.github.io</span><br></pre></td></tr></table></figure><p>关联Git仓库</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">git clone https://github.com/你的用户名/你的用户名.github.io.git  </span><br></pre></td></tr></table></figure><p>执行之后会在当前目录生成’你的用户名.github.io’的文件夹，这是关联github仓库的文件夹，需要上传的文件都会移动到这里</p><h2 id="3、Hexo-Gitee"><a href="#3、Hexo-Gitee" class="headerlink" title="3、Hexo+Gitee"></a>3、Hexo+Gitee</h2><p>Gitee创建个人仓库</p><p>打开码云官网，注册登陆，创建项目，点击右上角加号，新建仓库 开启 Gitee Pages 点击启动 启动后，点击蓝色链接打开网址 初始化Git设置 输入命令</p><figure class="highlight plaintext"><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">git config --global user.name &quot;这里输入你的Gitee注册名&quot;// 按回车  </span><br><span class="line">git config --global user.email &quot;这里输你的Gitee邮箱&quot;  </span><br></pre></td></tr></table></figure><p>生成SSH密钥文件</p><figure class="highlight plaintext"><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">ssh-keygen -t rsa -C &quot;你的Gitee注册邮箱&quot;  </span><br><span class="line">// 可不输入，三个回车</span><br></pre></td></tr></table></figure><p>复制粘贴到码云 配置 _config.yml 点击复制克隆&#x2F;下载里面的https的内容 修改添加_config.yml以下内容</p><figure class="highlight plaintext"><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">url: Gitee Pages 服务，网站地址： https://空间名.gitee.io/仓库名(粘贴)  </span><br><span class="line">root: /仓库名/</span><br><span class="line">wp-block-code</span><br><span class="line">deploy:</span><br><span class="line">  type: git</span><br><span class="line">  repo: https://gitee.com/空间名/仓库名(粘贴)  </span><br><span class="line">  branch: master</span><br></pre></td></tr></table></figure><p>基础配置可以参考官方文档的配置说明</p><figure class="highlight plaintext"><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">hexo clean &amp;&amp;　hexo g -d 　缩写 清缓存</span><br><span class="line"></span><br><span class="line">hexo g = hexo generate 生成静态文件</span><br><span class="line"></span><br><span class="line">hexo generate -deploy 生成静态文件后立即部署网站自动上传到gitee  </span><br><span class="line">打开Gitee Pages 服务 ，每次上传或改动，都要点击“更新”打开网址访问  </span><br></pre></td></tr></table></figure>]]>
    </content>
    <id>https://honcho.cc.cd/posts/Hexo</id>
    <link href="https://honcho.cc.cd/posts/Hexo"/>
    <published>2025-06-07T03:52:29.000Z</published>
    <summary>
      <![CDATA[<h2 id="一、Hexo简介"><a href="#一、Hexo简介" class="headerlink" title="一、Hexo简介"></a>一、Hexo简介</h2><p>Hexo快速、简洁且高效的博客框架，属于静态网站，因为是开源的，所以官网有许多精致的主题供大]]>
    </summary>
    <title>Hexo博客的搭建与部署</title>
    <updated>2026-07-26T08:56:19.003Z</updated>
  </entry>
  <entry>
    <author>
      <name>Honcho</name>
    </author>
    <category term="硬件" scheme="https://honcho.cc.cd/categories/%E7%A1%AC%E4%BB%B6/"/>
    <category term="A1312 SSD硬盘 线缆" scheme="https://honcho.cc.cd/tags/A1312-SSD%E7%A1%AC%E7%9B%98-%E7%BA%BF%E7%BC%86/"/>
    <content>
      <![CDATA[<h2 id="iMac-2011-A1312-三个硬盘全速率接入方案"><a href="#iMac-2011-A1312-三个硬盘全速率接入方案" class="headerlink" title="iMac 2011 (A1312) 三个硬盘全速率接入方案"></a><strong>iMac 2011 (A1312) 三个硬盘全速率接入方案</strong></h2><p>·    <strong>摘要</strong>：本方案利用主板闲置的 SATA 接口实现 SSD + SSD + HDD 架构。</p><p>·    <strong>硬件清单</strong>：</p><ol><li>9.5mm 光驱位硬盘托架 (SATA 3.0)。【可有可无，可以使用纳米双面胶粘在内部壳体上】</li><li>定制版 SATA 数据线（连接主板背面隐藏接口）【TB搜A1312硬盘数据线】。</li><li>SATA电源线1分2.</li></ol><img src="https://tianfu.cc.cd/ssd1.jpg" alt="Banner 双头电源线 一分为二" style="zoom:90%;" /><ol start="4"><li>SATA数据线，最好是一头是直的（按主板不干涉），一头是弯的。</li></ol><img src="https://tianfu.cc.cd/ssd2.jpg" alt="Banner SATA 数据线 一头直一头湾 质量要高" style="zoom:90%;" /><p>·    <strong>关键步骤</strong>：</p><h2 id="1-安装第一个SSD硬盘，将光驱位替代为HDD，HDD位置替代为SSD"><a href="#1-安装第一个SSD硬盘，将光驱位替代为HDD，HDD位置替代为SSD" class="headerlink" title="1. 安装第一个SSD硬盘，将光驱位替代为HDD，HDD位置替代为SSD"></a>1. <strong>安装第一个SSD硬盘，将光驱位替代为HDD，HDD位置替代为SSD</strong></h2><p>§ 拆卸屏幕与逻辑板，定位主板背面 J5000 附近的隐藏接口。【注意屏幕与主板之间的连接线】</p><p>§ 拆下光驱，同步将光驱连接主板的数据线拆下</p><p>§ 将HDD硬盘的SATA数据线拔出，然后插在SATA2的数据口，即原来安装光驱的数据线的接口【原因：HDD硬盘为3Gbps的，与光驱的SATA数量速率一致，避免使用该接口连接SSD时损失速率】</p><p>§ 外部将该数据线接入SSD硬盘，同步将SATA电源线接入HDD盘的SATA电源线，然后将2头分别接入HDD的电源和SSD的电源。</p><p>§ 连接好后，同步将该SSD硬盘放在光驱位置</p><h2 id="2-安装第二个SSD硬盘"><a href="#2-安装第二个SSD硬盘" class="headerlink" title="2. 安装第二个SSD硬盘"></a>2. <strong>安装第二个SSD硬盘</strong></h2><p>§ 拆卸屏幕与逻辑板，定位主板背面 J5000 附近的隐藏接口。【注意屏幕与主板之间的连接线】</p><p>§ 将专用的A1312的数据线连接主板的SATA3接口，然后连接一块新的SSD硬盘，可以将此硬盘放置在光驱位置。</p><h2 id="3-最终效果"><a href="#3-最终效果" class="headerlink" title="3. 最终效果"></a><strong>3.</strong> <strong>最终效果</strong></h2><img src="https://tianfu.cc.cd/ssd3.png" alt="Banner imac最终实际截图 三个硬盘" style="zoom:250%;" /><h2 id="4-TRIM-开启：在终端输入-sudo-trimforce-enable。"><a href="#4-TRIM-开启：在终端输入-sudo-trimforce-enable。" class="headerlink" title="4.TRIM 开启：在终端输入 sudo trimforce enable。"></a><strong>4.TRIM 开启</strong>：在终端输入 <code>sudo trimforce enable</code>。</h2>]]>
    </content>
    <id>https://honcho.cc.cd/posts/Imac-SSD</id>
    <link href="https://honcho.cc.cd/posts/Imac-SSD"/>
    <published>2025-06-07T03:52:29.000Z</published>
    <summary>
      <![CDATA[<h2 id="iMac-2011-A1312-三个硬盘全速率接入方案"><a href="#iMac-2011-A1312-三个硬盘全速率接入方案" class="headerlink" title="iMac 2011 (A1312) 三个硬盘全速率接入方案"></a><st]]>
    </summary>
    <title>Imac 2011 安装硬盘</title>
    <updated>2026-07-26T08:56:19.003Z</updated>
  </entry>
  <entry>
    <author>
      <name>Honcho</name>
    </author>
    <category term="软件技术" scheme="https://honcho.cc.cd/categories/%E8%BD%AF%E4%BB%B6%E6%8A%80%E6%9C%AF/"/>
    <content>
      <![CDATA[<h3 id="复制仓库"><a href="#复制仓库" class="headerlink" title="复制仓库"></a>复制仓库</h3><p>首先 <a href="https://github.com/wuzhengmao/twikoo-cloudflare/fork">Fork</a> 博主的仓库，输入你自己的仓库名称，点击 <code>Create fork</code> 按钮创建自己的仓库。</p><p><img src="https://blog.mingy.org/2024/12/hexo-add-twikoo/github-fork.png" alt="img"></p><blockquote><p><strong>国内对github的访问向来是时断时续的，如果安装失败可以等一等，或者使用科学上网工具，这里推荐可以 <a href="https://speedv.219226.xyz/#/register">注册</a> 一个，目前有免费流量可以薅羊毛。</strong></p></blockquote><h3 id="创建D1数据库"><a href="#创建D1数据库" class="headerlink" title="创建D1数据库"></a>创建D1数据库</h3><p>登录 <a href="https://dash.cloudflare.com/">Cloudflare</a>，点击左侧栏 <code>存储和数据库</code> - <code>D1 SQL数据库</code>，点击 <code>创建</code> 按钮，填入 <code>twikoo</code> 作为数据库名后，点击 <code>创建</code> 按钮。</p><p><img src="https://blog.mingy.org/2024/12/hexo-add-twikoo/cf-create-d1.png" alt="img"></p><p>创建成功后回到列表页面，可以找到对应红框中的 <code>ID</code> 复制出来。</p><p><img src="https://blog.mingy.org/2024/12/hexo-add-twikoo/cf-get-database-id.png" alt="img"></p><p>然后点击 <code>twikoo</code> 数据库，选择 <code>控制台</code> 页签，将仓库根目录下的 <code>schema.sql</code> 文件中的内容全部复制到输入框中，点击 <code>执行</code> 按钮。</p><p><img src="https://blog.mingy.org/2024/12/hexo-add-twikoo/cf-create-table.png" alt="img"></p><p>很快数据库表就创建完了，最后修改仓库根目录下的 <code>wrangler.toml</code> 文件中的 <code>database_id</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></pre></td><td class="code"><pre><span class="line"><span class="section">[[d1_databases]]</span></span><br><span class="line"><span class="attr">binding</span> = <span class="string">&quot;DB&quot;</span> <span class="comment"># available in your Worker on env.DB</span></span><br><span class="line"><span class="attr">database_name</span> = <span class="string">&quot;twikoo&quot;</span></span><br><span class="line"><span class="attr">database_id</span> = <span class="string">&quot;b35e0bd5-6d17-42eb-a597-ff4869a74461&quot;</span> <span class="comment"># 这里替换成你前面红框里的内容</span></span><br></pre></td></tr></table></figure><h3 id="创建R2存储"><a href="#创建R2存储" class="headerlink" title="创建R2存储"></a>创建R2存储</h3><p>点击左侧栏 <code>R2 对象存储</code>，点击 <code>创建存储桶</code>，填入 <code>twikoo</code> 作为存储桶名称，点击 <code>创建存储桶</code> 按钮。</p><p><img src="https://blog.mingy.org/2024/12/hexo-add-twikoo/cf-create-r2.png" alt="img"></p><p>创建成功后后回到列表页面，就可以看到刚才创建的存储桶了。</p><p><img src="https://blog.mingy.org/2024/12/hexo-add-twikoo/cf-create-r2-done.png" alt="img"></p><p>再点击 <code>twikoo</code> 进入存储桶，点击 <code>设置</code> 页签，在 <code>公开访问</code> 点击 <code>连接域</code>， 输入你想设置的域名比如 <code>twikoo.r2.example.org</code>。如果还没有个人域名的可以看我的另外一篇博客 <a href="https://blog.mingy.org/2024/12/register-domain-with-cloudflare/">如何注册一个域名并托管到Cloudflare</a>。</p><p><img src="https://blog.mingy.org/2024/12/hexo-add-twikoo/cf-r2-bind-domain.png" alt="img"></p><p>然后点击 <code>继续</code>，再点击 <code>连接域</code> 就会回到设置页面，这时你会看到你设置的域状态为 <code>正在初始化</code>，过几分钟再次刷新状态就变成了 <code>活动</code>。</p><p><img src="https://blog.mingy.org/2024/12/hexo-add-twikoo/cf-r2-bind-done.png" alt="img"></p><p>接下来还需要将刚才的域名写入修改仓库根目录下的 <code>wrangler.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></pre></td><td class="code"><pre><span class="line"><span class="section">[vars]</span></span><br><span class="line"><span class="attr">R2_PUBLIC_URL</span> = <span class="string">&quot;https://twikoo.r2.example.org&quot;</span> <span class="comment"># 这里替换成你设置的域名</span></span><br></pre></td></tr></table></figure><h3 id="Worker部署"><a href="#Worker部署" class="headerlink" title="Worker部署"></a>Worker部署</h3><p>在 <code>Cloudflare</code> 的左侧栏点击 <code>Workers 和 Pages</code>，点击 <code>创建</code>，再点击 <code>创建 Worker</code>，输入名称 <code>cf-create-worker</code>。</p><p><img src="https://blog.mingy.org/2024/12/hexo-add-twikoo/cf-create-worker.png" alt="img"></p><p>然后点击 <code>部署</code>，过一会显示部署成功，再点击 <code>继续处理项目</code>，选择 <code>设置</code> 页签，滚动到构建区域，点击 <code>连接</code> 按钮。</p><p><img src="https://blog.mingy.org/2024/12/hexo-add-twikoo/cf-worker-connect.png" alt="img"></p><p>此时右侧会弹出一个面板，先连接你的 <code>Github</code> 账号，然后选择你的仓库，如果列表中找不到可以直接输入仓库名，比如 <code>twikoo-cloudflare</code>，再选择 <code>main</code> 分支。</p><p><img src="https://blog.mingy.org/2024/12/hexo-add-twikoo/cf-worker-deploy.png" alt="img"></p><p>然后在 <code>部署命令</code> 的输入框中填入 <code>npx wrangler deploy --minify</code>，最后点击 <code>连接</code> 按钮保存。</p><p>如果在前一步的列表中仓库名是手动输入的，你需要在这里点击 <code>管理</code> 按钮，跳转到 <code>Github</code> 登录账号。</p><p><img src="https://blog.mingy.org/2024/12/hexo-add-twikoo/cf-connect-github.png" alt="img"></p><p>完成登录后进入 <code>Repository access</code> 页面，点击 <code>Select repositories</code> 按钮，选择你的仓库后点击 <code>Save</code> 按钮。</p><p><img src="https://blog.mingy.org/2024/12/hexo-add-twikoo/github-select-repo.png" alt="img"></p><p>此时页面会跳转回 <code>Cloudflare</code>，有可能会报一个错误，不用管它，直接关闭页面就可以了。</p><p>现在把前面修改的 <code>wrangler.toml</code> 文件保存并提交到 <code>Github</code> 仓库，此时就会触发 <code>Worker</code> 的自动构建了，过一会你就会在 <code>Workers 和 Pages</code> 页面看到部署已经更新，点击 <code>访问</code> 按钮，一切正常的话，你会看到这样的内容。</p><figure class="highlight json"><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="punctuation">&#123;</span></span><br><span class="line">    <span class="attr">&quot;code&quot;</span><span class="punctuation">:</span> <span class="number">100</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;message&quot;</span><span class="punctuation">:</span> <span class="string">&quot;Twikoo 云函数运行正常，请参考 https://twikoo.js.org/frontend.html 完成前端的配置&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;version&quot;</span><span class="punctuation">:</span> <span class="string">&quot;1.6.40&quot;</span></span><br><span class="line"><span class="punctuation">&#125;</span></span><br></pre></td></tr></table></figure><h3 id="绑定域名"><a href="#绑定域名" class="headerlink" title="绑定域名"></a>绑定域名</h3><p>再次点击 <code>twikoo-cloudflare</code> 进入 <code>设置</code> 页签，在 <code>域和路由</code> 中点击 <code>添加</code>，右侧弹出 <code>域和路由</code> 面板。点击 <code>自定义域</code>，输入你想要绑定的域名，比如 <code>twikoo.example.org</code>，点击 <code>添加域</code> 按钮。</p><p><img src="https://blog.mingy.org/2024/12/hexo-add-twikoo/cf-worker-bind-domain.png" alt="img"></p><p>添加完成后你的域名就和部署的 <code>Worker</code> 绑定好了。</p><h2 id="配置博客"><a href="#配置博客" class="headerlink" title="配置博客"></a>配置博客</h2><h3 id="修改主题配置"><a href="#修改主题配置" class="headerlink" title="修改主题配置"></a>修改主题配置</h3><p>回到上一篇创建的个人博客仓库，在 <code>themes/hexo-theme-matery</code> 目录下打开 <code>_config.yml</code> 文件进行编辑，搜索关键字 <code>twikoo</code> 将 <code>enabled</code> 改为 <code>true</code>，再将 <code>envId</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></pre></td><td class="code"><pre><span class="line"><span class="attr">twikoo:</span></span><br><span class="line">  <span class="attr">enable:</span> <span class="literal">true</span></span><br><span class="line">  <span class="attr">envId:</span> <span class="string">https://twikoo.example.org</span> <span class="comment"># 这里改成前面部署绑定的域名</span></span><br><span class="line">  <span class="comment"># region: ap-guangzhou # 环境地域，默认为 ap-shanghai</span></span><br><span class="line">  <span class="comment"># path: &#x27;window.location.pathname&#x27; # 自定义文章路径</span></span><br></pre></td></tr></table></figure><p>修改完提交到 <code>Github</code> 后 <code>Cloudflare Pages</code> 会自动部署，等部署完打开你的个人博客，在你的博文最下面就可以看到评论区了。</p><p><img src="https://blog.mingy.org/2024/12/hexo-add-twikoo/hexo-show-comments.png" alt="img"></p><h3 id="配置评论模块"><a href="#配置评论模块" class="headerlink" title="配置评论模块"></a>配置评论模块</h3><p>点击评论区的小齿轮图标，首次进入需要设置密码，设置完就会进入管理面板，点击 <code>配置管理</code> 页签进行初始配置。</p><p><img src="https://blog.mingy.org/2024/12/hexo-add-twikoo/twikoo-config-panel.png" alt="img"></p><p>点开 <code>隐私</code>，在 <code>IMAGE_CDN</code> 处输入 <code>cloudflare</code>，点击 <code>保存</code> 按钮启用图片上传功能。</p><p><img src="https://blog.mingy.org/2024/12/hexo-add-twikoo/twikoo-set-image-cdn.png" alt="img"></p><p>其余每个配置项都有很详细的说明，大家可以自行慢慢摸索，不修改也已经可以正常使用了。</p><h3 id="防止机器人"><a href="#防止机器人" class="headerlink" title="防止机器人"></a>防止机器人</h3><p>发表评论时可以使用 <code>Cloudflare Turnstile</code> 的检查来阻止机器人，如果需要启用先在 <code>Cloudflare</code> 的左侧栏点击 <code>Turnstile</code>，点击 <code>添加小组件</code> 按钮。</p><p><img src="https://blog.mingy.org/2024/12/hexo-add-twikoo/cf-create-turnstile.png" alt="img"></p><p>小组件名称可以随便填写，比如 <code>twikoo</code>，点击下面的 <code>添加主机名</code> 按钮会在右侧弹出面板。在最上面的输入框填入个人博客的域名，比如 <code>blog.example.org</code>，点击右侧的 <code>添加</code> 按钮，主机名就会出现在下面的已选择主机名列表中。再点击最下面的 <code>添加</code> 按钮，右侧面板关闭，主机名会添加到 <code>主机名管理</code> 区域的列表中。最后点击右下角的 <code>创建</code> 按钮，就会显示已成功创建 <code>Turnstile</code> 小组件。</p><p><img src="https://blog.mingy.org/2024/12/hexo-add-twikoo/cf-create-turnstile-ok.png" alt="img"></p><p>在这个页面上 <code>站点密钥</code> 和 <code>密钥</code> 是你需要复制下来配置到 <code>Twikoo</code> 的管理面板中的。接下来再次打开管理面板，点开 <code>反垃圾</code>，在 <code>TURNSTILE_SITE_KEY</code> 处填入 <code>站点密钥</code> 的内容，在 <code>TURNSTILE_SECRET_KEY</code> 处填入 <code>密钥</code> 的内容，点击 <code>保存</code> 关闭面板。</p><p><img src="https://blog.mingy.org/2024/12/hexo-add-twikoo/twikoo-config-turnstile.png" alt="img"></p><p>完成后再次发表评论就会出现 <code>Cloudflare</code> 的机器人检查框了，大部分情况下等一会就会显示成功，或者出现一个勾选框确认后检查成功，只有极少数情况会发起 <code>JS质询</code> 进行挑战。</p><p><img src="https://blog.mingy.org/2024/12/hexo-add-twikoo/twikoo-post-comments.png" alt="img"></p><h2 id="后记"><a href="#后记" class="headerlink" title="后记"></a>后记</h2><p>至此，一个基本上完整的评论系统就上线了，对于 <code>Twikoo</code> 的其他配置，还有一些建议：</p><ul><li>使用隐藏入口不要暴露管理面板的配置按钮；</li><li>设置一个复杂的密码不要让别人轻易猜出来；</li><li>添加评论通知，<a href="https://pushoo.js.org/">pushoo.js</a> 提供了丰富的通知方式，可以自行看文档选择最适合的方式。</li></ul>]]>
    </content>
    <id>https://honcho.cc.cd/posts/%E9%83%A8%E7%BD%B2Twikoo</id>
    <link href="https://honcho.cc.cd/posts/%E9%83%A8%E7%BD%B2Twikoo"/>
    <published>2025-06-06T10:41:14.000Z</published>
    <summary>
      <![CDATA[<h3 id="复制仓库"><a href="#复制仓库" class="headerlink" title="复制仓库"></a>复制仓库</h3><p>首先 <a href="https://github.com/wuzhengmao/twikoo-cloudflare/fo]]>
    </summary>
    <title>部署Twikoo</title>
    <updated>2026-07-26T08:56:19.003Z</updated>
  </entry>
  <entry>
    <author>
      <name>Honcho</name>
    </author>
    <category term="软件技术" scheme="https://honcho.cc.cd/categories/%E8%BD%AF%E4%BB%B6%E6%8A%80%E6%9C%AF/"/>
    <category term="中间件" scheme="https://honcho.cc.cd/tags/%E4%B8%AD%E9%97%B4%E4%BB%B6/"/>
    <content>
      <![CDATA[<h2 id="Zookeeper"><a href="#Zookeeper" class="headerlink" title="Zookeeper"></a>Zookeeper</h2><ol><li>拉取镜像</li></ol><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 pull zookeeper</span><br></pre></td></tr></table></figure><ol start="2"><li>创建挂载容器中的数据目录</li></ol><figure class="highlight bash"><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="built_in">mkdir</span> zookeeper &amp;&amp; <span class="built_in">cd</span> zookeeper</span><br><span class="line"><span class="built_in">mkdir</span> data</span><br></pre></td></tr></table></figure><ol start="3"><li>启动命令</li></ol><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></pre></td><td class="code"><pre><span class="line">docker run \</span><br><span class="line">-d \</span><br><span class="line">--name zookeeper \</span><br><span class="line">--privileged=<span class="literal">true</span> \</span><br><span class="line">-p 2181:2181 \</span><br><span class="line">-v <span class="variable">$PWD</span>/data:/data \</span><br><span class="line">-v <span class="variable">$PWD</span>/conf:/conf \</span><br><span class="line">-v <span class="variable">$PWD</span>/logs:/datalog \</span><br><span class="line">zookeeper</span><br><span class="line"></span><br></pre></td></tr></table></figure><p>注：-d 后台运行 -p 端口映射 -e 设置时区 –name设置容器名 –restart always自启动 -v将本地目录挂载到容器</p><ol start="4"><li>配置文件</li></ol><p>&#x2F;zookeeper&#x2F;conf下</p><figure class="highlight plaintext"><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">dataDir=/data  # 保存zookeeper中的数据</span><br><span class="line">clientPort=2181 # 客户端连接端口，通常不做修改</span><br><span class="line">dataLogDir=/datalog</span><br><span class="line">tickTime=2000  # 通信心跳时间</span><br><span class="line">initLimit=5    # LF(leader - follower)初始通信时限</span><br><span class="line">syncLimit=2    # LF 同步通信时限</span><br><span class="line">autopurge.snapRetainCount=3</span><br><span class="line">autopurge.purgeInterval=0</span><br><span class="line">maxClientCnxns=60</span><br><span class="line">standaloneEnabled=true</span><br><span class="line">admin.enableServer=true</span><br><span class="line">server.1=localhost:2888:3888;2181</span><br></pre></td></tr></table></figure><h2 id="Consul"><a href="#Consul" class="headerlink" title="Consul"></a>Consul</h2><ol><li>拉取镜像</li></ol><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 pull consul:1.6.1</span><br></pre></td></tr></table></figure><ol start="2"><li>启动命令</li></ol><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">docker run \</span><br><span class="line">-d \</span><br><span class="line">-p 8500:8500 \</span><br><span class="line">--name=consul \</span><br><span class="line">consul:1.6.1 \</span><br><span class="line">consul agent -dev \</span><br><span class="line">-ui -node=n1 -bootstrap-expect=1 -client=0.0.0.0</span><br></pre></td></tr></table></figure><h2 id="Kafka"><a href="#Kafka" class="headerlink" title="Kafka"></a>Kafka</h2><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></pre></td><td class="code"><pre><span class="line">docker run \</span><br><span class="line">-d \</span><br><span class="line">--name kafka \</span><br><span class="line">-p 9092:9092 \</span><br><span class="line">--<span class="built_in">link</span> zookeeper:zookeeper \</span><br><span class="line">--<span class="built_in">env</span> KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 \</span><br><span class="line">--<span class="built_in">env</span> KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://localhost:9092 \</span><br><span class="line">--<span class="built_in">env</span> KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 \</span><br><span class="line">--<span class="built_in">env</span> KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR=1 wurstmeister/kafka</span><br><span class="line"></span><br></pre></td></tr></table></figure><h2 id="Rabbitmq"><a href="#Rabbitmq" class="headerlink" title="Rabbitmq"></a>Rabbitmq</h2><ol><li>拉取镜像</li></ol><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 pull rabbitmq</span><br></pre></td></tr></table></figure><ol start="2"><li>启动命令</li></ol><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">docker run -d -p 15672:15672 -p 5672:5672 \</span><br><span class="line">        --restart=always \</span><br><span class="line">        -e RABBITMQ_DEFAULT_USER=admin \</span><br><span class="line">        -e RABBITMQ_DEFAULT_PASS=Aa112211 \</span><br><span class="line">        --hostname myRabbit \</span><br><span class="line">        --name rabbitmq \</span><br><span class="line">        rabbitmq</span><br></pre></td></tr></table></figure><ol start="3"><li>开启Web端</li></ol><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="comment">#进入rabbitmq容器</span></span><br><span class="line">docker <span class="built_in">exec</span> -it 容器名/容器<span class="built_in">id</span> /bin/bash</span><br><span class="line"><span class="comment">#开启web客户端</span></span><br><span class="line">rabbitmq-plugins <span class="built_in">enable</span> rabbitmq_management</span><br></pre></td></tr></table></figure>]]>
    </content>
    <id>https://honcho.cc.cd/posts/Docker%E4%BD%BF%E7%94%A8%E8%BF%87%E7%9A%84%E5%91%BD%E4%BB%A4%E8%AE%B0%E5%BD%95</id>
    <link href="https://honcho.cc.cd/posts/Docker%E4%BD%BF%E7%94%A8%E8%BF%87%E7%9A%84%E5%91%BD%E4%BB%A4%E8%AE%B0%E5%BD%95"/>
    <published>2025-03-30T12:20:23.000Z</published>
    <summary>
      <![CDATA[<h2 id="Zookeeper"><a href="#Zookeeper" class="headerlink" title="Zookeeper"></a>Zookeeper</h2><ol>
<li>拉取镜像</li>
</ol>
<figure class="highl]]>
    </summary>
    <title>Docker使用过的命令</title>
    <updated>2026-07-26T08:56:19.002Z</updated>
  </entry>
  <entry>
    <author>
      <name>Honcho</name>
    </author>
    <category term="软件技术" scheme="https://honcho.cc.cd/categories/%E8%BD%AF%E4%BB%B6%E6%8A%80%E6%9C%AF/"/>
    <category term="中间件" scheme="https://honcho.cc.cd/tags/%E4%B8%AD%E9%97%B4%E4%BB%B6/"/>
    <content>
      <![CDATA[<h1 id="Docker-学习笔记"><a href="#Docker-学习笔记" class="headerlink" title="Docker 学习笔记"></a>Docker 学习笔记</h1><h2 id="第一章：镜像管理"><a href="#第一章：镜像管理" class="headerlink" title="第一章：镜像管理"></a>第一章：镜像管理</h2><table><thead><tr><th>命令</th><th>描述</th><th>常用参数</th></tr></thead><tbody><tr><td><code>docker search</code></td><td>搜索Docker Hub上的镜像</td><td><code>--limit</code> 限制搜索结果数量</td></tr><tr><td><code>docker pull</code></td><td>下载镜像到本地</td><td><code>-a</code> 下载所有标签版本</td></tr><tr><td><code>docker images</code></td><td>列出本地镜像</td><td><code>-q</code> 只显示镜像ID</td></tr><tr><td><code>docker rmi</code></td><td>删除本地镜像</td><td><code>-f</code> 强制删除</td></tr></tbody></table><p><strong>补充细节</strong>：</p><ul><li>删除镜像前需确保没有容器在使用该镜像</li><li>使用<code>docker image prune</code>可清理悬空镜像</li><li>镜像命名规范：<code>[仓库地址]/[命名空间]/[镜像名]:[标签]</code></li></ul><h2 id="第二章：容器操作"><a href="#第二章：容器操作" class="headerlink" title="第二章：容器操作"></a>第二章：容器操作</h2><table><thead><tr><th>命令</th><th>描述</th></tr></thead><tbody><tr><td><code>docker run</code></td><td>创建并启动容器</td></tr><tr><td><code>docker ps</code></td><td>查看容器列表</td></tr><tr><td><code>docker stop</code></td><td>停止运行中的容器</td></tr><tr><td><code>docker start</code></td><td>启动已停止的容器</td></tr><tr><td><code>docker restart</code></td><td>重启容器</td></tr><tr><td><code>docker stats</code></td><td>查看容器资源使用情况</td></tr><tr><td><code>docker logs</code></td><td>查看容器日志</td></tr><tr><td><code>docker exec</code></td><td>进入运行中的容器</td></tr><tr><td><code>docker rm</code></td><td>删除容器</td></tr></tbody></table><h3 id="docker-run-详细参数"><a href="#docker-run-详细参数" class="headerlink" title="docker run 详细参数"></a><code>docker run</code> 详细参数</h3><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 run [OPTIONS] IMAGE [COMMAND] [ARG...]</span><br></pre></td></tr></table></figure><p>常用参数：</p><ul><li><code>-d</code>：后台运行（守护模式）</li><li><code>--name</code>：指定容器名称</li><li><code>-p</code>：端口映射（格式：<code>主机端口:容器端口</code>）</li><li><code>-e</code>：设置环境变量</li><li><code>--restart</code>：重启策略（<code>always|on-failure|unless-stopped</code>）</li><li><code>--network</code>：指定网络</li><li><code>-v</code>：数据卷&#x2F;目录挂载</li></ul><h3 id="其他命令细节"><a href="#其他命令细节" class="headerlink" title="其他命令细节"></a>其他命令细节</h3><p><strong>进入容器</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></pre></td><td class="code"><pre><span class="line">docker <span class="built_in">exec</span> -it 容器名 /bin/bash</span><br><span class="line"><span class="comment"># 或使用sh</span></span><br><span class="line">docker <span class="built_in">exec</span> -it 容器名 /bin/sh</span><br></pre></td></tr></table></figure><p><strong>查看容器</strong>：</p><ul><li><code>docker ps -a</code>：查看所有容器（包括已停止的）</li><li><code>docker ps -aq</code>：只显示容器ID</li></ul><p><strong>批量操作</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"># 停止所有容器</span></span><br><span class="line">docker stop $(docker ps -aq)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 删除所有容器</span></span><br><span class="line">docker <span class="built_in">rm</span> -f $(docker ps -aq)</span><br></pre></td></tr></table></figure><h2 id="第三章：镜像保存与加载"><a href="#第三章：镜像保存与加载" class="headerlink" title="第三章：镜像保存与加载"></a>第三章：镜像保存与加载</h2><table><thead><tr><th>命令</th><th>描述</th></tr></thead><tbody><tr><td><code>docker commit</code></td><td>将容器保存为新镜像</td></tr><tr><td><code>docker save</code></td><td>将镜像保存为tar文件</td></tr><tr><td><code>docker load</code></td><td>从tar文件加载镜像</td></tr></tbody></table><p><strong><code>docker commit</code>示例</strong>：</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 commit -m <span class="string">&quot;描述信息&quot;</span> 容器名 新镜像名:标签</span><br></pre></td></tr></table></figure><p><strong>镜像导出导入</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"># 导出镜像</span></span><br><span class="line">docker save -o image.tar 镜像名:标签</span><br><span class="line"></span><br><span class="line"><span class="comment"># 导入镜像</span></span><br><span class="line">docker load -i image.tar</span><br></pre></td></tr></table></figure><h2 id="第四章：镜像分享"><a href="#第四章：镜像分享" class="headerlink" title="第四章：镜像分享"></a>第四章：镜像分享</h2><table><thead><tr><th>命令</th><th>描述</th></tr></thead><tbody><tr><td><code>docker login</code></td><td>登录Docker Registry</td></tr><tr><td><code>docker tag</code></td><td>给镜像打标签</td></tr><tr><td><code>docker push</code></td><td>推送镜像到Registry</td></tr></tbody></table><p><strong>操作流程</strong>：</p><ol><li>登录仓库：<code>docker login registry.example.com</code></li><li>重命名镜像：<code>docker tag 原镜像 新镜像名:标签</code></li><li>推送镜像：<code>docker push 新镜像名:标签</code></li></ol><h2 id="第五章：数据存储"><a href="#第五章：数据存储" class="headerlink" title="第五章：数据存储"></a>第五章：数据存储</h2><h3 id="挂载方式"><a href="#挂载方式" class="headerlink" title="挂载方式"></a>挂载方式</h3><ol><li><strong>目录挂载</strong>：<code>-v /host/path:/container/path</code></li><li><strong>卷挂载</strong>：<code>-v volume_name:/container/path</code></li></ol><h3 id="卷管理"><a href="#卷管理" class="headerlink" title="卷管理"></a>卷管理</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><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 查看所有卷</span></span><br><span class="line">docker volume <span class="built_in">ls</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 创建卷</span></span><br><span class="line">docker volume create my_volume</span><br><span class="line"></span><br><span class="line"><span class="comment"># 查看卷详情</span></span><br><span class="line">docker volume inspect my_volume</span><br></pre></td></tr></table></figure><p><strong>注意</strong>：</p><ul><li>卷默认存储在<code>/var/lib/docker/volumes/</code></li><li>卷的生命周期独立于容器</li></ul><h2 id="第六章：网络管理"><a href="#第六章：网络管理" class="headerlink" title="第六章：网络管理"></a>第六章：网络管理</h2><h3 id="常用命令"><a href="#常用命令" class="headerlink" title="常用命令"></a>常用命令</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><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 创建网络</span></span><br><span class="line">docker network create my_network</span><br><span class="line"></span><br><span class="line"><span class="comment"># 查看网络</span></span><br><span class="line">docker network <span class="built_in">ls</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 查看网络详情</span></span><br><span class="line">docker network inspect my_network</span><br><span class="line"></span><br><span class="line"><span class="comment"># 删除网络</span></span><br><span class="line">docker network <span class="built_in">rm</span> my_network</span><br></pre></td></tr></table></figure><h3 id="容器连接网络"><a href="#容器连接网络" class="headerlink" title="容器连接网络"></a>容器连接网络</h3><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 run --network=my_network ...</span><br></pre></td></tr></table></figure><p><strong>特点</strong>：</p><ul><li>自定义网络支持DNS解析（容器名即主机名）</li><li>默认bridge网络不支持容器名解析</li></ul><h2 id="第七章：Docker-Compose"><a href="#第七章：Docker-Compose" class="headerlink" title="第七章：Docker Compose"></a>第七章：Docker Compose</h2><h3 id="基本命令"><a href="#基本命令" class="headerlink" title="基本命令"></a>基本命令</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><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 启动服务</span></span><br><span class="line">docker compose up -d</span><br><span class="line"></span><br><span class="line"><span class="comment"># 停止服务</span></span><br><span class="line">docker compose down</span><br><span class="line"></span><br><span class="line"><span class="comment"># 启停特定服务</span></span><br><span class="line">docker compose start/stop service_name</span><br><span class="line"></span><br><span class="line"><span class="comment"># 扩容服务</span></span><br><span class="line">docker compose scale service=num</span><br></pre></td></tr></table></figure><h3 id="YAML文件结构"><a href="#YAML文件结构" class="headerlink" title="YAML文件结构"></a>YAML文件结构</h3><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></pre></td><td class="code"><pre><span class="line"><span class="attr">name:</span> <span class="string">应用名称</span></span><br><span class="line"><span class="attr">services:</span></span><br><span class="line">  <span class="string">服务名:</span></span><br><span class="line">    <span class="attr">container_name:</span> <span class="string">容器名</span></span><br><span class="line">    <span class="attr">image:</span> <span class="string">镜像:标签</span></span><br><span class="line">    <span class="attr">ports:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">&quot;主机端口:容器端口&quot;</span></span><br><span class="line">    <span class="attr">environment:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">KEY=VALUE</span></span><br><span class="line">    <span class="attr">volumes:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">卷名:容器路径</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">主机路径:容器路径</span></span><br><span class="line">    <span class="attr">networks:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">网络名</span></span><br><span class="line">    <span class="attr">restart:</span> <span class="string">always</span></span><br><span class="line"></span><br><span class="line"><span class="attr">networks:</span></span><br><span class="line">  <span class="string">网络名:</span></span><br><span class="line"></span><br><span class="line"><span class="attr">volumes:</span></span><br><span class="line">  <span class="string">卷名:</span></span><br></pre></td></tr></table></figure><p><strong>注意</strong>：</p><ul><li>资源名称会添加<code>应用名_</code>前缀</li><li><code>down</code>命令可选参数：<ul><li><code>--rmi all</code>：删除相关镜像</li><li><code>-v</code>：删除关联卷</li></ul></li></ul><h2 id="第八章：Dockerfile"><a href="#第八章：Dockerfile" class="headerlink" title="第八章：Dockerfile"></a>第八章：Dockerfile</h2><h3 id="常用指令"><a href="#常用指令" class="headerlink" title="常用指令"></a>常用指令</h3><table><thead><tr><th>指令</th><th>说明</th><th>示例</th></tr></thead><tbody><tr><td><code>FROM</code></td><td>基础镜像</td><td><code>FROM ubuntu:20.04</code></td></tr><tr><td><code>RUN</code></td><td>执行命令</td><td><code>RUN apt-get update</code></td></tr><tr><td><code>CMD</code></td><td>容器启动命令</td><td><code>CMD [&quot;python&quot;, &quot;app.py&quot;]</code></td></tr><tr><td><code>EXPOSE</code></td><td>声明暴露端口</td><td><code>EXPOSE 8080</code></td></tr><tr><td><code>ENV</code></td><td>设置环境变量</td><td><code>ENV APP_HOME=/app</code></td></tr><tr><td><code>COPY</code></td><td>复制文件</td><td><code>COPY . /app</code></td></tr><tr><td><code>ADD</code></td><td>复制+解压文件</td><td><code>ADD app.tar.gz /app</code></td></tr><tr><td><code>WORKDIR</code></td><td>设置工作目录</td><td><code>WORKDIR /app</code></td></tr><tr><td><code>ENTRYPOINT</code></td><td>容器入口点</td><td><code>ENTRYPOINT [&quot;java&quot;, &quot;-jar&quot;]</code></td></tr><tr><td><code>VOLUME</code></td><td>创建挂载点</td><td><code>VOLUME /data</code></td></tr><tr><td><code>USER</code></td><td>指定运行用户</td><td><code>USER appuser</code></td></tr><tr><td><code>ARG</code></td><td>构建参数</td><td><code>ARG APP_VERSION=1.0</code></td></tr></tbody></table><p><strong>案例</strong>:</p><figure class="highlight plaintext"><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></pre></td><td class="code"><pre><span class="line">FROM openjdk:17</span><br><span class="line"></span><br><span class="line">LABEL author=alan</span><br><span class="line"></span><br><span class="line">COPY app.jar /app.jar</span><br><span class="line"></span><br><span class="line">EXPOSE 8080</span><br><span class="line"></span><br><span class="line">ENTRYPOINT [&quot;java&quot;,&quot;-jar&quot;,&quot;/app.jar&quot;]</span><br></pre></td></tr></table></figure><h3 id="构建镜像"><a href="#构建镜像" class="headerlink" title="构建镜像"></a>构建镜像</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></pre></td><td class="code"><pre><span class="line">docker build -t 镜像名:标签 -f Dockerfile路径 上下文路径</span><br><span class="line"><span class="comment"># 示例</span></span><br><span class="line">docker build -t myapp:1.0 -f ./Dockerfile .</span><br></pre></td></tr></table></figure>]]>
    </content>
    <id>https://honcho.cc.cd/posts/Docker%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0</id>
    <link href="https://honcho.cc.cd/posts/Docker%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0"/>
    <published>2025-03-30T12:20:23.000Z</published>
    <summary>
      <![CDATA[<h1 id="Docker-学习笔记"><a href="#Docker-学习笔记" class="headerlink" title="Docker 学习笔记"></a>Docker 学习笔记</h1><h2 id="第一章：镜像管理"><a href="#第一章：镜像管理"]]>
    </summary>
    <title>Docker学习笔记</title>
    <updated>2026-07-26T08:56:19.003Z</updated>
  </entry>
  <entry>
    <author>
      <name>Honcho</name>
    </author>
    <category term="应用" scheme="https://honcho.cc.cd/categories/%E5%BA%94%E7%94%A8/"/>
    <category term="NAS 无线打印机" scheme="https://honcho.cc.cd/tags/NAS-%E6%97%A0%E7%BA%BF%E6%89%93%E5%8D%B0%E6%9C%BA/"/>
    <content>
      <![CDATA[<p>NAS搭建一个打印服务器 ，连接在没有无线打印功能的打印机上，实现PC和手机的无线打印。从网上查找资料，发现各种说法不太一致，经反复试验，终于成功安装HP多功能一体机，现总结如下：<br>首先打印机连接树莓派USB接口，开机。将树莓派内网IP地址设为固定地址。安装CUPS(公共UNIX打印系统)：<br>sudo apt-get update<br>sudo apt-get install cups<br>然后关闭服务<br>sudo service cups stop<br>修改配置文件（最好拷贝一份备份）<br>sudo vi  &#x2F;etc&#x2F;cups&#x2F;cupsd.conf<br>可以看到 Listen localhost:631 表示CUPS在631端口提供服务。</p><p>将</p><figure class="highlight plaintext"><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">&lt; Location /&gt;</span><br><span class="line">Order allow,deny</span><br><span class="line">&lt;/ Location &gt;</span><br></pre></td></tr></table></figure><p>这一段替换为：</p><figure class="highlight plaintext"><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">&lt;Location /&gt;</span><br><span class="line"> Order allow,deny</span><br><span class="line"> Deny from all        (cups不接受任何主机的打印请求)</span><br><span class="line">Allow @local</span><br><span class="line">Allow from netaddress  (允许来自本机和netaddress的计算机使用打印服务)</span><br><span class="line">&lt;/Location &gt;  </span><br></pre></td></tr></table></figure><p>存盘退出后，启动服务<br>sudo service cups start<br>将pi用户 加入到 lpadmin，pi成为管理员用户<br>sudo usermod –a -G lpadmin pi<br>运行远程访问<br>sudo cupsctl –remote -any<br>重启CUPS服务<br>sudo &#x2F;etc&#x2F;init.d&#x2F;cups restart<br>打开PC浏览器，地址栏输入:http:&#x2F;&#x2F;树莓派地址:631&#x2F;admin</p>]]>
    </content>
    <id>https://honcho.cc.cd/posts/%E6%90%AD%E5%BB%BA%E6%89%93%E5%8D%B0%E6%9C%8D%E5%8A%A1%E5%99%A8</id>
    <link href="https://honcho.cc.cd/posts/%E6%90%AD%E5%BB%BA%E6%89%93%E5%8D%B0%E6%9C%8D%E5%8A%A1%E5%99%A8"/>
    <published>2022-12-24T16:14:39.000Z</published>
    <summary>
      <![CDATA[<p>NAS搭建一个打印服务器 ，连接在没有无线打印功能的打印机上，实现PC和手机的无线打印。从网上查找资料，发现各种说法不太一致，经反复试验，终于成功安装HP多功能一体机，现总结如下：<br>首先打印机连接树莓派USB接口，开机。将树莓派内网IP地址设为固定地址。安装CUPS(]]>
    </summary>
    <title>搭建打印服务器</title>
    <updated>2026-07-26T08:56:19.003Z</updated>
  </entry>
</feed>
