<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
  xmlns:atom="http://www.w3.org/2005/Atom"
  xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>loverorien&#39;s Blog</title>
    <link>http://blog.778080.xyz/</link>
    
    <atom:link href="http://blog.778080.xyz/atom.xml" rel="self" type="application/rss+xml"/>
    
    <description>心若有所向往，何惧道阻且长</description>
    <pubDate>Mon, 08 Dec 2025 12:00:00 GMT</pubDate>
    <generator>http://hexo.io/</generator>
    
    <item>
      <title>AI竞赛</title>
      <link>http://blog.778080.xyz/archives/ai/</link>
      <guid>http://blog.778080.xyz/archives/ai/</guid>
      <pubDate>Wed, 25 Dec 2024 12:00:00 GMT</pubDate>
      
      <description>未来已来</description>
      
      
      
      <content:encoded><![CDATA[<h1 id="🤖-大模型"><a href="#🤖-大模型" class="headerlink" title="🤖 大模型"></a>🤖 大模型</h1><ul><li><strong><a href="https://openai.com/">OpenAI&#x2F;ChatGPT</a></strong> 优势：先驱者与市场领导者，付费用户最多</li><li><strong><a href="https://deepmind.google/technologies/gemini/">Google&#x2F;Gemini</a></strong>  优势：多模态，谷歌强大的生态</li><li><strong><a href="https://claude.ai/">Anthropic&#x2F;Claude</a></strong> 优势：程序编码</li><li><strong><a href="https://www.doubao.com/">字节跳动&#x2F;豆包</a></strong>  优势：国内抖音，流量为王</li><li><strong><a href="https://x.ai/">xAI&#x2F;Grok</a></strong>  优势：背靠 X 社媒强大的实时热门社交数据</li></ul><p>其他的不看好，最终只会留下几个通用模型和领域细分模型</p><h1 id="🏅-竞技"><a href="#🏅-竞技" class="headerlink" title="🏅 竞技"></a>🏅 竞技</h1><ul><li><strong>LMArena</strong> <strong><a href="https://blog.lmarena.ai/">博客</a></strong> <strong><a href="https://lmarena.ai/">排行榜</a></strong> <strong><a href="https://web.lmarena.ai/leaderboard/">WebDav 排行榜</a></strong></li><li><strong>Aider</strong> <strong><a href="https://aider.chat/docs/leaderboards">LLM 排行榜</a></strong></li><li><strong>Tracking</strong> <strong><a href="https://trackingai.org/">人工智能的政治偏见</a></strong></li><li><strong>heyAIworld</strong> <strong><a href="https://heyaiworld.com/">精选领先的 AI 工具合集</a></strong></li></ul><h1 id="🌐-平台端"><a href="#🌐-平台端" class="headerlink" title="🌐 平台端"></a>🌐 平台端</h1><ul><li><strong>NextChat</strong> <strong><a href="https://github.com/ChatGPTNextWeb/NextChat">Github</a></strong> <strong><a href="https://nextchat.club/">官网</a></strong> 轻量快速的 AI 对话助手</li><li><strong>Open WebUI</strong> <strong><a href="https://github.com/open-webui/open-webui">Github</a></strong> <strong><a href="https://openwebui.com/">官网</a></strong> 可拓展的自托管 AI 平台</li><li><strong>LobeChat</strong> <strong><a href="https://github.com/lobehub/lobe-chat">Github</a></strong> <strong><a href="https://lobechat.com/">官网</a></strong> 可拓展的自托管 AI 平台</li><li><strong>Chatbox</strong> <strong><a href="https://github.com/chatboxai/chatbox">Github</a></strong> <strong><a href="https://chatboxai.app/">官网</a></strong> 可拓展的自托管 AI 平台</li><li><strong>Cherry Studio</strong> <strong><a href="https://github.com/CherryHQ/cherry-studio">Github</a></strong> <strong><a href="https://cherry-ai.com/">官网</a></strong> 可拓展的自托管 AI 平台</li></ul><h1 id="🗄-API-管理分发"><a href="#🗄-API-管理分发" class="headerlink" title="🗄 API 管理分发"></a>🗄 API 管理分发</h1><ul><li><strong><a href="https://github.com/songquanpeng/one-api">One API</a></strong> 最早的 API 接口聚合管理</li><li><strong><a href="https://github.com/MartialBE/one-hub">One Hub</a></strong> 基于 one-api 二次开发</li><li><strong><a href="https://github.com/QuantumNous/new-api">New API</a></strong> 最知名的 API 接口聚合管理</li></ul><h1 id="📦-Serverless-容器部署"><a href="#📦-Serverless-容器部署" class="headerlink" title="📦 Serverless &#x2F; 容器部署"></a>📦 Serverless &#x2F; 容器部署</h1><ul><li><strong><a href="https://vercel.com/">Vercel</a></strong> 100GB免费计划，<strong>单个函数的最长执行时间是 10 秒</strong></li><li><strong><a href="https://console.run.claw.cloud/signin?link=OD2ZVOCI5RD6">ClawCloud Run</a></strong> Github 账户每月送5刀额度</li><li><strong><a href="https://dashboard.render.com/">Render</a></strong> 玄学绑卡，可使用 <strong><a href="https://uptimerobot.com/">UptimeRobot</a></strong> 解决休眠问题</li><li><strong><a href="https://www.cloudflare.com/">Cloudflare Pages</a></strong> 大善人不多介绍了</li></ul><h1 id="📄Nginx-配置"><a href="#📄Nginx-配置" class="headerlink" title="📄Nginx 配置"></a>📄Nginx 配置</h1><figure class="highlight nginx"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br></pre></td><td class="code"><pre><span class="line"><span class="section">server</span> &#123;</span><br><span class="line"><span class="attribute">listen</span> <span class="number">443</span> ssl;</span><br><span class="line">   <span class="attribute">http2</span> <span class="literal">on</span>;</span><br><span class="line"><span class="attribute">server_name</span> example.com;</span><br><span class="line"></span><br><span class="line"><span class="section">location</span> / &#123;</span><br><span class="line">           <span class="attribute">proxy_pass</span> http://127.0.0.1:3000;</span><br><span class="line"></span><br><span class="line"><span class="comment"># Add WebSocket support</span></span><br><span class="line"><span class="attribute">proxy_http_version</span> <span class="number">1</span>.<span class="number">1</span>;</span><br><span class="line"><span class="attribute">proxy_set_header</span> Upgrade <span class="variable">$http_upgrade</span>;</span><br><span class="line"><span class="attribute">proxy_set_header</span> Connection <span class="string">&quot;upgrade&quot;</span>;</span><br><span class="line"></span><br><span class="line"><span class="attribute">proxy_set_header</span> Host <span class="variable">$host</span>;</span><br><span class="line"><span class="attribute">proxy_set_header</span> X-Real-IP <span class="variable">$remote_addr</span>;</span><br><span class="line"><span class="attribute">proxy_set_header</span> X-Forwarded-For <span class="variable">$proxy_add_x_forwarded_for</span>;</span><br><span class="line"><span class="attribute">proxy_set_header</span> X-Forwarded-Proto <span class="variable">$scheme</span>;</span><br><span class="line"></span><br><span class="line"><span class="comment"># Disable proxy buffering for better streaming response from models</span></span><br><span class="line"><span class="attribute">proxy_cache</span> <span class="literal">off</span>;</span><br><span class="line"><span class="attribute">proxy_buffering</span> <span class="literal">off</span>;</span><br><span class="line"><span class="attribute">chunked_transfer_encoding</span> <span class="literal">on</span>;</span><br><span class="line"><span class="attribute">keepalive_timeout</span> <span class="number">300</span>;</span><br><span class="line">&#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure>]]></content:encoded>
      
      
      <category domain="http://blog.778080.xyz/categories/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/">人工智能</category>
      
      
      <category domain="http://blog.778080.xyz/tags/AI/">AI</category>
      
      
      <comments>http://blog.778080.xyz/archives/ai/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>自建影库Emby</title>
      <link>http://blog.778080.xyz/archives/build-emby/</link>
      <guid>http://blog.778080.xyz/archives/build-emby/</guid>
      <pubDate>Mon, 15 Apr 2024 12:00:00 GMT</pubDate>
      
      <description>我们永远拥有巴黎</description>
      
      
      
      <content:encoded><![CDATA[<div class="note blue icon-padding flat"><i class="note-icon fa-solid fa-bullhorn"></i><p>阅读本文需要有一定的 Linux、Docker 等计算机知识。什么？你不懂？Go to study, just do it!</p></div><div class="note blue icon-padding flat"><i class="note-icon fa-solid fa-bullhorn"></i><p>搭建麻烦，不想折腾，有没有适合懒人的？有！请直接看下面！</p></div><h1 id="Emby导航"><a href="#Emby导航" class="headerlink" title="Emby导航"></a>Emby导航</h1><p>公益：<a href="https://t.me/FreeEmbyGuide">Telegram: Contact @FreeEmbyGuide</a></p><p>付费：<a href="https://t.me/Emby_Navigation">Telegram: Contact @Emby_Navigation</a></p><h1 id="写在前面"><a href="#写在前面" class="headerlink" title="写在前面"></a>写在前面</h1><p>本文是基于阿里云盘资源搭建 Emby 影库，使用其他网盘&#x2F;本地硬盘搭建大部分也是可行的。尽管阿里审查严格，容易和谐资源，但耐不住用户数量庞大，资源分享快且全，并且可以 302 直链（使用阿里国内 CDN 来观看视频，速度很快）。</p><p>说起流媒体平台，国内有优酷、爱奇艺、腾讯视频这“三巨头”，国外则有 Netflix、Amazon Prime Video、Disney+、HBO 等“大佬”。但不知道你有没有发现，无论是国内还是国外的平台，都或多或少存在一些让人头疼的问题。</p><p>“国内平台？哎，说起来都是泪啊！会员+广告的双重‘折磨’，看个剧还得忍受中途插播的广告，这谁顶得住啊？虽然各大平台在自制内容上砸了不少钱，试图通过高质量的精品内容提升付费订阅的比例，但受限于有限的观众规模、注意力以及严格的内容监管，高质量内容的产出着实不易。更别提国内用户的付费习惯和版权意识还在‘襁褓’中呢。”</p><p>“再看看国外平台，貌似高大上了不少。用户订阅是主要收入来源，内容制作也更有针对性。虽然产出的内容不一定都达到极高的质量标准，但至少能够满足“标准线”的要求，更不用说其中不乏许多高质量的作品。在欧美，用户为优质内容付费已成为一种长期以来的习惯，而“标准线”以下的剧集则难以在欧美市场获得用户增长。但这’高大上’的背后，可是要付出不菲的订阅费用啊！虽说内容质量有保证，但对于我们的钱包来说，可是不小的负担呢。”</p><p>那么，有没有一种既能看到优质内容，又不用花费太多的方法呢？答案就是——Emby！</p><p>Emby 就像是一个神奇的百宝箱，里面藏着无数的影视珍宝，等着你去探索。它的自定义程度高得简直让人咋舌，就像是一个超级听话的管家，你想看什么它就能立刻呈上来，简直就是为“挑剔”的你量身定制的。</p><p>其次，内容多样性简直爆棚！内容的丰富程度？简直就是一座取之不尽、用之不竭的影视宝库！只要你的网盘&#x2F;本地硬盘容量够大，几百 T 甚至 PB 级的内容都不在话下。从黑白默片、经典老片到最新大片，应有尽有，简直就是一部活生生的电影发展史。</p><p>最让人欣喜的是，Emby 就像是一个没有广告打扰的私人影院。你可以在沙发上、床上，甚至是在马桶上（别笑，我知道你们有人这么干）尽情享受观影的乐趣。想在哪看就在哪看，爽歪歪！</p><p>哦，差点忘了提那令人垂涎的海报墙！精心整理的海报就像是一幅幅艺术品，让你在选片的时候就开始享受视觉盛宴了。</p><p>生命短暂，我用 Emby。但别忘了，尊重版权不仅是法律的要求，也是对创作者劳动的尊重。</p><h1 id="成品展示"><a href="#成品展示" class="headerlink" title="成品展示"></a>成品展示</h1><ul><li>99% 上榜影片均可在我的自建影视库上观看（天朝特色，容易和谐）</li><li>片源大部分为 1080P HEVC，服务端不解码，请使用外部播放器</li><li>推荐下载使用 Potplayer、VLC、MX Player、Emby 播放器</li><li><a href="https://tv.778080.xyz/">自建影视服(排行榜电影)</a> <span class="hide-inline"><button type="button" class="hide-button" style="background-color: #FF7242;color: #fff">账号密码</button><span class="hide-content">账号user密码user</span></span></li><li><a href="https://github.com/lateautumn2/MisakaF-nginx-reProxy">Emby 前后端分离反代</a> <span class="hide-inline"><button type="button" class="hide-button" style="background-color: #FF7242;color: #fff">分离服</button><span class="hide-content">misakaf 纸片人</span></span></li></ul><p><img src="https://gh.778080.xyz/https://raw.githubusercontent.com/EmmaHermione/emma/master/images/movie/MZWtkNJN.png" alt="毒师镇楼"></p><p><img src="https://gh.778080.xyz/https://raw.githubusercontent.com/EmmaHermione/emma/master/images/movie/KNCZNGZd.png" alt="双榜入选，不同价值观的共同爱好doge"></p><p><img src="https://gh.778080.xyz/https://raw.githubusercontent.com/EmmaHermione/emma/master/images/movie/HbZgnvC.png" alt="希望让你自由"></p><h1 id="安装-Alist"><a href="#安装-Alist" class="headerlink" title="安装 Alist"></a>安装 Alist</h1><p><a href="https://alist.nn.ci/zh/guide/">官方文档</a>很详细了</p><p><a href="https://alist.nn.ci/zh/guide/drivers/aliyundrive_open.html">配置阿里云盘 Open</a>很详细了</p><p>注：<strong>WebDAV 策略</strong> 选择 <strong>本地</strong> 可以直接通过 Emby 刮削元数据及海报到阿里云盘。</p><h1 id="安装-Clouddrive2-付费"><a href="#安装-Clouddrive2-付费" class="headerlink" title="安装 Clouddrive2 (付费)"></a>安装 Clouddrive2 (付费)</h1><p>推荐使用 Docker 安装</p><p><a href="https://www.clouddrive2.com/download.html">CloudDrive 下载</a></p><p><a href="https://www.clouddrive2.com/docker.html">Docker 安装指南</a></p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">services:</span></span><br><span class="line">  <span class="attr">cloudnas:</span></span><br><span class="line">    <span class="attr">image:</span> <span class="string">cloudnas/clouddrive2</span></span><br><span class="line">    <span class="attr">container_name:</span> <span class="string">cd2</span></span><br><span class="line">    <span class="attr">ports:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">&quot;127.0.0.1:19798:19798&quot;</span></span><br><span class="line">    <span class="attr">environment:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">CLOUDDRIVE_HOME=/Config</span></span><br><span class="line">    <span class="attr">volumes:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">/mnt:/CloudNAS:shared</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">/root/cd2:/Config</span></span><br><span class="line">    <span class="attr">devices:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">/dev/fuse:/dev/fuse</span></span><br><span class="line">    <span class="attr">restart:</span> <span class="string">unless-stopped</span></span><br><span class="line">    <span class="attr">privileged:</span> <span class="literal">true</span></span><br></pre></td></tr></table></figure><div class="note red icon-padding flat"><i class="note-icon fa-solid fa-bullhorn"></i><p>clouddrive2 免费用户只允许挂载一个</p></div><h1 id="安装-Rclone-免费"><a href="#安装-Rclone-免费" class="headerlink" title="安装 Rclone (免费)"></a>安装 Rclone (免费)</h1><figure class="highlight sh"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 安装 fuse3（防止报错，新版 rclone 需要）</span></span><br><span class="line">apt install fuse3</span><br><span class="line"><span class="comment"># 安装 Rclone</span></span><br><span class="line">curl https://rclone.org/install.sh | <span class="built_in">sudo</span> bash</span><br><span class="line"><span class="comment"># 创建挂载目录（必须自行创建，否则启动 rclone 报错）</span></span><br><span class="line"><span class="built_in">mkdir</span> -p /mnt/yunpan</span><br><span class="line"><span class="comment"># 配置</span></span><br><span class="line">rclone config</span><br></pre></td></tr></table></figure><p><code>rclone config</code> 新建配置，选择 WebDAV 进行配置即可</p><p>自行查看下面文章进行配置，rclone 与 alist  账户密码对应</p><p><a href="https://blog.csdn.net/weixin_40034633/article/details/119755148">群晖 &#x2F; Linux 挂载阿里云盘实现 Emby 播放，打造属于自己的家庭影院！</a></p><h2 id="挂载命令"><a href="#挂载命令" class="headerlink" title="挂载命令"></a>挂载命令</h2><p>直链扫库参数</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">nohup rclone mount yunpan: /mnt/yunpan --use-mmap --umask 000 --default-permissions --allow-non-empty --allow-other --dir-cache-time 24h --cache-dir=/mnt/cache --vfs-cache-mode full --buffer-size 32M --vfs-read-chunk-size 64M --vfs-read-chunk-size-limit 1G &amp;</span><br></pre></td></tr></table></figure><p>非直链观看参数</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">rclone mount yunpan: /mnt/yunpan --use-mmap --umask 000 --default-permissions --allow-other --allow-non-empty --dir-cache-time 24h --cache-dir=/mnt/cache --vfs-cache-mode full --buffer-size 256M --vfs-read-ahead 512M --vfs-read-chunk-size 32M --vfs-read-chunk-size-limit 128M --vfs-cache-max-size 10G --daemon</span><br></pre></td></tr></table></figure><ul><li><code>yunpan: /mnt/yunpan</code>：挂载远程存储的名称及挂载远程存储的本地目录。</li><li><code>--use-mmap</code>：使用内存映射加速文件读取。</li><li><code>--umask 000</code>：设置文件和目录的默认权限掩码(<code>000</code> 所有用户都有读、写和执行权限)。</li><li><code>--default-permissions</code>：使用默认文件权限，忽略远程权限。</li><li><code>--allow-other</code>：允许除挂载所有者外的其他用户访问挂载的文件系统。</li><li><code>--allow-non-empty</code>：允许挂载到非空目录。</li><li><code>--dir-cache-time 24h</code>：设置目录缓存的有效时间，减少对远程服务器的请求。</li><li><code>--cache-dir=/mnt/cache</code>：设置缓存目录的位置。</li><li><code>--vfs-cache-mode full</code>：设置虚拟文件系统(VFS)缓存模式为完全缓存。</li><li><code>--buffer-size 256M</code>：设置每个打开文件的缓冲区大小。</li><li><code>--vfs-read-ahead 512M</code>：预读取数据量的大小，提高读取性能。</li><li><code>--vfs-read-chunk-size 32M</code>：设置读取数据块的大小。</li><li><code>--vfs-read-chunk-size-limit 128M</code>：设置读取块大小的上限。</li><li><code>--vfs-cache-max-size 10G</code>：设置VFS缓存的最大空间。</li><li><code>--daemon</code>：在后台以守护进程方式运行</li><li><code>--poll-interval 20s</code>：设置轮询检查远程更新的时间间隔。***</li><li><code>--vfs-cache-max-age 336h</code>: 设置虚拟文件系统（VFS）缓存中文件的最大存活时间。***</li></ul><h2 id="添加挂载守护进程"><a href="#添加挂载守护进程" class="headerlink" title="添加挂载守护进程"></a>添加挂载守护进程</h2><figure class="highlight sh"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 普通单位文件(只能创建一个服务实例)，单挂载</span></span><br><span class="line"><span class="built_in">cat</span> &gt; /etc/systemd/system/rclone.service &lt;&lt;<span class="string">EOF</span></span><br><span class="line"><span class="string">[Unit]</span></span><br><span class="line"><span class="string">Description=Rclone Mount Service</span></span><br><span class="line"><span class="string">AssertPathIsDirectory=/mnt/yunpan</span></span><br><span class="line"><span class="string">After=network-online.target</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">[Service]</span></span><br><span class="line"><span class="string">Type=simple</span></span><br><span class="line"><span class="string">ExecStart=/usr/bin/rclone mount yunpan: /mnt/yunpan --use-mmap --umask 000 --default-permissions --allow-non-empty --allow-other --dir-cache-time 24h --cache-dir=/mnt/cache --vfs-cache-mode full --buffer-size 32M --vfs-read-chunk-size 64M --vfs-read-chunk-size-limit 1G</span></span><br><span class="line"><span class="string">ExecStop=/bin/fusermount -qzu /mnt/yunpan</span></span><br><span class="line"><span class="string">Restart=on-failure</span></span><br><span class="line"><span class="string">User=root</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">[Install]</span></span><br><span class="line"><span class="string">WantedBy=default.target</span></span><br><span class="line"><span class="string">EOF</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 启动服务实例成功再启用自动启动</span></span><br><span class="line">systemctl start rclone &amp;&amp; systemctl <span class="built_in">enable</span> rclone</span><br><span class="line"><span class="comment"># 停止服务实例</span></span><br><span class="line">systemctl stop rclone</span><br><span class="line"><span class="comment"># 重启服务实例</span></span><br><span class="line">systemctl restart rclone</span><br><span class="line"><span class="comment"># 查看服务状态</span></span><br><span class="line">systemctl status rclone</span><br></pre></td></tr></table></figure><figure class="highlight sh"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 模板单位文件(可以创建多个服务实例)，多挂载</span></span><br><span class="line"><span class="built_in">cat</span> &gt; /etc/systemd/system/rclone@.service &lt;&lt;<span class="string">EOF</span></span><br><span class="line"><span class="string">[Unit]</span></span><br><span class="line"><span class="string">Description=Rclone Mount Service for %i</span></span><br><span class="line"><span class="string">After=network-online.target</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">[Service]</span></span><br><span class="line"><span class="string">Type=simple</span></span><br><span class="line"><span class="string">ExecStart=/usr/bin/rclone mount %i: /mnt/%i --use-mmap --umask 000 --default-permissions --allow-non-empty --allow-other --dir-cache-time 24h --cache-dir=/mnt/cache --vfs-cache-mode full --buffer-size 32M --vfs-read-chunk-size 64M --vfs-read-chunk-size-limit 1G</span></span><br><span class="line"><span class="string">ExecStop=/bin/fusermount -qzu /mnt/%i</span></span><br><span class="line"><span class="string">Restart=on-failure</span></span><br><span class="line"><span class="string">User=root</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">[Install]</span></span><br><span class="line"><span class="string">WantedBy=default.target</span></span><br><span class="line"><span class="string">EOF</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 启动服务实例</span></span><br><span class="line">systemctl start rclone@挂载的名称</span><br><span class="line"><span class="comment"># 使服务实例在系统启动时自动启动</span></span><br><span class="line">systemctl <span class="built_in">enable</span> rclone@yunpan</span><br><span class="line"><span class="comment"># 停止服务实例</span></span><br><span class="line">systemctl stop rclone@yunpan</span><br><span class="line"><span class="comment"># 重启服务实例</span></span><br><span class="line">systemctl restart rclone@yunpan</span><br><span class="line"><span class="comment"># 查看服务状态</span></span><br><span class="line">systemctl status rclone@yunpan</span><br></pre></td></tr></table></figure><h1 id="安装-Emby"><a href="#安装-Emby" class="headerlink" title="安装 Emby"></a>安装 Emby</h1><p>推荐使用 Docker 安装</p><p><a href="https://hub.docker.com/r/amilys/embyserver">amilys 美化版</a>（本文采用并推荐）</p><p><a href="https://hub.docker.com/r/lovechen/embyserver">lovechen 开心版</a>（已停止更新）</p><p><a href="https://github.com/bpking1/embyExternalUrl/blob/main/emby2Alist/docker-compose.yml">阿里云盘直链版</a>（<a href="https://blog.738888.xyz/posts/emby_jellyfin_to_alist_directlink">安装参考文章</a>）</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">services:</span></span><br><span class="line">  <span class="attr">emby:</span></span><br><span class="line">    <span class="attr">image:</span> <span class="string">amilys/embyserver:beta</span></span><br><span class="line">    <span class="attr">container_name:</span> <span class="string">emby</span></span><br><span class="line">    <span class="attr">environment:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">UID=0</span> <span class="comment"># The UID to run emby as (default: 2)</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">GID=0</span> <span class="comment"># The GID to run emby as (default 2)</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">GIDLIST=0</span> <span class="comment"># A comma-separated list of additional GIDs to run emby as (default: 2)</span></span><br><span class="line">    <span class="attr">volumes:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">/root/emby:/config</span> <span class="comment"># Configuration directory</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">/mnt/yunpan:/ali</span> <span class="comment"># Media directory</span></span><br><span class="line">    <span class="attr">ports:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="number">127.0</span><span class="number">.0</span><span class="number">.1</span><span class="string">:8096:8096</span> <span class="comment"># HTTP port</span></span><br><span class="line">    <span class="attr">restart:</span> <span class="string">unless-stopped</span></span><br></pre></td></tr></table></figure><h1 id="阿里云盘直链"><a href="#阿里云盘直链" class="headerlink" title="阿里云盘直链"></a>阿里云盘直链</h1><p>目前 <strong>本地 WebDAV</strong> 策略为兼容性最好的方式，在 Emby 中观看视频时，是先从 WebDAV 下载到本地再推流到 Emby 播放的，所以 <strong>走的是服务器的流量</strong>。</p><p><strong>302 重定向</strong> 能够获取到阿里云盘的直链，但是无法使用 Emby 进行刮削。</p><p>如果只是为了方便观看，可以使用 302 重定向模式，然后用 nplayer 挂载 WebDAV，这样走的就是阿里云官方的流量了，4K 不卡。</p><p>为了方便 Emby 可以直接刮削数据到阿里云盘，采用 <strong>本地 WebDAV</strong> 并使用脚本<a href="https://github.com/bpking1/embyExternalUrl/tree/main/emby2Alist">bpking1&#x2F;embyExternalUrl&#x2F;emby2Alist</a> 转直链，本文采用安装版 Nginx + Emby（Docker）方式部署。如果你不太懂 Nginx，项目提供了 <a href="https://github.com/bpking1/embyExternalUrl/blob/main/emby2Alist/docker-compose.yml">Docker 容器（Nginx + Emby）</a> 可以直接部署，<a href="https://blog.738888.xyz/posts/emby_jellyfin_to_alist_directlink">参考教程</a>。</p><p><strong>注：下文为 Nginx + Emby（Docker）方式部署，需要有一定的 Nginx 经验。</strong></p><h2 id="安装-Njs-模块"><a href="#安装-Njs-模块" class="headerlink" title="安装 Njs 模块"></a>安装 Njs 模块</h2><figure class="highlight sh"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 如果已经安装了 Nginx，添加 njs 模块</span></span><br><span class="line">apt update</span><br><span class="line">apt install nginx-module-njs</span><br><span class="line"></span><br><span class="line"><span class="comment">## 在 nginx.conf 文件中添加</span></span><br><span class="line">load_module modules/ngx_http_js_module.so;</span><br><span class="line"></span><br><span class="line"><span class="comment">## 重启 nginx</span></span><br><span class="line">systemctl restart nginx</span><br><span class="line"></span><br><span class="line"><span class="comment"># 编译安装 Nginx 时包含 njs 模块</span></span><br><span class="line">./configure --add-module=实际的 njs 模块源代码路径</span><br><span class="line">make</span><br><span class="line"><span class="built_in">sudo</span> make install</span><br></pre></td></tr></table></figure><h2 id="Nginx-配置"><a href="#Nginx-配置" class="headerlink" title="Nginx 配置"></a>Nginx 配置</h2><p>下载 <a href="https://github.com/bpking1/embyExternalUrl/tree/main/emby2Alist">emby2Alist</a> 的 Nginx 目录，根据实际情况更改配置文件，无特殊要求只需要更改以下文件</p><p>&#x2F;nginx&#x2F;conf.d&#x2F;constant.js，&#x2F;nginx&#x2F;conf.d&#x2F;emby.conf</p><p>&#x2F;nginx&#x2F;conf.d&#x2F;config&#x2F;constant-mount.js</p><p>&#x2F;nginx&#x2F;conf.d&#x2F;includes&#x2F;http.conf或者&#x2F;nginx&#x2F;conf.d&#x2F;includes&#x2F;https.conf</p><p>&#x2F;nginx&#x2F;conf.d&#x2F;includes&#x2F;server-group.conf</p><figure class="highlight sh"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 直链播放日志查看</span></span><br><span class="line"><span class="built_in">tail</span> -f -n 10 /var/log/nginx/access.log /var/log/nginx/error.log  | grep js:</span><br></pre></td></tr></table></figure><blockquote><p>注：在constant.js文件中有一行配置为const embyMountPath &#x3D; [“&#x2F;mnt”];</p><p>当Emby是宿主机运行，路径应该为宿主机的路径，当Emby是Docker运行，路径应该为容器内的路径</p><p>挂载到alist的目录 &#x2F;movie<br>alist admin 用户，播放 高分剧集&#x2F;火线&#x2F;火线S01E01.mkv ，请求 &#x2F;api&#x2F;fs&#x2F;get 接口，请求为<br>{<br>    “password”: “”,<br>    “path”: “&#x2F;movie&#x2F;高分剧集&#x2F;火线&#x2F;火线S01E01.mkv”<br>}</p><p>rclone 挂载到&#x2F;mnt&#x2F;yunpan，emby 播放视频，请求emby接口 &#x2F;emby&#x2F;Items&#x2F;123&#x2F;PlaybackInfo 获取播放信息</p><p>{<br>    “MediaSources”: [<br>        {<br>            &#x2F;&#x2F; ……<br>            “Path”: “&#x2F;mnt&#x2F;yunpan&#x2F;movie&#x2F;高分剧集&#x2F;火线&#x2F;火线S01E01.mkv”<br>            &#x2F;&#x2F; ……<br>        }<br>    ]<br>}</p><p>当emby是宿主机运行<br>要想将 “Path”: “&#x2F;mnt&#x2F;yunpan&#x2F;movie&#x2F;高分剧集&#x2F;火线&#x2F;火线S01E01.mkv” 截取成alist接口的path，那么，配置<br>embyMountPath 配置为 &#x2F;mnt&#x2F;yunpan，截取成 &#x2F;yunpan&#x2F;movie&#x2F;高分剧集&#x2F;火线&#x2F;火线S01E01.mkv 就是alist的接口参数。</p><p>相关逻辑在 emby.js ，如下：</p><pre><code>//fetch alist direct linkconst alistFilePath = embyRes.replace(embyMountPath, &#39;&#39;)</code></pre><p>其中，embyRes 是 “&#x2F;mnt&#x2F;yunpan&#x2F;movie&#x2F;高分剧集&#x2F;火线&#x2F;火线S01E01.mkv” ，replace后是 &#x2F;movie&#x2F;高分剧集&#x2F;火线&#x2F;火线S01E01.mkv</p><p>当emby是docker运行，将宿主机 &#x2F;mnt&#x2F;yunpan 映射到容器 &#x2F;ali。</p><p>那么 &#x2F;emby&#x2F;Items&#x2F;123&#x2F;PlaybackInfo 接口返回应该是 “&#x2F;ali&#x2F;movie&#x2F;高分剧集&#x2F;火线&#x2F;火线S01E01.mkv”<br>同理，embyMountPath 配置为 &#x2F;ali 即可截取正确</p></blockquote><h2 id="Emby配置"><a href="#Emby配置" class="headerlink" title="Emby配置"></a>Emby配置</h2><ul><li>在 Emby 设置中将 用户 → 播放 允许转码关掉</li><li>在 Emby 设置中将 转码 → 启用硬件加速 关掉</li></ul><h1 id="解除阿里云盘第三方应用限速限流"><a href="#解除阿里云盘第三方应用限速限流" class="headerlink" title="解除阿里云盘第三方应用限速限流"></a>解除阿里云盘第三方应用限速限流</h1><p>阿里云盘上线第三方权益包（1T 流量，SVIP 象征性的送 10G）。权益包和 SVIP 是不同的权益，权益包提供在第三方应用使用云盘上传、下载等权益，SVIP 则是提供在官方云盘客户端（如手机移动端、电脑 PC 端）的使用权益。也就是说，不购买第三方权益包的用户使用基于开放平台调用阿里云盘的所有第三方应用都会被限速（单线程 500KB&#x2F;s，最大 6 线程）。</p><p>如何解决？<del>充钱购买第三方权益包！</del> 你这不是欺负老实人（SVIP）吗？</p><p>SVIP 的权益包含阿里云盘 TV 的原画观看，这个 TV 版客户端是不计入第三方流量的，所以只需要获取到 TV 版的 Token 就能绕过限速限流了。该方案已被阿里修复过一次，换成了加密接口，虽然又被破解了。但是指不定阿里就会再次动手修复，如果那一天到来，也就只能充钱妥协或者使用其他网盘&#x2F;本地硬盘。</p><h2 id="懒人版"><a href="#懒人版" class="headerlink" title="懒人版"></a>懒人版</h2><p>获取刷新令牌：<a href="https://alipan-tv-token.pages.dev/">https://alipan-tv-token.pages.dev</a> or <a href="https://www.voicehub.top/oauth/alipan">https://www.voicehub.top/oauth/alipan</a></p><p>修改 AList 的 Oauth 令牌链接为：<a href="https://alipan-tv-token.pages.dev/refresh">https://alipan-tv-token.pages.dev/refresh</a></p><h2 id="折腾版"><a href="#折腾版" class="headerlink" title="折腾版"></a>折腾版</h2><p>自建 Tv Token 服务器</p><figure class="highlight sh"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">docker run -d \</span><br><span class="line">    -p 34278:34278 \</span><br><span class="line">    --name=xiaoya-aliyuntvtoken_connector \</span><br><span class="line">    --restart=always \</span><br><span class="line">    ddsderek/xiaoya-glue:aliyuntvtoken_connector</span><br></pre></td></tr></table></figure><p>通过上面链接获取刷新令牌</p><p>修改 AList 的 Oauth 令牌链接为：<a href="http://docker.host:34278/oauth/alipan/token">http://docker.host:34278/oauth/alipan/token</a></p><p>自建 Tv Token 服务器</p><figure class="highlight sh"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">docker run --name=alipan-tv-token -d -p 3000:3000 ghcr.io/ilay1678/alipan-tv-token:latest</span><br></pre></td></tr></table></figure><p>针对 AList 用户，你可以将 <code>alist</code> 和 <code>alipan-tv-token</code> 容器加入同一个网络，如 <code>alist-network</code></p><figure class="highlight sh"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 创建网络</span></span><br><span class="line">docker network create alist-network</span><br><span class="line"><span class="comment"># 连接容器到网络</span></span><br><span class="line">docker network connect alist-network alist</span><br><span class="line">docker network connect alist-network alipan-tv-token</span><br><span class="line">---下面为取消命令---</span><br><span class="line"><span class="comment"># 断开容器与网络的连接</span></span><br><span class="line">docker network disconnect alist-network alist</span><br><span class="line">docker network disconnect alist-network alipan-tv-token</span><br><span class="line"><span class="comment"># 删除网络</span></span><br><span class="line">docker network <span class="built_in">rm</span> alist-network</span><br></pre></td></tr></table></figure><p>获取刷新令牌：<a href="http://docker.host:3000/">http://docker.host:3000</a></p><p>修改 AList 的 Oauth 令牌链接为：<a href="http://alipan-tv-token:3000/refresh">http://alipan-tv-token:3000/refresh</a></p><h1 id="OverlayFS-可选优化"><a href="#OverlayFS-可选优化" class="headerlink" title="OverlayFS 可选优化"></a>OverlayFS 可选优化</h1><p>由于元数据和图片放在网盘上，加载速度会比放在本地慢一些</p><p>所以我们可以使用 OverlayFS 将图片和元数据文件储存到本地</p><blockquote><p>OverlayFS（Overlay File System）是一种联合文件系统，它允许将不同目录挂载到同一个虚拟文件系统下，使得多个文件系统的内容可以被同时访问。OverlayFS特别适用于轻量级的容器虚拟化技术，例如Docker和Podman，因为它可以在不复制整个文件系统的情况下，为每个容器提供一个独立的视图。</p><p>OverlayFS的工作原理基于下面几个概念：</p><ol><li><strong>底层（Lower Layer）</strong>：这是只读层，可以包含一个或多个只读目录。这些目录被叠加在一起，形成底层文件系统。</li><li><strong>上层（Upper Layer）</strong>：这是一个可写层，位于底层之上。所有对文件系统的写操作都会发生在这一层。</li><li><strong>工作目录（Workdir）</strong>：OverlayFS要求指定一个工作目录，用于存放一些必要的元数据和临时文件。工作目录必须和上层在同一个文件系统上。</li><li><strong>合并层（Merged Layer）</strong>：这是上层和底层合并后对用户可见的文件系统。当用户查看合并层时，他们可以看到底层的文件和目录，以及上层的任何更改或新增文件。</li></ol></blockquote><h2 id="配置-OverlayFS"><a href="#配置-OverlayFS" class="headerlink" title="配置 OverlayFS"></a>配置 OverlayFS</h2><figure class="highlight sh"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 创建目录</span></span><br><span class="line"><span class="built_in">mkdir</span> /mnt/upper /mnt/work /mnt/merge</span><br></pre></td></tr></table></figure><ul><li>upper：上层目录，可写层</li><li>work： 工作目录，存储临时文件</li><li>merge： 合并出的新目录</li></ul><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br></pre></td><td class="code"><pre><span class="line"># 第一次运行建议加上 --dry-run 确保指令没有出错，同时可以查看图片和 nfo 总共的文件大小，方便分配空间（仅用于测试命令是否正确，不会真正进行任何文件操作）</span><br><span class="line">rclone copy yunpan:/movie /mnt/upper/movie --include &quot;*.&#123;png,jpg,nfo&#125;&quot; -P -v --dry-run</span><br><span class="line"></span><br><span class="line"># 方式一（命令指定筛选规则）</span><br><span class="line">rclone copy yunpan:/movie /mnt/upper/movie --include &quot;*.&#123;png,jpg,nfo&#125;&quot; -P -v --transfers=20</span><br><span class="line"></span><br><span class="line"># 方式二（外部文件指定筛选规则）</span><br><span class="line">cat &gt; emby.txt &lt;&lt;EOF</span><br><span class="line">+ *.jpg</span><br><span class="line">+ *.png</span><br><span class="line">+ *.nfo</span><br><span class="line">- *</span><br><span class="line">EOF</span><br><span class="line"></span><br><span class="line">rclone copy yunpan:/movie /mnt/upper/movie --filter-from emby.txt -P -v --transfers=20</span><br></pre></td></tr></table></figure><ul><li><code>yunpan:/movie</code>: 这是源路径，也就是你 rclone 配置的路径。</li><li><code>/mnt/upper/movie</code>: 这是目的地路径，OverlayFS 的上层目录。</li><li><code>-P</code>: 这个参数用于显示进度信息，包括当前传输的百分比、速度和剩余时间。</li><li><code>-v</code>: 这个参数用于增加命令的冗长输出（verbose），提供更多的详细信息，有助于调试或了解命令的执行情况。</li><li><code>--include &quot;*.&#123;png,jpg,nfo&#125;&quot;</code>: 这个参数指定一个匹配模式，只有符合该模式的文件才会被复制。</li><li><code>--filter-from emby.txt</code>: 这个参数指定一个文件，按照文件的过滤规则复制。</li><li><code>--transfers=20</code>: 这个参数用于指定同时进行的最大文件传输数目。</li><li><code>--dry-run</code>: 模拟执行命令并展示详细信息，但不会真正地进行任何文件操作。</li></ul><h2 id="挂载-OverlayFS-命令"><a href="#挂载-OverlayFS-命令" class="headerlink" title="挂载 OverlayFS 命令"></a>挂载 OverlayFS 命令</h2><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">mount -t overlay overlay -o lowerdir=/mnt/yunpan,upperdir=/mnt/upper,workdir=/mnt/work /mnt/merge</span><br></pre></td></tr></table></figure><ul><li><code>lowerdir=/mnt/yunpan</code>: 代表底层目录，只读层，进行读操作优先读取上层目录，读不到的才会读这里（比如视频文件）。</li><li><code>upperdir=/mnt/upper</code>：代表上层目录，可写层，所有对文件的更改在这个目录中进行。</li><li><code>workdir=/mnt/work</code>：代表工作目录，存储临时文件，用于 OverlayFS 的内部需要，必须和 <code>upperdir</code> 在同一个文件系统上。</li><li><code>/mnt/merge</code>：合并出的新目录，也就是我们的挂载点，后续对该目录进行访问。</li></ul><h2 id="注意"><a href="#注意" class="headerlink" title="注意"></a>注意</h2><p>如果使用该方案优化，请将 Docker 宿主机映射路径改为合并新目录的路径，也就是 &#x2F;mnt&#x2F;merge，而不是使用 rclone 挂载路径</p><h1 id="Strm-文件"><a href="#Strm-文件" class="headerlink" title="Strm 文件"></a>Strm 文件</h1><p>strm 文件简单来说就是一个文本文件，里面存储的是媒体真实的访问路径（可以是本地绝对路径，也可以是日常见到的 HTTP&#x2F;HTTPS 的网络资源路径）。strm 文件在扫库过程中不需要解析文件，因此大大提升了扫库效率。</p><p>由于网盘通常存在风控规则，导致无法大批量扫描和刮削视频文件，我仅收录了豆瓣和 IMDb Top 250 的电影及高分剧集，大概在五六百部视频下未受到风控影响。刮削软件可以把 strm 文件视作视频文件，根据文件名获取信息，而无需去网盘读取文件，因此不会触发网盘的风控。</p><p>相关项目，用法其实也不难，挂载好生成 strm 文件的目录即可</p><ul><li><a href="https://github.com/shenxianmq/Auto_Symlink">AutoSymlink</a></li><li><a href="https://github.com/sjtuross/StrmAssistant">StrmAssistant</a></li><li><a href="https://github.com/Akimio521/AutoFilm">AutoFilm</a></li></ul><h1 id="小雅"><a href="#小雅" class="headerlink" title="小雅"></a>小雅</h1><p>本文是基于自己的阿里云盘资源搭建 Emby 影库，如果不想自己查找维护资源或者希望资源多而全的，可搭建小雅 Alist，相关教程或资源已在下方</p><ul><li>小雅<a href="http://alist.xiaoya.pro/">官网</a>&#x2F;<a href="https://t.me/xiaoyaliu00">群聊</a></li><li>小雅<a href="https://www.kdocs.cn/l/cvEe3cv6dGkH">文档1</a>&#x2F;<a href="https://xiaoyaliu.notion.site/xiaoya-docker-69404af849504fa5bcf9f2dd5ecaa75f#485235da8be14e46a7bb4852fc437ccd">文档2</a></li><li>融合脚本<a href="https://github.com/DDS-Derek/xiaoya-alist">DDS-Derek&#x2F;xiaoya-alist</a></li></ul><h1 id="Emby-客户端"><a href="#Emby-客户端" class="headerlink" title="Emby 客户端"></a>Emby 客户端</h1><h2 id="官方客户端"><a href="#官方客户端" class="headerlink" title="官方客户端"></a>官方客户端</h2><ul><li><a href="https://emby.media/download.html">Emby</a>：官方客户端，不推荐，不差钱的可以支持一下</li></ul><h2 id="Android-Android-TV"><a href="#Android-Android-TV" class="headerlink" title="Android &#x2F; Android TV"></a>Android &#x2F; Android TV</h2><ul><li><a href="https://t.me/yamby_release">Yamby</a>：小秘新开发的第三方 Emby 客户端</li><li><a href="https://t.me/Hills_app">Hills</a>：第三方 Emby 客户端</li></ul><h2 id="Windows-Linux"><a href="#Windows-Linux" class="headerlink" title="Windows &#x2F; Linux"></a>Windows &#x2F; Linux</h2><ul><li><a href="https://github.com/tsukinaha/tsukimi">Tsukimi</a>：第三方 Emby 客户端，支持 Windows 和 Linux</li><li><a href="https://t.me/+UjSx6UcD8vI0MmZh">Femor</a>：第三方 Emby 客户端，支持多平台</li><li><a href="https://t.me/Emby_smzase">Emby小秘版</a>：已不再更新，备份</li></ul><h2 id="Apple-Apple-TV"><a href="#Apple-Apple-TV" class="headerlink" title="Apple &#x2F; Apple TV"></a>Apple &#x2F; Apple TV</h2><ul><li><a href="https://apps.apple.com/us/app/infuse-video-player/id1136220934">Infuse</a>：纯苹果生态，付费最强播放器</li><li><a href="https://apps.apple.com/us/app/senplayer-hdr-media-player/id6443975850">SenPlayer</a>：目前功能全免费，支持Emby，Jellfyfin，百度网盘，阿里网盘等视频源</li></ul><h1 id="参考-推荐"><a href="#参考-推荐" class="headerlink" title="参考&#x2F;推荐"></a>参考&#x2F;推荐</h1><ul><li><a href="https://blog.738888.xyz/posts/emby_jellyfin_to_alist_directlink"><strong>emby挂载阿里盘转直链</strong></a></li><li><strong><a href="https://hicane.com/archives/nas-gao-bie-alist-san-bu-shi-xian-emby-115-zhi-lian-bo-fang">【Nas】告别 alist，三步实现 emby 115 直链播放</a></strong></li><li><strong><a href="https://linux.do/t/topic/259509">一文讲清本地部署emby+cd2+alist+strm+302重定向</a></strong></li><li><a href="https://www.baiblog.ren/posts/2023/Emby_Overlayfs_Speedup"><strong>Emby：使用Overlayfs优化云盘视频海报&#x2F;视频列表加载速度</strong></a></li><li><a href="https://wiki.freeembyguide.eu.org/"><strong>Emby公益不完全指北</strong></a></li></ul>]]></content:encoded>
      
      
      <category domain="http://blog.778080.xyz/categories/%E5%BD%B1%E8%A7%86%E7%9B%B8%E5%85%B3/">影视相关</category>
      
      
      <category domain="http://blog.778080.xyz/tags/%E7%94%B5%E5%BD%B1/">电影</category>
      
      <category domain="http://blog.778080.xyz/tags/Linux/">Linux</category>
      
      <category domain="http://blog.778080.xyz/tags/Docker/">Docker</category>
      
      
      <comments>http://blog.778080.xyz/archives/build-emby/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>豆瓣 IMDb Top 250电影</title>
      <link>http://blog.778080.xyz/archives/top-movies/</link>
      <guid>http://blog.778080.xyz/archives/top-movies/</guid>
      <pubDate>Sun, 18 Feb 2024 12:00:00 GMT</pubDate>
      
      <description>电影教会我们很多，唯独没教过我们放弃</description>
      
      
      
      <content:encoded><![CDATA[<div class="note blue icon-padding flat"><i class="note-icon fa-solid fa-bullhorn"></i><p>数据由程序抓取自豆瓣和 IMDb 官方</p><p>这个世界上榜单太多，而时间太少</p><p>你的感受才是最好的榜单</p></div><p><img src="https://gh.778080.xyz/https://raw.githubusercontent.com/EmmaHermione/emma/master/images/movie/CgMEKDz.png" alt="为何不用Python？"></p><h1 id="豆瓣-＆-IMDb-均上榜影片"><a href="#豆瓣-＆-IMDb-均上榜影片" class="headerlink" title="豆瓣 ＆ IMDb 均上榜影片"></a>豆瓣 ＆ IMDb 均上榜影片</h1><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><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></pre></td><td class="code"><pre><span class="line">肖申克的救赎 (1994)</span><br><span class="line">阿甘正传 (1994)</span><br><span class="line">千与千寻 (2001)</span><br><span class="line">美丽人生 (1997)</span><br><span class="line">这个杀手不太冷 (1994)</span><br><span class="line">星际穿越 (2014)</span><br><span class="line">盗梦空间 (2010)</span><br><span class="line">楚门的世界 (1998)</span><br><span class="line">辛德勒的名单 (1993)</span><br><span class="line">忠犬八公的故事 (2009)</span><br><span class="line">三傻大闹宝莱坞 (2009)</span><br><span class="line">机器人总动员 (2008)</span><br><span class="line">控方证人 (1957)</span><br><span class="line">教父 (1972)</span><br><span class="line">触不可及 (2011)</span><br><span class="line">寻梦环游记 (2017)</span><br><span class="line">龙猫 (1988)</span><br><span class="line">蝙蝠侠：黑暗骑士 (2008)</span><br><span class="line">指环王3：王者无敌 (2003)</span><br><span class="line">乱世佳人 (1939)</span><br><span class="line">飞屋环游记 (2009)</span><br><span class="line">哈尔的移动城堡 (2004)</span><br><span class="line">十二怒汉 (1957)</span><br><span class="line">何以为家 (2018)</span><br><span class="line">猫鼠游戏 (2002)</span><br><span class="line">摔跤吧！爸爸 (2016)</span><br><span class="line">钢琴家 (2002)</span><br><span class="line">指环王2：双塔奇兵 (2002)</span><br><span class="line">死亡诗社 (1989)</span><br><span class="line">绿皮书 (2018)</span><br><span class="line">黑客帝国 (1999)</span><br><span class="line">指环王1：护戒使者 (2001)</span><br><span class="line">教父2 (1974)</span><br><span class="line">天堂电影院 (1988)</span><br><span class="line">狮子王 (1994)</span><br><span class="line">搏击俱乐部 (1999)</span><br><span class="line">美丽心灵 (2001)</span><br><span class="line">窃听风暴 (2006)</span><br><span class="line">两杆大烟枪 (1998)</span><br><span class="line">音乐之声 (1965)</span><br><span class="line">哈利·波特与死亡圣器(下) (2011)</span><br><span class="line">拯救大兵瑞恩 (1998)</span><br><span class="line">小鞋子 (1997)</span><br><span class="line">飞越疯人院 (1975)</span><br><span class="line">沉默的羔羊 (1991)</span><br><span class="line">布达佩斯大饭店 (2014)</span><br><span class="line">禁闭岛 (2010)</span><br><span class="line">致命魔术 (2006)</span><br><span class="line">心灵捕手 (1997)</span><br><span class="line">低俗小说 (1994)</span><br><span class="line">摩登时代 (1936)</span><br><span class="line">杀人回忆 (2003)</span><br><span class="line">美国往事 (1984)</span><br><span class="line">加勒比海盗：黑珍珠号的诅咒 (2003)</span><br><span class="line">七宗罪 (1995)</span><br><span class="line">狩猎 (2012)</span><br><span class="line">蝙蝠侠：黑暗骑士崛起 (2012)</span><br><span class="line">爱在黎明破晓前 (1995)</span><br><span class="line">第六感 (1999)</span><br><span class="line">寄生虫 (2019)</span><br><span class="line">爱在日落黄昏时 (2004)</span><br><span class="line">幽灵公主 (1997)</span><br><span class="line">勇敢的心 (1995)</span><br><span class="line">消失的爱人 (2014)</span><br><span class="line">天使爱美丽 (2001)</span><br><span class="line">驯龙高手 (2010)</span><br><span class="line">头脑特工队 (2015)</span><br><span class="line">怪兽电力公司 (2001)</span><br><span class="line">玩具总动员3 (2010)</span><br><span class="line">被解救的姜戈 (2012)</span><br><span class="line">玛丽和马克思 (2009)</span><br><span class="line">七武士 (1954)</span><br><span class="line">惊魂记 (1960)</span><br><span class="line">血战钢锯岭 (2016)</span><br><span class="line">你的名字。 (2016)</span><br><span class="line">三块广告牌 (2017)</span><br><span class="line">小丑 (2019)</span><br><span class="line">上帝之城 (2002)</span><br><span class="line">绿里奇迹 (1999)</span><br><span class="line">2001太空漫游 (1968)</span><br><span class="line">雨中曲 (1952)</span><br><span class="line">卢旺达饭店 (2004)</span><br><span class="line">记忆碎片 (2000)</span><br><span class="line">荒蛮故事 (2014)</span><br><span class="line">爆裂鼓手 (2014)</span><br><span class="line">城市之光 (1931)</span><br><span class="line">终结者2：审判日 (1991)</span><br><span class="line">无耻混蛋 (2009)</span><br><span class="line">罗生门 (1950)</span><br><span class="line">萤火虫之墓 (1988)</span><br><span class="line">房间 (2015)</span><br><span class="line">蜘蛛侠：平行宇宙 (2018)</span><br><span class="line">疯狂的麦克斯4：狂暴之路 (2015)</span><br></pre></td></tr></table></figure><h1 id="IMDb-Top-250"><a href="#IMDb-Top-250" class="headerlink" title="IMDb Top 250"></a>IMDb Top 250</h1><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br><span class="line">105</span><br><span class="line">106</span><br><span class="line">107</span><br><span class="line">108</span><br><span class="line">109</span><br><span class="line">110</span><br><span class="line">111</span><br><span class="line">112</span><br><span class="line">113</span><br><span class="line">114</span><br><span class="line">115</span><br><span class="line">116</span><br><span class="line">117</span><br><span class="line">118</span><br><span class="line">119</span><br><span class="line">120</span><br><span class="line">121</span><br><span class="line">122</span><br><span class="line">123</span><br><span class="line">124</span><br><span class="line">125</span><br><span class="line">126</span><br><span class="line">127</span><br><span class="line">128</span><br><span class="line">129</span><br><span class="line">130</span><br><span class="line">131</span><br><span class="line">132</span><br><span class="line">133</span><br><span class="line">134</span><br><span class="line">135</span><br><span class="line">136</span><br><span class="line">137</span><br><span class="line">138</span><br><span class="line">139</span><br><span class="line">140</span><br><span class="line">141</span><br><span class="line">142</span><br><span class="line">143</span><br><span class="line">144</span><br><span class="line">145</span><br><span class="line">146</span><br><span class="line">147</span><br><span class="line">148</span><br><span class="line">149</span><br><span class="line">150</span><br><span class="line">151</span><br><span class="line">152</span><br><span class="line">153</span><br><span class="line">154</span><br><span class="line">155</span><br><span class="line">156</span><br><span class="line">157</span><br><span class="line">158</span><br><span class="line">159</span><br><span class="line">160</span><br><span class="line">161</span><br><span class="line">162</span><br><span class="line">163</span><br><span class="line">164</span><br><span class="line">165</span><br><span class="line">166</span><br><span class="line">167</span><br><span class="line">168</span><br><span class="line">169</span><br><span class="line">170</span><br><span class="line">171</span><br><span class="line">172</span><br><span class="line">173</span><br><span class="line">174</span><br><span class="line">175</span><br><span class="line">176</span><br><span class="line">177</span><br><span class="line">178</span><br><span class="line">179</span><br><span class="line">180</span><br><span class="line">181</span><br><span class="line">182</span><br><span class="line">183</span><br><span class="line">184</span><br><span class="line">185</span><br><span class="line">186</span><br><span class="line">187</span><br><span class="line">188</span><br><span class="line">189</span><br><span class="line">190</span><br><span class="line">191</span><br><span class="line">192</span><br><span class="line">193</span><br><span class="line">194</span><br><span class="line">195</span><br><span class="line">196</span><br><span class="line">197</span><br><span class="line">198</span><br><span class="line">199</span><br><span class="line">200</span><br><span class="line">201</span><br><span class="line">202</span><br><span class="line">203</span><br><span class="line">204</span><br><span class="line">205</span><br><span class="line">206</span><br><span class="line">207</span><br><span class="line">208</span><br><span class="line">209</span><br><span class="line">210</span><br><span class="line">211</span><br><span class="line">212</span><br><span class="line">213</span><br><span class="line">214</span><br><span class="line">215</span><br><span class="line">216</span><br><span class="line">217</span><br><span class="line">218</span><br><span class="line">219</span><br><span class="line">220</span><br><span class="line">221</span><br><span class="line">222</span><br><span class="line">223</span><br><span class="line">224</span><br><span class="line">225</span><br><span class="line">226</span><br><span class="line">227</span><br><span class="line">228</span><br><span class="line">229</span><br><span class="line">230</span><br><span class="line">231</span><br><span class="line">232</span><br><span class="line">233</span><br><span class="line">234</span><br><span class="line">235</span><br><span class="line">236</span><br><span class="line">237</span><br><span class="line">238</span><br><span class="line">239</span><br><span class="line">240</span><br><span class="line">241</span><br><span class="line">242</span><br><span class="line">243</span><br><span class="line">244</span><br><span class="line">245</span><br><span class="line">246</span><br><span class="line">247</span><br><span class="line">248</span><br><span class="line">249</span><br><span class="line">250</span><br></pre></td><td class="code"><pre><span class="line">肖申克的救赎 (1994)</span><br><span class="line">教父 (1972)</span><br><span class="line">蝙蝠侠：黑暗骑士 (2008)</span><br><span class="line">教父2 (1974)</span><br><span class="line">十二怒汉 (1957)</span><br><span class="line">指环王3：王者无敌 (2003)</span><br><span class="line">辛德勒的名单 (1993)</span><br><span class="line">低俗小说 (1994)</span><br><span class="line">指环王1：护戒使者 (2001)</span><br><span class="line">黄金三镖客 (1966)</span><br><span class="line">阿甘正传 (1994)</span><br><span class="line">指环王2：双塔奇兵 (2002)</span><br><span class="line">搏击俱乐部 (1999)</span><br><span class="line">盗梦空间 (2010)</span><br><span class="line">星球大战5：帝国反击战 (1980)</span><br><span class="line">黑客帝国 (1999)</span><br><span class="line">好家伙 (1990)</span><br><span class="line">飞越疯人院 (1975)</span><br><span class="line">星际穿越 (2014)</span><br><span class="line">七宗罪 (1995)</span><br><span class="line">生活多美好 (1946)</span><br><span class="line">七武士 (1954)</span><br><span class="line">沉默的羔羊 (1991)</span><br><span class="line">拯救大兵瑞恩 (1998)</span><br><span class="line">上帝之城 (2002)</span><br><span class="line">绿里奇迹 (1999)</span><br><span class="line">美丽人生 (1997)</span><br><span class="line">终结者2：审判日 (1991)</span><br><span class="line">星球大战4：新希望 (1977)</span><br><span class="line">回到未来 (1985)</span><br><span class="line">千与千寻 (2001)</span><br><span class="line">钢琴家 (2002)</span><br><span class="line">寄生虫 (2019)</span><br><span class="line">惊魂记 (1960)</span><br><span class="line">角斗士 (2000)</span><br><span class="line">狮子王 (1994)</span><br><span class="line">无间道风云 (2006)</span><br><span class="line">蜘蛛侠：纵横宇宙 (2023)</span><br><span class="line">萤火虫之墓 (1988)</span><br><span class="line">爆裂鼓手 (2014)</span><br><span class="line">美国X档案 (1998)</span><br><span class="line">这个杀手不太冷 (1994)</span><br><span class="line">致命魔术 (2006)</span><br><span class="line">切腹 (1962)</span><br><span class="line">卡萨布兰卡 (1942)</span><br><span class="line">非常嫌疑犯 (1995)</span><br><span class="line">触不可及 (2011)</span><br><span class="line">天堂电影院 (1988)</span><br><span class="line">沙丘2 (2024)</span><br><span class="line">摩登时代 (1936)</span><br><span class="line">异形 (1979)</span><br><span class="line">后窗 (1954)</span><br><span class="line">西部往事 (1968)</span><br><span class="line">被解救的姜戈 (2012)</span><br><span class="line">城市之光 (1931)</span><br><span class="line">现代启示录 (1979)</span><br><span class="line">记忆碎片 (2000)</span><br><span class="line">机器人总动员 (2008)</span><br><span class="line">夺宝奇兵：法柜奇兵 (1981)</span><br><span class="line">窃听风暴 (2006)</span><br><span class="line">12年级的失败 (2023)</span><br><span class="line">日落大道 (1950)</span><br><span class="line">复仇者联盟3：无限战争 (2018)</span><br><span class="line">光荣之路 (1957)</span><br><span class="line">蜘蛛侠：平行宇宙 (2018)</span><br><span class="line">控方证人 (1957)</span><br><span class="line">闪灵 (1980)</span><br><span class="line">大独裁者 (1940)</span><br><span class="line">异形2 (1986)</span><br><span class="line">无耻混蛋 (2009)</span><br><span class="line">蝙蝠侠：黑暗骑士崛起 (2012)</span><br><span class="line">寻梦环游记 (2017)</span><br><span class="line">莫扎特传 (1984)</span><br><span class="line">玩具总动员 (1995)</span><br><span class="line">奇爱博士 (1964)</span><br><span class="line">老男孩 (2003)</span><br><span class="line">美国丽人 (1999)</span><br><span class="line">复仇者联盟4：终局之战 (2019)</span><br><span class="line">从海底出击 (1981)</span><br><span class="line">心灵捕手 (1997)</span><br><span class="line">勇敢的心 (1995)</span><br><span class="line">幽灵公主 (1997)</span><br><span class="line">你的名字。 (2016)</span><br><span class="line">天国与地狱 (1963)</span><br><span class="line">小丑 (2019)</span><br><span class="line">三傻大闹宝莱坞 (2009)</span><br><span class="line">美国往事 (1984)</span><br><span class="line">雨中曲 (1952)</span><br><span class="line">何以为家 (2018)</span><br><span class="line">自己去看 (1985)</span><br><span class="line">梦之安魂曲 (2000)</span><br><span class="line">玩具总动员3 (2010)</span><br><span class="line">星球大战6：绝地归来 (1983)</span><br><span class="line">狩猎 (2012)</span><br><span class="line">暖暖内含光 (2004)</span><br><span class="line">生之欲 (1952)</span><br><span class="line">2001太空漫游 (1968)</span><br><span class="line">落水狗 (1992)</span><br><span class="line">阿拉伯的劳伦斯 (1962)</span><br><span class="line">桃色公寓 (1960)</span><br><span class="line">焦土之城 (2010)</span><br><span class="line">疤面煞星 (1983)</span><br><span class="line">西北偏北 (1959)</span><br><span class="line">双重赔偿 (1944)</span><br><span class="line">公民凯恩 (1941)</span><br><span class="line">M就是凶手 (1931)</span><br><span class="line">迷魂记 (1958)</span><br><span class="line">盗火线 (1995)</span><br><span class="line">全金属外壳 (1987)</span><br><span class="line">奥本海默 (2023)</span><br><span class="line">飞屋环游记 (2009)</span><br><span class="line">天使爱美丽 (2001)</span><br><span class="line">发条橙 (1971)</span><br><span class="line">杀死一只知更鸟 (1962)</span><br><span class="line">一次别离 (2011)</span><br><span class="line">骗中骗 (1973)</span><br><span class="line">虎胆龙威 (1988)</span><br><span class="line">夺宝奇兵3：圣战奇兵 (1989)</span><br><span class="line">地球上的星星 (2007)</span><br><span class="line">大都会 (1927)</span><br><span class="line">偷拐抢骗 (2000)</span><br><span class="line">1917 (2019)</span><br><span class="line">洛城机密 (1997)</span><br><span class="line">偷自行车的人 (1948)</span><br><span class="line">帝国的毁灭 (2004)</span><br><span class="line">汉密尔顿 (2020)</span><br><span class="line">出租车司机 (1976)</span><br><span class="line">摔跤吧！爸爸 (2016)</span><br><span class="line">华尔街之狼 (2013)</span><br><span class="line">蝙蝠侠：侠影之谜 (2005)</span><br><span class="line">黄昏双镖客 (1965)</span><br><span class="line">绿皮书 (2018)</span><br><span class="line">热情如火 (1959)</span><br><span class="line">楚门的世界 (1998)</span><br><span class="line">纽伦堡大审判 (1961)</span><br><span class="line">寻子遇仙记 (1921)</span><br><span class="line">困在时间里的父亲 (2020)</span><br><span class="line">禁闭岛 (2010)</span><br><span class="line">彗星美人 (1950)</span><br><span class="line">血色将至 (2007)</span><br><span class="line">侏罗纪公园 (1993)</span><br><span class="line">赌城风云 (1995)</span><br><span class="line">壮志凌云2：独行侠 (2022)</span><br><span class="line">第六感 (1999)</span><br><span class="line">乱 (1985)</span><br><span class="line">潘神的迷宫 (2006)</span><br><span class="line">老无所依 (2007)</span><br><span class="line">不可饶恕 (1992)</span><br><span class="line">怪形 (1982)</span><br><span class="line">美丽心灵 (2001)</span><br><span class="line">杀死比尔 (2003)</span><br><span class="line">荒野机器人 (2024)</span><br><span class="line">碧血金沙 (1948)</span><br><span class="line">用心棒 (1961)</span><br><span class="line">囚徒 (2013)</span><br><span class="line">大逃亡 (1963)</span><br><span class="line">海底总动员 (2003)</span><br><span class="line">巨蟒与圣杯 (1975)</span><br><span class="line">哈尔的移动城堡 (2004)</span><br><span class="line">象人 (1980)</span><br><span class="line">罗生门 (1950)</span><br><span class="line">电话谋杀案 (1954)</span><br><span class="line">乱世佳人 (1939)</span><br><span class="line">唐人街 (1974)</span><br><span class="line">谜一样的双眼 (2009)</span><br><span class="line">两杆大烟枪 (1998)</span><br><span class="line">头脑特工队 (2015)</span><br><span class="line">V字仇杀队 (2005)</span><br><span class="line">三块广告牌 (2017)</span><br><span class="line">愤怒的公牛 (1980)</span><br><span class="line">克劳斯：圣诞节的秘密 (2019)</span><br><span class="line">猜火车 (1996)</span><br><span class="line">桂河大桥 (1957)</span><br><span class="line">猫鼠游戏 (2002)</span><br><span class="line">冰血暴 (1996)</span><br><span class="line">勇士 (2011)</span><br><span class="line">蜘蛛侠：英雄无归 (2021)</span><br><span class="line">老爷车 (2008)</span><br><span class="line">哈利·波特与死亡圣器(下) (2011)</span><br><span class="line">百万美元宝贝 (2004)</span><br><span class="line">龙猫 (1988)</span><br><span class="line">疯狂的麦克斯：狂暴之路 (2015)</span><br><span class="line">宾虚 (1959)</span><br><span class="line">小鞋子 (1997)</span><br><span class="line">巴里·林登 (1975)</span><br><span class="line">为奴十二年 (2013)</span><br><span class="line">银翼杀手 (1982)</span><br><span class="line">爱在黎明破晓前 (1995)</span><br><span class="line">布达佩斯大饭店 (2014)</span><br><span class="line">血战钢锯岭 (2016)</span><br><span class="line">死亡诗社 (1989)</span><br><span class="line">消失的爱人 (2014)</span><br><span class="line">杀人回忆 (2003)</span><br><span class="line">因父之名 (1993)</span><br><span class="line">淘金记 (1925)</span><br><span class="line">因果报应 (2024)</span><br><span class="line">怪兽电力公司 (2001)</span><br><span class="line">荒蛮故事 (2014)</span><br><span class="line">美食总动员 (2007)</span><br><span class="line">驯龙高手 (2010)</span><br><span class="line">猎鹿人 (1978)</span><br><span class="line">大白鲨 (1975)</span><br><span class="line">福尔摩斯二世 (1924)</span><br><span class="line">将军号 (1926)</span><br><span class="line">玛丽和马克思 (2009)</span><br><span class="line">码头风云 (1954)</span><br><span class="line">恐惧的代价 (1953)</span><br><span class="line">极速车王 (2019)</span><br><span class="line">野草莓 (1957)</span><br><span class="line">史密斯先生到华盛顿 (1939)</span><br><span class="line">第三人 (1949)</span><br><span class="line">金刚狼3：殊死一战 (2017)</span><br><span class="line">洛奇 (1976)</span><br><span class="line">东京物语 (1953)</span><br><span class="line">谋杀绿脚趾 (1998)</span><br><span class="line">第七封印 (1957)</span><br><span class="line">聚焦 (2015)</span><br><span class="line">房间 (2015)</span><br><span class="line">终结者 (1984)</span><br><span class="line">卢旺达饭店 (2004)</span><br><span class="line">野战排 (1986)</span><br><span class="line">加勒比海盗：黑珍珠号的诅咒 (2003)</span><br><span class="line">怒火青春 (1995)</span><br><span class="line">杰伊·比姆 (2021)</span><br><span class="line">圣女贞德蒙难记 (1928)</span><br><span class="line">爱在日落黄昏时 (2004)</span><br><span class="line">黄金时代 (1946)</span><br><span class="line">驱魔人 (1973)</span><br><span class="line">极速风流 (2013)</span><br><span class="line">超人总动员 (2004)</span><br><span class="line">绿野仙踪 (1939)</span><br><span class="line">死囚越狱 (1956)</span><br><span class="line">电视台风云 (1976)</span><br><span class="line">伴我同行 (1986)</span><br><span class="line">忠犬八公的故事 (2009)</span><br><span class="line">音乐之声 (1965)</span><br><span class="line">我的父亲，我的儿子 (2005)</span><br><span class="line">你逃我也逃 (1942)</span><br><span class="line">小姐 (2016)</span><br><span class="line">荒野生存 (2007)</span><br><span class="line">阿尔及尔之战 (1966)</span><br><span class="line">钢铁巨人 (1999)</span><br><span class="line">愤怒的葡萄 (1940)</span><br><span class="line">土拨鼠之日 (1993)</span><br><span class="line">爱情是狗娘 (2000)</span><br><span class="line">蝴蝶梦 (1940)</span><br><span class="line">相助 (2011)</span><br><span class="line">铁窗喋血 (1967)</span><br><span class="line">声之形 (2016)</span><br><span class="line">德州巴黎 (1984)</span><br></pre></td></tr></table></figure><h1 id="豆瓣-Top-250"><a href="#豆瓣-Top-250" class="headerlink" title="豆瓣 Top 250"></a>豆瓣 Top 250</h1><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br><span class="line">105</span><br><span class="line">106</span><br><span class="line">107</span><br><span class="line">108</span><br><span class="line">109</span><br><span class="line">110</span><br><span class="line">111</span><br><span class="line">112</span><br><span class="line">113</span><br><span class="line">114</span><br><span class="line">115</span><br><span class="line">116</span><br><span class="line">117</span><br><span class="line">118</span><br><span class="line">119</span><br><span class="line">120</span><br><span class="line">121</span><br><span class="line">122</span><br><span class="line">123</span><br><span class="line">124</span><br><span class="line">125</span><br><span class="line">126</span><br><span class="line">127</span><br><span class="line">128</span><br><span class="line">129</span><br><span class="line">130</span><br><span class="line">131</span><br><span class="line">132</span><br><span class="line">133</span><br><span class="line">134</span><br><span class="line">135</span><br><span class="line">136</span><br><span class="line">137</span><br><span class="line">138</span><br><span class="line">139</span><br><span class="line">140</span><br><span class="line">141</span><br><span class="line">142</span><br><span class="line">143</span><br><span class="line">144</span><br><span class="line">145</span><br><span class="line">146</span><br><span class="line">147</span><br><span class="line">148</span><br><span class="line">149</span><br><span class="line">150</span><br><span class="line">151</span><br><span class="line">152</span><br><span class="line">153</span><br><span class="line">154</span><br><span class="line">155</span><br><span class="line">156</span><br><span class="line">157</span><br><span class="line">158</span><br><span class="line">159</span><br><span class="line">160</span><br><span class="line">161</span><br><span class="line">162</span><br><span class="line">163</span><br><span class="line">164</span><br><span class="line">165</span><br><span class="line">166</span><br><span class="line">167</span><br><span class="line">168</span><br><span class="line">169</span><br><span class="line">170</span><br><span class="line">171</span><br><span class="line">172</span><br><span class="line">173</span><br><span class="line">174</span><br><span class="line">175</span><br><span class="line">176</span><br><span class="line">177</span><br><span class="line">178</span><br><span class="line">179</span><br><span class="line">180</span><br><span class="line">181</span><br><span class="line">182</span><br><span class="line">183</span><br><span class="line">184</span><br><span class="line">185</span><br><span class="line">186</span><br><span class="line">187</span><br><span class="line">188</span><br><span class="line">189</span><br><span class="line">190</span><br><span class="line">191</span><br><span class="line">192</span><br><span class="line">193</span><br><span class="line">194</span><br><span class="line">195</span><br><span class="line">196</span><br><span class="line">197</span><br><span class="line">198</span><br><span class="line">199</span><br><span class="line">200</span><br><span class="line">201</span><br><span class="line">202</span><br><span class="line">203</span><br><span class="line">204</span><br><span class="line">205</span><br><span class="line">206</span><br><span class="line">207</span><br><span class="line">208</span><br><span class="line">209</span><br><span class="line">210</span><br><span class="line">211</span><br><span class="line">212</span><br><span class="line">213</span><br><span class="line">214</span><br><span class="line">215</span><br><span class="line">216</span><br><span class="line">217</span><br><span class="line">218</span><br><span class="line">219</span><br><span class="line">220</span><br><span class="line">221</span><br><span class="line">222</span><br><span class="line">223</span><br><span class="line">224</span><br><span class="line">225</span><br><span class="line">226</span><br><span class="line">227</span><br><span class="line">228</span><br><span class="line">229</span><br><span class="line">230</span><br><span class="line">231</span><br><span class="line">232</span><br><span class="line">233</span><br><span class="line">234</span><br><span class="line">235</span><br><span class="line">236</span><br><span class="line">237</span><br><span class="line">238</span><br><span class="line">239</span><br><span class="line">240</span><br><span class="line">241</span><br><span class="line">242</span><br><span class="line">243</span><br><span class="line">244</span><br><span class="line">245</span><br><span class="line">246</span><br><span class="line">247</span><br><span class="line">248</span><br><span class="line">249</span><br><span class="line">250</span><br></pre></td><td class="code"><pre><span class="line">肖申克的救赎 (1994)</span><br><span class="line">霸王别姬 (1993)</span><br><span class="line">阿甘正传 (1994)</span><br><span class="line">泰坦尼克号 (1997)</span><br><span class="line">千与千寻 (2001)</span><br><span class="line">美丽人生 (1997)</span><br><span class="line">这个杀手不太冷 (1994)</span><br><span class="line">星际穿越 (2014)</span><br><span class="line">盗梦空间 (2010)</span><br><span class="line">楚门的世界 (1998)</span><br><span class="line">辛德勒的名单 (1993)</span><br><span class="line">忠犬八公的故事 (2009)</span><br><span class="line">海上钢琴师 (1998)</span><br><span class="line">三傻大闹宝莱坞 (2009)</span><br><span class="line">放牛班的春天 (2004)</span><br><span class="line">机器人总动员 (2008)</span><br><span class="line">疯狂动物城 (2016)</span><br><span class="line">无间道 (2002)</span><br><span class="line">控方证人 (1957)</span><br><span class="line">大话西游之大圣娶亲 (1995)</span><br><span class="line">熔炉 (2011)</span><br><span class="line">教父 (1972)</span><br><span class="line">触不可及 (2011)</span><br><span class="line">寻梦环游记 (2017)</span><br><span class="line">当幸福来敲门 (2006)</span><br><span class="line">末代皇帝 (1987)</span><br><span class="line">龙猫 (1988)</span><br><span class="line">哈利·波特与魔法石 (2001)</span><br><span class="line">怦然心动 (2010)</span><br><span class="line">活着 (1994)</span><br><span class="line">蝙蝠侠：黑暗骑士 (2008)</span><br><span class="line">指环王3：王者无敌 (2003)</span><br><span class="line">我不是药神 (2018)</span><br><span class="line">乱世佳人 (1939)</span><br><span class="line">飞屋环游记 (2009)</span><br><span class="line">素媛 (2013)</span><br><span class="line">哈尔的移动城堡 (2004)</span><br><span class="line">让子弹飞 (2010)</span><br><span class="line">十二怒汉 (1957)</span><br><span class="line">海蒂和爷爷 (2015)</span><br><span class="line">何以为家 (2018)</span><br><span class="line">猫鼠游戏 (2002)</span><br><span class="line">摔跤吧！爸爸 (2016)</span><br><span class="line">天空之城 (1986)</span><br><span class="line">鬼子来了 (2000)</span><br><span class="line">少年派的奇幻漂流 (2012)</span><br><span class="line">钢琴家 (2002)</span><br><span class="line">指环王2：双塔奇兵 (2002)</span><br><span class="line">大话西游之月光宝盒 (1995)</span><br><span class="line">闻香识女人 (1992)</span><br><span class="line">死亡诗社 (1989)</span><br><span class="line">绿皮书 (2018)</span><br><span class="line">大闹天宫 (1961)</span><br><span class="line">罗马假日 (1953)</span><br><span class="line">黑客帝国 (1999)</span><br><span class="line">指环王1：护戒使者 (2001)</span><br><span class="line">教父2 (1974)</span><br><span class="line">天堂电影院 (1988)</span><br><span class="line">狮子王 (1994)</span><br><span class="line">辩护人 (2013)</span><br><span class="line">饮食男女 (1994)</span><br><span class="line">搏击俱乐部 (1999)</span><br><span class="line">本杰明·巴顿奇事 (2008)</span><br><span class="line">美丽心灵 (2001)</span><br><span class="line">穿条纹睡衣的男孩 (2008)</span><br><span class="line">窃听风暴 (2006)</span><br><span class="line">情书 (1995)</span><br><span class="line">两杆大烟枪 (1998)</span><br><span class="line">音乐之声 (1965)</span><br><span class="line">看不见的客人 (2016)</span><br><span class="line">西西里的美丽传说 (2000)</span><br><span class="line">哈利·波特与死亡圣器(下) (2011)</span><br><span class="line">阿凡达 (2009)</span><br><span class="line">拯救大兵瑞恩 (1998)</span><br><span class="line">功夫 (2004)</span><br><span class="line">哈利·波特与阿兹卡班的囚徒 (2004)</span><br><span class="line">小鞋子 (1997)</span><br><span class="line">飞越疯人院 (1975)</span><br><span class="line">沉默的羔羊 (1991)</span><br><span class="line">布达佩斯大饭店 (2014)</span><br><span class="line">蝴蝶效应 (2004)</span><br><span class="line">禁闭岛 (2010)</span><br><span class="line">致命魔术 (2006)</span><br><span class="line">心灵捕手 (1997)</span><br><span class="line">超脱 (2011)</span><br><span class="line">低俗小说 (1994)</span><br><span class="line">摩登时代 (1936)</span><br><span class="line">喜剧之王 (1999)</span><br><span class="line">春光乍泄 (1997)</span><br><span class="line">海豚湾 (2009)</span><br><span class="line">致命ID (2003)</span><br><span class="line">哈利·波特与密室 (2002)</span><br><span class="line">杀人回忆 (2003)</span><br><span class="line">美国往事 (1984)</span><br><span class="line">一一 (2000)</span><br><span class="line">红辣椒 (2006)</span><br><span class="line">加勒比海盗：黑珍珠号的诅咒 (2003)</span><br><span class="line">七宗罪 (1995)</span><br><span class="line">唐伯虎点秋香 (1993)</span><br><span class="line">狩猎 (2012)</span><br><span class="line">7号房的礼物 (2013)</span><br><span class="line">蝙蝠侠：黑暗骑士崛起 (2012)</span><br><span class="line">甜蜜蜜 (1996)</span><br><span class="line">被嫌弃的松子的一生 (2006)</span><br><span class="line">爱在黎明破晓前 (1995)</span><br><span class="line">超能陆战队 (2014)</span><br><span class="line">第六感 (1999)</span><br><span class="line">寄生虫 (2019)</span><br><span class="line">重庆森林 (1994)</span><br><span class="line">入殓师 (2008)</span><br><span class="line">爱在日落黄昏时 (2004)</span><br><span class="line">请以你的名字呼唤我 (2017)</span><br><span class="line">幽灵公主 (1997)</span><br><span class="line">剪刀手爱德华 (1990)</span><br><span class="line">断背山 (2005)</span><br><span class="line">勇敢的心 (1995)</span><br><span class="line">菊次郎的夏天 (1999)</span><br><span class="line">借东西的小人阿莉埃蒂 (2010)</span><br><span class="line">未麻的部屋 (1997)</span><br><span class="line">哈利·波特与火焰杯 (2005)</span><br><span class="line">消失的爱人 (2014)</span><br><span class="line">无人知晓 (2004)</span><br><span class="line">时空恋旅人 (2013)</span><br><span class="line">倩女幽魂 (1987)</span><br><span class="line">完美的世界 (1993)</span><br><span class="line">茶馆 (1982)</span><br><span class="line">阳光灿烂的日子 (1994)</span><br><span class="line">小森林 夏秋篇 (2014)</span><br><span class="line">天使爱美丽 (2001)</span><br><span class="line">侧耳倾听 (1995)</span><br><span class="line">驯龙高手 (2010)</span><br><span class="line">头脑特工队 (2015)</span><br><span class="line">新世界 (2013)</span><br><span class="line">教父3 (1990)</span><br><span class="line">怪兽电力公司 (2001)</span><br><span class="line">傲慢与偏见 (2005)</span><br><span class="line">一个叫欧维的男人决定去死 (2015)</span><br><span class="line">幸福终点站 (2004)</span><br><span class="line">玩具总动员3 (2010)</span><br><span class="line">小森林 冬春篇 (2015)</span><br><span class="line">色，戒 (2007)</span><br><span class="line">被解救的姜戈 (2012)</span><br><span class="line">釜山行 (2016)</span><br><span class="line">神偷奶爸 (2010)</span><br><span class="line">萤火之森 (2011)</span><br><span class="line">九品芝麻官 (1994)</span><br><span class="line">哪吒闹海 (1979)</span><br><span class="line">告白 (2010)</span><br><span class="line">喜宴 (1993)</span><br><span class="line">玛丽和马克思 (2009)</span><br><span class="line">模仿游戏 (2014)</span><br><span class="line">头号玩家 (2018)</span><br><span class="line">花样年华 (2000)</span><br><span class="line">大鱼 (2003)</span><br><span class="line">七武士 (1954)</span><br><span class="line">射雕英雄传之东成西就 (1993)</span><br><span class="line">惊魂记 (1960)</span><br><span class="line">血战钢锯岭 (2016)</span><br><span class="line">我是山姆 (2001)</span><br><span class="line">阳光姐妹淘 (2011)</span><br><span class="line">恐怖直播 (2013)</span><br><span class="line">你的名字。 (2016)</span><br><span class="line">黑客帝国3：矩阵革命 (2003)</span><br><span class="line">三块广告牌 (2017)</span><br><span class="line">心迷宫 (2014)</span><br><span class="line">电锯惊魂 (2004)</span><br><span class="line">小丑 (2019)</span><br><span class="line">达拉斯买家俱乐部 (2013)</span><br><span class="line">疯狂原始人 (2013)</span><br><span class="line">背靠背，脸对脸 (1994)</span><br><span class="line">心灵奇旅 (2020)</span><br><span class="line">谍影重重3 (2007)</span><br><span class="line">上帝之城 (2002)</span><br><span class="line">绿里奇迹 (1999)</span><br><span class="line">爱在午夜降临前 (2013)</span><br><span class="line">海街日记 (2015)</span><br><span class="line">英雄本色 (1986)</span><br><span class="line">风之谷 (1984)</span><br><span class="line">无间道2 (2003)</span><br><span class="line">疯狂的石头 (2006)</span><br><span class="line">2001太空漫游 (1968)</span><br><span class="line">纵横四海 (1991)</span><br><span class="line">雨中曲 (1952)</span><br><span class="line">卢旺达饭店 (2004)</span><br><span class="line">记忆碎片 (2000)</span><br><span class="line">小偷家族 (2018)</span><br><span class="line">无敌破坏王 (2012)</span><br><span class="line">岁月神偷 (2010)</span><br><span class="line">冰川时代 (2002)</span><br><span class="line">牯岭街少年杀人事件 (1991)</span><br><span class="line">荒蛮故事 (2014)</span><br><span class="line">忠犬八公物语 (1987)</span><br><span class="line">恐怖游轮 (2009)</span><br><span class="line">爆裂鼓手 (2014)</span><br><span class="line">东京教父 (2003)</span><br><span class="line">魔女宅急便 (1989)</span><br><span class="line">末路狂花 (1991)</span><br><span class="line">大佛普拉斯 (2017)</span><br><span class="line">遗愿清单 (2007)</span><br><span class="line">贫民窟的百万富翁 (2008)</span><br><span class="line">东邪西毒 (1994)</span><br><span class="line">你看起来好像很好吃 (2010)</span><br><span class="line">高山下的花环 (1984)</span><br><span class="line">源代码 (2011)</span><br><span class="line">可可西里 (2004)</span><br><span class="line">疯狂的麦克斯4：狂暴之路 (2015)</span><br><span class="line">城市之光 (1931)</span><br><span class="line">海边的曼彻斯特 (2016)</span><br><span class="line">波西米亚狂想曲 (2018)</span><br><span class="line">黑天鹅 (2010)</span><br><span class="line">芙蓉镇 (1987)</span><br><span class="line">爱乐之城 (2016)</span><br><span class="line">真爱至上 (2003)</span><br><span class="line">青蛇 (1993)</span><br><span class="line">雨人 (1988)</span><br><span class="line">初恋这件小事 (2010)</span><br><span class="line">花束般的恋爱 (2021)</span><br><span class="line">终结者2：审判日 (1991)</span><br><span class="line">人工智能 (2001)</span><br><span class="line">虎口脱险 (1966)</span><br><span class="line">无耻混蛋 (2009)</span><br><span class="line">恋恋笔记本 (2004)</span><br><span class="line">新龙门客栈 (1992)</span><br><span class="line">哈利·波特与死亡圣器(上) (2010)</span><br><span class="line">白日梦想家 (2013)</span><br><span class="line">崖上的波妞 (2008)</span><br><span class="line">罗生门 (1950)</span><br><span class="line">千钧一发 (1997)</span><br><span class="line">彗星来的那一夜 (2013)</span><br><span class="line">大红灯笼高高挂 (1991)</span><br><span class="line">黑客帝国2：重装上阵 (2003)</span><br><span class="line">萤火虫之墓 (1988)</span><br><span class="line">哈利·波特与凤凰社 (2007)</span><br><span class="line">火星救援 (2015)</span><br><span class="line">奇迹男孩 (2017)</span><br><span class="line">机器人之梦 (2023)</span><br><span class="line">二十二 (2015)</span><br><span class="line">战争之王 (2005)</span><br><span class="line">步履不停 (2008)</span><br><span class="line">血钻 (2006)</span><br><span class="line">千年女优 (2001)</span><br><span class="line">谍影重重2 (2004)</span><br><span class="line">房间 (2015)</span><br><span class="line">魂断蓝桥 (1940)</span><br><span class="line">蜘蛛侠：平行宇宙 (2018)</span><br><span class="line">弱点 (2009)</span><br><span class="line">谍影重重 (2002)</span><br><span class="line">隐藏人物 (2016)</span><br><span class="line">朗读者 (2008)</span><br><span class="line">阿飞正传 (1990)</span><br></pre></td></tr></table></figure><h1 id="个人精选"><a href="#个人精选" class="headerlink" title="个人精选"></a>个人精选</h1><p><em>电影作为一门综合艺术，其类型边界往往是模糊且相互渗透的。一部作品可能同时具备剧情片的深度、战争片的宏大和爱情片的细腻。</em></p><h2 id="剧情"><a href="#剧情" class="headerlink" title="剧情"></a>剧情</h2><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">肖申克的救赎 (1994)</span><br><span class="line">忠犬八公的故事 (2009)</span><br></pre></td></tr></table></figure><h2 id="喜剧"><a href="#喜剧" class="headerlink" title="喜剧"></a>喜剧</h2><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">摩登时代 (1936)</span><br><span class="line">城市之光 (1931)</span><br><span class="line">雨中曲 (1952)</span><br></pre></td></tr></table></figure><h2 id="爱情"><a href="#爱情" class="headerlink" title="爱情"></a>爱情</h2><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">卡萨布兰卡 (1942)</span><br><span class="line">花样年华 (2000)</span><br><span class="line">乱世佳人 (1939)</span><br></pre></td></tr></table></figure><h2 id="犯罪"><a href="#犯罪" class="headerlink" title="犯罪"></a>犯罪</h2><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">教父 (1972)</span><br><span class="line">洛城机密 (1997)</span><br><span class="line">非常嫌疑犯 (1995)</span><br></pre></td></tr></table></figure><h2 id="战争"><a href="#战争" class="headerlink" title="战争"></a>战争</h2><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">辛德勒的名单 (1993)</span><br><span class="line">美丽人生 (1997)</span><br><span class="line">我们的父辈 (2013)</span><br><span class="line">穿条纹睡衣的男孩 (2008)</span><br></pre></td></tr></table></figure><h2 id="科幻"><a href="#科幻" class="headerlink" title="科幻"></a>科幻</h2><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">盗梦空间 (2010)</span><br><span class="line">星际穿越 (2014)</span><br><span class="line">黑客帝国 (1999)</span><br><span class="line">楚门的世界 (1998)</span><br></pre></td></tr></table></figure><h2 id="动画"><a href="#动画" class="headerlink" title="动画"></a>动画</h2><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">寻梦环游记 (2017)</span><br><span class="line">疯狂动物城 (2016)</span><br><span class="line">机器人之梦 (2023)</span><br></pre></td></tr></table></figure><h2 id="歌舞"><a href="#歌舞" class="headerlink" title="歌舞"></a>歌舞</h2><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">雨中曲 (1952)</span><br><span class="line">爱乐之城 (2016)</span><br><span class="line">音乐之声 (1965)</span><br></pre></td></tr></table></figure>]]></content:encoded>
      
      
      <category domain="http://blog.778080.xyz/categories/%E5%BD%B1%E8%A7%86%E7%9B%B8%E5%85%B3/">影视相关</category>
      
      
      <category domain="http://blog.778080.xyz/tags/%E7%94%B5%E5%BD%B1/">电影</category>
      
      
      <comments>http://blog.778080.xyz/archives/top-movies/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>去他妈的防火墙</title>
      <link>http://blog.778080.xyz/archives/fuck-gfw/</link>
      <guid>http://blog.778080.xyz/archives/fuck-gfw/</guid>
      <pubDate>Wed, 25 Oct 2023 12:00:00 GMT</pubDate>
      
      <description>石头和水泥构筑的柏林墙都已经倒塌</description>
      
      
      
      <content:encoded><![CDATA[<h1 id="它们害怕人民了解真相"><a href="#它们害怕人民了解真相" class="headerlink" title="它们害怕人民了解真相"></a>它们害怕人民了解真相</h1><p>防火长城是中国的一项网络审查制度，旨在实现对信息流通的严格控制，进而维护对社会的全面监管。这一制度不仅阻断了公众与外部世界的联系，也是出于对民众获取真相的深切恐惧。</p><p>本文将介绍当前几种主流的代理协议，并简要概述它们的部署方法。尽管这些努力微不足道，但它们为突破互联网封锁提供了可能的途径，助力人们获取更为开放的信息。</p><h1 id="hysteria"><a href="#hysteria" class="headerlink" title="hysteria"></a>hysteria</h1><p>UDP 协议，基于魔改的 QUIC 协议，垃圾线路的救星，部分地区容易 Qos 出现断流情况</p><p>URI 格式：hysteria2:&#x2F;&#x2F;[auth@]hostname[:port]&#x2F;?[key&#x3D;value]&amp;[key&#x3D;value]…</p><p>例如：hysteria2:&#x2F;&#x2F;rR9YCGYaY0LpP7BLswTSzQ&#x3D;&#x3D;@47.76.67.1:30000&#x2F;?sni&#x3D;hy.test.com&amp;insecure&#x3D;0#🇭🇰 Test</p><h2 id="性能优化"><a href="#性能优化" class="headerlink" title="性能优化"></a>性能优化</h2><figure class="highlight sh"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 将发送、接收两个缓冲区都设置为 16 MB</span></span><br><span class="line">sysctl -w net.core.rmem_max=16777216</span><br><span class="line">sysctl -w net.core.wmem_max=16777216</span><br></pre></td></tr></table></figure><h2 id="官方一键脚本"><a href="#官方一键脚本" class="headerlink" title="官方一键脚本"></a>官方一键脚本</h2><figure class="highlight sh"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 安装/升级</span></span><br><span class="line">bash &lt;(curl -fsSL https://get.hy2.sh/)</span><br><span class="line"><span class="comment"># 卸载</span></span><br><span class="line">bash &lt;(curl -fsSL https://get.hy2.sh/) --remove</span><br></pre></td></tr></table></figure><h2 id="证书设置"><a href="#证书设置" class="headerlink" title="证书设置"></a>证书设置</h2><p>可使用 acme 申请的域名证书或自签证书</p><figure class="highlight sh"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 写入 Bing 自签证书</span></span><br><span class="line">openssl req -x509 -nodes -newkey ec:&lt;(openssl ecparam -name prime256v1) -keyout /etc/hysteria/server.key -out /etc/hysteria/server.crt -subj <span class="string">&quot;/CN=bing.com&quot;</span> -days 36500 &amp;&amp; <span class="built_in">sudo</span> <span class="built_in">chown</span> hysteria /etc/hysteria/server.key &amp;&amp; <span class="built_in">sudo</span> <span class="built_in">chown</span> hysteria /etc/hysteria/server.crt</span><br></pre></td></tr></table></figure><h2 id="修改配置文件"><a href="#修改配置文件" class="headerlink" title="修改配置文件"></a>修改配置文件</h2><figure class="highlight sh"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">vim /etc/hysteria/config.yaml</span><br></pre></td></tr></table></figure><p>config.yaml 文件，参考配置文件，更多功能参考<a href="https://v2.hysteria.network/zh/">官网</a></p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">listen:</span> <span class="string">:10010</span></span><br><span class="line"></span><br><span class="line"><span class="attr">tls:</span> </span><br><span class="line">  <span class="attr">cert:</span> <span class="string">/root/ssl/fullchain.cer</span></span><br><span class="line">  <span class="attr">key:</span> <span class="string">/root/ssl/private.key</span></span><br><span class="line">  <span class="attr">sniGuard:</span> <span class="string">disable</span></span><br><span class="line"></span><br><span class="line"><span class="attr">auth:</span></span><br><span class="line">  <span class="attr">type:</span> <span class="string">password</span></span><br><span class="line">  <span class="attr">password:</span> <span class="string">B4h40ouvw7</span></span><br><span class="line"></span><br><span class="line"><span class="attr">masquerade:</span></span><br><span class="line">  <span class="attr">type:</span> <span class="string">proxy</span></span><br><span class="line">  <span class="attr">proxy:</span></span><br><span class="line">    <span class="attr">url:</span> <span class="string">https://www.paypal.com/</span></span><br><span class="line">    <span class="attr">rewriteHost:</span> <span class="literal">true</span></span><br><span class="line"></span><br><span class="line"><span class="attr">acl:</span></span><br><span class="line">  <span class="attr">inline:</span> </span><br><span class="line">    <span class="bullet">-</span> <span class="string">warp(geosite:disney)</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">warp(geosite:spotify)</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">warp(geosite:reddit)</span></span><br><span class="line"></span><br><span class="line"><span class="attr">outbounds:</span></span><br><span class="line">  <span class="bullet">-</span> <span class="attr">name:</span> <span class="string">default</span> </span><br><span class="line">    <span class="attr">type:</span> <span class="string">direct</span> </span><br><span class="line">  <span class="bullet">-</span> <span class="attr">name:</span> <span class="string">warp</span></span><br><span class="line">    <span class="attr">type:</span> <span class="string">socks5</span></span><br><span class="line">    <span class="attr">socks5:</span></span><br><span class="line">      <span class="attr">addr:</span> <span class="number">127.0</span><span class="number">.0</span><span class="number">.1</span><span class="string">:8081</span></span><br><span class="line">      <span class="attr">username:</span> <span class="string">i84gqmyXcW</span> </span><br><span class="line">      <span class="attr">password:</span> <span class="string">kEWCpaY0fL</span></span><br></pre></td></tr></table></figure><h2 id="服务启动"><a href="#服务启动" class="headerlink" title="服务启动"></a>服务启动</h2><figure class="highlight sh"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 开放对应端口</span></span><br><span class="line">ufw status</span><br><span class="line">ufw allow 30000</span><br><span class="line"><span class="comment"># 重启并开机自启</span></span><br><span class="line">systemctl restart hysteria-server.service</span><br><span class="line">systemctl <span class="built_in">enable</span> hysteria-server.service</span><br></pre></td></tr></table></figure><h2 id="端口跳跃"><a href="#端口跳跃" class="headerlink" title="端口跳跃"></a>端口跳跃</h2><p>运营商会阻断或限速 UDP 连接。不过，这些限制往往仅限单个端口。端口跳跃可用作此情况的解决方法。</p><p>注意：设置 iptables 规则网卡名称 eth0 要根据具体情况更改，可用命令 ip a 查看网卡名称！</p><p>常见以太网接口命名：eth0 &#x2F;eth1 &#x2F;eth2 &#x2F;ens33 &#x2F;ens5 &#x2F; enp0s3</p><figure class="highlight sh"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">### 使用 UFW 持久化 REDIRECT 规则</span></span><br><span class="line"><span class="comment"># 启用 IP 转发</span></span><br><span class="line">vim /etc/ufw/sysctl.conf</span><br><span class="line"><span class="comment">## 找到并取消注释以下两行后保存</span></span><br><span class="line">net/ipv4/ip_forward=1</span><br><span class="line">net/ipv6/conf/default/forwarding=1</span><br><span class="line"><span class="comment"># 添加 IPv4 规则</span></span><br><span class="line">vim /etc/ufw/before.rules</span><br><span class="line"><span class="comment">## 添加下面规则</span></span><br><span class="line">*nat</span><br><span class="line">:PREROUTING ACCEPT [0:0]</span><br><span class="line"><span class="comment"># IPv4: Redirect UDP ports 10011-10210 to port 10010</span></span><br><span class="line">-A PREROUTING -i eth0 -p udp --dport 10011:10210 -j REDIRECT --to-ports 10010</span><br><span class="line">COMMIT</span><br><span class="line"><span class="comment"># 添加 IPv4 规则</span></span><br><span class="line">vim /etc/ufw/before6.rules</span><br><span class="line"><span class="comment">## 添加下面规则</span></span><br><span class="line">*nat</span><br><span class="line">:PREROUTING ACCEPT [0:0]</span><br><span class="line"><span class="comment"># IPv6: Redirect UDP ports 10011-10210 to port 10010</span></span><br><span class="line">-A PREROUTING -i eth0 -p udp --dport 10011:10210 -j REDIRECT --to-ports 10010</span><br><span class="line">COMMIT</span><br></pre></td></tr></table></figure><p>在该示例中，服务器以太网卡名称 eth0 监听 10010 端口，但客户端可以通过 10011-10210 范围内的任何端口连接。</p><h2 id="证书错误"><a href="#证书错误" class="headerlink" title="证书错误"></a>证书错误</h2><p>如果显示：<code>&#123;&quot;error&quot;: &quot;invalid config: tls: open /etc/hysteria/server.crt: permission denied&quot;&#125;</code> 或者 <code>failed to load server conf</code> 的错误，则说明 Hysteria 没有访问证书文件的权限，需要执行下面的命令将 Hysteria 切换到 root 用户运行</p><figure class="highlight sh"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">sed -i <span class="string">&#x27;/User=/d&#x27;</span> /etc/systemd/system/hysteria-server.service</span><br><span class="line">sed -i <span class="string">&#x27;/User=/d&#x27;</span> /etc/systemd/system/hysteria-server@.service</span><br><span class="line">systemctl daemon-reload</span><br><span class="line">systemctl restart hysteria-server.service</span><br></pre></td></tr></table></figure><h1 id="reality"><a href="#reality" class="headerlink" title="reality"></a>reality</h1><p>目前安全性最高也是自建最多人使用的协议，能有效消除服务端 TLS 指纹特征，隐藏和保护流量的特征。</p><h2 id="域名选择"><a href="#域名选择" class="headerlink" title="域名选择"></a>域名选择</h2><p>reality 只需要获取域名即可使用，目标网站必须满足 5 个条件：</p><ol><li><p>使用 TLS 1.3 协议</p></li><li><p>使用 X25519 签名算法</p></li></ol><p><img src="https://gh.778080.xyz/https://raw.githubusercontent.com/EmmaHermione/emma/master/images/proxy/haAdvHsy.png"></p><ol start="3"><li>支持 HTTP&#x2F;2 协议（H2）</li></ol><p><img src="https://gh.778080.xyz/https://raw.githubusercontent.com/EmmaHermione/emma/master/images/proxy/UwDaccfe.png"></p><ol start="4"><li>不使用 CDN - 如果 Reality 目标网站使用 CDN，数据将转发到 CDN 节点，使你的 Reality 节点成为别人的反向代理加速节点</li></ol><p>在网站 URL 末尾添加 <code>/cdn-cgi/trace</code> 。如：你看上的的域名是<code>https://codepen.io</code>此时在域名后面加上<code>/cdn-cgi/trace</code> ，即：<code>https://codepen.io/cdn-cgi/trace</code> ，发现网址内容如下图，则表示网站正在使用 Cloudflare CDN，这样的是不能用的</p><p><img src="https://gh.778080.xyz/https://raw.githubusercontent.com/EmmaHermione/emma/master/images/proxy/veemRUYV.png"></p><ol start="5"><li>中国境内不依赖任何代理可以直接访问</li></ol><p>使用 <a href="https://www.itdog.cn/ping/">https://www.itdog.cn/ping/</a> 输入域名持续测试，查看中国境内连通性</p><p><img src="https://gh.778080.xyz/https://raw.githubusercontent.com/EmmaHermione/emma/master/images/proxy/wiFwgVat.png"></p><h2 id="获取域名"><a href="#获取域名" class="headerlink" title="获取域名"></a>获取域名</h2><p>域名推荐度：偷自己 &gt; 偷邻居 &gt; 偷服务器所在地图书馆、大学、旅游局 &gt; 偷大厂</p><h3 id="偷自己的域名"><a href="#偷自己的域名" class="headerlink" title="偷自己的域名"></a>偷自己的域名</h3><p>顾名思义，用自己的服务器部署网站（域名 DNS 记录指向自己部署 reality 的机器上）</p><h3 id="偷邻居的域名"><a href="#偷邻居的域名" class="headerlink" title="偷邻居的域名"></a>偷邻居的域名</h3><p><strong>ASN 查询工具：</strong><a href="https://tools.ipip.net/as.php">https://tools.ipip.net/as.php</a></p><p><strong>FOFA 目标网站查询工具：</strong><a href="https://fofa.info/">https://fofa.info</a></p><ol><li><p>首先使用 ASN 查询工具，输入你的服务器 IP，记录下你的服务器所在 ASN</p></li><li><p>使用下面代码块中的这段搜索条件，将 ASN 替换为你查询出来的数字，在 FOFA 进行搜索。下面的示例代码含义是「查询自治域为 16509，美国区域，端口为 443，证书不是由 Let’s Encrypt 或者 ZeroSSL 颁发的，且请求成功的网站。」</p><p><em>country 字段为国家地区两字母代码，可在以下网站寻找</em></p><ul><li><a href="https://baike.baidu.com/item/%E4%B8%96%E7%95%8C%E5%90%84%E5%9B%BD%E5%92%8C%E5%9C%B0%E5%8C%BA%E5%90%8D%E7%A7%B0%E4%BB%A3%E7%A0%81">百度百科链接</a></li><li><a href="https://zh.wikipedia.org/zh-cn/ISO_3166-1">维基百科链接</a></li></ul><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">asn==&quot;16509&quot; &amp;&amp; country==&quot;US&quot; &amp;&amp; port==&quot;443&quot; &amp;&amp; cert!=&quot;Let&#x27;s Encrypt&quot; &amp;&amp; cert.issuer!=&quot;ZeroSSL&quot; &amp;&amp; status_code=&quot;200&quot;</span><br></pre></td></tr></table></figure></li><li><p>从搜索结果中，找到<strong>有域名</strong>的网站，与 第一部分中「1.1 目标网站的标准」提到的条件进行核对，全都符合即可将此网站域名记录下来，以供后续使用。</p></li></ol><h3 id="偷服务器所在地图书馆、大学、旅游局"><a href="#偷服务器所在地图书馆、大学、旅游局" class="headerlink" title="偷服务器所在地图书馆、大学、旅游局"></a>偷服务器所在地图书馆、大学、旅游局</h3><ol><li>搜索美国比较有名的大学，看他们的官网，与 第一部分中「1.1 目标网站的标准」提到的 5 个条件进行核对</li><li>搜索美国的图书馆官网，看他们与 1.1……</li><li>搜美国的旅游……</li></ol><h3 id="偷大厂的网站"><a href="#偷大厂的网站" class="headerlink" title="偷大厂的网站"></a>偷大厂的网站</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><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"># Apple</span><br><span class="line">www.icloud.com</span><br><span class="line">gateway.icloud.com</span><br><span class="line">itunes.apple.com</span><br><span class="line">swdist.apple.com</span><br><span class="line"></span><br><span class="line"># 其他</span><br><span class="line">www.paypal.com</span><br><span class="line">www.microsoft.com</span><br><span class="line">www.samsung.com</span><br><span class="line">www.amd.com</span><br><span class="line">www.tesla.com</span><br><span class="line">www.nvidia.com</span><br><span class="line">www.cisco.com</span><br><span class="line">addons.mozilla.org</span><br><span class="line">www.lovelive-anime.jp</span><br><span class="line">www.sap.com</span><br><span class="line"></span><br><span class="line"># 技术网站</span><br><span class="line">www.java.com</span><br><span class="line">www.mysql.com</span><br><span class="line">www.oracle.com</span><br><span class="line">www.mongodb.com</span><br></pre></td></tr></table></figure><h2 id="一键脚本"><a href="#一键脚本" class="headerlink" title="一键脚本"></a>一键脚本</h2><figure class="highlight sh"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 首次运行</span></span><br><span class="line">bash &lt;(wget -qO- -o- https://github.com/233boy/Xray/raw/main/install.sh)</span><br><span class="line"><span class="comment"># 再次运行</span></span><br><span class="line">xray</span><br></pre></td></tr></table></figure><h2 id="面板部署"><a href="#面板部署" class="headerlink" title="面板部署"></a>面板部署</h2><figure class="highlight sh"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 首次运行</span></span><br><span class="line">bash &lt;(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh)</span><br><span class="line"><span class="comment"># 再次运行</span></span><br><span class="line">x-ui</span><br><span class="line"><span class="comment"># 在面板不配置 ssl 证书，使用 nginx 反代的情况下 禁止外部连接</span></span><br><span class="line">ufw deny 2053</span><br></pre></td></tr></table></figure><p><img src="https://gh.778080.xyz/https://raw.githubusercontent.com/EmmaHermione/emma/master/images/proxy/hGNGQxiP.png" alt="reality配置"></p><h2 id="实现-Full-cone"><a href="#实现-Full-cone" class="headerlink" title="实现 Full cone"></a>实现 Full cone</h2><p>服务端防火墙需要放行 UDP 高位端口（1024-65535），如果使用 Docker 那容器网络模式需要是 Host</p><figure class="highlight sh"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 请添加到 ufw 规则的末尾</span></span><br><span class="line">ufw allow 1024:65535/udp</span><br></pre></td></tr></table></figure><h1 id="shadowsocks"><a href="#shadowsocks" class="headerlink" title="shadowsocks"></a>shadowsocks</h1><p>最简单、最快速、消耗最低的加密代理协议，但极易遭到封锁。历经波折，目前更新到 shadowsocks 2022</p><p>shadowsocks 2022 声称提升了性能并带有完整的重放保护和防止TCP主动探测，但仍有较大封锁风险谨慎使用</p><h2 id="一键脚本-1"><a href="#一键脚本-1" class="headerlink" title="一键脚本"></a>一键脚本</h2><p>部署 shadowsocks 2022</p><figure class="highlight sh"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 首次运行</span></span><br><span class="line">bash &lt;(wget -qO- -o- https://github.com/233boy/sing-box/raw/main/install.sh)</span><br><span class="line"><span class="comment"># 再次运行</span></span><br><span class="line">sing-box</span><br></pre></td></tr></table></figure><p>最好使用 sing-box 开启 <em>multiplex 和 padding</em> 且在支持客户端启用，在 &#x2F;etc&#x2F;sing-box&#x2F;conf 目录下对应配置文件手动添加</p><figure class="highlight json"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br></pre></td><td class="code"><pre><span class="line"><span class="punctuation">&#123;</span></span><br><span class="line">  <span class="attr">&quot;inbounds&quot;</span><span class="punctuation">:</span> <span class="punctuation">[</span></span><br><span class="line">    <span class="punctuation">&#123;</span></span><br><span class="line">      <span class="attr">&quot;tag&quot;</span><span class="punctuation">:</span> <span class="string">&quot;Shadowsocks-12333.json&quot;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;type&quot;</span><span class="punctuation">:</span> <span class="string">&quot;shadowsocks&quot;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;listen&quot;</span><span class="punctuation">:</span> <span class="string">&quot;::&quot;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;listen_port&quot;</span><span class="punctuation">:</span> <span class="number">12333</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;method&quot;</span><span class="punctuation">:</span> <span class="string">&quot;2022-blake3-aes-128-gcm&quot;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;password&quot;</span><span class="punctuation">:</span> <span class="string">&quot;vDaq/GDr9Xm8+0gL0GkxaA==&quot;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;multiplex&quot;</span><span class="punctuation">:</span> <span class="punctuation">&#123;</span></span><br><span class="line">        <span class="attr">&quot;enabled&quot;</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">&quot;padding&quot;</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span></span><br><span class="line">      <span class="punctuation">&#125;</span></span><br><span class="line">    <span class="punctuation">&#125;</span></span><br><span class="line">  <span class="punctuation">]</span></span><br><span class="line"><span class="punctuation">&#125;</span></span><br></pre></td></tr></table></figure><h2 id="面板部署-1"><a href="#面板部署-1" class="headerlink" title="面板部署"></a>面板部署</h2><p>部署 shadowsocks 2022 + obfs（即http混淆）</p><figure class="highlight sh"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 首次运行</span></span><br><span class="line">bash &lt;(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh)</span><br><span class="line"><span class="comment"># 再次运行</span></span><br><span class="line">x-ui</span><br><span class="line"><span class="comment"># 在面板不配置 ssl 证书，使用 nginx 反代的情况下 禁止外部连接</span></span><br><span class="line">ufw deny 2053</span><br></pre></td></tr></table></figure><p><img src="https://gh.778080.xyz/https://raw.githubusercontent.com/EmmaHermione/emma/master/images/proxy/dGojwYQo.png" alt="shadowsocks 2022 + http混淆配置"></p><p>请求头添加名为Host，值为obfs-host&#x3D;gateway.icloud.com</p><h2 id="实现-Full-cone-1"><a href="#实现-Full-cone-1" class="headerlink" title="实现 Full cone"></a>实现 Full cone</h2><p>服务端防火墙需要放行 UDP 高位端口（1024-65535），如果使用 Docker 那容器网络模式需要是 Host</p><figure class="highlight sh"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 请添加到 ufw 规则的末尾</span></span><br><span class="line">ufw allow 1024:65535/udp</span><br></pre></td></tr></table></figure><h1 id="snell"><a href="#snell" class="headerlink" title="snell"></a>snell</h1><p>Surge 团队开发的私有专属协议，媲美甚至超越 shadowsocks，最新版仅限于 Surge 使用。</p><h2 id="一键脚本-2"><a href="#一键脚本-2" class="headerlink" title="一键脚本"></a>一键脚本</h2><figure class="highlight sh"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">wget -O snell.sh --no-check-certificate https://git.io/Snell.sh &amp;&amp; <span class="built_in">chmod</span> +x snell.sh &amp;&amp; ./snell.sh</span><br></pre></td></tr></table></figure><h2 id="Docker部署"><a href="#Docker部署" class="headerlink" title="Docker部署"></a>Docker部署</h2><figure class="highlight sh"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 创建文件夹</span></span><br><span class="line"><span class="built_in">mkdir</span> snell &amp;&amp; <span class="built_in">cd</span> snell</span><br><span class="line"><span class="comment"># 写入 Docker Compose 文件</span></span><br><span class="line"><span class="built_in">cat</span> &gt; docker-compose.yaml &lt;&lt; <span class="string">EOF</span></span><br><span class="line"><span class="string">services:</span></span><br><span class="line"><span class="string">  snell:</span></span><br><span class="line"><span class="string">    image: vocrx/snell-server:alpine</span></span><br><span class="line"><span class="string">    container_name: snell</span></span><br><span class="line"><span class="string">    restart: always</span></span><br><span class="line"><span class="string">    network_mode: host</span></span><br><span class="line"><span class="string">    environment:</span></span><br><span class="line"><span class="string">      - PORT=65110</span></span><br><span class="line"><span class="string">      - PSK=jy7jbw6yFWikg2uS</span></span><br><span class="line"><span class="string">      - DNS=1.1.1.1,8.8.8.8</span></span><br><span class="line"><span class="string">EOF</span></span><br><span class="line"><span class="comment"># 自定义 SNELL 配置参考</span></span><br><span class="line">services:</span><br><span class="line">  snell:</span><br><span class="line">    image: vocrx/snell-server:alpine</span><br><span class="line">    container_name: snell</span><br><span class="line">    restart: always</span><br><span class="line">    network_mode: host</span><br><span class="line">    environment:</span><br><span class="line">      - PORT=自定义使用的端口, 仅host模式下生效, 不写则随机。</span><br><span class="line">      - PSK=节点密码, 不写则随机。</span><br><span class="line">      - IPV6=<span class="literal">true</span>/false, 不写默认为<span class="literal">false</span>。</span><br><span class="line">      - DNS=8.8.8.8,1.1.1.1, 不写为系统默认</span><br><span class="line">      - VERSION=v4.1.1, 自定义二进制文件版本, 不写则默认最新版</span><br><span class="line">      - OBFS=http,默认为空,写此条必须配置HOST</span><br><span class="line">      - HOST=icloud.com,默认为空</span><br><span class="line"><span class="comment"># 启动</span></span><br><span class="line">docker compose up -d</span><br></pre></td></tr></table></figure><h1 id="参考-推荐"><a href="#参考-推荐" class="headerlink" title="参考&#x2F;推荐"></a>参考&#x2F;推荐</h1><p><strong><a href="https://lainbo.dev/custom-reality?locale=zh">Reality自建教程</a></strong></p>]]></content:encoded>
      
      
      <category domain="http://blog.778080.xyz/categories/%E4%BB%A3%E7%90%86%E5%B7%A5%E5%85%B7/">代理工具</category>
      
      
      <category domain="http://blog.778080.xyz/tags/Proxy/">Proxy</category>
      
      
      <comments>http://blog.778080.xyz/archives/fuck-gfw/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>你好，来看看世界吧</title>
      <link>http://blog.778080.xyz/archives/proxy-service/</link>
      <guid>http://blog.778080.xyz/archives/proxy-service/</guid>
      <pubDate>Tue, 19 Sep 2023 12:00:00 GMT</pubDate>
      
      <description>跨越长城走向世界</description>
      
      
      
      <content:encoded><![CDATA[<p><img src="https://gh.778080.xyz/https://raw.githubusercontent.com/EmmaHermione/emma/master/images/proxy/MhocETFa.jpg" alt="拒之墙外"></p><h1 id="❤️-核心"><a href="#❤️-核心" class="headerlink" title="❤️ 核心"></a>❤️ 核心</h1><ul><li><a href="https://github.com/MetaCubeX/mihomo/tree/Meta">Mihomo</a> 原 Clash Meta，基于开源项目 Clash 的二次开发版本，增加了一些独有特性，支持更多协议</li><li><a href="https://github.com/apernet/hysteria">Hysteria</a> 基于修改版的 QUIC 协议专为恶劣网络环境进行优化的双边加速代理工具</li><li><a href="https://github.com/SagerNet/sing-box">sing-box</a> GO 开发的高性能通用代理平台</li><li><a href="https://github.com/anytls/anytls-go">AnyTLS</a> 一款精心设计的 TLS 代理，具备更简单的配置，更优的性能，并且更强的抗审查能力</li><li><a href="https://github.com/XTLS/Xray-core">Xray-core</a> 是 v2ray-core 的超集，含更好的整体性能和 XTLS、reality 等一系列增强，且<del>完全</del>兼容 v2ray-core 的功能及配置</li><li><a href="https://github.com/shadowsocks/shadowsocks-rust">shadowsocks</a> 最新版使用 Rust 开发，基于 Socks5 协议的加密传输代理工具</li><li><a href="https://github.com/v2fly/v2ray-core">v2ray-core</a> GO 开发的高性能通用代理平台</li><li><a href="https://manual.nssurge.com/others/snell.html">Snell</a> Surge 团队开发的精简加密代理协议，支持原生 UDP，新版本仅供 Surge 使用</li><li><a href="https://github.com/klzgrad/naiveproxy">naiveproxy</a> 使用 Chrome 浏览器的网络堆栈来伪装流量，具有很强的抗审查能力和低可探测性。</li><li><a href="https://github.com/tuic-protocol/tuic">TUIC</a> 尽可能减少握手造成的网络往返时延  <a href="https://www.eaimty.com/2025/restart-developing-tuic-but-not-as-the-author/"><strong>重启开发</strong></a></li><li><a href="https://github.com/juicity/juicity">juicity</a> 基于 QUIC 的代理协议和实现，受到 TUIC 的启发</li><li><del><a href="https://github.com/Dreamacro/clash">clash</a> 使用 Go 开发的网络连接代理平台，通过预先定义的规则，对网络连接进行转发</del> <strong>已删库</strong></li><li><del><a href="https://github.com/Dreamacro/clash/releases/tag/premium">clash premium</a> 因为 Clash 的<a href="https://github.com/Dreamacro/clash/issues/541#issuecomment-672029110">不当使用和重新分发</a>，开发者决定分叉 Clash 并在私有 GitHub 存储库中开发更高级的功能</del> <strong>已删库</strong></li><li><del><a href="https://github.com/trojan-gfw/trojan">trojan</a> 将通信流量伪装成互联网上最常见的 https 流量，从而有效防止流量被检测和干扰</del> <strong>已停更</strong></li><li><del><a href="https://github.com/p4gefau1t/trojan-go">trojan-go</a> Go 实现的 Trojan 代理，支持 多路复用&#x2F;路由功能&#x2F;CDN中转&#x2F;Shadowsocks 混淆插件，多平台，无依赖</del> <strong>已停更</strong></li></ul><h1 id="📱-移动端"><a href="#📱-移动端" class="headerlink" title="📱 移动端"></a>📱 移动端</h1><h2 id="🤖-Android-客户端"><a href="#🤖-Android-客户端" class="headerlink" title="🤖 Android 客户端"></a>🤖 Android 客户端</h2><ul><li><a href="https://github.com/chen08209/FlClash"><strong>FlClash</strong></a> 全协议支持、分流，美观的UI</li><li><a href="https://github.com/MetaCubeX/ClashMetaForAndroid"><strong>Clash Meta for Android</strong></a> 全协议支持、分流，Mihomo官方</li><li><a href="https://github.com/MatsuriDayo/NekoBoxForAndroid"><strong>NekoBox</strong></a> 全协议支持、稳定，优化的链式代理，分流一般</li><li><a href="https://github.com/2dust/v2rayNG"><strong>v2rayNG</strong></a> 比较上古的软件了，仅支持 Xray&#x2F;v2ray 核心，协议支持较欠缺</li></ul><h2 id="🍎-iOS-客户端"><a href="#🍎-iOS-客户端" class="headerlink" title="🍎 iOS 客户端"></a>🍎 iOS 客户端</h2><ul><li><a href="https://apps.apple.com/us/app/shadowrocket/id932747118?l=zh-cn"><strong>Shadowrocket</strong></a> (小火箭) $2.99 <strong>最高性价比</strong>，使用简单，全协议支持，但分流较折腾</li><li><a href="https://apps.apple.com/us/app/stash-rule-based-proxy/id1596063349"><strong>Stash</strong></a> $5.99 较全的协议支持，分流</li><li><a href="https://nssurge.com/"><strong>Surge</strong></a> $49.99&#x2F;$69.99&#x2F;$99.99 <strong>最强也是最贵的</strong>，有钱的折腾党必入</li><li><a href="https://apps.apple.com/us/app/loon/id1373567447?l=zh-cn"><strong>Loon</strong></a> $7.99 <strong>潜力股</strong></li></ul><h1 id="🖥-电脑端"><a href="#🖥-电脑端" class="headerlink" title="🖥 电脑端"></a>🖥 电脑端</h1><h2 id="🪟-Windows-客户端"><a href="#🪟-Windows-客户端" class="headerlink" title="🪟 Windows 客户端"></a>🪟 Windows 客户端</h2><ul><li><a href="https://github.com/mihomo-party-org/mihomo-party"><strong>Clash Party</strong></a> 功能完善，有Smart 智能分组且集成 Sub-Store</li><li><a href="https://github.com/xishang0128/clash-meta-party"><strong>Sparkle</strong></a> Mihomo成员开发，功能强大但臃肿，更新随缘</li><li><a href="https://github.com/clash-verge-rev/clash-verge-rev"><strong>Clash Verge Rev</strong></a> 功能强大、轻量高效，更新活跃但BUG较多</li><li><a href="https://github.com/chen08209/FlClash"><strong>FlClash</strong></a> 全协议支持、分流</li><li><a href="https://github.com/2dust/v2rayN"><strong>v2rayN</strong></a> 全协议支持，支持 Xray&#x2F;Sing-box 等多种核心</li></ul><h2 id="🍏-macOS-客户端"><a href="#🍏-macOS-客户端" class="headerlink" title="🍏 macOS 客户端"></a>🍏 macOS 客户端</h2><ul><li><a href="https://github.com/mihomo-party-org/mihomo-party"><strong>Clash Party</strong></a> 功能完善，有Smart 智能分组且集成 Sub-Store</li><li><a href="https://github.com/xishang0128/clash-meta-party"><strong>Sparkle</strong></a> Mihomo成员开发，功能强大但臃肿，更新随缘</li><li><a href="https://github.com/clash-verge-rev/clash-verge-rev"><strong>Clash Verge Rev</strong></a> 功能强大、轻量高效，更新活跃但BUG较多</li><li><a href="https://nssurge.com/"><strong>Surge</strong></a> $49.99&#x2F;$69.99&#x2F;$99.99 <strong>最强也是最贵的</strong>，有钱的折腾党必入</li><li><a href="https://github.com/chen08209/FlClash"><strong>FlClash</strong></a> 全协议支持、分流</li></ul><h2 id="🐧-Linux-客户端"><a href="#🐧-Linux-客户端" class="headerlink" title="🐧 Linux 客户端"></a>🐧 Linux 客户端</h2><ul><li><a href="https://github.com/mihomo-party-org/mihomo-party"><strong>Clash Party</strong></a> 功能完善，有Smart 智能分组且集成 Sub-Store</li><li><a href="https://github.com/xishang0128/clash-meta-party"><strong>Sparkle</strong></a> Mihomo成员开发，功能强大但臃肿，更新随缘</li><li><a href="https://github.com/clash-verge-rev/clash-verge-rev"><strong>Clash Verge Rev</strong></a> 功能强大、轻量高效，更新活跃但BUG较多</li><li><a href="https://github.com/chen08209/FlClash"><strong>FlClash</strong></a> 全协议支持、分流</li><li><a href="https://github.com/2dust/v2rayN"><strong>v2rayN</strong></a> 全协议支持，支持 Xray&#x2F;Sing-box 等多种核心</li></ul><h1 id="⚙️-路由器"><a href="#⚙️-路由器" class="headerlink" title="⚙️ 路由器"></a>⚙️ 路由器</h1><h2 id="🗄-OpenWrt-软路由"><a href="#🗄-OpenWrt-软路由" class="headerlink" title="🗄 OpenWrt 软路由"></a>🗄 OpenWrt 软路由</h2><ul><li><a href="https://github.com/xiaorouji/openwrt-passwall"><strong>PassWall</strong></a> 配置高度灵活且功能强大，但分流设置繁琐且界面陈旧</li><li><a href="https://github.com/xiaorouji/openwrt-passwall2"><strong>PassWall2</strong></a> 游戏级 UDP 代理，相较 PassWall 分流操作有简化</li><li><a href="https://github.com/nikkinikki-org/OpenWrt-nikki"><strong>Nikki</strong></a> OpenClash 精简版，透明代理，轻量高效</li><li><a href="https://github.com/vernesong/OpenClash"><strong>OpenClash</strong></a> 更新积极、功能完善，但极其臃肿、配置复杂，CPU性能差勿入，新手勿入</li><li><a href="https://github.com/fw876/helloworld"><strong>SSR Plus</strong></a> 简单易用，兼容旧设备</li></ul><h2 id="🛜-硬路由"><a href="#🛜-硬路由" class="headerlink" title="🛜 硬路由"></a>🛜 硬路由</h2><ul><li><a href="https://github.com/juewuy/ShellCrash"><strong>ShellCrash</strong></a> 全协议支持，支持 Mihomo &#x2F; Singbox &#x2F; Singbox-P核心</li></ul><h1 id="✈️-机场推荐"><a href="#✈️-机场推荐" class="headerlink" title="✈️ 机场推荐"></a>✈️ 机场推荐</h1><div class="note blue icon-padding flat"><i class="note-icon fa-solid fa-bullhorn"></i><p>顶级机场和其他机场有什么区别？最重要就是稳定（SLA极高），其他的特色自行选择</p><p>机场大部分都有审计规则，可能会屏蔽一些网站（如新闻&#x2F;政治等）及网络（如BT&#x2F;PT&#x2F;磁力链）</p><p>我是不喜欢的，自己墙自己</p></div><p>购买机场记得使用优惠码，最好月付 月付 月付！年付，真心不太推荐。</p><h2 id="👑-顶级机场"><a href="#👑-顶级机场" class="headerlink" title="👑 顶级机场"></a>👑 顶级机场</h2><ul><li><a href="https://nexitallysafe.com/">奶昔</a>：全网最强也是最贵，可自行选择落地接入点</li><li><a href="https://www.kuromis.com/">Kuromis库洛米</a>：奶昔的测试服，UDP多线程优化</li><li><a href="https://immtel.com/">ImmTelecom</a>：佛系运营</li><li><a href="https://www.amytele.net/">AmyTelecom按摩院</a>：奶昔的分站</li><li><a href="https://huacloud.dev/">FlowerCloud花云</a>：全球覆盖，有低倍率，多地冷门节点</li><li><a href="https://y-too.com/">YToo歪兔</a>：专线机场，有低倍率，在一线机场里性价比较高</li></ul><h2 id="👍️-推荐机场"><a href="#👍️-推荐机场" class="headerlink" title="👍️ 推荐机场"></a>👍️ 推荐机场</h2><ul><li><a href="https://wd-gold.com/">西部数据</a>：20R&#x2F;200G专线性价比之王，长期85折</li><li><a href="https://login.ouonetwork.com/">OuO</a>：11R&#x2F;100G “专线”，有Emby可观影，75折优惠码：<strong>DUANG114514</strong></li></ul><p>方便省心：一线机场+备用机场</p><p>无审计尽量保证数据安全及隐私：自建+备用机场</p><h1 id="🛠️-自建Proxy"><a href="#🛠️-自建Proxy" class="headerlink" title="🛠️ 自建Proxy"></a>🛠️ 自建Proxy</h1><p>主流协议选择可以参考另一篇<a href="https://blog.778080.xyz/archives/fuck-gfw/">文章</a></p><h2 id="面板搭建"><a href="#面板搭建" class="headerlink" title="面板搭建"></a>面板搭建</h2><ul><li><a href="https://github.com/MHSanaei/3x-ui">MHSanaei&#x2F;3x-ui</a> x-ui魔改版</li><li><a href="https://github.com/alireza0/x-ui">alireza0&#x2F;x-ui</a> x-ui魔改版</li><li><a href="https://github.com/alireza0/s-ui">alireza0&#x2F;s-ui</a> Sing-Box面板</li><li><a href="https://github.com/hiddify/Hiddify-Manager">Hiddify-Manager</a> 多协议支持面板</li></ul><h2 id="脚本搭建"><a href="#脚本搭建" class="headerlink" title="脚本搭建"></a>脚本搭建</h2><ul><li><a href="https://github.com/mack-a/v2ray-agent">mack-a八合一脚本</a>，多协议支持</li><li><a href="https://github.com/fscarmen/sing-box">fscarmen&#x2F;sing-box脚本</a>，多协议支持</li><li><a href="https://github.com/233boy/Xray">233boy&#x2F;Xray脚本</a>，多协议支持</li><li><a href="https://github.com/233boy/sing-box">233boy&#x2F;sing-box脚本</a>，多协议支持</li><li><a href="https://v2.hysteria.network/zh/docs/getting-started/Installation/#linux">hysteria2官方脚本</a>，UDP协议&#x2F;垃圾线路救星</li></ul><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"># Snell搭建、管理</span><br><span class="line">wget -O snell.sh --no-check-certificate https://git.io/Snell.sh &amp;&amp; chmod +x snell.sh &amp;&amp; ./snell.sh</span><br></pre></td></tr></table></figure><p>小白&#x2F;懒癌患者&#x2F;想省心，请尽量选择购买机场，如需要自建推荐 vless reality 和 hysteria2</p><h1 id="💯-海豚导航"><a href="#💯-海豚导航" class="headerlink" title="💯 海豚导航"></a>💯 海豚导航</h1><p>更详细信息可以阅读：<a href="https://www.haitunt.org/index.html">https://www.haitunt.org/index.html</a></p>]]></content:encoded>
      
      
      <category domain="http://blog.778080.xyz/categories/%E4%BB%A3%E7%90%86%E5%B7%A5%E5%85%B7/">代理工具</category>
      
      
      <category domain="http://blog.778080.xyz/tags/Proxy/">Proxy</category>
      
      
      <comments>http://blog.778080.xyz/archives/proxy-service/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>knife4j 4.1.0版本文档请求异常</title>
      <link>http://blog.778080.xyz/archives/knife4j-document-request-error/</link>
      <guid>http://blog.778080.xyz/archives/knife4j-document-request-error/</guid>
      <pubDate>Thu, 31 Aug 2023 12:00:00 GMT</pubDate>
      
      <description>我是不看官方文档的SB</description>
      
      
      
      <content:encoded><![CDATA[<h1 id="写在前面"><a href="#写在前面" class="headerlink" title="写在前面"></a>写在前面</h1><p>一直以来使用的接口文档方案都是Knife4j。此次编写新项目，鉴于springfox和Swagger2规范都已经停止维护，所以选择拥抱springdoc+OpenAPI3规范。knife4j也已更新版本，本项目基于Spring Boot2.7.x版本。<br>忠告：一定要认真看官方文档</p><h1 id="问题描述"><a href="#问题描述" class="headerlink" title="问题描述"></a>问题描述</h1><p>项目中定义了实体类属性的时间格式为LocalDateTime，如果不做任何处理后端会向前端返回数组格式，而不是我们想要的时间格式。</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">// 创建时间</span><br><span class="line">private LocalDateTime createTime;</span><br><span class="line"></span><br><span class="line">// 更新时间</span><br><span class="line">private LocalDateTime updateTime;</span><br></pre></td></tr></table></figure><p><img src="https://gh.778080.xyz/https://raw.githubusercontent.com/EmmaHermione/emma/master/images/error/pyifoQy.png" alt="pyifoQy"></p><p>像这种情况，以前的项目也遇到过，所以是轻松解决。这里说一下两种解决方案，推荐使用的是第二种。</p><p><strong>第一种：</strong><br>遇到这个问题是因为后端向前端发送的时间是一个LocalDateTime对象，我们只需要把该对象转成时间戳在发送即可。</p><p>在定义LocalDateTime类型的属性上上加上注解，对日期进行格式化</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">// 创建时间</span><br><span class="line">@JsonFormat(pattern = &quot;yyyy-MM-dd HH:mm:ss&quot;)</span><br><span class="line">private LocalDateTime createTime;</span><br><span class="line"></span><br><span class="line">// 更新时间</span><br><span class="line">@JsonFormat(pattern = &quot;yyyy-MM-dd HH:mm:ss&quot;)</span><br><span class="line">private LocalDateTime updateTime;</span><br></pre></td></tr></table></figure><p>但这种方式，需要在每个时间属性都加上该注解，使用麻烦，耦合度高</p><p><strong>第二种：</strong><br>通过重写WebMvcConfigurationSupport里的消息转换器方法实现(全局)，统一对日期类型进行格式处理</p><p>具体实现步骤：</p><ul><li>提供对象转换器JacksonObjectMapper，基于Jackson进行Java对象到json数据的转换</li><li>在WebMvcConfig配置类中扩展Spring mvc的消息转换器，在此消息转换器中使用提供的对象转换器进行Java对象到json数据的转换<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><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></pre></td><td class="code"><pre><span class="line">/**</span><br><span class="line"> * 对象映射器:基于jackson将Java对象转为json，或者将json转为Java对象</span><br><span class="line"> * 将JSON解析为Java对象的过程称为 [从JSON反序列化Java对象]</span><br><span class="line"> * 从Java对象生成JSON的过程称为 [序列化Java对象到JSON]</span><br><span class="line"> */</span><br><span class="line">public class JacksonObjectMapper extends ObjectMapper &#123;</span><br><span class="line"></span><br><span class="line">    public static final String DEFAULT_DATE_FORMAT = &quot;yyyy-MM-dd&quot;;</span><br><span class="line"></span><br><span class="line">    public static final String DEFAULT_DATE_TIME_FORMAT = &quot;yyyy-MM-dd HH:mm&quot;;</span><br><span class="line">    </span><br><span class="line">    public static final String DEFAULT_TIME_FORMAT = &quot;HH:mm:ss&quot;;</span><br><span class="line"></span><br><span class="line">    public JacksonObjectMapper() &#123;</span><br><span class="line">        super();</span><br><span class="line">        // 收到未知属性时不报异常</span><br><span class="line">        this.configure(FAIL_ON_UNKNOWN_PROPERTIES, false);</span><br><span class="line"></span><br><span class="line">        // 反序列化时，属性不存在的兼容处理</span><br><span class="line">        this.getDeserializationConfig().withoutFeatures(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);</span><br><span class="line"></span><br><span class="line">        SimpleModule simpleModule = new SimpleModule()</span><br><span class="line">                .addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_TIME_FORMAT)))</span><br><span class="line">                .addDeserializer(LocalDate.class, new LocalDateDeserializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_FORMAT)))</span><br><span class="line">                .addDeserializer(LocalTime.class, new LocalTimeDeserializer(DateTimeFormatter.ofPattern(DEFAULT_TIME_FORMAT)))</span><br><span class="line">                .addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_TIME_FORMAT)))</span><br><span class="line">                .addSerializer(LocalDate.class, new LocalDateSerializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_FORMAT)))</span><br><span class="line">                .addSerializer(LocalTime.class, new LocalTimeSerializer(DateTimeFormatter.ofPattern(DEFAULT_TIME_FORMAT)));</span><br><span class="line"></span><br><span class="line">        // 注册功能模块 例如，可以添加自定义序列化器和反序列化器</span><br><span class="line">        this.registerModule(simpleModule);</span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure></li></ul><p>WebMvcConfig配置类里重写消息转换器</p><p><img src="https://gh.778080.xyz/https://raw.githubusercontent.com/EmmaHermione/emma/master/images/error/dfacba.png" alt="dfacba"></p><p>在我重写消息转换器后导致了knife4j文档请求异常的出现，起初我并未发现该问题，因为在使用Postman进行接口测试，并没有打开文档。当我发现该问题，对比代码版本的变动后，我意识到可能是消息转换器导致了该问题的出现。</p><p><img src="https://gh.778080.xyz/https://raw.githubusercontent.com/EmmaHermione/emma/master/images/error/FLzPBWE.png" alt="FLzPBWE"></p><p>可以明显看到请求&#x2F;v3&#x2F;apis-docs路径返回的是Base64编码，就是因为没有正确返回json数据导致文档显示失败</p><p><img src="https://gh.778080.xyz/https://raw.githubusercontent.com/EmmaHermione/emma/master/images/error/kvNroB.png" alt="kvNroB"></p><h1 id="解决方案"><a href="#解决方案" class="headerlink" title="解决方案"></a>解决方案</h1><p>由于之前的项目也是使用的knife4j（Swagger2），也重写过消息转换器，并未出现该问题。当我一筹莫展，反复修改的情况下，突然想起我用的knife4j是新版的。于是乎，我打开了knife4j的官网……</p><p><img src="https://gh.778080.xyz/https://raw.githubusercontent.com/EmmaHermione/emma/master/images/error/DhcYdM.png" alt="DhcYdM"></p><p>没错，就是这样的，打开官网看一眼FAQ就可以解决了<br>ps：不要学我，用新版都不先看一眼文档（其实看了，就看了新版依赖坐标）</p><p><img src="https://gh.778080.xyz/https://raw.githubusercontent.com/EmmaHermione/emma/master/images/error/hZjQKE.png" alt="hZjQKE"></p><p>在查看GitHub的issues后，成功解决该问题。就是需要在拓展的自定义消息转换器前注册ByteArrayHttpMessageConverter，一定要注意顺序，不然还是会请求异常</p><p><img src="https://gh.778080.xyz/https://raw.githubusercontent.com/EmmaHermione/emma/master/images/error/zMyeZiGU.png" alt="zMyeZiGU"></p><p><img src="https://gh.778080.xyz/https://raw.githubusercontent.com/EmmaHermione/emma/master/images/error/bsCPKVG.png" alt="bsCPKVG"></p>]]></content:encoded>
      
      
      <category domain="http://blog.778080.xyz/categories/%E4%BB%A3%E7%A0%81%E7%BC%96%E7%A8%8B/">代码编程</category>
      
      
      <category domain="http://blog.778080.xyz/tags/Java/">Java</category>
      
      
      <comments>http://blog.778080.xyz/archives/knife4j-document-request-error/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>Docker基本概念及命令</title>
      <link>http://blog.778080.xyz/archives/docker-base/</link>
      <guid>http://blog.778080.xyz/archives/docker-base/</guid>
      <pubDate>Sun, 23 Jul 2023 12:00:00 GMT</pubDate>
      
      <description>跨平台一把梭</description>
      
      
      
      <content:encoded><![CDATA[<p><img src="https://gh.778080.xyz/https://raw.githubusercontent.com/EmmaHermione/emma/master/images/docker/EpgnWPien.jpg" alt="Docker启动"></p><h1 id="什么是-Docker"><a href="#什么是-Docker" class="headerlink" title="什么是 Docker"></a>什么是 Docker</h1><p>Docker 是一种开源的容器化平台，用于轻松地构建、部署和运行应用程序。它通过利用容器化技术，使得应用程序及其依赖项可以被打包在一个独立的、可移植的容器中。这个容器包含了应用程序所需的所有组件，包括代码、运行时环境、系统工具、系统库等。</p><h1 id="使用-Docker-的好处"><a href="#使用-Docker-的好处" class="headerlink" title="使用 Docker 的好处"></a>使用 Docker 的好处</h1><ul><li><strong>轻量化和快速部署</strong>：Docker 利用容器化技术，将应用程序及其所有依赖项打包成独立的容器，这使得应用程序在不同环境中具备一致的运行方式，减少了部署的复杂性，并能够快速启动和停止容器。</li><li><strong>环境一致性</strong>：Docker 可以确保应用程序在不同的开发、测试和生产环境中具有一致的运行环境，避免了由于环境差异导致的问题。</li><li><strong>高效的资源利用</strong>：Docker 容器共享主机的操作系统内核，因此相比于传统的虚拟化方式，它的资源消耗更低，能够更高效地利用服务器的计算资源。</li><li><strong>快速迁移和扩展</strong>：Docker 容器可以方便地在不同的主机之间迁移，而且可以根据需求快速扩展应用程序的实例数量，提供更好的水平扩展能力。</li></ul><blockquote><p>Docker 对比传统虚拟机</p></blockquote><table><thead><tr><th>特性</th><th>容器</th><th>虚拟机</th></tr></thead><tbody><tr><td>启动</td><td>秒级</td><td>分钟级</td></tr><tr><td>硬盘使用</td><td>一般为 MB</td><td>一般为 GB</td></tr><tr><td>性能</td><td>接近原生</td><td>弱于</td></tr><tr><td>系统支持量</td><td>单机支持上千个容器</td><td>一般几十个</td></tr></tbody></table><h1 id="Docker-基本概念"><a href="#Docker-基本概念" class="headerlink" title="Docker 基本概念"></a>Docker 基本概念</h1><ul><li><strong>镜像</strong>（Image）</li><li><strong>容器</strong>（Container）</li><li><strong>仓库</strong>（Repository）</li></ul><p>理解了这三个概念，就理解了 Docker 的整个生命周期。</p><h2 id="Docker-镜像"><a href="#Docker-镜像" class="headerlink" title="Docker 镜像"></a>Docker 镜像</h2><p>我们都知道，操作系统分为 <strong>内核</strong> 和 <strong>用户空间</strong>。对于 Linux 而言，内核启动后，会挂载 root 文件系统为其提供用户空间支持。而 <strong>Docker 镜像</strong>（Image），就相当于是一个 root 文件系统。比如官方镜像 ubuntu:18.04 就包含了完整的一套 Ubuntu 18.04 最小系统的 root 文件系统。</p><p><strong>Docker 镜像</strong> 是一个特殊的文件系统，除了提供容器运行时所需的程序、库、资源、配置等文件外，还包含了一些为运行时准备的一些配置参数（如匿名卷、环境变量、用户等）。镜像 <strong>不包含</strong> 任何动态数据，其内容在构建之后也不会被改变。</p><blockquote><p>分层存储</p></blockquote><p>因为镜像包含操作系统完整的 root 文件系统，其体积往往是庞大的，因此在 Docker 设计时，就充分利用 <a href="https://en.wikipedia.org/wiki/Union_mount">Union FS</a> 的技术，将其设计为分层存储的架构。所以严格来说，镜像并非是像一个 ISO 那样的打包文件，镜像只是一个虚拟的概念，其实际体现并非由一个文件组成，而是由一组文件系统组成，或者说，由多层文件系统联合组成。</p><p>镜像构建时，会一层层构建，前一层是后一层的基础。每一层构建完就不会再发生改变，后一层上的任何改变只发生在自己这一层。比如，删除前一层文件的操作，实际不是真的删除前一层的文件，而是仅在当前层标记为该文件已删除。在最终容器运行的时候，虽然不会看到这个文件，但是实际上该文件会一直跟随镜像。因此，在构建镜像的时候，需要额外小心，每一层尽量只包含该层需要添加的东西，任何额外的东西应该在该层构建结束前清理掉。</p><p>分层存储的特征还使得镜像的复用、定制变的更为容易。甚至可以用之前构建好的镜像作为基础层，然后进一步添加新的层，以定制自己所需的内容，构建新的镜像。</p><h2 id="Docker-容器"><a href="#Docker-容器" class="headerlink" title="Docker 容器"></a>Docker 容器</h2><p>镜像（Image）和容器（Container）的关系，就像是面向对象程序设计中的 类 和 实例 一样，镜像是静态的定义，容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。</p><p>容器的实质是进程，但与直接在宿主执行的进程不同，容器进程运行于属于自己的独立的 <a href="https://en.wikipedia.org/wiki/Linux_namespaces">命名空间</a>。因此容器可以拥有自己的 root 文件系统、自己的网络配置、自己的进程空间，甚至自己的用户 ID 空间。容器内的进程是运行在一个隔离的环境里，使用起来，就好像是在一个独立于宿主的系统下操作一样。这种特性使得容器封装的应用比直接在宿主运行更加安全。也因为这种隔离的特性，很多人初学 Docker 时常常会混淆容器和虚拟机。</p><p>前面讲过镜像使用的是分层存储，容器也是如此。每一个容器运行时，是以镜像为基础层，在其上创建一个当前容器的存储层，我们可以称这个为容器运行时读写而准备的存储层为 <strong>容器存储层</strong>。</p><p>容器存储层的生存周期和容器一样，容器消亡时，容器存储层也随之消亡。因此，任何保存于容器存储层的信息都会随容器删除而丢失。<br>按照 Docker 最佳实践的要求，容器不应该向其存储层内写入任何数据，容器存储层要保持无状态化。所有的文件写入操作，都应该使用 数据卷（Volume）、或者 绑定宿主目录，在这些位置的读写会跳过容器存储层，直接对宿主（或网络存储）发生读写，其性能和稳定性更高。</p><p>数据卷的生存周期独立于容器，容器消亡，数据卷不会消亡。因此，使用数据卷后，容器删除或者重新运行之后，数据却不会丢失。</p><h2 id="Docker仓库"><a href="#Docker仓库" class="headerlink" title="Docker仓库"></a>Docker仓库</h2><p><img src="https://gh.778080.xyz/https://raw.githubusercontent.com/EmmaHermione/emma/master/images/docker/DcAEyULtfd.png" alt="DcAEyULtfd"></p><p>镜像构建完成后，可以很容易的在当前宿主机上运行，但是，如果需要在其它服务器上使用这个镜像，我们就需要一个集中的存储、分发镜像的服务，Docker Registry 就是这样的服务。</p><p>一个 <strong>Docker Registry</strong> 中可以包含多个 <strong>仓库</strong>（Repository）；每个仓库可以包含多个 <strong>标签</strong>（Tag）；每个标签对应一个镜像。</p><p>通常，一个仓库会包含同一个软件不同版本的镜像，而标签就常用于对应该软件的各个版本。我们可以通过 &lt;仓库名&gt;:&lt;标签&gt; 的格式来指定具体是这个软件哪个版本的镜像。如果不给出标签，将以 latest 作为默认标签。</p><p>以 <a href="https://hub.docker.com/_/ubuntu">Ubuntu 镜像</a> 为例，ubuntu 是仓库的名字，其内包含有不同的版本标签，如，16.04, 18.04。我们可以通过 ubuntu:16.04，或者 ubuntu:18.04 来具体指定所需哪个版本的镜像。如果忽略了标签，比如 ubuntu，那将视为 ubuntu:latest。</p><p><img src="https://gh.778080.xyz/https://raw.githubusercontent.com/EmmaHermione/emma/master/images/docker/DQmJzrDb.png" alt="DQmJzrDb"></p><p>仓库名经常以 两段式路径 形式出现，比如 jwilder&#x2F;nginx-proxy，前者往往意味着 Docker Registry 多用户环境下的用户名，后者则往往是对应的软件名。但这并非绝对，取决于所使用的具体 Docker Registry 的软件或服务。</p><blockquote><p>Docker Registry 公开服务</p></blockquote><p>Docker Registry 公开服务是开放给用户使用、允许用户管理镜像的 Registry 服务。一般这类公开服务允许用户免费上传、下载公开的镜像，并可能提供收费服务供用户管理私有镜像。<br>最常使用的 Registry 公开服务是官方的 <a href="https://hub.docker.com/">Docker Hub</a>，这也是默认的 Registry，并拥有大量的高质量的 官方镜像。除此以外，还有 Red Hat 的 <a href="https://quay.io/repository/">Quay.io</a>；Google 的 <a href="https://cloud.google.com/container-registry/">Google Container Registry</a>，<a href="https://kubernetes.io/">Kubernetes</a> 的镜像使用的就是这个服务；代码托管平台 GitHub 推出的 <a href="https://docs.github.com/cn/packages/working-with-a-github-packages-registry/working-with-the-container-registry">ghcr.io</a>。<br>由于某些原因，在国内访问这些服务可能会比较慢。国内的一些云服务商提供了针对 Docker Hub 的镜像服务（Registry Mirror），这些镜像服务被称为 加速器。常见的有 <a href="https://www.aliyun.com/product/acr?source=5176.11533457&userCode=8lx5zmtu">阿里云加速器</a>、<a href="https://www.daocloud.io/mirror#accelerator-doc">DaoCloud 加速器</a> 等。使用加速器会直接从国内的地址下载 Docker Hub 的镜像，比直接从 Docker Hub 下载速度会提高很多。在 <a href="#">安装 Docker</a> 一节中有详细的配置方法。<br>国内也有一些云服务商提供类似于 Docker Hub 的公开服务。比如 <a href="https://c.163.com/hub#/m/library/">网易云镜像服务</a>、<a href="https://hub.daocloud.io/">DaoCloud 镜像市场</a>、<a href="https://www.aliyun.com/product/acr?source=5176.11533457&userCode=8lx5zmtu">阿里云镜像库</a> 等。</p><blockquote><p>私有 Docker Registry</p></blockquote><p>除了使用公开服务外，用户还可以在本地搭建私有 <a href="https://hub.docker.com/_/registry/">Docker Registry</a>。Docker 官方提供了 Docker Registry 镜像，可以直接使用做为私有 Registry 服务。</p><p>开源的 Docker Registry 镜像只提供了 Docker Registry API 的服务端实现，足以支持 docker 命令，不影响使用。但不包含图形界面，以及镜像维护、用户管理、访问控制等高级功能。</p><p>除了官方的 Docker Registry 外，还有第三方软件实现了 <a href="https://docs.docker.com/registry/spec/api/">Docker Registry API</a>，甚至提供了用户界面以及一些高级功能。比如，<a href="https://github.com/goharbor/harbor">Harbor</a> 和 <a href="https://yeasy.gitbook.io/docker_practice/repository/nexus3_registry">Sonatype Nexus</a>。</p><h1 id="安装-Docker"><a href="#安装-Docker" class="headerlink" title="安装 Docker"></a>安装 Docker</h1><h2 id="一键安装-Docker"><a href="#一键安装-Docker" class="headerlink" title="一键安装 Docker"></a>一键安装 Docker</h2><p>安装 Docker（非中国大陆服务器）</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">wget -qO- get.docker.com | bash</span><br></pre></td></tr></table></figure><p>安装 Docker（中国大陆服务器）</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">curl -sSL https://get.daocloud.io/docker | sh</span><br></pre></td></tr></table></figure><h2 id="镜像加速器"><a href="#镜像加速器" class="headerlink" title="镜像加速器"></a>镜像加速器</h2><p>国内从 Docker Hub 拉取镜像有时会遇到困难，此时可以配置镜像加速器。国内很多云服务商都提供了国内加速器服务，例如：</p><p><img src="https://gh.778080.xyz/https://raw.githubusercontent.com/EmmaHermione/emma/master/images/docker/EyUboeF.png" alt="EyUboeF"></p><ul><li><a href="https://www.aliyun.com/product/acr?source=5176.11533457">阿里云加速器(点击管理控制台 -&gt; 登录账号 -&gt; 右侧镜像工具 -&gt; 镜像加速器)</a></li><li><a href="https://www.163yun.com/help/documents/56918246390157312">网易云加速器 https://hub-mirror.c.163.com</a></li><li><a href="https://cloud.baidu.com/doc/CCE/s/Yjxppt74z#%E4%BD%BF%E7%94%A8dockerhub%E5%8A%A0%E9%80%9F%E5%99%A8">百度云加速器 https://mirror.baidubce.com</a><br>由于镜像服务可能出现宕机，建议同时配置多个镜像。各个镜像站测试结果请到 <a href="https://github.com/docker-practice/docker-registry-cn-mirror-test/actions"> docker-practice&#x2F;docker-registry-cn-mirror-test</a> 查看。<blockquote><p>国内各大云服务商（腾讯云、阿里云、百度云）均提供了 Docker 镜像加速服务，建议根据运行 Docker 的云平台选择对应的镜像加速服务，具体请参考本页最后一小节。</p></blockquote></li></ul><p>本节我们以网易云镜像服务 <a href="https://hub-mirror.c.163.com/">https://hub-mirror.c.163.com</a> 为例进行介绍。</p><h3 id="Ubuntu-16-04-、Debian-8-、CentOS-7"><a href="#Ubuntu-16-04-、Debian-8-、CentOS-7" class="headerlink" title="Ubuntu 16.04+、Debian 8+、CentOS 7+"></a>Ubuntu 16.04+、Debian 8+、CentOS 7+</h3><p>目前主流 Linux 发行版均已使用  进行服务管理，这里介绍如何在使用 <a href="https://systemd.io/">systemd</a> 的 Linux 发行版中配置镜像加速器。<br>请首先执行以下命令，查看是否在 docker.service 文件中配置过镜像地址。</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">$ systemctl cat docker | grep &#x27;\-\-registry\-mirror&#x27;</span><br><span class="line"></span><br></pre></td></tr></table></figure><p>如果该命令有输出，那么请执行 $ systemctl cat docker 查看 ExecStart&#x3D; 出现的位置，修改对应的文件内容去掉 –registry-mirror 参数及其值，并按接下来的步骤进行配置。</p><p>如果以上命令没有任何输出，那么就可以在 &#x2F;etc&#x2F;docker&#x2F;daemon.json 中写入如下内容（如果文件不存在请新建该文件）：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">&#123;</span><br><span class="line">  &quot;registry-mirrors&quot;: [</span><br><span class="line">    &quot;https://hub-mirror.c.163.com&quot;,</span><br><span class="line">    &quot;https://mirror.baidubce.com&quot;</span><br><span class="line">  ]</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><blockquote><p>注意，一定要保证该文件符合 json 规范，否则 Docker 将不能启动。</p></blockquote><p>之后重新启动服务。</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">$ sudo systemctl daemon-reload</span><br><span class="line">$ sudo systemctl restart docker</span><br></pre></td></tr></table></figure><h3 id="Windows-10"><a href="#Windows-10" class="headerlink" title="Windows 10"></a>Windows 10</h3><p>对于使用 Windows 10 的用户，在任务栏托盘 Docker 图标内右键菜单选择 Settings，打开配置窗口后在左侧导航菜单选择 Docker Engine，在右侧像下边一样编辑 json 文件，之后点击 Apply &amp; Restart 保存后 Docker 就会重启并应用配置的镜像地址了。</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">&#123;</span><br><span class="line">  &quot;registry-mirrors&quot;: [</span><br><span class="line">    &quot;https://hub-mirror.c.163.com&quot;,</span><br><span class="line">    &quot;https://mirror.baidubce.com&quot;</span><br><span class="line">  ]</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><h3 id="macOS"><a href="#macOS" class="headerlink" title="macOS"></a>macOS</h3><p>对于使用 macOS 的用户，在任务栏点击 Docker Desktop 应用图标 -&gt; Perferences，在左侧导航菜单选择 Docker Engine，在右侧像下边一样编辑 json 文件。修改完成之后，点击 Apply &amp; Restart 按钮，Docker 就会重启并应用配置的镜像地址了。</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">&#123;</span><br><span class="line">  &quot;registry-mirrors&quot;: [</span><br><span class="line">    &quot;https://hub-mirror.c.163.com&quot;,</span><br><span class="line">    &quot;https://mirror.baidubce.com&quot;</span><br><span class="line">  ]</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><h3 id="检查加速器是否生效"><a href="#检查加速器是否生效" class="headerlink" title="检查加速器是否生效"></a>检查加速器是否生效</h3><p>执行 $ docker info，如果从结果中看到了如下内容，说明配置成功。</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">Registry Mirrors:</span><br><span class="line"> https://hub-mirror.c.163.com/</span><br></pre></td></tr></table></figure><h3 id="k8s-gcr-io-镜像"><a href="#k8s-gcr-io-镜像" class="headerlink" title="k8s.gcr.io 镜像"></a>k8s.gcr.io 镜像</h3><p>可以登录  阿里云 镜像中心 -&gt; 镜像搜索 查找。<br>例如 k8s.gcr.io&#x2F;coredns:1.6.7 镜像可以用 registry.cn-hangzhou.aliyuncs.com&#x2F;google_containers&#x2F;coredns:1.6.7 代替。</p><p>一般情况下有如下对应关系：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"># $ docker pull k8s.gcr.io/xxx</span><br><span class="line"></span><br><span class="line">$ docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/xxx</span><br></pre></td></tr></table></figure><h3 id="云服务商"><a href="#云服务商" class="headerlink" title="云服务商"></a>云服务商</h3><p>某些云服务商提供了 <strong>仅供内部</strong> 访问的镜像服务，当您的 Docker 运行在云平台时可以选择它们。</p><ul><li><a href="https://github.com/Azure/container-service-for-azure-china/blob/master/aks/README.md#22-container-registry-proxy">Azure 中国镜像 https://dockerhub.azk8s.cn</a></li><li><a href="https://cloud.tencent.com/product/tke?fromSource=gwzcw.1293314.1293314.1293314">腾讯云 https://mirror.ccs.tencentyun.com</a></li></ul><h2 id="开启实验特性"><a href="#开启实验特性" class="headerlink" title="开启实验特性"></a>开启实验特性</h2><p>一些 docker 命令或功能仅当 <strong>实验特性</strong> 开启时才能使用，请按照以下方法进行设置。</p><h3 id="Docker-CLI-的实验特性"><a href="#Docker-CLI-的实验特性" class="headerlink" title="Docker CLI 的实验特性"></a>Docker CLI 的实验特性</h3><p>从 v20.10 版本开始，Docker CLI 所有实验特性的命令均默认开启，无需再进行配置或设置系统环境变量。</p><h3 id="开启-dockerd-的实验特性"><a href="#开启-dockerd-的实验特性" class="headerlink" title="开启 dockerd 的实验特性"></a>开启 dockerd 的实验特性</h3><p>编辑 &#x2F;etc&#x2F;docker&#x2F;daemon.json，新增如下条目</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">&#123;</span><br><span class="line">  &quot;experimental&quot;: true</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><h1 id="Docker-常用命令"><a href="#Docker-常用命令" class="headerlink" title="Docker 常用命令"></a>Docker 常用命令</h1><p>下面将逐一学习在 Docker 中最常使用的 30 个命令。本文不会在一开始就给出最常用或者最复杂的命令，而是循序渐进的给出这些命令。</p><h2 id="命令-1-docker-help"><a href="#命令-1-docker-help" class="headerlink" title="命令 1: docker help"></a>命令 1: docker help</h2><p>这个命令用于查看 Docker CLI 的帮助信息。它的用法非常简单，如果不带任何参数，运行这个命令将会输出 Docker CLI 支持的命令列表。</p><h3 id="例-1-查看-Docker-CLI-支持的命令列表"><a href="#例-1-查看-Docker-CLI-支持的命令列表" class="headerlink" title="例 1: 查看 Docker CLI 支持的命令列表"></a>例 1: 查看 Docker CLI 支持的命令列表</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">docker help</span><br></pre></td></tr></table></figure><p>这个命令和直接输入 <strong>docker</strong> 命令不带任何参数的效果相同。</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">docker</span><br></pre></td></tr></table></figure><p>也可以命令之后加上要查看帮助的命令名称，这样就会输出那个命令的帮助信息。</p><h3 id="例-2-查看-docker-run-命令的帮助信息"><a href="#例-2-查看-docker-run-命令的帮助信息" class="headerlink" title="例 2: 查看 docker run 命令的帮助信息"></a>例 2: 查看 docker run 命令的帮助信息</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">docker help run</span><br></pre></td></tr></table></figure><h2 id="命令-2-docker-version"><a href="#命令-2-docker-version" class="headerlink" title="命令 2: docker version"></a>命令 2: docker version</h2><p>这个命令用于查看 Docker 版本信息。它的用法非常简单，不需要任何参数。运行这个命令将会输出 Docker Client 和 Docker Server 的版本信息。</p><h3 id="例-3-查看-Docker-版本信息"><a href="#例-3-查看-Docker-版本信息" class="headerlink" title="例 3: 查看 Docker 版本信息"></a>例 3: 查看 Docker 版本信息</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">docker version</span><br></pre></td></tr></table></figure><p>这个命令经常被用来检查 Docker 是否被正确的安装。</p><h2 id="命令-3-docker-pull"><a href="#命令-3-docker-pull" class="headerlink" title="命令 3: docker pull"></a>命令 3: docker pull</h2><p>这个命令用于从 register (通常就是 Docker Hub) 下载镜像。它的用法非常简单，在命令之后加上要下载的镜像名称就行。</p><h3 id="例-4-从-Docker-Hub-下载-alpine-镜像"><a href="#例-4-从-Docker-Hub-下载-alpine-镜像" class="headerlink" title="例 4: 从 Docker Hub 下载 alpine 镜像"></a>例 4: 从 Docker Hub 下载 alpine 镜像</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">docker pull alpine</span><br></pre></td></tr></table></figure><p>和其他事物一样，一个镜像也会有多个版本，Docker 使用 tag 标记镜像的版本。拉取镜像时，可以在镜像名称之后通过 <strong>:</strong> 指定镜像的 tag, 如果不指定 tag, 默认使用 <strong>:latest</strong>。</p><h3 id="例-5-从-Docker-Hub-下载-alpine-3-16-镜像"><a href="#例-5-从-Docker-Hub-下载-alpine-3-16-镜像" class="headerlink" title="例 5: 从 Docker Hub 下载 alpine:3.16 镜像"></a>例 5: 从 Docker Hub 下载 alpine:3.16 镜像</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">docker pull alpine:3.16</span><br></pre></td></tr></table></figure><p>如果要下载的镜像在本地已经存在，那么不会重复下载。</p><p>事实上，这个命令可能用得不多，因为在运行 <strong>docker run</strong> 命令的时候，如果没有对应的本地镜像，那么它将自动从 Docker Hub 下载镜像，我们很少需要手动下载镜像。</p><h2 id="命令-4-docker-images"><a href="#命令-4-docker-images" class="headerlink" title="命令 4: docker images"></a>命令 4: docker images</h2><p>这个命令用于列出本地镜像。它的用法非常简单，不需要任何参数。</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">docker images</span><br></pre></td></tr></table></figure><p>这个命令的输出可能是下面这样的：<br><img src="https://gh.778080.xyz/https://raw.githubusercontent.com/EmmaHermione/emma/master/images/docker/hwaPjDg.png" alt="hwaPjDg"></p><h2 id="命令-5-docker-rmi"><a href="#命令-5-docker-rmi" class="headerlink" title="命令 5: docker rmi"></a>命令 5: docker rmi</h2><p>这个命令用于删除本地镜像。它的用法非常简单，在命令之后加上要删除的镜像名称 (以及 tag) 就行。</p><h3 id="例-7-删除镜像-alpine-3-16"><a href="#例-7-删除镜像-alpine-3-16" class="headerlink" title="例 7: 删除镜像 alpine:3.16"></a>例 7: 删除镜像 alpine:3.16</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">docker rmi alpine:3.16</span><br></pre></td></tr></table></figure><p>运行以上命令之后，可以再运行 <strong>docker images</strong> 命令确认结果。</p><p>如果镜像有与之关联的容器，则需要把所有这些容器删除之后才能删除这个镜像。</p><h2 id="命令-6-docker-run"><a href="#命令-6-docker-run" class="headerlink" title="命令 6: docker run"></a>命令 6: docker run</h2><p>这个命令用于从一个镜像创建并运行一个新的容器。对我们而言，这个命令可能是 Docker CLI 中最重要而且使用率最高的命令。和 Docker CLI 中的其他命令不同，<strong>docker run</strong> 命令支持非常多的选项，它的用法也较为复杂。</p><p><strong>docker run</strong> 命令的用法是：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">docker run [options] image [command] [arg...]</span><br></pre></td></tr></table></figure><h3 id="例-8-从-ubuntu-镜像运行容器"><a href="#例-8-从-ubuntu-镜像运行容器" class="headerlink" title="例 8: 从 ubuntu 镜像运行容器"></a>例 8: 从 ubuntu 镜像运行容器</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">docker run ubuntu</span><br></pre></td></tr></table></figure><p>运行这个命令的输出如下：<br><img src="https://gh.778080.xyz/https://raw.githubusercontent.com/EmmaHermione/emma/master/images/docker/jzftQoe.png" alt="jzftQoe"></p><p>可以看到，由于本地没有 ubuntu 镜像，所以 <strong>docker run</strong> 命令会自动下载这个镜像，然后从 ubuntu 镜像运行一个容器。但是，除此以外，就没有别的输出了。事实上，如果本地已有 ubuntu 镜像，那么以上命令不会有任何输出。我们再次运行以上命令：<br><img src="https://gh.778080.xyz/https://raw.githubusercontent.com/EmmaHermione/emma/master/images/docker/pyvEEiu.png" alt="pyvEEiu"></p><p>这是因为容器没有运行在交互模式，其中的默认命令 <strong>&#x2F;bin&#x2F;bash</strong> 运行结束后容器就停止了。</p><p>如果想和容器交互，那么可以让容器运行在交互模式 (-i) 并分配伪终端 (-t)。 另外，为了方便以后识别容器，可以指定容器名称 (–name container_name)。</p><h3 id="例-9-从-ubuntu-镜像运行容器，指定容器名称并分配伪终端"><a href="#例-9-从-ubuntu-镜像运行容器，指定容器名称并分配伪终端" class="headerlink" title="例 9: 从 ubuntu 镜像运行容器，指定容器名称并分配伪终端"></a>例 9: 从 ubuntu 镜像运行容器，指定容器名称并分配伪终端</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">docker run --name test -it ubuntu</span><br></pre></td></tr></table></figure><p>运行以上命令后，终端将进入 test 容器内部 (bash), 我们可以在其中运行容器内部支持的命令，最后，运行 <strong>exit</strong> 命令返回宿主机的终端。就像下面的图片中演示的这样：<br><img src="https://gh.778080.xyz/https://raw.githubusercontent.com/EmmaHermione/emma/master/images/docker/PdTfmKg.png" alt="PdTfmKg"></p><p>运行容器时，使用 -v &#x2F;host&#x2F;path:&#x2F;container&#x2F;path 选项可以将某个宿主机的路径挂载到容器的指定路径，并且对于容器中不存在的目录，它会自动创建。</p><h3 id="例-10-从-ubuntu-镜像运行容器，并挂载目录"><a href="#例-10-从-ubuntu-镜像运行容器，并挂载目录" class="headerlink" title="例 10: 从 ubuntu 镜像运行容器，并挂载目录"></a>例 10: 从 ubuntu 镜像运行容器，并挂载目录</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">docker run -v /etc:/from/host/etc -it ubuntu</span><br></pre></td></tr></table></figure><p>然后可以在容器其中运行 <strong>ls -al &#x2F;from&#x2F;host&#x2F;etc</strong> 命令来确认操作已经生效。</p><p>运行容器时，使用 <strong>-v host_port:container_port</strong> 选项可以将容器的某个端口暴露到宿主的指定端口，这样就可以在宿主中访问容器中的服务。<br>上面的操作如下图所示：<br><img src="https://gh.778080.xyz/https://raw.githubusercontent.com/EmmaHermione/emma/master/images/docker/GbMPWNL.png" alt="GbMPWNL"></p><h3 id="例-11-从-redis-镜像运行容器，暴露端口"><a href="#例-11-从-redis-镜像运行容器，暴露端口" class="headerlink" title="例 11: 从 redis 镜像运行容器，暴露端口"></a>例 11: 从 redis 镜像运行容器，暴露端口</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">docker run -p 9736:6379 -d redis</span><br></pre></td></tr></table></figure><p>以上命令将容器中的 redis 服务暴露到宿主的 9736 端口，这样，在宿主中通过 <strong>redis-cli -p 9736</strong> 命令就可以连接到容器中的 redis 服务。</p><p>运行容器时，使用 <strong>–cpus n</strong> 选项可以限制容器使用的 cpu 数量，使用 <strong>-m ram</strong> 选项可以限制容器使用的内存大小。</p><h3 id="例-12-运行容器，限制-cpu-和-内存"><a href="#例-12-运行容器，限制-cpu-和-内存" class="headerlink" title="例 12: 运行容器，限制 cpu 和 内存"></a>例 12: 运行容器，限制 cpu 和 内存</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">docker run --cpus 0.5 -m 128M -p 8888:6379 -d redis</span><br></pre></td></tr></table></figure><p><strong>docker run</strong> 还支持许多其它的选项，在这片文章的后面可以看到。</p><h2 id="命令-7-docker-ps"><a href="#命令-7-docker-ps" class="headerlink" title="命令 7: docker ps"></a>命令 7: docker ps</h2><p>这个命令用于列出容器。它的用法非常简单，不需要任何参数。</p><p><strong>docker ps</strong> 命令默认只会列出运行中容器，使用 <strong>-a</strong> 选项就可以让它列出所有容器。</p><h3 id="例-13-列出所有容器"><a href="#例-13-列出所有容器" class="headerlink" title="例 13: 列出所有容器"></a>例 13: 列出所有容器</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">docker ps -a</span><br></pre></td></tr></table></figure><p>这个命令的输出可能是下面这样的：<br><img src="https://gh.778080.xyz/https://raw.githubusercontent.com/EmmaHermione/emma/master/images/docker/CjEJaGK.png" alt="CjEJaGK"></p><h2 id="命令-8-docker-rm"><a href="#命令-8-docker-rm" class="headerlink" title="命令 8: docker rm"></a>命令 8: docker rm</h2><p>这个命令用于删除容器。它的用法非常简单，在命令之后加上要删除的容器名称或者 ID 就行。</p><h3 id="例-14-删除-test-容器"><a href="#例-14-删除-test-容器" class="headerlink" title="例 14: 删除 test 容器"></a>例 14: 删除 test 容器</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">docker rm test</span><br></pre></td></tr></table></figure><p>如果要删除的容器正在运行，那么使用 <strong>-a</strong> 选项可以强制删除它。</p><h3 id="例-15-强制删除-test-容器"><a href="#例-15-强制删除-test-容器" class="headerlink" title="例 15: 强制删除 test 容器"></a>例 15: 强制删除 test 容器</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">docker rm -f test</span><br></pre></td></tr></table></figure><h2 id="命令-9-docker-stop"><a href="#命令-9-docker-stop" class="headerlink" title="命令 9: docker stop"></a>命令 9: docker stop</h2><p>这个命令用于停止容器。它的用法非常简单，在命令之后加上要停止的容器名称或者 ID 就行。</p><h3 id="例-16-停止-test-容器"><a href="#例-16-停止-test-容器" class="headerlink" title="例 16: 停止 test 容器"></a>例 16: 停止 test 容器</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">docker stop test</span><br></pre></td></tr></table></figure><h2 id="命令-10-docker-start"><a href="#命令-10-docker-start" class="headerlink" title="命令 10: docker start"></a>命令 10: docker start</h2><p>这个命令用于运行已经停止容器。它的用法非常简单，在命令之后加上要运行的容器名称或者 ID 就行。</p><p>这个命令经常和 <strong>docker stop</strong> 命令一起使用，先用 <strong>docker stop</strong> 停止容器，进行一些操作，然后用 <strong>docker start</strong> 运行容器。</p><h3 id="例-17-运行-test-容器"><a href="#例-17-运行-test-容器" class="headerlink" title="例 17: 运行 test 容器"></a>例 17: 运行 test 容器</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">docker start test</span><br></pre></td></tr></table></figure><h2 id="命令-11-docker-kill"><a href="#命令-11-docker-kill" class="headerlink" title="命令 11: docker kill"></a>命令 11: docker kill</h2><p>这个命令用于杀死容器 21. 它的用法非常简单，在命令之后加上要杀死的容器名称或者 ID 就行。</p><p><strong>docker kill</strong> 命令和 <strong>docker stop</strong> 命令的差别很小。可以认为 <strong>docker kill</strong> 命令是强制杀死容器，而 <strong>docker stop</strong> 命令是先尝试让容器自己停止。</p><h3 id="例-18-杀死-test-容器"><a href="#例-18-杀死-test-容器" class="headerlink" title="例 18: 杀死 test 容器"></a>例 18: 杀死 test 容器</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">docker kill test</span><br></pre></td></tr></table></figure><h2 id="命令-12-docker-exec"><a href="#命令-12-docker-exec" class="headerlink" title="命令 12: docker exec"></a>命令 12: docker exec</h2><p>这个命令用于在容器内运行命令。使用这个命令时，需要先指定容器名称或者 ID, 然后再指定要运行的命令。</p><p>为了说明这个命令的用法，先使用以下命令运行一个名为 some-test 的 redis 容器，它将在后台运行。</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">docker run --name some-redis -d redis</span><br></pre></td></tr></table></figure><p>然后，使用这个容器中的 <strong>redis-cli</strong> 命令连接这个容器中的 redis server, 并通过它在 redis 中设置一些数据，最后退出容器。</p><h3 id="例-19-在容器内运行命令"><a href="#例-19-在容器内运行命令" class="headerlink" title="例 19: 在容器内运行命令"></a>例 19: 在容器内运行命令</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">docker exec -it some-redis redis-cli</span><br></pre></td></tr></table></figure><p>运行以上命令之后，将进入容器中的 <strong>redis-cli</strong>, 可以通过它在 redis 中设置一些数据。如下图所示：<br><img src="https://gh.778080.xyz/https://raw.githubusercontent.com/EmmaHermione/emma/master/images/docker/RomBkLi.png" alt="RomBkLi"></p><p>可以看到，这个命令也支持 -i 和 -t 选项，就像 docker run 命令一样。</p><h2 id="命令-13-docker-cp"><a href="#命令-13-docker-cp" class="headerlink" title="命令 13: docker cp"></a>命令 13: docker cp</h2><p>这个命令用于在容器和本地文件系统之间复制文件或者目录。</p><p>还是以上面的 some-test 容器为例。</p><h3 id="例-20-从本地文件系统复制文件到容器"><a href="#例-20-从本地文件系统复制文件到容器" class="headerlink" title="例 20: 从本地文件系统复制文件到容器"></a>例 20: 从本地文件系统复制文件到容器</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">docker cp ./user.json some-redis:/root</span><br></pre></td></tr></table></figure><p>以上命令将本地文件系统的当前目录下的 <strong>user.json</strong> 文件复制到 some-redis 容器的 <strong>&#x2F;root</strong> 目录。</p><h3 id="例-21-从容器复制文件到本地文件系统"><a href="#例-21-从容器复制文件到本地文件系统" class="headerlink" title="例 21: 从容器复制文件到本地文件系统"></a>例 21: 从容器复制文件到本地文件系统</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">docker cp some-redis:/root/.bashrc ./.bashrc_</span><br></pre></td></tr></table></figure><p>以上命令将 some-redis 容器的 <strong>&#x2F;root&#x2F;.bashrc</strong> 文件复制到本地文件系统的当前目录，并重命名为 **.bashrc_**。</p><h2 id="命令-14-docker-logs"><a href="#命令-14-docker-logs" class="headerlink" title="命令 14: docker logs"></a>命令 14: docker logs</h2><p>这个命令用于从容器取回日志。它的用法非常简单，在命令之后加上容器名称或者 ID 就行。</p><h3 id="例-22-取回-some-redis-容器的日志"><a href="#例-22-取回-some-redis-容器的日志" class="headerlink" title="例 22: 取回 some-redis 容器的日志"></a>例 22: 取回 some-redis 容器的日志</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">docker logs some-redis</span><br></pre></td></tr></table></figure><p>当然，如果要跟随日志输出，可以加上 -f 选项，就像 tail 命令的 -f 选项那样。</p><h3 id="例-23-监控-some-redis-容器的日志"><a href="#例-23-监控-some-redis-容器的日志" class="headerlink" title="例 23: 监控 some-redis 容器的日志"></a>例 23: 监控 some-redis 容器的日志</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">docker logs -f some-redis</span><br></pre></td></tr></table></figure><h2 id="命令-15-docker-stats"><a href="#命令-15-docker-stats" class="headerlink" title="命令 15: docker stats"></a>命令 15: docker stats</h2><p>这个命令用于显示容器的实时资源占用。它的用法非常简单，不需要任何参数。</p><p>默认只会显示运行中的容器的资源占用，使用 -a 选项就可以让它显示所有容器的资源占用。</p><h3 id="例-24-显示所有容器的资源占用"><a href="#例-24-显示所有容器的资源占用" class="headerlink" title="例 24: 显示所有容器的资源占用"></a>例 24: 显示所有容器的资源占用</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">docker stats -a</span><br></pre></td></tr></table></figure><p>这个命令的输出可能是下面这样的：<br><img src="https://gh.778080.xyz/https://raw.githubusercontent.com/EmmaHermione/emma/master/images/docker/WfBtezr.png" alt="WfBtezr"></p><h2 id="命令-16-docker-top"><a href="#命令-16-docker-top" class="headerlink" title="命令 16: docker top"></a>命令 16: docker top</h2><p>这个命令用于显示在容器中运行的进程 (process)。它的用法非常简单，在命令之后加上容器的名称或者 ID 就行。</p><h3 id="例-25-显示在容器中运行的进程"><a href="#例-25-显示在容器中运行的进程" class="headerlink" title="例 25: 显示在容器中运行的进程"></a>例 25: 显示在容器中运行的进程</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">docker run --name a-redis -d redis</span><br><span class="line">docker top a-redis</span><br></pre></td></tr></table></figure><p>这个命令的输出可能是下面这样的：<br><img src="https://gh.778080.xyz/https://raw.githubusercontent.com/EmmaHermione/emma/master/images/docker/PVWWXkQ.png" alt="PVWWXkQ"></p><h2 id="命令-17-docker-volume-create"><a href="#命令-17-docker-volume-create" class="headerlink" title="命令 17: docker volume create"></a>命令 17: docker volume create</h2><p>这个命令用于创建一个存储卷 (volume)。它的用法非常简单，在命令之后加上存储卷的名称就行。如果不指定存储卷的名称，Docker 将生成一个随机名称。</p><p>多个容器可以在同一时间段内使用同一个容器。如果两个容器需要访问共享的数据，那么存储卷非常有用。</p><p>下面通过一个稍微复杂一些的例子来说存储卷的用法。</p><h3 id="例-26-创建并使用存储卷"><a href="#例-26-创建并使用存储卷" class="headerlink" title="例 26: 创建并使用存储卷"></a>例 26: 创建并使用存储卷</h3><p>首先，创建一个存储卷：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">docker volume create shared</span><br></pre></td></tr></table></figure><p>然后，运行一个容器，挂载上面存储卷，并向其中写入数据：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">docker run -d -t -v shared:/writable ubuntu bash -c &quot;watch -n 2 &#x27;date +%s &gt;&gt; /writable/time.txt&#x27; &gt; /dev/null&quot;</span><br></pre></td></tr></table></figure><p>在上面的命令中，选项 <strong>-v shared:&#x2F;writable</strong> 用于在容器中挂载存储卷。<strong>bash -c “watch -n 2 ‘date +%s &gt;&gt; &#x2F;writable&#x2F;time.txt’ &gt; &#x2F;dev&#x2F;null”</strong> 这个命令用于每隔 2 秒就向 <strong>&#x2F;writable&#x2F;time.ext</strong> 文件写入当前时间戳。由于我们使用这样的一个命令可以更好地探索存储卷的读写操作。</p><p>然后，运行另外一个容器，也挂载上面存储卷，读取其中的数据：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">docker run -v shared:/readable:ro ubuntu tail -5 /readable/time.txt</span><br></pre></td></tr></table></figure><p>在上面的命令中，选项 <strong>-v shared:&#x2F;readable:ro</strong> 用于在容器中挂载存储卷。我们可以多次运行上面的命令来确认结果。</p><p>需要注意的是，选项 <strong>-v shared:&#x2F;readable:ro</strong> 末尾的 <strong>:ro</strong> 表示挂载的这个存储卷是只读 (read only) 的，如果向其中写入数据将会出错。</p><p>上面的操作如下图所示：<br><img src="https://gh.778080.xyz/https://raw.githubusercontent.com/EmmaHermione/emma/master/images/docker/QMzsKch.png" alt="QMzsKch"></p><h2 id="命令-18-docker-volume-ls"><a href="#命令-18-docker-volume-ls" class="headerlink" title="命令 18: docker volume ls"></a>命令 18: docker volume ls</h2><p>这个命令用于列出存储卷 (volume)。它的用法非常简单，不需要任何参数。</p><h3 id="例-27-列出存储卷"><a href="#例-27-列出存储卷" class="headerlink" title="例 27: 列出存储卷"></a>例 27: 列出存储卷</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">docker volume ls</span><br></pre></td></tr></table></figure><p>这个命令的输出可能是下面这样的：<br><img src="https://gh.778080.xyz/https://raw.githubusercontent.com/EmmaHermione/emma/master/images/docker/fikxkGw.png" alt="fikxkGw"></p><h2 id="命令-19-docker-volume-rm"><a href="#命令-19-docker-volume-rm" class="headerlink" title="命令 19: docker volume rm"></a>命令 19: docker volume rm</h2><p>这个命令用于删除存储卷 (volume)。它的用法非常简单，在命令之后加上要删除的存储卷名称就行。</p><h3 id="例-28-删除存储卷-shared"><a href="#例-28-删除存储卷-shared" class="headerlink" title="例 28: 删除存储卷 shared"></a>例 28: 删除存储卷 shared</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">docker volume rm shared</span><br></pre></td></tr></table></figure><p>需要注意的是，使用中的存储卷不能被删除。可以先删除那个容器，然后删除存储卷。</p><h2 id="命令-20-docker-network-create"><a href="#命令-20-docker-network-create" class="headerlink" title="命令 20: docker network create"></a>命令 20: docker network create</h2><p>这个命令用于创建容器网络。</p><p>容器默认隔离运行，它们之间可以通过容器网络通信。</p><p>下面通过一个稍微复杂一些的例子来说容器网络的用法。</p><h3 id="例-29-创建并使用存储卷"><a href="#例-29-创建并使用存储卷" class="headerlink" title="例 29: 创建并使用存储卷"></a>例 29: 创建并使用存储卷</h3><p>首先，创建一个容器网络 www:</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">docker network create www</span><br></pre></td></tr></table></figure><p>然后，从 redis 镜像运行一个容器，并将它连接到这个网络：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">docker run --network www --network-alias redis-server --name my-redis -d redis</span><br></pre></td></tr></table></figure><p>在上面的命令中，选项 <strong>–network www</strong> 用于将容器连接到网络 www. 选项 <strong>–network-alias redis-server</strong> 用于为这个容器在网络中设置一个别名，这样网络中的其它容器可以更方便地连接到它。</p><p>然后，从 redis 镜像运行另外一个容器，在这个容器中运行 <strong>redis-cli</strong> 连接上面的容器中的 redis server, 并修改其中的数据：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">docker run --network www redis redis-cli -h redis-server -r 5 incr count</span><br></pre></td></tr></table></figure><p>在上面的命令中，在 <strong>redis-cli -h redis-server</strong> 中，我们直接通过网络别名指定了 redis server 的网络地址。</p><p>最后，可以运行下面的命令确认结果：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">docker exec my-redis redis-cli -r 1 get count</span><br></pre></td></tr></table></figure><p>上面的操作如下图所示：<br><img src="https://gh.778080.xyz/https://raw.githubusercontent.com/EmmaHermione/emma/master/images/docker/BTujBFn.png" alt="BTujBFn"></p><h2 id="命令-21-docker-network-ls"><a href="#命令-21-docker-network-ls" class="headerlink" title="命令 21: docker network ls"></a>命令 21: docker network ls</h2><p>这个命令用于列出容器网络。它的用法非常简单，不需要任何参数。</p><h3 id="例-30-列出容器网络"><a href="#例-30-列出容器网络" class="headerlink" title="例 30: 列出容器网络"></a>例 30: 列出容器网络</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">docker network ls</span><br></pre></td></tr></table></figure><p>这个命令的输出可能是下面这样的：<br><img src="https://gh.778080.xyz/https://raw.githubusercontent.com/EmmaHermione/emma/master/images/docker/jonTXtB.png" alt="jonTXtB"></p><h2 id="命令-22-docker-network-rm"><a href="#命令-22-docker-network-rm" class="headerlink" title="命令 22: docker network rm"></a>命令 22: docker network rm</h2><p>这个命令用于删除容器网络。它的用法非常简单，在命令之后加上要删除的网络名称就行。</p><h3 id="例-31-删除容器网络-www"><a href="#例-31-删除容器网络-www" class="headerlink" title="例 31: 删除容器网络 www"></a>例 31: 删除容器网络 www</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">docker network rm www</span><br></pre></td></tr></table></figure><h2 id="命令-23-docker-compose-up"><a href="#命令-23-docker-compose-up" class="headerlink" title="命令 23: docker compose up"></a>命令 23: docker compose up</h2><p>这个命令用于创建并启动多个容器。</p><p>下面以 [linuxserver&#x2F;qbittorrent] 这个镜像为例，说明 <strong>docker compose up</strong> 命令的用法。</p><h3 id="例-32-通过-docker-compose-启动-linuxserver-qbittorrent"><a href="#例-32-通过-docker-compose-启动-linuxserver-qbittorrent" class="headerlink" title="例 32: 通过 docker compose 启动 linuxserver&#x2F;qbittorrent"></a>例 32: 通过 docker compose 启动 linuxserver&#x2F;qbittorrent</h3><p>首先，在当前目录创建文件 <strong>docker-compose.yml</strong>, 写入以下内容：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br></pre></td><td class="code"><pre><span class="line">---</span><br><span class="line">version: &quot;2.1&quot;</span><br><span class="line">services:</span><br><span class="line">  qbittorrent:</span><br><span class="line">    image: lscr.io/linuxserver/qbittorrent:latest</span><br><span class="line">    container_name: qbittorrent</span><br><span class="line">    environment:</span><br><span class="line">      - PUID=1000</span><br><span class="line">      - PGID=1000</span><br><span class="line">      - TZ=Etc/UTC</span><br><span class="line">      - WEBUI_PORT=8080</span><br><span class="line">    volumes:</span><br><span class="line">      - /path/to/appdata/config:/config</span><br><span class="line">      - /path/to/downloads:/downloads</span><br><span class="line">    ports:</span><br><span class="line">      - 8080:8080</span><br><span class="line">      - 6881:6881</span><br><span class="line">      - 6881:6881/udp</span><br><span class="line">    restart: unless-stopped</span><br></pre></td></tr></table></figure><p>然后运行以下命令，-d 选项表示在后台运行所有容器：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">docker compose up -d</span><br></pre></td></tr></table></figure><p>上面的操作如下图所示：<br><img src="https://gh.778080.xyz/https://raw.githubusercontent.com/EmmaHermione/emma/master/images/docker/CZjHvTV.png" alt="CZjHvTV"></p><p>然后在浏览器中打开 <strong>ip:8080</strong> 可以看到 qBittorrent Web UI, 说明上面个的容器正在运行。<br><img src="https://gh.778080.xyz/https://raw.githubusercontent.com/EmmaHermione/emma/master/images/docker/mWQJPBf.png" alt="mWQJPBf"></p><h3 id="例-33-docker-compose-yml-和-docker-container-run-选项的对应"><a href="#例-33-docker-compose-yml-和-docker-container-run-选项的对应" class="headerlink" title="例 33: docker-compose.yml 和 docker container run 选项的对应"></a>例 33: docker-compose.yml 和 docker container run 选项的对应</h3><p><strong>docker-compose.yml</strong> 文件中的一个 services 对应 Docker 中的 一个容器。</p><p>上面的 <strong>docker-compose.yml</strong> 文件对应的 <strong>docker container run</strong> 命令如下 (\ 用于在 Linux 命令行中换行):</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><span class="line">docker container run \</span><br><span class="line">  --name qbittorrent \</span><br><span class="line">  -e PUID=1000 \</span><br><span class="line">  -e PGID=1000 \</span><br><span class="line">  -e TZ=Etc/UTC \</span><br><span class="line">  -e WEBUI_PORT=8080 \</span><br><span class="line">  -v /path/to/appdata/config:/config \</span><br><span class="line">  -v /path/to/downloads:/downloads \</span><br><span class="line">  -p 8080:8080 \</span><br><span class="line">  -p 6881:6881 \</span><br><span class="line">  -p 6881:6881/udp \</span><br><span class="line">  --restart unless-stopped \</span><br><span class="line">   lscr.io/linuxserver/qbittorrent:latest</span><br></pre></td></tr></table></figure><h2 id="命令-24-docker-compose-down"><a href="#命令-24-docker-compose-down" class="headerlink" title="命令 24: docker compose down"></a>命令 24: docker compose down</h2><p>这个命令用于停止由 <strong>docker compose up</strong> 创建的容器，并删除这些容器和网络。</p><p>注意，默认情况下，只有这些东西会被删除</p><p>定义在 <strong>docker-compose.yml</strong> 中的容器<br>定义在 <strong>docker-compose.yml</strong> 中的网络<br>默认的网络，如果使用了的话<br>外部 (external) 的网络的存储卷永远不会被删除。</p><h3 id="例-34-停止并删除由-docker-compose-up-创建的容器"><a href="#例-34-停止并删除由-docker-compose-up-创建的容器" class="headerlink" title="例 34, 停止并删除由 docker compose up 创建的容器"></a>例 34, 停止并删除由 docker compose up 创建的容器</h3><p><strong>docker-compose.yml</strong> 文件的内容和上一节相同。</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">docker compose up -d</span><br><span class="line">docker compose down</span><br></pre></td></tr></table></figure><h2 id="命令-25-docker-compose-logs"><a href="#命令-25-docker-compose-logs" class="headerlink" title="命令 25: docker compose logs"></a>命令 25: docker compose logs</h2><p>这个命令用于查看来自多个容器的输出, 这些容器是通过 <strong>docker compose up</strong> 创建的。</p><p>如果要跟随日志输出，可以加上 <strong>-f</strong> 选项，就行 <strong>docker container logs -f</strong> 命令那样。</p><h3 id="例-35-监控-docker-compose-up-创建的容器的输出"><a href="#例-35-监控-docker-compose-up-创建的容器的输出" class="headerlink" title="例 35, 监控 docker compose up 创建的容器的输出"></a>例 35, 监控 docker compose up 创建的容器的输出</h3><p><strong>docker-compose.yml</strong> 文件的内容和上一节相同。</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">docker compose up -d</span><br><span class="line">docker compose logs -f</span><br></pre></td></tr></table></figure><p>这个命令的输出可能是下面这样的：<br><img src="https://gh.778080.xyz/https://raw.githubusercontent.com/EmmaHermione/emma/master/images/docker/UAiFBFM.png" alt="UAiFBFM"></p><h2 id="命令-26-docker-image-build"><a href="#命令-26-docker-image-build" class="headerlink" title="命令 26: docker image build"></a>命令 26: docker image build</h2><p>这个命令用于从一个 Dockerfile 构建镜像。前面用到的所有镜像都是别人构建好的，现在我们终于可以构建自己的镜像了。</p><p>docker image build 命令支持许多选项，同时 Dockerfile 文件 也支持大量指令，这里只会对这些内容做简单介绍。下面将通过一个实例说明 <strong>docker image build</strong> 命令的用法。</p><h3 id="例-36-建构一个简单镜像"><a href="#例-36-建构一个简单镜像" class="headerlink" title="例 36: 建构一个简单镜像"></a>例 36: 建构一个简单镜像</h3><p>首先，在当前目录创建文件 <strong>Dockerfile</strong>, 写入以下内容：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">FROM php:8.1-alpine3.16</span><br><span class="line">RUN echo &#x27;&lt;?php list($r,$g,$b)=explode(&quot;,&quot;,$_GET[&quot;rgb&quot;]);echo$b?sprintf(&quot;#%02x%02x%02x&quot;,$r,$g,$b):&quot;&quot;;&#x27; &gt; index.php</span><br><span class="line">ENTRYPOINT [&quot;/usr/local/bin/php&quot;, &quot;-S&quot;, &quot;0.0.0.0:80&quot;, &quot;index.php&quot;]</span><br><span class="line">EXPOSE 80</span><br></pre></td></tr></table></figure><p>这个文件只有 4 行，其中包含 4 个指令：</p><ul><li><strong>FROM</strong> 指令初始化一个新的构建阶段，并为后续指令设置一个 基础镜像 (Base Image). 一个 <strong>Dockerfile</strong> 必须以一个 <strong>FROM</strong> 指令作为开始。</li><li><strong>RUN</strong> 指令将在当前镜像顶部的新 layer 中执行命令并提交结果。</li><li><strong>ENTRYPOINT</strong> 指令指定容器的入口，也就是运行 <strong>docker container run image-name</strong> 命令时，容器将会启动的进程。</li><li><strong>EXPOSE</strong> 指令通知 Docker 这个容器在运行时将监听指定的端口。、</li></ul><p>我们要构建的这个镜像非常简单，它基于 php:8.1-alpine3.16. 然后在其中创建了一个 <strong>index.php</strong>, 它获取 GET 请求中的 rgb 参数，然后打印对应的 hex 值，也就是说，它将 <strong>rgb</strong> 颜色转换成 hex 颜色。</p><p>然后使用以下命令构建镜像：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">docker build -t php-rgb .</span><br></pre></td></tr></table></figure><p>上面的命令构建了一个名为 php-rgb (通过选项 <strong>-t php-rgb</strong>) 的镜像。构建完成之后，可以使用 <strong>docker images</strong> 命令来查看刚才构建的镜像</p><p>最后，可以使用以下命令从这个镜像运行一个容器：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">docker run -p 1234:80 php-rgb</span><br></pre></td></tr></table></figure><p>容器运行之后，可以在浏览器中打开 <a href="http://ip:1234/?rgb=12,12,12">http://ip:1234/?rgb=12,12,12</a> 查看效果。</p><p>上面的操作如下图所示：<br><img src="https://gh.778080.xyz/https://raw.githubusercontent.com/EmmaHermione/emma/master/images/docker/dsgfhNH.png" alt="dsgfhNH"></p><h2 id="命令-27-docker-commit"><a href="#命令-27-docker-commit" class="headerlink" title="命令 27: docker commit"></a>命令 27: docker commit</h2><p>这个命令用于从容器创建一个镜像。它的用法非常简单，在命令之后加上容器名称或者 ID 已经镜像名称就行。</p><p>这个命令的效果和 <strong>docker run</strong> 命令相反, <strong>docker run</strong> 命令从镜像创建并运行容器。由于容器运行在一个隔离的文件系统，如果想要将容器中的变化保存下来，除了使用存储卷和绑定挂载，或者 <strong>docker cp</strong> 命令之外，也可以使用 <strong>docker commit</strong> 命令将整个容器打包成镜像。</p><h3 id="例-37-提交一个容器"><a href="#例-37-提交一个容器" class="headerlink" title="例 37: 提交一个容器"></a>例 37: 提交一个容器</h3><p>首先，运行一个容器</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">docker run --name my-debian -it debian</span><br></pre></td></tr></table></figure><p>然后，在上面那个容器内部，运行以下命令：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">apt update</span><br><span class="line">apt install -y nginx</span><br><span class="line">apt install -y vim</span><br><span class="line">exit</span><br></pre></td></tr></table></figure><p>以上命令在这个容器中安装了 nginx 和 vim.</p><p>最后，使用以下命令提交这个容器：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">docker commit my-debian debian-with-nginx-vim</span><br></pre></td></tr></table></figure><p>这样我们就创建了一个名为 debian-with-nginx-vim 的镜像。</p><p>我们可以使用 docker images 命令查看刚刚创建的镜像。或者使用 docker run debian-with-nginx-vim 从这个镜像运行容器，在这个容器中，可以看到其中已经安装好了 vim 和 nginx. 上面的操作如下图所示：<br><img src="https://gh.778080.xyz/https://raw.githubusercontent.com/EmmaHermione/emma/master/images/docker/fWxKwru.png" alt="fWxKwru"></p><h2 id="命令-28-docker-save"><a href="#命令-28-docker-save" class="headerlink" title="命令 28: docker save"></a>命令 28: docker save</h2><p>这个命令用于将镜像保存到一个 tar 中。它的用法非常简单，在命令之后加上镜像名称就行。</p><p>学会这个命令，就可以更方便地和别人分享镜像，只要将 tar 文件发给他就行。</p><p>这个命令默认会将输出写入 STDOUT, 我们可以指定 <strong>-O filename.tar</strong> 选项将输出写入一个文件。</p><h3 id="例-38-打包一个镜像"><a href="#例-38-打包一个镜像" class="headerlink" title="例 38: 打包一个镜像"></a>例 38: 打包一个镜像</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">docker save -o image_test.tar debian-with-nginx-vim</span><br></pre></td></tr></table></figure><h2 id="命令-29-docker-load"><a href="#命令-29-docker-load" class="headerlink" title="命令 29: docker load"></a>命令 29: docker load</h2><p>这个命令用于从 tar 文件或者 STDIN 中加载镜像。</p><p>这个命令默认会从 STDIN 加载镜像，我们可以指定 <strong>-i filename.tar</strong> 让它从文件加载镜像。</p><h3 id="例-39-从文件加载镜像"><a href="#例-39-从文件加载镜像" class="headerlink" title="例 39: 从文件加载镜像"></a>例 39: 从文件加载镜像</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">docker load -i image_test.tar</span><br></pre></td></tr></table></figure><h2 id="命令-30-docker-system-df"><a href="#命令-30-docker-system-df" class="headerlink" title="命令 30: docker system df"></a>命令 30: docker system df</h2><p>这个命令用于显示 docker 使用的磁盘空间。它的用法非常简单，不需要任何参数。</p><h3 id="例-40-显示-docker-使用的磁盘空间"><a href="#例-40-显示-docker-使用的磁盘空间" class="headerlink" title="例 40: 显示 docker 使用的磁盘空间"></a>例 40: 显示 docker 使用的磁盘空间</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">docker system df</span><br></pre></td></tr></table></figure><p>这个命令的输出可能是下面这样的：<br><img src="https://gh.778080.xyz/https://raw.githubusercontent.com/EmmaHermione/emma/master/images/docker/cuWFAcj.png" alt="cuWFAcj"></p><h1 id="参考-推荐"><a href="#参考-推荐" class="headerlink" title="参考&#x2F;推荐"></a>参考&#x2F;推荐</h1><p><a href="https://yeasy.gitbook.io/docker_practice/">Docker - 从入门到实践</a></p>]]></content:encoded>
      
      
      <category domain="http://blog.778080.xyz/categories/%E6%9C%8D%E5%8A%A1%E5%99%A8/">服务器</category>
      
      
      <category domain="http://blog.778080.xyz/tags/Linux/">Linux</category>
      
      <category domain="http://blog.778080.xyz/tags/Docker/">Docker</category>
      
      
      <comments>http://blog.778080.xyz/archives/docker-base/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>VPS基础环境配置</title>
      <link>http://blog.778080.xyz/archives/vps-basic-configuration/</link>
      <guid>http://blog.778080.xyz/archives/vps-basic-configuration/</guid>
      <pubDate>Sat, 01 Jul 2023 12:00:00 GMT</pubDate>
      
      <description>小白向，新买的VPS如何配置？</description>
      
      
      
      <content:encoded><![CDATA[<div class="note red icon-padding flat"><i class="note-icon fa-solid fa-bullhorn"></i><p>1.本文所包含的所有信息和建议仅供参考和介绍性目的。我不对这些信息的准确性、完整性或实用性作任何明示或暗示的保证。</p></div><div class="note red icon-padding flat"><i class="note-icon fa-solid fa-bullhorn"></i><p>2.您采取本文中提供的任何建议或指南的行动完全是基于您自己的决定和风险。我不对您因依赖本文中提供的信息而导致的任何直接或间接损失或损害承担责任。</p></div><div class="note red icon-padding flat"><i class="note-icon fa-solid fa-bullhorn"></i><p>3.本文可能提及或推荐使用第三方脚本、工具或服务。我不对这些第三方内容的功能性、安全性或合法性作任何声明或保证，并且不对您因使用这些内容而导致的任何问题承担责任。</p></div><div class="note red icon-padding flat"><i class="note-icon fa-solid fa-bullhorn"></i><p>4.您需对其系统安全负有责任，并且应该根据其需求、技能和环境来决定采取哪些安全措施。本文提供的建议仅供参考，不应视为最终的、全面的安全解决方案。</p></div><div class="note red icon-padding flat"><i class="note-icon fa-solid fa-bullhorn"></i><p>5.本文所介绍的操作基于 Debian 和 Ubuntu Linux 发行版。我无法保证这些操作适用于所有 Linux 发行版，因为不同的发行版可能具有不同的配置和软件包管理方式。在执行本文中提到的操作之前，请确保您理解并确认这些操作适用于您正在使用的 Linux 发行版。</p></div><h1 id="升级安装-Packages"><a href="#升级安装-Packages" class="headerlink" title="升级安装 Packages"></a>升级安装 Packages</h1><figure class="highlight sh"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 切换到 root 用户</span></span><br><span class="line"><span class="built_in">sudo</span> -i</span><br><span class="line"><span class="comment"># 更新软件包列表和软件及删除无用软件依赖</span></span><br><span class="line">apt update &amp;&amp; apt upgrade -y &amp;&amp; apt dist-upgrade -y &amp;&amp; apt full-upgrade -y &amp;&amp; apt autoremove -y</span><br><span class="line"><span class="comment"># Debian 系统比较干净，安装常用的软件</span></span><br><span class="line">apt install wget curl vim git lsof ufw unzip -y</span><br></pre></td></tr></table></figure><h1 id="DD系统（推荐）"><a href="#DD系统（推荐）" class="headerlink" title="DD系统（推荐）"></a>DD系统（推荐）</h1><p>DD系统，就是通过网络重装系统，而不是传统的通过u盘或者是控制面板重装系统。而DD脚本就是一键网络重装系统，通过自动化脚本执行所有的DD步骤，你只需要执行一行命令即可DD完成，方便快捷。</p><h2 id="为什么要DD系统？"><a href="#为什么要DD系统？" class="headerlink" title="为什么要DD系统？"></a>为什么要DD系统？</h2><p>基本所有的 VPS 服务器商家，都会提供免费的 Linux 系统供安装，比如 CentOS、Debian、Ubuntu  等。那为什么还要使用一键DD脚本重装&#x2F;更换系统呢？</p><p>服务商提供的系统版本有限，可能没有自己需要的版本。<br>服务商的系统安装有自己不想要的服务，比如国内的<a href="https://gist.github.com/zhouyanyu/3ec73fe8f0b77ffd6d56a4cc2aa18c32">阿里云盾（安骑士）</a>。<br>服务商的系统无法安装特定软件，比如很挑内核的锐速。<br>服务商限制重装系统的次数，DD系统可以绕过。</p><p>以上的情况，一键DD脚本就可以为服务器更换一个纯净的系统，帮你解决问题。</p><p>DD系统一般时长在半小时内，超过时间大概率寄了</p><h2 id="DD脚本"><a href="#DD脚本" class="headerlink" title="DD脚本"></a>DD脚本</h2><h3 id="bin456789脚本"><a href="#bin456789脚本" class="headerlink" title="bin456789脚本"></a><strong>bin456789脚本</strong></h3><p>项目地址及详细用法：<a href="https://github.com/bin456789/reinstall">https://github.com/bin456789/reinstall</a></p><figure class="highlight sh"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">bash &lt;(wget -qO- <span class="string">&#x27;https://raw.githubusercontent.com/bin456789/reinstall/main/reinstall.sh&#x27;</span>) debian 12 --password 自定义root密码</span><br></pre></td></tr></table></figure><h3 id="leitbogioro脚本"><a href="#leitbogioro脚本" class="headerlink" title="leitbogioro脚本"></a>leitbogioro脚本</h3><p>项目地址及详细用法：<a href="https://github.com/leitbogioro/Tools">https://github.com/leitbogioro/Tools</a></p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">wget --no-check-certificate -qO InstallNET.sh &#x27;https://raw.githubusercontent.com/leitbogioro/Tools/master/Linux_reinstall/InstallNET.sh&#x27; &amp;&amp; chmod a+x InstallNET.sh &amp;&amp; bash InstallNET.sh -debian 12 -pwd &#x27;自定义root密码&#x27; -port &quot;自定义ssh端口&quot;</span><br></pre></td></tr></table></figure><h3 id="MoeClub脚本"><a href="#MoeClub脚本" class="headerlink" title="MoeClub脚本"></a>MoeClub脚本</h3><p>项目地址及详细用法：<a href="https://github.com/veip007/dd">https://github.com/veip007/dd</a></p><p>大多数DD脚本都是依照萌咖脚本（已删库，目前为网友备份的）二次开发的</p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">bash &lt;(wget --no-check-certificate -qO- &#x27;https://raw.githubusercontent.com/MoeClub/Note/master/InstallNET.sh&#x27;) -d 11 -v 64 -p 密码 -port 端口 -a -firmware</span><br></pre></td></tr></table></figure><h1 id="安装-XanMod（可选）"><a href="#安装-XanMod（可选）" class="headerlink" title="安装 XanMod（可选）"></a>安装 XanMod（可选）</h1><p><a href="https://xanmod.org/">XanMod</a>内核是基于Linux内核的优秀第三方定制魔改内核，通过改善网络连接，增强硬件兼容性等提高系统性能。</p><div class="note red icon-padding flat"><i class="note-icon fa-solid fa-bullhorn"></i><p>linux-xanmod-x64v3，v1&#x2F;v2&#x2F;v3&#x2F;v4版本的区别在于对各个时期 CPU 的 ISA（指令集架构）的优化不同，你可以使用<a href="https://dl.xanmod.org/check_x86-64_psabi.sh">check_x86-64_psabi.sh</a>脚本或通过查询CPU官网来选择版本</p></div><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta prompt_"># </span><span class="language-bash">安装 gpg 程序</span></span><br><span class="line">apt install gpg -y</span><br><span class="line"><span class="meta prompt_"># </span><span class="language-bash">下载、导入并将 gpg 密钥转换为二进制文件</span></span><br><span class="line">wget -qO - https://dl.xanmod.org/archive.key | sudo gpg --dearmor -o /usr/share/keyrings/xanmod-archive-keyring.gpg</span><br><span class="line"><span class="meta prompt_">#</span><span class="language-bash"><span class="comment"># 在下载gpg密钥时部分云服务提供商的服务器无法下载，报错为gpg: no valid OpenPGP data found.出现该情况请下载密钥到本地后上传到服务器/root路径并运行以下命令(没问题跳过该步)</span></span></span><br><span class="line">gpg --dearmor -o /usr/share/keyrings/xanmod-archive-keyring.gpg /root/archive.key</span><br><span class="line"><span class="meta prompt_"># </span><span class="language-bash">添加<span class="string">&quot;dl.xanmod.org&quot;</span>附加存储库</span></span><br><span class="line">echo &#x27;deb [signed-by=/usr/share/keyrings/xanmod-archive-keyring.gpg] http://deb.xanmod.org releases main&#x27; | sudo tee /etc/apt/sources.list.d/xanmod-release.list</span><br><span class="line"><span class="meta prompt_"># </span><span class="language-bash">刷新包依赖项并安装</span></span><br><span class="line">sudo apt update &amp;&amp; sudo apt install linux-xanmod-x64v3</span><br><span class="line"><span class="meta prompt_"># </span><span class="language-bash">重启</span></span><br><span class="line">reboot</span><br></pre></td></tr></table></figure><h1 id="开启-BBR-加速（推荐）"><a href="#开启-BBR-加速（推荐）" class="headerlink" title="开启 BBR 加速（推荐）"></a>开启 BBR 加速（推荐）</h1><p>一键安装XanMod内核和开启BBR加速</p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta prompt_"># </span><span class="language-bash">ylx的bbr脚本-不卸载内核版本</span></span><br><span class="line">wget -O tcpx.sh &quot;https://github.com/ylx2016/Linux-NetSpeed/raw/master/tcpx.sh&quot; &amp;&amp; chmod +x tcpx.sh &amp;&amp; ./tcpx.sh</span><br><span class="line"><span class="meta prompt_"># </span><span class="language-bash">ylx的bbr脚本-卸载内核版本</span></span><br><span class="line">wget -O tcp.sh &quot;https://github.com/ylx2016/Linux-NetSpeed/raw/master/tcp.sh&quot; &amp;&amp; chmod +x tcp.sh &amp;&amp; ./tcp.sh</span><br></pre></td></tr></table></figure><p><img src="https://gh.778080.xyz/https://raw.githubusercontent.com/EmmaHermione/emma/master/images/vps/fLLJujb.png" alt="fLLJujb"></p><p>如不想使用一键脚本，可使用以下命令（Linux Kernel 内核需要4.9及以上版本）</p><figure class="highlight sh"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">uname</span> -srm</span><br><span class="line"><span class="built_in">echo</span> <span class="string">&quot;net.core.default_qdisc=fq&quot;</span> &gt;&gt; /etc/sysctl.conf</span><br><span class="line"><span class="built_in">echo</span> <span class="string">&quot;net.ipv4.tcp_congestion_control=bbr&quot;</span> &gt;&gt; /etc/sysctl.conf</span><br><span class="line">sysctl -p</span><br><span class="line">sysctl net.ipv4.tcp_available_congestion_control</span><br><span class="line">lsmod | grep bbr</span><br></pre></td></tr></table></figure><h1 id="检测脚本"><a href="#检测脚本" class="headerlink" title="检测脚本"></a>检测脚本</h1><h3 id="酒神NodeQuality脚本"><a href="#酒神NodeQuality脚本" class="headerlink" title="酒神NodeQuality脚本"></a>酒神NodeQuality脚本</h3><p>项目地址及详细用法请参考：<a href="https://github.com/LloydAsp/NodeQuality">https://github.com/LloydAsp/NodeQuality</a> or <a href="https://www.nodeseek.com/post-297125-1">https://www.nodeseek.com/post-297125-1</a></p><p><u>也许是最简单好用的</u>VPS服务器测评脚本</p><figure class="highlight sh"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">bash &lt;(curl -sL https://run.NodeQuality.com)</span><br></pre></td></tr></table></figure><h3 id="融合怪测评脚本"><a href="#融合怪测评脚本" class="headerlink" title="融合怪测评脚本"></a>融合怪测评脚本</h3><p>项目地址及详细用法请参考：<a href="https://github.com/spiritLHLS/ecs">https://github.com/spiritLHLS/ecs</a></p><p><u>也许是最全能的</u>VPS服务器测评脚本</p><figure class="highlight sh"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">bash &lt;(wget -qO- bash.spiritlhl.net/ecs)</span><br></pre></td></tr></table></figure><h3 id="IP质量体检脚本"><a href="#IP质量体检脚本" class="headerlink" title="IP质量体检脚本"></a>IP质量体检脚本</h3><p>项目地址及详细用法请参考：<a href="https://github.com/xykt/IPQuality">https://github.com/xykt/IPQuality</a></p><figure class="highlight sh"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">bash &lt;(curl -Ls IP.Check.Place)</span><br></pre></td></tr></table></figure><h3 id="流媒体检测"><a href="#流媒体检测" class="headerlink" title="流媒体检测"></a>流媒体检测</h3><figure class="highlight sh"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">bash &lt;(curl -L -s media.ispvps.com)</span><br></pre></td></tr></table></figure><h1 id="修改主机名"><a href="#修改主机名" class="headerlink" title="修改主机名"></a>修改主机名</h1><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta prompt_"># </span><span class="language-bash">查看主机名</span></span><br><span class="line">hostname</span><br><span class="line"><span class="meta prompt_"># </span><span class="language-bash">修改主机名</span></span><br><span class="line">hostnamectl set-hostname 新主机名</span><br><span class="line"><span class="meta prompt_"># </span><span class="language-bash">更新 hosts 文件将旧主机名改为新主机名</span></span><br><span class="line">vim /etc/hosts</span><br><span class="line"><span class="meta prompt_"># </span><span class="language-bash">重启系统</span></span><br><span class="line">reboot</span><br></pre></td></tr></table></figure><h1 id="修改-DNS"><a href="#修改-DNS" class="headerlink" title="修改 DNS"></a>修改 DNS</h1><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta prompt_"># </span><span class="language-bash">修改配置文件</span></span><br><span class="line">vim /etc/resolv.conf</span><br><span class="line">---添加以下内容---</span><br><span class="line">nameserver 1.1.1.1</span><br><span class="line">nameserver 8.8.8.8</span><br><span class="line">nameserver 2606:4700:4700::1111</span><br><span class="line">nameserver 2001:4860:4860::8888</span><br><span class="line"><span class="meta prompt_"># </span><span class="language-bash">锁定文件防止覆盖</span></span><br><span class="line">chattr +i /etc/resolv.conf</span><br><span class="line"><span class="meta prompt_"># </span><span class="language-bash">如果要恢复取消锁定</span></span><br><span class="line">chattr -i /etc/resolv.conf</span><br></pre></td></tr></table></figure><h1 id="校准同步时间"><a href="#校准同步时间" class="headerlink" title="校准同步时间"></a>校准同步时间</h1><figure class="highlight sh"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 安装 NTP 服务</span></span><br><span class="line">apt install systemd-timesyncd -y</span><br><span class="line"><span class="comment"># 开机自启 NTP 服务</span></span><br><span class="line">systemctl <span class="built_in">enable</span> systemd-timesyncd</span><br><span class="line"><span class="comment"># 配置 NTP 同步，添加或修改 NTP 服务器</span></span><br><span class="line">vim /etc/systemd/timesyncd.conf</span><br><span class="line">---修改文件对应位置----</span><br><span class="line">[Time]</span><br><span class="line">NTP=time.cloudflare.com time1.google.com time1.apple.com time.windows.com</span><br><span class="line"><span class="comment"># 开启 NTP 服务</span></span><br><span class="line">systemctl start systemd-timesyncd</span><br><span class="line"><span class="comment"># 检查时间同步状态</span></span><br><span class="line">timedatectl</span><br><span class="line"><span class="comment"># 设置 RTC（实时时钟）使用 UTC</span></span><br><span class="line">timedatectl set-local-rtc 0</span><br><span class="line"><span class="comment"># 手动同步时间（可选）</span></span><br><span class="line">timedatectl set-ntp <span class="literal">true</span></span><br><span class="line"></span><br><span class="line">时区列表很大。您可以使用grep对其进行过滤，使其仅显示某个洲或某个国家/州的首都的时区</span><br><span class="line">timedatectl list-timezones | grep Shanghai</span><br><span class="line"></span><br><span class="line">现在，使用以下命令在Linux系统上设置时区</span><br><span class="line">timedatectl set-timezone Asia/Shanghai</span><br></pre></td></tr></table></figure><h1 id="UFW-防火墙"><a href="#UFW-防火墙" class="headerlink" title="UFW 防火墙"></a>UFW 防火墙</h1><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta prompt_"># </span><span class="language-bash">启用 ufw</span></span><br><span class="line">ufw enable</span><br><span class="line"><span class="meta prompt_"># </span><span class="language-bash">允许流量通过端口</span></span><br><span class="line">ufw allow 22</span><br><span class="line"><span class="meta prompt_"># </span><span class="language-bash">删除规则</span></span><br><span class="line">ufw delete allow 22</span><br><span class="line"><span class="meta prompt_"># </span><span class="language-bash">禁止流量通过端口</span></span><br><span class="line">ufw deny 22</span><br><span class="line"><span class="meta prompt_"># </span><span class="language-bash">检查防火墙状态</span></span><br><span class="line">ufw status</span><br><span class="line"><span class="meta prompt_"># </span><span class="language-bash">重启防火墙</span></span><br><span class="line">ufw reload</span><br><span class="line"><span class="meta prompt_"># </span><span class="language-bash">检查开机启动状态-返回 enabled</span></span><br><span class="line">systemctl is-enabled ufw</span><br></pre></td></tr></table></figure><h1 id="添加-SWAP-虚拟内存（可选）"><a href="#添加-SWAP-虚拟内存（可选）" class="headerlink" title="添加 SWAP 虚拟内存（可选）"></a>添加 SWAP 虚拟内存（可选）</h1><blockquote><p>注意：VPS 的内存如果过小，建议设置一下 SWAP，一般为内存的 1-1.5 倍即可，可以让系统运行更流畅！</p></blockquote><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta prompt_">#</span><span class="language-bash">moerats的swap脚本</span></span><br><span class="line">wget https://www.moerats.com/usr/shell/swap.sh &amp;&amp; bash swap.sh</span><br></pre></td></tr></table></figure><p><img src="https://gh.778080.xyz/https://raw.githubusercontent.com/EmmaHermione/emma/master/images/vps/nYhZAuFdwqu.png" alt="nYhZAuFdwqu"></p><h1 id="更改-SSH-端口及密码"><a href="#更改-SSH-端口及密码" class="headerlink" title="更改 SSH 端口及密码"></a>更改 SSH 端口及密码</h1><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta prompt_"># </span><span class="language-bash">打开 SSH 配置文件</span></span><br><span class="line">vim /etc/ssh/sshd_config</span><br><span class="line"><span class="meta prompt_"># </span><span class="language-bash">更改 SSH 端口为2222</span></span><br><span class="line">Port 2222</span><br><span class="line"><span class="meta prompt_">#</span><span class="language-bash">放行防火墙端口</span></span><br><span class="line">ufw allow 2222</span><br><span class="line"><span class="meta prompt_"># </span><span class="language-bash">重启 SSH 服务</span></span><br><span class="line">systemctl restart sshd</span><br><span class="line"><span class="meta prompt_"># </span><span class="language-bash">确认端口已修改</span></span><br><span class="line">ss -ltn</span><br><span class="line"><span class="meta prompt_"># </span><span class="language-bash">系统将提示您输入当前密码，然后再输入新密码两次以确认</span></span><br><span class="line">passwd</span><br></pre></td></tr></table></figure><h1 id="配置密钥登陆（推荐）"><a href="#配置密钥登陆（推荐）" class="headerlink" title="配置密钥登陆（推荐）"></a>配置密钥登陆（推荐）</h1><p>本地CMD或Powershell生成公私钥，默认下pub后缀为公钥</p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta prompt_"># </span><span class="language-bash">使用 OpenSSH 私钥格式生成迭代次数为 256 次的 Ed25519类型 的 SSH密钥对</span></span><br><span class="line">ssh-keygen -o -a 256 -t ed25519</span><br></pre></td></tr></table></figure><p><img src="https://gh.778080.xyz/https://raw.githubusercontent.com/EmmaHermione/emma/master/images/vps/aWXeVEU.png" alt="aWXeVEU"></p><p>复制公钥到服务器~&#x2F;.ssh的authorized_keys文件</p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta prompt_"># </span><span class="language-bash">如果目录不存在 <span class="built_in">mkdir</span> ~/.ssh</span></span><br><span class="line">cd ~/.ssh</span><br><span class="line"><span class="meta prompt_"># </span><span class="language-bash">将复制的公钥文件内容粘贴保存</span></span><br><span class="line">vim authorized_keys</span><br><span class="line"><span class="meta prompt_"># </span><span class="language-bash">配置文件权限</span></span><br><span class="line">chmod 600 authorized_keys</span><br></pre></td></tr></table></figure><p>尝试使用密钥登录，这里我使用CMD完成，你也可以使用SSH客户端</p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta prompt_"># </span><span class="language-bash">私钥登录</span></span><br><span class="line">ssh -i &quot;&#123;/entire/path/to/your/private/with/filename&#125;&quot; &#123;user&#125;@&#123;server ip&#125;</span><br><span class="line"><span class="meta prompt_"># </span><span class="language-bash">如果更改了默认端口需要加上-p 新端口</span></span><br><span class="line">ssh -i &quot;C:/Users/loverorien/.ssh/id_ed25519&quot; -p 新端口号 root@192.3.255.66</span><br></pre></td></tr></table></figure><p>如果登录失败，请配置sshd_config的PubkeyAuthentication yes</p><p>配置&#x2F;etc&#x2F;ssh&#x2F;sshd_config，自行选择</p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta prompt_"># </span><span class="language-bash">端口</span></span><br><span class="line">Port 8964</span><br><span class="line"><span class="meta prompt_"># </span><span class="language-bash">限制用户必须在指定的时限(单位秒)内认证成功</span></span><br><span class="line">LoginGraceTime 2m</span><br><span class="line"><span class="meta prompt_"># </span><span class="language-bash">允许 root 用户登录</span></span><br><span class="line">PermitRootLogin yes</span><br><span class="line"><span class="meta prompt_"># </span><span class="language-bash">指定每个连接最大允许的认证次数</span></span><br><span class="line">MaxAuthTries 6</span><br><span class="line"><span class="meta prompt_"># </span><span class="language-bash">最大允许保持多少个连接。默认值是 10</span></span><br><span class="line">MaxSessions 10</span><br><span class="line"><span class="meta prompt_"># </span><span class="language-bash">是否开启公钥认证</span></span><br><span class="line">PubkeyAuthentication yes</span><br><span class="line"><span class="meta prompt_"># </span><span class="language-bash">是否允许密码验证</span></span><br><span class="line">PasswordAuthentication no</span><br><span class="line"><span class="meta prompt_"># </span><span class="language-bash">是否允许空密码</span></span><br><span class="line">PermitEmptyPasswords no</span><br></pre></td></tr></table></figure><p>最后重启SSH服务</p><figure class="highlight sh"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 重启 SSH 服务</span></span><br><span class="line">systemctl restart sshd</span><br></pre></td></tr></table></figure><h1 id="安装-Nginx"><a href="#安装-Nginx" class="headerlink" title="安装 Nginx"></a>安装 Nginx</h1><p>按照官方文档根据你的系统执行命令即可</p><figure class="highlight http"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">https://nginx.org/en/linux_packages.html</span><br></pre></td></tr></table></figure><p><img src="https://gh.778080.xyz/https://raw.githubusercontent.com/EmmaHermione/emma/master/images/vps/uEXwqbs.png" alt="uEXwqbs"></p><p>相关命令</p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta prompt_"># </span><span class="language-bash">启动命令 (直接运行/系统服务管理器)</span></span><br><span class="line">nginx</span><br><span class="line">systemctl start nginx</span><br><span class="line"><span class="meta prompt_"># </span><span class="language-bash">查看 Nginx 版本</span></span><br><span class="line">nginx -v</span><br><span class="line"><span class="meta prompt_"># </span><span class="language-bash">指定 Nginx 配置文件</span></span><br><span class="line">nginx -c /etc/nginx/nginx.conf</span><br><span class="line"><span class="meta prompt_"># </span><span class="language-bash">验证 Nginx 配置文件是否有误</span></span><br><span class="line">nginx -t</span><br><span class="line"><span class="meta prompt_"># </span><span class="language-bash">立即停止 Nginx</span></span><br><span class="line">nginx -s stop</span><br><span class="line"><span class="meta prompt_"># </span><span class="language-bash">平滑停止 Nginx</span></span><br><span class="line">nginx -s quit</span><br><span class="line"><span class="meta prompt_"># </span><span class="language-bash">重新加载 Nginx 配置文件并重启</span></span><br><span class="line">nginx -s reload</span><br></pre></td></tr></table></figure><h1 id="安装-Docker-环境"><a href="#安装-Docker-环境" class="headerlink" title="安装 Docker 环境"></a>安装 Docker 环境</h1><h2 id="安装-Docker（非中国大陆服务器）"><a href="#安装-Docker（非中国大陆服务器）" class="headerlink" title="安装 Docker（非中国大陆服务器）"></a>安装 Docker（非中国大陆服务器）</h2><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta prompt_"># </span><span class="language-bash">安装 Docker(官方源 阿里源 中国区Azure源)</span></span><br><span class="line">wget -qO- get.docker.com | bash</span><br><span class="line">curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun</span><br><span class="line">curl -fsSL https://get.docker.com | bash -s docker --mirror AzureChinaCloud</span><br><span class="line"><span class="meta prompt_"># </span><span class="language-bash">查看 Docker 版本</span></span><br><span class="line">docker -v</span><br><span class="line"><span class="meta prompt_"># </span><span class="language-bash">设置 Docker 开机自启</span></span><br><span class="line">systemctl enable docker</span><br></pre></td></tr></table></figure><h2 id="安装-Docker-compose（非中国大陆服务器）"><a href="#安装-Docker-compose（非中国大陆服务器）" class="headerlink" title="安装 Docker-compose（非中国大陆服务器）"></a>安装 Docker-compose（非中国大陆服务器）</h2><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta prompt_"># </span><span class="language-bash">安装指定版本 Docker Compose</span></span><br><span class="line">curl -L &quot;https://github.com/docker/compose/releases/download/2.23.0/docker-compose-$(uname -s)-$(uname -m)&quot; -o /usr/local/bin/docker-compose</span><br><span class="line"><span class="meta prompt_"># </span><span class="language-bash">安装最新 Docker Compose</span></span><br><span class="line">curl -L &quot;https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)&quot; -o /usr/local/bin/docker-compose</span><br><span class="line"><span class="meta prompt_"># </span><span class="language-bash">添加执行权限</span></span><br><span class="line">chmod +x /usr/local/bin/docker-compose</span><br><span class="line"><span class="meta prompt_"># </span><span class="language-bash">查看 Docker Compose 版本</span></span><br><span class="line">docker-compose --version</span><br></pre></td></tr></table></figure><h2 id="卸载-Docker"><a href="#卸载-Docker" class="headerlink" title="卸载 Docker"></a>卸载 Docker</h2><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta prompt_"># </span><span class="language-bash">停止并删除所有运行中的容器</span></span><br><span class="line">docker stop $(docker ps -a -q)</span><br><span class="line">docker rm $(docker ps -a -q)</span><br><span class="line"><span class="meta prompt_"># </span><span class="language-bash">删除所有镜像</span></span><br><span class="line">docker rmi $(docker images -q)</span><br><span class="line"><span class="meta prompt_"># </span><span class="language-bash">卸载 Docker，并删除其相关的所有文件</span></span><br><span class="line">apt-get purge docker-ce docker-ce-cli containerd.io</span><br><span class="line">apt-get autoremove</span><br><span class="line"><span class="meta prompt_"># </span><span class="language-bash">删除 Docker 存储数据的目录</span></span><br><span class="line">rm -rf /var/lib/docker</span><br><span class="line"><span class="meta prompt_"># </span><span class="language-bash">删除 Containerd 存储数据的目录</span></span><br><span class="line">rm -rf /var/lib/containerd</span><br></pre></td></tr></table></figure><h1 id="修改-Docker-配置（可选）"><a href="#修改-Docker-配置（可选）" class="headerlink" title="修改 Docker 配置（可选）"></a>修改 Docker 配置（可选）</h1><p>以下配置会增加一段自定义内网 IPv6 地址，开启容器的 IPv6 功能，以及限制日志文件大小</p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><span class="line">cat &gt; /etc/docker/daemon.json &lt;&lt;EOF</span><br><span class="line">&#123;</span><br><span class="line">    &quot;log-driver&quot;: &quot;json-file&quot;,</span><br><span class="line">    &quot;log-opts&quot;: &#123;</span><br><span class="line">        &quot;max-size&quot;: &quot;20m&quot;,</span><br><span class="line">        &quot;max-file&quot;: &quot;3&quot;</span><br><span class="line">    &#125;,</span><br><span class="line">    &quot;ipv6&quot;: true,</span><br><span class="line">    &quot;fixed-cidr-v6&quot;: &quot;fd00:dead:beef:c0::/80&quot;,</span><br><span class="line">    &quot;experimental&quot;:true,</span><br><span class="line">    &quot;ip6tables&quot;:true</span><br><span class="line">&#125;</span><br><span class="line">EOF</span><br><span class="line"></span><br></pre></td></tr></table></figure><h1 id="哪吒探针"><a href="#哪吒探针" class="headerlink" title="哪吒探针"></a>哪吒探针</h1><p>详细用法请参考 <a href="https://nezha.wiki/guide/dashboard.html">https://nezha.wiki/guide/dashboard.html</a></p><figure class="highlight sh"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 主控端-安装脚本</span></span><br><span class="line">curl -L https://raw.githubusercontent.com/nezhahq/scripts/refs/heads/main/install.sh -o nezha.sh &amp;&amp; <span class="built_in">chmod</span> +x nezha.sh &amp;&amp; <span class="built_in">sudo</span> ./nezha.sh</span><br><span class="line"><span class="comment"># 被控端-安装脚本</span></span><br><span class="line">请在面板后台获取安装命令</span><br><span class="line">curl -L https://raw.githubusercontent.com/nezhahq/scripts/main/agent/install.sh -o agent.sh &amp;&amp; <span class="built_in">chmod</span> +x agent.sh &amp;&amp; <span class="built_in">env</span> NZ_SERVER=dashboard.example.com:443 NZ_TLS=<span class="literal">true</span> NZ_CLIENT_SECRET=EXAMPLE ./agent.sh</span><br><span class="line"><span class="comment"># 关闭 WebSSH</span></span><br><span class="line">1、在被控端安装命令里加入下述参数</span><br><span class="line">NZ_DISABLE_COMMAND_EXECUTE=<span class="literal">true</span></span><br><span class="line">2、安装后在面板后台中关闭</span><br><span class="line">对应服务器的设置中勾选 DISABLE_COMMAND_EXECUTE</span><br></pre></td></tr></table></figure><h1 id="Acme-证书"><a href="#Acme-证书" class="headerlink" title="Acme 证书"></a>Acme 证书</h1><p>详细用法请参考 <a href="https://github.com/acmesh-official/acme.sh">https://github.com/acmesh-official/acme.sh</a></p><p>DNS API方式 <a href="https://github.com/acmesh-official/acme.sh/wiki/dnsapi">https://github.com/acmesh-official/acme.sh/wiki/dnsapi</a></p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta prompt_"># </span><span class="language-bash">安装 Acme.sh</span></span><br><span class="line">curl https://get.acme.sh | sh</span><br><span class="line"><span class="meta prompt_"># </span><span class="language-bash">配置环境变量（软链接）</span></span><br><span class="line">ln -s /root/.acme.sh/acme.sh /usr/local/bin/acme.sh</span><br><span class="line"><span class="meta prompt_"># </span><span class="language-bash">查看 Acme.sh 版本</span></span><br><span class="line">acme.sh --version</span><br><span class="line"><span class="meta prompt_"># </span><span class="language-bash">切换CA证书颁发机构</span></span><br><span class="line">acme.sh --set-default-ca --server letsencrypt</span><br><span class="line"><span class="meta prompt_"># </span><span class="language-bash">DNS API 方式申请证书 API 令牌到对应服务商获取</span></span><br><span class="line"><span class="meta prompt_">#</span><span class="language-bash"><span class="comment"># 如name.com</span></span></span><br><span class="line">export Namecom_Username=&quot;leakkc&quot;</span><br><span class="line">export Namecom_Token=&quot;edec485cdfa7e62511ab6b9e333ce94183bed261&quot;</span><br><span class="line"><span class="meta prompt_">#</span><span class="language-bash"><span class="comment"># 如cloudflare</span></span></span><br><span class="line">export CF_Token=&quot;glcOIFRlGEl2Yj8Escm8lRcdWbxodkQFyzV9bW3q&quot;</span><br><span class="line">export CF_Account_ID=&quot;ffa46c8dcb754ee169e5c2b566b52b25&quot;</span><br><span class="line"><span class="meta prompt_"># </span><span class="language-bash">申请泛域名证书</span></span><br><span class="line">acme.sh --issue --dns dns_cf -d 你的域名 -d &#x27;*.你的域名&#x27; [-k ec-256]</span><br><span class="line">acme.sh --issue --dns dns_cf -d love.com -d &#x27;*.love.com&#x27; -k ec-256</span><br><span class="line"><span class="meta prompt_"># </span><span class="language-bash">安装证书到 Nginx（可选）</span></span><br><span class="line">acme.sh --install-cert -d love.com -d *.love.com --key-file /etc/cert/private.key --fullchain-file /etc/cert/fullchain.cer --ecc --reloadcmd &quot;systemctl restart nginx&quot;</span><br><span class="line"><span class="meta prompt_"># </span><span class="language-bash">强制更新证书，默认60天自动更新</span></span><br><span class="line">acme.sh --renew -d example.com --force [--ecc]</span><br><span class="line"><span class="meta prompt_"># </span><span class="language-bash">停止更新证书（删除证书）证书/密钥文件需自行删除相应的目录</span></span><br><span class="line">acme.sh --remove -d example.com [--ecc]</span><br><span class="line"><span class="meta prompt_"># </span><span class="language-bash">升级 Acme.sh（可开启自动升级）</span></span><br><span class="line">acme.sh --upgrade [--auto-upgrade]</span><br><span class="line"><span class="meta prompt_"># </span><span class="language-bash">禁用自动升级</span></span><br><span class="line">acme.sh --upgrade --auto-upgrade 0</span><br></pre></td></tr></table></figure><h1 id="RustDesk-部署"><a href="#RustDesk-部署" class="headerlink" title="RustDesk 部署"></a>RustDesk 部署</h1><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><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></pre></td><td class="code"><pre><span class="line"><span class="comment">#services:</span></span><br><span class="line"><span class="comment">#  rustdesk-server:</span></span><br><span class="line"><span class="comment">#    container_name: rustdesk-server</span></span><br><span class="line"><span class="comment">#    ports:</span></span><br><span class="line"><span class="comment">#      - 21115:21115</span></span><br><span class="line"><span class="comment">#      - 21116:21116</span></span><br><span class="line"><span class="comment">#      - 21116:21116/udp</span></span><br><span class="line"><span class="comment">#      - 21117:21117</span></span><br><span class="line"><span class="comment">#      - 21118:21118</span></span><br><span class="line"><span class="comment">#      - 21119:21119</span></span><br><span class="line"><span class="comment">#    image: rustdesk/rustdesk-server-s6:latest</span></span><br><span class="line"><span class="comment">#    environment:</span></span><br><span class="line"><span class="comment">#      - &quot;RELAY=rustdesk.778080.xyz:21117&quot;</span></span><br><span class="line"><span class="comment">#      - &quot;ENCRYPTED_ONLY=1&quot;</span></span><br><span class="line"><span class="comment">#    volumes:</span></span><br><span class="line"><span class="comment">#      - ./data:/data</span></span><br><span class="line"><span class="comment">#    restart: unless-stopped</span></span><br><span class="line"></span><br><span class="line"><span class="attr">networks:</span></span><br><span class="line">  <span class="attr">rustdesk-net:</span></span><br><span class="line">    <span class="attr">external:</span> <span class="literal">false</span></span><br><span class="line"></span><br><span class="line"><span class="attr">services:</span></span><br><span class="line">  <span class="attr">hbbs:</span></span><br><span class="line">    <span class="attr">container_name:</span> <span class="string">hbbs</span></span><br><span class="line">    <span class="attr">ports:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="number">21115</span><span class="string">:21115</span></span><br><span class="line">      <span class="bullet">-</span> <span class="number">21116</span><span class="string">:21116</span></span><br><span class="line">      <span class="bullet">-</span> <span class="number">21116</span><span class="string">:21116/udp</span></span><br><span class="line">      <span class="bullet">-</span> <span class="number">21118</span><span class="string">:21118</span></span><br><span class="line">    <span class="attr">image:</span> <span class="string">rustdesk/rustdesk-server:latest</span></span><br><span class="line">    <span class="attr">command:</span> <span class="string">hbbs</span> <span class="string">-r</span> <span class="string">rustdesk.778080.xyz:21117</span> <span class="string">-k</span> <span class="string">dVRQXRf3XS0LrZeNirdoQg==</span></span><br><span class="line">    <span class="attr">volumes:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">./data:/root</span></span><br><span class="line">    <span class="attr">networks:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">rustdesk-net</span></span><br><span class="line">    <span class="attr">depends_on:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">hbbr</span></span><br><span class="line">    <span class="attr">restart:</span> <span class="string">unless-stopped</span></span><br><span class="line"></span><br><span class="line">  <span class="attr">hbbr:</span></span><br><span class="line">    <span class="attr">container_name:</span> <span class="string">hbbr</span></span><br><span class="line">    <span class="attr">ports:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="number">21117</span><span class="string">:21117</span></span><br><span class="line">      <span class="bullet">-</span> <span class="number">21119</span><span class="string">:21119</span></span><br><span class="line">    <span class="attr">image:</span> <span class="string">rustdesk/rustdesk-server:latest</span></span><br><span class="line">    <span class="attr">command:</span> <span class="string">hbbr</span> <span class="string">-k</span> <span class="string">dVRQXRf3XS0LrZeNirdoQg==</span></span><br><span class="line">    <span class="attr">volumes:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">./data:/root</span></span><br><span class="line">    <span class="attr">networks:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">rustdesk-net</span></span><br><span class="line">    <span class="attr">restart:</span> <span class="string">unless-stopped</span></span><br></pre></td></tr></table></figure><h1 id="参考-推荐"><a href="#参考-推荐" class="headerlink" title="参考&#x2F;推荐"></a>参考&#x2F;推荐</h1><p><strong><a href="https://www.nodeseek.com/post-183694-1">常用VPS脚本</a></strong></p>]]></content:encoded>
      
      
      <category domain="http://blog.778080.xyz/categories/%E6%9C%8D%E5%8A%A1%E5%99%A8/">服务器</category>
      
      
      <category domain="http://blog.778080.xyz/tags/Linux/">Linux</category>
      
      <category domain="http://blog.778080.xyz/tags/Docker/">Docker</category>
      
      <category domain="http://blog.778080.xyz/tags/VPS/">VPS</category>
      
      
      <comments>http://blog.778080.xyz/archives/vps-basic-configuration/#disqus_thread</comments>
      
    </item>
    
    <item>
      <title>避坑日记之：国内外云服务器VPS选购指南</title>
      <link>http://blog.778080.xyz/archives/choose-vps/</link>
      <guid>http://blog.778080.xyz/archives/choose-vps/</guid>
      <pubDate>Wed, 24 May 2023 12:00:00 GMT</pubDate>
      
      <description>一入鸡圈深似海</description>
      
      
      
      <content:encoded><![CDATA[<h1 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h1><p>懒得看？不想选？不差钱？<br>闭着眼买它——<a href="https://www.dmit.io/"><strong>DMIT</strong></a><strong>&#x2F;</strong><a href="https://bandwagonhost.com/aff.php?aff=72575"><strong>搬瓦工</strong></a> 你问我有啥缺点，唯一缺点就是贵。<br>不让我说，我也要说：<del>狗都不买国内服务器</del> 没办法，还是要买，买香港</p><h1 id="知名云服务及VPS厂商"><a href="#知名云服务及VPS厂商" class="headerlink" title="知名云服务及VPS厂商"></a>知名云服务及VPS厂商</h1><p>国外大厂：<a href="https://aws.amazon.com/">AWS</a>，<a href="https://azure.microsoft.com/">Azure</a>，<a href="https://cloud.google.com/">谷歌云</a></p><p>国内大厂：<a href="https://www.aliyun.com/">阿里云</a>，<a href="https://cloud.tencent.com/">腾讯云</a>，<a href="https://www.huaweicloud.com/">华为云</a></p><ul><li><strong>Spartan（斯巴达）</strong> <a href="https://billing.spartanhost.net/aff.php?aff=2230"><strong>https://billing.spartanhost.net</strong></a></li><li><strong>DMIT（大妈）</strong> <a href="https://www.dmit.io/"><strong>https://www.dmit.io</strong></a></li><li><strong>Bandwagon（搬瓦工）</strong> <a href="https://bandwagonhost.com/aff.php?aff=72575"><strong>https://bandwagonhost.com</strong></a></li><li><strong>ClawCloud（小阿里）</strong> <a href="https://claw.cloud/">https://claw.cloud</a></li><li>V.PS（小秘书） <a href="https://vps.hosting/"><strong>https://vps.hosting</strong></a></li><li>ZgoCloud <a href="https://zgovps.com/"><strong>https://zgovps.com</strong></a></li></ul><h1 id="明确需求"><a href="#明确需求" class="headerlink" title="明确需求"></a>明确需求</h1><p>如果你只是想挂一个小脚本，你大概率不需要买服务器。你完全可以白嫖各大厂商免费提供的云函数，或者直接在路由器以及虚拟机中运行。</p><p>如果你只是想做一个小网站，你也不一定需要买一台服务器。廉价的虚拟主机，甚至是各种免费的静态托管，Cloudflare，Github，Heroku，Vercel，Leancloud 等云产品都完全可以满足你的需求。</p><p>如果你想用来跑机器学习，那么你应该去买专用的显卡或者租用专业的工作站，服务器并不能胜任你的需求，或者换句话说，你应该是没有这么多钱的。</p><p>如果你只是用来挂个游戏，那么隔壁没有独立 IP 地址的挂机宝会更适合你，不仅便宜而且配置高。<br>……<br>是的，以上的内容云服务器都可以胜任，但对你来说都不一定是最优解。那么拥有一台云服务器对你来说，最大的优点是什么？</p><p><strong>最大的优点，是拥有自己独立的 IP 地址，以及完整的服务控制权限。</strong></p><p>但据我观察，服务器最多的三种用途是：建站和扶墙以及下载。</p><h1 id="配置选择"><a href="#配置选择" class="headerlink" title="配置选择"></a>配置选择</h1><h2 id="CPU"><a href="#CPU" class="headerlink" title="CPU"></a>CPU</h2><p>一般来说，服务器追求稳定，CPU 的主频不会太高，因此不同厂家的 CPU 性能的差异在同价位来说，基本上大差不大，如果是个人使用的服务器，基本不用刻意考虑 CPU 的具体型号。</p><p>一般对 CPU 的选择，是核心数。比如良心云的标准配置 1C2H，指的是单核双线程。这样的配置对于个人服务器来说其实也是够用的。</p><p>对于跑 Windows server 的服务器，个人建议 CPU 在 2 个核心以上。</p><p>得益于虚拟化的技术，实际上大部分 IDC 厂商都存在超售行为（部分甚至很严重），一般没有说明性能独享的云服务器，CPU 性能都是共享的。共享性能的服务器是不允许你长期跑高负载的，如果你有长期跑高负载服务的预项，请着重斟酌此项。</p><p>目前占据主要市场的还是 kvm 虚拟化的云服务器，此虚拟化方式的机子，内存和硬盘空间都不能超售，但是可以超售 cpu。</p><h2 id="内存"><a href="#内存" class="headerlink" title="内存"></a>内存</h2><p>服务器的内存基本都是 ECC 内存条，性能不高，但也是胜在稳定。如果是个人使用的服务器，基本不用刻意考虑内存的具体型号与速度。</p><p>一般对内存的选择，还是集中在容量上。理论上当然是越大越好，但那毕竟要加钱嘛。Linux 本身对于内存的需求是很低的，但是低于 512M 内存的服务器就不建议买了，毕竟跑一个 docker 或者其他服务就基本占满了。</p><p>对于跑 Windows server 的服务器，个人建议内存在 4GB 以上。</p><p>值得注意的是，很多国外的服务器厂商都喜欢设置 SWAP 内存，SWAP 内存是不算在内存中的。一般情况下并不需要用到，除非你的内存很小真的不够用。</p><p>容量就是王道，内存没别的，越大越好越大越好越大越好！！！</p><h2 id="硬盘-I-O"><a href="#硬盘-I-O" class="headerlink" title="硬盘 I&#x2F;O"></a>硬盘 I&#x2F;O</h2><p>一般的常规的云服务器提供的硬盘都不大，正常情况下硬盘也不会用满。所以硬盘的容量大小不用太纠结。</p><p>服务器的硬盘大部分都是用来安装应用服务以及存放日志的，服务器的硬盘不是给你用来当网盘用的，尤其是国内的服务器，静态的资源尽量不要往上面丢，可以选择用对象存储或 CDN。</p><p>硬盘的随机读写能力要比连续读写能力重要得多，所以要谨慎留意是否买到了 “石头盘” 机器，光有容量但是读写性能极差的垃圾服务器依旧是大有其在，国外服务器此坑相对较多。</p><p>基本所有的 IDC 厂商对硬盘都有冗余策略，有条件的大厂都使用 RAID10 作为标配。这不是一个加分项，而是一个必备项，如果你购买的服务器不支持硬盘冗余和快照灾备，直接退款就完事。</p><table><thead><tr><th>级别</th><th>最少磁盘要求</th><th>优点</th><th>缺点</th><th>应用场景</th></tr></thead><tbody><tr><td>RAID0</td><td>1 块</td><td>读写速度快</td><td>没有任何冗余</td><td>MySQL Slave (数据库的从库)，集群的节点 RS</td></tr><tr><td>RAID1</td><td>2 块（只能）</td><td>100% 冗余，镜像</td><td>读写性能一般，成本高</td><td>单独的，数据很重要，且不能宕机的业务，监控，系统盘</td></tr><tr><td>RAID5</td><td>3 块</td><td>具有一定性能和冗余，可以坏一块盘</td><td>写入性能不高</td><td>一般的业务都可以用</td></tr><tr><td>RAID10</td><td>4 块</td><td>读写速度很快，100% 冗余</td><td>成本高</td><td>性能和冗余要求很好的业务。数据库主库和存储的主节点。</td></tr></tbody></table><p>不出意外，没有特殊说明硬盘也是共享资源，也是不能持续高负载 I&#x2F;O 的，甚至很多服务器厂商还会给你的连续读写设限，防止你乱来。</p><p>也有不少厂商系统盘与数据盘是隔离的，这不一定是个加分项。安全性并没有多大提升，但是体验大概率是下降的。</p><h2 id="带宽"><a href="#带宽" class="headerlink" title="带宽"></a>带宽</h2><p>对于服务器的带宽，很多人都有很大的误会。</p><p>首先，服务器厂商提供的带宽，基本都是以 Mbps 计算的。比如 1M 的带宽，换算成实际体现是 128KB&#x2F;s。</p><p>你可能以为服务器的带宽都是很大的，毕竟现在随便一个网页，各种图片视频都是几十兆起步，你甚至可能产生过买一台服务器当自己的云盘的打算。</p><p>但很不幸的是，在国内你会发现大部分你能买得起的服务器带宽都在 10M 以内，甚至很大部分都是 1M，2M 的。带宽不仅低的离谱，甚至是死贵的要命，甚至可以用寸 M 寸金来形容了。这么低的带宽，真的能用吗？</p><p>实际上，如果你是做网站的，你会发现哪怕是 1M 的小水管，优化做的好，也足以支持日均上万的 IP，十万的 PV。服务器是运算中心而不是数据中心，服务器只负责输出核心的内容即可，内容和资源由对象存储和 CDN 进行分发。这也是为什么基本所有的大型项目都要求前后端分离的原因，因为服务器的带宽真的很值钱。</p><p>当然也有专门用于跑流量服务的 NAT 服务器。这就不属于本文介绍的内容了，NAT 服务器拥有很高的带宽，但是一般只开放个别端口给你使用，你并没有整台服务器的完整控制权限。</p><p>在大多数非流量业务中，时延，抖动，丢包等指标的重要性都远远高于带宽，这些都与带宽无任何直接联系，这就是为什么尽管国内的服务器如此拉跨，带宽如此低，我们也不得不选择国内服务器的原因。</p><p>至于国外服务器带宽，一般都给的比较大，但是与线路挂钩，水非常深了。</p><h2 id="高防"><a href="#高防" class="headerlink" title="高防"></a>高防</h2><p>个人使用的云服务器，无论是国内还是国外，我认为都没有上高防的必要。</p><p>对于国内云，哪怕是裸奔都不怕。毕竟自有国情在此，国外的 IP 大部分都已经被墙挡干净了，国内也没多少人敢用实名的 IP 来攻击你。真被盯上了，你那几十一百个 G 的防御也脆的跟纸一样。</p><p>高防基本上都是恰国内中小企业烂钱的，自己手里有黑名单捂着，不买高防不买清洗机那便是” 死得其所”</p><p>至于国外云，选择就更多了。首先是不同国家的机房本身抗压能力就不一样，比如韩国的机房 KT 等，本身就自带百 G 的抗压能力。而香港机房的小水管，基本都是一打就死，甚至还会被机房永久拉黑。</p><p>我国的网络安全建设与国外发达地区相比，还是有很大的差距的。比如像 Cloudflare 这样的大爹，免费计划就可以无限防御 DDoS 攻击，根本不和你算什么流量清洗费用。几个 T 打过来那都是小场面，家常便饭。CF 能够承受比有史以来最庞大 DDos 攻击还要强 11 倍的攻击。扛 D 的同时还可以隐藏自己的真实 IP，甚至还自带 CDN，全球体验都很好（墙内除外）。</p><p>Cloudflare：五秒盾前，众生平等</p><p>网络攻击不仅仅只有 DDOS 一种，这世界上没有单靠硬件就能完全防护的机器。对个人服务器来说，相比起被 D 死的风险，我认为更加要注重服务器的数据安全。</p><h1 id="踩坑雷点"><a href="#踩坑雷点" class="headerlink" title="踩坑雷点"></a>踩坑雷点</h1><h2 id="备案"><a href="#备案" class="headerlink" title="备案"></a>备案</h2><p>备案是国内云服务器绕不开的一个坑。</p><p>在国内，不备案的服务器也是可以使用的，但是一些关键的端口会被禁用，比如 80,443 等。不备案的服务器不能被域名解析，也无法搭设网站服务。但是其他的服务是可以正常使用的，如果你没有做网站的打算，可以不备案。</p><p>当然了，备案的好处多多，可以白嫖免费的 CDN，也可以有更高的权重，就是不能拿来干坏事。</p><p>国外的服务器没有限制，无需备案，甚至可以不用实名购买。实际上对于个人服务器来说，香港，韩国等较近区域的服务器与国内服务器的体验是差距不大的，延迟都很低。</p><h2 id="背书"><a href="#背书" class="headerlink" title="背书"></a>背书</h2><p>如果是没有大机房背书的 IDC ，保不准会出现什么提桶跑路的经历</p><p>一般有名的头部云服务商自然是问题不大，但是也有不少臭鱼烂虾，套了个皮就搁那割韭菜。</p><p>国内的好歹还能走走法律途径，碰到国外跑路拔网线的，就只能下楼买个苹果降血压了。</p><p>如果你不清楚这家 IDC 厂商背后有没有大机房背书，可以 google 一下。（别百度了，真找不到）</p><h2 id="优惠"><a href="#优惠" class="headerlink" title="优惠"></a>优惠</h2><p>国内各大 IDC 厂商的打架力度相当大，对新用户，个人以及学生可以说基本都是赔钱赚吆喝。毕竟自有国情在此，根本不怕你不用。（但是续费会有大坑）</p><p>尽量不要买小厂子的服务器，毕竟买国内的云很大程度就是奔着完善的售后去的。小厂子的价钱并没有低多少，但是偶尔有奇奇怪怪的坑把你整的血压极高。</p><p>不要相信国内的所谓的免费服务器，点名批评某丰云，此类企业就是为了套你的个人信息罢了。所谓的免费，就是让你为了那可怜的几天免费续用，写各种臭鱼烂虾软文推广。反正是免费的，一言不合就删数据，网站被跳转广告，性能还极差。对国内这些玩意大家心里都明白，免费的才是最贵的。下次看到类似的推广建议直接拉黑。</p><p>国外的 IDC 厂商打架也很厉害，但与国内的垄断情势有所不同，一般都比较少新购优惠，优惠都是在各大节日放出，比如黑五，圣诞节等等，以优惠机型或者优惠码的形式上架，需要提前蹲点。一般国外服务器的续费价格都是延续首购的。甚至很多还能白嫖，比如 IBM，甲骨文，谷歌云等。（国外的白嫖云相对良心，但其实也差不多，比如甲骨文白嫖机那只有 1&#x2F;8 核的性能着实把我震惊了）</p><p>此外，推广返利以及充值返利也是国外 IDC 厂商促销的主要手段。但考虑到国外的服务器售后麻烦，一般不推荐上头无脑梭哈个几年。</p><h2 id="付款"><a href="#付款" class="headerlink" title="付款"></a>付款</h2><p>国内没啥说的，微信支付宝银行卡。</p><p>国外很多服务器厂商不支持微信和支付宝，如果你想购买，建议提前申请一个 PayPal。（当然现在很多厂商也跟进了）</p><p>有些厂商很鸡贼，偷偷给你开了自动续费，尤其是对于用 PayPal 或信用卡购买的，有时候开了自动续费都不知道怎么关，建议购买的时候分辨清楚。</p><p>国外的服务器商即使支持支付宝或者微信购买也不要用，有能力的还是上 PayPal 。如果是涉及到退款，开票等操作，支付宝和微信人家不认！人家不认！！！可能无法退款！！不要为了一时简便就给自己的售后挖坑！！</p><p>（也不要用比特币支付，除非你买台服务器就不是为了干好事的，虽然保证了全匿名操作，但同时也会对你的售后带来极度不便）</p><h2 id="售后"><a href="#售后" class="headerlink" title="售后"></a>售后</h2><p>国内大厂都不错，出了问题直接加客服，逢年过节还有节日问候，送点小月饼啥的。</p><p>国外一般都是靠发工单和邮件处理，血压高的时候建议下楼买个苹果吃，因为急也没用。另外请收起你的 QQ 邮箱和蹩脚的中式英语，百度翻译一下不是什么难事，起码要让人家看明白。</p><p>另外国外很多服务器厂家都不支持全天候服务的（需要额外购买），甚至很多都是只有周一到周五上班时间才理你。</p><h2 id="抗投诉"><a href="#抗投诉" class="headerlink" title="抗投诉"></a>抗投诉</h2><p>首先，这里一般的投诉指的是同行互踩，或者是部分想干碎你的人。他们可以用个人的形式通过 ip 投诉到机房，这属于一般投诉。</p><p>国内因为有备案的存在，投诉的意义几乎为 0，可以直接忽略。因为不合规的根本连备案都过不了。能过了备案的，自己确实身正不怕影子斜的，无论怎么投诉都对你没影响。</p><p>但是国外的才不管你这么多，收到投诉就给你拔网线，这可比直接黑了你的站方便多了。下面简单介绍一下各类海外抗投诉服务器，主要还是分布在亚洲、美洲、欧洲。</p><p>1、亚洲抗投诉服务器机房<br>亚洲的机房很多，但是真正做到抗投诉的机房只有马来西亚机房，如果用户针对的群体是在国内，可以选择马来西亚服务器。</p><p>2、美洲抗投诉服务器机房<br>美洲机房中最为代表性的为美国机房，这也是国内市场中比较常见的机房，由于美国服务器带宽比较大，而且内容限制比较少，很多人都喜欢租用美国服务器进行仿牌网站等搭建仿牌网站。美国硅谷机房位于美国互联网高速发达的城市洛杉矶，该机房不但抗投诉能力强，而且带宽充足、不限流量、访问速度快。</p><p>3、欧洲抗投诉服务器机房<br>欧洲地区可供选择的抗投诉服务器比较多的，如荷兰服务器、瑞典服务器、立陶宛服务器、拉脱维亚服务器等都可以选择。</p><p>还有一个问题想和大家说清楚：那就是根本不存在有些商家所吹嘘的完全抗投诉的机房，有些服务商在宣传自己的仿牌服务器或抗投诉服务器时，宣城自己 “完全不怕投诉，任何的投诉都不予理会”，这个是不存在的。只能是选择相对抗投诉能力强，效果好的服务器来租用。</p><h2 id="IP-地址（国内服务器忽略）"><a href="#IP-地址（国内服务器忽略）" class="headerlink" title="IP 地址（国内服务器忽略）"></a>IP 地址（国内服务器忽略）</h2><h3 id="被墙-IP"><a href="#被墙-IP" class="headerlink" title="被墙 IP"></a>被墙 IP</h3><p>部分 IP 地址由于上一任机主或邻居的滥用，被列入墙的黑名单了，也就是被墙 IP。此时你买到的服务器使用国内 IP 是无法连接的，解决方案就是退款或者申请更换 IP，最差的打算就是套一层CDN访问了。</p><h3 id="非固定-IP"><a href="#非固定-IP" class="headerlink" title="非固定 IP"></a>非固定 IP</h3><p>部分国外服务器厂商提供给你服务器的 IP 不是固定的，很勾八恶心。如果不慎已经踩了坑，很可能要做好长期动态解析的准备。DDNS（Dynamic Domain Name Server，动态域名服务）</p><h3 id="单-IPV6-地址"><a href="#单-IPV6-地址" class="headerlink" title="单 IPV6 地址"></a>单 IPV6 地址</h3><p>有些厂商提供 IPv6 Only 的选项，或许会便宜一点，但是目前来说 IPV6 的生态支持仍然不完善，IPV4 对于大部分应用场景仍然是刚性需求。千万不要为了省一点钱就丢弃 IPv4 地址。</p><h2 id="系统镜像"><a href="#系统镜像" class="headerlink" title="系统镜像"></a>系统镜像</h2><p>所有 IDC 厂商都支持自己选择镜像安装系统，但是镜像不一定全面，不少国外的 IDC 厂商只提供 4~5 个镜像使用，如果你对系统版本和环境比较挑剔，请记得买之前询问一下支持安装的系统。</p><p>Windows Server 对硬件有硬性要求，明面上一般都是只受内存限制，实际上 CPU 和带宽也是限制条件。如果你的带宽少于 3M，远程桌面会卡的你怀疑人生，甚至直接无法使用。</p><h2 id="拥塞处理"><a href="#拥塞处理" class="headerlink" title="拥塞处理"></a>拥塞处理</h2><p>主要用于国内服务器出海，或者出海服务器回国线路的丢包问题。国内服务器如果面向国内使用，可以不做额外配置。</p><p>如果你购买国外的云服务器发现速度很慢，或许是拥塞问题处理的问题。建议切换算法为 BBR 或 BBR 的衍生版本。</p><p>BBR &#x3D; Bottleneck Bandwidth and Round-trip propagation time，是一种TCP的拥塞控制算法。简单粗暴的理解就是数据流量的交通管理：当公路不再塞车的时候，每辆车自然就能保持较快的车速了。</p><p>那么它有没有用呢？一般而言，有BBR 和 没有BBR 会有可以感知的差别（速度、稳定性、延迟方面都会有一些改善），所以 【非常建议开启 BBR】。</p><p>但开启之后，BBR 在 4.x 和 5.x 之间的差异往往比较微妙、见仁见智，造成体验差别的决定性因素仍然是线路质量。所以 【不必纠结版本、不必盲目追新、跟随你的发行版更新内核即可】</p><p>请注意，此操作涉及系统内核层面，乱改会出事！</p><h2 id="虚拟化架构"><a href="#虚拟化架构" class="headerlink" title="虚拟化架构"></a>虚拟化架构</h2><p>在选择服务器时尽量选择KVM架构，OpenVZ架构的服务器，可超开的数量更多。</p><p>目前中小型 IDC 的 VPS 虚拟化无非就是：OpenVZ、KVM、XEN、VM-Ware。</p><p>你要说 OpenVZ 是超售专用虚拟化，也太绝对，因为其他两个的虚拟化也能实现超售，不过 OpenVZ 的更容易超售，所以价格普遍更便宜。</p><p>而 OpenVZ 无法安装 TCP 加速软件（至于 VPS 内安装虚拟机来实现安装使用 BBR 行为，首先安装虚拟机是违规行为，其次该方式会造成性能损失，且对新手不友好）。</p><p>KVM、XEN、VM-Ware 都可以安装 锐速、LotServer 以及 更换内核开启 BBR。</p><p>所以除非你实在预算少，否则我更推荐你选择 KVM、XEN、VM-Ware 虚拟化的 VPS 。</p><p>另外，XEN 虚拟化分为 xen-hvm（全虚拟化）和 xen-pv（半虚拟化），只有前者支持更换内核。</p><p>区分方法：ROOT 用户运行 virt-what 命令，若只显示 xen 则为 xen-pv（半虚拟化），同时显示 xen 和 xen-hvm 则为 xen-hvm（全虚拟化）。</p><p>在选择服务器时尽量选择KVM架构。</p><h2 id="线路"><a href="#线路" class="headerlink" title="线路"></a>线路</h2><table><thead><tr><th align="center">运营商</th><th align="center">线路名称</th><th align="center">路由</th><th align="center">对标</th><th align="center">特征</th></tr></thead><tbody><tr><td align="center">中国电信</td><td align="center">163骨干网&#x2F; ChinaNet &#x2F; CN1 &#x2F; AS4134</td><td align="center">202.97 &#x2F;4134</td><td align="center"></td><td align="center">普通家用，晚高峰卡爆</td></tr><tr><td align="center">中国电信</td><td align="center">CN2 GIA（Global Internet Access 又称纯 CN2&#x2F;全程 CN2） &#x2F; AS4809</td><td align="center">59.43</td><td align="center"></td><td align="center">高端优质线路</td></tr><tr><td align="center">中国电信</td><td align="center">CN2 GT（Global Transfer 又称半程 CN2 ） &#x2F; AS4134 &#x2F;CDIA &#x3D;CN2 三网双程GIA。 DIA&#x3D;单网双程CN2 GIA</td><td align="center">出国59.43 国内202.97 回国 202.97</td><td align="center">CUVIP</td><td align="center">163回国线路很拥挤，所以CN2 GT一般般</td></tr><tr><td align="center">中国电信</td><td align="center">CTGNet &#x2F; AS23764</td><td align="center"></td><td align="center">CN2 GIA</td><td align="center">中国电信连接选项列表中的最新成员</td></tr><tr><td align="center">中国联通</td><td align="center">169骨干网 &#x2F; AS4837</td><td align="center">219.158</td><td align="center">电信163</td><td align="center">除CUVIP，均走169，比电信163略好</td></tr><tr><td align="center">中国联通</td><td align="center">CUG VIP&#x2F; A网 &#x2F; AS9929</td><td align="center">218.105 &#x2F; 210.51 &#x2F; 210.78 国内 AS9929 国际 AS10099</td><td align="center">CN2 GIA</td><td align="center">主要是因为用的人很少，所以负载低，速度快，价格贵。</td></tr><tr><td align="center">中国移动</td><td align="center">CMI &#x2F;CMIN2&#x2F; CMNET &#x2F; AS9808(境内） &#x2F; AS58483 &#x2F;AS58453（境外） &#x2F;AS58807</td><td align="center">221.176 &#x2F; 221.183</td><td align="center"></td><td align="center"></td></tr></tbody></table><p>具体线路介绍：<a href="https://blog.sunflyer.cn/archives/594">中国三大电信运营商国际网络互联相关资料</a></p><p>各家出口带宽的总量比较如下：</p><p>中国电信 ＞ 中国联通 ＞ 中国移动</p><p>各家人均用户出口带宽量比较如下：</p><p>中国联通 ＞ 中国电信 ＞ 中国移动</p><p>如果有经常访问外网的需求，使用中国联通的固网是最明智的选择，另外广移拉万物</p><p>至于中国奠信，吔屎啦！<br><img src="https://gh.778080.xyz/https://raw.githubusercontent.com/EmmaHermione/emma/master/images/vps/quiGnvn.png" alt="quiGnvn"></p>]]></content:encoded>
      
      
      <category domain="http://blog.778080.xyz/categories/%E6%9C%8D%E5%8A%A1%E5%99%A8/">服务器</category>
      
      
      <category domain="http://blog.778080.xyz/tags/VPS/">VPS</category>
      
      
      <comments>http://blog.778080.xyz/archives/choose-vps/#disqus_thread</comments>
      
    </item>
    
  </channel>
</rss>
