<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <author>
    <name>xfqwdsj</name>
  </author>
  <generator uri="https://hexo.io/">Hexo</generator>
  <id>https://blog.ltfan.top/</id>
  <link href="https://blog.ltfan.top/" rel="alternate"/>
  <link href="https://blog.ltfan.top/atom.xml" rel="self"/>
  <rights>All rights reserved 2026, xfqwdsj</rights>
  <subtitle>随便记录我的编程日常</subtitle>
  <title>LTFan's Blog</title>
  <updated>2024-11-21T03:40:00.000Z</updated>
  <entry>
    <author>
      <name>xfqwdsj</name>
    </author>
    <category term="技术" scheme="https://blog.ltfan.top/categories/technology/"/>
    <category term="技术" scheme="https://blog.ltfan.top/tags/technology/"/>
    <category term="Trojan" scheme="https://blog.ltfan.top/tags/trojan/"/>
    <category term="服务器" scheme="https://blog.ltfan.top/tags/server/"/>
    <category term="代理" scheme="https://blog.ltfan.top/tags/proxy/"/>
    <category term="GFW" scheme="https://blog.ltfan.top/tags/gfw/"/>
    <category term="Nginx" scheme="https://blog.ltfan.top/tags/Nginx/"/>
    <content>
      <![CDATA[<h2 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h2><p>之前使用 Caddy 部署的服务端，到现在出现了一个问题：不具备部署多个网络服务的能力。</p><p>我尝试过使用反向代理，但无论如何都不能成功连接。正当我一筹莫展之时，我发现了<a href="https://www.chengxiaobai.com/trouble-maker/trojan-shared-443-port-scheme">这篇文章</a>。啪的一下很快啊，我马上蹦了起来开始操作。</p><span id="more"></span><p>部署 Trojan 的教程可以查看<a href="/2022/01/27/Caddy-Trojan/">这篇文章</a>。</p><article class="message is-warning">                <div class="message-body">            <p>由于部署过程中有很多坑，为引导读者避坑，本文将以我的操作顺序以及问题的解决过程来记录，所以如果你只是想知道部署方法，请先通读文章。</p>        </div>    </article><h2 id="安装-Nginx"><a href="#安装-Nginx" class="headerlink" title="安装 Nginx"></a>安装 <code>Nginx</code></h2><p>一般情况下，只需执行以下命令：</p><figure class="highlight bash"><figcaption><span>bash</span></figcaption><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">sudo apt install nginx</span><br></pre></td></tr></tbody></table></figure><p>但是我比较“喜欢”绕<del>（搜索关键词不对）</del>，于是我在<a href="https://nginx.org/en/linux_packages.html#Ubuntu">官网</a>上查到了完整的安装方法：</p><figure class="highlight bash"><figcaption><span>bash</span></figcaption><table><tbody><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">sudo apt install curl gnupg2 ca-certificates lsb-release ubuntu-keyring</span><br><span class="line">curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \</span><br><span class="line">    | sudo <span class="built_in">tee</span> /usr/share/keyrings/nginx-archive-keyring.gpg &gt;/dev/null</span><br><span class="line">gpg --dry-run --quiet --import --import-options import-show /usr/share/keyrings/nginx-archive-keyring.gpg</span><br></pre></td></tr></tbody></table></figure><p>确保输出为：</p><figure class="highlight plaintext"><table><tbody><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">pub   rsa2048 2011-08-19 [SC] [expires: 2024-06-14]</span><br><span class="line">      573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62</span><br><span class="line">uid                      nginx signing key &lt;signing-key@nginx.com&gt;</span><br></pre></td></tr></tbody></table></figure><p>如果不是就删掉 <code>/usr/share/keyrings/nginx-archive-keyring.gpg</code> 再来。</p><p>下一步就是安装了：</p><article class="message is-info">                <div class="message-body">            <p>主要版并不是不稳定，按照官网说法，只是不那么稳定而已。我选择的是主要版。</p>        </div>    </article><article class="message is-warning">                <div class="message-body">            <p>官网没写怎么换分支，我也不会。</p>        </div>    </article><div class="tabs my-3">        <ul class="mx-0 my-0">            <li>          <a href="#stable">              <p>稳定版</p>          </a>      </li><li class="is-active">          <a href="#main">              <p>主要版</p>          </a>      </li>        </ul>    </div>    <div id="stable" class="tab-content is-hidden">          <figure class="highlight bash"><figcaption><span>bash</span></figcaption><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">echo</span> <span class="string">"deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \</span></span><br><span class="line"><span class="string">http://nginx.org/packages/ubuntu `lsb_release -cs` nginx"</span> \</span><br><span class="line">    | sudo <span class="built_in">tee</span> /etc/apt/sources.list.d/nginx.list</span><br></pre></td></tr></tbody></table></figure>      </div><div id="main" class="tab-content">          <figure class="highlight bash"><figcaption><span>bash</span></figcaption><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">echo</span> <span class="string">"deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \</span></span><br><span class="line"><span class="string">http://nginx.org/packages/mainline/ubuntu `lsb_release -cs` nginx"</span> \</span><br><span class="line">    | sudo <span class="built_in">tee</span> /etc/apt/sources.list.d/nginx.list</span><br></pre></td></tr></tbody></table></figure>      </div><figure class="highlight bash"><figcaption><span>bash</span></figcaption><table><tbody><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 apt update</span><br><span class="line">sudo apt install nginx</span><br></pre></td></tr></tbody></table></figure><h2 id="安装-Certbot"><a href="#安装-Certbot" class="headerlink" title="安装 Certbot"></a>安装 <code>Certbot</code></h2><p>文档：<a href="https://certbot.eff.org/instructions?ws=nginx&amp;os=ubuntufocal">https://certbot.eff.org/instructions?ws=nginx&amp;os=ubuntufocal</a></p><blockquote><p>安装 <code>Snapd</code> 的方法：</p><figure class="highlight bash"><figcaption><span>bash</span></figcaption><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">sudo apt install snapd</span><br></pre></td></tr></tbody></table></figure></blockquote><figure class="highlight bash"><figcaption><span>bash</span></figcaption><table><tbody><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 snap install --classic certbot</span><br><span class="line">sudo <span class="built_in">ln</span> -s /snap/bin/certbot /usr/bin/certbot</span><br></pre></td></tr></tbody></table></figure><h2 id="配置"><a href="#配置" class="headerlink" title="配置"></a>配置</h2><p>安装之后，噩梦就开始了。</p><p>我开始到处学习 Nginx 的配置文件，最后我是这么做的：</p><p>首先删除一个默认的配置文件：<code>/etc/nginx/conf.d/default.conf</code></p><p>然后编辑配置文件：</p><figure class="highlight plaintext"><figcaption><span>/etc/nginx/nginx.conf</span></figcaption><table><tbody><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></pre></td><td class="code"><pre><span class="line">user  nginx;</span><br><span class="line">worker_processes  auto;</span><br><span class="line"></span><br><span class="line">error_log  /var/log/nginx/error.log notice;</span><br><span class="line">pid        /var/run/nginx.pid;</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">events {</span><br><span class="line">    worker_connections  1024;</span><br><span class="line">}</span><br><span class="line"></span><br><span class="line"># 这部分是原文中复制过来的</span><br><span class="line">stream {</span><br><span class="line">    # 这里就是 SNI 识别，将域名映射成一个配置名</span><br><span class="line">    map $ssl_preread_server_name $backend_name {</span><br><span class="line">        [Trojan 与伪装服务器共用的域名] trojan;</span><br><span class="line">    # 域名都不匹配情况下的默认值</span><br><span class="line">        default web;</span><br><span class="line">    }</span><br><span class="line"></span><br><span class="line">    # web，配置转发详情</span><br><span class="line">    upstream web {</span><br><span class="line">        server 127.0.0.1:80;</span><br><span class="line">    }</span><br><span class="line"></span><br><span class="line">    # trojan，配置转发详情</span><br><span class="line">    upstream trojan {</span><br><span class="line">        server 127.0.0.1:[Trojan 端口];</span><br><span class="line">    }</span><br><span class="line"></span><br><span class="line">    # 监听 443 并开启 ssl_preread</span><br><span class="line">    server {</span><br><span class="line">        listen 443 reuseport;</span><br><span class="line">        listen [::]:443 reuseport;</span><br><span class="line">        proxy_pass  $backend_name;</span><br><span class="line">        ssl_preread on;</span><br><span class="line">    }</span><br><span class="line">}</span><br><span class="line"></span><br><span class="line">http {</span><br><span class="line">    include       /etc/nginx/mime.types;</span><br><span class="line">    default_type  application/octet-stream;</span><br><span class="line"></span><br><span class="line">    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '</span><br><span class="line">                      '$status $body_bytes_sent "$http_referer" '</span><br><span class="line">                      '"$http_user_agent" "$http_x_forwarded_for"';</span><br><span class="line"></span><br><span class="line">    access_log  /var/log/nginx/access.log  main;</span><br><span class="line"></span><br><span class="line">    sendfile        on;</span><br><span class="line"></span><br><span class="line">    keepalive_timeout  65;</span><br><span class="line"></span><br><span class="line">    include /etc/nginx/conf.d/*.conf;</span><br><span class="line"></span><br><span class="line">    server {</span><br><span class="line">        server_name [Trojan 与伪装服务器共用的域名];</span><br><span class="line"></span><br><span class="line">        location / {</span><br><span class="line">            root /usr/share/nginx/html/;</span><br><span class="line">            index index.html index.htm;</span><br><span class="line">        }</span><br><span class="line"></span><br><span class="line">        listen 80;</span><br><span class="line">    }</span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><p>编辑 Trojan 的配置文件 <code>/usr/local/etc/trojan/config.json</code> ，把 <code>local_port</code> 修改一下，重启。</p><figure class="highlight bash"><figcaption><span>bash</span></figcaption><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">sudo systemctl restart trojan</span><br></pre></td></tr></tbody></table></figure><p>注册系统服务，启动 Nginx：</p><figure class="highlight bash"><figcaption><span>bash</span></figcaption><table><tbody><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">sudo nginx -s stop</span><br><span class="line">sudo systemctl <span class="built_in">enable</span> nginx</span><br><span class="line">sudo systemctl start nginx</span><br></pre></td></tr></tbody></table></figure><p>申请证书：</p><figure class="highlight bash"><figcaption><span>bash</span></figcaption><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">sudo certbot --nginx</span><br></pre></td></tr></tbody></table></figure><p>Certbot 会从配置文件中发现你配置的域名并自动修改配置文件，配置 SSL 。</p><p>配置完成后，再次修改配置文件：</p><figure class="highlight plaintext"><figcaption><span>/etc/nginx/nginx.conf</span></figcaption><table><tbody><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">server {</span><br><span class="line">    server_name [域名];</span><br><span class="line"></span><br><span class="line">    location / {</span><br><span class="line">        root /usr/share/nginx/html/;</span><br><span class="line">        index index.html index.htm;</span><br><span class="line">    }</span><br><span class="line"></span><br><span class="line">    listen 80 ssl;</span><br><span class="line">    ssl_certificate /etc/letsencrypt/live/[域名]/fullchain.pem;   # 记下这两个路径</span><br><span class="line">    ssl_certificate_key /etc/letsencrypt/live/[域名]/privkey.pem;</span><br><span class="line">    include /etc/letsencrypt/options-ssl-nginx.conf;</span><br><span class="line">    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;</span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><figure class="highlight bash"><figcaption><span>bash</span></figcaption><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">sudo nginx -s reload</span><br></pre></td></tr></tbody></table></figure><p>编辑 Trojan 的配置文件 <code>/usr/local/etc/trojan/config.json</code> ，把证书路径修改一下，重启。</p><figure class="highlight bash"><figcaption><span>bash</span></figcaption><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">sudo systemctl restart trojan</span><br></pre></td></tr></tbody></table></figure><p>这时我们就可以用原来的客户端配置连接到代理了。</p><p>作为一个合格的<del>懒狗</del>自动化玩家，我们肯定是要测试一下自动更新 SSL 的可靠程度。<del>（怕自己配置出错）</del></p><figure class="highlight bash"><figcaption><span>bash</span></figcaption><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">sudo certbot renew --dry-run</span><br></pre></td></tr></tbody></table></figure><p>但我们竟收到了 400 错误！</p><p>打开浏览器：</p><p><img src="/uploads/2022-02-03-010519.png" alt="浏览器"></p><p>按照我们配置 Caddy 的经验，这样配置应该没有错。</p><p>上网搜索，怎么配怎么不对：有说 <code>ssl</code> 后加 <code>default</code> 的，有说端口 443 加 <code>ssl</code> 而 80 不加的，可行的就第一种，但也失败了。（说是失败，不如说是不适合我们的需求）</p><p>到这里，我们就止步不前了，我也尝试过搜索 Nginx 取消这个功能的办法，无奈没有搜到。</p><p>于是我开始翻看我看过的各种文章，果然还是最开始给我灵感的文章又给了我灵感。文章中的转发设置中并没有转到 80 端口，而这个问题产生的原因是使用 HTTP 协议访问了启用了 SSL 的 80 端口，我们再新开一个端口，用于 SSL 连接不就行了吗？</p><p>开干：</p><figure class="highlight plaintext"><figcaption><span>/etc/nginx/nginx.conf</span></figcaption><table><tbody><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></pre></td><td class="code"><pre><span class="line">user  nginx;</span><br><span class="line">worker_processes  auto;</span><br><span class="line"></span><br><span class="line">error_log  /var/log/nginx/error.log notice;</span><br><span class="line">pid        /var/run/nginx.pid;</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">events {</span><br><span class="line">    worker_connections  1024;</span><br><span class="line">}</span><br><span class="line"></span><br><span class="line">stream {</span><br><span class="line">    map $ssl_preread_server_name $backend_name {</span><br><span class="line">        [Trojan 及伪装域名] trojan;</span><br><span class="line">        default web;</span><br><span class="line">    }</span><br><span class="line"></span><br><span class="line">    upstream web {</span><br><span class="line">        server 127.0.0.1:[Web SSL 端口];</span><br><span class="line">    }</span><br><span class="line"></span><br><span class="line">    upstream trojan {</span><br><span class="line">        server 127.0.0.1:[Trojan 端口];</span><br><span class="line">    }</span><br><span class="line"></span><br><span class="line">    server {</span><br><span class="line">        listen 443 reuseport;</span><br><span class="line">        listen [::]:443 reuseport;</span><br><span class="line">        proxy_pass  $backend_name;</span><br><span class="line">        ssl_preread on;</span><br><span class="line">    }</span><br><span class="line">}</span><br><span class="line"></span><br><span class="line">http {</span><br><span class="line">    include       /etc/nginx/mime.types;</span><br><span class="line">    default_type  application/octet-stream;</span><br><span class="line"></span><br><span class="line">    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '</span><br><span class="line">                      '$status $body_bytes_sent "$http_referer" '</span><br><span class="line">                      '"$http_user_agent" "$http_x_forwarded_for"';</span><br><span class="line"></span><br><span class="line">    access_log  /var/log/nginx/access.log  main;</span><br><span class="line"></span><br><span class="line">    sendfile        on;</span><br><span class="line">    #tcp_nopush     on;</span><br><span class="line"></span><br><span class="line">    keepalive_timeout  65;</span><br><span class="line"></span><br><span class="line">    #gzip  on;</span><br><span class="line"></span><br><span class="line">    include /etc/nginx/conf.d/*.conf;</span><br><span class="line"></span><br><span class="line">    server {</span><br><span class="line">        server_name [Trojan 及伪装域名];</span><br><span class="line"></span><br><span class="line">        location / {</span><br><span class="line">            root /usr/share/nginx/html/;</span><br><span class="line">            index index.html index.htm;</span><br><span class="line">        }</span><br><span class="line"></span><br><span class="line">        listen [Web SSL 端口] ssl;</span><br><span class="line">        listen 80;</span><br><span class="line">        ssl_certificate /etc/letsencrypt/live/[*]/fullchain.pem;</span><br><span class="line">        ssl_certificate_key /etc/letsencrypt/live/[*]/privkey.pem;</span><br><span class="line">        include /etc/letsencrypt/options-ssl-nginx.conf;</span><br><span class="line">        ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;</span><br><span class="line">    }</span><br><span class="line"></span><br><span class="line">    server {</span><br><span class="line">        server_name [其他服务域名];</span><br><span class="line">    </span><br><span class="line">        listen [Web SSL 端口] ssl;</span><br><span class="line">        listen 80;</span><br><span class="line">        ssl_certificate /etc/letsencrypt/live/[*]/fullchain.pem;</span><br><span class="line">        ssl_certificate_key /etc/letsencrypt/live/[*]/privkey.pem;</span><br><span class="line">        include /etc/letsencrypt/options-ssl-nginx.conf;</span><br><span class="line">        ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;</span><br><span class="line">    }</span><br><span class="line">}</span><br><span class="line"></span><br></pre></td></tr></tbody></table></figure><p>重载 Nginx ，大功告成：</p><figure class="highlight bash"><figcaption><span>bash</span></figcaption><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">sudo nginx -s reload</span><br></pre></td></tr></tbody></table></figure><h2 id="后记"><a href="#后记" class="headerlink" title="后记"></a>后记</h2><p>折腾这个花了我一个下午的光阴，这次折腾给我一个启示：思维不能僵化。HTTP 端口不一定是 80 ，HTTPS 端口也不一定是 443 。折腾完后我再次蹦了起来：NB ！并马上打开电脑记录。</p><p>本文内容可能与实际情况有些出入（文件内容、实现效果等），但最终结果部分应该不会错。</p>]]>
    </content>
    <id>https://blog.ltfan.top/2022/02/02/Nginx-Trojan-Website/</id>
    <link href="https://blog.ltfan.top/2022/02/02/Nginx-Trojan-Website/"/>
    <published>2022-02-02T10:23:58.000Z</published>
    <summary>
      <![CDATA[<h2 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h2><p>之前使用 Caddy 部署的服务端，到现在出现了一个问题：不具备部署多个网络服务的能力。</p>
<p>我尝试过使用反向代理，但无论如何都不能成功连接。正当我一筹莫展之时，我发现了<a href="https://www.chengxiaobai.com/trouble-maker/trojan-shared-443-port-scheme">这篇文章</a>。啪的一下很快啊，我马上蹦了起来开始操作。</p>]]>
    </summary>
    <title>利用 Nginx 部署支持 SNI 转发的 Trojan 服务端以及踩坑记录</title>
    <updated>2024-11-21T03:40:00.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>xfqwdsj</name>
    </author>
    <category term="技术" scheme="https://blog.ltfan.top/categories/technology/"/>
    <category term="技术" scheme="https://blog.ltfan.top/tags/technology/"/>
    <category term="博客" scheme="https://blog.ltfan.top/tags/blog/"/>
    <content>
      <![CDATA[<h2 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h2><p>随着互联网的进步，越来越多的操作得以在网上进行。今天我们来做一个静态博客“云玩家”。</p><h2 id="搭建"><a href="#搭建" class="headerlink" title="搭建"></a>搭建</h2><h3 id="创建仓库"><a href="#创建仓库" class="headerlink" title="创建仓库"></a>创建仓库</h3><p>首先，在线上创建一个 Git 仓库。</p><span id="more"></span><p><img src="/uploads/screenshot_20220128-165847_chrome.png" alt="创建仓库"></p><p>创建之后，复制它的 <strong>SSH</strong> 地址。</p><h3 id="注册-CloudStudio"><a href="#注册-CloudStudio" class="headerlink" title="注册 CloudStudio"></a>注册 <code>CloudStudio</code></h3><p>访问 <a href="https://cloudstudio.net/">https://cloudstudio.net</a> 并注册一个账号（建议使用 GitHub 方式）。</p><p>新建一个 Ubuntu 的工作空间并设置仓库地址。</p><p><img src="/uploads/screenshot_20220128-171250_chrome.png" alt="新工作空间"></p><h3 id="配置仓库"><a href="#配置仓库" class="headerlink" title="配置仓库"></a>配置仓库</h3><p>打开终端，输入如下内容以安装 <code>Node.js</code> <sup><a href="https://github.com/nodesource/distributions/blob/master/README.md#installation-instructions">[文档]</a></sup>：</p><figure class="highlight bash"><figcaption><span>bash</span></figcaption><table><tbody><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">curl -fsSL https://deb.nodesource.com/setup_17.x | bash</span><br><span class="line">apt-get install -y nodejs</span><br></pre></td></tr></tbody></table></figure><p><img src="/uploads/screenshot_20220128-171554_chrome.png" alt="新终端"></p><p>安装完成后，输入以下内容以更新 <code>Npm</code> 并安装 <code>Hexo</code>：</p><figure class="highlight bash"><figcaption><span>bash</span></figcaption><table><tbody><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">npm install -g npm</span><br><span class="line">npm install -g hexo</span><br></pre></td></tr></tbody></table></figure><p>输入以下内容进行初始化：</p><figure class="highlight bash"><figcaption><span>bash</span></figcaption><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">mkdir</span> hexo</span><br><span class="line"><span class="built_in">cd</span> hexo</span><br><span class="line">hexo init</span><br><span class="line"><span class="built_in">cd</span> ..</span><br><span class="line"><span class="built_in">mv</span> hexo/* .</span><br><span class="line"><span class="built_in">mv</span> hexo/.* .</span><br><span class="line"><span class="built_in">rmdir</span> hexo</span><br></pre></td></tr></tbody></table></figure><p>以上命令新建了一个空 <code>hexo</code> 目录（ <code>hexo</code> 初始化需要空目录），并在该目录执行初始化，初始化完成后将内容移回当前目录。</p><h3 id="更改主题"><a href="#更改主题" class="headerlink" title="更改主题"></a>更改主题</h3><p>我们使用 <a href="https://github.com/ppoffice/hexo-theme-icarus/"><code>Icarus</code></a> 主题。</p><figure class="highlight bash"><figcaption><span>bash</span></figcaption><table><tbody><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">npm install -S hexo-theme-icarus</span><br><span class="line">npm uninstall hexo-theme-landscape</span><br><span class="line">npm uninstall hexo-renderer-ejs        <span class="comment"># https://github.com/ppoffice/hexo-theme-icarus/issues/855</span></span><br><span class="line">npm install --save bulma-stylus@0.8.0 hexo-renderer-inferno@^0.1.3</span><br></pre></td></tr></tbody></table></figure><p>修改<a href="https://hexo.io/zh-cn/docs/configuration">配置文件</a>：</p><figure class="highlight yml"><figcaption><span>_config.yml &gt;folded</span></figcaption><table><tbody><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></pre></td><td class="code"><pre><span class="line"></span><br><span class="line"><span class="comment"># Hexo Configuration</span></span><br><span class="line"></span><br><span class="line"><span class="comment">## Docs: https://hexo.io/docs/configuration.html</span></span><br><span class="line"></span><br><span class="line"><span class="comment">## Source: https://github.com/hexojs/hexo/</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># Site</span></span><br><span class="line"></span><br><span class="line"><span class="attr">title:</span> <span class="string">网站标题</span></span><br><span class="line"><span class="attr">subtitle:</span> <span class="string">副标题</span></span><br><span class="line"><span class="attr">description:</span> <span class="string">描述</span></span><br><span class="line"><span class="attr">keywords:</span></span><br><span class="line"></span><br><span class="line"><span class="string">*</span> <span class="string">关键词</span></span><br><span class="line"><span class="string">*</span> <span class="string">关键词</span></span><br><span class="line">  <span class="attr">author:</span> <span class="string">作者</span></span><br><span class="line">  <span class="attr">language:</span> <span class="string">zh-CN</span></span><br><span class="line">  <span class="attr">timezone:</span> <span class="string">Asia/Shanghai</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># URL</span></span><br><span class="line"></span><br><span class="line"><span class="comment">## Set your site url here. For example, if you use GitHub Page, set url as 'https://username.github.io/project'</span></span><br><span class="line"></span><br><span class="line"><span class="attr">url:</span> <span class="string">http://example.com</span></span><br><span class="line"><span class="attr">permalink:</span> <span class="string">:year/:month/:day/:title/</span></span><br><span class="line"><span class="attr">permalink_defaults:</span></span><br><span class="line"><span class="attr">pretty_urls:</span></span><br><span class="line"><span class="attr">trailing_index:</span> <span class="literal">true</span> <span class="comment"># Set to false to remove trailing 'index.html' from permalinks</span></span><br><span class="line"><span class="attr">trailing_html:</span> <span class="literal">true</span> <span class="comment"># Set to false to remove trailing '.html' from permalinks</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># Directory</span></span><br><span class="line"></span><br><span class="line"><span class="attr">source_dir:</span> <span class="string">source</span></span><br><span class="line"><span class="attr">public_dir:</span> <span class="string">public</span></span><br><span class="line"><span class="attr">tag_dir:</span> <span class="string">tags</span></span><br><span class="line"><span class="attr">archive_dir:</span> <span class="string">archives</span></span><br><span class="line"><span class="attr">category_dir:</span> <span class="string">categories</span></span><br><span class="line"><span class="attr">code_dir:</span> <span class="string">downloads/code</span></span><br><span class="line"><span class="attr">i18n_dir:</span> <span class="string">:lang</span></span><br><span class="line"><span class="attr">skip_render:</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># Writing</span></span><br><span class="line"></span><br><span class="line"><span class="attr">new_post_name:</span> <span class="string">:title.md</span> <span class="comment"># File name of new posts</span></span><br><span class="line"><span class="attr">default_layout:</span> <span class="string">post</span></span><br><span class="line"><span class="attr">titlecase:</span> <span class="literal">false</span> <span class="comment"># Transform title into titlecase</span></span><br><span class="line"><span class="attr">external_link:</span></span><br><span class="line"><span class="attr">enable:</span> <span class="literal">true</span> <span class="comment"># Open external links in new tab</span></span><br><span class="line"><span class="attr">field:</span> <span class="string">site</span> <span class="comment"># Apply to the whole site</span></span><br><span class="line"><span class="attr">exclude:</span> <span class="string">''</span></span><br><span class="line"><span class="attr">filename_case:</span> <span class="number">0</span></span><br><span class="line"><span class="attr">render_drafts:</span> <span class="literal">false</span></span><br><span class="line"><span class="attr">post_asset_folder:</span> <span class="literal">false</span></span><br><span class="line"><span class="attr">relative_link:</span> <span class="literal">false</span></span><br><span class="line"><span class="attr">future:</span> <span class="literal">true</span></span><br><span class="line"><span class="attr">highlight:</span></span><br><span class="line"><span class="attr">enable:</span> <span class="literal">true</span></span><br><span class="line"><span class="attr">line_number:</span> <span class="literal">true</span></span><br><span class="line"><span class="attr">auto_detect:</span> <span class="literal">false</span></span><br><span class="line"><span class="attr">tab_replace:</span> <span class="string">''</span></span><br><span class="line"><span class="attr">wrap:</span> <span class="literal">true</span></span><br><span class="line"><span class="attr">hljs:</span> <span class="literal">false</span></span><br><span class="line"><span class="attr">prismjs:</span></span><br><span class="line"><span class="attr">enable:</span> <span class="literal">false</span></span><br><span class="line"><span class="attr">preprocess:</span> <span class="literal">true</span></span><br><span class="line"><span class="attr">line_number:</span> <span class="literal">true</span></span><br><span class="line"><span class="attr">tab_replace:</span> <span class="string">''</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># Home page setting</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># path: Root path for your blogs index page. (default = '')</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># per_page: Posts displayed per page. (0 = disable pagination)</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># order_by: Posts order. (Order by date descending by default)</span></span><br><span class="line"></span><br><span class="line"><span class="attr">index_generator:</span></span><br><span class="line"><span class="attr">path:</span> <span class="string">''</span></span><br><span class="line"><span class="attr">per_page:</span> <span class="number">10</span></span><br><span class="line"><span class="attr">order_by:</span> <span class="string">-date</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># Category &amp; Tag</span></span><br><span class="line"></span><br><span class="line"><span class="attr">default_category:</span> <span class="string">uncategorized</span></span><br><span class="line"><span class="attr">category_map:</span></span><br><span class="line"><span class="attr">tag_map:</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># Metadata elements</span></span><br><span class="line"></span><br><span class="line"><span class="comment">## https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta</span></span><br><span class="line"></span><br><span class="line"><span class="attr">meta_generator:</span> <span class="literal">true</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># Date / Time format</span></span><br><span class="line"></span><br><span class="line"><span class="comment">## Hexo uses Moment.js to parse and display date</span></span><br><span class="line"></span><br><span class="line"><span class="comment">## You can customize the date format as defined in</span></span><br><span class="line"></span><br><span class="line"><span class="comment">## http://momentjs.com/docs/#/displaying/format/</span></span><br><span class="line"></span><br><span class="line"><span class="attr">date_format:</span> <span class="string">YYYY-MM-DD</span></span><br><span class="line"><span class="attr">time_format:</span> <span class="string">HH:mm:ss</span></span><br><span class="line"></span><br><span class="line"><span class="comment">## updated_option supports 'mtime', 'date', 'empty'</span></span><br><span class="line"></span><br><span class="line"><span class="attr">updated_option:</span> <span class="string">'mtime'</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># Pagination</span></span><br><span class="line"></span><br><span class="line"><span class="comment">## Set per_page to 0 to disable pagination</span></span><br><span class="line"></span><br><span class="line"><span class="attr">per_page:</span> <span class="number">10</span></span><br><span class="line"><span class="attr">pagination_dir:</span> <span class="string">page</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># Include / Exclude file(s)</span></span><br><span class="line"></span><br><span class="line"><span class="comment">## include:/exclude: options only apply to the 'source/' folder</span></span><br><span class="line"></span><br><span class="line"><span class="attr">include:</span></span><br><span class="line"><span class="attr">exclude:</span></span><br><span class="line"><span class="attr">ignore:</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># Extensions</span></span><br><span class="line"></span><br><span class="line"><span class="comment">## Plugins: https://hexo.io/plugins/</span></span><br><span class="line"></span><br><span class="line"><span class="comment">## Themes: https://hexo.io/themes/</span></span><br><span class="line"></span><br><span class="line"><span class="attr">theme:</span> <span class="string">icarus</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># Deployment</span></span><br><span class="line"></span><br><span class="line"><span class="comment">## Docs: https://hexo.io/docs/one-command-deployment</span></span><br><span class="line"></span><br><span class="line"><span class="attr">deploy:</span></span><br><span class="line"><span class="attr">type:</span> <span class="string">''</span></span><br></pre></td></tr></tbody></table></figure><p>还需要对主题进行一次初始化，输入：</p><figure class="highlight bash"><figcaption><span>bash</span></figcaption><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">hexo server</span><br></pre></td></tr></tbody></table></figure><p>完成后，按下 <kbd>Ctrl</kbd> + <kbd>C</kbd> 。</p><h3 id="提交更改"><a href="#提交更改" class="headerlink" title="提交更改"></a>提交更改</h3><p>切换到版本管理选项卡，提交更改并推送。</p><p><img src="/uploads/2022-01-28-180741.png" alt="提交更改"></p><p><img src="/uploads/2022-01-28-181050.png" alt="推送更改"></p><p>至此，我们可以暂时关闭 <code>CloudStudio</code> 了。</p><h3 id="打开-GitHub-Web-Editor"><a href="#打开-GitHub-Web-Editor" class="headerlink" title="打开 GitHub Web Editor"></a>打开 <code>GitHub Web Editor</code></h3><p>打开仓库，按下 <kbd>.</kbd> 键即可打开。</p><h3 id="继续配置"><a href="#继续配置" class="headerlink" title="继续配置"></a>继续配置</h3><p>继续修改<a href="https://ppoffice.github.io/hexo-theme-icarus/Configuration/icarus%E7%94%A8%E6%88%B7%E6%8C%87%E5%8D%97-%E4%B8%BB%E9%A2%98%E9%85%8D%E7%BD%AE/">主题配置文件</a>（由于主题配置文件更加复杂，所以没有编写示例）。</p><h3 id="与-GitHub-Pages-集成"><a href="#与-GitHub-Pages-集成" class="headerlink" title="与 GitHub Pages　集成"></a>与 <code>GitHub Pages</code>　集成</h3><p>最后，我们只需要新建一个 <code>GitHub Action</code> 就可以自动化部署了。</p><p>在仓库根目录新建 <code>.github/workflows/pages.yml</code> 文件，填入以下内容：</p><figure class="highlight yml"><figcaption><span>.github/workflows/pages.yml</span></figcaption><table><tbody><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="attr">name:</span> <span class="string">Github</span> <span class="string">Pages</span></span><br><span class="line"><span class="attr">on:</span> <span class="string">push</span></span><br><span class="line"><span class="attr">jobs:</span></span><br><span class="line">  <span class="attr">publish:</span></span><br><span class="line">    <span class="attr">runs-on:</span> <span class="string">ubuntu-latest</span></span><br><span class="line">    <span class="attr">steps:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="attr">uses:</span> <span class="string">actions/checkout@v2</span></span><br><span class="line">      <span class="bullet">-</span> <span class="attr">uses:</span> <span class="string">actions/setup-node@v1</span></span><br><span class="line">        <span class="attr">with:</span></span><br><span class="line">          <span class="attr">node-version:</span> <span class="string">'17.4.0'</span></span><br><span class="line">      <span class="bullet">-</span> <span class="attr">run:</span> <span class="string">npm</span> <span class="string">install</span></span><br><span class="line">      <span class="bullet">-</span> <span class="attr">run:</span> <span class="string">npm</span> <span class="string">run-script</span> <span class="string">build</span></span><br><span class="line">      <span class="bullet">-</span> <span class="attr">uses:</span> <span class="string">peaceiris/actions-gh-pages@v3</span></span><br><span class="line">        <span class="attr">with:</span></span><br><span class="line">          <span class="attr">github_token:</span> <span class="string">${{</span> <span class="string">secrets.GITHUB_TOKEN</span> <span class="string">}}</span></span><br><span class="line">          <span class="attr">publish_dir:</span> <span class="string">./public</span></span><br><span class="line">          <span class="attr">force_orphan:</span> <span class="literal">true</span></span><br></pre></td></tr></tbody></table></figure><p>提交，稍作等待后来到仓库 <code>Settings</code> - <code>Pages</code>，选择多出来的 <code>gh-pages</code> 分支。</p><p><img src="/uploads/2022-01-28-184221.png" alt="设置"></p><h2 id="完成"><a href="#完成" class="headerlink" title="完成"></a>完成</h2><p><img src="/uploads/2022-01-28-185104.png" alt="配置完成"></p><p>今后想进行写作，可以直接前往 <code>GitHub Web Editor</code>，在 <code>source/_posts</code> 目录新建文章或在 <code>CloudStudio</code> 运行 <code>hexo new '文章名'</code> 新建文章。</p><article class="message is-warning">                <div class="message-body">            <p><code>CloudStudio</code> 有每日工作空间使用时长限额 2 小时。</p>        </div>    </article><p>以下是新建的默认文章格式，供参考：</p><figure class="highlight plaintext"><figcaption><span>new-post.md</span></figcaption><table><tbody><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><br><span class="line">title: 标题</span><br><span class="line">date: YYYY-MM-DD hh:mm:ss</span><br><span class="line">---</span><br><span class="line"></span><br><span class="line">正文</span><br></pre></td></tr></tbody></table></figure><p>建议仔细阅读 <a href="https://hexo.io/zh-cn/docs/">Hexo 文档</a>和 <a href="https://ppoffice.github.io/hexo-theme-icarus/tags/Icarus%E7%94%A8%E6%88%B7%E6%8C%87%E5%8D%97/">Icarus用户指南</a>。</p><p>可以使用 <a href="https://app.forestry.io/"><code>Forestry</code></a> 进行更加方便舒适的内容管理，在本文中不展开讨论。</p>]]>
    </content>
    <id>https://blog.ltfan.top/2022/01/28/Make-Blog-Website/</id>
    <link href="https://blog.ltfan.top/2022/01/28/Make-Blog-Website/"/>
    <published>2022-01-28T08:52:09.000Z</published>
    <summary>
      <![CDATA[<h2 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h2><p>随着互联网的进步，越来越多的操作得以在网上进行。今天我们来做一个静态博客“云玩家”。</p>
<h2 id="搭建"><a href="#搭建" class="headerlink" title="搭建"></a>搭建</h2><h3 id="创建仓库"><a href="#创建仓库" class="headerlink" title="创建仓库"></a>创建仓库</h3><p>首先，在线上创建一个 Git 仓库。</p>]]>
    </summary>
    <title>无需本地环境，搭建一个个人博客网站</title>
    <updated>2022-12-10T09:32:32.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>xfqwdsj</name>
    </author>
    <category term="技术" scheme="https://blog.ltfan.top/categories/technology/"/>
    <category term="技术" scheme="https://blog.ltfan.top/tags/technology/"/>
    <category term="Caddy" scheme="https://blog.ltfan.top/tags/caddy/"/>
    <category term="Trojan" scheme="https://blog.ltfan.top/tags/trojan/"/>
    <category term="服务器" scheme="https://blog.ltfan.top/tags/server/"/>
    <category term="代理" scheme="https://blog.ltfan.top/tags/proxy/"/>
    <category term="GFW" scheme="https://blog.ltfan.top/tags/gfw/"/>
    <content>
      <![CDATA[<h2 id="准备工作"><a href="#准备工作" class="headerlink" title="准备工作"></a>准备工作</h2><p>参见<a href="/2022/01/27/caddy-v2ray/">此文章</a>。</p><h2 id="开始部署"><a href="#开始部署" class="headerlink" title="开始部署"></a>开始部署</h2><span id="more"></span><h3 id="安装-Caddy"><a href="#安装-Caddy" class="headerlink" title="安装 Caddy"></a>安装 <code>Caddy</code></h3><article class="message is-info">                <div class="message-body">            <p>如果不想让伪装地址指向本机，可以不用安装。</p>        </div>    </article><h3 id="安装-Trojan-文档"><a href="#安装-Trojan-文档" class="headerlink" title="安装 Trojan [文档]"></a>安装 <code>Trojan</code> <sup><a href="https://github.com/trojan-gfw/trojan/wiki/Binary-&amp;-Package-Distributions#quickstart-script">[文档]</a></sup></h3><figure class="highlight bash"><figcaption><span>bash</span></figcaption><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">sudo bash -c <span class="string">"<span class="subst">$(curl -fsSL https://raw.githubusercontent.com/trojan-gfw/trojan-quickstart/master/trojan-quickstart.sh)</span>"</span></span><br></pre></td></tr></tbody></table></figure><h3 id="配置-Caddy"><a href="#配置-Caddy" class="headerlink" title="配置 Caddy"></a>配置 <code>Caddy</code></h3><article class="message is-info">                <div class="message-body">            <p>除特别说明，否则文章中所有带 <code>[ ]</code> 号的文本均需连 <code>[ ]</code> 号依据其中提示替换。</p>        </div>    </article><p><code>Caddy</code> 成功安装后，修改 <code>Caddyfile</code> 为以下内容：</p><article class="message is-info">                <div class="message-body">            <p>我们需要让出 443 端口给 <code>Trojan</code>，所以在 <code>Caddyfile</code> 中显式指定了端口。</p>        </div>    </article><figure class="highlight bash"><figcaption><span>/etc/caddy/Caddyfile</span></figcaption><table><tbody><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">[域名]:80 {</span><br><span class="line">  tls [邮箱]</span><br><span class="line">  root * /usr/share/caddy <span class="comment"># 可修改为其他内容</span></span><br><span class="line">  file_server</span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><p>在以上文件中，我们在自己的域名（需指向服务器）的 80 端口建立了一个网站（也可以不建立或进行反向代理），用于 <code>Trojan</code> 的伪装。</p><p>反向代理可以这样配置：</p><figure class="highlight bash"><figcaption><span>/etc/caddy/Caddyfile</span></figcaption><table><tbody><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">[域名]:80 {</span><br><span class="line">  tls [邮箱]</span><br><span class="line">  reverse_proxy [地址]</span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><p>如果想让伪装指向其他地址，可以不用配置。</p><h3 id="配置-Trojan-文档"><a href="#配置-Trojan-文档" class="headerlink" title="配置 Trojan [文档]"></a>配置 <code>Trojan</code> <sup><a href="https://trojan-gfw.github.io/trojan/config.html#a-valid-serverjson">[文档]</a></sup></h3><p>将配置文件修改为如下内容：</p><figure class="highlight json"><figcaption><span>/usr/local/etc/trojan/config.json</span></figcaption><table><tbody><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></pre></td><td class="code"><pre><span class="line"><span class="punctuation">{</span></span><br><span class="line">    <span class="attr">"run_type"</span><span class="punctuation">:</span> <span class="string">"server"</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">"local_addr"</span><span class="punctuation">:</span> <span class="string">"0.0.0.0"</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">"local_port"</span><span class="punctuation">:</span> <span class="number">443</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">"remote_addr"</span><span class="punctuation">:</span> <span class="string">"127.0.0.1"</span><span class="punctuation">,</span> <span class="comment">//这是伪装地址，默认无需更改，未配置 Caddy 的需要更改</span></span><br><span class="line">    <span class="attr">"remote_port"</span><span class="punctuation">:</span> <span class="number">80</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">"password"</span><span class="punctuation">:</span> <span class="punctuation">[</span></span><br><span class="line">        <span class="string">"password1"</span><span class="punctuation">,</span>            <span class="comment">//此处填写密码，可以只留下一个</span></span><br><span class="line">        <span class="string">"password2"</span></span><br><span class="line">    <span class="punctuation">]</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">"log_level"</span><span class="punctuation">:</span> <span class="number">1</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">"ssl"</span><span class="punctuation">:</span> <span class="punctuation">{</span></span><br><span class="line">        <span class="attr">"cert"</span><span class="punctuation">:</span> <span class="string">"/var/lib/caddy/.local/share/caddy/certificates/acme-v02.api.letsencrypt.org-directory/[域名]/[域名].crt"</span><span class="punctuation">,</span></span><br><span class="line">        <span class="attr">"key"</span><span class="punctuation">:</span> <span class="string">"/var/lib/caddy/.local/share/caddy/certificates/acme-v02.api.letsencrypt.org-directory/[域名]/[域名].key"</span><span class="punctuation">,</span></span><br><span class="line">        <span class="attr">"key_password"</span><span class="punctuation">:</span> <span class="string">""</span><span class="punctuation">,</span></span><br><span class="line">        <span class="attr">"cipher"</span><span class="punctuation">:</span> <span class="string">"ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384"</span><span class="punctuation">,</span></span><br><span class="line">        <span class="attr">"cipher_tls13"</span><span class="punctuation">:</span> <span class="string">"TLS_AES_128_GCM_SHA256:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_256_GCM_SHA384"</span><span class="punctuation">,</span></span><br><span class="line">        <span class="attr">"prefer_server_cipher"</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span><span class="punctuation">,</span></span><br><span class="line">        <span class="attr">"alpn"</span><span class="punctuation">:</span> <span class="punctuation">[</span></span><br><span class="line">            <span class="string">"http/1.1"</span><span class="punctuation">,</span></span><br><span class="line">            <span class="string">"h2"</span></span><br><span class="line">        <span class="punctuation">]</span><span class="punctuation">,</span></span><br><span class="line">        <span class="attr">"reuse_session"</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span><span class="punctuation">,</span></span><br><span class="line">        <span class="attr">"session_ticket"</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">false</span></span><span class="punctuation">,</span></span><br><span class="line">        <span class="attr">"session_timeout"</span><span class="punctuation">:</span> <span class="number">600</span><span class="punctuation">,</span></span><br><span class="line">        <span class="attr">"plain_http_response"</span><span class="punctuation">:</span> <span class="string">""</span><span class="punctuation">,</span></span><br><span class="line">        <span class="attr">"curves"</span><span class="punctuation">:</span> <span class="string">""</span><span class="punctuation">,</span></span><br><span class="line">        <span class="attr">"dhparam"</span><span class="punctuation">:</span> <span class="string">""</span></span><br><span class="line">    <span class="punctuation">}</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">"tcp"</span><span class="punctuation">:</span> <span class="punctuation">{</span></span><br><span class="line">        <span class="attr">"prefer_ipv4"</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">false</span></span><span class="punctuation">,</span></span><br><span class="line">        <span class="attr">"no_delay"</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span><span class="punctuation">,</span></span><br><span class="line">        <span class="attr">"keep_alive"</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span><span class="punctuation">,</span></span><br><span class="line">        <span class="attr">"reuse_port"</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">false</span></span><span class="punctuation">,</span></span><br><span class="line">        <span class="attr">"fast_open"</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">false</span></span><span class="punctuation">,</span></span><br><span class="line">        <span class="attr">"fast_open_qlen"</span><span class="punctuation">:</span> <span class="number">20</span></span><br><span class="line">    <span class="punctuation">}</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">"mysql"</span><span class="punctuation">:</span> <span class="punctuation">{</span></span><br><span class="line">        <span class="attr">"enabled"</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">false</span></span><span class="punctuation">,</span></span><br><span class="line">        <span class="attr">"server_addr"</span><span class="punctuation">:</span> <span class="string">"127.0.0.1"</span><span class="punctuation">,</span></span><br><span class="line">        <span class="attr">"server_port"</span><span class="punctuation">:</span> <span class="number">3306</span><span class="punctuation">,</span></span><br><span class="line">        <span class="attr">"database"</span><span class="punctuation">:</span> <span class="string">"trojan"</span><span class="punctuation">,</span></span><br><span class="line">        <span class="attr">"username"</span><span class="punctuation">:</span> <span class="string">"trojan"</span><span class="punctuation">,</span></span><br><span class="line">        <span class="attr">"password"</span><span class="punctuation">:</span> <span class="string">""</span><span class="punctuation">,</span></span><br><span class="line">        <span class="attr">"key"</span><span class="punctuation">:</span> <span class="string">""</span><span class="punctuation">,</span></span><br><span class="line">        <span class="attr">"cert"</span><span class="punctuation">:</span> <span class="string">""</span><span class="punctuation">,</span></span><br><span class="line">        <span class="attr">"ca"</span><span class="punctuation">:</span> <span class="string">""</span></span><br><span class="line">    <span class="punctuation">}</span></span><br><span class="line"><span class="punctuation">}</span></span><br></pre></td></tr></tbody></table></figure><h3 id="启动服务"><a href="#启动服务" class="headerlink" title="启动服务"></a>启动服务</h3><article class="message is-info">                <div class="message-body">            <p>配置后，服务均会自动启动。</p>        </div>    </article><figure class="highlight bash"><figcaption><span>bash</span></figcaption><table><tbody><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">sudo systemctl reload caddy</span><br><span class="line">sudo systemctl <span class="built_in">enable</span> trojan</span><br><span class="line">sudo systemctl start trojan</span><br></pre></td></tr></tbody></table></figure><h2 id="部署完成"><a href="#部署完成" class="headerlink" title="部署完成"></a>部署完成</h2><p>Enjoy it!</p>]]>
    </content>
    <id>https://blog.ltfan.top/2022/01/27/Caddy-Trojan/</id>
    <link href="https://blog.ltfan.top/2022/01/27/Caddy-Trojan/"/>
    <published>2022-01-27T17:52:55.000Z</published>
    <summary>
      <![CDATA[<h2 id="准备工作"><a href="#准备工作" class="headerlink" title="准备工作"></a>准备工作</h2><p>参见<a href="/2022/01/27/caddy-v2ray/">此文章</a>。</p>
<h2 id="开始部署"><a href="#开始部署" class="headerlink" title="开始部署"></a>开始部署</h2>]]>
    </summary>
    <title>利用 Caddy 部署 Trojan 服务端</title>
    <updated>2024-11-21T03:40:00.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>xfqwdsj</name>
    </author>
    <category term="技术" scheme="https://blog.ltfan.top/categories/technology/"/>
    <category term="技术" scheme="https://blog.ltfan.top/tags/technology/"/>
    <category term="Caddy" scheme="https://blog.ltfan.top/tags/caddy/"/>
    <category term="服务器" scheme="https://blog.ltfan.top/tags/server/"/>
    <category term="代理" scheme="https://blog.ltfan.top/tags/proxy/"/>
    <category term="GFW" scheme="https://blog.ltfan.top/tags/gfw/"/>
    <category term="V2Ray" scheme="https://blog.ltfan.top/tags/v2ray/"/>
    <content>
      <![CDATA[<blockquote><p>灵感源自 <a href="https://blog.kallydev.com/docs/technical-notes/server/deploy-v2ray-with-docker/">https://blog.kallydev.com/docs/technical-notes/server/deploy-v2ray-with-docker/</a>，有修改。</p></blockquote><h2 id="部署说明"><a href="#部署说明" class="headerlink" title="部署说明"></a>部署说明</h2><article class="message is-info">                <div class="message-body">            <p>仅用于参考，并非硬性要求，需按照实际情况自行更改。</p>        </div>    </article><ul><li>服务器为腾讯云轻量应用服务器（海外地区）；</li><li>服务器操作系统为 Ubuntu 20.04 LTS；</li><li>在海外服务商购买的域名（例如 GoDaddy、Google Domain）。</li></ul><span id="more"></span><h2 id="部署步骤"><a href="#部署步骤" class="headerlink" title="部署步骤"></a>部署步骤</h2><h3 id="准备工作"><a href="#准备工作" class="headerlink" title="准备工作"></a>准备工作</h3><h4 id="创建用户"><a href="#创建用户" class="headerlink" title="创建用户"></a>创建用户</h4><article class="message is-info">                <div class="message-body">            <p>除特别说明，否则文章中所有带 <code>[ ]</code> 号的文本均需连 <code>[ ]</code> 号依据其中提示替换。</p>        </div>    </article><figure class="highlight bash"><figcaption><span>bash</span></figcaption><table><tbody><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 useradd -s /bin/bash -m [用户名]</span><br><span class="line">sudo passwd [用户名]</span><br></pre></td></tr></tbody></table></figure><h4 id="配置新用户"><a href="#配置新用户" class="headerlink" title="配置新用户"></a>配置新用户</h4><figure class="highlight bash"><figcaption><span>bash</span></figcaption><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">sudo visudo</span><br></pre></td></tr></tbody></table></figure><p>在文件末尾找到以下内容：</p><figure class="highlight plaintext"><table><tbody><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">#includedir /etc/sudoers.d</span><br><span class="line">lighthouse ALL=(ALL) NOPASSWD: ALL</span><br><span class="line">ubuntu  ALL=(ALL:ALL) NOPASSWD: ALL</span><br></pre></td></tr></tbody></table></figure><p>修改为：</p><figure class="highlight plaintext"><table><tbody><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">#includedir /etc/sudoers.d</span><br><span class="line">[用户名] ALL=(ALL) NOPASSWD: ALL</span><br></pre></td></tr></tbody></table></figure><h4 id="登录到新用户"><a href="#登录到新用户" class="headerlink" title="登录到新用户"></a>登录到新用户</h4><p>按 Ctrl + D 退出登录后重新登录至新用户。参考方法（Windows、Linux、MacOS终端均可，Android需要一个终端模拟器）：</p><figure class="highlight bash"><figcaption><span>bash</span></figcaption><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">ssh [用户名]@[服务器IP]</span><br></pre></td></tr></tbody></table></figure><h4 id="删除默认用户"><a href="#删除默认用户" class="headerlink" title="删除默认用户"></a>删除默认用户</h4><figure class="highlight bash"><figcaption><span>bash</span></figcaption><table><tbody><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 userdel -r ubuntu</span><br><span class="line">sudo userdel -r lighthouse</span><br></pre></td></tr></tbody></table></figure><h4 id="卸载监控组件（可选）-文档"><a href="#卸载监控组件（可选）-文档" class="headerlink" title="卸载监控组件（可选）[文档]"></a>卸载监控组件（可选）<sup><a href="https://cloud.tencent.com/document/product/248/53584#.E5.8D.B8.E8.BD.BD.E7.9B.91.E6.8E.A7.E7.BB.84.E4.BB.B6">[文档]</a></sup></h4><article class="message is-warning">                <div class="message-body">            <p>本操作 <strong>非必要</strong> 执行，但 <strong>建议</strong> 执行。</p>        </div>    </article><h5 id="卸载-BaradAgent"><a href="#卸载-BaradAgent" class="headerlink" title="卸载 BaradAgent"></a>卸载 <code>BaradAgent</code></h5><p>登录云服务器后，执行以下命令，进入 <code>BaradAgent</code> 安装目录。</p><figure class="highlight bash"><figcaption><span>bash</span></figcaption><table><tbody><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> /usr/local/qcloud/monitor/barad/admin</span><br></pre></td></tr></tbody></table></figure><p>执行以下命令，卸载 <code>BaradAgent</code>。该命令不显示结果，如果不存在 <code>/usr/local/qcloud/monitor/barad</code> 文件夹，则说明卸载成功。</p><figure class="highlight bash"><figcaption><span>bash</span></figcaption><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">./uninstall.sh</span><br></pre></td></tr></tbody></table></figure><article class="message is-info">                <div class="message-body">            <p><code>BaradAgent</code> 上报云服务器部分指标数据，卸载 <code>BaradAgent</code> 后会停止数据上报。<code>Sgagent</code> 基本占用极少的内存，您也可以参考下列步骤卸载 <code>Sgagent</code>。</p>        </div>    </article><h5 id="卸载-Sgagent"><a href="#卸载-Sgagent" class="headerlink" title="卸载 Sgagent"></a>卸载 <code>Sgagent</code></h5><p>执行以下命令，进入 <code>Sgagent</code> 安装目录。</p><figure class="highlight bash"><figcaption><span>bash</span></figcaption><table><tbody><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> /usr/local/qcloud/stargate/admin</span><br></pre></td></tr></tbody></table></figure><p>执行以下命令，卸载 <code>Sgagent</code>。该命令不显示结果，您可以执行 <code>crontab -l |grep stargate</code> 命令查看是否有计划任务，若无计划任务，则说明卸载成功。</p><figure class="highlight bash"><figcaption><span>bash</span></figcaption><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">./uninstall.sh</span><br></pre></td></tr></tbody></table></figure><h4 id="更新并升级所有软件包"><a href="#更新并升级所有软件包" class="headerlink" title="更新并升级所有软件包"></a>更新并升级所有软件包</h4><figure class="highlight bash"><figcaption><span>bash</span></figcaption><table><tbody><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 apt update</span><br><span class="line">sudo apt upgrade -y</span><br></pre></td></tr></tbody></table></figure><p>由于软件包比较多，需等待一段时间，并关注屏幕上的选项。</p><h3 id="开始部署"><a href="#开始部署" class="headerlink" title="开始部署"></a>开始部署</h3><h4 id="安装"><a href="#安装" class="headerlink" title="安装"></a>安装</h4><h5 id="安装-Caddy-文档"><a href="#安装-Caddy-文档" class="headerlink" title="安装 Caddy [文档]"></a>安装 <code>Caddy</code> <sup><a href="https://caddyserver.com/docs/install#debian-ubuntu-raspbian">[文档]</a></sup></h5><figure class="highlight bash"><figcaption><span>bash</span></figcaption><table><tbody><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">sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https</span><br><span class="line">curl -1sLf <span class="string">'https://dl.cloudsmith.io/public/caddy/stable/gpg.key'</span> | sudo <span class="built_in">tee</span> /etc/apt/trusted.gpg.d/caddy-stable.asc</span><br><span class="line">curl -1sLf <span class="string">'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt'</span> | sudo <span class="built_in">tee</span> /etc/apt/sources.list.d/caddy-stable.list</span><br><span class="line">sudo apt update</span><br><span class="line">sudo apt install caddy</span><br></pre></td></tr></tbody></table></figure><h5 id="安装-V2Ray-文档"><a href="#安装-V2Ray-文档" class="headerlink" title="安装 V2Ray [文档]"></a>安装 <code>V2Ray</code> <sup><a href="https://github.com/v2fly/fhs-install-v2ray/blob/master/README.zh-Hans-CN.md#%E5%AE%89%E8%A3%85%E5%92%8C%E6%9B%B4%E6%96%B0-v2ray">[文档]</a></sup></h5><figure class="highlight bash"><figcaption><span>bash</span></figcaption><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">sudo bash &lt;(curl -L https://raw.githubusercontent.com/v2fly/fhs-install-v2ray/master/install-release.sh)</span><br></pre></td></tr></tbody></table></figure><h4 id="配置"><a href="#配置" class="headerlink" title="配置"></a>配置</h4><h5 id="配置-V2Ray"><a href="#配置-V2Ray" class="headerlink" title="配置 V2Ray"></a>配置 <code>V2Ray</code></h5><figure class="highlight bash"><figcaption><span>bash</span></figcaption><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">sudo nano /usr/local/etc/v2ray/config.json</span><br></pre></td></tr></tbody></table></figure><p>替换为以下内容 <sup><a href="https://v2fly.org/config/overview.html">[文档]</a></sup>：</p><figure class="highlight json"><figcaption><span>/usr/local/etc/v2ray/config.json</span></figcaption><table><tbody><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="punctuation">{</span></span><br><span class="line">  <span class="attr">"inbound"</span><span class="punctuation">:</span> <span class="punctuation">{</span></span><br><span class="line">    <span class="attr">"port"</span><span class="punctuation">:</span> <span class="punctuation">[</span>任意 <span class="number">0</span><span class="number">-65535</span> 的端口，推荐避开 <span class="number">80</span> 与 <span class="number">443</span><span class="punctuation">]</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">"listen"</span><span class="punctuation">:</span> <span class="string">"127.0.0.1"</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">"protocol"</span><span class="punctuation">:</span> <span class="string">"vmess"</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">"settings"</span><span class="punctuation">:</span> <span class="punctuation">{</span></span><br><span class="line">      <span class="attr">"clients"</span><span class="punctuation">:</span> <span class="punctuation">[</span><span class="punctuation">{</span></span><br><span class="line">        <span class="attr">"id"</span><span class="punctuation">:</span> <span class="string">"[任意 UUID]"</span><span class="punctuation">,</span></span><br><span class="line">         <span class="attr">"alterId"</span><span class="punctuation">:</span> <span class="punctuation">[</span>任意 <span class="number">0</span><span class="number">-65536</span> 的数字<span class="punctuation">]</span></span><br><span class="line">      <span class="punctuation">}</span><span class="punctuation">]</span></span><br><span class="line">    <span class="punctuation">}</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">"streamSettings"</span><span class="punctuation">:</span> <span class="punctuation">{</span></span><br><span class="line">      <span class="attr">"network"</span><span class="punctuation">:</span> <span class="string">"ws"</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">"wsSettings"</span><span class="punctuation">:</span> <span class="punctuation">{</span></span><br><span class="line">        <span class="attr">"path"</span><span class="punctuation">:</span> <span class="string">"[任意用于 WebSocket 的路径，如：/v2ray]"</span></span><br><span class="line">      <span class="punctuation">}</span></span><br><span class="line">    <span class="punctuation">}</span></span><br><span class="line">  <span class="punctuation">}</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">"outbound"</span><span class="punctuation">:</span> <span class="punctuation">{</span></span><br><span class="line">    <span class="attr">"protocol"</span><span class="punctuation">:</span> <span class="string">"freedom"</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">"settings"</span><span class="punctuation">:</span> <span class="punctuation">{</span><span class="punctuation">}</span></span><br><span class="line">  <span class="punctuation">}</span></span><br><span class="line"><span class="punctuation">}</span></span><br></pre></td></tr></tbody></table></figure><p>按 <kbd>Ctrl</kbd> + <kbd>X</kbd> 退出，按 <kbd>Y</kbd> 保存，按 <kbd>Enter</kbd> 确认。</p><h5 id="配置-Caddy"><a href="#配置-Caddy" class="headerlink" title="配置 Caddy"></a>配置 <code>Caddy</code></h5><figure class="highlight bash"><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">sudo nano /etc/caddy/Caddyfile</span><br></pre></td></tr></tbody></table></figure><p>替换为以下内容：</p><figure class="highlight bash"><figcaption><span>/etc/caddy/Caddyfile</span></figcaption><table><tbody><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><br><span class="line">  tls [任意电子邮箱地址]</span><br><span class="line">  reverse_proxy [WebSocket 路径] localhost:[端口] {</span><br><span class="line">    header_up -Origin</span><br><span class="line">  }</span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><h4 id="绑定域名"><a href="#绑定域名" class="headerlink" title="绑定域名"></a>绑定域名</h4><h5 id="更换域名服务器（可选）"><a href="#更换域名服务器（可选）" class="headerlink" title="更换域名服务器（可选）"></a>更换域名服务器（可选）</h5><h5 id="添加-DNS-解析记录"><a href="#添加-DNS-解析记录" class="headerlink" title="添加 DNS 解析记录"></a>添加 DNS 解析记录</h5><p>为域名添加一条指向服务器 IP 地址的 A 记录。</p><h4 id="启动服务"><a href="#启动服务" class="headerlink" title="启动服务"></a>启动服务</h4><p>至此，代理已经配置完毕，现在重载 <code>Caddy</code> 并启动 <code>V2Ray</code>。</p><figure class="highlight bash"><figcaption><span>bash</span></figcaption><table><tbody><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 systemctl start v2ray</span><br><span class="line">sudo systemctl reload caddy</span><br></pre></td></tr></tbody></table></figure><h3 id="客户端配置"><a href="#客户端配置" class="headerlink" title="客户端配置"></a>客户端配置</h3><h4 id="下载客户端"><a href="#下载客户端" class="headerlink" title="下载客户端"></a>下载客户端</h4><p>我使用的客户端为 <code>Clash</code>。</p><h4 id="编辑配置文件"><a href="#编辑配置文件" class="headerlink" title="编辑配置文件"></a>编辑配置文件</h4><p>Clash 的配置文件格式为 yaml ，有严格的缩进规则。</p><p>以下为范例：</p><figure class="highlight yaml"><table><tbody><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="attr">port:</span> <span class="number">7890</span></span><br><span class="line"><span class="attr">socks-port:</span> <span class="number">7891</span></span><br><span class="line"><span class="attr">redir-port:</span> <span class="number">7892</span></span><br><span class="line"><span class="attr">allow-lan:</span> <span class="literal">false</span></span><br><span class="line"><span class="attr">mode:</span> <span class="string">Rule</span></span><br><span class="line"><span class="attr">log-level:</span> <span class="string">info</span></span><br><span class="line"></span><br><span class="line"><span class="attr">proxies:</span></span><br><span class="line"><span class="bullet">-</span> <span class="attr">name:</span> <span class="string">"代理"</span></span><br><span class="line">  <span class="attr">type:</span> <span class="string">vmess</span></span><br><span class="line">  <span class="attr">server:</span> [<span class="string">域名</span>]</span><br><span class="line">  <span class="attr">port:</span> <span class="number">443</span></span><br><span class="line">  <span class="attr">uuid:</span> [<span class="string">UUID</span>]</span><br><span class="line">  <span class="attr">alterId:</span> [<span class="string">alterId</span>]</span><br><span class="line">  <span class="attr">cipher:</span> <span class="string">auto</span></span><br><span class="line">  <span class="attr">udp:</span> <span class="literal">true</span></span><br><span class="line">  <span class="attr">tls:</span> <span class="literal">true</span></span><br><span class="line">  <span class="attr">network:</span> <span class="string">ws</span></span><br><span class="line">  <span class="attr">ws-opts:</span></span><br><span class="line">    <span class="bullet">-</span> <span class="attr">path:</span> [<span class="string">path</span>]</span><br><span class="line"></span><br><span class="line"><span class="attr">proxy-groups:</span></span><br><span class="line"><span class="bullet">-</span> <span class="attr">name:</span> <span class="string">"PROXY"</span></span><br><span class="line">  <span class="attr">type:</span> <span class="string">select</span></span><br><span class="line">  <span class="attr">proxies:</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">"代理"</span></span><br></pre></td></tr></tbody></table></figure><p>推荐添加一些代理规则，如：<a href="https://github.com/Loyalsoldier/clash-rules">https://github.com/Loyalsoldier/clash-rules</a>。</p><h4 id="导入配置文件"><a href="#导入配置文件" class="headerlink" title="导入配置文件"></a>导入配置文件</h4><h3 id="增强体验的额外配置"><a href="#增强体验的额外配置" class="headerlink" title="增强体验的额外配置"></a>增强体验的额外配置</h3><p>腾讯云的轻量应用服务器用作代理绰绰有余，所以我们还可以部署一些额外的东西。</p><h4 id="修改-Caddy-配置文件"><a href="#修改-Caddy-配置文件" class="headerlink" title="修改 Caddy 配置文件"></a>修改 <code>Caddy</code> 配置文件</h4><p>在 Caddyfile 开头加入以下内容：</p><figure class="highlight bash"><figcaption><span>/etc/caddy/Caddyfile</span></figcaption><table><tbody><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><br><span class="line">  tls [邮箱]</span><br><span class="line">}</span><br><span class="line">[域名] {</span><br><span class="line">  tls [邮箱]</span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><p>再在你想要的任意域名下加入<code>file_server</code>。</p><p><code>file_server</code> 中加入（可选项）：</p><ul><li><code>root [自定义根目录]</code></li><li><code>browse #启用索引</code></li></ul><p>修改后，我的 <code>Caddyfile</code> 是这样的：</p><figure class="highlight bash"><figcaption><span>/etc/caddy/Caddyfile</span></figcaption><table><tbody><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><br><span class="line">    tls [邮箱]</span><br><span class="line">}</span><br><span class="line"></span><br><span class="line">[域名] {</span><br><span class="line">    tls [邮箱]</span><br><span class="line">}</span><br><span class="line"></span><br><span class="line">files.[域名] {</span><br><span class="line">    basicauth [想要密码限制的目录（后加 *）/ 文件，也可选择删除，全部限制] {</span><br><span class="line">        [用户名] [密码]</span><br><span class="line">    }</span><br><span class="line"></span><br><span class="line">    file_server {</span><br><span class="line">        root [root1]</span><br><span class="line">        browse</span><br><span class="line">    }</span><br><span class="line">}</span><br><span class="line">proxy.[域名] {</span><br><span class="line">    reverse_proxy /v2ray localhost:10000 {</span><br><span class="line">        header_up -Origin</span><br><span class="line">    }</span><br><span class="line"></span><br><span class="line">    file_server {</span><br><span class="line">        root [root2]</span><br><span class="line">    }</span><br><span class="line">}</span><br></pre></td></tr></tbody></table></figure><p>其中的 [密码] 需要这样生成：</p><figure class="highlight bash"><figcaption><span>bash</span></figcaption><table><tbody><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">caddy hash-password</span><br></pre></td></tr></tbody></table></figure><p>于是我把 Clash 配置文件放到 [root2] 中并在客户端配置从 Url 导入，从 proxy.[域名] 访问；把要分享的文件放在 [root1] ，其中有两个目录：Public 和 Private ，密码限制 Private 目录。</p><h4 id="安装、配置-VsFTPd"><a href="#安装、配置-VsFTPd" class="headerlink" title="安装、配置 VsFTPd"></a>安装、配置 <code>VsFTPd</code></h4><h2 id="部署完成"><a href="#部署完成" class="headerlink" title="部署完成"></a>部署完成</h2><p>至此，你的代理服务器、文件服务器都已搭建完毕，享受吧！</p>]]>
    </content>
    <id>https://blog.ltfan.top/2022/01/27/Caddy-V2Ray/</id>
    <link href="https://blog.ltfan.top/2022/01/27/Caddy-V2Ray/"/>
    <published>2022-01-27T11:09:45.000Z</published>
    <summary>
      <![CDATA[<blockquote>
<p>灵感源自 <a href="https://blog.kallydev.com/docs/technical-notes/server/deploy-v2ray-with-docker/">https://blog.kallydev.com/docs/technical-notes/server/deploy-v2ray-with-docker/</a>，有修改。</p>
</blockquote>
<h2 id="部署说明"><a href="#部署说明" class="headerlink" title="部署说明"></a>部署说明</h2><article class="message is-info">
        
        <div class="message-body">
            <p>仅用于参考，并非硬性要求，需按照实际情况自行更改。</p>

        </div>
    </article>

<ul>
<li>服务器为腾讯云轻量应用服务器（海外地区）；</li>
<li>服务器操作系统为 Ubuntu 20.04 LTS；</li>
<li>在海外服务商购买的域名（例如 GoDaddy、Google Domain）。</li>
</ul>]]>
    </summary>
    <title>利用 Caddy 部署使用 Websocket 的 V2Ray Vmess 服务端，并搭建一个文件服务器</title>
    <updated>2022-01-27T11:09:45.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>xfqwdsj</name>
    </author>
    <category term="技术" scheme="https://blog.ltfan.top/categories/technology/"/>
    <category term="网络" scheme="https://blog.ltfan.top/tags/network/"/>
    <content>
      <![CDATA[<h2 id="更新说明"><a href="#更新说明" class="headerlink" title="更新说明"></a>更新说明</h2><p>本文首先发布在 <a href="https://blog.csdn.net/qq_42763682/article/details/104529683">CSDN</a>，本次更新使文章表述更加严谨规范，且新增了一些链接。</p><h2 id="引"><a href="#引" class="headerlink" title="引"></a>引</h2><blockquote><p>最近在上网课，想在网上上传直播录像或者剪辑一些搞笑的片段上传。</p><p>但是当我打开电脑想点“下载”的时候……</p><p><img src="https://img-blog.csdnimg.cn/20200227090154600.png" alt="Ooops"></p></blockquote><p>这个方法适用于 Android、Windows，因为我只在这两个平台测试过。Android 稍微麻烦一点，Windows 则需要一些工具。</p><span id="more"></span><h2 id="抓包"><a href="#抓包" class="headerlink" title="抓包"></a>抓包</h2><h3 id="准备工作"><a href="#准备工作" class="headerlink" title="准备工作"></a>准备工作</h3><p>安装好抓包软件 <a href="https://www.telerik.com/fiddler">Fiddler</a>。</p><h3 id="开启-HTTPS-抓取"><a href="#开启-HTTPS-抓取" class="headerlink" title="开启 HTTPS 抓取"></a>开启 HTTPS 抓取</h3><p><img src="https://img-blog.csdnimg.cn/20200227090633614.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyNzYzNjgy,size_16,color_FFFFFF,t_70" alt="抓取 HTTPS #1"></p><p><img src="https://img-blog.csdnimg.cn/20200227090710353.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyNzYzNjgy,size_16,color_FFFFFF,t_70" alt="抓取 HTTPS #2"></p><p>Android 同理，下载好你喜欢的抓包工具并安装根证书。</p><h3 id="对钉钉进行抓包"><a href="#对钉钉进行抓包" class="headerlink" title="对钉钉进行抓包"></a>对钉钉进行抓包</h3><p>打开钉钉窗口，按住工具栏上标有 <code>Any Process</code> 字样的按钮并拖动到钉钉窗口上：</p><p><img src="https://img-blog.csdnimg.cn/2020022709094674.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyNzYzNjgy,size_16,color_FFFFFF,t_70" alt="选择进程后"></p><p>Android 同理，选择程序钉钉，最好设置过滤域名 <code>alicdn.com</code>，以便更快地筛选。</p><p>在软件左下方命令框输入 <code>stop</code> 和 <code>cls</code>：</p><p><img src="https://img-blog.csdnimg.cn/20200227091443617.png" alt="stop"></p><p><img src="https://img-blog.csdnimg.cn/20200227091503881.png" alt="cls"></p><p>然后在直播回放打开前输入 <code>start</code>：</p><p><img src="https://img-blog.csdnimg.cn/20200227091610179.png" alt="start"></p><p>以启动抓包。</p><p>也可以再加一条 <code>bold m3u8?</code>，可能会出现神奇的效果。</p><p>当回放加载完成（有画面）后输入 <code>stop</code> 以停止抓包。</p><p>Android 同理，清除列表，开启抓包，有画面就返回抓包软件并停止抓包。</p><h3 id="寻找包"><a href="#寻找包" class="headerlink" title="寻找包"></a>寻找包</h3><p>寻找环节，最好确保只打开一次回放，否则可能会出现重复包。</p><p>输入 <code>@alicdn.com</code> 和 <code>select vnd.apple.mpegurl</code>：</p><p><img src="https://img-blog.csdnimg.cn/2020022709205269.png" alt="@alicdn.com"></p><p><img src="https://img-blog.csdnimg.cn/20200227092123194.png" alt="select vnd.apple.mpegurl"></p><p>这样 Fiddler 就会自动定位到符合要求的包。</p><p>双击寻找到的包，转向窗口右边：</p><p><img src="https://img-blog.csdnimg.cn/20200227092254388.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyNzYzNjgy,size_16,color_FFFFFF,t_70" alt="窗口"></p><p>点击下方相应部分的的 <code>TextView</code> 选项卡应该能看到 <code>m3u8</code> 格式的文件。</p><p>回到左边，右键这个包选择复制 Url：</p><p><img src="https://img-blog.csdnimg.cn/20200227092746772.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyNzYzNjgy,size_16,color_FFFFFF,t_70" alt="复制 Url"></p><p>在 Android 上需要找域名为 <code>alicdn.com</code> 的 10KB 左右的 HTTP 请求。</p><h2 id="下载"><a href="#下载" class="headerlink" title="下载"></a>下载</h2><h3 id="工具准备"><a href="#工具准备" class="headerlink" title="工具准备"></a>工具准备</h3><p>此步骤可能需要在 Windows 上才能很好地进行。</p><p>本文中，我们使用 <a href="https://github.com/nilaoda/N_m3u8DL-CLI/releases/latest">N_m3u8DL-CLI</a> 来下载视频。本文更新时我寻找到了同作者制作的跨平台 <a href="https://github.com/nilaoda/N_m3u8DL-RE">N_m3u8DL-RE</a>，读者可以自行尝试。</p><p>下载最新版的一个 zip 文件，里面包含分片合并工具和一个可视化程序：</p><p><img src="https://img-blog.csdnimg.cn/20200227093400262.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyNzYzNjgy,size_16,color_FFFFFF,t_70" alt="选择的文件"></p><h3 id="视频下载"><a href="#视频下载" class="headerlink" title="视频下载"></a>视频下载</h3><p>设置好参数并运行：</p><p><img src="https://img-blog.csdnimg.cn/2020022709380046.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyNzYzNjgy,size_16,color_FFFFFF,t_70" alt="示例参数"></p><p><img src="https://img-blog.csdnimg.cn/2020022709385710.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyNzYzNjgy,size_16,color_FFFFFF,t_70" alt="运行过程"></p><h2 id="完成"><a href="#完成" class="headerlink" title="完成"></a>完成</h2><p>合并完成后就可以在 Downloads 目录下找到 mp4 文件啦！</p><p><img src="https://img-blog.csdnimg.cn/20200227094028358.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyNzYzNjgy,size_16,color_FFFFFF,t_70" alt="文件"></p>]]>
    </content>
    <id>https://blog.ltfan.top/2020/02/26/Download-DingTalk-Videos/</id>
    <link href="https://blog.ltfan.top/2020/02/26/Download-DingTalk-Videos/"/>
    <published>2020-02-26T08:57:18.000Z</published>
    <summary>
      <![CDATA[<h2 id="更新说明"><a href="#更新说明" class="headerlink" title="更新说明"></a>更新说明</h2><p>本文首先发布在 <a href="https://blog.csdn.net/qq_42763682/article/details/104529683">CSDN</a>，本次更新使文章表述更加严谨规范，且新增了一些链接。</p>
<h2 id="引"><a href="#引" class="headerlink" title="引"></a>引</h2><blockquote>
<p>最近在上网课，想在网上上传直播录像或者剪辑一些搞笑的片段上传。</p>
<p>但是当我打开电脑想点“下载”的时候……</p>
<p><img src="https://img-blog.csdnimg.cn/20200227090154600.png" alt="Ooops"></p>
</blockquote>
<p>这个方法适用于 Android、Windows，因为我只在这两个平台测试过。Android 稍微麻烦一点，Windows 则需要一些工具。</p>]]>
    </summary>
    <title>利用抓包下载钉钉直播回放</title>
    <updated>2022-12-10T08:57:18.000Z</updated>
  </entry>
</feed>
