<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>量子广告</title>
  
  <subtitle>协作发展&amp;bull;畅想双赢</subtitle>
  <link href="http://blog.ynxiu.com/atom.xml" rel="self"/>
  
  <link href="http://blog.ynxiu.com/"/>
  <updated>2025-02-22T16:51:21.000Z</updated>
  <id>http://blog.ynxiu.com/</id>
  
  <author>
    <name>Aixiu</name>
    
  </author>
  
  <generator uri="https://hexo.io/">Hexo</generator>
  
  <entry>
    <title>全国各省份三网TCP-Ping-IPv4地址</title>
    <link href="http://blog.ynxiu.com/aixiu/b7ca37cd.html"/>
    <id>http://blog.ynxiu.com/aixiu/b7ca37cd.html</id>
    <published>2025-02-22T16:51:21.000Z</published>
    <updated>2025-02-22T16:51:21.000Z</updated>
    
    <content type="html"><![CDATA[<p>探针 TCP-Ping 自用 IPv4，来自百度智能云、白山云、火山引擎、华为云等云厂商 CDN 节点</p><p>仅供 TCP-Ping 使用，部分节点可能禁 ICMP-Ping 会导致监控异常</p><p>省流：<code>&#123;provinceCode&#125;-&#123;carrierCode&#125;-v4.ip.zstaticcdn.com:80</code>，下详</p><ul><li><h3 id="河北"><a href="#河北" class="headerlink" title="河北"></a>河北</h3></li></ul><table><thead><tr><th align="center">联通</th><th align="center">移动</th><th align="center">电信</th></tr></thead><tbody><tr><td align="center">he-cu-v4.ip.zstaticcdn.com:80</td><td align="center">he-cm-v4.ip.zstaticcdn.com:80</td><td align="center">he-ct-v4.ip.zstaticcdn.com:80</td></tr></tbody></table><ul><li><h3 id="山西"><a href="#山西" class="headerlink" title="山西"></a>山西</h3></li></ul><table><thead><tr><th align="center">联通</th><th align="center">移动</th><th align="center">电信</th></tr></thead><tbody><tr><td align="center">sx-cu-v4.ip.zstaticcdn.com:80</td><td align="center">sx-cm-v4.ip.zstaticcdn.com:80</td><td align="center">sx-ct-v4.ip.zstaticcdn.com:80</td></tr></tbody></table><span id="more"></span><ul><li><h3 id="辽宁"><a href="#辽宁" class="headerlink" title="辽宁"></a>辽宁</h3></li></ul><table><thead><tr><th align="center">联通</th><th align="center">移动</th><th align="center">电信</th></tr></thead><tbody><tr><td align="center">ln-cu-v4.ip.zstaticcdn.com:80</td><td align="center">ln-cm-v4.ip.zstaticcdn.com:80</td><td align="center">ln-ct-v4.ip.zstaticcdn.com:80</td></tr></tbody></table><ul><li><h3 id="吉林"><a href="#吉林" class="headerlink" title="吉林"></a>吉林</h3></li></ul><table><thead><tr><th align="center">联通</th><th align="center">移动</th><th align="center">电信</th></tr></thead><tbody><tr><td align="center">jl-cu-v4.ip.zstaticcdn.com:80</td><td align="center">jl-cm-v4.ip.zstaticcdn.com:80</td><td align="center">jl-ct-v4.ip.zstaticcdn.com:80</td></tr></tbody></table><ul><li><h3 id="黑龙江"><a href="#黑龙江" class="headerlink" title="黑龙江"></a>黑龙江</h3></li></ul><table><thead><tr><th align="center">联通</th><th align="center">移动</th><th align="center">电信</th></tr></thead><tbody><tr><td align="center">hl-cu-v4.ip.zstaticcdn.com:80</td><td align="center">hl-cm-v4.ip.zstaticcdn.com:80</td><td align="center">hl-ct-v4.ip.zstaticcdn.com:80</td></tr></tbody></table><ul><li><h3 id="江苏"><a href="#江苏" class="headerlink" title="江苏"></a>江苏</h3></li></ul><table><thead><tr><th align="center">联通</th><th align="center">移动</th><th align="center">电信</th></tr></thead><tbody><tr><td align="center">js-cu-v4.ip.zstaticcdn.com:80</td><td align="center">js-cm-v4.ip.zstaticcdn.com:80</td><td align="center">js-ct-v4.ip.zstaticcdn.com:80</td></tr></tbody></table><ul><li><h3 id="浙江"><a href="#浙江" class="headerlink" title="浙江"></a>浙江</h3></li></ul><table><thead><tr><th align="center">联通</th><th align="center">移动</th><th align="center">电信</th></tr></thead><tbody><tr><td align="center">zj-cu-v4.ip.zstaticcdn.com:80</td><td align="center">zj-cm-v4.ip.zstaticcdn.com:80</td><td align="center">zj-ct-v4.ip.zstaticcdn.com:80</td></tr></tbody></table><ul><li><h3 id="安徽"><a href="#安徽" class="headerlink" title="安徽"></a>安徽</h3></li></ul><table><thead><tr><th align="center">联通</th><th align="center">移动</th><th align="center">电信</th></tr></thead><tbody><tr><td align="center">ah-cu-v4.ip.zstaticcdn.com:80</td><td align="center">ah-cm-v4.ip.zstaticcdn.com:80</td><td align="center">ah-ct-v4.ip.zstaticcdn.com:80</td></tr></tbody></table><ul><li><h3 id="福建"><a href="#福建" class="headerlink" title="福建"></a>福建</h3></li></ul><table><thead><tr><th align="center">联通</th><th align="center">移动</th><th align="center">电信</th></tr></thead><tbody><tr><td align="center">fj-cu-v4.ip.zstaticcdn.com:80</td><td align="center">fj-cm-v4.ip.zstaticcdn.com:80</td><td align="center">fj-ct-v4.ip.zstaticcdn.com:80</td></tr></tbody></table><ul><li><h3 id="江西"><a href="#江西" class="headerlink" title="江西"></a>江西</h3></li></ul><table><thead><tr><th align="center">联通</th><th align="center">移动</th><th align="center">电信</th></tr></thead><tbody><tr><td align="center">jx-cu-v4.ip.zstaticcdn.com:80</td><td align="center">jx-cm-v4.ip.zstaticcdn.com:80</td><td align="center">jx-ct-v4.ip.zstaticcdn.com:80</td></tr></tbody></table><ul><li><h3 id="山东"><a href="#山东" class="headerlink" title="山东"></a>山东</h3></li></ul><table><thead><tr><th align="center">联通</th><th align="center">移动</th><th align="center">电信</th></tr></thead><tbody><tr><td align="center">sd-cu-v4.ip.zstaticcdn.com:80</td><td align="center">sd-cm-v4.ip.zstaticcdn.com:80</td><td align="center">sd-ct-v4.ip.zstaticcdn.com:80</td></tr></tbody></table><ul><li><h3 id="河南"><a href="#河南" class="headerlink" title="河南"></a>河南</h3></li></ul><table><thead><tr><th align="center">联通</th><th align="center">移动</th><th align="center">电信</th></tr></thead><tbody><tr><td align="center">ha-cu-v4.ip.zstaticcdn.com:80</td><td align="center">ha-cm-v4.ip.zstaticcdn.com:80</td><td align="center">ha-ct-v4.ip.zstaticcdn.com:80</td></tr></tbody></table><ul><li><h3 id="湖北"><a href="#湖北" class="headerlink" title="湖北"></a>湖北</h3></li></ul><table><thead><tr><th align="center">联通</th><th align="center">移动</th><th align="center">电信</th></tr></thead><tbody><tr><td align="center">hb-cu-v4.ip.zstaticcdn.com:80</td><td align="center">hb-cm-v4.ip.zstaticcdn.com:80</td><td align="center">hb-ct-v4.ip.zstaticcdn.com:80</td></tr></tbody></table><ul><li><h3 id="湖南"><a href="#湖南" class="headerlink" title="湖南"></a>湖南</h3></li></ul><table><thead><tr><th align="center">联通</th><th align="center">移动</th><th align="center">电信</th></tr></thead><tbody><tr><td align="center">hn-cu-v4.ip.zstaticcdn.com:80</td><td align="center">hn-cm-v4.ip.zstaticcdn.com:80</td><td align="center">hn-ct-v4.ip.zstaticcdn.com:80</td></tr></tbody></table><ul><li><h3 id="广东"><a href="#广东" class="headerlink" title="广东"></a>广东</h3></li></ul><table><thead><tr><th align="center">联通</th><th align="center">移动</th><th align="center">电信</th></tr></thead><tbody><tr><td align="center">gd-cu-v4.ip.zstaticcdn.com:80</td><td align="center">gd-cm-v4.ip.zstaticcdn.com:80</td><td align="center">gd-ct-v4.ip.zstaticcdn.com:80</td></tr></tbody></table><ul><li><h3 id="海南"><a href="#海南" class="headerlink" title="海南"></a>海南</h3></li></ul><table><thead><tr><th align="center">联通</th><th align="center">移动</th><th align="center">电信</th></tr></thead><tbody><tr><td align="center">hi-cu-v4.ip.zstaticcdn.com:80</td><td align="center">hi-cm-v4.ip.zstaticcdn.com:80</td><td align="center">hi-ct-v4.ip.zstaticcdn.com:80</td></tr></tbody></table><ul><li><h3 id="四川"><a href="#四川" class="headerlink" title="四川"></a>四川</h3></li></ul><table><thead><tr><th align="center">联通</th><th align="center">移动</th><th align="center">电信</th></tr></thead><tbody><tr><td align="center">sc-cu-v4.ip.zstaticcdn.com:80</td><td align="center">sc-cm-v4.ip.zstaticcdn.com:80</td><td align="center">sc-ct-v4.ip.zstaticcdn.com:80</td></tr></tbody></table><ul><li><h3 id="贵州"><a href="#贵州" class="headerlink" title="贵州"></a>贵州</h3></li></ul><table><thead><tr><th align="center">联通</th><th align="center">移动</th><th align="center">电信</th></tr></thead><tbody><tr><td align="center">gz-cu-v4.ip.zstaticcdn.com:80</td><td align="center">gz-cm-v4.ip.zstaticcdn.com:80</td><td align="center">gz-ct-v4.ip.zstaticcdn.com:80</td></tr></tbody></table><ul><li><h3 id="云南"><a href="#云南" class="headerlink" title="云南"></a>云南</h3></li></ul><table><thead><tr><th align="center">联通</th><th align="center">移动</th><th align="center">电信</th></tr></thead><tbody><tr><td align="center">yn-cu-v4.ip.zstaticcdn.com:80</td><td align="center">yn-cm-v4.ip.zstaticcdn.com:80</td><td align="center">yn-ct-v4.ip.zstaticcdn.com:80</td></tr></tbody></table><ul><li><h3 id="陕西"><a href="#陕西" class="headerlink" title="陕西"></a>陕西</h3></li></ul><table><thead><tr><th align="center">联通</th><th align="center">移动</th><th align="center">电信</th></tr></thead><tbody><tr><td align="center">sn-cu-v4.ip.zstaticcdn.com:80</td><td align="center">sn-cm-v4.ip.zstaticcdn.com:80</td><td align="center">sn-ct-v4.ip.zstaticcdn.com:80</td></tr></tbody></table><ul><li><h3 id="甘肃"><a href="#甘肃" class="headerlink" title="甘肃"></a>甘肃</h3></li></ul><table><thead><tr><th align="center">联通</th><th align="center">移动</th><th align="center">电信</th></tr></thead><tbody><tr><td align="center">gs-cu-v4.ip.zstaticcdn.com:80</td><td align="center">gs-cm-v4.ip.zstaticcdn.com:80</td><td align="center">gs-ct-v4.ip.zstaticcdn.com:80</td></tr></tbody></table><ul><li><h3 id="青海"><a href="#青海" class="headerlink" title="青海"></a>青海</h3></li></ul><table><thead><tr><th align="center">联通</th><th align="center">移动</th><th align="center">电信</th></tr></thead><tbody><tr><td align="center">qh-cu-v4.ip.zstaticcdn.com:80</td><td align="center">qh-cm-v4.ip.zstaticcdn.com:80</td><td align="center">qh-ct-v4.ip.zstaticcdn.com:80</td></tr></tbody></table><ul><li><h3 id="内蒙古"><a href="#内蒙古" class="headerlink" title="内蒙古"></a>内蒙古</h3></li></ul><table><thead><tr><th align="center">联通</th><th align="center">移动</th><th align="center">电信</th></tr></thead><tbody><tr><td align="center">nm-cu-v4.ip.zstaticcdn.com:80</td><td align="center">nm-cm-v4.ip.zstaticcdn.com:80</td><td align="center">nm-ct-v4.ip.zstaticcdn.com:80</td></tr></tbody></table><ul><li><h3 id="广西"><a href="#广西" class="headerlink" title="广西"></a>广西</h3></li></ul><table><thead><tr><th align="center">联通</th><th align="center">移动</th><th align="center">电信</th></tr></thead><tbody><tr><td align="center">gx-cu-v4.ip.zstaticcdn.com:80</td><td align="center">gx-cm-v4.ip.zstaticcdn.com:80</td><td align="center">gx-ct-v4.ip.zstaticcdn.com:80</td></tr></tbody></table><ul><li><h3 id="西藏"><a href="#西藏" class="headerlink" title="西藏"></a>西藏</h3></li></ul><table><thead><tr><th align="center">联通</th><th align="center">移动</th><th align="center">电信</th></tr></thead><tbody><tr><td align="center">xz-cu-v4.ip.zstaticcdn.com:80</td><td align="center">xz-cm-v4.ip.zstaticcdn.com:80</td><td align="center">xz-ct-v4.ip.zstaticcdn.com:80</td></tr></tbody></table><ul><li><h3 id="宁夏"><a href="#宁夏" class="headerlink" title="宁夏"></a>宁夏</h3></li></ul><table><thead><tr><th align="center">联通</th><th align="center">移动</th><th align="center">电信</th></tr></thead><tbody><tr><td align="center">nx-cu-v4.ip.zstaticcdn.com:80</td><td align="center">nx-cm-v4.ip.zstaticcdn.com:80</td><td align="center">nx-ct-v4.ip.zstaticcdn.com:80</td></tr></tbody></table><ul><li><h3 id="新疆"><a href="#新疆" class="headerlink" title="新疆"></a>新疆</h3></li></ul><table><thead><tr><th align="center">联通</th><th align="center">移动</th><th align="center">电信</th></tr></thead><tbody><tr><td align="center">xj-cu-v4.ip.zstaticcdn.com:80</td><td align="center">xj-cm-v4.ip.zstaticcdn.com:80</td><td align="center">xj-ct-v4.ip.zstaticcdn.com:80</td></tr></tbody></table><ul><li><h3 id="北京"><a href="#北京" class="headerlink" title="北京"></a>北京</h3></li></ul><table><thead><tr><th align="center">联通</th><th align="center">移动</th><th align="center">电信</th></tr></thead><tbody><tr><td align="center">bj-cu-v4.ip.zstaticcdn.com:80</td><td align="center">bj-cm-v4.ip.zstaticcdn.com:80</td><td align="center">bj-ct-v4.ip.zstaticcdn.com:80</td></tr></tbody></table><ul><li><h3 id="天津"><a href="#天津" class="headerlink" title="天津"></a>天津</h3></li></ul><table><thead><tr><th align="center">联通</th><th align="center">移动</th><th align="center">电信</th></tr></thead><tbody><tr><td align="center">tj-cu-v4.ip.zstaticcdn.com:80</td><td align="center">tj-cm-v4.ip.zstaticcdn.com:80</td><td align="center">tj-ct-v4.ip.zstaticcdn.com:80</td></tr></tbody></table><ul><li><h3 id="上海"><a href="#上海" class="headerlink" title="上海"></a>上海</h3></li></ul><table><thead><tr><th align="center">联通</th><th align="center">移动</th><th align="center">电信</th></tr></thead><tbody><tr><td align="center">sh-cu-v4.ip.zstaticcdn.com:80</td><td align="center">sh-cm-v4.ip.zstaticcdn.com:80</td><td align="center">sh-ct-v4.ip.zstaticcdn.com:80</td></tr></tbody></table><ul><li><h3 id="重庆"><a href="#重庆" class="headerlink" title="重庆"></a>重庆</h3></li></ul><table><thead><tr><th align="center">联通</th><th align="center">移动</th><th align="center">电信</th></tr></thead><tbody><tr><td align="center">cq-cu-v4.ip.zstaticcdn.com:80</td><td align="center">cq-cm-v4.ip.zstaticcdn.com:80</td><td align="center">cq-ct-v4.ip.zstaticcdn.com:80</td></tr></tbody></table>]]></content>
    
    
    <summary type="html">&lt;p&gt;探针 TCP-Ping 自用 IPv4，来自百度智能云、白山云、火山引擎、华为云等云厂商 CDN 节点&lt;/p&gt;
&lt;p&gt;仅供 TCP-Ping 使用，部分节点可能禁 ICMP-Ping 会导致监控异常&lt;/p&gt;
&lt;p&gt;省流：&lt;code&gt;&amp;#123;provinceCode&amp;#125;-&amp;#123;carrierCode&amp;#125;-v4.ip.zstaticcdn.com:80&lt;/code&gt;，下详&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;h3 id=&quot;河北&quot;&gt;&lt;a href=&quot;#河北&quot; class=&quot;headerlink&quot; title=&quot;河北&quot;&gt;&lt;/a&gt;河北&lt;/h3&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th align=&quot;center&quot;&gt;联通&lt;/th&gt;
&lt;th align=&quot;center&quot;&gt;移动&lt;/th&gt;
&lt;th align=&quot;center&quot;&gt;电信&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td align=&quot;center&quot;&gt;he-cu-v4.ip.zstaticcdn.com:80&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;he-cm-v4.ip.zstaticcdn.com:80&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;he-ct-v4.ip.zstaticcdn.com:80&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;ul&gt;
&lt;li&gt;&lt;h3 id=&quot;山西&quot;&gt;&lt;a href=&quot;#山西&quot; class=&quot;headerlink&quot; title=&quot;山西&quot;&gt;&lt;/a&gt;山西&lt;/h3&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th align=&quot;center&quot;&gt;联通&lt;/th&gt;
&lt;th align=&quot;center&quot;&gt;移动&lt;/th&gt;
&lt;th align=&quot;center&quot;&gt;电信&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td align=&quot;center&quot;&gt;sx-cu-v4.ip.zstaticcdn.com:80&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;sx-cm-v4.ip.zstaticcdn.com:80&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;sx-ct-v4.ip.zstaticcdn.com:80&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;</summary>
    
    
    
    <category term="学习笔记" scheme="http://blog.ynxiu.com/categories/notes/"/>
    
    
    <category term="ipv4" scheme="http://blog.ynxiu.com/tags/ipv4/"/>
    
    <category term="ping" scheme="http://blog.ynxiu.com/tags/ping/"/>
    
    <category term="TCP-Ping" scheme="http://blog.ynxiu.com/tags/TCP-Ping/"/>
    
  </entry>
  
  <entry>
    <title>Serv00搭建各种服务</title>
    <link href="http://blog.ynxiu.com/aixiu/72e96a30.html"/>
    <id>http://blog.ynxiu.com/aixiu/72e96a30.html</id>
    <published>2024-05-02T18:34:46.000Z</published>
    <updated>2024-05-02T18:34:46.000Z</updated>
    
    <content type="html"><![CDATA[<p>Serv00搭建各种服务</p><p><span class="exturl" data-url="aHR0cHM6Ly93d3cuc2VydjAwLmNvbS8=">这个平台<i class="fa fa-external-link-alt"></i></span>是个 Virtual Host ，没有 Root ，还是 FreeBSD 的系统，不是 Linux ，不太好用。但是优点是隔离性差， Memory 和 vCPU 能短时间内超过 100% 进行调用。</p><p>已经玩了不少时间了，起初看到 Github 上有使用 Serv00 搭建 Vless 节点的<span class="exturl" data-url="aHR0cHM6Ly9naXRodWIuY29tL3F3ZXItc2VhcmNoL3NlcnYwMC12bGVzcw==">仓库<i class="fa fa-external-link-alt"></i></span>，就上手玩了一下，后来发现极其不稳， screen 运行的进程总是过一段时间就掉了（后经网友讨论确认为Serv00有时候会重启宿主机），又得ssh上去启动，相当不友好，且后来又发现了 Hax 这样的玩具，就对 Serv00 视如敝履了。</p><p>但是这两天有<span class="exturl" data-url="aHR0cHM6Ly9qcS5xcS5jb20vP193dj0xMDI3Jms9cXNzakZ2QXM=">群友<i class="fa fa-external-link-alt"></i></span>突然提醒我才想起，我在 Hax 上用的很舒服的 pm2 也可以在 Serv00 上使用，这个十年有效期的玩具突然显得有用了起来。</p><p>经过我的尝试，成功在 Serv00 上部署了一些服务，接下来进行记录：</p><span id="more"></span><h1 id="面板自带功能"><a href="#面板自带功能" class="headerlink" title="面板自带功能"></a>面板自带功能</h1><h2 id="域名"><a href="#域名" class="headerlink" title="域名"></a>域名</h2><p>Serv00 上如果想要使用自己的域名，有两种方式，一种是通过 Cloudflare 提供的 Argo 隧道，不仅能绑域名，免配置 ssl ，还可以享受 Cloudflare 的免费 CDN 提速。第二种就是直接使用面板内自带的 DNS 服务器功能绑定自己的域名。</p><p>在 Panel 中进入 DNS zones 选项卡，使用 Add new zone 功能添加自己的域名或者自己的域名的子域，然后在 Zone list 中找到刚刚添加的域名，点击 Edit 查看 DNS 记录，把当中列出的全部记录添加到自己的域名的 DNS 记录中即可完成域名的绑定。</p><p>Serv00 本身对于绑定在其上的域名提供了许多的服务支持，这里所说的绑定在Serv00上的域名包括自己绑定的自己的域名，以及 Serv00 在注册账户时赠送的域名 <code>USERNAME.serv00.net</code> ，其服务包括免费的一键申请式的 SSL 证书、域名邮箱、 DNS 管理等多种功能。</p><h3 id="SSL证书申请"><a href="#SSL证书申请" class="headerlink" title="SSL证书申请"></a>SSL证书申请</h3><p>在 Panel 中进入 WWW websites 选项卡，点击 Manage SSL certificates ，在你需要申请 SSL 证书的域名的 A 记录指向的那个 IP 地址右侧点击 Manage ，再点击 Add certificate ， Type 选择 Generate Let’s Encrypt certificate ，Domain 选择要申请 SSL 证书的域名，再点击 Add 即可。</p><h3 id="域名邮箱"><a href="#域名邮箱" class="headerlink" title="域名邮箱"></a>域名邮箱</h3><p>Panel 中进入 E-mail 选项卡，注册账号后会自动注册一个域名邮箱，用户名是 <code>USERNAME@USERNAME.serv00.net</code> 是 Serv00 的账户密码。可以使用 Add new e-mail 功能新建邮箱账户。</p><p>也可以在 Add new alias 功能中新建别名邮箱，其别名邮箱功能也提供了和 Cloudflare 一样的 Catch-all 的 Advanced settings 选项，用来批量注册东西十分方便。</p><p>目前我的测试中，似乎没有在 Manage whitelist 中添加进白名单的域名邮箱发来的邮件全部都会被识别为垃圾邮件。所以有需要的话可以在 Manage whitlist 中添加你需要接受邮件的邮箱的域名，比如 <code>qq.com</code> 、 <code>gmail.com</code> 等等。</p><p>如果绑定了自己的域名，想要使用自己的域名配置域名邮箱的话，要在 Domain list 中找到自己的域名，点击最右边的 DKIM ， action 选择 Add DNS record automatically ，然后 Sign domain 以注册域名，使得新的域名邮箱能够通过一些邮件接收服务器的验证。</p><p>Open web client 功能就可以进入邮箱的登录页面了，其使用方法与大多数的邮箱相同，不再赘述。</p><h3 id="DNS管理"><a href="#DNS管理" class="headerlink" title="DNS管理"></a>DNS管理</h3><p>DNS zones 选项卡中在自己绑定的域名右侧点击 Edit ，即可查看当前域名的所有 DNS 记录，在 Add new record 中可以手动添加新的 DNS 记录，与大多数的域名服务商提供的 DNS 管理的功能类似。</p><h3 id="Proxy"><a href="#Proxy" class="headerlink" title="Proxy"></a>Proxy</h3><p>WWW websites 选项卡中可以根据语言不同添加多种网站，其中 PHP 的 <code>eval() function</code> 和 <code>exec() function</code> 都要在添加完网站后，在Manage &gt; Details 中打开。不同类型的网页其 Details 中的选项也都有差异，可以按需查看配置，这里重点讲一下 Proxy 类型指向自己的应用程序监听端口的配置。</p><p>Add new website 功能中， Domain 填写自己的域名或者 serv00 分配的域名，或者它们的子域，展开 Advanced settings， Website type 选择 Proxy ，Proxy target 选择 localhost ， Proxy port 选择自己的应用监听的端口，其他选项留空或者保持默认，点击 Add 即可。接下来就能使用刚刚填写的域名访问自己部署的对应端口的应用了。如果需要 https 访问，再按前文的步骤去申请 SSL 证书即可。</p><h2 id="运行自己的应用"><a href="#运行自己的应用" class="headerlink" title="运行自己的应用"></a>运行自己的应用</h2><p>Additional services 选项卡中找到 Run your own applications 项目，将其设置为 Enabled 即可。<strong>如果不开启这一项，自己的用户目录下的所有文件都无法添加可执行权限。</strong></p><h2 id="File-manager"><a href="#File-manager" class="headerlink" title="File manager"></a>File manager</h2><p>文件管理，有一定的在线编辑和预览的功能，兼具文件的上传下载，删除新建等各种管理功能，十分便利。</p><h2 id="Port-reservation"><a href="#Port-reservation" class="headerlink" title="Port reservation"></a>Port reservation</h2><p>需要使用端口都得在这申请。</p><h2 id="数据库"><a href="#数据库" class="headerlink" title="数据库"></a>数据库</h2><p>Serv00 提供了 MySQL 、 PostgreSQL 、 MongoDB 三种数据库，可以按需新建数据库、数据库用户。同时， Serv00 还提供了三种数据库的 webui ，十分便利。</p><p>需要注意的是，所有数据库在新建时，其用户名和数据库名都有一个 <code>mxxx_</code> 的前缀，在使用时容易被忽视。</p><h2 id="Cron-jobs"><a href="#Cron-jobs" class="headerlink" title="Cron jobs"></a>Cron jobs</h2><p>Cron jobs 选项卡提供了一些计划性任务的设置功能，在这里可以设置开机自启任务，或者定时循环任务，当然常用的还是开机自启任务的设定， Specify time 选择 After reboot 即为开机自启。</p><h1 id="部署应用前的一些准备工作"><a href="#部署应用前的一些准备工作" class="headerlink" title="部署应用前的一些准备工作"></a>部署应用前的一些准备工作</h1><p>在部署自己的应用之前，我建议提前安装好 pm2 以及 Cloudflared （可选）。前者是进程管理工具，用来方便开机自启，以及程序崩溃后自启，查阅进程运行情况等等。后者是 Cloudflare 的 Argo 隧道客户端，用它也可以给自己部署的应用加域名。特别是 Uptime Kuma ，更加推荐使用 Cloudflared 加域名，而不建议使用面板自带的 Proxy 。</p><h2 id="Pm2"><a href="#Pm2" class="headerlink" title="Pm2"></a>Pm2</h2><p>这个是重中之重，如果不是成功安装了 pm2 ，我甚至不会尝试探索 Serv00 这个玩具有什么用，所以 pm2 的安装方法记录在开头。</p><p>在 SSH 连接 serv00 之后，直接使用一键脚本安装 pm2 ：</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 &lt;(curl -s https://raw.githubusercontent.com/k0baya/alist_repl/main/serv00/install-pm2.sh)</span><br></pre></td></tr></table></figure><blockquote><p>如果安装完成后执行 <code>pm2</code> 提示命令未找到，你可以断开 SSH 连接，再重新连接，即可。</p></blockquote><h2 id="Cloudflared"><a href="#Cloudflared" class="headerlink" title="Cloudflared"></a>Cloudflared</h2><p>Cloudflared 官方仓库并没有构建 FreeBSD 系统上能够使用的二进制文件，但是同样的，我找到了<span class="exturl" data-url="aHR0cHM6Ly9jbG91ZGZsYXJlZC5ib3dyaW5nLnVrLw==">第三方的构筑<i class="fa fa-external-link-alt"></i></span>。使用第三方构筑的二进制文件，就能愉快的使用隧道了。</p><p>关于 Cloudflared 是什么，有什么用，ARGO_TOKEN 如何获取等部分，这里不再赘述，详细可以查看我的关于 CodeSandbox 和 Hax 的文章。</p><p>创建并进入Cloudflared 的工作目录：</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"><span class="built_in">mkdir</span> -p ~/domains/cloudflared &amp;&amp; <span class="built_in">cd</span> ~/domains/cloudflared</span><br></pre></td></tr></table></figure><p>下载 Cloudflared：</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">wget https://cloudflared.bowring.uk/binaries/cloudflared-freebsd-latest.7z &amp;&amp; 7z x cloudflared-freebsd-latest.7z &amp;&amp; <span class="built_in">rm</span> cloudflared-freebsd-latest.7z &amp;&amp; <span class="built_in">mv</span> -f ./temp/* ./cloudflared &amp;&amp; <span class="built_in">rm</span> -rf temp</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">./cloudflared tunnel --edge-ip-version auto --protocol http2 --heartbeat-interval 10s run --token ARGO_TOKEN</span><br></pre></td></tr></table></figure><blockquote><p>其中 ARGO_TOKEN 要替换成自己的。确定运行没有问题后，按 <code>Ctrl+c</code>即可停止运行。</p></blockquote><p>使用 pm2 启动 Cloudflared：</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">pm2 start ./cloudflared -- tunnel --edge-ip-version auto --protocol http2 --heartbeat-interval 10s run --token ARGO_TOKEN</span><br></pre></td></tr></table></figure><blockquote><p>其中 ARGO_TOKEN 要替换成自己的。</p></blockquote><p>接着去 CLoudflare 的面板中设置域名对应端口，即可使用域名访问自己搭建的服务了。</p><h2 id="安装-go1-22"><a href="#安装-go1-22" class="headerlink" title="安装 go1.22"></a>安装 go1.22</h2><blockquote><p>如果你有安装自己使用 go build 构建的需求，你可以选择安装最新的 go1.22 ，这里记录其安装过程。</p></blockquote><p>由于 Serv00 服务器上并未提供 go1.22 ，只提供了 go1.20.3 ，无法正常进行构建工作，所以需要手动安装 go1.22 环境。</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><span class="line">14</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 创建安装目录</span></span><br><span class="line"><span class="built_in">mkdir</span> -p ~/local/soft &amp;&amp; <span class="built_in">cd</span> ~/local/soft</span><br><span class="line"><span class="comment"># 下载编译好的 go1.22 的程序包</span></span><br><span class="line">wget https://dl.google.com/go/go1.22.0.freebsd-amd64.tar.gz</span><br><span class="line"><span class="comment"># 解压</span></span><br><span class="line">tar -xzvf go1.22.0.freebsd-amd64.tar.gz</span><br><span class="line"><span class="comment"># 删除压缩文件</span></span><br><span class="line"><span class="built_in">rm</span> go1.22.0.freebsd-amd64.tar.gz</span><br><span class="line"><span class="comment"># 修改 .profile 文件</span></span><br><span class="line"><span class="built_in">echo</span> <span class="string">&#x27;export PATH=~/local/soft/go/bin:$PATH&#x27;</span> &gt;&gt; ~/.profile</span><br><span class="line"><span class="comment"># 使 .profile 的修改生效</span></span><br><span class="line"><span class="built_in">source</span> ~/.profile</span><br><span class="line"><span class="comment"># 检查 go 版本</span></span><br><span class="line">go version</span><br></pre></td></tr></table></figure><h1 id="部署自己的应用"><a href="#部署自己的应用" class="headerlink" title="部署自己的应用"></a>部署自己的应用</h1><blockquote><p>关于设定 PHP 版本、插件、参数等配置均可参考文档的<span class="exturl" data-url="aHR0cHM6Ly9kb2NzLnNlcnYwMC5jb20vaHRhY2Nlc3Mv"> .htaccess <i class="fa fa-external-link-alt"></i></span>部分进行配置，由于 PHP 的应用部署实在是太简单，故本文不会过多介绍。</p></blockquote><h2 id="WordPress"><a href="#WordPress" class="headerlink" title="WordPress"></a>WordPress</h2><p>实际上在 serv00 的<span class="exturl" data-url="aHR0cHM6Ly9kb2NzLnNlcnYwMC5jb20v">文档<i class="fa fa-external-link-alt"></i></span>中有搭建网站的示例，没错，示例就有 WordPress ，实际上 WordPress 确实可以搭建，十分简单好用。这里不做过多介绍，按照文档一步步操作即可。</p><p>除了 WordPress 外，文档中还详细介绍了 Redis、Memcached、Imapsync、WP-CLI、Tomcat 等服务的搭建方法，有需求的都可以照着抄。</p><h2 id="KodBox"><a href="#KodBox" class="headerlink" title="KodBox"></a>KodBox</h2><p>虽然 Serv00 能够部署 KodBox，但是实在是不太好用。最直观的感受就是卡，因为 KodBox 运行期间需要调用多个 PHP 组件，而 Serv00 限制同时处理三个 PHP 进程，所以显得特别慢。其次， Serv00 没有 Root 权限，部分 PHP 插件没有安装，也无法安装，导致有一些 KodBox 的插件无法正常运行。</p><p>当然如果只是图新奇搭一个玩玩，也是可以的。下面是步骤：</p><p>首先在 Panel 中 Add a New Website ：</p><table><thead><tr><th>Key</th><th>Value</th></tr></thead><tbody><tr><td>Domain</td><td><code>xxx.USERNAME.serv00.net</code>（也可以把原有的USERNAME.serv00.net删掉后重新添加）</td></tr><tr><td>Website Type</td><td>PHP</td></tr></tbody></table><p>添加完新站点后，继续点击上方的 Manage SSL certificates ，接着在出口 IP 的右侧点击 Manage ，再点击 Add certificate ：</p><table><thead><tr><th>Type</th><th>Domain</th></tr></thead><tbody><tr><td>Generate Let’s Encrypted certificate</td><td>与刚刚添加的站点域名保持一致（如果是原有的<code>USERNAME.serv00.net</code> ，可以省略此步）</td></tr></tbody></table><p>接着SSH登入，并进入刚刚你新建的域名目录下的 <code>public_html</code> 路径下：</p><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="comment"># 安装KodBox</span></span><br><span class="line">bash &lt;(curl -s https://pan.rappit.site/d/shell/kodbox1.49/serv00-kodbox-install.sh)</span><br></pre></td></tr></table></figure><p>然后去 Panel 中的 MySQL 选项卡，新建数据库和用户，用以接入 KodBox 。再去 WWW Websites 选项卡中找到 用户名.serv00.net ，点击右侧的 Manage &gt; Details 进入设置，把 GZIP compression、Allow PHP eval() function、Allow PHP exec() function 三个功能打开。</p><p>然后使用浏览器访问你的 KodBxo 的域名，进行安装配置即可。初次启动需要较长的时间，请耐心等待。</p><h2 id="Lsky-Pro"><a href="#Lsky-Pro" class="headerlink" title="Lsky-Pro"></a><span class="exturl" data-url="aHR0cHM6Ly9naXRodWIuY29tL2xza3ktb3JnL2xza3ktcHJv">Lsky-Pro<i class="fa fa-external-link-alt"></i></span></h2><p>一开始看<span class="exturl" data-url="aHR0cHM6Ly9kb2NzLmxza3kucHJvLw==">兰空图床的文档<i class="fa fa-external-link-alt"></i></span>没看到 webdav 功能的相关介绍，只看到几个我都不用的存储介质，遂不感兴趣的搁置了，然而群友近日又提起，我打开 GitHub 才发现首页有个 Commit 的标题就是 webdav 相关，即兰空图床支持 webdav 。于是我便部署了一下，体验感觉还不错，简单易用。</p><p>本来无意在本篇文章再多写 PHP 相关的站点部署，因为过于简单。但是奈何群友有需求，遂做个简单的步骤记录：</p><p>首先在 Panel 中 Add a New Website ：</p><table><thead><tr><th>Key</th><th>Value</th></tr></thead><tbody><tr><td>Domain</td><td><code>xxx.USERNAME.serv00.net</code>（也可以把原有的USERNAME.serv00.net删掉后重新添加）</td></tr><tr><td>Website Type</td><td>PHP</td></tr></tbody></table><p>添加完新站点后，继续点击上方的 Manage SSL certificates ，接着在出口 IP 的右侧点击 Manage ，再点击 Add certificate ：</p><table><thead><tr><th>Type</th><th>Domain</th></tr></thead><tbody><tr><td>Generate Let’s Encrypted certificate</td><td>与刚刚添加的站点域名保持一致（如果是原有的<code>USERNAME.serv00.net</code> ，可以省略此步）</td></tr></tbody></table><p>接着SSH登入，并进入刚刚你新建的域名目录下：</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">release_info=$(curl -s https://api.github.com/repos/lsky-org/lsky-pro/releases/latest)</span><br><span class="line">asset_url=$(<span class="built_in">echo</span> <span class="string">&quot;<span class="variable">$release_info</span>&quot;</span> | jq -r <span class="string">&#x27;.assets[] | select(.name != &quot;source code&quot;) | .browser_download_url&#x27;</span>)</span><br><span class="line">curl -L -o temp.zip <span class="string">&quot;<span class="variable">$asset_url</span>&quot;</span> &amp;&amp; unzip -q temp.zip &amp;&amp; <span class="built_in">rm</span> -f temp.zip</span><br><span class="line"><span class="built_in">rm</span> -rf public_html &amp;&amp; <span class="built_in">ln</span> -s <span class="string">&quot;<span class="variable">$PWD</span>/public&quot;</span> <span class="string">&quot;<span class="variable">$PWD</span>/public_html&quot;</span></span><br></pre></td></tr></table></figure><p>接着在 Panel 中 WWW websites 选项卡内，点击自己刚刚创建的用于部署 Lsky-Pro 的域名的 Manage &gt; Details ，在 <strong>Open Basedir directories</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">:/usr/home/用户名/domains/xxx.USERNAME.serv00.net</span><br></pre></td></tr></table></figure><blockquote><p>记得把用户名和最末的域名换成自己的。</p></blockquote><p>然后把 <strong>GZIP compression</strong> 、<strong>Allow PHP eval() function</strong> 、<strong>Allow PHP exec() function</strong> 都打开，点击 save changes 保存。</p><p>然后去 Panel 中的 MySQL 选项卡，新建数据库和用户，用以接入 Lsky-Pro 。</p><p>然后使用浏览器访问你的 Lsky-Pro 的域名，进行安装配置即可。</p><blockquote><p>上面的应用不需要占用端口。</p></blockquote><hr><blockquote><p>下面的应用每一个都能够 &#x2F; 需要占用端口。</p></blockquote><h2 id="Vless"><a href="#Vless" class="headerlink" title="Vless"></a>Vless</h2><p>这个肯定是第一时间部署的，每次遇到这样的平台，第一时间总是想着能不能搭建节点。</p><h3 id="①"><a href="#①" class="headerlink" title="①"></a>①</h3><p>首先在 Panel 中放行一个端口，接着按照下表 Add a New Website ：</p><table><thead><tr><th>Key</th><th>Value</th></tr></thead><tbody><tr><td>Domain</td><td><code>xxx.USERNAME.serv00.net</code>（也可以把原有的 USERNAME.serv00.net 删掉后重新添加）</td></tr><tr><td>Website Type</td><td>proxy</td></tr><tr><td>Proxy Target</td><td>localhost</td></tr><tr><td>Proxy URL</td><td>留空</td></tr><tr><td>Proxy port</td><td>你准备用来部署 Vless 的端口</td></tr><tr><td>Use HTPPS</td><td>False</td></tr><tr><td>DNS support</td><td>True</td></tr></tbody></table><p>添加完新站点后，继续点击上方的 Manage SSL certificates ，接着在出口 IP 的右侧点击 Manage ，再点击 Add certificate ：</p><table><thead><tr><th>Type</th><th>Domain</th></tr></thead><tbody><tr><td>Generate Let’s Encrypted certificate</td><td>与刚刚添加的站点域名保持一致（如果是原有的<code>USERNAME.serv00.net</code> ，可以省略此步）</td></tr></tbody></table><p>接着SSH登入，并进入刚刚你新建的域名目录下：</p><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="comment"># 克隆源仓库</span></span><br><span class="line"><span class="built_in">rm</span> -rf public_html &amp;&amp; git <span class="built_in">clone</span> https://github.com/qwer-search/serv00-vless public_html &amp;&amp; <span class="built_in">cd</span> public_html &amp;&amp; <span class="built_in">rm</span> -f README.md</span><br></pre></td></tr></table></figure><p>使用vim编辑或者直接去 Panel 中的 File Manager 选项卡在线编辑 <code>app.js</code> 文件，修改端口为刚刚放行的端口。</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">npm install</span><br></pre></td></tr></table></figure><p>安装完毕后，使用pm2启动并守护vless进程：</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">pm2 start app.js --name vless</span><br></pre></td></tr></table></figure><p>接着去你的代理客户端软件中手动添加 vless 配置即可：</p><table><thead><tr><th>Key</th><th>Value</th></tr></thead><tbody><tr><td>地址</td><td>Panel中WWW Websites 选项卡里的你的 Domain name</td></tr><tr><td>端口</td><td>你放行的端口</td></tr><tr><td>用户 id</td><td>37a0bd7c-8b9f-4693-8916-bd1e2da0a817</td></tr><tr><td>传输协议</td><td>ws</td></tr><tr><td>伪装域名</td><td>同地址</td></tr><tr><td>ws path</td><td>&#x2F;</td></tr></tbody></table><p>上表没有给出的可以不填。</p><h3 id="②"><a href="#②" class="headerlink" title="②"></a>②</h3><p>首先在 Panel 中放行一个端口，接着按照下表 Add a New Website ：</p><table><thead><tr><th>Key</th><th>Value</th></tr></thead><tbody><tr><td>Domain</td><td><code>xxx.USERNAME.serv00.net</code>（也可以把原有的 USERNAME.serv00.net 删掉后重新添加）</td></tr><tr><td>Website Type</td><td>proxy</td></tr><tr><td>Proxy Target</td><td>localhost</td></tr><tr><td>Proxy URL</td><td>留空</td></tr><tr><td>Proxy port</td><td>你准备用来部署 Vless 的端口</td></tr><tr><td>Use HTPPS</td><td>False</td></tr><tr><td>DNS support</td><td>True</td></tr></tbody></table><p>添加完新站点后，继续点击上方的 Manage SSL certificates ，接着在出口 IP 的右侧点击 Manage ，再点击 Add certificate ：</p><table><thead><tr><th>Type</th><th>Domain</th></tr></thead><tbody><tr><td>Generate Let’s Encrypted certificate</td><td>与刚刚添加的站点域名保持一致（如果是原有的<code>USERNAME.serv00.net</code> ，可以省略此步）</td></tr></tbody></table><p>接着SSH登入，并进入刚刚你新建的域名目录下的 <code>public_html</code> 路径下，再使用 <code>npm</code> 命令安装 <code>@3Kmfi6HP/nodejs-proxy</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">npm install @3Kmfi6HP/nodejs-proxy</span><br></pre></td></tr></table></figure><blockquote><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">npm --registry http://r.cnpmjs.org install @3Kmfi6HP/nodejs-proxy</span><br></pre></td></tr></table></figure><p>这个源如果也不行了请自己找其他源替换。</p></blockquote><p>再使用 pm2 启动：</p><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="comment"># 记得把 PORT 替换成自己放行的端口。</span></span><br><span class="line">pm2 start npx --name vless -- nodejs-proxy -p PORT</span><br></pre></td></tr></table></figure><p>接着访问这个刚刚添加的站点，即可在网页上直接获取配置。<br><strong>哦对，有个小 <code>bug</code> ，端口需要改成 443 ，而网页中默认给的配置是 80 。</strong></p><blockquote><p>之所以说这个 <code>npm</code> 包不安全，是因为其配置在网页上都可以看到，而且网页设计不太合理，有一个不带 <code>uuid</code> 的中转页面，所以可以使用 <strong>fofa</strong> 、 <strong>shodan</strong> 等网络空间扫描工具批量扫出来，而且不止 Serv00 一个平台有人使用，如果你感兴趣，你可以去搜搜看，可以收获一大批 Vless 节点。</p><p>这里放一个 Serv00 上的，我在 fofa 上搜到的页面作为部署示例：<span class="exturl" data-url="aHR0cHM6Ly9wY2x3Z2R3di5zZXJ2MDAubmV0Lw==">https://pclwgdwv.serv00.net/<i class="fa fa-external-link-alt"></i></span></p></blockquote><h2 id="Alist"><a href="#Alist" class="headerlink" title="Alist"></a>Alist</h2><p>Alist 官方仓库没有构筑 FreeBSD 系统下能够运行的 Alist 可执行文件，但是我在 Github 上发现了一个使用 Github Workflow 自动构筑 FreeBSD 适用的 Alist 的<span class="exturl" data-url="aHR0cHM6Ly9naXRodWIuY29tL3V1YnVsYi9hbGlzdC1mcmVlYnNk">仓库<i class="fa fa-external-link-alt"></i></span>，使用这个仓库就可以很便利的在Serv00上部署 Alist。</p><p>首先在 Panel 中放行一个端口，接着按照下表 Add a New Website ：</p><table><thead><tr><th>Key</th><th>Value</th></tr></thead><tbody><tr><td>Domain</td><td><code>xxx.USERNAME.serv00.net</code>（也可以把原有的 USERNAME.serv00.net 删掉后重新添加）</td></tr><tr><td>Website Type</td><td>proxy</td></tr><tr><td>Proxy Target</td><td>localhost</td></tr><tr><td>Proxy URL</td><td>留空</td></tr><tr><td>Proxy port</td><td>你准备用来部署 Alist 的端口</td></tr><tr><td>Use HTPPS</td><td>False</td></tr><tr><td>DNS support</td><td>True</td></tr></tbody></table><p>添加完新站点后，继续点击上方的 Manage SSL certificates ，接着在出口 IP 的右侧点击 Manage ，再点击 Add certificate ：</p><table><thead><tr><th>Type</th><th>Domain</th></tr></thead><tbody><tr><td>Generate Let’s Encrypted certificate</td><td>与刚刚添加的站点域名保持一致（如果是原有的<code>USERNAME.serv00.net</code> ，可以省略此步）</td></tr></tbody></table><p>接着 SSH 登入，并进入刚刚你新建的域名目录下的 <code>public_html</code> 路径下：</p><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="comment"># 使用一键命令安装 Alist</span></span><br><span class="line">wget -O alist-freebsd.sh https://raw.githubusercontent.com/k0baya/alist_repl/main/serv00/alist-freebsd.sh &amp;&amp; sh alist-freebsd.sh</span><br></pre></td></tr></table></figure><p>在 Panel 中进入 MySQL 选项卡，使用 Add database 功能新建一个数据库。</p><blockquote><p>密码要求含有大写字母、小写字母和数字三种字符，且长度必须超过6个字符。</p></blockquote><p>接下来进入 File manager 选项卡，进入 <code>~/domains/xxx.USERNAME.serv00.net/public_html/data</code> 路径，可以看到一个名为 <code>config.json</code> 的文件，右键点击，选择 View&#x2F;Edit &gt; Source Editor ，进行编辑：</p><p>我主要修改了 CDN、database、scheme 三个部分，其中CDN可以在 <span class="exturl" data-url="aHR0cHM6Ly9saW5rLnpoaWh1LmNvbS8/dGFyZ2V0PWh0dHBzOi8vYWxpc3Qubm4uY2kvemgvY29uZmlnL2NvbmZpZ3VyYXRpb24uaHRtbCUyM2Nkbg==">Alist 的官方文档<i class="fa fa-external-link-alt"></i></span>找到，请选择你本地网络连接速度最快的一个。</p><p>scheme 部分，我选择修改 adress 为 <code>127.0.0.1</code>本地回环，是为了避免被他人使用 <code>http://ip:port</code>的方式进行访问。至于自己怎么访问，我在本文后面的部分会进行介绍。port 要改成自己前面放行的端口。</p><p>database 部分，type 需要改成 <code>mysql</code> ，host 填写你在注册邮件中看到的 mysql 的地址， port 是默认的 3306，用户名、密码、数据库名则按照你创建的情况进行填写。</p><blockquote><p>最新版本的 Alist 如果不想开启 S3 Server，请把对应的配置文件中的端口配置为 0 。</p></blockquote><p>改完之后，点击 save 保存，接着回到 SSH 窗口中进行操作：</p><p>测试启动 Alist：</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">./alist server</span><br></pre></td></tr></table></figure><blockquote><p>确定运行没有问题后，按 <code>Ctrl+c</code>即可停止运行。</p></blockquote><p>使用 pm2 启动并管理 alist：</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">pm2 start ./alist -- server</span><br></pre></td></tr></table></figure><blockquote><p>同样的，你还可以使用 Cloudflared 隧道添加域名，而不选择使用 Proxy 。</p></blockquote><h2 id="Synctv"><a href="#Synctv" class="headerlink" title="Synctv"></a><span class="exturl" data-url="aHR0cHM6Ly9zeW5jdHYud2lraS8=">Synctv<i class="fa fa-external-link-alt"></i></span></h2><p>群友仿照 alist-freebsd 的仓库的 workflow 进行构筑的。部署简单，与 alist 类似。首先在 Panel 中放行一个端口，接着按照下表 Add a New Website ：</p><table><thead><tr><th>Key</th><th>Value</th></tr></thead><tbody><tr><td>Domain</td><td><code>xxx.USERNAME.serv00.net</code>（也可以把原有的 USERNAME.serv00.net 删掉后重新添加）</td></tr><tr><td>Website Type</td><td>proxy</td></tr><tr><td>Proxy Target</td><td>localhost</td></tr><tr><td>Proxy URL</td><td>留空</td></tr><tr><td>Proxy port</td><td>你准备用来部署 Synctv 的端口</td></tr><tr><td>Use HTPPS</td><td>False</td></tr><tr><td>DNS support</td><td>True</td></tr></tbody></table><p>添加完新站点后，继续点击上方的 Manage SSL certificates ，接着在出口 IP 的右侧点击 Manage ，再点击 Add certificate ：</p><table><thead><tr><th>Type</th><th>Domain</th></tr></thead><tbody><tr><td>Generate Let’s Encrypted certificate</td><td>与刚刚添加的站点域名保持一致（如果是原有的<code>USERNAME.serv00.net</code> ，可以省略此步）</td></tr></tbody></table><p>接着 SSH 登入，并进入刚刚你新建的域名目录下的 <code>public_html</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></pre></td><td class="code"><pre><span class="line"><span class="comment"># 下载可执行文件</span></span><br><span class="line">release_info=$(curl -s https://api.github.com/repos/shangskr/synctv-freebsd/releases/latest)</span><br><span class="line">asset_url=$(<span class="built_in">echo</span> <span class="string">&quot;<span class="variable">$release_info</span>&quot;</span> | jq -r <span class="string">&#x27;.assets[] | select(.name != &quot;source code&quot;) | .browser_download_url&#x27;</span>)</span><br><span class="line">curl -L -o synctv <span class="string">&quot;<span class="variable">$asset_url</span>&quot;</span> &amp;&amp; <span class="built_in">chmod</span> +x synctv</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><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="built_in">cat</span> &gt; start.sh &lt;&lt; <span class="string">EOF</span></span><br><span class="line"><span class="string">#!/bin/sh</span></span><br><span class="line"><span class="string"># 如果不希望被使用 http://ip:port 的方式访问，取消注释下一行</span></span><br><span class="line"><span class="string"># export SYNCTV_SERVER_LISTEN=127.0.0.1</span></span><br><span class="line"><span class="string"># 把下一行的最末的PORT改成自己放行的端口</span></span><br><span class="line"><span class="string">export SYNCTV_SERVER_PORT=PORT</span></span><br><span class="line"><span class="string">exec ./synctv server --data-dir ./</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></pre></td><td class="code"><pre><span class="line"><span class="built_in">chmod</span> +x start.sh</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">./start.sh</span><br></pre></td></tr></table></figure><blockquote><p>确定运行没有问题后，按 <code>Ctrl+c</code>即可停止运行。</p></blockquote><p>使用pm2启动并管理：</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">pm2 start ./start.sh --name synctv</span><br></pre></td></tr></table></figure><blockquote><p>同样的，你还可以使用 Cloudflared 隧道添加域名，而不选择使用 Proxy 。</p></blockquote><h2 id="One-api"><a href="#One-api" class="headerlink" title="One-api"></a>One-api</h2><p><del>源仓库没有提供freebsd平台的二进制文件，需要自己构建，但是很简单</del>。我已经写了一个仓库用于自动化构建 freebsd 版本的 one-api 二进制文件，可以直接下载使用。</p><blockquote><p>如果你想使用 New-API ，可以使用这个仓库<span class="exturl" data-url="aHR0cHM6Ly9naXRodWIuY29tL2swYmF5YS9uZXctYXBpLWZyZWVic2Q=">k0baya&#x2F;new-api-freebsd<i class="fa fa-external-link-alt"></i></span>，用法与本节介绍的 One-API 基本一致，对比One-API添加了一些更方便的功能。也许之后 One-API 也会加入这些功能。</p></blockquote><p>首先在 Panel 中放行一个端口，接着按照下表 Add a New Website ：</p><table><thead><tr><th>Key</th><th>Value</th></tr></thead><tbody><tr><td>Domain</td><td><code>xxx.USERNAME.serv00.net</code>（也可以把原有的USERNAME.serv00.net删掉后重新添加）</td></tr><tr><td>Website Type</td><td>proxy</td></tr><tr><td>Proxy Target</td><td>localhost</td></tr><tr><td>Proxy URL</td><td>留空</td></tr><tr><td>Proxy port</td><td>你准备用来部署 One-API 的端口</td></tr><tr><td>Use HTPPS</td><td>False</td></tr><tr><td>DNS support</td><td>True</td></tr></tbody></table><p>添加完新站点后，继续点击上方的 Manage SSL certificates ，接着在出口 IP 的右侧点击 Manage ，再点击 Add certificate ：</p><table><thead><tr><th>Type</th><th>Domain</th></tr></thead><tbody><tr><td>Generate Let’s Encrypted certificate</td><td>与刚刚添加的站点域名保持一致（如果是原有的<code>USERNAME.serv00.net</code> ，可以省略此步）</td></tr></tbody></table><p>接着 SSH 登入，并进入刚刚你新建的域名目录下的 <code>public_html</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></pre></td><td class="code"><pre><span class="line"><span class="comment"># 下载 one-api</span></span><br><span class="line">release_info=$(curl -s https://api.github.com/repos/k0baya/one-api-freebsd/releases/latest)</span><br><span class="line">asset_url=$(<span class="built_in">echo</span> <span class="string">&quot;<span class="variable">$release_info</span>&quot;</span> | jq -r <span class="string">&#x27;.assets[] | select(.name != &quot;source code&quot;) | .browser_download_url&#x27;</span>)</span><br><span class="line">curl -L -o one-api <span class="string">&quot;<span class="variable">$asset_url</span>&quot;</span> &amp;&amp; <span class="built_in">chmod</span> +x one-api</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><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="built_in">cat</span> &gt; start.sh &lt;&lt; <span class="string">EOF</span></span><br><span class="line"><span class="string">#!/bin/sh</span></span><br><span class="line"><span class="string"># 如果你有设置主题的需要，可以取消注释下一行，然后按照自己的需求设置。</span></span><br><span class="line"><span class="string"># export THEME=&quot;berry&quot;</span></span><br><span class="line"><span class="string">export TIKTOKEN_CACHE_DIR=&quot;$PWD&quot;</span></span><br><span class="line"><span class="string"># 把下一行的 PORT 改为自己放行的端口</span></span><br><span class="line"><span class="string">exec ./one-api --port PORT --log-dir ./logs</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></pre></td><td class="code"><pre><span class="line"><span class="built_in">chmod</span> +x start.sh</span><br></pre></td></tr></table></figure><p>保存后回到 terminal 中，测试运行：</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">./start.sh</span><br></pre></td></tr></table></figure><blockquote><p>确定运行没有问题后，按 <code>Ctrl+c</code>即可停止运行。</p></blockquote><p>使用pm2启动并管理：</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">pm2 start ./start.sh --name one-api</span><br></pre></td></tr></table></figure><blockquote><p>同样的，你还可以使用 Cloudflared 隧道添加域名，而不选择使用 Proxy 。</p></blockquote><h2 id="Uptime-Kuma"><a href="#Uptime-Kuma" class="headerlink" title="Uptime-Kuma"></a>Uptime-Kuma</h2><p>受限于 FreeBSD 的平台限制，1.23版本内置了 PlayWright ，无法运行，所以只能安装 1.22 版本。切记先去 Panel 中放行 TCP 端口。</p><p>首先在 Panel 中放行一个端口，接着按照下表 Add a New Website ：</p><table><thead><tr><th>Key</th><th>Value</th></tr></thead><tbody><tr><td>Domain</td><td><code>xxx.USERNAME.serv00.net</code>（也可以把原有的USERNAME.serv00.net删掉后重新添加）</td></tr><tr><td>Website Type</td><td>proxy</td></tr><tr><td>Proxy Target</td><td>localhost</td></tr><tr><td>Proxy URL</td><td>留空</td></tr><tr><td>Proxy port</td><td>你准备用来部署 Uptime-Kuma 的端口</td></tr><tr><td>Use HTPPS</td><td>False</td></tr><tr><td>DNS support</td><td>True</td></tr></tbody></table><p>添加完新站点后，继续点击上方的 Manage SSL certificates ，接着在出口 IP 的右侧点击 Manage ，再点击 Add certificate ：</p><table><thead><tr><th>Type</th><th>Domain</th></tr></thead><tbody><tr><td>Generate Let’s Encrypted certificate</td><td>与刚刚添加的站点域名保持一致（如果是原有的<code>USERNAME.serv00.net</code> ，可以省略此步）</td></tr></tbody></table><p>接着 SSH 登入，并进入刚刚你新建的域名目录下：</p><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="comment"># 下载 v1.22.1 版本的源代码</span></span><br><span class="line"><span class="built_in">cd</span> ~/domains &amp;&amp; wget https://github.com/louislam/uptime-kuma/archive/refs/tags/1.22.1.zip &amp;&amp; unzip 1.22.1.zip &amp;&amp; <span class="built_in">rm</span> -rf public_html &amp;&amp; <span class="built_in">mv</span> -f uptime-kuma-1.22.1 public_html &amp;&amp; <span class="built_in">rm</span> -f 1.22.1.zip &amp;&amp; <span class="built_in">cd</span> public_html</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">npm ci --production</span><br></pre></td></tr></table></figure><p>下载dist文件：</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">wget https://github.com/louislam/uptime-kuma/releases/download/1.22.1/dist.tar.gz &amp;&amp; tar -xzvf dist.tar.gz &amp;&amp; <span class="built_in">rm</span> dist.tar.gz</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">npm install</span><br></pre></td></tr></table></figure><p>安装过程中多少会有报错，无视就好，实际上最后可以正常运行。内置的Cloudflared反向代理在FreeBSD平台上无法使用，但是可以使用上述的外置的Cloudflared进行反代，使用自己的域名。</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">node server/server.js --port=PORT</span><br></pre></td></tr></table></figure><blockquote><p>记得把PORT替换成你放行的端口。确定运行没有问题后，按 <code>Ctrl+c</code>即可停止运行。</p></blockquote><p>使用pm2管理后台运行：</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">pm2 start server/server.js --name uptime-kuma -- --port=PORT</span><br></pre></td></tr></table></figure><blockquote><p>记得把PORT替换成你放行的端口。</p></blockquote><blockquote><p>如果你不希望自己的Uptime-Kuma被人使用 <code>http://IP:PORT</code>的方式访问，你可以在最后的执行命令添加 <code>--host=127.0.0.1</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">pm2 start server/server.js --name uptime-kuma -- --port=PORT --host=127.0.0.1</span><br></pre></td></tr></table></figure></blockquote><blockquote><p>同样的，你还可以使用 Cloudflared 隧道添加域名，而不选择使用 Proxy 。</p></blockquote><h2 id="Bingo（暂时无法正常使用）"><a href="#Bingo（暂时无法正常使用）" class="headerlink" title="Bingo（暂时无法正常使用）"></a>Bingo（暂时无法正常使用）</h2><p>先放行一个端口。在 Panel 中进入 File manager 选项卡，点击左侧的 My Files 进入你的用户根目录，找到 <code>.profile</code>文件，右键选择 View&#x2F;Edit &gt; Choose other &gt;Source Editor 进行编辑，在最末加上以上两行并保存：</p><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">alias</span> node=<span class="string">&#x27;node20&#x27;</span></span><br><span class="line"><span class="built_in">alias</span> npm=<span class="string">&#x27;npm20&#x27;</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></pre></td><td class="code"><pre><span class="line"><span class="built_in">source</span> ~/.profile</span><br></pre></td></tr></table></figure><blockquote><p>先新建一个目录用于存放 Bingo 的相关文件，进入目录后执行下述操作。</p></blockquote><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">git <span class="built_in">clone</span> https://github.com/weaigc/bingo</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"><span class="built_in">cd</span> bingo</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">npm20 install</span><br></pre></td></tr></table></figure><p>下载build好的 <code>.next</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">wget -O next.tar.gz https://pan.saika.free.hr/d/local/next.tar.gz &amp;&amp; tar -xzvf next.tar.gz &amp;&amp; <span class="built_in">rm</span> next.tar.gz</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"><span class="built_in">cp</span> .env.example .<span class="built_in">env</span></span><br></pre></td></tr></table></figure><p>接着在 Panel 中进入 File manager 选项卡，进入Bingo 源码所在的目录，找到 <code>server.js</code>文件，右键选择 View&#x2F;Edit &gt; Choose other &gt;Source Editor 进行编辑，修改第7行中的端口为你放行的端口。再编辑 <code>.env</code>文件，添加你的 <code>BING_HEADER</code>。</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">npm20 run start</span><br></pre></td></tr></table></figure><blockquote><p>确定运行没有问题后，按 <code>Ctrl+c</code>即可停止运行。</p></blockquote><p>使用pm2启动并管理：</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">pm2 start npm --name bingo -- run start</span><br></pre></td></tr></table></figure><h2 id="Refresh-gpt-chat"><a href="#Refresh-gpt-chat" class="headerlink" title="Refresh-gpt-chat"></a>Refresh-gpt-chat</h2><p>用来对接 ninja、warpgpt 等能够使用 access_Token 作为 API Key 请求 GPT 的工具，以使用永久有效期的 Refresh_token 来获取更好的体验。</p><p>首先在 Panel 中放行一个端口，接着按照下表 Add a New Website ：</p><table><thead><tr><th>Key</th><th>Value</th></tr></thead><tbody><tr><td>Domain</td><td><code>xxx.USERNAME.serv00.net</code>（也可以把原有的 USERNAME.serv00.net 删掉后重新添加）</td></tr><tr><td>Website Type</td><td>proxy</td></tr><tr><td>Proxy Target</td><td>localhost</td></tr><tr><td>Proxy URL</td><td>留空</td></tr><tr><td>Proxy port</td><td>你准备用来部署 Refresh-gpt-chat 的端口</td></tr><tr><td>Use HTPPS</td><td>False</td></tr><tr><td>DNS support</td><td>True</td></tr></tbody></table><p>添加完新站点后，继续点击上方的 Manage SSL certificates ，接着在出口 IP 的右侧点击 Manage ，再点击 Add certificate ：</p><table><thead><tr><th>Type</th><th>Domain</th></tr></thead><tbody><tr><td>Generate Let’s Encrypted certificate</td><td>与刚刚添加的站点域名保持一致（如果是原有的<code>USERNAME.serv00.net</code> ，可以省略此步）</td></tr></tbody></table><p>接着 SSH 登入，并进入刚刚你新建的域名目录下的 <code>public_html</code> 路径下：</p><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="comment"># 下载 refresh-gpt-chat</span></span><br><span class="line">wget -O refresh-gpt-chat.jar https://github.com/Yanyutin753/refresh-gpt-chat/releases/download/v0.0.3/refresh-gpt-chat-0.0.3-SNAPSHOT.jar</span><br></pre></td></tr></table></figure><p>使用 pm2 启动：</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">pm2 start java19 --name refresh-gpt-chat -- -jar refresh-gpt-chat.jar --server.port=端口 --server.servlet.context-path=/ --getAccessTokenUrl=https://你的ninja地址/auth/refresh_token --chatUrl=https://你的ninja地址/v1/chat/completions</span><br></pre></td></tr></table></figure><p>再套域名，接下来就可以直接使用 <code>https://你套的域名/v1/chat/completions/</code> 当作API端点，使用 <code>refresh_token</code> 做 API_Keys ，使用 ChatGPT 了。</p><p>然后在 one-api 中添加自定义渠道， <code>Base URL</code> 填写你 <code>https://你套的域名</code>，模型填入你的 refresh_token 对应的账号所支持的模型，如果和我一样手持大把 3.5 的账号想用来做 API 用，可以选择全部 GPT3.5 的相关模型，然后在 <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><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="punctuation">&#123;</span></span><br><span class="line">  <span class="attr">&quot;gpt-3.5-turbo-0301&quot;</span><span class="punctuation">:</span> <span class="string">&quot;gpt-3.5-turbo&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;gpt-3.5-turbo-0613&quot;</span><span class="punctuation">:</span> <span class="string">&quot;gpt-3.5-turbo&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;gpt-3.5-turbo-16k&quot;</span><span class="punctuation">:</span> <span class="string">&quot;gpt-3.5-turbo&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;gpt-3.5-turbo-16k-0613&quot;</span><span class="punctuation">:</span> <span class="string">&quot;gpt-3.5-turbo&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;gpt-3.5-turbo-1106&quot;</span><span class="punctuation">:</span> <span class="string">&quot;gpt-3.5-turbo&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;gpt-3.5-turbo-instruct&quot;</span><span class="punctuation">:</span> <span class="string">&quot;gpt-3.5-turbo&quot;</span></span><br><span class="line"><span class="punctuation">&#125;</span></span><br></pre></td></tr></table></figure><p>密钥填写你的 <code>refresh_token</code>即可，如果你有多个账号，可以将批量勾选上，然后一行写一个 <code>refresh_token</code>。</p><blockquote><p>同样的，你还可以使用 Cloudflared 隧道添加域名，而不选择使用 Proxy 。</p></blockquote><h2 id="Gpt4-copilot-java"><a href="#Gpt4-copilot-java" class="headerlink" title="Gpt4-copilot-java"></a><span class="exturl" data-url="aHR0cHM6Ly9naXRodWIuY29tL1lhbnl1dGluNzUzL2dwdDQtY29waWxvdC1qYXZhLXNo">Gpt4-copilot-java<i class="fa fa-external-link-alt"></i></span></h2><p>支持 cocopilot 的 ccu 和 copilot 的 ghu 调用 copilot 转 GPT-4 的接口转换工具。 Java 写的，可以在 Serv00 运行。</p><blockquote><p>目前更推荐这个方法：<span class="exturl" data-url="aHR0cHM6Ly9ibG9nLnJhcHBpdC5zaXRlLzIwMjQvMDIvMDcvY29waWxvdC10by1hcGktZnJlZS10ZW1wLyNsdmd1YW5qdW4tY29waWxvdC10by1jaGF0Z3B0NA==">lvguanjun&#x2F;copilot-to-chatgpt4<i class="fa fa-external-link-alt"></i></span><br>比起 Gpt4-copilot-java 更轻量更强大。</p></blockquote><p>首先在 Panel 中放行一个端口，接着按照下表 Add a New Website ：</p><table><thead><tr><th>Key</th><th>Value</th></tr></thead><tbody><tr><td>Domain</td><td><code>xxx.USERNAME.serv00.net</code>（也可以把原有的USERNAME.serv00.net删掉后重新添加）</td></tr><tr><td>Website Type</td><td>proxy</td></tr><tr><td>Proxy Target</td><td>localhost</td></tr><tr><td>Proxy URL</td><td>留空</td></tr><tr><td>Proxy port</td><td>你准备用来部署 Gpt4-copilot-java 的端口</td></tr><tr><td>Use HTPPS</td><td>False</td></tr><tr><td>DNS support</td><td>True</td></tr></tbody></table><p>添加完新站点后，继续点击上方的 Manage SSL certificates ，接着在出口 IP 的右侧点击 Manage ，再点击 Add certificate ：</p><table><thead><tr><th>Type</th><th>Domain</th></tr></thead><tbody><tr><td>Generate Let’s Encrypted certificate</td><td>与刚刚添加的站点域名保持一致（如果是原有的<code>USERNAME.serv00.net</code> ，可以省略此步）</td></tr></tbody></table><p>接着 SSH 登入，并进入刚刚你新建的域名目录下的 <code>public_html</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></pre></td><td class="code"><pre><span class="line"><span class="comment"># 下载 fat jar 包</span></span><br><span class="line">RELEASE_INFO=$(curl -s <span class="string">&quot;https://api.github.com/repos/Yanyutin753/gpt4-copilot-java-sh/releases/latest&quot;</span>)</span><br><span class="line">JAR_DOWNLOAD_URL=$(<span class="built_in">echo</span> <span class="string">&quot;<span class="variable">$RELEASE_INFO</span>&quot;</span> | jq -r <span class="string">&#x27;.assets[] | select(.name|test(&quot;.jar$&quot;)) | .browser_download_url&#x27;</span>)</span><br><span class="line">curl -L -o gpt4-copilot-java.jar <span class="string">&quot;<span class="variable">$JAR_DOWNLOAD_URL</span>&quot;</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></pre></td><td class="code"><pre><span class="line"><span class="comment"># 把PORT改为自己放行的端口，最后的server.servlet.context-path参数可以改成自己喜欢的尾缀</span></span><br><span class="line">java19 -jar gpt4-copilot-java.jar --server.port=PORT --server.servlet.context-path=/</span><br></pre></td></tr></table></figure><blockquote><p>测试没有问题之后，按 <code>Ctrl+c</code>即可停止运行。</p></blockquote><p>使用 pm2 启动并管理：</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">pm2 start java19 --name gpt4-copilot-java -- -jar gpt4-copilot-java.jar --server.port=PORT --server.servlet.context-path=/</span><br></pre></td></tr></table></figure><blockquote><p>始皇的公车：ghu_ThisIsARealFreeCopilotKeyByCoCopilot （已失效）</p><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><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">curl --location <span class="string">&#x27;http(s)://ip:port_or_URL/cocopilot/v1/chat/completions&#x27;</span> </span><br><span class="line">--header <span class="string">&#x27;Content-Type: application/json&#x27;</span> </span><br><span class="line">--header <span class="string">&#x27;Authorization: Bearer ghu_ThisIsARealFreeCopilotKeyByCoCopilot&#x27;</span> </span><br><span class="line">--data <span class="string">&#x27;&#123;</span></span><br><span class="line"><span class="string">&quot;model&quot;: &quot;gpt-4&quot;,</span></span><br><span class="line"><span class="string">&quot;messages&quot;: [&#123;&quot;role&quot;: &quot;user&quot;, &quot;content&quot;: &quot;鲁迅打周树人&quot;&#125;]</span></span><br><span class="line"><span class="string">&#125;&#x27;</span></span><br></pre></td></tr></table></figure></blockquote><blockquote><p>同样的，你还可以使用 Cloudflared 隧道添加域名，而不选择使用 Proxy 。</p></blockquote><h2 id="Zfile"><a href="#Zfile" class="headerlink" title="Zfile"></a><span class="exturl" data-url="aHR0cHM6Ly96ZmlsZS52aXAv">Zfile<i class="fa fa-external-link-alt"></i></span></h2><p>首先在 Panel 中放行一个端口，接着按照下表 Add a New Website ：</p><table><thead><tr><th>Key</th><th>Value</th></tr></thead><tbody><tr><td>Domain</td><td><code>xxx.USERNAME.serv00.net</code>（也可以把原有的USERNAME.serv00.net删掉后重新添加）</td></tr><tr><td>Website Type</td><td>proxy</td></tr><tr><td>Proxy Target</td><td>localhost</td></tr><tr><td>Proxy URL</td><td>留空</td></tr><tr><td>Proxy port</td><td>你准备用来部署 Zfile 的端口</td></tr><tr><td>Use HTPPS</td><td>False</td></tr><tr><td>DNS support</td><td>True</td></tr></tbody></table><p>添加完新站点后，继续点击上方的 Manage SSL certificates ，接着在出口 IP 的右侧点击 Manage ，再点击 Add certificate ：</p><table><thead><tr><th>Type</th><th>Domain</th></tr></thead><tbody><tr><td>Generate Let’s Encrypted certificate</td><td>与刚刚添加的站点域名保持一致（如果是原有的<code>USERNAME.serv00.net</code> ，可以省略此步）</td></tr></tbody></table><p>接着 SSH 登入，并进入刚刚你新建的域名目录下的 <code>public_html</code> 路径下：</p><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="comment"># 下载 fat jar 包</span></span><br><span class="line">wget --no-check-certificate -O zfile.jar https://c.jun6.net/ZFILE/zfile-release.jar</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">java19 -jar -Duser.timezone=Asia/Shanghai zfile.jar --zfile.log.path=<span class="variable">$PWD</span>/logs --zfile.db.path=<span class="variable">$PWD</span>/zfile --server.port=PORT</span><br></pre></td></tr></table></figure><blockquote><p>记得把端口改成自己的。测试没有问题之后，按 <code>Ctrl+c</code>即可停止运行。</p></blockquote><p>使用pm2启动并管理：</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">pm2 start java19 --name zfile -- -jar -Duser.timezone=Asia/Shanghai zfile.jar --zfile.log.path=<span class="variable">$PWD</span>/logs --zfile.db.path=<span class="variable">$PWD</span>/zfile --server.port=PORT</span><br></pre></td></tr></table></figure><blockquote><p>同样的，你还可以使用 Cloudflared 隧道添加域名，而不选择使用 Proxy 。</p></blockquote><h2 id="Halo"><a href="#Halo" class="headerlink" title="Halo"></a>Halo</h2><blockquote><p><strong>慎重部署，内存会超100%，不知道会不会封号</strong></p></blockquote><p><span class="exturl" data-url="aHR0cHM6Ly9naXRodWIuY29tL2hhbG8tZGV2L2hhbG8=">halo<i class="fa fa-external-link-alt"></i></span> 自从升级 2.0 版本开始，很长时间内都没有提供构筑好的 jar 包，甚至于在GitHub上都出现了第三方的，使用 GitHub workflow 自动化构筑 jar 包的<span class="exturl" data-url="aHR0cHM6Ly9naXRodWIuY29tL0x1N2Zlci9KYXI0SGFsbw==">仓库<i class="fa fa-external-link-alt"></i></span>。但是，自从<span class="exturl" data-url="aHR0cHM6Ly9naXRodWIuY29tL2hhbG8tZGV2L2hhbG8vcmVsZWFzZXMvdGFnL3YyLjEyLjAtYWxwaGEuMQ==">2.12.0-alpha.1版本<i class="fa fa-external-link-alt"></i></span>开始，halo 的官方仓库又开始提供构筑好的 jar 包了，刚好这些天在玩 Serv00 ，遂尝试部署了一下，成功。现记录一下：</p><p>首先在 Panel 中放行一个端口，接着按照下表 Add a New Website ：</p><table><thead><tr><th>Key</th><th>Value</th></tr></thead><tbody><tr><td>Domain</td><td><code>xxx.USERNAME.serv00.net</code>（也可以把原有的 USERNAME.serv00.net 删掉后重新添加）</td></tr><tr><td>Website Type</td><td>proxy</td></tr><tr><td>Proxy Target</td><td>localhost</td></tr><tr><td>Proxy URL</td><td>留空</td></tr><tr><td>Proxy port</td><td>你准备用来部署 Halo 的端口</td></tr><tr><td>Use HTPPS</td><td>False</td></tr><tr><td>DNS support</td><td>True</td></tr></tbody></table><p>添加完新站点后，继续点击上方的 Manage SSL certificates ，接着在出口 IP 的右侧点击 Manage ，再点击 Add certificate ：</p><table><thead><tr><th>Type</th><th>Domain</th></tr></thead><tbody><tr><td>Generate Let’s Encrypted certificate</td><td>与刚刚添加的站点域名保持一致（如果是原有的<code>USERNAME.serv00.net</code> ，可以省略此步）</td></tr></tbody></table><p>并在 MySQL 选项卡中中新建 MySQL 数据库，用于填入接入 Halo 。</p><p>接着 SSH 登入，并进入刚刚你新建的域名目录下的 <code>public_html</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></pre></td><td class="code"><pre><span class="line"><span class="comment"># 下载jar包</span></span><br><span class="line">release_info=$(curl -s https://api.github.com/repos/halo-dev/halo/releases/latest)</span><br><span class="line">jar_url=$(<span class="built_in">echo</span> <span class="string">&quot;<span class="variable">$release_info</span>&quot;</span> | jq -r <span class="string">&#x27;.assets[] | select(.name | endswith(&quot;.jar&quot;)) | .browser_download_url&#x27;</span>)</span><br><span class="line">curl -L <span class="string">&quot;<span class="variable">$jar_url</span>&quot;</span> -o halo.jar</span><br></pre></td></tr></table></figure><p>在 <code>halo.jar</code> 所在路径下新建 <code>.halo2</code> 文件夹，进入其中，新建文件 <code>application.yaml</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><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></pre></td><td class="code"><pre><span class="line"><span class="comment"># 新建文件夹</span></span><br><span class="line"><span class="built_in">mkdir</span> -p .halo2</span><br><span class="line"><span class="comment"># 新建并填入配置</span></span><br><span class="line"><span class="built_in">cat</span> &gt; .halo2/application.yaml &lt;&lt; <span class="string">EOF</span></span><br><span class="line"><span class="string">server:</span></span><br><span class="line"><span class="string">  port: 你在面板中放行的端口</span></span><br><span class="line"><span class="string">  # Response data gzip.</span></span><br><span class="line"><span class="string">  compression:</span></span><br><span class="line"><span class="string">    enabled: false</span></span><br><span class="line"><span class="string">spring:</span></span><br><span class="line"><span class="string">  #sql:</span></span><br><span class="line"><span class="string">  #  init.platform: mysql</span></span><br><span class="line"><span class="string">  r2dbc:</span></span><br><span class="line"><span class="string">    url: r2dbc:pool:mysql://数据库地址:3306/数据库名</span></span><br><span class="line"><span class="string">    username: 数据库用户名</span></span><br><span class="line"><span class="string">    password: 数据库密码</span></span><br><span class="line"><span class="string">halo:</span></span><br><span class="line"><span class="string">  # Your admin client path is https://your-domain/&#123;admin-path&#125;</span></span><br><span class="line"><span class="string">  admin-path: admin</span></span><br><span class="line"><span class="string">  # memory or level</span></span><br><span class="line"><span class="string">  cache: level</span></span><br><span class="line"><span class="string">EOF</span></span><br></pre></td></tr></table></figure><p>在 <code>halo.jar</code> 所在路径下新建 <code>run.sh</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></pre></td><td class="code"><pre><span class="line"><span class="built_in">cat</span> &gt; run.sh &lt;&lt; <span class="string">EOF</span></span><br><span class="line"><span class="string">#!/bin/bash</span></span><br><span class="line"><span class="string">export HALO_WORK_DIR=&quot;$PWD/.halo2&quot;</span></span><br><span class="line"><span class="string">export HALO_EXTERNAL_URL=&quot;https://你的域名&quot;</span></span><br><span class="line"><span class="string">exec java17 -server -Xms128m -Xmx256m -jar -Duser.timezone=Asia/Shanghai $PWD/halo.jar --spring.config.additional-location=$PWD/.halo2/application.yaml</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></pre></td><td class="code"><pre><span class="line"><span class="built_in">chmod</span> +x run.sh &amp;&amp; ./run.sh</span><br></pre></td></tr></table></figure><blockquote><p>确定运行没有问题后，按 <code>Ctrl+c</code>即可停止运行。</p></blockquote><p>使用pm2管理运行：</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"><span class="built_in">chmod</span> +x run.sh &amp;&amp; pm2 start ./run.sh --name halo</span><br></pre></td></tr></table></figure><blockquote><p>同样的，你还可以使用 Cloudflared 隧道添加域名，而不选择使用 Proxy 。</p></blockquote><h2 id="Go-proxy-bingai"><a href="#Go-proxy-bingai" class="headerlink" title="Go-proxy-bingai"></a>Go-proxy-bingai</h2><p><span class="exturl" data-url="aHR0cHM6Ly9naXRodWIuY29tL2FkYW1zNTQ5NjU5NTg0L2dvLXByb3h5LWJpbmdhaQ==">这个仓库<i class="fa fa-external-link-alt"></i></span>是 Bingo 的前身，当初玩 Replit 时我便有在使用，只可惜作者早已弃坑，所以当初我才找到了当时还能用的 Bingo 使用。</p><p>在 Bingo 也长期未更新，无法正常使用的如今，我的目光转向了另一个<span class="exturl" data-url="aHR0cHM6Ly9naXRodWIuY29tL0hhcnJ5LXprbGNkYy9nby1wcm94eS1iaW5nYWk=">二改仓库<i class="fa fa-external-link-alt"></i></span>。Harry-zklcdc 维护的 Go-proxy-bingai 的分支仓库目前还能够正常使用。而且在与开发者反馈了几个 bug 之后，开发者都会花时间认真复现，并快速修复，其体验实在是不错。</p><p><del>虽然原仓库的 Release 中并未提供 FreeBSD 系统适用的二进制文件，但是我们能够自己构建。我已经构建了一份放在这篇博客底部的QQ群的群文件中</del>。<del>我写了一个仓库用于自动化构建 FreeBSD 版本的 go-proxy-bingai ，可以从我的仓库下载使用。</del> 作者已经开始提供 FreeBSD 的构建，故我的仓库已经存档。</p><p>首先在 Panel 中放行一个端口，接着按照下表 Add a New Website ：</p><table><thead><tr><th>Key</th><th>Value</th></tr></thead><tbody><tr><td>Domain</td><td><code>xxx.USERNAME.serv00.net</code>（也可以把原有的 USERNAME.serv00.net 删掉后重新添加）</td></tr><tr><td>Website Type</td><td>proxy</td></tr><tr><td>Proxy Target</td><td>localhost</td></tr><tr><td>Proxy URL</td><td>留空</td></tr><tr><td>Proxy port</td><td>你准备用来部署 Go-proxy-bingai 的端口</td></tr><tr><td>Use HTPPS</td><td>False</td></tr><tr><td>DNS support</td><td>True</td></tr></tbody></table><p>添加完新站点后，继续点击上方的 Manage SSL certificates ，接着在出口 IP 的右侧点击 Manage ，再点击 Add certificate ：</p><table><thead><tr><th>Type</th><th>Domain</th></tr></thead><tbody><tr><td>Generate Let’s Encrypted certificate</td><td>与刚刚添加的站点域名保持一致（如果是原有的<code>USERNAME.serv00.net</code> ，可以省略此步）</td></tr></tbody></table><p>接着 SSH 登入，并进入刚刚你新建的域名目录下的 <code>public_html</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></pre></td><td class="code"><pre><span class="line"><span class="comment"># 下载可执行文件</span></span><br><span class="line">release_info=$(curl -s https://api.github.com/repos/Harry-zklcdc/go-proxy-bingai/releases | jq -r <span class="string">&#x27;[.[] | select(.prerelease==false)][0]&#x27;</span>)</span><br><span class="line">download_url=$(<span class="built_in">echo</span> <span class="string">&quot;<span class="variable">$release_info</span>&quot;</span> | jq -r <span class="string">&#x27;.assets[] | select(.name==&quot;go-proxy-bingai-freebsd-amd64.tar.gz&quot;) | .browser_download_url&#x27;</span>)</span><br><span class="line">curl -L <span class="string">&quot;<span class="variable">$download_url</span>&quot;</span> -o go-proxy-bingai-freebsd-amd64.tar.gz&amp;&amp; tar -xzf go-proxy-bingai-freebsd-amd64.tar.gz &amp;&amp; <span class="built_in">rm</span> go-proxy-bingai-freebsd-amd64.tar.gz &amp;&amp; <span class="built_in">chmod</span> +x go-proxy-bingai</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><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></pre></td><td class="code"><pre><span class="line"><span class="built_in">cat</span> &gt; entrypoint.sh &lt;&lt; <span class="string">EOF</span></span><br><span class="line"><span class="string">#!/bin/bash</span></span><br><span class="line"><span class="string"># 被注释的环境变量请根据自己的需求，按照原仓库的 wiki 中的介绍进行填入。</span></span><br><span class="line"><span class="string">export BYPASS_SERVER=&quot;https://bypass.zklcdc.xyz&quot;  # 作者本人的公共bypass服务，可用性未知。</span></span><br><span class="line"><span class="string"># export Go_Proxy_BingAI_USER_TOKEN_1=&quot;xxx&quot;</span></span><br><span class="line"><span class="string"># export Go_Proxy_BingAI_USER_TOKEN_2=&quot;xxx&quot;</span></span><br><span class="line"><span class="string"># export USER_KievRPSSecAuth=&quot;xxx&quot;</span></span><br><span class="line"><span class="string"># export USER_RwBf=&quot;xxx&quot;</span></span><br><span class="line"><span class="string"># export USER_MUID=&quot;xxx&quot;</span></span><br><span class="line"><span class="string"># export APIKEY=&quot;sk-xxx&quot;</span></span><br><span class="line"><span class="string"># export BING_BASE_URL=&quot;https://www.bing.com&quot;</span></span><br><span class="line"><span class="string"># export SYDNEY_BASE_URL=&quot;https://sydney.bing.com&quot;</span></span><br><span class="line"><span class="string"># export HTTP_PROXY=&quot;http://172.17.0.1:18080&quot;</span></span><br><span class="line"><span class="string"># export HTTPS_PROXY=&quot;http://172.17.0.1:18080&quot;</span></span><br><span class="line"><span class="string"># export Go_Proxy_BingAI_AUTH_KEY=&quot;xxx&quot;</span></span><br><span class="line"><span class="string"># 请把下一行双引号中的内容替换成你放行的端口。</span></span><br><span class="line"><span class="string">export PORT=&quot;xxx&quot;</span></span><br><span class="line"><span class="string">chmod +x go-proxy-bingai &amp;&amp; exec ./go-proxy-bingai</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="comment"># 测试运行</span></span><br><span class="line"><span class="built_in">chmod</span> +x entrypoint.sh &amp;&amp; ./entrypoint.sh</span><br><span class="line"><span class="comment"># 使用 pm2 管理运行</span></span><br><span class="line">pm2 start ./entrypoint.sh --name go-proxy-bingai</span><br></pre></td></tr></table></figure><blockquote><p><strong>请注意，如果你需要使用其 web 功能，而不仅仅是 api 功能，请务必使用 https 访问，不然无法打开。你可以选择使用面板自带的 proxy 添加域名并申请 ssl 证书，亦或者直接使用 cloudflared 隧道。</strong></p></blockquote><blockquote><p>同样的，你还可以使用 Cloudflared 隧道添加域名，而不选择使用 Proxy 。</p></blockquote><h2 id="Pentaract"><a href="#Pentaract" class="headerlink" title="Pentaract"></a><span class="exturl" data-url="aHR0cHM6Ly9naXRodWIuY29tL0RvbWludXgvUGVudGFyYWN0">Pentaract<i class="fa fa-external-link-alt"></i></span></h2><blockquote><p>不建议使用，目前 Bug 众多，而且对 Telegram 账号有一定要求，目前暂不清楚 Telegram 限制账号的评定标准。</p></blockquote><p>可以自行构建或者使用使用我构建的成品。由于该应用需要使用具有超级管理员权限的 PostgreSQL ，故不可使用 Serv00 自带的 PostgreSQL ，需要远程连接。</p><p>编译成品下载地址：<span class="exturl" data-url="aHR0cHM6Ly9wYW4ucmFwcGl0LnNpdGUvZG93bmxvYWQvJUU2JThEJUFGJUU5JUE1JUFDL3BlbnRhcmFjdC1mcmVlYnNkX1g2NC50YXIuZ3o=">pentaract-freebsd_X64.tar.gz<i class="fa fa-external-link-alt"></i></span></p><p>前端构建简单，这里不再赘述，而且由于其 <code>Dockerfile</code> 内构建前端使用的是 Node.js 21 而目前 FreeBSD Port 最高只有 Node.js 20 ，故不推荐在 FreeBSD 上直接构建，可以使用 GItHub Actions 进行构建，或是自己在 Node.js 21 的环境下构建再复制，甚至干脆直接从作者预构建的 Docker 镜像内打包出来使用。（经过测试，使用 Nodejs20 构建也可以正常使用。）</p><p>Serv00 上的构建法：</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></pre></td><td class="code"><pre><span class="line"><span class="comment"># 切换 Node.js 版本为 Nodejs20</span></span><br><span class="line"><span class="built_in">alias</span> node=node20</span><br><span class="line"><span class="built_in">alias</span> npm=npm20</span><br><span class="line"><span class="comment"># 全局安装 pnpm</span></span><br><span class="line">npm install -g pnpm</span><br><span class="line"><span class="built_in">source</span> ~/.bashrc</span><br><span class="line"><span class="comment"># 构建前端</span></span><br><span class="line">pnpm install</span><br><span class="line">VITE_API_BASE=<span class="string">&#x27;/api&#x27;</span> pnpm run build</span><br><span class="line"><span class="comment"># 移动构建产物到工作目录</span></span><br><span class="line"><span class="built_in">mkdir</span> -p ~/pentaract/ui &amp;&amp; <span class="built_in">cp</span> -R ./dist/* ~/pentaract/ui</span><br></pre></td></tr></table></figure><p>后端的构建，可以使用 GItHub Actions ，或者本地 FreeBSD 虚拟机，甚至直接在 Serv00 上构建。这里记录一下在 Serv00 上构建的方法：</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"><span class="comment"># 克隆仓库到 Serv00 上</span></span><br><span class="line">git <span class="built_in">clone</span> https://github.com/Dominux/Pentaract &amp;&amp; <span class="built_in">cd</span> Pentaract/pentaract</span><br><span class="line"><span class="comment"># 构建</span></span><br><span class="line">LIBCLANG_PATH=/usr/local/llvm16/lib cpuset -l 0 cargo build --release</span><br><span class="line"><span class="comment"># 移动构建产物到工作目录</span></span><br><span class="line"><span class="built_in">mkdir</span> -p ~/pentaract &amp;&amp; <span class="built_in">cp</span> ./target/release/pentaract ~/pentaract/pentaract</span><br></pre></td></tr></table></figure><p>然后去 <span class="exturl" data-url="aHR0cHM6Ly9zdXBhYmFzZS5jb20v">supabase<i class="fa fa-external-link-alt"></i></span> 注册一个免费的PostgreSQL ，记录下数据库的用户名、密码、数据库名、地址，用于后续填入环境变量。</p><p>接着在 <code>~/pentaract</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><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="built_in">cat</span> &gt; start.sh &lt;&lt; <span class="string">EOF</span></span><br><span class="line"><span class="string">#!/bin/bash</span></span><br><span class="line"><span class="string">export PORT=xxxx</span></span><br><span class="line"><span class="string">export WORKERS=4</span></span><br><span class="line"><span class="string">export CHANNEL_CAPACITY=32</span></span><br><span class="line"><span class="string">export SUPERUSER_EMAIL=xxxx@xxxx.com</span></span><br><span class="line"><span class="string">export SUPERUSER_PASS=xxxx</span></span><br><span class="line"><span class="string">export ACCESS_TOKEN_EXPIRE_IN_SECS=1800</span></span><br><span class="line"><span class="string">export REFRESH_TOKEN_EXPIRE_IN_DAYS=14</span></span><br><span class="line"><span class="string">export SECRET_KEY=xxx</span></span><br><span class="line"><span class="string">export TELEGRAM_API_BASE_URL=https://api.telegram.org</span></span><br><span class="line"><span class="string">export DATABASE_USER=xxxx</span></span><br><span class="line"><span class="string">export DATABASE_PASSWORD=xxxx</span></span><br><span class="line"><span class="string">export DATABASE_NAME=xxxx</span></span><br><span class="line"><span class="string">export DATABASE_HOST=xxxx</span></span><br><span class="line"><span class="string">export DATABASE_PORT=5432</span></span><br><span class="line"><span class="string">chmod +x pentaract &amp;&amp; exec ./pentaract</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></pre></td><td class="code"><pre><span class="line"><span class="built_in">chmod</span> +x start.sh</span><br></pre></td></tr></table></figure><p><del>前端的 <code>index-22eec6d1.js</code> 文件内的 <code>http://localhost:8000</code> 需要更改为 serv00 的 url 或者 ip:port 。你可以去文件管理中编辑，查找替换即可，也可以使用sed命令简单更改一下：</del> 已经重新构建前端并替换，现无需此步。</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">./start.sh</span><br></pre></td></tr></table></figure><p>使用 pm2 管理：</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">pm2 start ./start.sh --name pentaract</span><br></pre></td></tr></table></figure><h2 id="OneList"><a href="#OneList" class="headerlink" title="OneList"></a><span class="exturl" data-url="aHR0cHM6Ly9naXRodWIuY29tL21zdGVyemhhbmcvb25lbGlzdA==">OneList<i class="fa fa-external-link-alt"></i></span></h2><p>原作者似乎已经弃坑，故我的仓库没有做自动检测构建。但是体验还不错，有 Emby 既视感了，配合小雅的 Alist 岂不美哉。</p><p>首先在 Panel 中放行一个端口，接着按照下表 Add a New Website ：</p><table><thead><tr><th>Key</th><th>Value</th></tr></thead><tbody><tr><td>Domain</td><td><code>xxx.USERNAME.serv00.net</code>（也可以把原有的USERNAME.serv00.net删掉后重新添加）</td></tr><tr><td>Website Type</td><td>proxy</td></tr><tr><td>Proxy Target</td><td>localhost</td></tr><tr><td>Proxy URL</td><td>留空</td></tr><tr><td>Proxy port</td><td>你准备用来部署 OneList 的端口</td></tr><tr><td>Use HTPPS</td><td>False</td></tr><tr><td>DNS support</td><td>True</td></tr></tbody></table><p>添加完新站点后，继续点击上方的 Manage SSL certificates ，接着在出口 IP 的右侧点击 Manage ，再点击 Add certificate ：</p><table><thead><tr><th>Type</th><th>Domain</th></tr></thead><tbody><tr><td>Generate Let’s Encrypted certificate</td><td>与刚刚添加的站点域名保持一致（如果是原有的<code>USERNAME.serv00.net</code> ，可以省略此步）</td></tr></tbody></table><p>接着SSH登入，并进入刚刚你新建的域名目录下的 <code>public_html</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></pre></td><td class="code"><pre><span class="line"><span class="comment"># 下载 OneList</span></span><br><span class="line">wget https://github.com/k0baya/onelist-freebsd/releases/download/v2.0.5/onelist</span><br><span class="line"><span class="comment"># 初始化配置</span></span><br><span class="line"><span class="built_in">chmod</span> +x onelist &amp;&amp; ./onelist -run config</span><br></pre></td></tr></table></figure><p>接着回到 Panel 中，进入File manager选项卡，进入 OneList 所在路径，可以看到一个名为 <code>config.env</code> 的文件，右键点击，选择View&#x2F;Edit &gt; Source Editor，进行编辑：</p><figure class="highlight ini"><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></pre></td><td class="code"><pre><span class="line"><span class="comment"># 服务设置</span></span><br><span class="line"><span class="comment"># 注意要改为未被占用的端口</span></span><br><span class="line"><span class="attr">API_PORT</span>=<span class="number">5245</span></span><br><span class="line"><span class="attr">FaviconicoUrl</span>=https://wework.qpic.cn/wwpic/<span class="number">818353</span>_fizV30xbQCGPQRP_1677394564/<span class="number">0</span></span><br><span class="line"><span class="attr">API_SECRET</span>=fRVvjcNd11gYGI85StVaeCtPVSmJTRRE</span><br><span class="line"></span><br><span class="line"><span class="comment"># Env有两种模式，Debug及Release，主要用在数据库为mysql时候，需要注意修改Env环境和mysql密码对应</span></span><br><span class="line"><span class="attr">Env</span>=Debug</span><br><span class="line"></span><br><span class="line"><span class="comment"># 管理员账户设置，用于初始化管理员账户</span></span><br><span class="line"><span class="attr">UserEmail</span>=xxxx.@qq.com</span><br><span class="line"><span class="attr">UserPassword</span>=xxxxx</span><br><span class="line"></span><br><span class="line"><span class="comment"># 数据库设置</span></span><br><span class="line"><span class="attr">DB_DRIVER</span>=sqlite</span><br><span class="line"><span class="attr">DB_USER</span>=root</span><br><span class="line"><span class="attr">DbName</span>=<span class="literal">on</span>elist</span><br><span class="line"></span><br><span class="line"><span class="comment"># 如果上面DB_DRIVER类型为mysql，就需要正确填下以下参数</span></span><br><span class="line"><span class="attr">DB_PASSWORD_Debug</span>=<span class="number">123456</span></span><br><span class="line"><span class="attr">DB_PASSWORD_Release</span>=<span class="number">123456</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># TheMovieDb Key</span></span><br><span class="line"><span class="comment"># 在https://www.themoviedb.org网站申请</span></span><br><span class="line"><span class="attr">KeyDb</span>=<span class="number">22</span>f10ca52f109158ac7fe064ebbcf697</span><br></pre></td></tr></table></figure><p>你可以按照自己的需求配置端口、管理员账户、数据库。 MySQL 性能更好哦~</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">./onelist -run server</span><br></pre></td></tr></table></figure><p>使用 pm2 管理：</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">pm2 start ./onelist -- -run server</span><br></pre></td></tr></table></figure><h2 id="WarpGPT"><a href="#WarpGPT" class="headerlink" title="WarpGPT"></a><span class="exturl" data-url="aHR0cHM6Ly9naXRodWIuY29tL29saXZlcmtpcmstc3Vkby9XYXJwR1BU">WarpGPT<i class="fa fa-external-link-alt"></i></span></h2><p>这个没什么多说的，可以使用 access_Token 作为 API Key 请求 ChatGPT 接口，也就是所谓的 chat2api 。配合前文的 Refresh-gpt-chat 就可以把永久有效期的 Refresh_token 作为 API Key 来使用，十分的好用。</p><p>源仓库没有 Release ，故<span class="exturl" data-url="aHR0cHM6Ly9naXRodWIuY29tL2swYmF5YS93YXJwZ3B0LWZyZWVic2Q=">我的仓库<i class="fa fa-external-link-alt"></i></span>没有做自动检测构建。如果有更新需求需要手动触发 workflow 。你有需要也可以自己fork一份然后手动触发 workflow 。</p><p>首先在 Panel 中放行一个端口，接着按照下表 Add a New Website ：</p><table><thead><tr><th>Key</th><th>Value</th></tr></thead><tbody><tr><td>Domain</td><td><code>xxx.USERNAME.serv00.net</code>（也可以把原有的USERNAME.serv00.net删掉后重新添加）</td></tr><tr><td>Website Type</td><td>proxy</td></tr><tr><td>Proxy Target</td><td>localhost</td></tr><tr><td>Proxy URL</td><td>留空</td></tr><tr><td>Proxy port</td><td>你准备用来部署 WarpGPT 的端口</td></tr><tr><td>Use HTPPS</td><td>False</td></tr><tr><td>DNS support</td><td>True</td></tr></tbody></table><p>添加完新站点后，继续点击上方的 Manage SSL certificates ，接着在出口 IP 的右侧点击 Manage ，再点击 Add certificate ：</p><table><thead><tr><th>Type</th><th>Domain</th></tr></thead><tbody><tr><td>Generate Let’s Encrypted certificate</td><td>与刚刚添加的站点域名保持一致（如果是原有的<code>USERNAME.serv00.net</code> ，可以省略此步）</td></tr></tbody></table><p>接着SSH登入，并进入刚刚你新建的域名目录下的 <code>public_html</code> 路径下：</p><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="comment"># 下载二进制文件</span></span><br><span class="line">wget https://github.com/k0baya/warpgpt-freebsd/releases/download/latest/warpgpt &amp;&amp; <span class="built_in">chmod</span> +x warpgpt</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><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">cat</span> &gt; start.sh &lt;&lt; <span class="string">EOF</span></span><br><span class="line"><span class="string">#!/bin/bash</span></span><br><span class="line"><span class="string">export TMPDIR=&quot;$PWD&quot;</span></span><br><span class="line"><span class="string">chmod +x warpgpt &amp;&amp; exec ./warpgpt</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></pre></td><td class="code"><pre><span class="line"><span class="built_in">chmod</span> +x start.sh</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><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></pre></td><td class="code"><pre><span class="line"><span class="built_in">cat</span> &gt; .<span class="built_in">env</span> &lt;&lt; <span class="string">EOF</span></span><br><span class="line"><span class="string">proxy = &quot;http://127.0.0.1:10809&quot;   #代理地址 （选填）</span></span><br><span class="line"><span class="string">port = 5000                        #程序运行端口</span></span><br><span class="line"><span class="string">host = &#x27;127.0.0.1&#x27;                 #可访问ip，0.0.0.0允许所有ip</span></span><br><span class="line"><span class="string">verify = false                     #是否对访问进行验证</span></span><br><span class="line"><span class="string">auth_key = &quot;&quot;                      #若开启访问验证，则需要在Header中添加AuthKey字段，且值为auth_key的值才能访问 （选填）</span></span><br><span class="line"><span class="string">arkose_must = false                #是否强行gpt3.5进行验证</span></span><br><span class="line"><span class="string">OpenAI_HOST = &quot;chat.openai.com&quot;    #openai网页api接口地址 （选填）</span></span><br><span class="line"><span class="string">openai_api_host = &quot;api.openai.com&quot; #openai官方api接口 （选填）</span></span><br><span class="line"><span class="string">proxy_pool_url=&quot;&quot;                  #ipidea代理池链接 （选填）</span></span><br><span class="line"><span class="string">#示例http://api.proxy.ipidea.io/getProxyIp?num=10&amp;return_type=json&amp;lb=1&amp;sb=0&amp;flow=1&amp;regions=us&amp;protocol=http，根据访问频次设置num值</span></span><br><span class="line"><span class="string">log_level = &quot;debug&quot;                #日志等级</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">redis_address = &quot;127.0.0.1:6379&quot;   #redis地址（若不开启代理池可选填）</span></span><br><span class="line"><span class="string">redis_passwd = &quot;&quot;                  #redis密码</span></span><br><span class="line"><span class="string">redis_db = 0                       #选择的redis数据库</span></span><br><span class="line"><span class="string">EOF</span></span><br></pre></td></tr></table></figure><blockquote><p>如果有 redis 需求，可以查阅官方文档：<span class="exturl" data-url="aHR0cHM6Ly9kb2NzLnNlcnYwMC5jb20vUmVkaXMv">Redis<i class="fa fa-external-link-alt"></i></span></p></blockquote><p>使用 pm2 管理运行：</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">pm2 start bash --name warpgpt -- start.sh</span><br></pre></td></tr></table></figure><h2 id="Coze-discord-proxy"><a href="#Coze-discord-proxy" class="headerlink" title="Coze-discord-proxy"></a><span class="exturl" data-url="aHR0cHM6Ly9naXRodWIuY29tL2RlYW54di9jb3plLWRpc2NvcmQtcHJveHk=">Coze-discord-proxy<i class="fa fa-external-link-alt"></i></span></h2><p>代理 Discord 对话 Coze-Bot ，实现以 API 形式请求 GPT4 模型，提供对话、文生图、图生文、知识库检索等功能。功能不多赘述，详细去源仓库查看。</p><p>同样的，我写了一个用于构建 FreeBSD 版本的<span class="exturl" data-url="aHR0cHM6Ly9naXRodWIuY29tL2swYmF5YS9jb3plLWRpc2NvcmQtcHJveHktZnJlZWJzZA==">仓库<i class="fa fa-external-link-alt"></i></span>。在这里感谢论坛用户 <span class="exturl" data-url="aHR0cHM6Ly9saW51eC5kby91L3Jlbm8vc3VtbWFyeQ==">Reno<i class="fa fa-external-link-alt"></i></span> 的测试，没有测试人员的测试，也不会有部署的过程记录了。</p><p>首先在 Panel 中放行一个端口，接着按照下表 Add a New Website ：</p><table><thead><tr><th>Key</th><th>Value</th></tr></thead><tbody><tr><td>Domain</td><td><code>xxx.USERNAME.serv00.net</code>（也可以把原有的USERNAME.serv00.net删掉后重新添加）</td></tr><tr><td>Website Type</td><td>proxy</td></tr><tr><td>Proxy Target</td><td>localhost</td></tr><tr><td>Proxy URL</td><td>留空</td></tr><tr><td>Proxy port</td><td>你准备用来部署 Coze-discord-proxy 的端口</td></tr><tr><td>Use HTPPS</td><td>False</td></tr><tr><td>DNS support</td><td>True</td></tr></tbody></table><p>添加完新站点后，继续点击上方的 Manage SSL certificates ，接着在出口 IP 的右侧点击 Manage ，再点击 Add certificate ：</p><table><thead><tr><th>Type</th><th>Domain</th></tr></thead><tbody><tr><td>Generate Let’s Encrypted certificate</td><td>与刚刚添加的站点域名保持一致（如果是原有的<code>USERNAME.serv00.net</code> ，可以省略此步）</td></tr></tbody></table><p>接着SSH登入，并进入刚刚你新建的域名目录下的 <code>public_html</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></pre></td><td class="code"><pre><span class="line"><span class="comment"># 下载二进制文件</span></span><br><span class="line">release_info=$(curl -s https://api.github.com/repos/k0baya/coze-discord-proxy-freebsd/releases/latest)</span><br><span class="line">asset_url=$(<span class="built_in">echo</span> <span class="string">&quot;<span class="variable">$release_info</span>&quot;</span> | jq -r <span class="string">&#x27;.assets[] | select(.name != &quot;source code&quot;) | .browser_download_url&#x27;</span>)</span><br><span class="line">curl -L -o coze-discord-proxy <span class="string">&quot;<span class="variable">$asset_url</span>&quot;</span> &amp;&amp; <span class="built_in">chmod</span> +x coze-discord-proxy</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><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></pre></td><td class="code"><pre><span class="line"><span class="built_in">cat</span> &gt; start.sh &lt;&lt; <span class="string">EOF</span></span><br><span class="line"><span class="string">#!/bin/bash</span></span><br><span class="line"><span class="string"># 根据你的需求自行填入环境变量</span></span><br><span class="line"><span class="string">export PORT=&quot;PORT&quot;</span></span><br><span class="line"><span class="string">export USER_AUTHORIZATION=&quot;XXXXXX&quot;</span></span><br><span class="line"><span class="string">export BOT_TOKEN=&quot;XXXXXX&quot;</span></span><br><span class="line"><span class="string">export GUILD_ID=&quot;XXXXXX&quot;</span></span><br><span class="line"><span class="string">export COZE_BOT_ID=&quot;XXXXXX&quot;</span></span><br><span class="line"><span class="string">export PROXY_SECRET=&quot;XXXXXX&quot;</span></span><br><span class="line"><span class="string">export CHANNEL_ID=&quot;XXXXXX&quot;</span></span><br><span class="line"><span class="string">export TZ=&quot;Asia/Shanghai&quot;</span></span><br><span class="line"><span class="string">export DATA_GYM_CACHE_DIR=&quot;$PWD&quot;</span></span><br><span class="line"><span class="string">chmod +x coze-discord-proxy &amp;&amp; exec ./coze-discord-proxy</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></pre></td><td class="code"><pre><span class="line"><span class="built_in">chmod</span> +x coze-discord-proxy</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></pre></td><td class="code"><pre><span class="line"><span class="built_in">mkdir</span> -p app/coze-discord-proxy/data/config</span><br><span class="line"><span class="built_in">touch</span> app/coze-discord-proxy/data/config/bot_config.json</span><br></pre></td></tr></table></figure><p>然后回到 Panel 中，进入File manager选项卡，进入 <code>bot_config.json</code> 所在路径，右键点击它，选择View&#x2F;Edit &gt; Source Editor，进行编辑：</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><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></pre></td><td class="code"><pre><span class="line"><span class="punctuation">[</span></span><br><span class="line">  <span class="punctuation">&#123;</span></span><br><span class="line">    <span class="attr">&quot;proxySecret&quot;</span><span class="punctuation">:</span> <span class="string">&quot;123&quot;</span><span class="punctuation">,</span> <span class="comment">// 接口请求密钥(PROXY_SECRET)(注意:此密钥在环境变量PROXY_SECRET中存在时该Bot才可以被匹配到!)</span></span><br><span class="line">    <span class="attr">&quot;cozeBotId&quot;</span><span class="punctuation">:</span> <span class="string">&quot;12***************31&quot;</span><span class="punctuation">,</span> <span class="comment">// coze托管的机器人ID</span></span><br><span class="line">    <span class="attr">&quot;model&quot;</span><span class="punctuation">:</span> <span class="punctuation">[</span><span class="string">&quot;gpt-3.5&quot;</span><span class="punctuation">,</span><span class="string">&quot;gpt-3.5-16k&quot;</span><span class="punctuation">]</span><span class="punctuation">,</span> <span class="comment">// 模型名称(数组格式)(与请求参数中的model对应,如请求中的model在该json中未匹配到则会抛出异常)</span></span><br><span class="line">    <span class="attr">&quot;channelId&quot;</span><span class="punctuation">:</span> <span class="string">&quot;12***************56&quot;</span>  <span class="comment">// [可选]discord频道ID(机器人必须在此频道所在的服务器)(目前版本下该参数仅用来活跃机器人)</span></span><br><span class="line">  <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="punctuation">&#123;</span></span><br><span class="line">    <span class="attr">&quot;proxySecret&quot;</span><span class="punctuation">:</span> <span class="string">&quot;456&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;cozeBotId&quot;</span><span class="punctuation">:</span> <span class="string">&quot;12***************64&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;model&quot;</span><span class="punctuation">:</span> <span class="punctuation">[</span><span class="string">&quot;gpt-4&quot;</span><span class="punctuation">,</span><span class="string">&quot;gpt-4-16k&quot;</span><span class="punctuation">]</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;channelId&quot;</span><span class="punctuation">:</span> <span class="string">&quot;12***************78&quot;</span></span><br><span class="line">  <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="punctuation">&#123;</span></span><br><span class="line">    <span class="attr">&quot;proxySecret&quot;</span><span class="punctuation">:</span> <span class="string">&quot;789&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;cozeBotId&quot;</span><span class="punctuation">:</span> <span class="string">&quot;12***************12&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;model&quot;</span><span class="punctuation">:</span> <span class="punctuation">[</span><span class="string">&quot;dall-e-3&quot;</span><span class="punctuation">]</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;channelId&quot;</span><span class="punctuation">:</span> <span class="string">&quot;12***************24&quot;</span></span><br><span class="line">  <span class="punctuation">&#125;</span></span><br><span class="line"><span class="punctuation">]</span></span><br></pre></td></tr></table></figure><p>使用 pm2 管理运行：</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">pm2 start bash --name coze-discord-proxy -- start.sh</span><br></pre></td></tr></table></figure><h2 id="Memos"><a href="#Memos" class="headerlink" title="Memos"></a><span class="exturl" data-url="aHR0cHM6Ly9naXRodWIuY29tL3VzZW1lbW9zL21lbW9z">Memos<i class="fa fa-external-link-alt"></i></span></h2><p>一款开源、轻量级的笔记服务。轻松捕捉并分享您的精彩想法。</p><p>这个仓库比较难受的是，其在源码的<span class="exturl" data-url="aHR0cHM6Ly9naXRodWIuY29tL3VzZW1lbW9zL21lbW9zL2Jsb2IvZWRjNzY0NTA4NmQyODVmNTBlNDg0ODYxNzA1ZmZlZTNhNjI2Zjk3YS9zZXJ2ZXIvc2VydmVyLmdvI0w4NQ==">这个位置<i class="fa fa-external-link-alt"></i></span>强制要求其 gRPC 服务的端口为 Memos 监听端口+1，故这个应用需要占用两个端口，而且必须是两个连续的端口。</p><p>同样的，我写了一个用于构建 FreeBSD 版本的<span class="exturl" data-url="aHR0cHM6Ly9naXRodWIuY29tL2swYmF5YS9tZW1vcy1iaW5hcnk=">仓库<i class="fa fa-external-link-alt"></i></span>。</p><p>首先在 Panel 中放行<strong>两个相邻的端口</strong>，接着按照下表 Add a New Website ：</p><table><thead><tr><th>Key</th><th>Value</th></tr></thead><tbody><tr><td>Domain</td><td><code>xxx.USERNAME.serv00.net</code>（也可以把原有的USERNAME.serv00.net删掉后重新添加）</td></tr><tr><td>Website Type</td><td>proxy</td></tr><tr><td>Proxy Target</td><td>localhost</td></tr><tr><td>Proxy URL</td><td>留空</td></tr><tr><td>Proxy port</td><td>刚刚放行的<strong>两个相邻的端口中小的那一个</strong></td></tr><tr><td>Use HTPPS</td><td>False</td></tr><tr><td>DNS support</td><td>True</td></tr></tbody></table><p>添加完新站点后，继续点击上方的 Manage SSL certificates ，接着在出口 IP 的右侧点击 Manage ，再点击 Add certificate ：</p><table><thead><tr><th>Type</th><th>Domain</th></tr></thead><tbody><tr><td>Generate Let’s Encrypted certificate</td><td>与刚刚添加的站点域名保持一致（如果是原有的<code>USERNAME.serv00.net</code> ，可以省略此步）</td></tr></tbody></table><p>接着SSH登入，并进入刚刚你新建的域名目录下的 <code>public_html</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></pre></td><td class="code"><pre><span class="line">API_URL=<span class="string">&quot;https://api.github.com/repos/k0baya/memos-binary/releases/latest&quot;</span></span><br><span class="line">DOWNLOAD_URL=$(curl -s <span class="variable">$API_URL</span> | jq -r <span class="string">&quot;.assets[] | select(.name == \&quot;memos-freebsd-amd64.tar.gz\&quot;) | .browser_download_url&quot;</span>)</span><br><span class="line">curl -L <span class="variable">$DOWNLOAD_URL</span> -o memos-freebsd-amd64.tar.gz</span><br><span class="line">tar -xzvf memos-freebsd-amd64.tar.gz &amp;&amp; <span class="built_in">rm</span> memos-freebsd-amd64.tar.gz &amp;&amp; <span class="built_in">chmod</span> +x memos</span><br></pre></td></tr></table></figure><p>关于运行，有两种方式进行：</p><p>① SQLite</p><p>如果选择使用 SQLite 作为数据库运行，则可以直接运行：</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></pre></td><td class="code"><pre><span class="line"><span class="comment"># 假定你的数据文件打算存储在 /home/username/domains/xxx.USERNAME.serv00.net/public_html/data</span></span><br><span class="line"><span class="comment"># 新建数据文件夹</span></span><br><span class="line"><span class="built_in">mkdir</span> -p /home/username/domains/xxx.USERNAME.serv00.net/public_html/data</span><br><span class="line"><span class="comment"># 测试运行</span></span><br><span class="line">./memos --mode prod --port PORT --data /home/username/domains/xxx.USERNAME.serv00.net/public_html/data</span><br><span class="line"><span class="comment"># 使用 pm2 管理</span></span><br><span class="line">pm2 start ./memos --name memos -- --mode prod --port PORT --data /home/username/domains/xxx.USERNAME.serv00.net/public_html/data</span><br></pre></td></tr></table></figure><p>② 外接 MySQL &#x2F; PostgreSQL</p><p>你可以使用面板自带的 MySQL &#x2F; PostgreSQL 新建数据库，或者使用其他平台提供的远程数据库：</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></pre></td><td class="code"><pre><span class="line"><span class="comment"># 假定你的数据文件打算存储在 /home/username/domains/xxx.USERNAME.serv00.net/public_html/data</span></span><br><span class="line"><span class="comment"># 新建数据文件夹</span></span><br><span class="line"><span class="built_in">mkdir</span> -p /home/username/domains/xxx.USERNAME.serv00.net/public_html/data</span><br><span class="line"><span class="comment"># 测试运行（MySQL）（MySQL需要管理员权限，你可以选择远程连接）</span></span><br><span class="line">./memos --mode prod --port PORT --data /home/username/domains/xxx.USERNAME.serv00.net/public_html/data --driver mysql --dsn mysql://root:password123@localhost:3306/mydb</span><br><span class="line"><span class="comment"># 测试运行（PostgreSQL）</span></span><br><span class="line">./memos --mode prod --port PORT --data /home/username/domains/xxx.USERNAME.serv00.net/public_html/data --driver postgres --dsn postgresql://user:password123@localhost:5432/mydb?sslmode=<span class="built_in">disable</span></span><br><span class="line"><span class="comment"># 使用 pm2 管理（MySQL）（MySQL需要管理员权限，你可以选择远程连接）</span></span><br><span class="line">pm2 start ./memos --name memos -- --mode prod --port PORT --data /home/username/domains/xxx.USERNAME.serv00.net/public_html/data --driver mysql --dsn mysql://root:password123@localhost:3306/mydb</span><br><span class="line"><span class="comment"># 使用 pm2 管理（PostgreSQL）</span></span><br><span class="line">pm2 start ./memos --name memos -- --mode prod --port PORT --data /home/username/domains/xxx.USERNAME.serv00.net/public_html/data --driver postgres --dsn postgresql://user:password123@localhost:5432/mydb?sslmode=<span class="built_in">disable</span></span><br></pre></td></tr></table></figure><h2 id="Frps"><a href="#Frps" class="headerlink" title="Frps"></a>Frps</h2><p>内网穿透嘛，懂的都懂，这里只做服务端的部署记录，客户端可以查看 <span class="exturl" data-url="aHR0cHM6Ly9nb2ZycC5vcmcvemgtY24v">Frp 的官方文档<i class="fa fa-external-link-alt"></i></span>自行配置。感谢群友的率先测试：<span class="exturl" data-url="aHR0cHM6Ly9ibG9nLnRoZXlvdXlpLnNpdGUvYXJjaGl2ZXMvc2VydjAwLWZycHM=">youyi<i class="fa fa-external-link-alt"></i></span></p><p>首先在 Panel 中放行两个端口，接着按照下表 Add a New Website ：</p><table><thead><tr><th>Key</th><th>Value</th></tr></thead><tbody><tr><td>Domain</td><td><code>xxx.USERNAME.serv00.net</code>（也可以把原有的USERNAME.serv00.net删掉后重新添加）</td></tr><tr><td>Website Type</td><td>proxy</td></tr><tr><td>Proxy Target</td><td>localhost</td></tr><tr><td>Proxy URL</td><td>留空</td></tr><tr><td>Proxy port</td><td>你准备用来映射转发内网服务的端口</td></tr><tr><td>Use HTPPS</td><td>False</td></tr><tr><td>DNS support</td><td>True</td></tr></tbody></table><p>添加完新站点后，继续点击上方的 Manage SSL certificates ，接着在出口 IP 的右侧点击 Manage ，再点击 Add certificate ：</p><table><thead><tr><th>Type</th><th>Domain</th></tr></thead><tbody><tr><td>Generate Let’s Encrypted certificate</td><td>与刚刚添加的站点域名保持一致（如果是原有的<code>USERNAME.serv00.net</code> ，可以省略此步）</td></tr></tbody></table><blockquote><p>同样的，你可以设置多个域名使用 Proxy 指向同一个端口，在 Frpc 客户端配置中使用域名分发不同的服务。具体可以查阅官方文档。</p></blockquote><p>接着SSH登入，并进入刚刚你新建的域名目录下的 <code>public_html</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></pre></td><td class="code"><pre><span class="line">release_info=$(curl -s https://api.github.com/repos/fatedier/frp/releases/latest)</span><br><span class="line">download_url=$(<span class="built_in">echo</span> <span class="string">&quot;<span class="variable">$release_info</span>&quot;</span> | jq -r <span class="string">&#x27;.assets[] | select(.name | contains(&quot;freebsd_amd64.tar.gz&quot;)) | .browser_download_url&#x27;</span>)</span><br><span class="line">curl -L <span class="string">&quot;<span class="variable">$download_url</span>&quot;</span> -o frp_freebsd_amd64.tar.gz </span><br><span class="line">tar -xzvf frp_freebsd_amd64.tar.gz --strip-components=1</span><br><span class="line"><span class="built_in">rm</span> -rf frp_freebsd_amd64.tar.gz</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><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 按照自己的实际情况和需求进行配置，这里只做最简单的http转发配置示例</span></span><br><span class="line"><span class="built_in">cat</span> &gt; frps.toml &lt;&lt; <span class="string">EOF</span></span><br><span class="line"><span class="string">bindPort = 监听端口</span></span><br><span class="line"><span class="string">vhostHTTPPort = 映射转发端口</span></span><br><span class="line"><span class="string">auth.token = &quot;密码&quot;</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></pre></td><td class="code"><pre><span class="line">pm2 start ./frps -- -c frps.toml</span><br></pre></td></tr></table></figure><blockquote><p>客户端配置示例：</p><p>TOML</p><figure class="highlight ini"><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></pre></td><td class="code"><pre><span class="line"><span class="attr">serverAddr</span> = <span class="string">&quot;x.x.x.x&quot;</span></span><br><span class="line"><span class="attr">serverPort</span> = Frps 的监听端口</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;http&quot;</span></span><br><span class="line"><span class="attr">localPort</span> = <span class="number">80</span></span><br><span class="line"><span class="attr">customDomains</span> = [<span class="string">&quot;www.yourdomain.com&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;web2&quot;</span></span><br><span class="line"><span class="attr">type</span> = <span class="string">&quot;http&quot;</span></span><br><span class="line"><span class="attr">localPort</span> = <span class="number">8080</span></span><br><span class="line"><span class="attr">customDomains</span> = [<span class="string">&quot;www.yourdomain2.com&quot;</span>]</span><br></pre></td></tr></table></figure></blockquote><h2 id="Rclone"><a href="#Rclone" class="headerlink" title="Rclone"></a><span class="exturl" data-url="aHR0cHM6Ly9yY2xvbmUub3JnLw==">Rclone<i class="fa fa-external-link-alt"></i></span></h2><p>Rclone 是一款管理云存储文件的命令行程序。它功能丰富，可替代云供应商的网络存储界面。超过 70 种云存储产品支持 Rclone，包括 S3 对象存储、企业和消费者文件存储服务以及标准传输协议。</p><p>具体用法与配置请查阅其<span class="exturl" data-url="aHR0cHM6Ly9yY2xvbmUub3JnL2RvY3Mv">官方文档<i class="fa fa-external-link-alt"></i></span>。</p><p>如果你需要使用 Rclone 的 web ui ，你可以按照前文所述的大多数应用一样，先放行端口，添加域名，申请好 SSL 证书，并进入其目录下的 <code>public_html</code> 路径下再进行程序本体的下载部署。</p><p>下载最新版 Rclone：</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">release_info=$(curl -s https://api.github.com/repos/rclone/rclone/releases/latest)</span><br><span class="line">download_url=$(<span class="built_in">echo</span> <span class="string">&quot;<span class="variable">$release_info</span>&quot;</span> | jq -r <span class="string">&#x27;.assets[] | select(.name | contains(&quot;-freebsd-amd64.zip&quot;)) | .browser_download_url&#x27;</span>)</span><br><span class="line">curl -L <span class="string">&quot;<span class="variable">$download_url</span>&quot;</span> -o rclone-freebsd-amd64.zip</span><br><span class="line">outer_folder=$(unzip -l rclone-freebsd-amd64.zip | grep <span class="string">&#x27;/&#x27;</span> | sed -n <span class="string">&#x27;1p&#x27;</span> | sed <span class="string">&#x27;s#^.* \([^/]*\)/.*$#\1#&#x27;</span>)</span><br><span class="line">unzip rclone-freebsd-amd64.zip</span><br><span class="line"><span class="built_in">mv</span> <span class="string">&quot;<span class="variable">$outer_folder</span>&quot;</span>/* . &amp;&amp; <span class="built_in">rm</span> -rf <span class="string">&quot;<span class="variable">$outer_folder</span>&quot;</span> rclone-freebsd-amd64.zip</span><br></pre></td></tr></table></figure><p>经我测试，目前 v1.63.1 之后的版本的 FreeBSD 版的构建都有无法识别 <code>mount</code> 命令的问题，在我查阅其 issue —— <span class="exturl" data-url="aHR0cHM6Ly9naXRodWIuY29tL3JjbG9uZS9yY2xvbmUvaXNzdWVzLzc0MzI=">#7432<i class="fa fa-external-link-alt"></i></span> 、 <span class="exturl" data-url="aHR0cHM6Ly9naXRodWIuY29tL3JjbG9uZS9yY2xvbmUvaXNzdWVzLzU4NDMjaXNzdWVjb21tZW50LTE3ODQxNDk3MjI=">#5843<i class="fa fa-external-link-alt"></i></span> 后，确定这个 bug 已经好几个月没有修复了。所以我建议在此 bug 修复前，使用 v1.63.1 版本。</p><p>下载 v1.63.1 版本 Rclone ：</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">curl -L https://github.com/rclone/rclone/releases/download/v1.63.1/rclone-v1.63.1-freebsd-amd64.zip -o rclone-freebsd-amd64.zip</span><br><span class="line">outer_folder=$(unzip -l rclone-freebsd-amd64.zip | grep <span class="string">&#x27;/&#x27;</span> | sed -n <span class="string">&#x27;1p&#x27;</span> | sed <span class="string">&#x27;s#^.* \([^/]*\)/.*$#\1#&#x27;</span>)</span><br><span class="line">unzip rclone-freebsd-amd64.zip</span><br><span class="line"><span class="built_in">mv</span> <span class="string">&quot;<span class="variable">$outer_folder</span>&quot;</span>/* . &amp;&amp; <span class="built_in">rm</span> -rf <span class="string">&quot;<span class="variable">$outer_folder</span>&quot;</span> rclone-freebsd-amd64.zip</span><br></pre></td></tr></table></figure><p>配置 Rclone 的存储：</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">./rclone config</span><br></pre></td></tr></table></figure><blockquote><p>启动 web ui：</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">./rclone rcd --rc-web-gui --rc-user 用户名 --rc-pass 密码 --rc-addr :端口</span><br></pre></td></tr></table></figure><p>pm2 管理 web ui：</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">pm2 start ./rclone -- rcd --rc-web-gui --rc-user 用户名 --rc-pass 密码 --rc-addr :端口</span><br></pre></td></tr></table></figure></blockquote><h2 id="Cloudreve"><a href="#Cloudreve" class="headerlink" title="Cloudreve"></a><span class="exturl" data-url="aHR0cHM6Ly9jbG91ZHJldmUub3JnLw==">Cloudreve<i class="fa fa-external-link-alt"></i></span></h2><p>Cloudreve 可助你即刻构建出兼备自用或公用的网盘服务，通过多种存储策略的支持、虚拟文件系统等特性实现灵活的文件管理体验。</p><p>同样的，我编写了一个用于自动化构建 FreeBSD 版本的 Cloudreve 的仓库：<span class="exturl" data-url="aHR0cHM6Ly9naXRodWIuY29tL2swYmF5YS9jbG91ZHJldmUtZnJlZWJzZA==">k0baya&#x2F;cloudreve-freebsd<i class="fa fa-external-link-alt"></i></span> 前后端分离构建，前端静态文件在 Cloudreve 本体同路径下的 <code>static</code> 文件夹内。</p><p>首先在 Panel 中放行一个端口，接着按照下表 Add a New Website ：</p><table><thead><tr><th>Key</th><th>Value</th></tr></thead><tbody><tr><td>Domain</td><td><code>xxx.USERNAME.serv00.net</code>（也可以把原有的USERNAME.serv00.net删掉后重新添加）</td></tr><tr><td>Website Type</td><td>proxy</td></tr><tr><td>Proxy Target</td><td>localhost</td></tr><tr><td>Proxy URL</td><td>留空</td></tr><tr><td>Proxy port</td><td>你准备用来部署 Cloudreve 的端口</td></tr><tr><td>Use HTPPS</td><td>False</td></tr><tr><td>DNS support</td><td>True</td></tr></tbody></table><p>添加完新站点后，继续点击上方的 Manage SSL certificates ，接着在出口 IP 的右侧点击 Manage ，再点击 Add certificate ：</p><table><thead><tr><th>Type</th><th>Domain</th></tr></thead><tbody><tr><td>Generate Let’s Encrypted certificate</td><td>与刚刚添加的站点域名保持一致（如果是原有的<code>USERNAME.serv00.net</code> ，可以省略此步）</td></tr></tbody></table><p>接着SSH登入，并进入刚刚你新建的域名目录下的 <code>public_html</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></pre></td><td class="code"><pre><span class="line">release_info=$(curl -s https://api.github.com/repos/k0baya/cloudreve-freebsd/releases/latest)</span><br><span class="line">download_url=$(<span class="built_in">echo</span> <span class="string">&quot;<span class="variable">$release_info</span>&quot;</span> | jq -r <span class="string">&#x27;.assets[] | select(.name | contains(&quot;freebsd-amd64.tar.gz&quot;)) | .browser_download_url&#x27;</span>)</span><br><span class="line">curl -L <span class="string">&quot;<span class="variable">$download_url</span>&quot;</span> -o cloudreve-freebsd-amd64.tar.gz </span><br><span class="line">tar -xzvf cloudreve-freebsd-amd64.tar.gz</span><br><span class="line"><span class="built_in">rm</span> -rf cloudreve-freebsd-amd64.tar.gz</span><br></pre></td></tr></table></figure><p>Cloudreve 在首次启动时，会创建初始管理员账号，请注意保管管理员密码，此密码只会在首次启动时出现。如果您忘记初始管理员密码，需要删除同级目录下的 <code>cloudreve.db</code> ，重新启动主程序以初始化新的管理员账户。</p><p>Cloudreve 默认会监听 <code>5212</code> 端口。首次启动时，Cloudreve 会在同级目录下创建名为 <code>conf.ini</code> 的配置文件，你可以修改此文件进行一些参数的配置（比如端口），保存后需要重新启动 Cloudreve 生效。</p><p>一个完整的配置文件示例如下：</p><figure class="highlight ini"><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><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br></pre></td><td class="code"><pre><span class="line"><span class="section">[System]</span></span><br><span class="line"><span class="comment">; 运行模式</span></span><br><span class="line"><span class="attr">Mode</span> = master</span><br><span class="line"><span class="comment">; 监听端口</span></span><br><span class="line"><span class="attr">Listen</span> = :<span class="number">5212</span></span><br><span class="line"><span class="comment">; 是否开启 Debug</span></span><br><span class="line"><span class="attr">Debug</span> = <span class="literal">false</span></span><br><span class="line"><span class="comment">; Session 密钥, 一般在首次启动时自动生成</span></span><br><span class="line"><span class="attr">SessionSecret</span> = <span class="number">23333</span></span><br><span class="line"><span class="comment">; Hash 加盐, 一般在首次启动时自动生成</span></span><br><span class="line"><span class="attr">HashIDSalt</span> = something really hard to guss</span><br><span class="line"><span class="comment">; 呈递客户端 IP 时使用的 Header</span></span><br><span class="line"><span class="attr">ProxyHeader</span> = X-Forwarded-For</span><br><span class="line"></span><br><span class="line"><span class="comment">; SSL 相关</span></span><br><span class="line"><span class="section">[SSL]</span></span><br><span class="line"><span class="comment">; SSL 监听端口</span></span><br><span class="line"><span class="attr">Listen</span> = :<span class="number">443</span></span><br><span class="line"><span class="comment">; 证书路径</span></span><br><span class="line"><span class="attr">CertPath</span> = C:\Users\i\Documents\fullchain.pem</span><br><span class="line"><span class="comment">; 私钥路径</span></span><br><span class="line"><span class="attr">KeyPath</span> = C:\Users\i\Documents\privkey.pem</span><br><span class="line"></span><br><span class="line"><span class="comment">; 启用 Unix Socket 监听</span></span><br><span class="line"><span class="section">[UnixSocket]</span></span><br><span class="line"><span class="attr">Listen</span> = /run/cloudreve/cloudreve.sock</span><br><span class="line"><span class="comment">; 设置产生的 socket 文件的权限</span></span><br><span class="line"><span class="attr">Perm</span> = <span class="number">0666</span></span><br><span class="line"></span><br><span class="line"><span class="comment">; 数据库相关，如果你只想使用内置的 SQLite 数据库，这一部分直接删去即可</span></span><br><span class="line"><span class="section">[Database]</span></span><br><span class="line"><span class="comment">; 数据库类型，目前支持 sqlite/mysql/mssql/postgres</span></span><br><span class="line"><span class="attr">Type</span> = mysql</span><br><span class="line"><span class="comment">; MySQL 端口</span></span><br><span class="line"><span class="attr">Port</span> = <span class="number">3306</span></span><br><span class="line"><span class="comment">; 用户名</span></span><br><span class="line"><span class="attr">User</span> = root</span><br><span class="line"><span class="comment">; 密码</span></span><br><span class="line"><span class="attr">Password</span> = root</span><br><span class="line"><span class="comment">; 数据库地址</span></span><br><span class="line"><span class="attr">Host</span> = <span class="number">127.0</span>.<span class="number">0.1</span></span><br><span class="line"><span class="comment">; 数据库名称</span></span><br><span class="line"><span class="attr">Name</span> = v3</span><br><span class="line"><span class="comment">; 数据表前缀</span></span><br><span class="line"><span class="attr">TablePrefix</span> = cd_</span><br><span class="line"><span class="comment">; 字符集</span></span><br><span class="line"><span class="attr">Charset</span> = utf8mb4</span><br><span class="line"><span class="comment">; SQLite 数据库文件路径</span></span><br><span class="line"><span class="attr">DBFile</span> = cloudreve.db</span><br><span class="line"><span class="comment">; 进程退出前安全关闭数据库连接的缓冲时间</span></span><br><span class="line"><span class="attr">GracePeriod</span> = <span class="number">30</span></span><br><span class="line"><span class="comment">; 使用 Unix Socket 连接到数据库</span></span><br><span class="line"><span class="attr">UnixSocket</span> = <span class="literal">false</span></span><br><span class="line"></span><br><span class="line"><span class="comment">; 从机模式下的配置</span></span><br><span class="line"><span class="section">[Slave]</span></span><br><span class="line"><span class="comment">; 通信密钥</span></span><br><span class="line"><span class="attr">Secret</span> = <span class="number">1234567891234567123456789123456712345678912345671234567891234567</span></span><br><span class="line"><span class="comment">; 回调请求超时时间 (s)</span></span><br><span class="line"><span class="attr">CallbackTimeout</span> = <span class="number">20</span></span><br><span class="line"><span class="comment">; 签名有效期</span></span><br><span class="line"><span class="attr">SignatureTTL</span> = <span class="number">60</span></span><br><span class="line"></span><br><span class="line"><span class="comment">; 跨域配置</span></span><br><span class="line"><span class="section">[CORS]</span></span><br><span class="line"><span class="attr">AllowOrigins</span> = *</span><br><span class="line"><span class="attr">AllowMethods</span> = OPTIONS,GET,POST</span><br><span class="line"><span class="attr">AllowHeaders</span> = *</span><br><span class="line"><span class="attr">AllowCredentials</span> = <span class="literal">false</span></span><br><span class="line"><span class="attr">SameSite</span> = Default</span><br><span class="line"><span class="attr">Secure</span> = lse</span><br><span class="line"></span><br><span class="line"><span class="comment">; Redis 相关</span></span><br><span class="line"><span class="section">[Redis]</span></span><br><span class="line"><span class="attr">Server</span> = <span class="number">127.0</span>.<span class="number">0.1</span>:<span class="number">6379</span></span><br><span class="line"><span class="attr">Password</span> =</span><br><span class="line"><span class="attr">DB</span> = <span class="number">0</span></span><br><span class="line"></span><br><span class="line"><span class="comment">; 从机配置覆盖</span></span><br><span class="line"><span class="section">[OptionOverwrite]</span></span><br><span class="line"><span class="comment">; 可直接使用 `设置名称 = 值` 的格式覆盖</span></span><br><span class="line"><span class="attr">max_worker_num</span> = <span class="number">50</span></span><br></pre></td></tr></table></figure><p>你可以使用 <code>vim</code> 或者 Panel 中的 File manager 选项卡，进入 <code>conf.ini</code> 所在路径路径，右键点击，选择 View&#x2F;Edit &gt; Source Editor ，进行编辑。</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">./cloudreve</span><br></pre></td></tr></table></figure><p>使用 pm2 管理：</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">pm2 start ./cloudreve</span><br></pre></td></tr></table></figure><h2 id="PanIndex"><a href="#PanIndex" class="headerlink" title="PanIndex"></a><span class="exturl" data-url="aHR0cHM6Ly9naXRodWIuY29tL3B4LW9yZy9QYW5JbmRleA==">PanIndex<i class="fa fa-external-link-alt"></i></span></h2><p>一个简易的网盘目录列表。</p><p>同样的，我编写了一个用于自动化构建 FreeBSD 版本的 PanIndex 的仓库：<span class="exturl" data-url="aHR0cHM6Ly9naXRodWIuY29tL2swYmF5YS9wYW5pbmRleC1mcmVlYnNk">k0baya&#x2F;panindex-freebsd<i class="fa fa-external-link-alt"></i></span>。</p><blockquote><p>后台地址（默认）：<code>http://ip:port/admin</code><br>默认账号：<code>admin</code><br>默认密码：<code>PanIndex</code></p></blockquote><p>首先在 Panel 中放行一个端口，接着按照下表 Add a New Website ：</p><table><thead><tr><th>Key</th><th>Value</th></tr></thead><tbody><tr><td>Domain</td><td><code>xxx.USERNAME.serv00.net</code>（也可以把原有的USERNAME.serv00.net删掉后重新添加）</td></tr><tr><td>Website Type</td><td>proxy</td></tr><tr><td>Proxy Target</td><td>localhost</td></tr><tr><td>Proxy URL</td><td>留空</td></tr><tr><td>Proxy port</td><td>你准备用来部署 PanIndex 的端口</td></tr><tr><td>Use HTPPS</td><td>False</td></tr><tr><td>DNS support</td><td>True</td></tr></tbody></table><p>添加完新站点后，继续点击上方的 Manage SSL certificates ，接着在出口 IP 的右侧点击 Manage ，再点击 Add certificate ：</p><table><thead><tr><th>Type</th><th>Domain</th></tr></thead><tbody><tr><td>Generate Let’s Encrypted certificate</td><td>与刚刚添加的站点域名保持一致（如果是原有的<code>USERNAME.serv00.net</code> ，可以省略此步）</td></tr></tbody></table><p>接着SSH登入，并进入刚刚你新建的域名目录下的 <code>public_html</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></pre></td><td class="code"><pre><span class="line">release_info=$(curl -s https://api.github.com/repos/k0baya/panindex-freebsd/releases/latest)</span><br><span class="line">asset_url=$(<span class="built_in">echo</span> <span class="string">&quot;<span class="variable">$release_info</span>&quot;</span> | jq -r <span class="string">&#x27;.assets[] | select(.name != &quot;source code&quot;) | .browser_download_url&#x27;</span>)</span><br><span class="line">curl -L -o panindex <span class="string">&quot;<span class="variable">$asset_url</span>&quot;</span> &amp;&amp; <span class="built_in">chmod</span> +x panindex</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><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></pre></td><td class="code"><pre><span class="line"><span class="built_in">cat</span> &gt; config.json &lt;&lt; <span class="string">EOF</span></span><br><span class="line"><span class="string">&#123;</span></span><br><span class="line"><span class="string">  &quot;host&quot;: &quot;0.0.0.0&quot;,</span></span><br><span class="line"><span class="string">  &quot;port&quot;: 5238,</span></span><br><span class="line"><span class="string">  &quot;log_level&quot;: &quot;info&quot;,</span></span><br><span class="line"><span class="string">  &quot;data_path&quot;: &quot;&quot;,</span></span><br><span class="line"><span class="string">  &quot;cert_file&quot;: &quot;&quot;,</span></span><br><span class="line"><span class="string">  &quot;key_file&quot;: &quot;&quot;,</span></span><br><span class="line"><span class="string">  &quot;config_query&quot;: &quot;&quot;,</span></span><br><span class="line"><span class="string">  &quot;db_type&quot;: &quot;&quot;,</span></span><br><span class="line"><span class="string">  &quot;dsn&quot;: &quot;&quot;,</span></span><br><span class="line"><span class="string">  &quot;ui&quot;: &quot;&quot;</span></span><br><span class="line"><span class="string">&#125;</span></span><br><span class="line"><span class="string">EOF</span></span><br></pre></td></tr></table></figure><blockquote><p>数据库支持 sqlite (默认)、mysql、postgres ，如果需要接入 MySQL 或者 PostgreSQL ，请写成数据库链接的方式填入 dsn 。注意，如果是 Serv00 自带的 PostgreSQL ，请在数据库链接最末加上 <code>?sslmode=disable</code> 以禁用 SSL 连接。</p></blockquote><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">./panindex -c=config.json</span><br></pre></td></tr></table></figure><p>使用 pm2 管理：</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">pm2 start ./panindex -- -c=config.json</span><br></pre></td></tr></table></figure><h2 id="Artalk"><a href="#Artalk" class="headerlink" title="Artalk"></a><span class="exturl" data-url="aHR0cHM6Ly9naXRodWIuY29tL0FydGFsa0pTL0FydGFsaw==">Artalk<i class="fa fa-external-link-alt"></i></span></h2><p>似乎有几个群友在用这个，为方便查阅统一收录在本文，具体内容可以去群友的博客查看：<br><a href="https://blog.sinzmise.top/posts/13624/"><img src="https://blog.sinzmise.top/img/avatar.png" alt="img"></a></p><blockquote><p>点击图片进入</p></blockquote><h1 id="收尾工作"><a href="#收尾工作" class="headerlink" title="收尾工作"></a>收尾工作</h1><p>听说 Serv00 会不定时重启机器，所以我们把 pm2 添加开机自启，可以保证每次重启都能由 pm2 调动 Alist 和 Cloudflared 。而且 Serv00 每三个月内必须要有一次登录面板或者 SSH 连接，不然会删号，也可以通过一个脚本解决问题，接下来我会详细说明。</p><h2 id="自动续期"><a href="#自动续期" class="headerlink" title="自动续期"></a>自动续期</h2><p>可以用青龙面板的自动任务定期登录SSH解决。在青龙面板中添加Linux依赖 <code>sshpass</code>，然后添加定时任务：名称随意，命令&#x2F;脚本 <code>sshpass -p &#39;密码&#39; ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -tt 用户名@地址 &quot;exit&quot;</code>，定时规则 <code>1 1 1 * *</code>。这样就会每个月自动ssh连接一次，实现续期。</p><blockquote><p>你还可以使用自身 SSH 自身的方式进行自动续期，操作如下：</p><p>进入一个自己喜欢的路径，使用 <code>cat</code> 命令新建 <code>auto-renew.sh</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></pre></td><td class="code"><pre><span class="line"><span class="built_in">cat</span> &gt; auto-renew.sh &lt;&lt; <span class="string">EOF</span></span><br><span class="line"><span class="string">#!/bin/bash</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">while true; do</span></span><br><span class="line"><span class="string">  sshpass -p &#x27;密码&#x27; ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -tt 用户名@地址 &quot;exit&quot; &amp;</span></span><br><span class="line"><span class="string">  sleep 259200  #30天为259200秒</span></span><br><span class="line"><span class="string">done</span></span><br><span class="line"><span class="string">EOF</span></span><br></pre></td></tr></table></figure><p>记得把其中的密码、用户名、ssh的地址修改为你自己的。</p><p>给 <code>auto-renew.sh</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"><span class="built_in">chmod</span> +x auto-renew.sh</span><br></pre></td></tr></table></figure><p>使用pm2启动：</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">pm2 start ./auto-renew.sh</span><br></pre></td></tr></table></figure><p>这样就会每隔一个月自动执行一次SSH连接，自己SSH自己进行续期。</p></blockquote><h2 id="自动启动"><a href="#自动启动" class="headerlink" title="自动启动"></a>自动启动</h2><p>听说 Serv00 的主机会不定时重启，所以需要添加自启任务。</p><p>在 Panel 中找到 Cron jobs 选项卡，使用 Add cron job 功能添加任务，Specify time 选择 After reboot，即为重启后运行。Form type 选择 Advanced，Command 写：</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">/home/你的用户名/.npm-global/bin/pm2 resurrect</span><br></pre></td></tr></table></figure><blockquote><p>记得把你的用户名改为你的用户名</p></blockquote><p>添加完之后，在 SSH 窗口保存 pm2 的当前任务列表快照：</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">pm2 save</span><br></pre></td></tr></table></figure><p>这样每次 serv00 不定时重启任务时，都能自动调用 pm2 读取保存的任务列表快照，恢复任务列表。<strong>如果在保存了任务列表快照后又改变了任务 pm2 的任务列表，需要重新执行 <code>pm2 save</code> 以更新任务列表。</strong></p><p><strong>欢迎进群讨论，一起学习探讨：<span class="exturl" data-url="aHR0cHM6Ly9qcS5xcS5jb20vP193dj0xMDI3Jms9cXNzakZ2QXM=">受虐滑稽<i class="fa fa-external-link-alt"></i></span></strong><br><strong>原文地址：<span class="exturl" data-url="aHR0cHM6Ly9ibG9nLnJhcHBpdC5zaXRlLzIwMjQvMDEvMjcvc2VydjAwX2xvZ3Mv">https://blog.rappit.site/2024/01/27/serv00_logs/<i class="fa fa-external-link-alt"></i></span></strong></p>]]></content>
    
    
    <summary type="html">&lt;p&gt;Serv00搭建各种服务&lt;/p&gt;
&lt;p&gt;&lt;span class=&quot;exturl&quot; data-url=&quot;aHR0cHM6Ly93d3cuc2VydjAwLmNvbS8=&quot;&gt;这个平台&lt;i class=&quot;fa fa-external-link-alt&quot;&gt;&lt;/i&gt;&lt;/span&gt;是个 Virtual Host ，没有 Root ，还是 FreeBSD 的系统，不是 Linux ，不太好用。但是优点是隔离性差， Memory 和 vCPU 能短时间内超过 100% 进行调用。&lt;/p&gt;
&lt;p&gt;已经玩了不少时间了，起初看到 Github 上有使用 Serv00 搭建 Vless 节点的&lt;span class=&quot;exturl&quot; data-url=&quot;aHR0cHM6Ly9naXRodWIuY29tL3F3ZXItc2VhcmNoL3NlcnYwMC12bGVzcw==&quot;&gt;仓库&lt;i class=&quot;fa fa-external-link-alt&quot;&gt;&lt;/i&gt;&lt;/span&gt;，就上手玩了一下，后来发现极其不稳， screen 运行的进程总是过一段时间就掉了（后经网友讨论确认为Serv00有时候会重启宿主机），又得ssh上去启动，相当不友好，且后来又发现了 Hax 这样的玩具，就对 Serv00 视如敝履了。&lt;/p&gt;
&lt;p&gt;但是这两天有&lt;span class=&quot;exturl&quot; data-url=&quot;aHR0cHM6Ly9qcS5xcS5jb20vP193dj0xMDI3Jms9cXNzakZ2QXM=&quot;&gt;群友&lt;i class=&quot;fa fa-external-link-alt&quot;&gt;&lt;/i&gt;&lt;/span&gt;突然提醒我才想起，我在 Hax 上用的很舒服的 pm2 也可以在 Serv00 上使用，这个十年有效期的玩具突然显得有用了起来。&lt;/p&gt;
&lt;p&gt;经过我的尝试，成功在 Serv00 上部署了一些服务，接下来进行记录：&lt;/p&gt;</summary>
    
    
    
    <category term="学习笔记" scheme="http://blog.ynxiu.com/categories/notes/"/>
    
    
    <category term="linux" scheme="http://blog.ynxiu.com/tags/linux/"/>
    
    <category term="serv00" scheme="http://blog.ynxiu.com/tags/serv00/"/>
    
    <category term="服务" scheme="http://blog.ynxiu.com/tags/%E6%9C%8D%E5%8A%A1/"/>
    
  </entry>
  
  <entry>
    <title>部署aliyundrive-qr-login记录</title>
    <link href="http://blog.ynxiu.com/aixiu/738535c9.html"/>
    <id>http://blog.ynxiu.com/aixiu/738535c9.html</id>
    <published>2024-04-05T18:24:37.000Z</published>
    <updated>2024-04-05T18:24:37.000Z</updated>
    
    <content type="html"><![CDATA[<blockquote><p>准备工作</p></blockquote><ul><li><p>搭建方案：caddy + falsk + gunicorn</p></li><li><p>使用到的工具：git，docker</p></li><li><p>准备一个解析到服务器IP的域名。</p></li></ul><p>工具不齐或是不会使用的自行搜索找方法。本文只记录操作。</p><h2 id="docker安装"><a href="#docker安装" class="headerlink" title="docker安装"></a>docker安装</h2><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">curl -fsSL https://get.docker.com | sh &amp;&amp; <span class="built_in">ln</span> -s /usr/libexec/docker/cli-plugins/docker-compose /usr/local/bin</span><br></pre></td></tr></table></figure><p>官方一键脚本并配置好docker-compose</p><p>查看：<code>docker -v</code></p><p>返回：<code>Docker version 26.0.0, build 2ae903e</code></p><p>即安装成功，其它docker相关命令，本文最后提供。</p><p><em><span id="more"></span></em></p><h2 id="git-安装，如果已有则跳过"><a href="#git-安装，如果已有则跳过" class="headerlink" title="git 安装，如果已有则跳过"></a>git 安装，如果已有则跳过</h2><figure class="highlight routeros"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">apt-<span class="built_in">get</span> install git</span><br></pre></td></tr></table></figure><blockquote><p>部署</p></blockquote><p><del>一些想法：想过很多方案，比如nginx + uwsgi +flask， 这种方案也挺好只是后边配置域名时会麻烦点，caddy和flask在同一个容器里方便，但是其它容器想利用caddy就很不爽，所以最终决定使用caddy和flask两个独立容器部署的方案。</del></p><h3 id="新建自定义网格，如-aixiu-network"><a href="#新建自定义网格，如-aixiu-network" class="headerlink" title="新建自定义网格，如 aixiu-network"></a><em>新建自定义网格，如 aixiu-network</em></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 network create aixiu-network</span><br></pre></td></tr></table></figure><p>注：<code>aixiu-network</code>名字可以自定义，后边要用到。主要是因为它使得容器间的通信变得更容易，也支持DNS解析，容器可以使用容器名进行互相访问。</p><p><em># 如果Flask容器已经运行，你需要将其连接到新的网络，比如将Flask容器添加到网络：</em></p><p>docker network connect aixiu-network aliyun-flask </p><h3 id="部署caddy"><a href="#部署caddy" class="headerlink" title="部署caddy"></a>部署caddy</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 -d --name caddy --network aixiu-network -p 80:80 -p 443:443 -p 443:443/udp -v /www/caddy/:/etc/caddy/ -v /www/wwwroot/:/usr/share/caddy/ --restart=always caddy:latest</span><br></pre></td></tr></table></figure><p>命令解释：</p><figure class="highlight awk"><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></pre></td><td class="code"><pre><span class="line">这条命令是在Docker中启动一个Caddy服务器的示例，下面是每个选项的详细解释：</span><br><span class="line"></span><br><span class="line">docker run：Docker的命令，用于创建并启动一个新的容器。</span><br><span class="line"></span><br><span class="line">-d：以“detached”模式运行，即容器在后台运行。</span><br><span class="line"></span><br><span class="line">--name caddy：为正在创建的容器分配一个名称，这里的名称为“caddy”。</span><br><span class="line"></span><br><span class="line">--network aixiu-network：将容器连接到指定的网络。这里，容器将连接到名为“aixiu-network”的网络。若该网络不存在，您需要先创建它。</span><br><span class="line"></span><br><span class="line">-p <span class="number">80</span>:<span class="number">80</span>：端口映射，将容器内的<span class="number">80</span>端口映射到宿主机的<span class="number">80</span>端口。用于HTTP通信。</span><br><span class="line"></span><br><span class="line">-p <span class="number">443</span>:<span class="number">443</span>：端口映射，将容器内的<span class="number">443</span>端口映射到宿主机的<span class="number">443</span>端口。用于HTTPS通信。</span><br><span class="line"></span><br><span class="line">-p <span class="number">443</span>:<span class="number">443</span>/udp：端口映射，将容器内的<span class="number">443</span>端口映射到宿主机的<span class="number">443</span>端口，针对UDP协议。这通常用于某些特定的网络功能，如QUIC。</span><br><span class="line"></span><br><span class="line">-v <span class="regexp">/www/</span>caddy<span class="regexp">/:/</span>etc<span class="regexp">/caddy/</span>：卷映射，将宿主机的<span class="regexp">/www/</span>caddy<span class="regexp">/目录挂载到容器的/</span>etc<span class="regexp">/caddy/</span>目录。这允许您将宿主机上的Caddy配置文件（如Caddyfile）映射至容器内。</span><br><span class="line"></span><br><span class="line">-v <span class="regexp">/www/</span>wwwroot<span class="regexp">/:/u</span>sr<span class="regexp">/share/</span>caddy<span class="regexp">/：卷映射，将宿主机的/</span>www<span class="regexp">/wwwroot/</span>目录挂载到容器的<span class="regexp">/usr/</span>share<span class="regexp">/caddy/</span>目录。这可以用于存放您的网站文件，Caddy服务器将从这个目录服务静态文件。</span><br><span class="line"></span><br><span class="line">--restart=always：告诉Docker在容器退出时总是重启容器。</span><br><span class="line"></span><br><span class="line">caddy:latest：指定要使用的镜像，这里使用的是Caddy的最新版镜像。</span><br><span class="line"></span><br><span class="line">总结来说，这条命令将启动一个Caddy服务器容器，该容器使用指定的网络和端口映射，同时挂载了配置文件和网站文件目录以便Caddy可以访问。此外，容器被配置为在退出时自动重启。</span><br></pre></td></tr></table></figure><h3 id="部署aliyun-flask"><a href="#部署aliyun-flask" class="headerlink" title="部署aliyun-flask"></a>部署aliyun-flask</h3><ol><li><p>用<code>xshell</code>连接到服务器，先创建两个文件夹</p><figure class="highlight awk"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">mkdir -p <span class="regexp">/www/</span>&#123;caddy,wwwroot&#125;</span><br></pre></td></tr></table></figure><p>caddy文件夹用来存放Caddyfile，wwwroot用来存放网站源码。</p></li><li><p>进入wwwroot目录</p><p><code>cd /www/wwwroot</code></p><p>使用<code>git clone https://github.com/ImYrS/aliyundrive-qr-login.git</code>下载源码，</p><p>并使用命令进入aliyundrive-qr-login目录：<code>cd aliyundrive-qr-login</code></p></li><li><p>配置文件复制一份并改名为config.ini：<code>mv example.config.ini config.ini</code></p></li><li><p>创建<code>Dockerfile</code></p><p><code>nano Dockerfile</code></p><p>自用配置，可按需更改：</p><figure class="highlight ini"><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></pre></td><td class="code"><pre><span class="line"><span class="comment"># 使用官方 Python Docker 镜像</span></span><br><span class="line">FROM python:3.9-slim-buster</span><br><span class="line"></span><br><span class="line"><span class="comment"># LABEL 维护者信息</span></span><br><span class="line">LABEL 888888@qq.com</span><br><span class="line"></span><br><span class="line"><span class="comment"># 设置工作目录</span></span><br><span class="line">WORKDIR /www/wwwroot/aliyundrive-qr-login</span><br><span class="line"></span><br><span class="line"><span class="comment"># 安装系统依赖</span></span><br><span class="line"><span class="comment"># RUN apt-get update &amp;&amp; apt-get install -y gcc libffi-dev</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 拷贝项目文件到容器内</span></span><br><span class="line">COPY . /www/wwwroot/aliyundrive-qr-login</span><br><span class="line"></span><br><span class="line"><span class="comment"># 安装项目依赖</span></span><br><span class="line">RUN pip install --no-cache-dir -r requirements.txt gunicorn</span><br><span class="line"></span><br><span class="line"><span class="comment"># 配置环境变量</span></span><br><span class="line">ENV <span class="attr">GUNICORN_CMD</span>=<span class="string">&quot;gunicorn -w 2 -b 0.0.0.0:5500 app:app&quot;</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 暴露需要的端口</span></span><br><span class="line">EXPOSE 5500</span><br><span class="line"></span><br><span class="line"><span class="comment"># 运行 Gunicorn 服务器</span></span><br><span class="line">CMD <span class="section">[ &quot;sh&quot;, &quot;-c&quot;, &quot;$GUNICORN_CMD&quot; ]</span></span><br></pre></td></tr></table></figure><p>以下是每一行代码的解释：</p><figure class="highlight ini"><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></pre></td><td class="code"><pre><span class="line">FROM python:3.9-slim-buster</span><br><span class="line">使用官方 Python 3.9 轻量级镜像作为基础镜像。</span><br><span class="line"></span><br><span class="line">LABEL 4815563@qq.com</span><br><span class="line">使用LABEL指令添加维护者信息。这个指令用于添加镜像的元数据。</span><br><span class="line"></span><br><span class="line">WORKDIR /www/wwwroot/aliyundrive-qr-login</span><br><span class="line">设置工作目录为 /www/wwwroot/aliyundrive-qr-login，以便接下来的命令在这个目录中执行。</span><br><span class="line"></span><br><span class="line">COPY . /www/wwwroot/aliyundrive-qr-login</span><br><span class="line">将当前目录中的所有文件和子目录复制到Docker镜像内的/www/wwwroot/aliyundrive-qr-login目录中。</span><br><span class="line"></span><br><span class="line">RUN pip install --no-cache-dir -r requirements.txt gunicorn</span><br><span class="line">在镜像中运行命令，安装指定的Python依赖包（通过requirements.txt文件指定），同时安装了gunicorn作为WSGI HTTP服务器。</span><br><span class="line"></span><br><span class="line">ENV <span class="attr">GUNICORN_CMD</span>=<span class="string">&quot;gunicorn -w 2 -b 0.0.0.0:5500 app:app&quot;</span></span><br><span class="line">设置环境变量GUNICORN_CMD为gunicorn -w 2 -b 0.0.0.0:5500 app:app，这在容器启动时执行。</span><br><span class="line"></span><br><span class="line">EXPOSE 5500</span><br><span class="line">声明容器运行时将要监听的端口号，这里是5500。</span><br><span class="line"></span><br><span class="line">CMD <span class="section">[ &quot;sh&quot;, &quot;-c&quot;, &quot;$GUNICORN_CMD&quot; ]</span></span><br><span class="line">在容器启动时执行sh -c &quot;$GUNICORN_CMD&quot;命令。这会启动一个新的shell并在其中执行$GUNICORN_CMD中设置的命令，这里是启动gunicorn服务器。</span><br></pre></td></tr></table></figure><p>注意：</p><figure class="highlight q"><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">注释掉的命令：RUN apt-<span class="built_in">get</span> <span class="keyword">update</span> &amp;&amp; apt-<span class="built_in">get</span> install -y gcc libffi-<span class="built_in">dev</span>。这行命令用于更新apt软件包列表并安装gcc和libffi-<span class="built_in">dev</span>这两个软件包。</span><br><span class="line"></span><br><span class="line">是否需要运行这个命令取决于你的项目的具体需求。如果你的Python依赖或应用程序需要这些软件包来编译或安装特定的依赖，那么运行这个命令是必要的。</span><br><span class="line"></span><br><span class="line">例如，如果你的Python依赖包中包含需要编译的C扩展，那么你可能需要安装gcc。如果你的应用需要使用libffi库，那么你可能需要安装libffi-<span class="built_in">dev</span>。</span><br><span class="line"></span><br><span class="line">建议检查你的应用程序是否有这些依赖，并根据需要决定是否运行这个命令。</span><br></pre></td></tr></table></figure></li><li><p>构建flask Docker镜像镜像<br><code>docker build -t aliyun-flask:latest . -f Dockerfile</code></p><p>命令解释：</p><figure class="highlight diff"><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">这是一个用于构建Docker镜像的命令，其含义如下：</span><br><span class="line"></span><br><span class="line">docker build：这部分命令告诉Docker命令行工具我们要构建一个新的镜像。</span><br><span class="line"></span><br><span class="line"><span class="deletion">-t aliyun-flask:latest：这个部分用于给镜像指定一个标签（tag），其中aliyun-flask是镜像的名称，latest是标签，表示这是最新的版本。这样做的好处是可以更方便地识别镜像的版本。</span></span><br><span class="line"></span><br><span class="line">.：这表示Dockerfile所在的目录，也就是当前目录。Docker将查找该目录下的Dockerfile来进行构建。</span><br><span class="line"></span><br><span class="line"><span class="deletion">-f Dockerfile：这是用来指定Dockerfile的文件名。默认情况下，Docker会在当前目录查找名为Dockerfile的文件来进行构建，但是如果你的Dockerfile文件命名不是Dockerfile，你可以使用-f选项来指定文件名。</span></span><br><span class="line"></span><br><span class="line">所以，这条命令的含义是告诉Docker命令行工具使用当前目录中的Dockerfile来构建一个带有aliyun-flask:latest标签的镜像。</span><br></pre></td></tr></table></figure></li><li><p>部署flask docker </p><p><code>docker run -d --name aliyun-flask --network aixiu-network -p 5500:5500 --restart=always aliyun-flask:latest</code></p><p>其含义如下：</p><figure class="highlight diff"><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></pre></td><td class="code"><pre><span class="line">docker run：这部分命令告诉Docker命令行工具我们要运行一个新的容器。</span><br><span class="line"></span><br><span class="line"><span class="deletion">-d：这个选项表示在“后台”模式下运行容器，也就是分离模式。</span></span><br><span class="line"></span><br><span class="line"><span class="deletion">--name aliyun-flask：这表示给容器指定一个名称，这里是aliyun-flask。</span></span><br><span class="line"></span><br><span class="line"><span class="deletion">--network aixiu-network：这部分指定了容器所连接的网络，这里是aixiu-network。</span></span><br><span class="line"></span><br><span class="line"><span class="deletion">-p 5500:5500：这个部分用于映射容器的端口到宿主机的端口，这里是将容器的5500端口映射到宿主机的5500端口。</span></span><br><span class="line"></span><br><span class="line"><span class="deletion">--restart=always：这个选项表示容器将始终自动重启，即使Docker守护进程被重启。</span></span><br><span class="line"></span><br><span class="line">aliyun-flask:latest：这是要运行的镜像的名称和标签。在这种情况下，它运行了名为aliyun-flask的镜像的最新版本。</span><br><span class="line"></span><br><span class="line">综合起来，这条命令的含义是在后台模式下运行一个名为aliyun-flask的Docker容器，连接到aixiu-network网络，并将容器的5500端口映射到宿主机的5500端口。容器将受到Docker守护进程的监管，并在必要时自动重启。</span><br></pre></td></tr></table></figure></li></ol><h3 id="查看现在的状态"><a href="#查看现在的状态" class="headerlink" title="查看现在的状态"></a>查看现在的状态</h3><p><code>docker images</code></p><figure class="highlight apache"><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="attribute">REPOSITORY</span>     TAG       IMAGE ID       CREATED       SIZE</span><br><span class="line"><span class="attribute">aliyun</span>-flask   latest    <span class="number">87</span>a8f1250fa5   <span class="number">3</span> hours ago   <span class="number">144</span>MB</span><br><span class="line"><span class="attribute">caddy</span>          latest    <span class="number">439</span>af64db489   <span class="number">2</span> years ago   <span class="number">40</span>.<span class="number">1</span>MB</span><br></pre></td></tr></table></figure><p>有两个镜像。</p><p><code>docker ps -a</code>查看所有容器</p><figure class="highlight apache"><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="attribute">CONTAINER</span> ID   IMAGE                 COMMAND                   CREATED        NAMES</span><br><span class="line"><span class="attribute">597f48baf6aa</span>   aliyun-flask:latest   <span class="string">&quot;sh -c $GUNICORN_CMD&quot;</span>     <span class="number">2</span> hours ago   aliyun-flask</span><br><span class="line"><span class="attribute">426a73fae06d</span>   caddy:latest          <span class="string">&quot;caddy run --config …&quot;</span>   <span class="number">2</span> hours ago    caddy</span><br></pre></td></tr></table></figure><p><code>docker ps</code>查看启动运行中的容器</p><figure class="highlight apache"><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="attribute">CONTAINER</span> ID   IMAGE                 COMMAND                   CREATED        NAMES</span><br><span class="line"><span class="attribute">597f48baf6aa</span>   aliyun-flask:latest   <span class="string">&quot;sh -c $GUNICORN_CMD&quot;</span>     <span class="number">2</span> hours ago   aliyun-flask</span><br><span class="line"><span class="attribute">426a73fae06d</span>   caddy:latest          <span class="string">&quot;caddy run --config …&quot;</span>   <span class="number">2</span> hours ago    caddy</span><br></pre></td></tr></table></figure><p>如果发现运行中的容器不是两个，请自行解决。</p><h3 id="配置Caddyfile"><a href="#配置Caddyfile" class="headerlink" title="配置Caddyfile"></a>配置Caddyfile</h3><p>cd &#x2F;www&#x2F;caddy</p><p>nano Caddyfile</p><p>写入</p><figure class="highlight autoit"><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">jihu.pp.ua &#123;</span><br><span class="line">    reverse_proxy aliyun-flask:<span class="number">5500</span>  <span class="meta"># aliyun-flask即docker run -d --name aliyun-flask名字一至</span></span><br><span class="line">    encode gzip</span><br><span class="line">    tls <span class="number">88888</span><span class="symbol">@qq</span>.com  <span class="meta"># 请填写自己的可用邮箱来申请tsl证书</span></span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><h3 id="重启caddy"><a href="#重启caddy" class="headerlink" title="重启caddy"></a>重启caddy</h3><p>docker restart caddy</p><p>即可用域名访问</p><h2 id="其它相关Docker命令"><a href="#其它相关Docker命令" class="headerlink" title="其它相关Docker命令"></a>其它相关Docker命令</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><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></pre></td><td class="code"><pre><span class="line">systemctl <span class="built_in">enable</span> docker <span class="comment"># 设置开机启动</span></span><br><span class="line"></span><br><span class="line">systemctl start docker  <span class="comment"># 启动docker</span></span><br><span class="line">systemctl restart docker <span class="comment"># 重启docker</span></span><br><span class="line"></span><br><span class="line">systemctl stop docker <span class="comment"># 停止docker</span></span><br><span class="line"></span><br><span class="line">docker images <span class="comment"># 查看镜像</span></span><br><span class="line"></span><br><span class="line">docker stop  container <span class="comment"># 停止container容器</span></span><br><span class="line">docker <span class="built_in">rm</span> container1 container2 container3  <span class="comment"># 删除多个容器</span></span><br><span class="line">docker rmi &lt;镜像ID1&gt; &lt;镜像ID2&gt; &lt;镜像ID3&gt;  <span class="comment"># 删除多个镜像</span></span><br><span class="line">docker image prune -a <span class="comment"># 删除所有悬空镜像（即没有标签且没有被容器引用的镜像）</span></span><br><span class="line">docker rmi $(docker images -q) -f  <span class="comment"># 删除所有镜像</span></span><br><span class="line"></span><br><span class="line">其它</span><br><span class="line">查看docker信息</span><br><span class="line">docker version</span><br><span class="line"></span><br><span class="line">docker info</span><br></pre></td></tr></table></figure>]]></content>
    
    
    <summary type="html">&lt;blockquote&gt;
&lt;p&gt;准备工作&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;搭建方案：caddy + falsk + gunicorn&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;使用到的工具：git，docker&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;准备一个解析到服务器IP的域名。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;工具不齐或是不会使用的自行搜索找方法。本文只记录操作。&lt;/p&gt;
&lt;h2 id=&quot;docker安装&quot;&gt;&lt;a href=&quot;#docker安装&quot; class=&quot;headerlink&quot; title=&quot;docker安装&quot;&gt;&lt;/a&gt;docker安装&lt;/h2&gt;&lt;figure class=&quot;highlight bash&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;curl -fsSL https://get.docker.com | sh &amp;amp;&amp;amp; &lt;span class=&quot;built_in&quot;&gt;ln&lt;/span&gt; -s /usr/libexec/docker/cli-plugins/docker-compose /usr/local/bin&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;

&lt;p&gt;官方一键脚本并配置好docker-compose&lt;/p&gt;
&lt;p&gt;查看：&lt;code&gt;docker -v&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;返回：&lt;code&gt;Docker version 26.0.0, build 2ae903e&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;即安装成功，其它docker相关命令，本文最后提供。&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;/em&gt;&lt;/p&gt;</summary>
    
    
    
    <category term="学习笔记" scheme="http://blog.ynxiu.com/categories/notes/"/>
    
    
    <category term="python" scheme="http://blog.ynxiu.com/tags/python/"/>
    
    <category term="docker" scheme="http://blog.ynxiu.com/tags/docker/"/>
    
    <category term="flask" scheme="http://blog.ynxiu.com/tags/flask/"/>
    
  </entry>
  
  <entry>
    <title>反编译pyinstaller生成exe的工具</title>
    <link href="http://blog.ynxiu.com/aixiu/6bc2cfae.html"/>
    <id>http://blog.ynxiu.com/aixiu/6bc2cfae.html</id>
    <published>2023-04-25T11:34:54.000Z</published>
    <updated>2023-04-25T11:34:54.000Z</updated>
    
    <content type="html"><![CDATA[<blockquote><p> 简单的使用流程：</p></blockquote><ul><li><p>首先获取开源的pyinstxtractor.py</p><ul><li><p>开源下载地址：<span class="exturl" data-url="aHR0cHM6Ly9naXRodWIuY29tL2V4dHJlbWVjb2RlcnMtcmUvcHlpbnN0eHRyYWN0b3I=">https://github.com/extremecoders-re/pyinstxtractor<i class="fa fa-external-link-alt"></i></span></p></li><li><p>先将<code>pyinstxtractor.py</code>工具与我们要反编译的<code>.exe</code>文件放入同一个工作目录下。</p></li><li><p>输入 (xxx.exe为pyinstaller生成exe)</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">python pyinstxtractor.py xxx.exe</span><br></pre></td></tr></table></figure><p>可以发现工作目录下多了一个名为<code>文件名.exe_extracted</code>的文件夹：</p></li></ul></li></ul><span id="more"></span><p>这就获得了python源码，目录中有带<code>.pyc</code>后缀的文件，我们要找到那个与你的<code>.exe</code>文件同名的文件，（<code>pyinstxtractor.py</code>工具在2.0以前的版本，会生成两个不带后缀的文件，我们仍然是要找到那个与自己的<code>.exe</code>文件同名的文件，手动为它添加<code>.pyc</code>后缀）</p><ul><li><p>安装 uncompyle6 依赖库</p><ul><li><pre><code class="language-python">pip install uncompyle6</code></pre></li><li><p>把和<code>.exe</code>文件名相同的 <code>.pyc</code>文件，复制到指定目录或是原目录，在该目录下：</p></li><li><p>输入命令<code>uncompyle6 文件名.pyc &gt; 文件名.py</code>回车执行，就可以看到目录下生成了<code>.py</code>文件了</p></li></ul><p>相关文章：</p><ul><li><span class="exturl" data-url="aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzYzNTg1OTQ5L2FydGljbGUvZGV0YWlscy8xMjY3MDY1MjY=">pyinstxtractor工具和uncompyle6库的使用<i class="fa fa-external-link-alt"></i></span></li><li><span class="exturl" data-url="aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FmY3lfL2FydGljbGUvZGV0YWlscy8xMTMyNDU4NzY=">反编译pyinstaller生成exe的工具<i class="fa fa-external-link-alt"></i></span></li><li><span class="exturl" data-url="aHR0cHM6Ly93d3cuNTJwb2ppZS5jbi9mb3J1bS5waHA/bW9kPXZpZXd0aHJlYWQmdGlkPTE1NzUwMDYmZXh0cmE9JmhpZ2hsaWdodD1RUSVDOCVCQSZwYWdlPTE=">QQ群成员提取器<i class="fa fa-external-link-alt"></i></span></li></ul></li></ul>]]></content>
    
    
    <summary type="html">&lt;blockquote&gt;
&lt;p&gt; 简单的使用流程：&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;首先获取开源的pyinstxtractor.py&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;开源下载地址：&lt;span class=&quot;exturl&quot; data-url=&quot;aHR0cHM6Ly9naXRodWIuY29tL2V4dHJlbWVjb2RlcnMtcmUvcHlpbnN0eHRyYWN0b3I=&quot;&gt;https://github.com/extremecoders-re/pyinstxtractor&lt;i class=&quot;fa fa-external-link-alt&quot;&gt;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;先将&lt;code&gt;pyinstxtractor.py&lt;/code&gt;工具与我们要反编译的&lt;code&gt;.exe&lt;/code&gt;文件放入同一个工作目录下。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;输入 (xxx.exe为pyinstaller生成exe)&lt;/p&gt;
&lt;figure class=&quot;highlight python&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;python pyinstxtractor.py xxx.exe&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;

&lt;p&gt;可以发现工作目录下多了一个名为&lt;code&gt;文件名.exe_extracted&lt;/code&gt;的文件夹：&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</summary>
    
    
    
    <category term="学习笔记" scheme="http://blog.ynxiu.com/categories/notes/"/>
    
    
    <category term="python" scheme="http://blog.ynxiu.com/tags/python/"/>
    
    <category term="pyinstxtractor" scheme="http://blog.ynxiu.com/tags/pyinstxtractor/"/>
    
    <category term="反编译" scheme="http://blog.ynxiu.com/tags/%E5%8F%8D%E7%BC%96%E8%AF%91/"/>
    
  </entry>
  
  <entry>
    <title>网站徽章shields制作教程</title>
    <link href="http://blog.ynxiu.com/aixiu/6bd3a88c.html"/>
    <id>http://blog.ynxiu.com/aixiu/6bd3a88c.html</id>
    <published>2023-04-03T17:35:49.000Z</published>
    <updated>2023-04-03T17:35:49.000Z</updated>
    
    <content type="html"><![CDATA[<p>平时在逛 Gitee、Github 等各大代码仓库时，往往能看到以下这种徽章式的网页链接，美观好看又方便，那么这个徽章是如何制作出来的呢？本文就带大家制作属于自己的徽章式链接。</p><span id="more"></span><p><img src="/aixiu/6bd3a88c/1b6523e53e44019e7df408fd58a06548.png" alt="image-20220204155933667"></p><p>制作工具：shields，一种以SVG或光栅格式所提供简洁、一致、清晰的徽章服务，可以轻松地包含在GitHub自述文件或任何其他网页中；该服务支持数十种持续集成服务、软件包注册表、发行版、应用商店、社交网络、代码覆盖率服务和代码分析服务。每个月它提供超过7.7亿张图像，并被一些世界上最受欢迎的开源项目如VS Code、Vue.js和Bootstrap的使用。</p><p>制作网页：<span class="exturl" data-url="aHR0cHM6Ly9zaGllbGRzLmlvLyN5b3VyLWJhZGdl">https://shields.io/#your-badge<i class="fa fa-external-link-alt"></i></span></p><p>格式为：<code>https://img.shields.io/badge/&#123;徽标标题&#125;-&#123;徽标内容&#125;-&#123;徽标颜色&#125;.svg?&#123;参数名1&#125;=&#123;参数值1&#125;&amp;&#123;参数名2&#125;=&#123;参数值2&#125;</code></p><p><img src="/aixiu/6bd3a88c/a85ed8265963637e4fceeeffcf04669a.png" alt="image-20220204171805533"></p><p>我们填写徽章的标签、消息以及想要的颜色，然后点击Make Badge就会生成我们的徽章，由左和右两半部分组成，左半部分就是我们填写的标签内容，右半部分就是我们填写的消息内容，右半部分的颜色就是我们填写的颜色。</p><p>最后生成的徽章有对应的url，格式为<span class="exturl" data-url="aHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS8=">https://img.shields.io/badge/<i class="fa fa-external-link-alt"></i></span>&lt;标签&gt;-&lt;消息&gt;-&lt;颜色&gt;，我们也可以直接修改url参数来得到想要的标签。</p><p>此外，我们还可以通过在url后面使用?携带一些参数来自己定制，参数间用&amp;隔开：</p><p>logo：指定左半部分的logo，例如 <span class="exturl" data-url="aHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS96c3ItZ2l0ZWUtcmVkP2xvZ289R2l0ZWU=">https://img.shields.io/badge/zsr-gitee-red?logo=Gitee<i class="fa fa-external-link-alt"></i></span></p><p>更多logo参数可以查看：<span class="exturl" data-url="aHR0cHM6Ly9zaW1wbGVpY29ucy5vcmcv">https://simpleicons.org/<i class="fa fa-external-link-alt"></i></span></p><p>logoWidth：指定左半部分logo的宽度，例如 <span class="exturl" data-url="aHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS96c3ItZ2l0ZWUtcmVkP2xvZ289R2l0ZWUmbG9nb1dpZHRoPTQw">https://img.shields.io/badge/zsr-gitee-red?logo=Gitee&amp;logoWidth=40<i class="fa fa-external-link-alt"></i></span></p><p>label：用于覆盖左半部分的内容，例如 <span class="exturl" data-url="aHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS96c3ItZ2l0ZWUtcmVkP2xvZ289R2l0ZWUmbGFiZWw9aGVsbG8=">https://img.shields.io/badge/zsr-gitee-red?logo=Gitee&amp;label=hello<i class="fa fa-external-link-alt"></i></span></p><p>labelColor：用于设置左半部分的颜色，支持十六进制，rgb，rgba，hsl，hsla和css命名颜色。例如 <span class="exturl" data-url="aHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS96c3ItZ2l0ZWUtcmVkP2xhYmVsQ29sb3I9YWJjZGVm">https://img.shields.io/badge/zsr-gitee-red?labelColor=abcdef<i class="fa fa-external-link-alt"></i></span></p><p>color：用户设置右半部分的颜色，支持十六进制，rgb，rgba，hsl，hsla和css命名颜色。例如 <span class="exturl" data-url="aHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS96c3ItZ2l0ZWUtcmVkP2NvbG9yPWZlZGNiYQ==">https://img.shields.io/badge/zsr-gitee-red?color=fedcba<i class="fa fa-external-link-alt"></i></span></p><p>link&#x3D;<span class="exturl" data-url="aHR0cDovL2xlZnQmbGluaz1odHRwLy9yaWdodCVFRiVCQyU5QSVFNiU4QyU4NyVFNSVBRSU5QSVFNSU4RCU5NSVFNSU4NyVCQiVFNSVCRSVCRCVFNyVBQiVBMCVFNSVCNyVBNiVFNCVCRSVBNy8lRTUlOEYlQjMlRTQlQkUlQTclRTglQjclQjMlRTglQkQlQUMlRTclOUElODQlRTklOTMlQkUlRTYlOEUlQTUlRUYlQkMlOEMlRTQlQkUlOEIlRTUlQTYlODI=">http://left&amp;link=http://right：指定单击徽章左侧/右侧跳转的链接，例如<i class="fa fa-external-link-alt"></i></span> <span class="exturl" data-url="aHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9iYWlkdS10ZW5jZW50LWJsdWU/bGluaz1odHRwOi8vd3d3LmJhaWR1LmNvbSZsaW5rPWh0dHA6Ly93d3cudGVuY2VudC5jb20=">https://img.shields.io/badge/baidu-tencent-blue?link=http://www.baidu.com&amp;link=http://www.tencent.com<i class="fa fa-external-link-alt"></i></span></p><p>此时我们点击左半部分就会跳转到百度首页，点击右半部分就会跳转到腾讯首页</p><p>那么我们如何将该徽章引入呢？我们可以通过 markdown 或者 html 的形式来引入：</p><figure class="highlight markdown"><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">// markdown</span><br><span class="line">![<span class="string">redis</span>](<span class="link">https://img.shields.io/badge/Redis-5.0+-yellow</span>)</span><br><span class="line"><span class="code">         </span></span><br><span class="line"><span class="code">// html</span></span><br><span class="line"><span class="code">&lt;img src=&quot;https://raster.shields.io/badge/Maven-3.1+-red&quot;&gt;</span></span><br><span class="line"><span class="code"></span></span><br></pre></td></tr></table></figure><p>本文转自-<span class="exturl" data-url="aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ1MTczNDA0L2FydGljbGUvZGV0YWlscy8xMjM3Mjg2ODc=">Baret-H<i class="fa fa-external-link-alt"></i></span><br>相关博客：</p><p><span class="exturl" data-url="aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L211eWFvOTg3L2FydGljbGUvZGV0YWlscy8xMTk2MTA0MDM=">CSND-1<i class="fa fa-external-link-alt"></i></span>,  <span class="exturl" data-url="aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L211eWFvOTg3L2FydGljbGUvZGV0YWlscy8xMTk2MTA0MDM=">CSND-2<i class="fa fa-external-link-alt"></i></span>,  <span class="exturl" data-url="aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L211eWFvOTg3L2FydGljbGUvZGV0YWlscy8xMTk2MTA0MDM=">CSND-3<i class="fa fa-external-link-alt"></i></span>,  <span class="exturl" data-url="aHR0cHM6Ly9zaW1wbGVpY29ucy5vcmcv">图标网站<i class="fa fa-external-link-alt"></i></span></p>]]></content>
    
    
    <summary type="html">&lt;p&gt;平时在逛 Gitee、Github 等各大代码仓库时，往往能看到以下这种徽章式的网页链接，美观好看又方便，那么这个徽章是如何制作出来的呢？本文就带大家制作属于自己的徽章式链接。&lt;/p&gt;</summary>
    
    
    
    <category term="学习笔记" scheme="http://blog.ynxiu.com/categories/notes/"/>
    
    
    <category term="shields" scheme="http://blog.ynxiu.com/tags/shields/"/>
    
    <category term="徽章" scheme="http://blog.ynxiu.com/tags/%E5%BE%BD%E7%AB%A0/"/>
    
  </entry>
  
  <entry>
    <title>红米AX6S-解锁SSH刷openwrt教程</title>
    <link href="http://blog.ynxiu.com/aixiu/22c58336.html"/>
    <id>http://blog.ynxiu.com/aixiu/22c58336.html</id>
    <published>2023-03-24T17:25:10.000Z</published>
    <updated>2023-03-24T17:25:10.000Z</updated>
    
    <content type="html"><![CDATA[<p>这大半年路由器涨价降配，大家应该都有所了解。红米 AX6S 就是之前红米 AX6 的继任者，无线规格基本一致，主要是 CPU 从高通 IPQ8071A 降级到了双核 1.35GHz A53 的 MTK7622B，以及 128M 的闪存和 256M 的内存。不过如今两者全新的价格已经不在一个档次，AX6S 拼多多只要 240 元左右，AX6 已经停产全新的都被炒到了 400 元。本来不打算买红米 AX6S，但最近流出了 AX6S 解锁 SSH 的官方固件，并且能刷 openwrt 了。另外测试下来这颗 MTK7622B CPU 支持 aes 硬解，<strong>科学性能表现十分强悍</strong>，比之前的 MTK7621 不知道高哪里去了。我个人觉得目前挺值得购买的，也就有了这个教程。</p><p><strong>致谢：在此感谢如下帖子和教程，我也是整合并用更简单规整的方式重新表述。</strong></p><ul><li><span class="exturl" data-url="aHR0cHM6Ly93d3cucmlnaHQuY29tLmNuL2ZvcnVtL3RocmVhZC04MTczNTgxLTEtMS5odG1s">【恩山】红米AX6s 有开发版官方固件<i class="fa fa-external-link-alt"></i></span></li><li><span class="exturl" data-url="aHR0cHM6Ly93d3cucmlnaHQuY29tLmNuL2ZvcnVtL3RocmVhZC04MTg3NDA1LTEtMS5odG1s">【恩山】AX6S 闭源无线驱动OP固件&#x2F;源码&#x2F;教程<i class="fa fa-external-link-alt"></i></span></li><li><span class="exturl" data-url="aHR0cHM6Ly9naXRodWIuY29tL2p1ZXd1eS9TaGVsbENsYXNo">【GitHub】ShellClash 项目<i class="fa fa-external-link-alt"></i></span></li></ul><span id="more"></span><h2 id="准备工作"><a href="#准备工作" class="headerlink" title="准备工作"></a>准备工作</h2><ul><li>红米 AX6S 路由器</li><li>一台 Windows 或 Mac 的电脑</li><li>[提前下载好需要的固件](<span class="exturl" data-url="aHR0cHM6Ly9zaGFyZS5xdXN0Lm1lLyVFOCVCNyVBRiVFNyU5NCVCMSVFNSU5OSVBOC8lRTclQkElQTIlRTclQjElQjM=">https://share.qust.me/路由器/红米<i class="fa fa-external-link-alt"></i></span> AX6S)</li><li><span class="exturl" data-url="aHR0cHM6Ly90ZXJtaXVzLmNvbS93aW5kb3dz">下载安装好 Termius<i class="fa fa-external-link-alt"></i></span>（老手可以不安装，直接用系统自带的 terminal）</li></ul><p><strong>如果你只需要 ShellClash 的功能，只用看前半部分就 OK ；需要刷 openwrt 可以跳过 ShellClash 的部分。不用担心变砖，刷坏了用<span class="exturl" data-url="aHR0cHM6Ly93d3cxLm1pd2lmaS5jb20vbWl3aWZpX2Rvd25sb2FkLmh0bWw=">官方修复工具即可刷回原厂<i class="fa fa-external-link-alt"></i></span>。</strong></p><h2 id="解锁-SSH"><a href="#解锁-SSH" class="headerlink" title="解锁 SSH"></a>解锁 SSH</h2><p><strong>1. 升级开发版固件</strong></p><p><img src="/aixiu/22c58336/202203092209940.jpg" alt="img"></p><p>登录红米 AX6S 的后台（一般是：192.168.31.1），点击右上角选择-系统升级-选择手动升级，勾选下载好的「内测版」固件，点击开始升级。</p><p>⌛️等待系统升级完成重启，重新连接上 Wi-Fi。</p><p><strong>2. 在线计算 root 密码</strong></p><p><img src="/aixiu/22c58336/202203092210359.jpg" alt="img"></p><p>浏览器打开 <span class="exturl" data-url="aHR0cHM6Ly93d3cub3h5Z2VuNy5jbi9taXdpZmkvJUVGJUJDJThDJUU4JUJFJTkzJUU1JTg1JUE1JUU4JUI3JUFGJUU3JTk0JUIxJUU1JTk5JUE4JUU1JTkwJThFJUU1JThGJUIwJUU1JThGJUIzJUU0JUI4JThCJUU4JUE3JTkyJUU1JUFFJThDJUU2JTk1JUI0JUU3JTlBJTg0">https://www.oxygen7.cn/miwifi/，输入路由器后台右下角完整的<i class="fa fa-external-link-alt"></i></span> SN 号，点击 GO。<strong>计算出来的结果就是 root 密码，复制保存好。</strong></p><p>在线计算密码的网站（视频里的暂时挂了）：<span class="exturl" data-url="aHR0cHM6Ly9taXdpZmkuZGV2L3NzaA==">https://miwifi.dev/ssh<i class="fa fa-external-link-alt"></i></span> 用这个。</p><p><strong>3. telnet 连接开启 ssh</strong></p><p>打开 Termius，可以选择不登录 Continue Without Account。</p><p><img src="/aixiu/22c58336/8C2AAD6B-524A-420B-BFD0-C41C91B5DD24.png" alt="img"></p><p>点击 New Host 添加</p><p><img src="/aixiu/22c58336/51541936-2C8F-4B4A-9730-4CCEC7BA4900.png" alt="img"></p><p>Address 填写：192.168.31.1</p><p>SSH：取消勾选</p><p>Telnet：勾选</p><p>然后点击向右的箭头，最后选择 Hosts 里的「192.168.31.1」开始 telnet 连接。</p><p><img src="/aixiu/22c58336/265346AF-FDA1-488A-8A34-B2FFF01D0C08.png" alt="img"></p><ul><li>login 用户名：root</li><li>密码通过在线计算得来，复制粘贴回车即可。（输入不显示）</li></ul><p><img src="/aixiu/22c58336/72D3F040-C74B-41C0-B688-DA903A00AD89.png" alt="img"></p><p>复制以下命令，回车即可开启 ssh。</p><figure class="highlight routeros"><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">nvram <span class="built_in">set</span> <span class="attribute">ssh_en</span>=1 &amp; nvram <span class="built_in">set</span> <span class="attribute">uart_en</span>=1 &amp; nvram <span class="built_in">set</span> <span class="attribute">boot_wait</span>=on &amp; nvram <span class="built_in">set</span> <span class="attribute">bootdelay</span>=3 &amp; nvram <span class="built_in">set</span> <span class="attribute">flag_try_sys1_failed</span>=0 &amp; nvram <span class="built_in">set</span> <span class="attribute">flag_try_sys2_failed</span>=1</span><br><span class="line">nvram <span class="built_in">set</span> <span class="attribute">flag_boot_rootfs</span>=0 &amp; nvram <span class="built_in">set</span> <span class="string">&quot;boot_fw1=run boot_rd_img;bootm&quot;</span></span><br><span class="line">nvram <span class="built_in">set</span> <span class="attribute">flag_boot_success</span>=1 &amp; nvram commit &amp; /etc/init.d/dropbear <span class="built_in">enable</span> &amp; /etc/init.d/dropbear start</span><br></pre></td></tr></table></figure><p><strong>4. 尝试 ssh 连接路由器</strong></p><p><img src="/aixiu/22c58336/31FE7942-F350-4A16-B7D0-291FD84D8932.png" alt="img"></p><p>选择 Hosts-点击 New Host 添加</p><p>Address 填写：192.168.31.1</p><p>SSH 的用户名里填写：root</p><p>Password 粘贴之前计算出来的 root 密码</p><p>点击右上角箭头，再点击 Hosts 里的 192.168.31.1 就应该能连接上 SSH 了。（注意选择 ssh 不是 telnet）</p><p><img src="/aixiu/22c58336/9373666F-3D32-474B-97F7-226220669E9F.png" alt="img"></p><p><img src="/aixiu/22c58336/7398B7D3-AE8D-4891-BB51-E637AA9C0B92.png" alt="img"></p><p>选择 ADD AND CONTINUE，就会进入 SSH 连接。</p><h2 id="安装-ShellClash"><a href="#安装-ShellClash" class="headerlink" title="安装 ShellClash"></a>安装 ShellClash</h2><p><strong>安装</strong></p><p>在 SSH 里复制此命令开始安装 ShellClash</p><figure class="highlight gradle"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">export url=<span class="string">&#x27;https://raw.fastgit.org/juewuy/ShellClash/master&#x27;</span> &amp;&amp; sh -c <span class="string">&quot;$(curl -kfsSl $url/install.sh)&quot;</span> &amp;&amp; <span class="keyword">source</span> <span class="regexp">/etc/</span>profile &amp;&gt; <span class="regexp">/dev/</span><span class="keyword">null</span></span><br></pre></td></tr></table></figure><p><img src="/aixiu/22c58336/56A56B4E-9D1F-4AC1-B3E2-0337A5038571.png" alt="img"></p><p>选择 2 测试版（AX6S 暂时只支持测试版）</p><p>然后 1 确认安装</p><p><strong>配置 Clash</strong></p><p>输入 Clash 回车进行配置</p><p><img src="/aixiu/22c58336/494D1DFF-03AE-4C83-8A2F-63BE9F322442.png" alt="img"></p><ul><li>选择 1 主机或旁路由</li><li>选择 1 不代理 UDP</li></ul><p><img src="/aixiu/22c58336/933A6F45-F250-4B82-A87D-6B9DF07903D7.png" alt="img"></p><ul><li>选 1 安装 Dashboard 面板</li><li>选择 2 YACD 面板</li><li>选择 1 的路径</li><li>选择 1 确认开启</li></ul><p><img src="/aixiu/22c58336/12EBAFF0-3B7A-44D7-A651-5276CACA8286.png" alt="img"></p><ul><li>1 开始导入</li><li>1 在线生成</li><li>粘贴你的订阅链接（你的机场✈️后台有提供）</li></ul><p><img src="/aixiu/22c58336/3252BB1C-4A3B-45FC-AB27-530AC3C3DC37.png" alt="img"></p><ul><li>1 开始生成配置文件</li><li>1 立即启动 Clash 服务</li><li>最后选择 0 退出脚本即可</li></ul><p><img src="/aixiu/22c58336/202203092216633.jpg" alt="img"></p><p>现在应该就能正常使用了，在浏览器里打开 <span class="exturl" data-url="aHR0cDovLzE5Mi4xNjguMzEuMTo5OTk5L3VpJUVGJUJDJThDJUU1JUIwJUIxJUU4JTgzJUJEJUU4JUFFJUJGJUU5JTk3JUFFJUU2JThFJUE3JUU1JTg4JUI2JUU1JTkwJThFJUU1JThGJUIwJUUzJTgwJTgyJUU1JThGJUFGJUU0JUJCJUE1JUU1JTlDJUE4JUU2JTg5JThCJUU2JTlDJUJBJUU1JUIwJThGJUU3JUIxJUIzJUU4JUI3JUFGJUU3JTk0JUIxJUU1JTk5JUE4">http://192.168.31.1:9999/ui，就能访问控制后台。可以在手机小米路由器<i class="fa fa-external-link-alt"></i></span> App 上选择关闭更新，以防止自动更新，麻烦。我的建议：不折腾的就不用固化，喜欢折腾就直接刷下面的 openwrt。</p><h2 id="安装-openwrt-系统"><a href="#安装-openwrt-系统" class="headerlink" title="安装 openwrt 系统"></a>安装 openwrt 系统</h2><p><strong>1. 刷入过渡 openwrt 固件</strong></p><p>在 SSH 里复制粘贴下面的命令，便可刷入 openwrt 过渡固件。</p><figure class="highlight awk"><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">cd /tmp</span><br><span class="line">curl -L https:<span class="regexp">//</span>sebs.oss-cn-shanghai.aliyuncs.com/factory.bin -o factory.bin</span><br><span class="line">mtd -r write <span class="regexp">/tmp/</span>factory.bin firmware</span><br></pre></td></tr></table></figure><p><img src="/aixiu/22c58336/202203092211047.jpg" alt="img"></p><p>刷入过渡固件后会自动重启，Wi-Fi 名会变为 openwrt-5G。</p><ul><li>默认后台：192.168.6.1</li><li>用户名：root</li><li>密码：password</li></ul><p><strong>2. 刷写其它第三方固件：</strong></p><p><img src="/aixiu/22c58336/202203092213319.jpg" alt="img"></p><p>在路由器后台选择-System-Backup &#x2F; Flash Firmware</p><p><img src="/aixiu/22c58336/202203092211802.jpg" alt="img"></p><p><strong>不要勾选</strong> Keep settings，然后 Image 选择文件选择 openwrt 固件，然后点击 Flash image。</p><p><img src="/aixiu/22c58336/202203092210656.jpg" alt="img">最后选择 Proceed 即可。</p><p><img src="/aixiu/22c58336/202203092210982.jpg" alt="img"></p><p>你可以用同样的方法刷不同版本的 openwrt 固件（不保留配置升级），这里就不过多的介绍，以后应该会有更多不同编译版本的 openwrt 固件让选择。</p><p><img src="/aixiu/22c58336/IMG_2422.jpeg" alt="img"></p><p>另外 openwrt 里开启 160Mhz 也是有效的，不过 4*4 mimo 和 160Mhz 得二选一，两者不可兼得。</p><h2 id="性能测试"><a href="#性能测试" class="headerlink" title="性能测试"></a>性能测试</h2><p><img src="/aixiu/22c58336/202203092212243.jpg" alt="img"></p><p>MTK 7622B 双核 a53，加上有 aes 硬解，能跑这个速度我确实没想到，也太快了吧！这是 MTK7621 的好几十倍了。200多的价格，不错的无线性能，以及丰富的固件，外加上代理性能也不拉胯，解锁刷机还特简单，这不冲一波吗。</p><p>本文转自-<span class="exturl" data-url="aHR0cHM6Ly9xdXN0Lm1lL3Bvc3QvYXg2cy8=">酱紫表<i class="fa fa-external-link-alt"></i></span></p>]]></content>
    
    
    <summary type="html">&lt;p&gt;这大半年路由器涨价降配，大家应该都有所了解。红米 AX6S 就是之前红米 AX6 的继任者，无线规格基本一致，主要是 CPU 从高通 IPQ8071A 降级到了双核 1.35GHz A53 的 MTK7622B，以及 128M 的闪存和 256M 的内存。不过如今两者全新的价格已经不在一个档次，AX6S 拼多多只要 240 元左右，AX6 已经停产全新的都被炒到了 400 元。本来不打算买红米 AX6S，但最近流出了 AX6S 解锁 SSH 的官方固件，并且能刷 openwrt 了。另外测试下来这颗 MTK7622B CPU 支持 aes 硬解，&lt;strong&gt;科学性能表现十分强悍&lt;/strong&gt;，比之前的 MTK7621 不知道高哪里去了。我个人觉得目前挺值得购买的，也就有了这个教程。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;致谢：在此感谢如下帖子和教程，我也是整合并用更简单规整的方式重新表述。&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span class=&quot;exturl&quot; data-url=&quot;aHR0cHM6Ly93d3cucmlnaHQuY29tLmNuL2ZvcnVtL3RocmVhZC04MTczNTgxLTEtMS5odG1s&quot;&gt;【恩山】红米AX6s 有开发版官方固件&lt;i class=&quot;fa fa-external-link-alt&quot;&gt;&lt;/i&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;exturl&quot; data-url=&quot;aHR0cHM6Ly93d3cucmlnaHQuY29tLmNuL2ZvcnVtL3RocmVhZC04MTg3NDA1LTEtMS5odG1s&quot;&gt;【恩山】AX6S 闭源无线驱动OP固件&amp;#x2F;源码&amp;#x2F;教程&lt;i class=&quot;fa fa-external-link-alt&quot;&gt;&lt;/i&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;exturl&quot; data-url=&quot;aHR0cHM6Ly9naXRodWIuY29tL2p1ZXd1eS9TaGVsbENsYXNo&quot;&gt;【GitHub】ShellClash 项目&lt;i class=&quot;fa fa-external-link-alt&quot;&gt;&lt;/i&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;</summary>
    
    
    
    <category term="技术探讨" scheme="http://blog.ynxiu.com/categories/technology/"/>
    
    
    <category term="路由器" scheme="http://blog.ynxiu.com/tags/%E8%B7%AF%E7%94%B1%E5%99%A8/"/>
    
    <category term="红米" scheme="http://blog.ynxiu.com/tags/%E7%BA%A2%E7%B1%B3/"/>
    
    <category term="openwrt" scheme="http://blog.ynxiu.com/tags/openwrt/"/>
    
    <category term="ShellClash" scheme="http://blog.ynxiu.com/tags/ShellClash/"/>
    
  </entry>
  
  <entry>
    <title>全自动一键网络重装脚本（DD脚本）</title>
    <link href="http://blog.ynxiu.com/aixiu/86927d5.html"/>
    <id>http://blog.ynxiu.com/aixiu/86927d5.html</id>
    <published>2023-03-23T10:11:53.000Z</published>
    <updated>2023-03-23T10:11:53.000Z</updated>
    
    <content type="html"><![CDATA[<p>今天给大家再介绍一个41合1脚本，这个脚本也是基于萌咖脚本优化、开发的。但是DD过程基本上不需要自己编写，完全傻瓜式,可能更适合“小白”网友。</p> <span id="more"></span><h3 id="更新说明："><a href="#更新说明：" class="headerlink" title="更新说明："></a>更新说明：</h3><p>20220724：更新及增加大量系统镜像，41合1脚本，请注意看说明。<br>20220703：新增自定义SSH端口（9-16）</p><p>20220613：新版自定义密码支持特殊字符.!$@#&amp;%</p><p>20220428：修复MoeClub新版DD过程中卡住的BUG，修复Centos7下出现 Error! Not Found grub. 的错误提示，新增支持 xz 压缩格式的 DD 系统镜像包。</p><p>20220406：CN系统镜像已失效，国内主机使用一键脚本1-25选项需要较长时间，推荐使用99的自定义系统镜像。</p><p>20211120：更新MoeClub新版,依赖更少,支持原版自定义密码安装,体验版可能有Bug.</p><p>20210909：支持debian11.</p><p>20210511：发现很多人不知道怎么DD甲骨文,使用支持uefi的镜像包即可.脚本已添加3个甲骨文专用选项23-25.</p><p>20210509：更新部分windows镜像,修正一处小问题.</p><p>20210127：更换部分windows镜像.</p><p>20210109：更新支持Ubuntu20.04安装,更新几个windows镜像.</p><p>20200708：更新自动为CN主机使用国内镜像源.</p><h3 id="安装重装系统的前提组件："><a href="#安装重装系统的前提组件：" class="headerlink" title="安装重装系统的前提组件："></a>安装重装系统的前提组件：</h3><p>Debian&#x2F;Ubuntu:</p><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">apt-get install -y xz-utils openssl gawk file wget screen &amp;&amp; screen -S os</span><br></pre></td></tr></table></figure><p>RedHat&#x2F;CentOS:</p><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">yum install -y xz openssl gawk file glibc-common wget screen &amp;&amp; screen -S os</span><br></pre></td></tr></table></figure><p>如果出现异常，请刷新Mirrors缓存或更换镜像源。</p><p>RedHat&#x2F;CentOS:</p><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">yum makecache &amp;&amp; yum update -y</span><br></pre></td></tr></table></figure><p>Debian&#x2F;Ubuntu:</p><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">apt update -y &amp;&amp; apt dist-upgrade -y</span><br></pre></td></tr></table></figure><h3 id="DD-命令："><a href="#DD-命令：" class="headerlink" title="DD 命令："></a>DD 命令：</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">wget --no-check-certificate -O NewReinstall.sh https://git.io/newbetags &amp;&amp; chmod a+x NewReinstall.sh &amp;&amp; bash NewReinstall.sh</span><br></pre></td></tr></table></figure><p>如为CN主机(部分主机商已不能使用)，可能出现报错或不能下载脚本的问题，可执行以下命令开始安装.</p><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">wget --no-check-certificate -O NewReinstall.sh https://cdn.jsdelivr.net/gh/fcurrk/reinstall@master/NewReinstall.sh &amp;&amp; chmod a+x NewR</span><br></pre></td></tr></table></figure><p><img src="/aixiu/86927d5/c4ca4238a0b9238-17.png" alt="img"><br>输入Y确认DD后主机自动获取IP，N则自行设置IP 输入N后会自动检测出主机现用IP，如果正确可以按Y确认使用，如不正确则按N自行按正确的输入。</p><p><img src="/aixiu/86927d5/c81e728d9d4c2f6-17.png" alt="img"></p><p>输入99则使用自定义镜像。 以上系统密码不为默认密码的均为网络收集，如有疑虑使用自己的自定义镜像。</p><h3 id="41合1系统密码："><a href="#41合1系统密码：" class="headerlink" title="41合1系统密码："></a>41合1系统密码：</h3><p>1、CentOS 7.7 (已关闭防火墙及SELinux，默认密码Pwd@CentOS)<br>2、CentOS 7 (默认密码cxthhhhh.com)<br>3、CentOS 7 (支持ARM64、UEFI，默认密码cxthhhhh.com)<br>4、CentOS 8 (默认密码cxthhhhh.com)<br>5、Rocky 8 (默认密码cxthhhhh.com)<br>6、Rocky 8 (支持UEFI，默认密码cxthhhhh.com)<br>7、Rocky 8 (支持ARM64、UEFI，默认密码cxthhhhh.com)<br>8、CentOS 9 (默认密码cxthhhhh.com)<br>9、CentOS 6 (官方源原版，默认密码Minijer.com)<br>10、Debian 11 (官方源原版，默认密码Minijer.com)<br>11、Debian 10 (官方源原版，默认密码Minijer.com)<br>12、Debian 9 (官方源原版，默认密码Minijer.com)<br>13、Debian 8 (官方源原版，默认密码Minijer.com)<br>14、Ubuntu 20.04 (官方源原版，默认密码Minijer.com)<br>15、Ubuntu 18.04 (官方源原版，默认密码Minijer.com)<br>16、Ubuntu 16.04 (官方源原版，默认密码Minijer.com)<br>17、Windows Server 2022 (默认密码cxthhhhh.com)<br>18、Windows Server 2022 (支持UEFI，默认密码cxthhhhh.com)<br>19、Windows Server 2019 (默认密码cxthhhhh.com)<br>20、Windows Server 2016 (默认密码cxthhhhh.com)<br>21、Windows Server 2012 (默认密码cxthhhhh.com)<br>22、Windows Server 2008 (默认密码cxthhhhh.com)<br>23、Windows Server 2003 (默认密码cxthhhhh.com)<br>24、Windows 10 LTSC (默认密码Teddysun.com)<br>25、Windows 10 LTSC (支持UEFI，默认密码Teddysun.com)<br>26、Windows 7 x86 Lite (默认密码nat.ee)<br>27、Windows 7 x86 Lite (阿里云专用，默认密码nat.ee)<br>28、Windows 7 x64 Lite (默认密码nat.ee)<br>29、Windows 7 x64 Lite (支持UEFI，默认密码nat.ee)<br>30、Windows 10 LTSC Lite (默认密码nat.ee)<br>31、Windows 10 LTSC Lite (阿里云专用，默认密码nat.ee)<br>32、Windows 10 LTSC Lite (支持UEFI，默认密码nat.ee)<br>33、Windows Server 2003 Lite (C盘默认10G，默认密码WinSrv2003x86-Chinese)<br>34、Windows Server 2008 Lite (默认密码nat.ee)<br>35、Windows Server 2008 Lite (支持UEFI，默认密码nat.ee)<br>36、Windows Server 2012 Lite (默认密码nat.ee)<br>37、Windows Server 2012 Lite (支持UEFI，默认密码nat.ee)<br>38、Windows Server 2016 Lite (默认密码nat.ee)<br>39、Windows Server 2016 Lite (支持UEFI，默认密码nat.ee)<br>40、Windows Server 2022 Lite (默认密码nat.ee)<br>41、Windows Server 2022 Lite (支持UEFI，默认密码nat.ee)<br>99、自定义镜像</p><hr><h3 id="注意事项："><a href="#注意事项：" class="headerlink" title="注意事项："></a>注意事项：</h3><p>1、系统名称后带Lite的均为精简版，没有的是完整版</p><p>2、[X64-Legacy-cxthhhhh]代表系统为AMD64位，支持传统BIOS启动，cxthhhhh定制的系统镜像</p><p>3、ARM64代表系统支持ARM64位</p><p>4、UEFI代表系统支持最新的UEFI启动，如甲骨文全部都是这种</p><p>5、aliyun代表阿里云专用系统镜像</p><p>6、cxthhhhh、teddysun、nat.ee均为三位制作系统镜像的大佬代称</p><p>7、系统密码会在选择相应序号后提示，请注意记录</p><p>8、经测试在谷歌云原版系统基础上DD会出现自动获取的子网掩码为255.255.255.255,如出现这种情况需要手工输入改正为正确的如255.255.255.0,否则会安装完成主机可能会离线</p><p>9、阿里云因使用了特殊的驱动，DD安装Windows系统选择阿里云专用版</p><p>10、Oracle Cloud（甲骨文云）可选择支持UEFI的镜像，注意基础系统最好选择Ubuntu，如原系统是CentOS可能无法成功，注意如是ARM机器注意选择同时支持ARM64和UEFI的镜像</p><p>11、9-16项安装原版系统，可自定义密码，密码要求8-16位，以英文字母或数字开头，可以是大小写英文字母、数字及7个特殊字符.!$@#&amp;%的任意组合</p><p>本文引用自：<span class="exturl" data-url="aHR0cHM6Ly9jbmJveS5vcmcvMTMzMQ==">四海部落<i class="fa fa-external-link-alt"></i></span></p>]]></content>
    
    
    <summary type="html">&lt;p&gt;今天给大家再介绍一个41合1脚本，这个脚本也是基于萌咖脚本优化、开发的。但是DD过程基本上不需要自己编写，完全傻瓜式,可能更适合“小白”网友。&lt;/p&gt;</summary>
    
    
    
    <category term="技术探讨" scheme="http://blog.ynxiu.com/categories/technology/"/>
    
    
    <category term="Oracle" scheme="http://blog.ynxiu.com/tags/Oracle/"/>
    
    <category term="DD" scheme="http://blog.ynxiu.com/tags/DD/"/>
    
  </entry>
  
  <entry>
    <title>Oracle控制台更改密码、邮箱、租户名等教程</title>
    <link href="http://blog.ynxiu.com/aixiu/759b51dc.html"/>
    <id>http://blog.ynxiu.com/aixiu/759b51dc.html</id>
    <published>2023-03-23T10:08:16.000Z</published>
    <updated>2023-03-23T10:08:16.000Z</updated>
    
    <content type="html"><![CDATA[<p>2022年1月开始至2月期间甲骨文陆续对各区域的服务控制台进行了升级更新。最明显的改动就是：</p><ul><li>登录界面变化，出现二次跳转至新登录界面，并且引入了身份域（身份域默认为：Default）;</li><li>用户控制台出现变化，将原来单独的用户控制台融入到服务控制台中；</li><li>其他大量的操作细化。</li></ul><p>新版看起来更加简单明了。当我们进入服务控制台后，点击右上角人头像标识，甲骨文账户的所有管理操作都可以在这里完成：</p> <span id="more"></span><p><img src="/aixiu/759b51dc/c4ca4238a0b9238-5.jpg" alt="img"></p><p>下面本文就详细讲解一下如何在新版中进行更改密码、变更邮箱、添加用户、变更租户名等操作：</p><h2 id="一、更改密码"><a href="#一、更改密码" class="headerlink" title="一、更改密码"></a><strong>一、更改密码</strong></h2><p>点击进入【我的信息概要】，选择【更改密码】</p><p><img src="/aixiu/759b51dc/c81e728d9d4c2f6-4.jpg" alt="img"></p><p>输入旧密码，然后再输入新密码，点击【保存】</p><p><img src="/aixiu/759b51dc/eccbc87e4b5ce2f-4.jpg" alt="img"></p><p>再次登录时，密码就变更为你设置的新密码了。</p><h2 id="二、变更邮箱"><a href="#二、变更邮箱" class="headerlink" title="二、变更邮箱"></a><strong>二、变更邮箱</strong></h2><p>邮箱主要分两种类型：安全邮箱和通知邮箱：（*<em>新版不再有登录邮箱这一说</em>）</p><ul><li>安全邮箱：忘记密码或是无法访问账户时，恢复账户使用权限的邮箱。</li><li>通知邮箱：接收甲骨文的各类通知信息的邮箱。</li></ul><h3 id="1、变更安全邮箱"><a href="#1、变更安全邮箱" class="headerlink" title="1、变更安全邮箱"></a>1、变更安全邮箱</h3><p>点击进入【我的信息概要】</p><p><img src="/aixiu/759b51dc/a87ff679a2f3e71-3.jpg" alt="img"></p><p>在这里你会发现有一个【用户名】和【电子邮箱】，在初始注册的时候，这两个是相同的，都是邮箱名称。但是也可以是不同的。这一点我们在后面会详细讲解。</p><p>我们继续操作，点击【安全】选项进入到如下页面后，选择【恢复电子邮件】右下角的三个点，然后选择【编辑】：</p><p><img src="/aixiu/759b51dc/e4da3b7fbbce234-2.jpg" alt="img"></p><p>首先输入登录密码进行验证，完成后输入新的恢复电子邮件，并选择【更改恢复电子邮件】：</p><p><img src="/aixiu/759b51dc/1679091c5a880fa-1.jpg" alt="img"><img src="/aixiu/759b51dc/8f14e45fceea167-1.jpg" alt="img"></p><p>这时候你新邮箱将会收到一封带链接的邮件，点击后输入新邮箱跟密码，即可完成更改。</p><p><img src="/aixiu/759b51dc/c9f0f895fb98ab9.jpg" alt="img"></p><p><strong>2、变更通知邮箱</strong></p><p>还是在【我的信息概要】界面里，选择【更多操作】，在弹出的下拉框内选择【编辑电子邮件】</p><p><img src="/aixiu/759b51dc/45c48cce2e2d7fb.jpg" alt="img"></p><p>在新弹出的页面中，选择【更改】，然后输入密码验证完成后，输入新的邮箱，然后点击【更改主电子邮箱】。（如果这里的邮箱更前面通知邮箱是一致的，则立即生效。如果是不一样的，则会出现更上面一样的邮件验证，完成验证即可。）</p><p><img src="/aixiu/759b51dc/d3d9446802a4425.jpg" alt="img"><img src="/aixiu/759b51dc/6512bd43d9caa6e.jpg" alt="img"></p><p>回到【我的信息概要】，你会发现用户名仍然是原来的邮箱，但是电子邮件已经变为新的了。</p><p><img src="/aixiu/759b51dc/c20ad4d76fe9775.jpg" alt="img"></p><p>因为甲骨文注册时默认使用当时的主电子邮件作为登录方式，所以变更完以上电子邮件后，登录我们仍要输入原电子邮件名称才能登陆。但是这里原来邮箱只是作为登录时候的用户名形式，不再有任何邮箱实质意义。这一点说实话，有点“不完美”。不知道甲骨文后面是否还会调整。</p><p>对于一些强强迫症用户，总希望在登录输入用户名时，输入的是自己的邮箱或是喜欢的其他形式。那么我们可以通过添加用户来解决。</p><h2 id="三、添加用户"><a href="#三、添加用户" class="headerlink" title="三、添加用户"></a>三、添加用户</h2><p>主界面里选择【身份域】，进入身份域界面，然后在左侧选择【用户】</p><p><img src="/aixiu/759b51dc/c51ce410c124a10.jpg" alt="img"><img src="/aixiu/759b51dc/aab3238922bcc25.jpg" alt="img"></p><p>选择【创建用户】，填写相关信息，完成后点击【创建】。这里有3点需要注意：</p><p><img src="/aixiu/759b51dc/9bf31c7ff062936.jpg" alt="img"></p><ol><li>将电子邮件地址作为用户名：如果勾选了此项，则后面登录时输入用户名则为改电子邮件名称；如果不勾选，登录时的用户名就为此处你输入的【用户名】。</li><li>分配Cloud账号管理角色：这里默认勾选。不勾选的话，不会影响你创建服务。</li><li>组：建议全部勾选。</li></ol><p>创建完成后，你创建用户的电子邮箱会收到一封邮件。点击链接，输入并确认密码后，将跳转至登录界面</p><p><img src="/aixiu/759b51dc/c74d97b01eae257.jpg" alt="img"><img src="/aixiu/759b51dc/70efdf2ec9b0860.jpg" alt="img"></p><p>登录界面用户名就是你创建用户的电子邮件，或是当时输入的用户名，输入刚才创建的密码，即可成功登录。</p><p><img src="/aixiu/759b51dc/6f4922f45568161.jpg" alt="img"></p><h2 id="四、变更租户名"><a href="#四、变更租户名" class="headerlink" title="四、变更租户名"></a>四、变更租户名</h2><p>原则上不建议对此进行变更，变更可能会带来风控。是否因此封号，谁也无法保证。但是对于强迫症用户来说，这里还是讲一下：</p><p>在主界面选择【租户：XXXXX】</p><p><img src="/aixiu/759b51dc/1f0e3dad9990834.jpg" alt="img"></p><p>进入到【租户详细信息】界面，选择【重命名租户】，然后输入新的租户名即可。</p><p><img src="/aixiu/759b51dc/98f13708210194c.jpg" alt="img"><img src="/aixiu/759b51dc/3c59dc048e88502.jpg" alt="img"></p><p>这里有一点要注意，当你更改完租户名后可能不是即时生效。刷新租户详细信息界面，如果生效了，该处就会显示新的租户名。此时，在下次登录时，你输入新的租户名即可。有些人更改完马上退出重新登陆，输入新租户名会报错，是因为租户命名还未生效导致的。</p><p>好了，本教程就先写到这。还是本文开头那句话，甲骨文账户的所有管理操作都是在主界面人头像下的菜单中进行的。对于一些其他需求操作，自己在这里去找。</p><p>本文引用自：<span class="exturl" data-url="aHR0cHM6Ly9jbmJveS5vcmcvMTMwNQ==">四海部落<i class="fa fa-external-link-alt"></i></span></p>]]></content>
    
    
    <summary type="html">&lt;p&gt;2022年1月开始至2月期间甲骨文陆续对各区域的服务控制台进行了升级更新。最明显的改动就是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;登录界面变化，出现二次跳转至新登录界面，并且引入了身份域（身份域默认为：Default）;&lt;/li&gt;
&lt;li&gt;用户控制台出现变化，将原来单独的用户控制台融入到服务控制台中；&lt;/li&gt;
&lt;li&gt;其他大量的操作细化。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;新版看起来更加简单明了。当我们进入服务控制台后，点击右上角人头像标识，甲骨文账户的所有管理操作都可以在这里完成：&lt;/p&gt;</summary>
    
    
    
    <category term="技术探讨" scheme="http://blog.ynxiu.com/categories/technology/"/>
    
    
    <category term="Oracle" scheme="http://blog.ynxiu.com/tags/Oracle/"/>
    
  </entry>
  
  <entry>
    <title>VPS/服务器常用脚本合集</title>
    <link href="http://blog.ynxiu.com/aixiu/cc0ad38f.html"/>
    <id>http://blog.ynxiu.com/aixiu/cc0ad38f.html</id>
    <published>2023-03-23T10:01:29.000Z</published>
    <updated>2023-03-23T10:01:29.000Z</updated>
    
    <content type="html"><![CDATA[<p>本帖所有脚本均来自互联网，本站仅对这些脚本进行收集，以方便自己及各位基友使用。本站不对其可用性负责，也不对其安全性等任何方面负责。</p> <span id="more"></span><h2 id="目录"><a href="#目录" class="headerlink" title="目录"></a>目录</h2><ul><li>查看CPU信息</li><li>查看当前内核信息</li><li>关键字查找进程</li><li>内核更改 [开启BBR、更换BBRplus等]</li><li>Linux修改主机名</li><li>一键开启&#x2F;关闭Swap</li><li>缝合怪测评</li><li>IP质量测试</li><li>Bench – 系统信息+I&#x2F;O+测速</li><li>SuperBench – 系统信息+I&#x2F;O+测速</li><li>HyperSpeed 一键测速</li><li>Besttrace 直接显示回程线路</li><li>Backtrace 三网回程路由测试</li><li>BestTrace 回程测试</li><li>回程测试 [Nanqinlang大佬作品]</li><li>UnixBench.sh [秋水逸冰大佬作品]</li><li>LemonBench.sh</li><li>Yabs.sh [Masonr大佬作品]</li><li>流媒体解锁测试 [Lmc999大佬作品]</li><li>流媒体解锁测试 [LovelyHaochi大佬作品]</li><li>推荐杜甫使用-本脚本支持查看I&#x2F;O bench以及system info</li><li>测试25端口是否开放</li></ul><h2 id="查看CPU信息"><a href="#查看CPU信息" class="headerlink" title="查看CPU信息"></a>查看CPU信息</h2><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">cat /proc/cpuinfo</span><br></pre></td></tr></table></figure><p><img src="/aixiu/cc0ad38f/eb0b187edcf0b30.jpg" alt="img"></p><h2 id="查看当前内核信息"><a href="#查看当前内核信息" class="headerlink" title="查看当前内核信息"></a>查看当前内核信息</h2><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">uname -a</span><br></pre></td></tr></table></figure><p><img src="/aixiu/cc0ad38f/c81e728d9d4c2f6-6.jpg" alt="img"></p><h2 id="关键字查找进程"><a href="#关键字查找进程" class="headerlink" title="关键字查找进程"></a>关键字查找进程</h2><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">ps -ef | grep &lt;进程关键字&gt;</span><br></pre></td></tr></table></figure><h2 id="内核更改-开启BBR、更换BBRplus等"><a href="#内核更改-开启BBR、更换BBRplus等" class="headerlink" title="内核更改 [开启BBR、更换BBRplus等]"></a>内核更改 [开启BBR、更换BBRplus等]</h2><figure class="highlight shell"><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">Centos</span><br><span class="line">yum install ca-certificates wget -y &amp;&amp; update-ca-trust force-enable </span><br><span class="line">Debian/Ubuntu： </span><br><span class="line">apt-get install ca-certificates wget -y &amp;&amp; update-ca-certificates </span><br><span class="line"></span><br><span class="line">不卸载内核版本： </span><br><span class="line">wget -O tcpx.sh &quot;https://github.com/ylx2016/Linux-NetSpeed/raw/master/tcpx.sh&quot; &amp;&amp; chmod +x tcpx.sh &amp;&amp; ./tcpx.sh </span><br><span class="line"></span><br><span class="line">卸载内核版本： </span><br><span class="line">wget -O tcp.sh &quot;https://github.com/ylx2016/Linux-NetSpeed/raw/master/tcp.sh&quot; &amp;&amp; chmod +x tcp.sh &amp;&amp; ./tcp.sh</span><br></pre></td></tr></table></figure><p><img src="/aixiu/cc0ad38f/0211e8160d7f43c.jpg" alt="img"></p><h2 id="Linux修改主机名"><a href="#Linux修改主机名" class="headerlink" title="Linux修改主机名"></a>Linux修改主机名</h2><p>首先执行</p><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">hostnamectl set-hostname &lt;newhostname&gt;</span><br></pre></td></tr></table></figure><p>然后执行下面的命令</p><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">vi /etc/hosts</span><br></pre></td></tr></table></figure><p>在第二行增加一个 <code>127.0.0.1 &lt;newhostname&gt;</code>，同时将文件中的原主机名修改为刚设置的新主机名</p><p><img src="/aixiu/cc0ad38f/a87ff679a2f3e71-5.jpg" alt="img"></p><h2 id="一键开启-关闭Swap"><a href="#一键开启-关闭Swap" class="headerlink" title="一键开启&#x2F;关闭Swap"></a>一键开启&#x2F;关闭Swap</h2><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">wget https://www.moerats.com/usr/shell/swap.sh &amp;&amp; bash swap.sh</span><br></pre></td></tr></table></figure><h2 id="缝合怪测评"><a href="#缝合怪测评" class="headerlink" title="缝合怪测评"></a>缝合怪测评</h2><ul><li>自由组合测试方向和单项测试以及合集收录第三方脚本–原创</li><li>基础系统信息–感谢teddysun和superbench和yabs开源</li><li>CPU测试–感谢lemonbench开源</li><li>内存测试–感谢lemonbench开源</li><li>磁盘IO读写测试–感谢lemonbench开源</li><li>硬盘IO读写测试–感谢yabs开源</li><li>御三家流媒体解锁–感谢sjlleo的二进制文件</li><li>常用流媒体解锁–感谢RegionRestrictionCheck开源</li><li>Tiktok解锁–感谢lmc999的开源</li><li>三网回程以及路由延迟–感谢zhanghanyun&#x2F;backtrace开源</li><li>回程路由以及带宽类型检测(商宽&#x2F;家宽&#x2F;数据中心)–由fscarmen的PR以及本人的技术思路提供</li><li>端口检测(检测是否被墙)–由fscarmen的PR以及作者的技术思路提供 – 待修复</li><li>IP质量检测(检测IP白不白)(含IPV4和IPV6)–独创，感谢互联网提供的查询资源</li><li>speedtest测速–由teddysun和superspeed的开源以及整理</li><li>全国网络延迟测试–感谢IPASN开源</li></ul><figure class="highlight shell"><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">bash &lt;(wget -qO- --no-check-certificate https://gitlab.com/spiritysdx/za/-/raw/main/ecs.sh) </span><br><span class="line">或 </span><br><span class="line">bash &lt;(wget -qO- --no-check-certificate https://github.com/spiritLHLS/ecs/raw/main/ecs.sh)</span><br></pre></td></tr></table></figure><h2 id="IP质量测试"><a href="#IP质量测试" class="headerlink" title="IP质量测试"></a>IP质量测试</h2><figure class="highlight shell"><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">bash &lt;(wget -qO- --no-check-certificate https://gitlab.com/spiritysdx/za/-/raw/main/qzcheck.sh) </span><br><span class="line">或 </span><br><span class="line">bash &lt;(wget -qO- --no-check-certificate https://github.com/spiritLHLS/ecs/raw/main/qzcheck.sh)</span><br></pre></td></tr></table></figure><p><img src="/aixiu/cc0ad38f/3805675944f69b5.jpg" alt="img"></p><h2 id="Bench-–-系统信息-I-O-测速"><a href="#Bench-–-系统信息-I-O-测速" class="headerlink" title="Bench – 系统信息+I&#x2F;O+测速"></a>Bench – 系统信息+I&#x2F;O+测速</h2><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">wget -qO- bench.sh | bash</span><br></pre></td></tr></table></figure><p><img src="/aixiu/cc0ad38f/66fc2fcd68a9228.jpg" alt="img"></p><h2 id="SuperBench-–-系统信息-I-O-测速"><a href="#SuperBench-–-系统信息-I-O-测速" class="headerlink" title="SuperBench – 系统信息+I&#x2F;O+测速"></a>SuperBench – 系统信息+I&#x2F;O+测速</h2><figure class="highlight shell"><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">wget -qO- git.io/superbench.sh | bash </span><br><span class="line">或 </span><br><span class="line">wget -qO- --no-check-certificate https://raw.githubusercontent.com/oooldking/script/master/superbench.sh | bash</span><br></pre></td></tr></table></figure><p><img src="/aixiu/cc0ad38f/adc6dec04348608.jpg" alt="img"></p><h2 id="HyperSpeed-一键测速"><a href="#HyperSpeed-一键测速" class="headerlink" title="HyperSpeed 一键测速"></a>HyperSpeed 一键测速</h2><ul><li>支持单线程、8线程测速，显示延迟与抖动</li></ul><figure class="highlight shell"><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">bash &lt;(curl -Lso- https://bench.im/hyperspeed) </span><br><span class="line">或 </span><br><span class="line">bash &lt;(wget -qO- https://bench.im/hyperspeed)</span><br></pre></td></tr></table></figure><p><img src="/aixiu/cc0ad38f/b2f4ab52cb094b3.jpg" alt="img"></p><h2 id="Besttrace-直接显示回程线路"><a href="#Besttrace-直接显示回程线路" class="headerlink" title="Besttrace 直接显示回程线路"></a>Besttrace 直接显示回程线路</h2><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">wget -qO- git.io/besttrace | bash</span><br></pre></td></tr></table></figure><h3 id><a href="#" class="headerlink" title></a><img src="/aixiu/cc0ad38f/45c48cce2e2d7fb-1-e1675141478275.jpg" alt="img"></h3><p><strong>（</strong> * *<strong>部分截图* ）</strong></p><h2 id="Backtrace-三网回程路由测试"><a href="#Backtrace-三网回程路由测试" class="headerlink" title="Backtrace 三网回程路由测试"></a>Backtrace 三网回程路由测试</h2><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">curl https://raw.githubusercontent.com/zhanghanyun/backtrace/main/install.sh -sSf | sh</span><br></pre></td></tr></table></figure><h3 id="-1"><a href="#-1" class="headerlink" title></a><img src="/aixiu/cc0ad38f/3732dc439f152a5.jpg" alt="img"></h3><h2 id="BestTrace-回程测试"><a href="#BestTrace-回程测试" class="headerlink" title="BestTrace 回程测试"></a>BestTrace 回程测试</h2><ul><li>ipip.net 提供的手动输入IP测试回程线路工具</li></ul><figure class="highlight shell"><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">mkdir /root/besttrace </span><br><span class="line">cd /root/besttrace </span><br><span class="line">wget https://cdn.ipip.net/17mon/besttrace4linux.zip </span><br><span class="line">unzip besttrace4linux.zip </span><br><span class="line"></span><br><span class="line">解压之后会看到几个二进制文件,根据自己的系统选择对应文件。常用的： </span><br><span class="line"></span><br><span class="line">Linux X64系统： </span><br><span class="line">chmod +x besttrace </span><br><span class="line">./besttrace xxx.xxx.xxx.xxx   # 此处输入需测试IP </span><br><span class="line"></span><br><span class="line">Linux X32位系统： </span><br><span class="line">chmod +x besttrace32 </span><br><span class="line">./besttrace32 xxx.xxx.xxx.xxx   # 此处输入需测试IP </span><br><span class="line"></span><br><span class="line">ARM机型： </span><br><span class="line">chmod +x besttracearm </span><br><span class="line">./besttracearm xxx.xxx.xxx.xxx   # 此处输入需测试IP</span><br></pre></td></tr></table></figure><h2 id="回程测试-Nanqinlang大佬作品"><a href="#回程测试-Nanqinlang大佬作品" class="headerlink" title="回程测试 [Nanqinlang大佬作品]"></a>回程测试 [Nanqinlang大佬作品]</h2><ul><li>支持选择节点测试，四网快速测试，手动输入IP测试三种模式</li></ul><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">wget https://raw.githubusercontent.com/nanqinlang-script/testrace/master/testrace.sh &amp;&amp; bash testrace.sh</span><br></pre></td></tr></table></figure><h3 id="-2"><a href="#-2" class="headerlink" title></a><img src="/aixiu/cc0ad38f/6512bd43d9caa6e-1.jpg" alt="img"></h3><p><strong>（</strong> * *<strong>部分截图* ）</strong></p><h2 id="UnixBench-sh-秋水逸冰大佬作品"><a href="#UnixBench-sh-秋水逸冰大佬作品" class="headerlink" title="UnixBench.sh [秋水逸冰大佬作品]"></a>UnixBench.sh [秋水逸冰大佬作品]</h2><ul><li>UnixBench是一个类unix系（Unix，BSD，Linux）统下的性能测试工具，一个开源工具，被广泛用与测试Linux系统主机的性能。Unixbench的主要测试项目有：系统调用、读写、进程、图形化测试、2D、3D、管道、运算、C库等系统基准性能提供测试数据。</li></ul><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">wget --no-check-certificate https://github.com/teddysun/across/raw/master/unixbench.sh &amp;&amp; chmod +x unixbench.sh &amp;&amp; ./unixbench.sh</span><br></pre></td></tr></table></figure><h3 id="-3"><a href="#-3" class="headerlink" title></a><img src="/aixiu/cc0ad38f/c20ad4d76fe9775-1.jpg" alt="img"></h3><h2 id="LemonBench-sh"><a href="#LemonBench-sh" class="headerlink" title="LemonBench.sh"></a>LemonBench.sh</h2><ul><li>LemonBench工具(别名LBench、柠檬Bench)，是一款针对Linux服务器设计的服务器性能测试工具。通过综合测试，可以快速评估服务器的综合性能，为使用者提供服务器硬件配置信息。目前涵盖的测试有：服务器基础信息 (CPU信息&#x2F;内存信息&#x2F;Swap信息&#x2F;磁盘空间信息&#x2F;网络信息等)，流媒体解锁测试 (目前支持HBO Now&#x2F;动画疯&#x2F;B站港澳台&#x2F;B站台湾限定)，系统性能测试 (CPU&#x2F;内存&#x2F;磁盘)，Speedtest网速测试 (本地到最近源及国内各地域不同线路的网速)，路由追踪测试 (追踪到国内和海外不同线路的路由信息)。</li></ul><figure class="highlight shell"><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><br><span class="line">curl -fsL https://ilemonra.in/LemonBenchIntl | bash -s fast </span><br><span class="line"></span><br><span class="line">完整测试： </span><br><span class="line">curl -fsL https://ilemonra.in/LemonBenchIntl | bash -s full</span><br></pre></td></tr></table></figure><h2 id="Yabs-sh-Masonr大佬作品"><a href="#Yabs-sh-Masonr大佬作品" class="headerlink" title="Yabs.sh [Masonr大佬作品]"></a>Yabs.sh [Masonr大佬作品]</h2><ul><li>又一个 Linux VPS 一键测评脚本，可以一键测试 VPS 硬盘的读写速度、网络带宽也就是下载速度、CPU 跑分（包括 Geekbench 4 和 Geekbench 5），以及各种性能测试等。</li></ul><figure class="highlight shell"><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">wget -qO- yabs.sh | bash </span><br><span class="line">或 </span><br><span class="line">curl -sL yabs.sh | bash</span><br></pre></td></tr></table></figure><h2 id="流媒体解锁测试-Lmc999大佬作品"><a href="#流媒体解锁测试-Lmc999大佬作品" class="headerlink" title="流媒体解锁测试 [Lmc999大佬作品]"></a>流媒体解锁测试 [Lmc999大佬作品]</h2><ul><li>本脚本基于CoiaPrant&#x2F;MediaUnlock_Test代码进行修改，支持OS&#x2F;Platform：CentOS 6+, Ubuntu 14.04+, Debian 8+, MacOS, Android with Termux。</li><li>Github项目地址：<span class="exturl" data-url="aHR0cHM6Ly9naXRodWIuY29tL2xtYzk5OS9SZWdpb25SZXN0cmljdGlvbkNoZWNr">https://github.com/lmc999/RegionRestrictionCheck<i class="fa fa-external-link-alt"></i></span></li></ul><figure class="highlight shell"><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">bash &lt;(curl -L -s check.unlock.media) </span><br><span class="line"></span><br><span class="line">尾部添加参数的释义： </span><br><span class="line">-M 4      只检测IPv4结果 </span><br><span class="line">-M 6      只检测IPv6结果 </span><br><span class="line">-I eth0    指定检测的网卡名称（例：eth0） </span><br><span class="line">-E        选择脚本语言为英文</span><br></pre></td></tr></table></figure><p><img src="/aixiu/cc0ad38f/155e331eb64216b.jpg" alt="img"></p><h2 id="流媒体解锁测试-LovelyHaochi大佬作品"><a href="#流媒体解锁测试-LovelyHaochi大佬作品" class="headerlink" title="流媒体解锁测试 [LovelyHaochi大佬作品]"></a>流媒体解锁测试 [LovelyHaochi大佬作品]</h2><ul><li>支持多个流媒体的ipv4与ipv6解锁情况</li></ul><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">bash &lt;(curl -sSL &quot;https://git.io/JswGm&quot;)</span><br></pre></td></tr></table></figure><h3 id="-4"><a href="#-4" class="headerlink" title></a><img src="/aixiu/cc0ad38f/aab3238922bcc25-4.png" alt="img"></h3><h2 id="推荐杜甫使用-本脚本支持查看I-O-bench以及system-info"><a href="#推荐杜甫使用-本脚本支持查看I-O-bench以及system-info" class="headerlink" title="推荐杜甫使用-本脚本支持查看I&#x2F;O bench以及system info"></a>推荐杜甫使用-本脚本支持查看I&#x2F;O bench以及system info</h2><ul><li>支持查看硬件信息，硬盘通电时间，io等脚本，适合独立服务器使用，vps也能用。</li><li>Github项目地址：<span class="exturl" data-url="aHR0cHM6Ly9naXRodWIuY29tL0FuaXZlcnNlL0E=">https://github.com/Aniverse/A<i class="fa fa-external-link-alt"></i></span></li></ul><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">wget -q https://github.com/Aniverse/A/raw/i/a &amp;&amp; bash a</span><br></pre></td></tr></table></figure><h3 id="-5"><a href="#-5" class="headerlink" title></a><img src="/aixiu/cc0ad38f/9bf31c7ff062936-1.jpg" alt="img"></h3><h2 id="测试25端口是否开放"><a href="#测试25端口是否开放" class="headerlink" title="测试25端口是否开放"></a>测试25端口是否开放</h2><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">telnet smtp.aol.com 25</span><br></pre></td></tr></table></figure><p>如果看到类似下面的回显，则说明端口是开放的：</p><figure class="highlight shell"><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">Trying 74.6.141.50…</span><br><span class="line">Connected to smtp.aol.g03.yahoodns.net.</span><br><span class="line">Escape character is ‘^]’.</span><br><span class="line">220 smtp.mail.yahoo.com ESMTP ready</span><br></pre></td></tr></table></figure><p>如果显示 <code>Connection timed out</code> ，说明25端口不开放。需要注意的是：部分服务商或是系统，需要在控制后台开放25端口，或需要开放系统防火墙端口。</p><p>本文引用自：<span class="exturl" data-url="aHR0cHM6Ly9jbmJveS5vcmcvMTM2Nw==">四海部落<i class="fa fa-external-link-alt"></i></span></p>]]></content>
    
    
    <summary type="html">&lt;p&gt;本帖所有脚本均来自互联网，本站仅对这些脚本进行收集，以方便自己及各位基友使用。本站不对其可用性负责，也不对其安全性等任何方面负责。&lt;/p&gt;</summary>
    
    
    
    <category term="技术探讨" scheme="http://blog.ynxiu.com/categories/technology/"/>
    
    
    <category term="VPS" scheme="http://blog.ynxiu.com/tags/VPS/"/>
    
    <category term="脚本" scheme="http://blog.ynxiu.com/tags/%E8%84%9A%E6%9C%AC/"/>
    
  </entry>
  
  <entry>
    <title>Oracle_Cloud_DD_windows_other</title>
    <link href="http://blog.ynxiu.com/aixiu/9ec48eaf.html"/>
    <id>http://blog.ynxiu.com/aixiu/9ec48eaf.html</id>
    <published>2023-03-23T09:06:58.000Z</published>
    <updated>2023-03-23T09:06:58.000Z</updated>
    
    <content type="html"><![CDATA[<p>本方案来自于Win DD包提供大佬 <span class="exturl" data-url="aHR0cHM6Ly9ob3N0bG9jLmNvbS9zcGFjZS11aWQtNDk5ODQuaHRtbA==">nat.ee<i class="fa fa-external-link-alt"></i></span> ，再次表示感谢！</p><p>这个原理就是在当前Linux 系统 安装一个以内存运行的微型救援系统，而重启进入到这个救援系统，从而可以实现 纯DD命令 DD Win</p><p>系统要求：Debian 7 或 Ubuntu 12 以上<br>注意：VPS需要，默认以DHCP 自动分配IP 的才行，否则那种需要指定IP网关才有网络的，无法使用！</p><span id="more"></span><figure class="highlight shell"><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></pre></td><td class="code"><pre><span class="line"><span class="meta prompt_"># </span><span class="language-bash">更新源</span></span><br><span class="line">apt-get update</span><br><span class="line"><span class="meta prompt_"></span></span><br><span class="line"><span class="meta prompt_"># </span><span class="language-bash">安装依赖</span></span><br><span class="line">apt-get install wget grub2 grub-imageboot -y</span><br><span class="line"><span class="meta prompt_"></span></span><br><span class="line"><span class="meta prompt_"># </span><span class="language-bash">创建ISO文件夹</span></span><br><span class="line">mkdir /boot/images/</span><br><span class="line"><span class="meta prompt_"></span></span><br><span class="line"><span class="meta prompt_"># </span><span class="language-bash">下载救援系统文件</span></span><br><span class="line">wget --no-check-certificate -O /boot/images/mfslinux.iso http://d.nat.ee/rescue/mfslinux.iso</span><br><span class="line"><span class="meta prompt_"></span></span><br><span class="line"><span class="meta prompt_"># </span><span class="language-bash">替换引导顺序默认启动为救援系统</span></span><br><span class="line">sed -i &#x27;s/GRUB_DEFAULT=0/GRUB_DEFAULT=2/g&#x27; /etc/default/grub</span><br><span class="line"><span class="meta prompt_"></span></span><br><span class="line"><span class="meta prompt_"># </span><span class="language-bash">更新引导</span></span><br><span class="line">update-grub2</span><br><span class="line"><span class="meta prompt_"></span></span><br><span class="line"><span class="meta prompt_"># </span><span class="language-bash">重启</span></span><br><span class="line">reboot</span><br></pre></td></tr></table></figure><p>重新用SSH连接：</p><p>SSH端口：22<br>用户名：root<br>密码：nat.ee</p><p>欢迎信息带有 OpenWrt 则成功进入。假如未能进入到救援系统，需要重新使用：</p><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">sed -i ‘s/GRUB_DEFAULT=0/GRUB_DEFAULT=2/g’ /etc/default/grub</span><br></pre></td></tr></table></figure><p>修改 GRUB_DEFAULT&#x3D;2 为其他引导顺序，请多次尝试修改其他数字(1-9)，或者你最好重装系统后，再次使用此教程。</p><figure class="highlight shell"><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="meta prompt_"># </span><span class="language-bash">查看分区信息</span></span><br><span class="line">fdisk -l</span><br><span class="line"></span><br><span class="line">* 建议先测试DD包下载直链是否正常，然后再执行一键DD</span><br><span class="line"><span class="meta prompt_"></span></span><br><span class="line"><span class="meta prompt_"># </span><span class="language-bash">创建名为DD的后台窗口进入。</span></span><br><span class="line">screen -S DD</span><br><span class="line"><span class="meta prompt_"></span></span><br><span class="line"><span class="meta prompt_"># </span><span class="language-bash">如果SSH中断，可以执行下面的命令恢复这个DD后台窗口。</span></span><br><span class="line">screen -r DD</span><br><span class="line"><span class="meta prompt_"></span></span><br><span class="line"><span class="meta prompt_"># </span><span class="language-bash">一键DD Windows</span></span><br><span class="line">wget --no-check-certificate -qO- &quot;Windows DD包下载直链&quot; |gunzip -dc |dd of=/dev/vda</span><br></pre></td></tr></table></figure><p>DD过程，是没有任何信息的。<br>视你的VPS：CPU&#x2F;内存&#x2F;硬盘读写&#x2F;网速，以及DD包大小而决定DD要花多长时间，一般比较久，几十分钟到几小时或者一整天都有可能。DD完成后会出现这种信息：</p><figure class="highlight shell"><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">6291457+0 records in</span><br><span class="line">6291457+0 records out</span><br></pre></td></tr></table></figure><p># 重启</p><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">reboot</span><br></pre></td></tr></table></figure><p>重启后，并不是马上就能进入到你DD的Windows系统<br>还需要让此Windows系统 完成首次安装，一般5-30分钟不等的。</p><p>祝你成功！</p><p>本文引用自：<span class="exturl" data-url="aHR0cHM6Ly9jbmJveS5vcmcvMTIwMg==">四海部落<i class="fa fa-external-link-alt"></i></span></p>]]></content>
    
    
    <summary type="html">&lt;p&gt;本方案来自于Win DD包提供大佬 &lt;span class=&quot;exturl&quot; data-url=&quot;aHR0cHM6Ly9ob3N0bG9jLmNvbS9zcGFjZS11aWQtNDk5ODQuaHRtbA==&quot;&gt;nat.ee&lt;i class=&quot;fa fa-external-link-alt&quot;&gt;&lt;/i&gt;&lt;/span&gt; ，再次表示感谢！&lt;/p&gt;
&lt;p&gt;这个原理就是在当前Linux 系统 安装一个以内存运行的微型救援系统，而重启进入到这个救援系统，从而可以实现 纯DD命令 DD Win&lt;/p&gt;
&lt;p&gt;系统要求：Debian 7 或 Ubuntu 12 以上&lt;br&gt;注意：VPS需要，默认以DHCP 自动分配IP 的才行，否则那种需要指定IP网关才有网络的，无法使用！&lt;/p&gt;</summary>
    
    
    
    <category term="技术探讨" scheme="http://blog.ynxiu.com/categories/technology/"/>
    
    
    <category term="Oracle" scheme="http://blog.ynxiu.com/tags/Oracle/"/>
    
    <category term="甲骨文" scheme="http://blog.ynxiu.com/tags/%E7%94%B2%E9%AA%A8%E6%96%87/"/>
    
    <category term="DD" scheme="http://blog.ynxiu.com/tags/DD/"/>
    
    <category term="WINDOWS" scheme="http://blog.ynxiu.com/tags/WINDOWS/"/>
    
  </entry>
  
  <entry>
    <title>甲骨文 DD 安装成Windows系统 保姆级教程 百分百成功！</title>
    <link href="http://blog.ynxiu.com/aixiu/dc86c258.html"/>
    <id>http://blog.ynxiu.com/aixiu/dc86c258.html</id>
    <published>2023-03-23T09:02:55.000Z</published>
    <updated>2023-03-23T09:02:55.000Z</updated>
    
    <content type="html"><![CDATA[<p>本方案来自于Win DD包提供大佬 <span class="exturl" data-url="aHR0cHM6Ly9ob3N0bG9jLmNvbS9zcGFjZS11aWQtNDk5ODQuaHRtbA==">nat.ee<i class="fa fa-external-link-alt"></i></span> ，再次表示感谢！</p><p>本教程需要你开了两台免费鸡，一台D成 <strong>windows</strong>，一台保留 <strong>linux</strong> 系统，用来DD Windows的。</p><p>登录进去你的甲骨文云控制台，点击 [左上角]菜单&gt;计算&gt;实例</p><p>点击 进去【需要DD成Windows】实例后，点击 停止&gt;勾选(Force stop the instance by immediately powering off)&gt;确定，等待停止成功后。</p><p>如果等很久都无法停止，需要自己进入实例机子里通过命令关闭。<br>Linux 关机命令：poweroff<br>Windows 关机命令：shutdown -s</p><span id="more"></span><p>再次在【需要DD成Windows】实例里 [左下角] 点击 引导卷&gt;选择 引导卷 点击右边那三点图标 分离&gt;确定。</p><p>然后返回到主实例界面<br>点击 进入到 【linux实例】 [左下角]附加的块储存卷&gt;附加块储存卷 选择半虚拟化 引导卷 选择卷下的方框里，选择到刚刚那个分离出来的，附加&gt;确定。</p><p>然后通过SSH进入到【linux实例】里</p><p>命令： fdisk -l 查看是否有 &#x2F;dev&#x2F;sdb 有的话，开始下载DD包。<br>为了防止你在SSH连接中断，先安装srceen 后台窗口。</p><figure class="highlight shell"><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">centos 安装</span><br><span class="line">yum install screen</span><br><span class="line"></span><br><span class="line">Debian 或 Ubuntu 安装</span><br><span class="line">apt-get install screen</span><br><span class="line"></span><br><span class="line">创建名为DD的后台窗口进入</span><br><span class="line">screen -S DD</span><br><span class="line"></span><br><span class="line">如果SSH中断，可以执行下面的命令恢复这个DD后台窗口</span><br><span class="line">screen -r DD</span><br></pre></td></tr></table></figure><p>下载DD包</p><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">wget --no-check-certificate 直链</span><br></pre></td></tr></table></figure><p>[注意：甲骨文只支持Uefi启动的DD包，不是所有DD包都支持Uefi启动，注意区分查找。]</p><p>下载完成后，执行下面命令，此过程比较久，会不动的，因为正在解压包和DD进去硬盘分区里，大概需要30分钟不等。</p><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">gunzip -dc ./DD包名称| dd of=/dev/sdb</span><br></pre></td></tr></table></figure><p>DD完成后会显示</p><figure class="highlight shell"><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">16777217+0 records in</span><br><span class="line">16777217+0 records out</span><br><span class="line">8589935104 bytes (8.6 GB, 8.0 GiB) copied, 1296.11 s, 6.6 MB/s</span><br></pre></td></tr></table></figure><p>这种信息。</p><p>DD完成，输入命令：<code>exit </code>退出srceen后台窗口。</p><p>再次浏览器进入到 【linux实例】里 左下角 附加的块储存卷&gt;附加块储存卷 选择D成windows的引导卷，点击右边那三点图标，分离&gt;确定。</p><p>分离完成后，返回到主实例界面 进入到【需要DD成Windows】实例里。</p><p>[左下角]点击 引导卷&gt;选择 引导卷 点击右边那三点图标 附加块储存卷&gt;确定。</p><p>添加完成后，点击 实例上方的 启动，等待大概5分钟左右，让系统自动完成安装，你就能通过远程桌面进入了。</p><p>本文引用自：<span class="exturl" data-url="aHR0cHM6Ly9jbmJveS5vcmcvMTE5Nw==">四海部落<i class="fa fa-external-link-alt"></i></span></p>]]></content>
    
    
    <summary type="html">&lt;p&gt;本方案来自于Win DD包提供大佬 &lt;span class=&quot;exturl&quot; data-url=&quot;aHR0cHM6Ly9ob3N0bG9jLmNvbS9zcGFjZS11aWQtNDk5ODQuaHRtbA==&quot;&gt;nat.ee&lt;i class=&quot;fa fa-external-link-alt&quot;&gt;&lt;/i&gt;&lt;/span&gt; ，再次表示感谢！&lt;/p&gt;
&lt;p&gt;本教程需要你开了两台免费鸡，一台D成 &lt;strong&gt;windows&lt;/strong&gt;，一台保留 &lt;strong&gt;linux&lt;/strong&gt; 系统，用来DD Windows的。&lt;/p&gt;
&lt;p&gt;登录进去你的甲骨文云控制台，点击 [左上角]菜单&amp;gt;计算&amp;gt;实例&lt;/p&gt;
&lt;p&gt;点击 进去【需要DD成Windows】实例后，点击 停止&amp;gt;勾选(Force stop the instance by immediately powering off)&amp;gt;确定，等待停止成功后。&lt;/p&gt;
&lt;p&gt;如果等很久都无法停止，需要自己进入实例机子里通过命令关闭。&lt;br&gt;Linux 关机命令：poweroff&lt;br&gt;Windows 关机命令：shutdown -s&lt;/p&gt;</summary>
    
    
    
    <category term="技术探讨" scheme="http://blog.ynxiu.com/categories/technology/"/>
    
    
    <category term="Oracle" scheme="http://blog.ynxiu.com/tags/Oracle/"/>
    
    <category term="甲骨文" scheme="http://blog.ynxiu.com/tags/%E7%94%B2%E9%AA%A8%E6%96%87/"/>
    
    <category term="DD" scheme="http://blog.ynxiu.com/tags/DD/"/>
    
    <category term="WINDOWS" scheme="http://blog.ynxiu.com/tags/WINDOWS/"/>
    
  </entry>
  
  <entry>
    <title>Oracle Cloud利用VNC拯救失联服务器(Linux和Windows)</title>
    <link href="http://blog.ynxiu.com/aixiu/54526bc3.html"/>
    <id>http://blog.ynxiu.com/aixiu/54526bc3.html</id>
    <published>2023-03-23T08:56:08.000Z</published>
    <updated>2023-03-23T08:56:08.000Z</updated>
    
    <content type="html"><![CDATA[<p>前几天Oracle Cloud注册成功率又放水！又有一批网友上车了！这个马甲将甲骨文云VNC部分内容完善一下！</p><p>什么情况下会用到 VNC ？比如服务器无法正常启动，SSH无法正常登陆到服务器，这个时候需要利用VNC上服务器上排查一下问题！</p><p>常的场景：1）DD 系统服务器失联。 2）SSH密码忘记。</p><p>本文主要分为2部分。第一部分是利用Linux，第二部分是利用Windows 10。其中Linux相对来说简单一些！</p> <span id="more"></span><h3 id="Linux版"><a href="#Linux版" class="headerlink" title="Linux版"></a>Linux版</h3><p>这部分操作使用的是利用CentOS 7 + VNCviewer绿色版！</p><h4 id="准备工作"><a href="#准备工作" class="headerlink" title="准备工作"></a>准备工作</h4><p>1）VNC链接工具，【<span class="exturl" data-url="aHR0cHM6Ly93d3cucmVhbHZuYy5jb20vZW4vY29ubmVjdC9kb3dubG9hZC92aWV3ZXIvd2luZG93cy8=">VNC Connect<i class="fa fa-external-link-alt"></i></span>】或者【<span class="exturl" data-url="ZnRwOi8vMTkyLjk5LjExLjIwNC9WTkN2aWV3ZXIlQzIlQ0MlQzklQUIlQjAlRTYuemlw">VNCviewer绿色版<i class="fa fa-external-link-alt"></i></span>（解压密码：RUYO.net）】。</p><p>2）准备一台Linux服务器。</p><h4 id="生成SSH-KEY"><a href="#生成SSH-KEY" class="headerlink" title="生成SSH KEY"></a>生成SSH KEY</h4><p>1）登陆Linux服务器输入命令！</p><figure class="highlight shell"><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 KEY</span><br><span class="line">ssh-keygen</span><br></pre></td></tr></table></figure><p>2）命令执行效果如下！</p><figure class="highlight shell"><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></pre></td><td class="code"><pre><span class="line">[root@localhost ~]# ssh-keygen </span><br><span class="line">Generating public/private rsa key pair.</span><br><span class="line">Enter file in which to save the key (/root/.ssh/id_rsa): </span><br><span class="line">Enter passphrase (empty for no passphrase): </span><br><span class="line">Enter same passphrase again: </span><br><span class="line">Your identification has been saved in /root/.ssh/id_rsa.</span><br><span class="line">Your public key has been saved in /root/.ssh/id_rsa.pub.</span><br><span class="line">The key fingerprint is:</span><br><span class="line">SHA256:QfclO+AvXZ/O6vGNfzo4P2pftiHRoKG2fgc5p9bvu1o root@localhost.localdomain</span><br><span class="line">The key&#x27;s randomart image is:</span><br><span class="line">+---[RSA 2048]----+</span><br><span class="line">|        . o . .  |</span><br><span class="line">|       . o o +   |</span><br><span class="line">|        . ..+..  |</span><br><span class="line">|         ..oooo..|</span><br><span class="line">|        So..+. o.|</span><br><span class="line">|        . .= .+  |</span><br><span class="line">|         .  *+ Eo|</span><br><span class="line">|        .  ++oO+=|</span><br><span class="line">|         .o.+OO%*|</span><br><span class="line">+----[SHA256]-----+</span><br><span class="line">[root@localhost ~]#</span><br></pre></td></tr></table></figure><p>3）获取SSH公钥：<code>cat ~/.ssh/id_rsa.pub</code> （公钥后面会用到）</p><p>SSH私钥位置： <code>~/.ssh/id_rsa</code></p><h4 id="配置控制台"><a href="#配置控制台" class="headerlink" title="配置控制台"></a>配置控制台</h4><p>1）登陆Oracle Cloud控制台，打开实例详细信息 – 控制台连接 – 点击【创建控制台链接】</p><p><img src="/aixiu/54526bc3/98f4a0a25c73353.png" alt="img"></p><p>2）将 SSH公钥 复制到SSH密钥输入框内，保存！</p><p><img src="/aixiu/54526bc3/ec15f6eb172d967.png" alt="img"></p><p>3）等到链接的状态变成【活动】，点击【⋮】 – 【复制Linux&#x2F;Mac的VNC连接】</p><p><img src="/aixiu/54526bc3/fe935ab18e0e606.png" alt="img"></p><h4 id="创建SSH代理"><a href="#创建SSH代理" class="headerlink" title="创建SSH代理"></a>创建SSH代理</h4><p>1）需要在Linux服务器上将端口开放，默认使用的端口是5900，<strong>建议不要使用这个端口</strong>，我已经将端口换成 8000！</p><p>将上面复制的内容中的 5900 换成 8000 （如果8000被占用，就换其他的）</p><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">ssh -o ProxyCommand=&#x27;ssh -W %h:%p -p 443 ocid1.instanceconsoleconnection.oc1.ap-seoul-1.anuwgljr2ano4pqcwnhqj5tw4wgrxxxo6ba@instance-console.ap-seoul-1.oraclecloud.com&#x27; -N -L localhost:**5900**:ocid1.instance.oc1.ap-seoul-1.anuwgljr2ano4pqcpkcs63uecyrs5bqmhsblzgtkygtjvhb666kytctumtoa:5900 ocid1.instance.oc1.ap-seoul-1.anuwgljr2ano4pqcpkcs63uecyrs5xxxkytctumtoa</span><br></pre></td></tr></table></figure><p>2）将命令粘贴到Linux服务器命令行执行。</p><p>注意：第一次执行命令有2个位置，需要输入 yes 回车！</p><p><img src="/aixiu/54526bc3/4dcfaa31db4b676.png" alt="img"></p><h4 id="VNC连接服务器"><a href="#VNC连接服务器" class="headerlink" title="VNC连接服务器"></a>VNC连接服务器</h4><p>使用VNC 客户端链接即可！然后就成功了！！</p><figure class="highlight armasm"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">服务器<span class="built_in">IP</span>:<span class="number">8000</span></span><br></pre></td></tr></table></figure><p><img src="/aixiu/54526bc3/f2d2788ad0b8276.png" alt="img"></p><p><img src="/aixiu/54526bc3/e2afc2851eb41c5.png" alt="img"></p><h3 id="Windows版"><a href="#Windows版" class="headerlink" title="Windows版"></a>Windows版</h3><p>这部分操作使用的是 Windows 10 + VNCviewer绿色版</p><h4 id="准备工作-1"><a href="#准备工作-1" class="headerlink" title="准备工作"></a>准备工作</h4><p>1）VNC链接工具，【<span class="exturl" data-url="aHR0cHM6Ly93d3cucmVhbHZuYy5jb20vZW4vY29ubmVjdC9kb3dubG9hZC92aWV3ZXIvd2luZG93cy8=">VNC Connect<i class="fa fa-external-link-alt"></i></span>】或者【<span class="exturl" data-url="ZnRwOi8vMTkyLjk5LjExLjIwNC9WTkN2aWV3ZXIlQzIlQ0MlQzklQUIlQjAlRTYuemlw">VNCviewer绿色版<i class="fa fa-external-link-alt"></i></span>（解压密码：RUYO.net）】。</p><p>2）Windows 10 需要安装 Git 和 PuTTY（下载地址参考附录部分）</p><p>**提醒：**PuTTY须安装到 C:\Program Files\</p><h4 id="生成SSH-KEY-1"><a href="#生成SSH-KEY-1" class="headerlink" title="生成SSH KEY"></a>生成SSH KEY</h4><p><strong>这里严重不建议使用 PuTTY 生成 SSH KEY！</strong></p><p>1）利用Git Bash生成！</p><p>打开菜单 – Git – Git Bash</p><p><img src="/aixiu/54526bc3/5cb93337cd117e9.png" alt="img"></p><p>2）执行命令生成SSH 密钥！</p><figure class="highlight shell"><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 KEY </span><br><span class="line">ssh-keygen</span><br></pre></td></tr></table></figure><p><img src="/aixiu/54526bc3/8afaf5658d2af67.png" alt="img"></p><p>3）密钥默认存放位置：<code>C:\Users\ruyo\.ssh\</code> 目录。（其中ruyo为当前操作系统登陆用户的用户名）</p><p><img src="/aixiu/54526bc3/4670a54408b2aee.png" alt="img"></p><p>SSH公钥：<code>id_rsa.pub</code></p><p>SSH私钥： &#96;id_rsa&#96;&#96;&#96;</p><h4 id="配置控制台-1"><a href="#配置控制台-1" class="headerlink" title="配置控制台"></a>配置控制台</h4><p>这里和Linux版的操作基本一样，将SSH公钥复制进去！</p><p>等到链接的状态变成【活动】，点击【⋮】 – 【复制Windows的VNC连接】</p><p><img src="/aixiu/54526bc3/13b5900c2e74089.png" alt="img"></p><h4 id="SSH私钥转换"><a href="#SSH私钥转换" class="headerlink" title="SSH私钥转换"></a>SSH私钥转换</h4><p>由于Oracle Cloud VNC 识别不了上面的SSH私钥，需要利用下面的工具转一下！</p><p>1）打开菜单 – PuTTY – PuTTYgen</p><p><img src="/aixiu/54526bc3/842cc269fbf6d15.png" alt="img"></p><p>2）打开的界面点击【Load】，选择上面生成的SSH私钥。</p><p>如图操作，选择<code>id_rsa</code> ，出现提示框点击确定即可！</p><p><img src="/aixiu/54526bc3/40511250e3b4be3.png" alt="img"></p><p><img src="/aixiu/54526bc3/9166a3692c77cab.png" alt="img"></p><p>3）点击【Save private key】，将转换后的私钥保存到文件目录（<strong>记住该文件目录后面要用到！</strong>）。</p><p>PS：尽量要保存到 .ssh 目录中，命名要ruyo.ppk (后面有一键生成命令必须这样！)</p><p><img src="/aixiu/54526bc3/3980f1cb817b1de.png" alt="img"></p><p><img src="/aixiu/54526bc3/d1faaadaeed5fad.png" alt="img"></p><h4 id="VNC命令重构"><a href="#VNC命令重构" class="headerlink" title="VNC命令重构"></a>VNC命令重构</h4><p>直接复制处理的命令，执行上有一些问题。这里需要将命令修改一下！主要是替换以下内容：</p><p>1）替换 plink.exe 文件目录</p><p>2）替换PPK文件目录</p><p>3）将1条命令 转成 2条命令来执行</p><p><strong>原始命令：</strong></p><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">Start-Job &#123; Echo N | plink.exe -i $env:homedrive$env:homepath\oci\console.ppk -N -ssh -P 443 -l ocid1.instanceconsoleconnection.oc1.ap-seoul-1.anuwgljr2ano4pqcwnhqj5tw4wgrpmkuib4yah2naclpvcemkr27ajq5o6ba -L 5905:ocid1.instance.oc1.ap-seoul-1.anuwgljr2ano4pqcpkcs63uecyrs5bqmhsblzgtkygtjvhb666kytctumtoa:5905 instance-console.ap-seoul-1.oraclecloud.com &#125;; sleep 5; plink.exe -i $env:homedrive$env:homepath\oci\console.ppk -N -L 5900:localhost:5900 -P 5905 localhost -l ocid1.instance.oc1.ap-seoul-1.anuwgljr2ano4pqcpkcs63uecyrs5bqmhsblzgtkygtjvhb666kytctumtoa</span><br></pre></td></tr></table></figure><p><strong>转换后命令：</strong></p><p><strong>第一条命令：</strong></p><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">cd &#x27;C:\Program Files\PuTTY\&#x27;.\plink.exe -i $env:homedrive$env:homepath\.ssh\ruyo.ppk -N -ssh -P 443 -l ocid1.instanceconsoleconnection.oc1.ap-seoul-1.anuwgljr2ano4pqcwnhqj5tw4wgrpmkuib4yah2naclpvcemkr27ajq5o6ba -L 5905:ocid1.instance.oc1.ap-seoul-1.anuwgljr2ano4pqcpkcs63uecyrs5bqmhsblzgtkygtjvhb666kytctumtoa:5905 instance-console.ap-seoul-1.oraclecloud.com</span><br></pre></td></tr></table></figure><p><strong>第二条命令：</strong></p><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">cd &#x27;C:\Program Files\PuTTY\&#x27;.\plink.exe -i $env:homedrive$env:homepath\.ssh\ruyo.ppk -N -L 5900:localhost:5900 -P 5905 localhost -l ocid1.instance.oc1.ap-seoul-1.anuwgljr2ano4pqcpkcs63uecyrs5bqmhsblzgtkygtjvhb666kytctumtoa</span><br></pre></td></tr></table></figure><h4 id="启动plink代理"><a href="#启动plink代理" class="headerlink" title="启动plink代理"></a>启动plink代理</h4><p>1）我们需要启动2个 PowerShell （Win + X 或者 开始菜单鼠标右键）</p><p><img src="/aixiu/54526bc3/dbca253fbd141a9.png" alt="img"></p><p>2）在2个 PowerShell 分别执行 2条VNC命令。</p><p><strong>提醒：命令执行后，显示 Access granted. Press Return to begin session. 需要再按一次回车！！</strong></p><p><img src="/aixiu/54526bc3/a863f0ccd075a2d.png" alt="img"></p><p><img src="/aixiu/54526bc3/eaf4f04e2faeba2.png" alt="img"></p><h4 id="VNC连接服务器-1"><a href="#VNC连接服务器-1" class="headerlink" title="VNC连接服务器"></a>VNC连接服务器</h4><p>使用VNC 客户端链接即可！然后就成功了！！</p><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">localhost:5900</span><br></pre></td></tr></table></figure><p>这里我们使用默认端口基本上没啥太大问题！</p><p><img src="/aixiu/54526bc3/f694c9bfda2e151.png" alt="img"></p><p><img src="/aixiu/54526bc3/9827d4ddcd0649e.png" alt="img"></p><h3 id="附录"><a href="#附录" class="headerlink" title="附录"></a>附录</h3><p>Git下载地址：<span class="exturl" data-url="aHR0cHM6Ly9naXQtc2NtLmNvbS9kb3dubG9hZHM=">https://git-scm.com/downloads<i class="fa fa-external-link-alt"></i></span></p><p>PuTTY下载地址：<span class="exturl" data-url="aHR0cHM6Ly93d3cuY2hpYXJrLmdyZWVuZW5kLm9yZy51ay9+c2d0YXRoYW0vcHV0dHkvbGF0ZXN0Lmh0bWw=">https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html<i class="fa fa-external-link-alt"></i></span></p><h3 id="最后总结"><a href="#最后总结" class="headerlink" title="最后总结"></a>最后总结</h3><p>本文有几个疑惑不知道原因，知道的大佬可以留言指导一下！</p><p>1）为什么<strong>PuTTY 生成的 SHH 密钥 无法识别？（怀疑是密钥类型或者长度）</strong></p><p>2）直接复制VNC原始命令不能执行？（原命令有一些错误不显示，命令有2步确认的操作？）</p><p>以上博主没有做深入的摸索！</p><p>本文引用自：<span class="exturl" data-url="aHR0cHM6Ly9jbmJveS5vcmcvNzU3">四海部落<i class="fa fa-external-link-alt"></i></span></p>]]></content>
    
    
    <summary type="html">&lt;p&gt;前几天Oracle Cloud注册成功率又放水！又有一批网友上车了！这个马甲将甲骨文云VNC部分内容完善一下！&lt;/p&gt;
&lt;p&gt;什么情况下会用到 VNC ？比如服务器无法正常启动，SSH无法正常登陆到服务器，这个时候需要利用VNC上服务器上排查一下问题！&lt;/p&gt;
&lt;p&gt;常的场景：1）DD 系统服务器失联。 2）SSH密码忘记。&lt;/p&gt;
&lt;p&gt;本文主要分为2部分。第一部分是利用Linux，第二部分是利用Windows 10。其中Linux相对来说简单一些！&lt;/p&gt;</summary>
    
    
    
    <category term="技术探讨" scheme="http://blog.ynxiu.com/categories/technology/"/>
    
    
    <category term="Oracle" scheme="http://blog.ynxiu.com/tags/Oracle/"/>
    
    <category term="甲骨文" scheme="http://blog.ynxiu.com/tags/%E7%94%B2%E9%AA%A8%E6%96%87/"/>
    
    <category term="VNC" scheme="http://blog.ynxiu.com/tags/VNC/"/>
    
  </entry>
  
  <entry>
    <title>Oracle 甲骨文AMD/ARM实例救援教程</title>
    <link href="http://blog.ynxiu.com/aixiu/fdc6071f.html"/>
    <id>http://blog.ynxiu.com/aixiu/fdc6071f.html</id>
    <published>2023-03-23T08:33:50.000Z</published>
    <updated>2023-03-23T08:33:50.000Z</updated>
    
    <content type="html"><![CDATA[<p>由于甲骨文不提供系统重置，对于爱折腾的龟友，如果小龟折腾坏了要么就是自己配置<span class="exturl" data-url="aHR0cHM6Ly9jbmJveS5vcmcvNzU3">VCN救援<i class="fa fa-external-link-alt"></i></span>，要么就只能删机重开。但甲骨文很多区域的ARM甚至是AMD都资源紧缺，可能删除后就很难开出来了。VCN救援对于不少龟友可能又有些难度。那有没有更简单的方法呢？其实在博主之前写的两篇文章《<span class="exturl" data-url="aHR0cHM6Ly9jbmJveS5vcmcvMTIwMg==">甲骨文 免费机 DD 安装成Windows系统 保姆级教程 百分百成功！<i class="fa fa-external-link-alt"></i></span>》与《<span class="exturl" data-url="aHR0cHM6Ly9jbmJveS5vcmcvMTE5Nw==">另一种Linux DD Windows 教程，替代萌咔方案<i class="fa fa-external-link-alt"></i></span>》就就已经提到了这种办法。下面我们就以AMD救援ARM为例详细说一下如何救砖。</p><p>该方法也适用于ARM救援AMD，ARM救援ARM，AMD救援AMD。</p><p>1、首先将失联的ARM进行关机：甲骨文后台&#x3D;&gt;计算&gt;&gt;实例，选择ARM实例进入实例详细信息页面。点击<strong>停止</strong>，弹出框内勾选(Force stop the instance by immediately powering off)，然后<strong>确定</strong>，等待停止成功。</p><span id="more"></span><p><img src="/aixiu/fdc6071f/face9686a126c31.png" alt="img"></p><p>2、分离ARM引导卷：在ARM实例详细信息页面，下拉到下方列表[左下角]，选择<strong>引导卷</strong>，点击引导卷列表右边那三点图标，选择<strong>分离</strong>，然后<strong>确定</strong>。</p><p><img src="/aixiu/fdc6071f/c6ce8ab38fca7fe.png" alt="img"></p><p>3、新建一台免费AMD。在新建的AMD实例详细信息页面，下拉到下方列表[左下角]，选择<strong>附加的块储存卷</strong>，点击<strong>附加块储存卷</strong>，在弹出页面的选择卷下的方框里选择刚刚那个分离出来引导卷，挂载方式选择半虚拟化，然后<strong>确定</strong>。</p><p><img src="/aixiu/fdc6071f/99565c1dcffd1a6.png" alt="img"></p><p><img src="/aixiu/fdc6071f/b74325f65cad8af.png" alt="img"></p><p>4、SSH连接刚刚新建的AMD实例。使用 <code>lsblk</code> 或 <code>fdisk -l</code> 命令，你就可以查看到附加的ARM引导卷，一般是 <code>/dev/sdb</code> （具体盘符请自行查看）。</p><p>5、接下来就下载DD救援包。如果自己没有备份救援包的话，这里提供2个ARM救援包和1个AMD救援包供大家使用（大家也可以自行备份自己手上现有的AMD或ARM机型，制作救援包。方法见文末）：</p><figure class="highlight shell"><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">ubuntu18.04 ARM 官方原版完整救援包（用户名：root , 密码：CNBoy.org） </span><br><span class="line">wget --no-check-certificate https://github.com/honorcnboy/BlogDatas/releases/download/OracleRescueKit/ubuntu18.04.arm.img.gz </span><br><span class="line">* 恢复数据约46G，耗时约1个多小时 </span><br><span class="line"></span><br><span class="line">ubuntu18.04 AMD 官方原版完整救援包（用户名：root , 密码：CNBoy.org） </span><br><span class="line">wget --no-check-certificate https://github.com/honorcnboy/BlogDatas/releases/download/OracleRescueKit/ubuntu18.04.amd.img.gz </span><br><span class="line">* 恢复数据约46G，耗时约1个多小时 </span><br><span class="line"></span><br><span class="line">debian10 ARM 网络精简救援包（用户名：root , 密码：10086.fit） </span><br><span class="line">wget --no-check-certificate https://github.com/honorcnboy/BlogDatas/releases/download/OracleRescueKit/dabian10.arm.img.gz </span><br><span class="line">* 恢复数据约3G，耗时约10多分钟</span><br></pre></td></tr></table></figure><p>6、恢复镜像到 <code>/dev/sdb</code> 分区（如果你的引导卷加载路径不用，请自行修改路径）</p><figure class="highlight shell"><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">说明：为了防止你在SSH连接在恢复数据中途中断导致失败，建议使用 srceen 后台窗口运行以下命令</span><br><span class="line"></span><br><span class="line">gzip -dc &#x27;救援包完整路径&#x27; | dd of=&#x27;引导卷加载路径&#x27; </span><br><span class="line"></span><br><span class="line">例： </span><br><span class="line">使用 ubuntu18.04 ARM 官方原版完整救援包，命令如下： </span><br><span class="line">gzip -dc /root/ubuntu18.04.arm.img.gz | dd of=/dev/sdb </span><br><span class="line"></span><br><span class="line">使用 ubuntu18.04 AMD 官方原版完整救援包，命令如下： </span><br><span class="line">gzip -dc /root/ubuntu18.04.amd.img.gz | dd of=/dev/sdb </span><br><span class="line"></span><br><span class="line">使用 debian10 ARM 网络精简救援包，命令如下： </span><br><span class="line">gzip -dc /root/dabian10.arm.img.gz | dd of=/dev/sdb</span><br></pre></td></tr></table></figure><p>7、恢复过程中你可以新开一个SSH窗口，然后运行以下命令后不要关闭，切换回恢复命令的窗口查看进度</p><figure class="highlight apache"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">watch</span> -n <span class="number">5</span> pkill -USR1 ^dd$</span><br></pre></td></tr></table></figure><p><img src="/aixiu/fdc6071f/432fec70c33db12.png" alt="img"></p><p>8、等待镜像恢复完成后，到甲骨文后台，新建的AMD中卸载掉刚刚附加的块储存卷，并至ARM实例中挂载回这个引导卷。然后启动ARM实例。SSH连接ARM，你就会发现你的ARM又复活了！</p><p>接下来修改为自己的密码就可以开始使用了。或是对上面提供的救援包不放心的话，再参考《<span class="exturl" data-url="aHR0cHM6Ly9jbmJveS5vcmcvMTE1NQ==">萌咖一键DD纯净系统脚本(2021年8月最新版) CentOS&#x2F;Debian&#x2F;Ubuntu<i class="fa fa-external-link-alt"></i></span>》或《<span class="exturl" data-url="aHR0cHM6Ly9jbmJveS5vcmcvMTMzMQ==">全自动一键网络重装脚本（DD脚本）<i class="fa fa-external-link-alt"></i></span>》自行DD为所需系统。</p><p>另外，现在不只是ARM，有些地区的AMD资源也出现了紧缺的情况，所以一旦玩儿坏删机就很难开出来了。博主建议大家都自行备份制作一份 AMD &#x2F; ARM 救援包。</p><p>备份步骤前4步与上面一样，挂载好引导卷之后，SSH执行已下命令进行备份制作。待完成后，将 <code>own.img.gz</code> 下载下来自己备存即可。</p><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">dd if=/dev/sdb | gzip &gt; /root/own.img.gz</span><br></pre></td></tr></table></figure><p>本文引用自：<span class="exturl" data-url="aHR0cHM6Ly9jbmJveS5vcmcvMjA3NA==">四海部落<i class="fa fa-external-link-alt"></i></span></p>]]></content>
    
    
    <summary type="html">&lt;p&gt;由于甲骨文不提供系统重置，对于爱折腾的龟友，如果小龟折腾坏了要么就是自己配置&lt;span class=&quot;exturl&quot; data-url=&quot;aHR0cHM6Ly9jbmJveS5vcmcvNzU3&quot;&gt;VCN救援&lt;i class=&quot;fa fa-external-link-alt&quot;&gt;&lt;/i&gt;&lt;/span&gt;，要么就只能删机重开。但甲骨文很多区域的ARM甚至是AMD都资源紧缺，可能删除后就很难开出来了。VCN救援对于不少龟友可能又有些难度。那有没有更简单的方法呢？其实在博主之前写的两篇文章《&lt;span class=&quot;exturl&quot; data-url=&quot;aHR0cHM6Ly9jbmJveS5vcmcvMTIwMg==&quot;&gt;甲骨文 免费机 DD 安装成Windows系统 保姆级教程 百分百成功！&lt;i class=&quot;fa fa-external-link-alt&quot;&gt;&lt;/i&gt;&lt;/span&gt;》与《&lt;span class=&quot;exturl&quot; data-url=&quot;aHR0cHM6Ly9jbmJveS5vcmcvMTE5Nw==&quot;&gt;另一种Linux DD Windows 教程，替代萌咔方案&lt;i class=&quot;fa fa-external-link-alt&quot;&gt;&lt;/i&gt;&lt;/span&gt;》就就已经提到了这种办法。下面我们就以AMD救援ARM为例详细说一下如何救砖。&lt;/p&gt;
&lt;p&gt;该方法也适用于ARM救援AMD，ARM救援ARM，AMD救援AMD。&lt;/p&gt;
&lt;p&gt;1、首先将失联的ARM进行关机：甲骨文后台&amp;#x3D;&amp;gt;计算&amp;gt;&amp;gt;实例，选择ARM实例进入实例详细信息页面。点击&lt;strong&gt;停止&lt;/strong&gt;，弹出框内勾选(Force stop the instance by immediately powering off)，然后&lt;strong&gt;确定&lt;/strong&gt;，等待停止成功。&lt;/p&gt;</summary>
    
    
    
    <category term="技术探讨" scheme="http://blog.ynxiu.com/categories/technology/"/>
    
    
    <category term="Oracle" scheme="http://blog.ynxiu.com/tags/Oracle/"/>
    
    <category term="甲骨文" scheme="http://blog.ynxiu.com/tags/%E7%94%B2%E9%AA%A8%E6%96%87/"/>
    
    <category term="AMD" scheme="http://blog.ynxiu.com/tags/AMD/"/>
    
    <category term="ARM" scheme="http://blog.ynxiu.com/tags/ARM/"/>
    
  </entry>
  
  <entry>
    <title>Github/Gitlab Actions中的cron格式和设置方法</title>
    <link href="http://blog.ynxiu.com/aixiu/f9ec3873.html"/>
    <id>http://blog.ynxiu.com/aixiu/f9ec3873.html</id>
    <published>2023-01-15T13:23:43.000Z</published>
    <updated>2023-01-15T13:23:43.000Z</updated>
    
    <content type="html"><![CDATA[<p>Github &#x2F; Gitlab Actions是一种轻量级的CI（Continuous integration，持续集成），能够自动化地完成某些特定功能或功能组合。在编写Gitlab Actions时通常需要在workflow中指定运行时间，通过schedule定时执行某些工作，其中需要使用cron定义工作流的时间表。</p><p>Set cron schedule · Actions · GitHub Marketplace · GitHub<br>Set the cron schedule for a GitHub Action<br><span class="exturl" data-url="aHR0cHM6Ly9naXRodWIuY29tL21hcmtldHBsYWNlL2FjdGlvbnMvc2V0LWNyb24tc2NoZWR1bGU=">https://github.com/marketplace/actions/set-cron-schedule<i class="fa fa-external-link-alt"></i></span></p><span id="more"></span><p><img src="/aixiu/f9ec3873/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6Lqr5Lu35LqU5q-b,size_20,color_FFFFFF,t_70,g_se,x_16.png" alt="img"></p><p>但由于不支持秒级的定时设定，使得这一cron格式与标准的cron有所不同，在使用过程中需要注意！</p><p>Github &#x2F; Gitlab Actions 中的Cron格式<br>该cron有五个由空格分隔的字段，每个字段代表一个时间单位。第一个数字代表分钟，第二个数字代表小时，第三个数字代表日，第四个数字代表月，第五个数字代表星期。<br><img src="/aixiu/f9ec3873/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6Lqr5Lu35LqU5q-b,size_20,color_FFFFFF,t_70,g_se,x_16-1673760427215-5.png" alt="img"></p><p>此外，该cron指定的是格林尼治时间****（UTC）*<em><strong>，如果需要换算成</strong>北京时间</em>*，要在该cron的基础上增加<strong>八小时</strong>得到北京时间。</p><p>例如 <code>0 1 * * *</code> 表示在每天 格林尼治时间的 1:00 AM，也就是在北京时间的 9:00 AM 自动运行。</p><figure class="highlight yml"><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="attr">on:</span></span><br><span class="line">  <span class="attr">schedule:</span></span><br><span class="line">    <span class="bullet">-</span> <span class="attr">cron:</span> <span class="string">&#x27;0 0 * * *&#x27;</span></span><br></pre></td></tr></table></figure><h1 id="Github-Gitlab-Actions-中的Cron内容"><a href="#Github-Gitlab-Actions-中的Cron内容" class="headerlink" title="Github &#x2F; Gitlab Actions 中的Cron内容"></a>Github &#x2F; Gitlab Actions 中的Cron内容</h1><p>关于每个部分的设定如下表：</p><table><thead><tr><th align="center"><em><strong>*字段*</strong></em></th><th align="center"><em><strong>*允许值*</strong></em></th></tr></thead><tbody><tr><td align="center">分</td><td align="center">0-59</td></tr><tr><td align="center">小时</td><td align="center">0-23</td></tr><tr><td align="center">日期</td><td align="center">1-31</td></tr><tr><td align="center">月份</td><td align="center">1-12 或者 JAN-DEC</td></tr><tr><td align="center">星期</td><td align="center"><strong>0-6</strong> 或者 SUN-SAT</td></tr></tbody></table><p>可以在五个字段中的任意一个字段中使用运算符：</p><table><thead><tr><th align="center"><strong>符号</strong></th><th align="center"><strong>描述</strong></th><th align="left"><strong>示例</strong></th></tr></thead><tbody><tr><td align="center">*</td><td align="center">任意数值</td><td align="left"><code>15 * * * *</code> 在每天的每个小时的15分运行</td></tr><tr><td align="center">,</td><td align="center">数值列表分隔符</td><td align="left"><code>2,10 4,5 * * *</code> 在每天的第4和第5个小时的第2和第10分运行</td></tr><tr><td align="center">-</td><td align="center">数值范文连接</td><td align="left"><code>30 4-6 * * *</code> 在每天的第4和5和6小时的30分运行</td></tr><tr><td align="center">&#x2F;</td><td align="center">步进数值</td><td align="left"><code>20/15 * * * *</code> 在每天的每个小时中，从第20分钟到59分钟每隔15分钟运行一次（即20分、35分和50分运行）</td></tr></tbody></table><p><strong>注意：</strong></p><ul><li>以上时间均为UTC标准时间，不是北京时间</li><li>只要当前时间符合以上时间就会运行，可以运行多次而非仅在第一次符合时间要求时运行</li><li>GitHub操作不支持非标准语法@yearly、@monthly、@weekly、@daily、@hourly和@reboot。</li></ul><h1 id="更多用法"><a href="#更多用法" class="headerlink" title="更多用法"></a>更多用法</h1><p>可以参考官方Doc中的schedule部分：</p><p>Events that trigger workflows - GitHub Docs<br><span class="exturl" data-url="aHR0cHM6Ly9kb2NzLmdpdGh1Yi5jb20vZW4vYWN0aW9ucy91c2luZy13b3JrZmxvd3MvZXZlbnRzLXRoYXQtdHJpZ2dlci13b3JrZmxvd3M=">https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows<i class="fa fa-external-link-alt"></i></span></p><p><img src="/aixiu/f9ec3873/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6Lqr5Lu35LqU5q-b,size_20,color_FFFFFF,t_70,g_se,x_16-1673760816360-8.png" alt="img"></p><h1 id="和标准的Cron表达式的区别"><a href="#和标准的Cron表达式的区别" class="headerlink" title="和标准的Cron表达式的区别"></a>和标准的Cron表达式的区别</h1><p>目前注意到了两个区别，第一，是位数区别，不能设置秒；第二，是星期的允许值不同，从0开始而非从1开始。常规的Cron表达式格式如下。</p><p><img src="/aixiu/f9ec3873/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6Lqr5Lu35LqU5q-b,size_20,color_FFFFFF,t_70,g_se,x_16-1673760854163-11.png" alt="img"></p><figure class="highlight tex"><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><br><span class="line"></span><br><span class="line">“*” 字符被用来指定所有的值。如：&quot;*&quot;在分钟的字段域里表示“每分钟”。</span><br><span class="line">“?” 字符只在日期域和星期域中使用。它被用来指定“非明确的值”。当你需要通过在这两个域中的一个来指定一些东西的时候，它是有用的。看下面的例子你就会明白。 月份中的日期和星期中的日期这两个元素时互斥的一起应该通过设置一个问号来表明不想设置那个字段。</span><br><span class="line">“-” 字符被用来指定一个范围。如：“10-12”在小时域意味着“10点、11点、12点”。</span><br><span class="line">“,” 字符被用来指定另外的值。如：“MON,WED,FRI”在星期域里表示”星期一、星期三、星期五”。</span><br><span class="line">“/” 字符用于指定增量。如：“0/15”在秒域意思是每分钟的0，15，30和45秒。“5/15”在分钟域表示每小时的5，20，35和50。符号“*”在“/”前面（如：*/10）等价于0在“/”前面（如：0/10）。记住一条本质：表达式的每个数值域都是一个有最大值和最小值的集合，如：秒域和分钟域的集合是0-59，日期域是1-31，月份域是1-12。字符“/”可以帮助你在每个字符域中取相应的数值。如：“7/6”在月份域的时候只有当7月的时候才会触发，并不是表示每个6月。</span><br><span class="line">“L” 是‘last’的省略写法可以表示day-of-month和day-of-week域，但在两个字段中的意思不同，例如day-of-month域中表示一个月的最后一天。如果在day-of-week域表示‘7’或者‘SAT’，如果在day-of-week域中前面加上数字，它表示一个月的最后几天，例如‘6L’就表示一个月的最后一个星期五。</span><br><span class="line">“W” 字符只允许日期域出现。这个字符用于指定日期的最近工作日。例如：如果你在日期域中写 “15W”，表示：这个月15号最近的工作日。所以，如果15号是周六，则任务会在14号触发。如果15好是周日，则任务会在周一也就是16号触发。如果是在日期域填写“1W”即使1号是周六，那么任务也只会在下周一，也就是3号触发，“W”字符指定的最近工作日是不能够跨月份的。字符“W”只能配合一个单独的数值使用，不能够是一个数字段，如：1-15W是错误的。</span><br><span class="line">“L”和“W”可以在日期域中联合使用，LW表示这个月最后一周的工作日。</span><br><span class="line">“<span class="params">#</span>” 字符只允许在星期域中出现。这个字符用于指定本月的某某天。例如：“6<span class="params">#3</span>”表示本月第三周的星期五（6表示星期五，3表示第三周）。“2<span class="params">#1</span>”表示本月第一周的星期一。“4<span class="params">#5</span>”表示第五周的星期三。</span><br><span class="line">“C” 字符允许在日期域和星期域出现。这个字符依靠一个指定的“日历”。也就是说这个表达式的值依赖于相关的“日历”的计算结果，如果没有“日历”关联，则等价于所有包含的“日历”。如：日期域是“5C”表示关联“日历”中第一天，或者这个月开始的第一天的后5天。星期域是“1C”表示关联“日历”中第一天，或者星期的第一天的后1天，也就是周日的后一天（周一）。</span><br></pre></td></tr></table></figure><p> <strong>注意：除了{日期}和{星期}可以使用”?”来实现互斥，表达无意义的信息之外，其他占位符都要具有具体的时间含义，且依赖关系为：年-&gt;月-&gt;日期(星期)-&gt;小时-&gt;分钟-&gt;秒数。</strong></p><h1 id="在线Cron表达式设置工具"><a href="#在线Cron表达式设置工具" class="headerlink" title="在线Cron表达式设置工具"></a>在线Cron表达式设置工具</h1><p>推荐两个好用的表达式生成工具，第二个可以给出运行时间进行人类可读的验证。需要注意将该表达式调整位数和星期的设置，以应用在 Github &#x2F; Gitlab Actions 中。</p><p><span class="exturl" data-url="aHR0cDovL2Nyb24uY2lkaW5nLmNjLw==">Cron - 在线Cron表达式生成器<i class="fa fa-external-link-alt"></i></span></p><p><span class="exturl" data-url="aHR0cHM6Ly9jb25zb2xlLmVuY29vLmNvbS9saWIvY3Jvbi9pbmRleC5odG1s">在线Cron表达式生成器<i class="fa fa-external-link-alt"></i></span></p><p>参考教程：</p><p><span class="exturl" data-url="aHR0cHM6Ly93d3cuamlhbnNodS5jb20vcC9lOWNlMWE3ZTFlZDE=">https://www.jianshu.com/p/e9ce1a7e1ed1<i class="fa fa-external-link-alt"></i></span></p><p>原文链接：</p><p><span class="exturl" data-url="aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1hpbWVyci9hcnRpY2xlL2RldGFpbHMvMTIzNTAxNzcy">https://blog.csdn.net/Ximerr/article/details/123501772<i class="fa fa-external-link-alt"></i></span></p>]]></content>
    
    
    <summary type="html">&lt;p&gt;Github &amp;#x2F; Gitlab Actions是一种轻量级的CI（Continuous integration，持续集成），能够自动化地完成某些特定功能或功能组合。在编写Gitlab Actions时通常需要在workflow中指定运行时间，通过schedule定时执行某些工作，其中需要使用cron定义工作流的时间表。&lt;/p&gt;
&lt;p&gt;Set cron schedule · Actions · GitHub Marketplace · GitHub&lt;br&gt;Set the cron schedule for a GitHub Action&lt;br&gt;&lt;span class=&quot;exturl&quot; data-url=&quot;aHR0cHM6Ly9naXRodWIuY29tL21hcmtldHBsYWNlL2FjdGlvbnMvc2V0LWNyb24tc2NoZWR1bGU=&quot;&gt;https://github.com/marketplace/actions/set-cron-schedule&lt;i class=&quot;fa fa-external-link-alt&quot;&gt;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;</summary>
    
    
    
    <category term="学习笔记" scheme="http://blog.ynxiu.com/categories/notes/"/>
    
    
    <category term="Github" scheme="http://blog.ynxiu.com/tags/Github/"/>
    
    <category term="Actions" scheme="http://blog.ynxiu.com/tags/Actions/"/>
    
    <category term="cron" scheme="http://blog.ynxiu.com/tags/cron/"/>
    
  </entry>
  
  <entry>
    <title>Hexo图片不显示问题</title>
    <link href="http://blog.ynxiu.com/aixiu/bbefb6a2.html"/>
    <id>http://blog.ynxiu.com/aixiu/bbefb6a2.html</id>
    <published>2023-01-15T11:03:04.000Z</published>
    <updated>2023-01-15T11:03:04.000Z</updated>
    
    <content type="html"><![CDATA[<blockquote><p>为了想让更多人看到博客的文章，更好的让百度站点收录，添加了hexo-abbrlink插件实现博客生成永久链接，但安装这个插件之后发现我的博客图片不显示了（gitee加了防盗链。图床出现了问题，我现在用的都是本地图片，文章使用相对路径引用图片）</p></blockquote><ul><li>上面的问题，网上查了一下，发现是<code>hexo-asset-image</code>和<code>hexo-abbrlink</code>这两个插件出现了冲突。</li></ul><p>解决方案也有很多，最主要就是更改插件目录下的<code>index.js</code>文件。但改了之后发现问题并没有解决。最后</p><p>使用了网友更改的<code>hexo-asset-image</code>插件之后，完美解决。</p><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">npm install https://github.com/foreveryang321/hexo-asset-image.git --save</span><br></pre></td></tr></table></figure><span id="more"></span><p><span class="exturl" data-url="aHR0cHM6Ly9naXRodWIuY29tL2ZvcmV2ZXJ5YW5nMzIxL2hleG8tYXNzZXQtaW1hZ2U=">项目地址<i class="fa fa-external-link-alt"></i></span></p><ul><li>特性：基于官方插件的修改，为了兼容<code>hexo-abbrlink</code>插件</li><li>确保 <code>_config.yml</code>博客配置文件中<code>post_asset_folder: true</code> 启用。</li><li>可以使用下列方法插入图片<code>logo.jpg</code>：<ul><li><code>![logo](logo.jpg)</code></li><li><code>![logo](MacGesture2-Publish/logo.jpg)</code></li><li><code>![logo](D:/MacGesture2-Publish/logo.jpg)</code></li><li><code>&#123;% asset_img logo.jpg %&#125;</code></li></ul></li></ul><p><span class="exturl" data-url="aHR0cHM6Ly9qaW5nbG9uZzIzMy5naXRlZS5pby9hcmNoaXZlcy9iYzFmODdl">参考地址<i class="fa fa-external-link-alt"></i></span>  <span class="exturl" data-url="aHR0cHM6Ly9qaW5nbG9uZzIzMy5naXRlZS5pby9hcmNoaXZlcy9iYzFmODdl">https://jinglong233.gitee.io/archives/bc1f87e<i class="fa fa-external-link-alt"></i></span></p>]]></content>
    
    
    <summary type="html">&lt;blockquote&gt;
&lt;p&gt;为了想让更多人看到博客的文章，更好的让百度站点收录，添加了hexo-abbrlink插件实现博客生成永久链接，但安装这个插件之后发现我的博客图片不显示了（gitee加了防盗链。图床出现了问题，我现在用的都是本地图片，文章使用相对路径引用图片）&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;上面的问题，网上查了一下，发现是&lt;code&gt;hexo-asset-image&lt;/code&gt;和&lt;code&gt;hexo-abbrlink&lt;/code&gt;这两个插件出现了冲突。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;解决方案也有很多，最主要就是更改插件目录下的&lt;code&gt;index.js&lt;/code&gt;文件。但改了之后发现问题并没有解决。最后&lt;/p&gt;
&lt;p&gt;使用了网友更改的&lt;code&gt;hexo-asset-image&lt;/code&gt;插件之后，完美解决。&lt;/p&gt;
&lt;figure class=&quot;highlight shell&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;npm install https://github.com/foreveryang321/hexo-asset-image.git --save&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;</summary>
    
    
    
    <category term="技术探讨" scheme="http://blog.ynxiu.com/categories/technology/"/>
    
    
    <category term="Hexo" scheme="http://blog.ynxiu.com/tags/Hexo/"/>
    
    <category term="image" scheme="http://blog.ynxiu.com/tags/image/"/>
    
  </entry>
  
  <entry>
    <title>甲骨文DD&amp;失联救砖教程</title>
    <link href="http://blog.ynxiu.com/aixiu/92575433.html"/>
    <id>http://blog.ynxiu.com/aixiu/92575433.html</id>
    <published>2023-01-14T15:54:13.000Z</published>
    <updated>2023-01-14T15:54:13.000Z</updated>
    
    <content type="html"><![CDATA[<h2 id="一、DD本机系统"><a href="#一、DD本机系统" class="headerlink" title="一、DD本机系统"></a>一、DD本机系统</h2><p>dd系统即重装系统：如下表示将系统重置为<code> ubuntu20.04</code>系统，账号&#x2F;密码：<code>root/12345</code></p><p><strong>注意事项：dd过程一定要耐心等待，不要胡乱操作比如去后台重启，容易失联。耐心等待10-30分钟。</strong></p><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">bash &lt;(wget --no-check-certificate -qO- &#x27;https://moeclub.org/attachment/LinuxShell/InstallNET.sh&#x27;) -u 20.04 -v 64 -a -firmware -p 12345</span><br></pre></td></tr></table></figure><p>说明：</p><ul><li>-d: Debian系统 版本可选：【7、8、9、10，11】</li><li>-u: Ubuntu系统 版本可选：【14.04、16.04、18.04、20.04】</li><li>-p: 密码</li></ul><span id="more"></span><h2 id="二、失联救砖"><a href="#二、失联救砖" class="headerlink" title="二、失联救砖"></a>二、失联救砖</h2><ul><li>这边假设你没有看到上面的注意事项，dd失联了，当然也有可能是其他原因引起。就是无法通过ssh链接你的服务器了。就需要救砖了。</li><li>救砖原理为：服务器数据存储在甲骨文的磁盘里，也就是那个默认50G的盘里。这个盘可以分离，挂载，重置数据。可以理解为你的U盘，可以拔出来，换台电脑重置一下系统，再插回去。</li></ul><h3 id="1、创建备用实例"><a href="#1、创建备用实例" class="headerlink" title="1、创建备用实例"></a>1、创建备用实例</h3><ol><li><p>同账号找一个新的实例；如果没有则创建一个amd免费的</p><p><img src="/aixiu/92575433/image-20221228140405947.png" alt="image-20221228140405947"></p></li><li><p>ssh连接，然后执行<code>sudo -i</code> 进入root；</p><p><img src="/aixiu/92575433/image-20221228140732940.png" alt="image-20221228140732940"></p></li></ol><h3 id="2、分离失联实例硬盘"><a href="#2、分离失联实例硬盘" class="headerlink" title="2、分离失联实例硬盘"></a>2、分离失联实例硬盘</h3><ol><li><p>停止失联实例:注意是停止不是终止，一会还得挂载回来</p></li><li><p>分离引导卷</p><p><img src="/aixiu/92575433/image-20221228141538320.png" alt="image-20221228141538320"></p></li></ol><h3 id="3、挂载失联实例引导卷-备用实例"><a href="#3、挂载失联实例引导卷-备用实例" class="headerlink" title="3、挂载失联实例引导卷-&gt;备用实例"></a>3、挂载失联实例引导卷-&gt;备用实例</h3><ol><li><p>备用实例 -&gt; 附加的块存储</p><p><img src="/aixiu/92575433/image-20221228141808049.png" alt="image-20221228141808049"></p></li><li><p>选择刚刚分离的失联引导卷，类型<code>ISCSI</code>，访问<code>读写</code></p><p><img src="/aixiu/92575433/image-20221228161954526.png" alt="image-20221228161954526"></p></li><li><p>ISCSI需要在主机上执行挂载分离命令，此处先复制链接命令，过会分离用分离命令</p><p><img src="/aixiu/92575433/image-20221228162114183.png" alt="image-20221228162114183"></p><p><img src="/aixiu/92575433/image-20221228162147909.png" alt="image-20221228162147909"></p></li><li><p>打开备用实例ssh，输入复制的连接命令</p><p><img src="/aixiu/92575433/image-20221228162331087.png" alt="image-20221228162331087"></p></li></ol><h3 id="4、dd附加盘"><a href="#4、dd附加盘" class="headerlink" title="4、dd附加盘"></a>4、dd附加盘</h3><p><strong>注：此系统为原作者简化dabian系统，主要为了快速恢复失联；等待失联恢复后如需要其他系统，可使用一、中脚本重新dd</strong></p><ol><li><p>下载镜像<code>cd /root &amp;&amp; wget https://app.isos.cc/dabian.sdb.gz</code></p></li><li><p>dd系统<code>gzip -dc /root/dabian.sdb.gz | dd of=/dev/sdb</code></p><p><img src="/aixiu/92575433/image-20221228144806483.png" alt="image-20221228144806483"></p></li><li><p>新打开一个ssh窗口</p><figure class="highlight shell"><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">sudo -i</span><br><span class="line">watch -n 5 pkill -USR1 ^dd$</span><br></pre></td></tr></table></figure></li><li><p>然后重新回到此窗口，将发现dd正在进行中，一直等待到进度完成，此dd需要复制3.2G数据。</p><p><img src="/aixiu/92575433/image-20221228152927672.png" alt="image-20221228152927672"></p></li></ol><h3 id="5、dd结束，分离备用实例附加盘-挂载为失联实例引导盘"><a href="#5、dd结束，分离备用实例附加盘-挂载为失联实例引导盘" class="headerlink" title="5、dd结束，分离备用实例附加盘-&gt;挂载为失联实例引导盘"></a>5、dd结束，分离备用实例附加盘-&gt;挂载为失联实例引导盘</h3><ol><li><p>分离附加盘，3-3步骤的分离命令执行一下，控制台分离</p><p><img src="/aixiu/92575433/image-20221228163539931.png" alt="image-20221228163539931"></p></li></ol><p><img src="/aixiu/92575433/image-20221228163656347.png" alt="image-20221228163656347"></p><ol><li><p>回到失联实例-引导卷，再给附加回去</p><p><img src="/aixiu/92575433/image-20221228163803917.png" alt="image-20221228163803917"></p></li><li><p>开机，使用 账号&#x2F;密码：<code>root/10086.fit</code>登录实例。</p></li></ol><h2 id="三、自己制作dd包（附加内容，有需求可以玩玩）"><a href="#三、自己制作dd包（附加内容，有需求可以玩玩）" class="headerlink" title="三、自己制作dd包（附加内容，有需求可以玩玩）"></a>三、自己制作dd包（附加内容，有需求可以玩玩）</h2><ol><li>与 二 步骤相同，把想要作为镜像的arm引导盘挂载到一个备用机（建议配置高点，速度快）</li><li>备用机执行<code>dd if=/dev/sdb | gzip &gt; /root/ubuntu.img.gz</code>生成的压缩包在&#x2F;root目录下，时间很长需要等待</li><li>dd恢复命令<code>gzip -dc /root/ubuntu.img.gz | dd of=/dev/sdb</code>，过程如 二</li></ol><hr><p><span class="exturl" data-url="aHR0cHM6Ly9ibG9nLmh1aWppYTIxLmNvbS8yMDIyMTIyODE2Mjc0Mi5odG1s">原文链接：小回博客<i class="fa fa-external-link-alt"></i></span></p><p>参考文章：<span class="exturl" data-url="aHR0cHM6Ly8xMDA4Ni5maXQvMTIyMg==">https://10086.fit/1222<i class="fa fa-external-link-alt"></i></span></p>]]></content>
    
    
    <summary type="html">&lt;h2 id=&quot;一、DD本机系统&quot;&gt;&lt;a href=&quot;#一、DD本机系统&quot; class=&quot;headerlink&quot; title=&quot;一、DD本机系统&quot;&gt;&lt;/a&gt;一、DD本机系统&lt;/h2&gt;&lt;p&gt;dd系统即重装系统：如下表示将系统重置为&lt;code&gt; ubuntu20.04&lt;/code&gt;系统，账号&amp;#x2F;密码：&lt;code&gt;root/12345&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;注意事项：dd过程一定要耐心等待，不要胡乱操作比如去后台重启，容易失联。耐心等待10-30分钟。&lt;/strong&gt;&lt;/p&gt;
&lt;figure class=&quot;highlight shell&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;bash &amp;lt;(wget --no-check-certificate -qO- &amp;#x27;https://moeclub.org/attachment/LinuxShell/InstallNET.sh&amp;#x27;) -u 20.04 -v 64 -a -firmware -p 12345&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;

&lt;p&gt;说明：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;-d: Debian系统 版本可选：【7、8、9、10，11】&lt;/li&gt;
&lt;li&gt;-u: Ubuntu系统 版本可选：【14.04、16.04、18.04、20.04】&lt;/li&gt;
&lt;li&gt;-p: 密码&lt;/li&gt;
&lt;/ul&gt;</summary>
    
    
    
    <category term="技术探讨" scheme="http://blog.ynxiu.com/categories/technology/"/>
    
    
    <category term="Oracle" scheme="http://blog.ynxiu.com/tags/Oracle/"/>
    
    <category term="VPS" scheme="http://blog.ynxiu.com/tags/VPS/"/>
    
  </entry>
  
  <entry>
    <title>给博客挂个春节灯笼</title>
    <link href="http://blog.ynxiu.com/aixiu/2a55c9f8.html"/>
    <id>http://blog.ynxiu.com/aixiu/2a55c9f8.html</id>
    <published>2021-01-20T11:55:06.000Z</published>
    <updated>2021-01-20T11:55:06.000Z</updated>
    
    <content type="html"><![CDATA[<blockquote><p>开启自定义footer.njk配置</p></blockquote><ul><li>主题配置文件<code>_config.yml</code>找到<code>footer: source/_data/footer.njk</code>取消注释。</li><li>在博客根目录<code>blog\source\_data</code> 新建<code>footer.njk</code>文件。</li><li>写下以下代码。</li></ul><span id="more"></span><figure class="highlight html"><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><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br><span class="line">105</span><br><span class="line">106</span><br><span class="line">107</span><br><span class="line">108</span><br><span class="line">109</span><br><span class="line">110</span><br><span class="line">111</span><br><span class="line">112</span><br><span class="line">113</span><br><span class="line">114</span><br><span class="line">115</span><br><span class="line">116</span><br><span class="line">117</span><br><span class="line">118</span><br><span class="line">119</span><br><span class="line">120</span><br><span class="line">121</span><br><span class="line">122</span><br><span class="line">123</span><br><span class="line">124</span><br><span class="line">125</span><br><span class="line">126</span><br><span class="line">127</span><br><span class="line">128</span><br><span class="line">129</span><br><span class="line">130</span><br><span class="line">131</span><br><span class="line">132</span><br><span class="line">133</span><br><span class="line">134</span><br><span class="line">135</span><br><span class="line">136</span><br><span class="line">137</span><br><span class="line">138</span><br><span class="line">139</span><br><span class="line">140</span><br><span class="line">141</span><br><span class="line">142</span><br><span class="line">143</span><br><span class="line">144</span><br><span class="line">145</span><br><span class="line">146</span><br><span class="line">147</span><br><span class="line">148</span><br><span class="line">149</span><br><span class="line">150</span><br><span class="line">151</span><br><span class="line">152</span><br><span class="line">153</span><br><span class="line">154</span><br><span class="line">155</span><br><span class="line">156</span><br><span class="line">157</span><br><span class="line">158</span><br><span class="line">159</span><br><span class="line">160</span><br><span class="line">161</span><br><span class="line">162</span><br><span class="line">163</span><br><span class="line">164</span><br><span class="line">165</span><br><span class="line">166</span><br><span class="line">167</span><br><span class="line">168</span><br><span class="line">169</span><br><span class="line">170</span><br><span class="line">171</span><br><span class="line">172</span><br><span class="line">173</span><br><span class="line">174</span><br><span class="line">175</span><br><span class="line">176</span><br><span class="line">177</span><br><span class="line">178</span><br><span class="line">179</span><br><span class="line">180</span><br><span class="line">181</span><br><span class="line">182</span><br><span class="line">183</span><br><span class="line">184</span><br><span class="line">185</span><br><span class="line">186</span><br><span class="line">187</span><br><span class="line">188</span><br><span class="line">189</span><br><span class="line">190</span><br><span class="line">191</span><br><span class="line">192</span><br><span class="line">193</span><br><span class="line">194</span><br><span class="line">195</span><br><span class="line">196</span><br><span class="line">197</span><br><span class="line">198</span><br><span class="line">199</span><br><span class="line">200</span><br><span class="line">201</span><br><span class="line">202</span><br><span class="line">203</span><br><span class="line">204</span><br><span class="line">205</span><br><span class="line">206</span><br><span class="line">207</span><br><span class="line">208</span><br><span class="line">209</span><br><span class="line">210</span><br><span class="line">211</span><br><span class="line">212</span><br><span class="line">213</span><br><span class="line">214</span><br><span class="line">215</span><br><span class="line">216</span><br><span class="line">217</span><br><span class="line">218</span><br><span class="line">219</span><br><span class="line">220</span><br><span class="line">221</span><br><span class="line">222</span><br><span class="line">223</span><br><span class="line">224</span><br><span class="line">225</span><br><span class="line">226</span><br><span class="line">227</span><br><span class="line">228</span><br><span class="line">229</span><br><span class="line">230</span><br><span class="line">231</span><br><span class="line">232</span><br><span class="line">233</span><br><span class="line">234</span><br><span class="line">235</span><br><span class="line">236</span><br><span class="line">237</span><br><span class="line">238</span><br><span class="line">239</span><br><span class="line">240</span><br><span class="line">241</span><br><span class="line">242</span><br><span class="line">243</span><br><span class="line">244</span><br><span class="line">245</span><br><span class="line">246</span><br><span class="line">247</span><br><span class="line">248</span><br><span class="line">249</span><br><span class="line">250</span><br><span class="line">251</span><br><span class="line">252</span><br><span class="line">253</span><br><span class="line">254</span><br><span class="line">255</span><br><span class="line">256</span><br><span class="line">257</span><br><span class="line">258</span><br><span class="line">259</span><br><span class="line">260</span><br><span class="line">261</span><br><span class="line">262</span><br><span class="line">263</span><br><span class="line">264</span><br><span class="line">265</span><br><span class="line">266</span><br><span class="line">267</span><br><span class="line">268</span><br><span class="line">269</span><br><span class="line">270</span><br><span class="line">271</span><br><span class="line">272</span><br><span class="line">273</span><br><span class="line">274</span><br><span class="line">275</span><br><span class="line">276</span><br><span class="line">277</span><br><span class="line">278</span><br><span class="line">279</span><br><span class="line">280</span><br><span class="line">281</span><br><span class="line">282</span><br><span class="line">283</span><br><span class="line">284</span><br><span class="line">285</span><br><span class="line">286</span><br><span class="line">287</span><br><span class="line">288</span><br><span class="line">289</span><br><span class="line">290</span><br><span class="line">291</span><br><span class="line">292</span><br><span class="line">293</span><br><span class="line">294</span><br><span class="line">295</span><br><span class="line">296</span><br><span class="line">297</span><br><span class="line">298</span><br><span class="line">299</span><br><span class="line">300</span><br><span class="line">301</span><br><span class="line">302</span><br><span class="line">303</span><br><span class="line">304</span><br><span class="line">305</span><br><span class="line">306</span><br><span class="line">307</span><br><span class="line">308</span><br><span class="line">309</span><br><span class="line">310</span><br><span class="line">311</span><br><span class="line">312</span><br><span class="line">313</span><br><span class="line">314</span><br><span class="line">315</span><br><span class="line">316</span><br><span class="line">317</span><br><span class="line">318</span><br><span class="line">319</span><br><span class="line">320</span><br><span class="line">321</span><br><span class="line">322</span><br><span class="line">323</span><br><span class="line">324</span><br><span class="line">325</span><br><span class="line">326</span><br><span class="line">327</span><br><span class="line">328</span><br><span class="line">329</span><br><span class="line">330</span><br><span class="line">331</span><br><span class="line">332</span><br><span class="line">333</span><br><span class="line">334</span><br><span class="line">335</span><br><span class="line">336</span><br><span class="line">337</span><br><span class="line">338</span><br><span class="line">339</span><br><span class="line">340</span><br><span class="line">341</span><br><span class="line">342</span><br><span class="line">343</span><br><span class="line">344</span><br><span class="line">345</span><br><span class="line">346</span><br><span class="line">347</span><br><span class="line">348</span><br><span class="line">349</span><br><span class="line">350</span><br><span class="line">351</span><br><span class="line">352</span><br><span class="line">353</span><br><span class="line">354</span><br><span class="line">355</span><br><span class="line">356</span><br><span class="line">357</span><br><span class="line">358</span><br><span class="line">359</span><br><span class="line">360</span><br><span class="line">361</span><br><span class="line">362</span><br><span class="line">363</span><br><span class="line">364</span><br><span class="line">365</span><br><span class="line">366</span><br><span class="line">367</span><br><span class="line">368</span><br><span class="line">369</span><br><span class="line">370</span><br><span class="line">371</span><br><span class="line">372</span><br><span class="line">373</span><br><span class="line">374</span><br><span class="line">375</span><br><span class="line">376</span><br><span class="line">377</span><br><span class="line">378</span><br><span class="line">379</span><br><span class="line">380</span><br><span class="line">381</span><br><span class="line">382</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">&lt;!-- 灯笼样式开始 --&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">style</span>&gt;</span><span class="language-css"></span></span><br><span class="line"><span class="language-css"></span></span><br><span class="line"><span class="language-css">    <span class="keyword">@media</span> <span class="keyword">only</span> screen <span class="keyword">and</span> (<span class="attribute">max-width</span>: <span class="number">760px</span>) &#123;</span></span><br><span class="line"><span class="language-css">        <span class="selector-class">.deng-box</span>, <span class="selector-class">.deng-box1</span> &#123;</span></span><br><span class="line"><span class="language-css">            <span class="attribute">display</span>:none;</span></span><br><span class="line"><span class="language-css">        &#125;</span></span><br><span class="line"><span class="language-css">    &#125;</span></span><br><span class="line"><span class="language-css">    <span class="keyword">@media</span> <span class="keyword">only</span> screen <span class="keyword">and</span> (<span class="attribute">min-width</span>: <span class="number">768px</span>) <span class="keyword">and</span> (<span class="attribute">max-width</span>: <span class="number">1024px</span>) &#123;</span></span><br><span class="line"><span class="language-css">        <span class="selector-class">.right</span> &#123;</span></span><br><span class="line"><span class="language-css">            <span class="attribute">float</span>: left<span class="meta">!important</span>;</span></span><br><span class="line"><span class="language-css">        &#125;</span></span><br><span class="line"><span class="language-css">    &#125;</span></span><br><span class="line"><span class="language-css">    <span class="selector-class">.deng-box</span> &#123;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">position</span>: fixed;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">top</span>: <span class="number">20px</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">left</span>: <span class="number">10px</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">z-index</span>: <span class="number">3</span>;</span></span><br><span class="line"><span class="language-css">    &#125;</span></span><br><span class="line"><span class="language-css">    <span class="selector-class">.deng-box1</span> &#123;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">position</span>: fixed;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">top</span>: <span class="number">20px</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">right</span>: <span class="number">10px</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">z-index</span>: <span class="number">3</span>;</span></span><br><span class="line"><span class="language-css">    &#125;</span></span><br><span class="line"><span class="language-css">    <span class="selector-class">.deng-box1</span> <span class="selector-class">.deng</span> &#123;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">position</span>: relative;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">width</span>: <span class="number">120px</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">height</span>: <span class="number">90px</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">margin</span>: <span class="number">50px</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">background</span>: <span class="number">#d8000f</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">background</span>: <span class="built_in">rgba</span>(<span class="number">216</span>, <span class="number">0</span>, <span class="number">15</span>, <span class="number">0.8</span>);</span></span><br><span class="line"><span class="language-css">        <span class="attribute">border-radius</span>: <span class="number">50%</span> <span class="number">50%</span>;</span></span><br><span class="line"><span class="language-css">        -webkit-<span class="attribute">transform-origin</span>: <span class="number">50%</span> -<span class="number">100px</span>;</span></span><br><span class="line"><span class="language-css">        -webkit-<span class="attribute">animation</span>: swing <span class="number">5s</span> infinite ease-in-out;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">box-shadow</span>: -<span class="number">5px</span> <span class="number">5px</span> <span class="number">30px</span> <span class="number">4px</span> <span class="built_in">rgba</span>(<span class="number">252</span>, <span class="number">144</span>, <span class="number">61</span>, <span class="number">1</span>);</span></span><br><span class="line"><span class="language-css">    &#125;</span></span><br><span class="line"><span class="language-css">    <span class="selector-class">.deng</span> &#123;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">position</span>: relative;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">width</span>: <span class="number">120px</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">height</span>: <span class="number">90px</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">margin</span>: <span class="number">50px</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">background</span>: <span class="number">#d8000f</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">background</span>: <span class="built_in">rgba</span>(<span class="number">216</span>, <span class="number">0</span>, <span class="number">15</span>, <span class="number">0.8</span>);</span></span><br><span class="line"><span class="language-css">        <span class="attribute">border-radius</span>: <span class="number">50%</span> <span class="number">50%</span>;</span></span><br><span class="line"><span class="language-css">        -webkit-<span class="attribute">transform-origin</span>: <span class="number">50%</span> -<span class="number">100px</span>;</span></span><br><span class="line"><span class="language-css">        -webkit-<span class="attribute">animation</span>: swing <span class="number">3s</span> infinite ease-in-out;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">box-shadow</span>: -<span class="number">5px</span> <span class="number">5px</span> <span class="number">50px</span> <span class="number">4px</span> <span class="built_in">rgba</span>(<span class="number">250</span>, <span class="number">108</span>, <span class="number">0</span>, <span class="number">1</span>);</span></span><br><span class="line"><span class="language-css">    &#125;</span></span><br><span class="line"><span class="language-css">    <span class="selector-class">.deng-a</span> &#123;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">width</span>: <span class="number">100px</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">height</span>: <span class="number">90px</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">background</span>: <span class="number">#d8000f</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">background</span>: <span class="built_in">rgba</span>(<span class="number">216</span>, <span class="number">0</span>, <span class="number">15</span>, <span class="number">0.1</span>);</span></span><br><span class="line"><span class="language-css">        <span class="attribute">margin</span>: <span class="number">12px</span> <span class="number">8px</span> <span class="number">8px</span> <span class="number">10px</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">border-radius</span>: <span class="number">50%</span> <span class="number">50%</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">border</span>: <span class="number">2px</span> solid <span class="number">#dc8f03</span>;</span></span><br><span class="line"><span class="language-css">    &#125;</span></span><br><span class="line"><span class="language-css">    <span class="selector-class">.deng-b</span> &#123;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">width</span>: <span class="number">45px</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">height</span>: <span class="number">90px</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">background</span>: <span class="number">#d8000f</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">background</span>: <span class="built_in">rgba</span>(<span class="number">216</span>, <span class="number">0</span>, <span class="number">15</span>, <span class="number">0.1</span>);</span></span><br><span class="line"><span class="language-css">        <span class="attribute">margin</span>: -<span class="number">4px</span> <span class="number">8px</span> <span class="number">8px</span> <span class="number">26px</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">border-radius</span>: <span class="number">50%</span> <span class="number">50%</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">border</span>: <span class="number">2px</span> solid <span class="number">#dc8f03</span>;</span></span><br><span class="line"><span class="language-css">    &#125;</span></span><br><span class="line"><span class="language-css">    <span class="selector-class">.xian</span> &#123;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">position</span>: absolute;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">top</span>: -<span class="number">20px</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">left</span>: <span class="number">60px</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">width</span>: <span class="number">2px</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">height</span>: <span class="number">20px</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">background</span>: <span class="number">#dc8f03</span>;</span></span><br><span class="line"><span class="language-css">    &#125;</span></span><br><span class="line"><span class="language-css">    <span class="selector-class">.shui-a</span> &#123;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">position</span>: relative;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">width</span>: <span class="number">5px</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">height</span>: <span class="number">20px</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">margin</span>: -<span class="number">5px</span> <span class="number">0</span> <span class="number">0</span> <span class="number">59px</span>;</span></span><br><span class="line"><span class="language-css">        -webkit-<span class="attribute">animation</span>: swing <span class="number">4s</span> infinite ease-in-out;</span></span><br><span class="line"><span class="language-css">        -webkit-<span class="attribute">transform-origin</span>: <span class="number">50%</span> -<span class="number">45px</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">background</span>: <span class="number">#ffa500</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">border-radius</span>: <span class="number">0</span> <span class="number">0</span> <span class="number">5px</span> <span class="number">5px</span>;</span></span><br><span class="line"><span class="language-css">    &#125;</span></span><br><span class="line"><span class="language-css">    <span class="selector-class">.shui-b</span> &#123;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">position</span>: absolute;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">top</span>: <span class="number">14px</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">left</span>: -<span class="number">2px</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">width</span>: <span class="number">10px</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">height</span>: <span class="number">10px</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">background</span>: <span class="number">#dc8f03</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">border-radius</span>: <span class="number">50%</span>;</span></span><br><span class="line"><span class="language-css">    &#125;</span></span><br><span class="line"><span class="language-css">    <span class="selector-class">.shui-c</span> &#123;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">position</span>: absolute;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">top</span>: <span class="number">18px</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">left</span>: -<span class="number">2px</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">width</span>: <span class="number">10px</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">height</span>: <span class="number">35px</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">background</span>: <span class="number">#ffa500</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">border-radius</span>: <span class="number">0</span> <span class="number">0</span> <span class="number">0</span> <span class="number">5px</span>;</span></span><br><span class="line"><span class="language-css">    &#125;</span></span><br><span class="line"><span class="language-css">    <span class="selector-class">.deng</span><span class="selector-pseudo">:before</span> &#123;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">position</span>: absolute;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">top</span>: -<span class="number">7px</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">left</span>: <span class="number">29px</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">height</span>: <span class="number">12px</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">width</span>: <span class="number">60px</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">content</span>: <span class="string">&quot; &quot;</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">display</span>: block;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">z-index</span>: <span class="number">999</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">border-radius</span>: <span class="number">5px</span> <span class="number">5px</span> <span class="number">0</span> <span class="number">0</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">border</span>: solid <span class="number">1px</span> <span class="number">#dc8f03</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">background</span>: <span class="number">#ffa500</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">background</span>: <span class="built_in">linear-gradient</span>(to right, <span class="number">#dc8f03</span>, <span class="number">#ffa500</span>, <span class="number">#dc8f03</span>, <span class="number">#ffa500</span>, <span class="number">#dc8f03</span>);</span></span><br><span class="line"><span class="language-css">    &#125;</span></span><br><span class="line"><span class="language-css">    <span class="selector-class">.deng</span><span class="selector-pseudo">:after</span> &#123;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">position</span>: absolute;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">bottom</span>: -<span class="number">7px</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">left</span>: <span class="number">10px</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">height</span>: <span class="number">12px</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">width</span>: <span class="number">60px</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">content</span>: <span class="string">&quot; &quot;</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">display</span>: block;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">margin-left</span>: <span class="number">20px</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">border-radius</span>: <span class="number">0</span> <span class="number">0</span> <span class="number">5px</span> <span class="number">5px</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">border</span>: solid <span class="number">1px</span> <span class="number">#dc8f03</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">background</span>: <span class="number">#ffa500</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">background</span>: <span class="built_in">linear-gradient</span>(to right, <span class="number">#dc8f03</span>, <span class="number">#ffa500</span>, <span class="number">#dc8f03</span>, <span class="number">#ffa500</span>, <span class="number">#dc8f03</span>);</span></span><br><span class="line"><span class="language-css">    &#125;</span></span><br><span class="line"><span class="language-css">    <span class="selector-class">.deng-t</span> &#123;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">font-family</span>: 华文行楷;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">font-size</span>: <span class="number">26px</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">color</span>: <span class="number">#dc8f03</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">font-weight</span>: bold;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">line-height</span>: <span class="number">44px</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">text-align</span>: center;</span></span><br><span class="line"><span class="language-css">    &#125;</span></span><br><span class="line"><span class="language-css">    <span class="selector-class">.night</span> <span class="selector-class">.deng-t</span>,</span></span><br><span class="line"><span class="language-css">    <span class="selector-class">.night</span> <span class="selector-class">.deng-box</span>,</span></span><br><span class="line"><span class="language-css">    <span class="selector-class">.night</span> <span class="selector-class">.deng-box1</span> &#123;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">background</span>: transparent <span class="meta">!important</span>;</span></span><br><span class="line"><span class="language-css">    &#125;</span></span><br><span class="line"><span class="language-css">    <span class="keyword">@-moz-keyframes</span> swing &#123;</span></span><br><span class="line"><span class="language-css">        <span class="number">0%</span> &#123;</span></span><br><span class="line"><span class="language-css">                -moz-<span class="attribute">transform</span>: <span class="built_in">rotate</span>(-<span class="number">10deg</span>)</span></span><br><span class="line"><span class="language-css">        &#125;</span></span><br><span class="line"><span class="language-css">        <span class="number">50%</span> &#123;</span></span><br><span class="line"><span class="language-css">            -moz-<span class="attribute">transform</span>: <span class="built_in">rotate</span>(<span class="number">10deg</span>)</span></span><br><span class="line"><span class="language-css">        &#125;</span></span><br><span class="line"><span class="language-css">        <span class="number">100%</span> &#123;</span></span><br><span class="line"><span class="language-css">                -moz-<span class="attribute">transform</span>: <span class="built_in">rotate</span>(-<span class="number">10deg</span>)</span></span><br><span class="line"><span class="language-css">        &#125;</span></span><br><span class="line"><span class="language-css">    &#125;</span></span><br><span class="line"><span class="language-css">    <span class="keyword">@-webkit-keyframes</span> swing &#123;</span></span><br><span class="line"><span class="language-css">        <span class="number">0%</span> &#123;</span></span><br><span class="line"><span class="language-css">                -webkit-<span class="attribute">transform</span>: <span class="built_in">rotate</span>(-<span class="number">10deg</span>)</span></span><br><span class="line"><span class="language-css">        &#125;</span></span><br><span class="line"><span class="language-css">        <span class="number">50%</span> &#123;</span></span><br><span class="line"><span class="language-css">                -webkit-<span class="attribute">transform</span>: <span class="built_in">rotate</span>(<span class="number">10deg</span>)</span></span><br><span class="line"><span class="language-css">        &#125;</span></span><br><span class="line"><span class="language-css">        <span class="number">100%</span> &#123;</span></span><br><span class="line"><span class="language-css">                -webkit-<span class="attribute">transform</span>: <span class="built_in">rotate</span>(-<span class="number">10deg</span>)</span></span><br><span class="line"><span class="language-css">        &#125;</span></span><br><span class="line"><span class="language-css">    &#125;</span></span><br><span class="line"><span class="language-css">    </span><span class="tag">&lt;/<span class="name">style</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;deng-box&quot;</span>&gt;</span></span><br><span class="line">        <span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;deng&quot;</span>&gt;</span></span><br><span class="line">            <span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;xian&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line">            <span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;deng-a&quot;</span>&gt;</span></span><br><span class="line">                <span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;deng-b&quot;</span>&gt;</span><span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;deng-t&quot;</span>&gt;</span>喜迎<span class="tag">&lt;/<span class="name">div</span>&gt;</span><span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line">            <span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line">            <span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;shui shui-a&quot;</span>&gt;</span><span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;shui-c&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">div</span>&gt;</span><span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;shui-b&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">div</span>&gt;</span><span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line">        <span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;deng-box1&quot;</span>&gt;</span></span><br><span class="line">        <span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;deng&quot;</span>&gt;</span></span><br><span class="line">            <span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;xian&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line">            <span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;deng-a&quot;</span>&gt;</span></span><br><span class="line">                <span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;deng-b&quot;</span>&gt;</span><span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;deng-t&quot;</span>&gt;</span>新春<span class="tag">&lt;/<span class="name">div</span>&gt;</span><span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line">            <span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line">            <span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;shui shui-a&quot;</span>&gt;</span><span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;shui-c&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">div</span>&gt;</span><span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;shui-b&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">div</span>&gt;</span><span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line">        <span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line"><span class="comment">&lt;!-- 灯笼样式结束 --&gt;</span></span><br><span class="line"><span class="comment">&lt;!--春节代码 开始--&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;meiha&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">style</span>&gt;</span><span class="language-css"></span></span><br><span class="line"><span class="language-css"><span class="comment">/** 梅花树 **/</span></span></span><br><span class="line"><span class="language-css"><span class="selector-class">.meiha</span> &#123;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">position</span>: fixed;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">top</span>: <span class="number">0</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">right</span>: <span class="number">0</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">z-index</span>: <span class="number">999</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">width</span>: <span class="number">350px</span>;<span class="comment">/** PNG图宽度 **/</span></span></span><br><span class="line"><span class="language-css">        <span class="attribute">height</span>: <span class="number">231px</span>;<span class="comment">/** PNG图高度 **/</span></span></span><br><span class="line"><span class="language-css">        <span class="attribute">pointer-events</span>: none;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">background</span>: <span class="built_in">url</span>(<span class="string">&#x27;https://pic.rmb.bdstatic.com/bjh/6553c65e7a8431f0fcb0e084ffe95151.png&#x27;</span>);</span></span><br><span class="line"><span class="language-css">&#125;</span></span><br><span class="line"><span class="language-css"></span><span class="tag">&lt;/<span class="name">style</span>&gt;</span></span><br><span class="line"><span class="comment">&lt;!-- 灯笼1 --&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;dede-box&quot;</span>&gt;</span></span><br><span class="line">        <span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;dede&quot;</span>&gt;</span></span><br><span class="line">                <span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;xia&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line">                <span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;dede-a&quot;</span>&gt;</span></span><br><span class="line">                        <span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;dede-b&quot;</span>&gt;</span><span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;dede-t&quot;</span>&gt;</span>节<span class="tag">&lt;/<span class="name">div</span>&gt;</span><span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line">                <span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line">                <span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;shuu shuu-a&quot;</span>&gt;</span><span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;shuu-c&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">div</span>&gt;</span><span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;shuu-b&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">div</span>&gt;</span><span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line">        <span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line"></span><br><span class="line"><span class="comment">&lt;!-- 灯笼2 --&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;dede-box1&quot;</span>&gt;</span></span><br><span class="line">        <span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;dede&quot;</span>&gt;</span></span><br><span class="line">                <span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;xia&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line">                <span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;dede-a&quot;</span>&gt;</span></span><br><span class="line">                        <span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;dede-b&quot;</span>&gt;</span><span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;dede-t&quot;</span>&gt;</span>春<span class="tag">&lt;/<span class="name">div</span>&gt;</span><span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line">                <span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line">                <span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;shuu shuu-a&quot;</span>&gt;</span><span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;shuu-c&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">div</span>&gt;</span><span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;shuu-b&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">div</span>&gt;</span><span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line">        <span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">style</span>&gt;</span><span class="language-css"></span></span><br><span class="line"><span class="language-css"><span class="selector-class">.dede-box</span> &#123;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">position</span>: fixed;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">top</span>: <span class="number">117px</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">right</span>: -<span class="number">20px</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">z-index</span>: <span class="number">9999</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">pointer-events</span>: none;</span></span><br><span class="line"><span class="language-css">&#125;</span></span><br><span class="line"><span class="language-css"></span></span><br><span class="line"><span class="language-css"><span class="selector-class">.dede-box1</span> &#123;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">position</span>: fixed;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">top</span>: <span class="number">131px</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">right</span>: <span class="number">138px</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">z-index</span>: <span class="number">9999</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">pointer-events</span>: none;</span></span><br><span class="line"><span class="language-css">&#125;</span></span><br><span class="line"><span class="language-css"><span class="selector-class">.dede-box1</span> <span class="selector-class">.dede</span> &#123;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">position</span>: relative;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">width</span>: <span class="number">120px</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">height</span>: <span class="number">90px</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">margin</span>: <span class="number">50px</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">background</span>: <span class="number">#d8000f</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">background</span>: <span class="built_in">rgba</span>(<span class="number">216</span>, <span class="number">0</span>, <span class="number">15</span>, <span class="number">0.8</span>);</span></span><br><span class="line"><span class="language-css">        <span class="attribute">border-radius</span>: <span class="number">50%</span> <span class="number">50%</span>;</span></span><br><span class="line"><span class="language-css">        -webkit-<span class="attribute">transform-origin</span>: <span class="number">50%</span> -<span class="number">100px</span>;</span></span><br><span class="line"><span class="language-css">        -webkit-<span class="attribute">animation</span>: swing <span class="number">5s</span> infinite ease-in-out;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">box-shadow</span>: -<span class="number">5px</span> <span class="number">5px</span> <span class="number">30px</span> <span class="number">4px</span> <span class="built_in">rgba</span>(<span class="number">252</span>, <span class="number">144</span>, <span class="number">61</span>, <span class="number">1</span>);</span></span><br><span class="line"><span class="language-css">&#125;</span></span><br><span class="line"><span class="language-css"><span class="selector-class">.dede</span> &#123;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">position</span>: relative;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">width</span>: <span class="number">120px</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">height</span>: <span class="number">90px</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">margin</span>: <span class="number">50px</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">background</span>: <span class="number">#d8000f</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">background</span>: <span class="built_in">rgba</span>(<span class="number">216</span>, <span class="number">0</span>, <span class="number">15</span>, <span class="number">0.8</span>);</span></span><br><span class="line"><span class="language-css">        <span class="attribute">border-radius</span>: <span class="number">50%</span> <span class="number">50%</span>;</span></span><br><span class="line"><span class="language-css">        -webkit-<span class="attribute">transform-origin</span>: <span class="number">50%</span> -<span class="number">100px</span>;</span></span><br><span class="line"><span class="language-css">        -webkit-<span class="attribute">animation</span>: swing <span class="number">3s</span> infinite ease-in-out;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">box-shadow</span>: -<span class="number">5px</span> <span class="number">5px</span> <span class="number">50px</span> <span class="number">4px</span> <span class="built_in">rgba</span>(<span class="number">250</span>, <span class="number">108</span>, <span class="number">0</span>, <span class="number">1</span>);</span></span><br><span class="line"><span class="language-css">&#125;</span></span><br><span class="line"><span class="language-css"><span class="selector-class">.dede-a</span> &#123;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">width</span>: <span class="number">100px</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">height</span>: <span class="number">90px</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">background</span>: <span class="number">#d8000f</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">background</span>: <span class="built_in">rgba</span>(<span class="number">216</span>, <span class="number">0</span>, <span class="number">15</span>, <span class="number">0.1</span>);</span></span><br><span class="line"><span class="language-css">        <span class="attribute">margin</span>: <span class="number">12px</span> <span class="number">8px</span> <span class="number">8px</span> <span class="number">10px</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">border-radius</span>: <span class="number">50%</span> <span class="number">50%</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">border</span>: <span class="number">2px</span> solid <span class="number">#dc8f03</span>;</span></span><br><span class="line"><span class="language-css">&#125;</span></span><br><span class="line"><span class="language-css"><span class="selector-class">.dede-b</span> &#123;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">width</span>: <span class="number">45px</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">height</span>: <span class="number">90px</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">background</span>: <span class="number">#d8000f</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">background</span>: <span class="built_in">rgba</span>(<span class="number">216</span>, <span class="number">0</span>, <span class="number">15</span>, <span class="number">0.1</span>);</span></span><br><span class="line"><span class="language-css">        <span class="attribute">margin</span>: -<span class="number">2px</span> <span class="number">8px</span> <span class="number">8px</span> <span class="number">26px</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">border-radius</span>: <span class="number">50%</span> <span class="number">50%</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">border</span>: <span class="number">2px</span> solid <span class="number">#dc8f03</span>;</span></span><br><span class="line"><span class="language-css">&#125;</span></span><br><span class="line"><span class="language-css"><span class="selector-class">.xia</span> &#123;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">position</span>: absolute;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">top</span>: -<span class="number">20px</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">left</span>: <span class="number">60px</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">width</span>: <span class="number">2px</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">height</span>: <span class="number">20px</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">background</span>: <span class="number">#dc8f03</span>;</span></span><br><span class="line"><span class="language-css">&#125;</span></span><br><span class="line"><span class="language-css"><span class="selector-class">.shuu-a</span> &#123;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">position</span>: relative;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">width</span>: <span class="number">5px</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">height</span>: <span class="number">20px</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">margin</span>: -<span class="number">5px</span> <span class="number">0</span> <span class="number">0</span> <span class="number">59px</span>;</span></span><br><span class="line"><span class="language-css">        -webkit-<span class="attribute">animation</span>: swing <span class="number">4s</span> infinite ease-in-out;</span></span><br><span class="line"><span class="language-css">        -webkit-<span class="attribute">transform-origin</span>: <span class="number">50%</span> -<span class="number">45px</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">background</span>: <span class="number">#ffa500</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">border-radius</span>: <span class="number">0</span> <span class="number">0</span> <span class="number">5px</span> <span class="number">5px</span>;</span></span><br><span class="line"><span class="language-css">&#125;</span></span><br><span class="line"><span class="language-css"><span class="selector-class">.shuu-b</span> &#123;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">position</span>: absolute;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">top</span>: <span class="number">14px</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">left</span>: -<span class="number">2px</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">width</span>: <span class="number">10px</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">height</span>: <span class="number">10px</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">background</span>: <span class="number">#dc8f03</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">border-radius</span>: <span class="number">50%</span>;</span></span><br><span class="line"><span class="language-css">&#125;</span></span><br><span class="line"><span class="language-css"><span class="selector-class">.shuu-c</span> &#123;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">position</span>: absolute;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">top</span>: <span class="number">18px</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">left</span>: -<span class="number">2px</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">width</span>: <span class="number">10px</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">height</span>: <span class="number">35px</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">background</span>: <span class="number">#ffa500</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">border-radius</span>: <span class="number">0</span> <span class="number">0</span> <span class="number">0</span> <span class="number">5px</span>;</span></span><br><span class="line"><span class="language-css">&#125;</span></span><br><span class="line"><span class="language-css"><span class="selector-class">.dede</span><span class="selector-pseudo">:before</span> &#123;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">position</span>: absolute;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">top</span>: -<span class="number">7px</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">left</span>: <span class="number">29px</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">height</span>: <span class="number">12px</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">width</span>: <span class="number">60px</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">content</span>: <span class="string">&quot; &quot;</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">display</span>: block;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">z-index</span>: <span class="number">999</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">border-radius</span>: <span class="number">5px</span> <span class="number">5px</span> <span class="number">0</span> <span class="number">0</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">border</span>: solid <span class="number">1px</span> <span class="number">#dc8f03</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">background</span>: <span class="number">#ffa500</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">background</span>: <span class="built_in">linear-gradient</span>(to right, <span class="number">#dc8f03</span>, <span class="number">#ffa500</span>, <span class="number">#dc8f03</span>, <span class="number">#ffa500</span>, <span class="number">#dc8f03</span>);</span></span><br><span class="line"><span class="language-css">&#125;</span></span><br><span class="line"><span class="language-css"><span class="selector-class">.dede</span><span class="selector-pseudo">:after</span> &#123;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">position</span>: absolute;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">bottom</span>: -<span class="number">7px</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">left</span>: <span class="number">10px</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">height</span>: <span class="number">12px</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">width</span>: <span class="number">60px</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">content</span>: <span class="string">&quot; &quot;</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">display</span>: block;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">margin-left</span>: <span class="number">20px</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">border-radius</span>: <span class="number">0</span> <span class="number">0</span> <span class="number">5px</span> <span class="number">5px</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">border</span>: solid <span class="number">1px</span> <span class="number">#dc8f03</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">background</span>: <span class="number">#ffa500</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">background</span>: <span class="built_in">linear-gradient</span>(to right, <span class="number">#dc8f03</span>, <span class="number">#ffa500</span>, <span class="number">#dc8f03</span>, <span class="number">#ffa500</span>, <span class="number">#dc8f03</span>);</span></span><br><span class="line"><span class="language-css">&#125;</span></span><br><span class="line"><span class="language-css"><span class="selector-class">.dede-t</span> &#123;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">font-family</span>: 华文行楷,Arial,Lucida Grande,Tahoma,sans-serif;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">font-size</span>: <span class="number">3.2rem</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">color</span>: <span class="number">#dc8f03</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">font-weight</span>: bold;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">line-height</span>: <span class="number">85px</span>;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">text-align</span>: center;</span></span><br><span class="line"><span class="language-css">&#125;</span></span><br><span class="line"><span class="language-css"><span class="selector-class">.night</span> <span class="selector-class">.dede-t</span>,</span></span><br><span class="line"><span class="language-css"><span class="selector-class">.night</span> <span class="selector-class">.dede-box</span>,</span></span><br><span class="line"><span class="language-css"><span class="selector-class">.night</span> <span class="selector-class">.dede-box1</span> &#123;</span></span><br><span class="line"><span class="language-css">        <span class="attribute">background</span>: transparent <span class="meta">!important</span>;</span></span><br><span class="line"><span class="language-css">&#125;</span></span><br><span class="line"><span class="language-css"><span class="keyword">@-moz-keyframes</span> swing &#123;</span></span><br><span class="line"><span class="language-css">        <span class="number">0%</span> &#123;</span></span><br><span class="line"><span class="language-css">                -moz-<span class="attribute">transform</span>: <span class="built_in">rotate</span>(-<span class="number">10deg</span>)</span></span><br><span class="line"><span class="language-css">        &#125;</span></span><br><span class="line"><span class="language-css">        <span class="number">50%</span> &#123;</span></span><br><span class="line"><span class="language-css">                -moz-<span class="attribute">transform</span>: <span class="built_in">rotate</span>(<span class="number">10deg</span>)</span></span><br><span class="line"><span class="language-css">        &#125;</span></span><br><span class="line"><span class="language-css"></span></span><br><span class="line"><span class="language-css">        <span class="number">100%</span> &#123;</span></span><br><span class="line"><span class="language-css">                -moz-<span class="attribute">transform</span>: <span class="built_in">rotate</span>(-<span class="number">10deg</span>)</span></span><br><span class="line"><span class="language-css">        &#125;</span></span><br><span class="line"><span class="language-css">&#125;</span></span><br><span class="line"><span class="language-css"><span class="keyword">@-webkit-keyframes</span> swing &#123;</span></span><br><span class="line"><span class="language-css">        <span class="number">0%</span> &#123;</span></span><br><span class="line"><span class="language-css">                -webkit-<span class="attribute">transform</span>: <span class="built_in">rotate</span>(-<span class="number">10deg</span>)</span></span><br><span class="line"><span class="language-css">        &#125;</span></span><br><span class="line"><span class="language-css">        <span class="number">50%</span> &#123;</span></span><br><span class="line"><span class="language-css">                -webkit-<span class="attribute">transform</span>: <span class="built_in">rotate</span>(<span class="number">10deg</span>)</span></span><br><span class="line"><span class="language-css">        &#125;</span></span><br><span class="line"><span class="language-css">        <span class="number">100%</span> &#123;</span></span><br><span class="line"><span class="language-css">                -webkit-<span class="attribute">transform</span>: <span class="built_in">rotate</span>(-<span class="number">10deg</span>)</span></span><br><span class="line"><span class="language-css">        &#125;</span></span><br><span class="line"><span class="language-css">&#125;</span></span><br><span class="line"><span class="language-css"></span><span class="tag">&lt;/<span class="name">style</span>&gt;</span></span><br><span class="line"><span class="comment">&lt;!--春节代码 结束--&gt;</span></span><br></pre></td></tr></table></figure><ul><li>执行<code>hexo clean</code> &amp; <code>hexo g</code> &amp; <code>hexo s</code>预览。没问题 <code>hexo d</code>部署。</li></ul><blockquote><p>代码转自：<span class="exturl" data-url="aHR0cHM6Ly93d3cucm9haW5nLmNvbS9jamRsLmh0bWw=" title="春节灯笼代码">Roaing’s Blog<i class="fa fa-external-link-alt"></i></span></p></blockquote>]]></content>
    
    
    <summary type="html">&lt;blockquote&gt;
&lt;p&gt;开启自定义footer.njk配置&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;主题配置文件&lt;code&gt;_config.yml&lt;/code&gt;找到&lt;code&gt;footer: source/_data/footer.njk&lt;/code&gt;取消注释。&lt;/li&gt;
&lt;li&gt;在博客根目录&lt;code&gt;blog\source\_data&lt;/code&gt; 新建&lt;code&gt;footer.njk&lt;/code&gt;文件。&lt;/li&gt;
&lt;li&gt;写下以下代码。&lt;/li&gt;
&lt;/ul&gt;</summary>
    
    
    
    <category term="资源分享" scheme="http://blog.ynxiu.com/categories/share/"/>
    
    
    <category term="春节" scheme="http://blog.ynxiu.com/tags/%E6%98%A5%E8%8A%82/"/>
    
    <category term="灯笼" scheme="http://blog.ynxiu.com/tags/%E7%81%AF%E7%AC%BC/"/>
    
  </entry>
  
  <entry>
    <title>鼠标选取文字自动提示版权信息</title>
    <link href="http://blog.ynxiu.com/aixiu/8167f53d.html"/>
    <id>http://blog.ynxiu.com/aixiu/8167f53d.html</id>
    <published>2020-12-18T17:20:22.000Z</published>
    <updated>2020-12-18T17:20:22.000Z</updated>
    
    <content type="html"><![CDATA[<div class="note warning no-icon"><p>本站使用 NexT 主题，本文适用于使用NJK模板的主题<br><font style="font-size:13px">其它模板引擎，请相应修改，没试验过仅供参考</font></p></div><h1 id="步骤如下："><a href="#步骤如下：" class="headerlink" title="步骤如下："></a>步骤如下：</h1><h2 id="建立必要文件"><a href="#建立必要文件" class="headerlink" title="建立必要文件"></a>建立必要文件</h2><p>首先在<code>Hexo\themes\next\layout\_third-party</code>目录下新建<code>selectionCopyright.swig</code>文件</p><span id="more"></span><p>然后在文件里依次添加如下代码：</p><p>css：</p><figure class="highlight css"><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></pre></td><td class="code"><pre><span class="line">&lt;style&gt;</span><br><span class="line"><span class="selector-id">#selectionCopyright</span> &#123;</span><br><span class="line">    <span class="attribute">position</span>: absolute;</span><br><span class="line">    <span class="attribute">display</span>: none;</span><br><span class="line">    <span class="attribute">background</span>: <span class="built_in">rgba</span>(<span class="number">244</span>,<span class="number">67</span>,<span class="number">54</span>,.<span class="number">7</span>);</span><br><span class="line">    <span class="attribute">color</span>: <span class="number">#fff</span>;</span><br><span class="line">    <span class="attribute">border-radius</span>: <span class="number">6px</span>;</span><br><span class="line">    <span class="attribute">box-shadow</span>: none;</span><br><span class="line">    <span class="attribute">border</span>: none;</span><br><span class="line">    <span class="attribute">font-size</span>: <span class="number">14px</span>;</span><br><span class="line">&#125;</span><br><span class="line"><span class="selector-id">#selectionCopyright</span> <span class="selector-tag">a</span>&#123;</span><br><span class="line">    <span class="attribute">color</span>:<span class="number">#fff</span>;</span><br><span class="line">    <span class="attribute">border-color</span>: <span class="number">#fff</span>;</span><br><span class="line">&#125;</span><br><span class="line"><span class="selector-id">#selectionCopyright</span><span class="selector-pseudo">::before</span> &#123;</span><br><span class="line">    <span class="attribute">content</span>: <span class="string">&quot;&quot;</span>;</span><br><span class="line">    <span class="attribute">width</span>: <span class="number">0</span>;</span><br><span class="line">    <span class="attribute">height</span>: <span class="number">0</span>;</span><br><span class="line">    <span class="attribute">border-style</span>: solid;</span><br><span class="line">    <span class="attribute">border-width</span>: <span class="number">6px</span> <span class="number">8px</span> <span class="number">6px</span> <span class="number">0</span>;</span><br><span class="line">    <span class="attribute">border-color</span>: transparent <span class="built_in">rgba</span>(<span class="number">244</span>,<span class="number">67</span>,<span class="number">54</span>,.<span class="number">7</span>) transparent transparent;</span><br><span class="line">    <span class="attribute">position</span>: absolute;</span><br><span class="line">    <span class="attribute">left</span>: -<span class="number">8px</span>;</span><br><span class="line">    <span class="attribute">top</span>:<span class="number">50%</span>;</span><br><span class="line">    <span class="attribute">transform</span>:<span class="built_in">translateY</span>(-<span class="number">50%</span>);</span><br><span class="line">&#125;</span><br><span class="line">&lt;/style&gt;</span><br></pre></td></tr></table></figure><p>Html:</p><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">button</span> <span class="attr">id</span>=<span class="string">&quot;selectionCopyright&quot;</span> <span class="attr">disabled</span>=<span class="string">&quot;disabled&quot;</span>&gt;</span>本文发表于[<span class="tag">&lt;<span class="name">a</span> <span class="attr">href</span>=<span class="string">&quot;http://XXXX.com/&quot;</span>&gt;</span>XXXX.com<span class="tag">&lt;/<span class="name">a</span>&gt;</span>]分享请注明来源！<span class="tag">&lt;/<span class="name">button</span>&gt;</span></span><br></pre></td></tr></table></figure><p>javascript：</p><figure class="highlight javascript"><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><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br></pre></td><td class="code"><pre><span class="line">&lt;script&gt;</span><br><span class="line"><span class="variable language_">window</span>.<span class="property">onload</span> = <span class="keyword">function</span>(<span class="params"></span>) &#123;</span><br><span class="line">    <span class="keyword">function</span> <span class="title function_">selectText</span>(<span class="params"></span>) &#123;</span><br><span class="line">        <span class="keyword">if</span> (<span class="variable language_">document</span>.<span class="property">selection</span>) &#123; <span class="comment">//IE浏览器下</span></span><br><span class="line">            <span class="keyword">return</span> <span class="variable language_">document</span>.<span class="property">selection</span>.<span class="title function_">createRange</span>().<span class="property">text</span>; <span class="comment">//返回选中的文字</span></span><br><span class="line">        &#125; <span class="keyword">else</span> &#123; <span class="comment">//非IE浏览器下</span></span><br><span class="line">            <span class="keyword">return</span> <span class="variable language_">window</span>.<span class="title function_">getSelection</span>().<span class="title function_">toString</span>(); <span class="comment">//返回选中的文字</span></span><br><span class="line">        &#125;</span><br><span class="line">    &#125;</span><br><span class="line">    <span class="keyword">var</span> content = <span class="variable language_">document</span>.<span class="title function_">getElementsByTagName</span>(<span class="string">&quot;body&quot;</span>)[<span class="number">0</span>];</span><br><span class="line">    <span class="keyword">var</span> scTip = <span class="variable language_">document</span>.<span class="title function_">getElementById</span>(<span class="string">&#x27;selectionCopyright&#x27;</span>);</span><br><span class="line"></span><br><span class="line">    content.<span class="property">onmouseup</span> = <span class="keyword">function</span>(<span class="params">ev</span>) &#123; <span class="comment">//设定一个onmouseup事件</span></span><br><span class="line">        <span class="keyword">var</span> ev = ev || <span class="variable language_">window</span>.<span class="property">event</span>;</span><br><span class="line">        <span class="keyword">var</span> left = ev.<span class="property">clientX</span>;<span class="comment">//获取鼠标相对浏览器可视区域左上角水平距离距离</span></span><br><span class="line">        <span class="keyword">var</span> top = ev.<span class="property">clientY</span>;<span class="comment">//获取鼠标相对浏览器可视区域左上角垂直距离距离</span></span><br><span class="line">        <span class="keyword">var</span> xScroll = <span class="title class_">Math</span>.<span class="title function_">max</span>(<span class="variable language_">document</span>.<span class="property">body</span>.<span class="property">scrollLeft</span>, <span class="variable language_">document</span>.<span class="property">documentElement</span>.<span class="property">scrollLeft</span>);<span class="comment">//获取文档水平滚动距离</span></span><br><span class="line">        <span class="keyword">var</span> yScroll = <span class="title class_">Math</span>.<span class="title function_">max</span>(<span class="variable language_">document</span>.<span class="property">body</span>.<span class="property">scrollTop</span>, <span class="variable language_">document</span>.<span class="property">documentElement</span>.<span class="property">scrollTop</span>);<span class="comment">//获取文档垂直滚动距离</span></span><br><span class="line">        <span class="keyword">if</span> (<span class="title function_">selectText</span>().<span class="property">length</span> &gt; <span class="number">0</span>) &#123;</span><br><span class="line">            <span class="built_in">setTimeout</span>(<span class="keyword">function</span>(<span class="params"></span>) &#123; <span class="comment">//设定一个定时器</span></span><br><span class="line">                scTip.<span class="property">style</span>.<span class="property">display</span> = <span class="string">&#x27;inline-block&#x27;</span>;</span><br><span class="line">                scTip.<span class="property">style</span>.<span class="property">left</span> = left + xScroll + <span class="number">15</span> + <span class="string">&#x27;px&#x27;</span>;<span class="comment">//鼠标当前x值</span></span><br><span class="line">                scTip.<span class="property">style</span>.<span class="property">top</span> = top + yScroll - <span class="number">15</span> + <span class="string">&#x27;px&#x27;</span>;<span class="comment">//鼠标当前y值</span></span><br><span class="line">            &#125;, <span class="number">100</span>);</span><br><span class="line">        &#125; <span class="keyword">else</span> &#123;</span><br><span class="line">            scTip.<span class="property">style</span>.<span class="property">display</span> = <span class="string">&#x27;none&#x27;</span>;</span><br><span class="line">        &#125;</span><br><span class="line">    &#125;;</span><br><span class="line"></span><br><span class="line">    content.<span class="property">onclick</span> = <span class="keyword">function</span>(<span class="params">ev</span>) &#123;</span><br><span class="line">        <span class="keyword">var</span> ev = ev || <span class="variable language_">window</span>.<span class="property">event</span>;</span><br><span class="line">        ev.<span class="property">cancelBubble</span> = <span class="literal">true</span>;</span><br><span class="line">    &#125;;</span><br><span class="line">    <span class="variable language_">document</span>.<span class="property">onclick</span> = <span class="keyword">function</span>(<span class="params"></span>) &#123;</span><br><span class="line">        scTip.<span class="property">style</span>.<span class="property">display</span> = <span class="string">&#x27;none&#x27;</span>;</span><br><span class="line">    &#125;;</span><br><span class="line">&#125;;</span><br><span class="line">&lt;/script&gt;</span><br></pre></td></tr></table></figure><h2 id="引入文件"><a href="#引入文件" class="headerlink" title="引入文件"></a>引入文件</h2><p>接着在<code>\Hexo\themes\next\layout\_layout.swig</code>文件最后<code>&lt;/body&gt;</code>标签之前添加如下语句：</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">&#123;%- include &#x27;_third-party/selectionCopyright.njk&#x27; -%&#125;</span><br></pre></td></tr></table></figure><h2 id="重新生成"><a href="#重新生成" class="headerlink" title="重新生成"></a>重新生成</h2><p>最后在<code>Git Bash</code>里执行<code>$ hexo clean &amp; hexo g -d (或 $ hexo s)</code>即可</p><hr><p>以上是我用到的细节改变，并不一定适合你，请选择改动！<br>部分内容来自以下博客：<br><span class="exturl" data-url="aHR0cHM6Ly93d3cuYXNpZmFkZWF3YXkuY29tL3Bvc3Qvc2VsZWN0aW9uQ29weXJpZ2h0Lmh0bWw=">asifadeaway<i class="fa fa-external-link-alt"></i></span></p>]]></content>
    
    
    <summary type="html">&lt;div class=&quot;note warning no-icon&quot;&gt;&lt;p&gt;本站使用 NexT 主题，本文适用于使用NJK模板的主题&lt;br&gt;
&lt;font style=&quot;font-size:13px&quot;&gt;其它模板引擎，请相应修改，没试验过仅供参考&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;

&lt;h1 id=&quot;步骤如下：&quot;&gt;&lt;a href=&quot;#步骤如下：&quot; class=&quot;headerlink&quot; title=&quot;步骤如下：&quot;&gt;&lt;/a&gt;步骤如下：&lt;/h1&gt;&lt;h2 id=&quot;建立必要文件&quot;&gt;&lt;a href=&quot;#建立必要文件&quot; class=&quot;headerlink&quot; title=&quot;建立必要文件&quot;&gt;&lt;/a&gt;建立必要文件&lt;/h2&gt;&lt;p&gt;首先在&lt;code&gt;Hexo\themes\next\layout\_third-party&lt;/code&gt;目录下新建&lt;code&gt;selectionCopyright.swig&lt;/code&gt;文件&lt;/p&gt;</summary>
    
    
    
    <category term="技术探讨" scheme="http://blog.ynxiu.com/categories/technology/"/>
    
    
    <category term="Hexo" scheme="http://blog.ynxiu.com/tags/Hexo/"/>
    
    <category term="JavaScript" scheme="http://blog.ynxiu.com/tags/JavaScript/"/>
    
    <category term="Technology" scheme="http://blog.ynxiu.com/tags/Technology/"/>
    
  </entry>
  
  <entry>
    <title>python的常用三种格式化方法</title>
    <link href="http://blog.ynxiu.com/aixiu/3c4cf5c8.html"/>
    <id>http://blog.ynxiu.com/aixiu/3c4cf5c8.html</id>
    <published>2020-08-15T17:22:14.000Z</published>
    <updated>2020-08-15T17:22:14.000Z</updated>
    
    <content type="html"><![CDATA[<p>最近看别人代码时，发现一个新的打印输出格式，很有意思，print(f’{}’)，所以找了些资料学习总结了一下，现把几个常用的方法记录下来。</p><h2 id="神奇的-号"><a href="#神奇的-号" class="headerlink" title="神奇的 % 号"></a>神奇的 % 号</h2><p>% 号格式化字符串沿用的是C语言的方法，python官方也并未弃用%号，但也并不推荐这种格式化方式。</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></pre></td><td class="code"><pre><span class="line"><span class="comment"># 1、格式的字符串（即%s）与被格式化的字符串（即传入的值）必须按照位置一一对应</span></span><br><span class="line"><span class="comment"># ps：当需格式化的字符串过多时，位置极容易搞混</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">&#x27;%s asked %s to do something&#x27;</span> % (<span class="string">&#x27;egon&#x27;</span>, <span class="string">&#x27;lili&#x27;</span>))  <span class="comment"># egon asked lili to do something</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">&#x27;%s asked %s to do something&#x27;</span> % (<span class="string">&#x27;lili&#x27;</span>, <span class="string">&#x27;egon&#x27;</span>))  <span class="comment"># lili asked egon to do something</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 2、可以通过字典方式格式化，打破了位置带来的限制与困扰</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">&#x27;我的名字是 %(name)s, 我的年龄是 %(age)s.&#x27;</span> % &#123;<span class="string">&#x27;name&#x27;</span>: <span class="string">&#x27;egon&#x27;</span>, <span class="string">&#x27;age&#x27;</span>: <span class="number">18</span>&#125;)</span><br><span class="line"></span><br><span class="line">kwargs=&#123;<span class="string">&#x27;name&#x27;</span>: <span class="string">&#x27;egon&#x27;</span>, <span class="string">&#x27;age&#x27;</span>: <span class="number">18</span>&#125;</span><br><span class="line"><span class="built_in">print</span>(<span class="string">&#x27;我的名字是 %(name)s, 我的年龄是 %(age)s.&#x27;</span> % kwargs)</span><br></pre></td></tr></table></figure><span id="more"></span><h2 id="str-format-内置函数方法"><a href="#str-format-内置函数方法" class="headerlink" title="str.format 内置函数方法"></a>str.format 内置函数方法</h2><p>该format方法是在Python 2.6中引入的，是字符串类型的内置方法。因为str.format的方式在性能和使用的灵活性上都比%号更胜一筹，所以推荐使用</p><h3 id="使用位置参数"><a href="#使用位置参数" class="headerlink" title="使用位置参数"></a>使用位置参数</h3><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></pre></td><td class="code"><pre><span class="line"><span class="comment"># 按照位置一一对应</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">&#x27;&#123;&#125; asked &#123;&#125; to do something&#x27;</span>.<span class="built_in">format</span>(<span class="string">&#x27;egon&#x27;</span>, <span class="string">&#x27;lili&#x27;</span>))  <span class="comment"># egon asked lili to do something</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">&#x27;&#123;&#125; asked &#123;&#125; to do something&#x27;</span>.<span class="built_in">format</span>(<span class="string">&#x27;lili&#x27;</span>, <span class="string">&#x27;egon&#x27;</span>))  <span class="comment"># lili asked egon to do something</span></span><br></pre></td></tr></table></figure><h3 id="使用索引"><a href="#使用索引" class="headerlink" title="使用索引"></a>使用索引</h3><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="comment"># 使用索引取对应位置的值</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">&#x27;&#123;0&#125;&#123;0&#125;&#123;1&#125;&#123;0&#125;&#x27;</span>.<span class="built_in">format</span>(<span class="string">&#x27;x&#x27;</span>,<span class="string">&#x27;y&#x27;</span>)) <span class="comment"># xxyx</span></span><br></pre></td></tr></table></figure><h3 id="使用关键字参数or字典"><a href="#使用关键字参数or字典" class="headerlink" title="使用关键字参数or字典"></a>使用关键字参数or字典</h3><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></pre></td><td class="code"><pre><span class="line"><span class="comment"># 可以通过关键字or字典方式的方式格式化，打破了位置带来的限制与困扰</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">&#x27;我的名字是 &#123;name&#125;, 我的年龄是 &#123;age&#125;.&#x27;</span>.<span class="built_in">format</span>(age=<span class="number">18</span>, name=<span class="string">&#x27;egon&#x27;</span>))</span><br><span class="line"></span><br><span class="line">kwargs = &#123;<span class="string">&#x27;name&#x27;</span>: <span class="string">&#x27;egon&#x27;</span>, <span class="string">&#x27;age&#x27;</span>: <span class="number">18</span>&#125;</span><br><span class="line"><span class="built_in">print</span>(<span class="string">&#x27;我的名字是 &#123;name&#125;, 我的年龄是 &#123;age&#125;.&#x27;</span>.<span class="built_in">format</span>(**kwargs)) <span class="comment"># 使用**进行解包操作</span></span><br></pre></td></tr></table></figure><h3 id="填充与格式化"><a href="#填充与格式化" class="headerlink" title="填充与格式化"></a>填充与格式化</h3><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></pre></td><td class="code"><pre><span class="line"><span class="comment"># 先取到值,然后在冒号后设定填充格式：[填充字符][对齐方式][宽度]</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># *&lt;10：左对齐，总共10个字符，不够的用*号填充</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">&#x27;&#123;0:*&lt;10&#125;&#x27;</span>.<span class="built_in">format</span>(<span class="string">&#x27;开始执行&#x27;</span>)) <span class="comment"># 开始执行******</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># *&gt;10：右对齐，总共10个字符，不够的用*号填充</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">&#x27;&#123;0:*&gt;10&#125;&#x27;</span>.<span class="built_in">format</span>(<span class="string">&#x27;开始执行&#x27;</span>)) <span class="comment"># ******开始执行</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># *^10：居中显示，总共10个字符，不够的用*号填充</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">&#x27;&#123;0:*^10&#125;&#x27;</span>.<span class="built_in">format</span>(<span class="string">&#x27;开始执行&#x27;</span>)) <span class="comment"># ***开始执行***</span></span><br></pre></td></tr></table></figure><h3 id="精度与进制"><a href="#精度与进制" class="headerlink" title="精度与进制"></a>精度与进制</h3><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></pre></td><td class="code"><pre><span class="line"><span class="built_in">print</span>(<span class="string">&#x27;&#123;salary:.3f&#125;&#x27;</span>.<span class="built_in">format</span>(salary=<span class="number">1232132.12351</span>))  <span class="comment">#精确到小数点后3位，四舍五入，结果为：1232132.124</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">&#x27;&#123;0:b&#125;&#x27;</span>.<span class="built_in">format</span>(<span class="number">123</span>))  <span class="comment"># 转成二进制，结果为：1111011</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">&#x27;&#123;0:o&#125;&#x27;</span>.<span class="built_in">format</span>(<span class="number">9</span>))  <span class="comment"># 转成八进制，结果为：11</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">&#x27;&#123;0:x&#125;&#x27;</span>.<span class="built_in">format</span>(<span class="number">15</span>))  <span class="comment"># 转成十六进制，结果为：f</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">&#x27;&#123;0:,&#125;&#x27;</span>.<span class="built_in">format</span>(<span class="number">99812939393931</span>))  <span class="comment"># 千分位格式化，结果为：99,812,939,393,931</span></span><br></pre></td></tr></table></figure><h2 id="f-Strings-最近才学习到的方法。"><a href="#f-Strings-最近才学习到的方法。" class="headerlink" title="f-Strings 最近才学习到的方法。"></a>f-Strings 最近才学习到的方法。</h2><p>str.format() 比 %格式化高级了一些，但是它还是有自己的缺陷。当需要传入的字符串过多时，仍然会显得非常冗长。与在Python 3.6中引入 了f-strings，不仅比str.format更简洁，性能上也更胜一筹</p><p>​ f-string是以f或F开头的字符串， 核心在于字符串中符号{}的使用。</p><h3 id="中可以是变量名"><a href="#中可以是变量名" class="headerlink" title="{}中可以是变量名"></a>{}中可以是变量名</h3><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></pre></td><td class="code"><pre><span class="line">name = <span class="string">&#x27;egon&#x27;</span></span><br><span class="line">age = <span class="number">18</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&#x27;<span class="subst">&#123;name&#125;</span> <span class="subst">&#123;age&#125;</span>&#x27;</span>)  <span class="comment"># egon 18</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">F&#x27;<span class="subst">&#123;age&#125;</span> <span class="subst">&#123;name&#125;</span>&#x27;</span>)  <span class="comment"># 18 egon</span></span><br></pre></td></tr></table></figure><h3 id="中可以是表达式"><a href="#中可以是表达式" class="headerlink" title="{}中可以是表达式"></a>{}中可以是表达式</h3><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><span class="line">14</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 可以在&#123;&#125;中放置任意合法的Python表达式，会在运行时计算</span></span><br><span class="line"><span class="comment"># 比如：数学表达式</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&#x27;<span class="subst">&#123;<span class="number">3</span>*<span class="number">3</span>/<span class="number">2</span>&#125;</span>&#x27;</span>) <span class="comment"># 4.5</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 比如：函数的调用</span></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">foo</span>(<span class="params">n</span>):</span><br><span class="line">    <span class="built_in">print</span>(<span class="string">&#x27;foo say hello&#x27;</span>)</span><br><span class="line">    <span class="keyword">return</span> n</span><br><span class="line"></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&#x27;<span class="subst">&#123;foo(<span class="number">10</span>)&#125;</span>&#x27;</span>) <span class="comment"># 会调用foo(10),然后打印其返回值</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 比如：调用对象的方法</span></span><br><span class="line">name=<span class="string">&#x27;EGON&#x27;</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&#x27;<span class="subst">&#123;name.lower()&#125;</span>&#x27;</span>) <span class="comment"># egon</span></span><br></pre></td></tr></table></figure><h3 id="在类中的使用"><a href="#在类中的使用" class="headerlink" title="在类中的使用"></a>在类中的使用</h3><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><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></pre></td><td class="code"><pre><span class="line"><span class="meta">&gt;&gt;&gt; </span><span class="keyword">class</span> <span class="title class_">Person</span>(<span class="title class_ inherited__">object</span>):</span><br><span class="line"><span class="meta">... </span>    <span class="keyword">def</span> <span class="title function_">__init__</span>(<span class="params">self, name, age</span>):</span><br><span class="line"><span class="meta">... </span>        self.name = name</span><br><span class="line"><span class="meta">... </span>        self.age = age</span><br><span class="line"><span class="meta">... </span>    <span class="keyword">def</span> <span class="title function_">__str__</span>(<span class="params">self</span>):</span><br><span class="line"><span class="meta">... </span>        <span class="keyword">return</span> <span class="string">f&#x27;<span class="subst">&#123;self.name&#125;</span>:<span class="subst">&#123;self.age&#125;</span>&#x27;</span></span><br><span class="line"><span class="meta">... </span>    <span class="keyword">def</span> <span class="title function_">__repr__</span>(<span class="params">self</span>):</span><br><span class="line"><span class="meta">... </span>        <span class="keyword">return</span> <span class="string">f&#x27;===&gt;<span class="subst">&#123;self.name&#125;</span>:<span class="subst">&#123;self.age&#125;</span>&lt;===&#x27;</span></span><br><span class="line"><span class="meta">... </span></span><br><span class="line"><span class="meta">&gt;&gt;&gt; </span></span><br><span class="line"><span class="meta">&gt;&gt;&gt; </span>obj=Person(<span class="string">&#x27;egon&#x27;</span>,<span class="number">18</span>)</span><br><span class="line"><span class="meta">&gt;&gt;&gt; </span><span class="built_in">print</span>(obj) <span class="comment"># 触发__str__</span></span><br><span class="line">egon:<span class="number">18</span></span><br><span class="line"><span class="meta">&gt;&gt;&gt; </span>obj        <span class="comment"># 触发__repr__</span></span><br><span class="line">===&gt;egon:<span class="number">18</span>&lt;===</span><br><span class="line"><span class="meta">&gt;&gt;&gt; </span></span><br><span class="line"><span class="meta">&gt;&gt;&gt; </span></span><br><span class="line"><span class="meta">&gt;&gt;&gt; </span></span><br><span class="line"><span class="meta">&gt;&gt;&gt; </span><span class="comment"># 在f-Strings中的使用</span></span><br><span class="line"><span class="meta">&gt;&gt;&gt; </span><span class="string">f&#x27;<span class="subst">&#123;obj&#125;</span>&#x27;</span>   <span class="comment"># 触发__str__</span></span><br><span class="line"><span class="string">&#x27;egon:18&#x27;</span></span><br><span class="line"><span class="meta">&gt;&gt;&gt; </span><span class="string">f&#x27;<span class="subst">&#123;obj!r&#125;</span>&#x27;</span> <span class="comment"># 触发__repr__</span></span><br><span class="line"><span class="string">&#x27;===&gt;egon:18&lt;===&#x27;</span></span><br></pre></td></tr></table></figure><h3 id="多行f-Stings"><a href="#多行f-Stings" class="headerlink" title="多行f-Stings"></a>多行f-Stings</h3><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><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></pre></td><td class="code"><pre><span class="line"><span class="comment"># 当格式化字符串过长时，如下列表info</span></span><br><span class="line">name = <span class="string">&#x27;Egon&#x27;</span></span><br><span class="line">age = <span class="number">18</span></span><br><span class="line">gender = <span class="string">&#x27;male&#x27;</span></span><br><span class="line">hobbie1=<span class="string">&#x27;play&#x27;</span></span><br><span class="line">hobbie2=<span class="string">&#x27;music&#x27;</span></span><br><span class="line">hobbie3=<span class="string">&#x27;read&#x27;</span></span><br><span class="line">info = [<span class="string">f&#x27;名字：<span class="subst">&#123;name&#125;</span>年龄：<span class="subst">&#123;age&#125;</span>性别：<span class="subst">&#123;gender&#125;</span>&#x27;</span>,<span class="string">f&#x27;第一个爱好：<span class="subst">&#123;hobbie1&#125;</span>第二个爱好：<span class="subst">&#123;hobbie2&#125;</span>第三个爱好：<span class="subst">&#123;hobbie3&#125;</span>&#x27;</span>] </span><br><span class="line"></span><br><span class="line"><span class="comment"># 我们可以回车分隔到多行，注意每行前都有一个f</span></span><br><span class="line">info = [</span><br><span class="line">    <span class="comment"># 第一个元素</span></span><br><span class="line">    <span class="string">f&#x27;名字：<span class="subst">&#123;name&#125;</span>&#x27;</span></span><br><span class="line">    <span class="string">f&#x27;年龄：<span class="subst">&#123;age&#125;</span>&#x27;</span></span><br><span class="line">    <span class="string">f&#x27;性别：<span class="subst">&#123;gender&#125;</span>&#x27;</span>,</span><br><span class="line"></span><br><span class="line">    <span class="comment"># 第二个元素</span></span><br><span class="line">    <span class="string">f&#x27;第一个爱好：<span class="subst">&#123;hobbie1&#125;</span>&#x27;</span></span><br><span class="line">    <span class="string">f&#x27;第二个爱好：<span class="subst">&#123;hobbie2&#125;</span>&#x27;</span></span><br><span class="line">    <span class="string">f&#x27;第三个爱好：<span class="subst">&#123;hobbie3&#125;</span>&#x27;</span></span><br><span class="line">]</span><br><span class="line"></span><br><span class="line"><span class="built_in">print</span>(info)</span><br><span class="line"><span class="comment"># [&#x27;名字：Egon年龄：18性别：male&#x27;, &#x27;第一个爱好：play第二个爱好：music第三个爱好：read&#x27;]</span></span><br></pre></td></tr></table></figure><h3 id="引号的嵌套"><a href="#引号的嵌套" class="headerlink" title="引号的嵌套"></a>引号的嵌套</h3><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></pre></td><td class="code"><pre><span class="line"><span class="comment"># 当字符串嵌套发送冲突时，与正常的字符串处理方式是一样的</span></span><br><span class="line"><span class="comment"># 1、外层为单引号，内层嵌套也为单引号，并且想要输入的内容也为单引号，那么外层需要改用双引号</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">&quot;my name is &#x27;egon&#x27;&quot;</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 2、外层为单引号，内层嵌套也为单引号，并且想要输入的内容也为单引号，需要用到转义</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">&#x27;my name is \&#x27;egon\&#x27;&#x27;</span>)</span><br></pre></td></tr></table></figure><h3 id="注意事项"><a href="#注意事项" class="headerlink" title="注意事项"></a>注意事项</h3><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></pre></td><td class="code"><pre><span class="line"><span class="comment">#1、反斜杠可以用来进行字符转义，但不能用在&#123;&#125;的表达式中</span></span><br><span class="line"><span class="string">f&#x27;<span class="subst">&#123;<span class="number">1</span>\<span class="number">2</span>&#125;</span>&#x27;</span> <span class="comment"># 语法错误</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#2、注释#号也不能出现在&#123;&#125;的表达式中</span></span><br><span class="line"><span class="string">f&#x27;<span class="subst">&#123;x#&#125;</span>&#x27;</span> <span class="comment"># 语法错误</span></span><br></pre></td></tr></table></figure><h3 id="括号的处理"><a href="#括号的处理" class="headerlink" title="括号的处理"></a>括号的处理</h3><p>基于3.5我们得知，不能在{}内出现反斜杠\，所以，当我们的输出的结果中需要包含{}时，下面的做法就是错误的</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">print</span>(<span class="string">f&#x27;\&#123;天王盖地虎\&#125;&#x27;</span>)</span><br></pre></td></tr></table></figure><p>类似于输出%号的做法</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></pre></td><td class="code"><pre><span class="line"><span class="meta">&gt;&gt;&gt; </span><span class="built_in">print</span>(<span class="string">&#x27;%s%%&#x27;</span> %<span class="number">30</span>)</span><br><span class="line"><span class="number">30</span>%</span><br><span class="line"></span><br></pre></td></tr></table></figure><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="built_in">print</span>(<span class="string">f&#x27;&#123;&#123;天王盖地虎&#125;&#125;&#x27;</span>) <span class="comment"># &#123;天王盖地虎&#125;</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&#x27;&#123;&#123;&#123;&#123;天王盖地虎&#125;&#125;&#125;&#125;&#x27;</span>) <span class="comment"># &#123;&#123;天王盖地虎&#125;&#125;</span></span><br></pre></td></tr></table></figure><h3 id="性能对比-f-Stings性能最高"><a href="#性能对比-f-Stings性能最高" class="headerlink" title="性能对比&#x3D;&gt;f_Stings性能最高"></a>性能对比&#x3D;&gt;f_Stings性能最高</h3><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><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></pre></td><td class="code"><pre><span class="line"><span class="keyword">from</span> timeit <span class="keyword">import</span> timeit</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">test_s</span>():</span><br><span class="line">    name = <span class="string">&#x27;Egon&#x27;</span></span><br><span class="line">    age = <span class="number">18</span></span><br><span class="line">    <span class="keyword">return</span> <span class="string">&#x27;%s:%s.&#x27;</span> % (name, age)</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">test_format</span>():</span><br><span class="line">    name = <span class="string">&#x27;Egon&#x27;</span></span><br><span class="line">    age = <span class="number">18</span></span><br><span class="line">    <span class="keyword">return</span> <span class="string">&#x27;&#123;&#125;:&#123;&#125;.&#x27;</span>.<span class="built_in">format</span>(name, age)</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">test_f_strings</span>():</span><br><span class="line">    name = <span class="string">&#x27;Egon&#x27;</span></span><br><span class="line">    age = <span class="number">18</span></span><br><span class="line">    <span class="keyword">return</span> <span class="string">f&#x27;<span class="subst">&#123;name&#125;</span>:<span class="subst">&#123;age&#125;</span>.&#x27;</span></span><br><span class="line"></span><br><span class="line"></span><br><span class="line">res1 = timeit(test_s, number=<span class="number">1000000</span>)</span><br><span class="line">res2 = timeit(test_format, number=<span class="number">1000000</span>)</span><br><span class="line">res3 = timeit(test_f_strings, number=<span class="number">1000000</span>)</span><br><span class="line"><span class="built_in">print</span>(res1) <span class="comment"># 0.3709844550030539</span></span><br><span class="line"><span class="built_in">print</span>(res2) <span class="comment"># 0.47834375899401493</span></span><br><span class="line"><span class="built_in">print</span>(res3) <span class="comment"># 0.3111891380031011, 最快</span></span><br></pre></td></tr></table></figure><h2 id="总结三种方式的应用场景"><a href="#总结三种方式的应用场景" class="headerlink" title="总结三种方式的应用场景"></a>总结三种方式的应用场景</h2><ul><li>如果使用的python3.6+版本的解释器，推荐使用f-Stings</li><li>如果要兼容python2.x版本的python解释器，推荐使用str.format</li><li>如果不是测试的代码，不推荐使用%</li></ul><p>本文参考：<span class="exturl" data-url="aHR0cHM6Ly96aHVhbmxhbi56aGlodS5jb20vcC8xMTA0MDYwMzA=">详情地址<i class="fa fa-external-link-alt"></i></span></p>]]></content>
    
    
    <summary type="html">&lt;p&gt;最近看别人代码时，发现一个新的打印输出格式，很有意思，print(f’{}’)，所以找了些资料学习总结了一下，现把几个常用的方法记录下来。&lt;/p&gt;
&lt;h2 id=&quot;神奇的-号&quot;&gt;&lt;a href=&quot;#神奇的-号&quot; class=&quot;headerlink&quot; title=&quot;神奇的 % 号&quot;&gt;&lt;/a&gt;神奇的 % 号&lt;/h2&gt;&lt;p&gt;% 号格式化字符串沿用的是C语言的方法，python官方也并未弃用%号，但也并不推荐这种格式化方式。&lt;/p&gt;
&lt;figure class=&quot;highlight python&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;8&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;9&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;10&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;comment&quot;&gt;# 1、格式的字符串（即%s）与被格式化的字符串（即传入的值）必须按照位置一一对应&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;comment&quot;&gt;# ps：当需格式化的字符串过多时，位置极容易搞混&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;built_in&quot;&gt;print&lt;/span&gt;(&lt;span class=&quot;string&quot;&gt;&amp;#x27;%s asked %s to do something&amp;#x27;&lt;/span&gt; % (&lt;span class=&quot;string&quot;&gt;&amp;#x27;egon&amp;#x27;&lt;/span&gt;, &lt;span class=&quot;string&quot;&gt;&amp;#x27;lili&amp;#x27;&lt;/span&gt;))  &lt;span class=&quot;comment&quot;&gt;# egon asked lili to do something&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;built_in&quot;&gt;print&lt;/span&gt;(&lt;span class=&quot;string&quot;&gt;&amp;#x27;%s asked %s to do something&amp;#x27;&lt;/span&gt; % (&lt;span class=&quot;string&quot;&gt;&amp;#x27;lili&amp;#x27;&lt;/span&gt;, &lt;span class=&quot;string&quot;&gt;&amp;#x27;egon&amp;#x27;&lt;/span&gt;))  &lt;span class=&quot;comment&quot;&gt;# lili asked egon to do something&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;comment&quot;&gt;# 2、可以通过字典方式格式化，打破了位置带来的限制与困扰&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;built_in&quot;&gt;print&lt;/span&gt;(&lt;span class=&quot;string&quot;&gt;&amp;#x27;我的名字是 %(name)s, 我的年龄是 %(age)s.&amp;#x27;&lt;/span&gt; % &amp;#123;&lt;span class=&quot;string&quot;&gt;&amp;#x27;name&amp;#x27;&lt;/span&gt;: &lt;span class=&quot;string&quot;&gt;&amp;#x27;egon&amp;#x27;&lt;/span&gt;, &lt;span class=&quot;string&quot;&gt;&amp;#x27;age&amp;#x27;&lt;/span&gt;: &lt;span class=&quot;number&quot;&gt;18&lt;/span&gt;&amp;#125;)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;kwargs=&amp;#123;&lt;span class=&quot;string&quot;&gt;&amp;#x27;name&amp;#x27;&lt;/span&gt;: &lt;span class=&quot;string&quot;&gt;&amp;#x27;egon&amp;#x27;&lt;/span&gt;, &lt;span class=&quot;string&quot;&gt;&amp;#x27;age&amp;#x27;&lt;/span&gt;: &lt;span class=&quot;number&quot;&gt;18&lt;/span&gt;&amp;#125;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;built_in&quot;&gt;print&lt;/span&gt;(&lt;span class=&quot;string&quot;&gt;&amp;#x27;我的名字是 %(name)s, 我的年龄是 %(age)s.&amp;#x27;&lt;/span&gt; % kwargs)&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;</summary>
    
    
    
    <category term="Python" scheme="http://blog.ynxiu.com/categories/python/"/>
    
    
    <category term="Python" scheme="http://blog.ynxiu.com/tags/Python/"/>
    
  </entry>
  
  <entry>
    <title>git clone常用命令</title>
    <link href="http://blog.ynxiu.com/aixiu/b8b2d453.html"/>
    <id>http://blog.ynxiu.com/aixiu/b8b2d453.html</id>
    <published>2020-05-21T16:51:43.000Z</published>
    <updated>2020-05-21T16:51:43.000Z</updated>
    
    <content type="html"><![CDATA[<h2 id="描述"><a href="#描述" class="headerlink" title="描述"></a>描述</h2><div class="note default no-icon"><p><strong>目的：</strong>拷贝一个 Git 仓库到本地</p></div><h2 id="实例"><a href="#实例" class="headerlink" title="实例"></a>实例</h2><div class="tabs" id="fourth-unique-name"><ul class="nav-tabs"><li class="tab active"><a href="#fourth-unique-name-1">用法一</a></li><li class="tab"><a href="#fourth-unique-name-2">用法二</a></li><li class="tab"><a href="#fourth-unique-name-3">用法三</a></li><li class="tab"><a href="#fourth-unique-name-4">用法四</a></li></ul><div class="tab-content"><div class="tab-pane active" id="fourth-unique-name-1"><p><strong>拷贝一个 Git 仓库到本地，本地目录名称与Git 仓库同名</strong></p><div class="note primary no-icon"><p><strong>命令：</strong>git clone &lt;版本库的网址&gt;</p></div></div><div class="tab-pane" id="fourth-unique-name-2"><p><strong>拷贝一个 Git 仓库到本地，重新定义本地目录名称</strong></p><div class="note success no-icon"><p><strong>命令：</strong>git clone &lt;版本库的网址&gt; &lt;本地目录名&gt;</p></div></div><div class="tab-pane" id="fourth-unique-name-3"><p><strong>拷贝一个指定分支到本地，本地目录名称与分支同名</strong></p><div class="note info no-icon"><p><strong>命令：</strong>git clone -b 分支名 &lt;版本库的网址&gt;</p></div></div><div class="tab-pane" id="fourth-unique-name-4"><p><strong>拷贝一个指定分支到本地，重新定义本地目录名称</strong></p><div class="note warning no-icon"><p><strong>命令：</strong>git clone -b 分支名 &lt;版本库的网址&gt; &lt;本地目录名&gt;</p></div></div></div></div>]]></content>
    
    
      
      
    <summary type="html">&lt;h2 id=&quot;描述&quot;&gt;&lt;a href=&quot;#描述&quot; class=&quot;headerlink&quot; title=&quot;描述&quot;&gt;&lt;/a&gt;描述&lt;/h2&gt;&lt;div class=&quot;note default no-icon&quot;&gt;&lt;p&gt;&lt;strong&gt;目的：&lt;/strong&gt;拷贝一个 Git 仓库到本地&lt;/</summary>
      
    
    
    
    <category term="学习笔记" scheme="http://blog.ynxiu.com/categories/notes/"/>
    
    
    <category term="Git" scheme="http://blog.ynxiu.com/tags/Git/"/>
    
  </entry>
  
</feed>
