<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <id>guide</id>
    <title>VPS.Town 教程中心</title>
    <updated>2026-03-11T15:33:05.613Z</updated>
    <generator>https://github.com/jpmonette/feed</generator>
    <link rel="alternate" href="https://docs.vps.town"/>
    <subtitle>VPS.Town 官方教程中心 - 帮助您更好地使用我们的服务。</subtitle>
    <icon>https://docs.vps.town/logo.png</icon>
    <rights>© 2026 VPS.Town 1.3.2 - All Rights Reserved</rights>
    <entry>
        <title type="html"><![CDATA[iPerf3 分布式网络测试工具全攻略：从安装到进阶监控]]></title>
        <id>20</id>
        <link href="https://docs.vps.town/guide/iperf3-distributed-network-test-tool"/>
        <updated>2026-01-20T02:00:00.000Z</updated>
        <summary type="html"><![CDATA[本文将详解如何部署 iPerf3 分布式网络测试工具。该方案采用 Master/Agent 架构，支持一键安装、现代化仪表盘、三网延迟监控、地铁图风格路由追踪及 Telegram 告警推送，是多节点网络性能管理的高效解决方案。]]></summary>
        <content type="html"><![CDATA[<h1 id="iperf3-分布式网络测试工具全攻略从安装到进阶监控">iPerf3 分布式网络测试工具全攻略：从安装到进阶监控<a aria-hidden="true" href="#iperf3-分布式网络测试工具全攻略从安装到进阶监控">#</a></h1>
<details><summary>📖 本文目录</summary><div>

</div></details>
<h2 id="项目简介">项目简介<a aria-hidden="true" href="#项目简介">#</a></h2>
<p><strong>iPerf3 分布式网络测试工具</strong> 是一款基于 Python 开发的轻量级分布式网络监控套件。它通过 <strong>Master（主控）</strong> 与 <strong>Agent（代理）</strong> 的协同配合，实现了跨节点的带宽测试（iPerf3）、延迟监控（Ping）和路由追踪（Traceroute）可视化分析。</p>
<h3 id="核心亮点">核心亮点<a aria-hidden="true" href="#核心亮点">#</a></h3>
<table>
<thead>
<tr>
<th>功能</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td>🚀 <strong>一键安装更新</strong></td>
<td>单条命令完成安装和版本更新，自动检测差异并增量升级</td>
</tr>
<tr>
<td>📊 <strong>现代化仪表盘</strong></td>
<td>商业级 UI 设计，实时监控节点状态、三网延迟、流媒体解锁</td>
</tr>
<tr>
<td>⏰ <strong>定时任务调度</strong></td>
<td>周期性自动测试，生成带宽趋势图表和流量统计报告</td>
</tr>
<tr>
<td>🛤️ <strong>Metro 路由追踪</strong></td>
<td>地铁线路图风格可视化、AS 路径分析、路由变化智能告警</td>
</tr>
<tr>
<td>📈 <strong>Ping 趋势监控</strong></td>
<td>实时延迟波动监测，Sparkline 迷你图 + 趋势箭头直观展示</td>
</tr>
<tr>
<td>🎬 <strong>流媒体检测</strong></td>
<td>Netflix、Disney+、ChatGPT 等服务解锁状态自动识别</td>
</tr>
<tr>
<td>🤖 <strong>Telegram 通知</strong></td>
<td>路由变化、任务失败、节点离线等事件实时推送</td>
</tr>
<tr>
<td>🔐 <strong>IP 白名单保护</strong></td>
<td>防止 iPerf3 服务被恶意滥用</td>
</tr>
</tbody>
</table>
<hr></hr>
<h2 id="系统架构">系统架构<a aria-hidden="true" href="#系统架构">#</a></h2>
<p>项目采用解耦的分布式架构设计。主控节点负责数据持久化、任务调度与 Web 展示；代理节点则专注于执行网络探测任务并回传结果。</p>
<pre><code>flowchart TB
    subgraph MasterNode[&quot;Master Node (主控节点)&quot;]
        direction TB
        API[&quot;FastAPI Server&lt;br/&gt;REST API + WebSocket&quot;]
        DB[(&quot;PostgreSQL&lt;br/&gt;数据持久化&quot;)]
        Cache[(&quot;Redis&lt;br/&gt;缓存层&quot;)]
        Sched[&quot;APScheduler&lt;br/&gt;定时任务调度&quot;]
        Web[&quot;Dashboard UI&lt;br/&gt;现代化仪表盘&quot;]

        API &lt;--&gt; DB
        API &lt;--&gt; Cache
        Sched --&gt; API
        API --&gt; Web
    end

    subgraph AgentCluster[&quot;Agent Nodes (测试节点集群)&quot;]
        direction LR
        A1[&quot;Agent 1&lt;br/&gt;Flask + iPerf3 + MTR&quot;]
        A2[&quot;Agent 2&lt;br/&gt;Flask + iPerf3 + MTR&quot;]
        AN[&quot;Agent N&lt;br/&gt;Flask + iPerf3 + MTR&quot;]
    end

    API -- &quot;HTTP API&lt;br/&gt;(任务下发/状态同步)&quot; --&gt; A1
    API -- &quot;HTTP API&lt;br/&gt;(任务下发/状态同步)&quot; --&gt; A2
    API -- &quot;HTTP API&lt;br/&gt;(任务下发/状态同步)&quot; --&gt; AN

    A1 &lt;-- &quot;iPerf3 流量测试&lt;br/&gt;(TCP/UDP)&quot; --&gt; A2
    A2 &lt;-- &quot;iPerf3 流量测试&lt;br/&gt;(TCP/UDP)&quot; --&gt; AN
</code></pre>
<h3 id="组件技术栈">组件技术栈<a aria-hidden="true" href="#组件技术栈">#</a></h3>
<table>
<thead>
<tr>
<th>组件</th>
<th>技术栈</th>
<th>核心职责</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Master API</strong></td>
<td>FastAPI + PostgreSQL + Redis</td>
<td>REST API、Web 面板、调度器、缓存管理</td>
</tr>
<tr>
<td><strong>Agent</strong></td>
<td>Flask + iPerf3 + MTR</td>
<td>执行网络测试、路由追踪、流媒体检测、IP 过滤</td>
</tr>
<tr>
<td><strong>Scheduler</strong></td>
<td>APScheduler</td>
<td>定时 iPerf3 测试任务和 Traceroute 监控任务</td>
</tr>
</tbody>
</table>
<hr></hr>
<h2 id="环境准备">环境准备<a aria-hidden="true" href="#环境准备">#</a></h2>
<p>在开始部署前，请确保您的服务器满足以下条件：</p>
<h3 id="系统要求">系统要求<a aria-hidden="true" href="#系统要求">#</a></h3>
<ul>
<li><strong>操作系统</strong>：Ubuntu 20.04+、Debian 11+、CentOS 7+ 或其他主流 Linux 发行版</li>
<li><strong>硬件配置</strong>：至少 1 核 CPU / 512MB 内存（建议 2 核 / 1GB 以获得更好体验）</li>
<li><strong>基础依赖</strong>：已安装 Docker、Docker Compose 和 Git</li>
</ul>
<h3 id="网络端口">网络端口<a aria-hidden="true" href="#网络端口">#</a></h3>
<p>请确保以下端口在防火墙和安全组中已开放：</p>
<table>
<thead>
<tr>
<th>端口</th>
<th>协议</th>
<th>用途</th>
</tr>
</thead>
<tbody>
<tr>
<td>9000</td>
<td>TCP</td>
<td>Master API 接口</td>
</tr>
<tr>
<td>9100</td>
<td>TCP</td>
<td>Web 仪表盘面板</td>
</tr>
<tr>
<td>8000</td>
<td>TCP</td>
<td>Agent API 接口</td>
</tr>
<tr>
<td>62001</td>
<td>TCP/UDP</td>
<td>iPerf3 默认测试端口</td>
</tr>
</tbody>
</table>
<hr></hr>
<h2 id="快速部署">快速部署<a aria-hidden="true" href="#快速部署">#</a></h2>
<h3 id="安装主控节点-master">安装主控节点 (Master)<a aria-hidden="true" href="#安装主控节点-master">#</a></h3>
<p>主控节点包含数据库、缓存和管理后台，是整个系统的核心枢纽。</p>
<p><strong>步骤 1</strong>：克隆项目仓库</p>
<pre><code>git clone https://github.com/podcctv/iperf3-test-tools.git
cd iperf3-test-tools
</code></pre>
<p><strong>步骤 2</strong>：执行一键安装脚本</p>
<pre><code>bash ./update_iperf3_master.sh
</code></pre>
<p>安装过程中，脚本会自动完成以下工作：</p>
<ul>
<li>拉取并构建 Docker 镜像</li>
<li>初始化 PostgreSQL 数据库</li>
<li>生成随机管理员密码</li>
<li>启动所有服务容器</li>
</ul>
<p><strong>步骤 3</strong>：访问仪表盘</p>
<p>安装完成后，访问以下地址进入管理面板：</p>
<pre><code>http://&lt;服务器 IP&gt;:9100/web
</code></pre>
<div><div>温馨提示</div><div><p>首次启动时，系统会在终端输出自动生成的管理员密码，请妥善保存。如果忘记密码，可通过命令重置（见故障排查章节）。</p></div></div>
<h3 id="安装代理节点-agent">安装代理节点 (Agent)<a aria-hidden="true" href="#安装代理节点-agent">#</a></h3>
<p>代理节点只需运行一条脚本即可完成自动注册。</p>
<pre><code>curl -sSL https://raw.githubusercontent.com/podcctv/iperf3-test-tools/main/install_agent.sh | bash -s -- \
  --master-url http://&lt;Master-IP&gt;:9000 \
  --node-name &quot;香港 BGP 节点&quot;
</code></pre>
<p><strong>参数说明</strong>：</p>
<table>
<thead>
<tr>
<th>参数</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>--master-url</code></td>
<td>主控节点 API 地址（格式：<code>http://IP:9000</code>）</td>
</tr>
<tr>
<td><code>--node-name</code></td>
<td>节点显示名称（支持中文，建议包含地区信息）</td>
</tr>
</tbody>
</table>
<p>安装完成后，新节点会自动出现在主控仪表盘的节点列表中。</p>
<hr></hr>
<h2 id="核心功能详解">核心功能详解<a aria-hidden="true" href="#核心功能详解">#</a></h2>
<h3 id="节点监控仪表盘">节点监控仪表盘<a aria-hidden="true" href="#节点监控仪表盘">#</a></h3>
<p>仪表盘首页提供全方位的节点状态概览：</p>
<ul>
<li><strong>节点状态卡片</strong>：实时显示在线/离线状态，在线节点有呼吸动效</li>
<li><strong>三网延迟</strong>：同时监测电信、联通、移动三大运营商的连接延迟</li>
<li><strong>Ping 趋势图</strong>：通过 Sparkline 迷你图展示 24 小时延迟波动曲线</li>
<li><strong>流媒体检测徽章</strong>：自动识别 Netflix、Disney+、ChatGPT 等服务的解锁状态，并显示区域角标（如 HK / US / SG）</li>
</ul>
<h3 id="可视化路由追踪-metro-line">可视化路由追踪 (Metro-line)<a aria-hidden="true" href="#可视化路由追踪-metro-line">#</a></h3>
<p>该工具将复杂的 Traceroute 数据转化为类似"地铁线路图"的可视化界面：</p>
<pre><code>flowchart LR
    Start((&quot;源节点&lt;br/&gt;香港&quot;))
    H1[&quot;Hop 1&lt;br/&gt;10.0.0.1&lt;br/&gt;1ms&quot;]
    H2[&quot;Hop 2&lt;br/&gt;AS4134 电信&lt;br/&gt;15ms&quot;]
    H3[&quot;Hop 3&lt;br/&gt;AS9929 精品网&lt;br/&gt;35ms&quot;]
    H4[&quot;Hop 4&lt;br/&gt;AS4809 CN2&lt;br/&gt;48ms&quot;]
    End((&quot;目标节点&lt;br/&gt;上海&quot;))

    Start --&gt; H1 --&gt; H2 --&gt; H3 --&gt; H4 --&gt; End

    style H2 fill:#90EE90
    style H3 fill:#FFD700
    style H4 fill:#90EE90
</code></pre>
<p><strong>核心功能</strong>：</p>
<ul>
<li><strong>AS 路径分析</strong>：清晰展示数据包经过的自治系统（AS 编号及名称）</li>
<li><strong>延迟胶囊徽章</strong>：根据延迟自动着色（绿色 < 50ms / 黄色 < 150ms / 红色 > 150ms）</li>
<li><strong>ISP/IX 徽章识别</strong>：自动识别 CN2、9929、NTT 等优质线路</li>
<li><strong>智能变化告警</strong>：当路由节点发生变化时，系统通过 Telegram 推送高亮对比差异</li>
</ul>
<h3 id="定时任务调度">定时任务调度<a aria-hidden="true" href="#定时任务调度">#</a></h3>
<p>您可以设置周期性的 iPerf3 测试任务，系统将自动记录并分析：</p>
<ul>
<li><strong>上下行带宽</strong>：支持 TCP / UDP 双模式测试</li>
<li><strong>并行连接数</strong>：可配置同时建立的连接数量</li>
<li><strong>趋势图表</strong>：24 小时内的带宽波动曲线</li>
<li><strong>流量统计</strong>：展示节点日消耗流量，适合管理有流量配额的 VPS</li>
</ul>
<h3 id="telegram-智能通知">Telegram 智能通知<a aria-hidden="true" href="#telegram-智能通知">#</a></h3>
<p>配置 Telegram Bot 后，系统可自动推送以下事件：</p>
<ul>
<li>📡 路由变化告警（附带跳点差异对比）</li>
<li>⚠️ 定时任务执行失败通知</li>
<li>🔴 节点离线告警</li>
</ul>
<hr></hr>
<h2 id="配置参考">配置参考<a aria-hidden="true" href="#配置参考">#</a></h2>
<h3 id="环境变量">环境变量<a aria-hidden="true" href="#环境变量">#</a></h3>
<table>
<thead>
<tr>
<th>变量名</th>
<th>说明</th>
<th>默认值</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>DATABASE_URL</code></td>
<td>PostgreSQL 连接字符串</td>
<td><code>postgresql://iperf:iperf_pass@db:5432/iperf_db</code></td>
</tr>
<tr>
<td><code>REDIS_URL</code></td>
<td>Redis 连接字符串</td>
<td><code>redis://redis:6379</code></td>
</tr>
<tr>
<td><code>DASHBOARD_PASSWORD</code></td>
<td>仪表盘管理密码</td>
<td>首次启动自动生成</td>
</tr>
<tr>
<td><code>MASTER_API_PORT</code></td>
<td>Master API 端口</td>
<td><code>9000</code></td>
</tr>
<tr>
<td><code>MASTER_WEB_PORT</code></td>
<td>Web 面板端口</td>
<td><code>9100</code></td>
</tr>
</tbody>
</table>
<h3 id="docker-compose-示例">Docker Compose 示例<a aria-hidden="true" href="#docker-compose-示例">#</a></h3>
<pre><code># docker-compose.yml
services:
  master-api:
    build: ./master-api
    ports:
      - &quot;9000:9000&quot;
    depends_on:
      - db
      - redis
    environment:
      - DATABASE_URL=postgresql://iperf:iperf_pass@db:5432/iperf_db
      - REDIS_URL=redis://redis:6379

  db:
    image: postgres:15-alpine
    environment:
      POSTGRES_USER: iperf
      POSTGRES_PASSWORD: iperf_pass
      POSTGRES_DB: iperf_db

  redis:
    image: redis:7-alpine
</code></pre>
<hr></hr>
<h2 id="api-接口一览">API 接口一览<a aria-hidden="true" href="#api-接口一览">#</a></h2>
<h3 id="核心接口">核心接口<a aria-hidden="true" href="#核心接口">#</a></h3>
<table>
<thead>
<tr>
<th>方法</th>
<th>路径</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td>GET</td>
<td><code>/nodes</code></td>
<td>获取所有已注册节点</td>
</tr>
<tr>
<td>POST</td>
<td><code>/nodes</code></td>
<td>注册新节点</td>
</tr>
<tr>
<td>GET</td>
<td><code>/nodes/{id}/ping-history</code></td>
<td>获取节点 Ping 历史数据</td>
</tr>
<tr>
<td>POST</td>
<td><code>/tests</code></td>
<td>执行即时测试任务</td>
</tr>
<tr>
<td>GET/POST</td>
<td><code>/schedules</code></td>
<td>定时任务 CRUD 管理</td>
</tr>
</tbody>
</table>
<h3 id="路由追踪接口">路由追踪接口<a aria-hidden="true" href="#路由追踪接口">#</a></h3>
<table>
<thead>
<tr>
<th>方法</th>
<th>路径</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td>POST</td>
<td><code>/api/trace/run</code></td>
<td>执行即时 Traceroute</td>
</tr>
<tr>
<td>GET</td>
<td><code>/api/trace/schedules</code></td>
<td>获取追踪定时任务列表</td>
</tr>
<tr>
<td>GET</td>
<td><code>/api/trace/results</code></td>
<td>获取历史追踪结果</td>
</tr>
</tbody>
</table>
<h3 id="telegram-配置接口">Telegram 配置接口<a aria-hidden="true" href="#telegram-配置接口">#</a></h3>
<table>
<thead>
<tr>
<th>方法</th>
<th>路径</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td>GET</td>
<td><code>/admin/telegram</code></td>
<td>获取当前 Telegram 配置</td>
</tr>
<tr>
<td>POST</td>
<td><code>/admin/telegram</code></td>
<td>保存 Telegram Bot 配置</td>
</tr>
<tr>
<td>POST</td>
<td><code>/admin/telegram/test</code></td>
<td>发送测试消息验证配置</td>
</tr>
</tbody>
</table>
<div><div>API 文档</div><div><p>完整的 API 交互式文档可访问 <code>http://&lt;服务器 IP&gt;:9000/docs</code> 查看（基于 Swagger UI）。
</p></div></div>
<hr></hr>
<h2 id="更新与维护">更新与维护<a aria-hidden="true" href="#更新与维护">#</a></h2>
<h3 id="常规版本升级">常规版本升级<a aria-hidden="true" href="#常规版本升级">#</a></h3>
<p>在 Master 节点执行以下命令进行版本升级：</p>
<pre><code>cd iperf3-test-tools
git pull origin main
docker compose build --no-cache master-api
docker compose up -d
</code></pre>
<h3 id="agent-自动更新">Agent 自动更新<a aria-hidden="true" href="#agent-自动更新">#</a></h3>
<p>Agent 节点支持 Watchdog 自动更新机制。运行以下脚本开启自动同步：</p>
<pre><code>curl -sSL https://raw.githubusercontent.com/podcctv/iperf3-test-tools/main/setup-agent-autoupdate.sh | sudo bash
</code></pre>
<p>启用后，当 Master 版本升级时，Agent 会自动检测并完成更新。</p>
<hr></hr>
<h2 id="故障排查">故障排查<a aria-hidden="true" href="#故障排查">#</a></h2>
<h3 id="常见问题速查表">常见问题速查表<a aria-hidden="true" href="#常见问题速查表">#</a></h3>
<table>
<thead>
<tr>
<th align="left">问题现象</th>
<th align="left">可能原因</th>
<th align="left">解决方法</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left"><strong>容器无法启动</strong></td>
<td align="left">端口冲突或依赖服务未就绪</td>
<td align="left">执行 <code>docker logs iperf3-test-tools-master-api-1</code> 查看日志</td>
</tr>
<tr>
<td align="left"><strong>Agent 显示离线</strong></td>
<td align="left">防火墙拦截 8000 端口</td>
<td align="left">执行 <code>ufw allow 8000/tcp</code> 并验证 <code>curl &lt;Agent-IP&gt;:8000/health</code></td>
</tr>
<tr>
<td align="left"><strong>iPerf3 测试失败</strong></td>
<td align="left">62001 端口未开放</td>
<td align="left">在安全组中开放 TCP/UDP 62001 端口</td>
</tr>
<tr>
<td align="left"><strong>忘记面板密码</strong></td>
<td align="left">初始密码未保存</td>
<td align="left">执行密码重置命令（见下方）</td>
</tr>
</tbody>
</table>
<h3 id="密码重置命令">密码重置命令<a aria-hidden="true" href="#密码重置命令">#</a></h3>
<pre><code>docker compose exec master-api python -m app.auth --set-password &#39;YourNewPassword&#39; --force
</code></pre>
<h3 id="强制重建容器">强制重建容器<a aria-hidden="true" href="#强制重建容器">#</a></h3>
<pre><code>docker compose down
docker compose up -d --build --force-recreate
</code></pre>
<hr></hr>
<h2 id="结语">结语<a aria-hidden="true" href="#结语">#</a></h2>
<p>iPerf3 分布式网络测试工具通过极简的部署流程和强大的可视化分析能力，为多机房网络性能管理提供了高效的解决方案。无论是日常的带宽监控、路由追踪分析，还是跨节点的网络质量对比，该工具都能满足您的需求。</p>
<p>如有任何问题或建议，欢迎前往 <a href="https://github.com/podcctv/iperf3-test-tools" target="_blank" rel="noopener noreferrer">GitHub 仓库</a> 提交 Issue 或参与贡献！</p>
<hr></hr>
<h2 id="参考链接">参考链接<a aria-hidden="true" href="#参考链接">#</a></h2>
<ul>
<li><a href="https://github.com/podcctv/iperf3-test-tools" target="_blank" rel="noopener noreferrer">GitHub 仓库</a></li>
<li><a href="http://your-ip:9000/docs" target="_blank" rel="noopener noreferrer">在线 API 文档</a></li>
<li><a href="https://github.com/podcctv/iperf3-test-tools/issues" target="_blank" rel="noopener noreferrer">问题反馈</a></li>
</ul>]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[PVE 安装切 KVM 虚拟机以及基于 NAT 实现独立双栈 IP]]></title>
        <id>21</id>
        <link href="https://docs.vps.town/guide/proxmox-pve-installation-kvm-vm-setup-nat-and-dualstack-ipv4-ipv6"/>
        <updated>2025-12-07T20:45:00.000Z</updated>
        <summary type="html"><![CDATA[本文提供从零搭建 PVE 虚拟化环境的完整教程。内容涵盖利用 DD 脚本重装 Debian 12、一键部署 PVE 及配置 NAT 或独立 IP 网络。详细讲解了 KVM 虚拟机创建、Cloud-Init 初始化、独立 IPv6 设置及端口转发技巧，助你轻松实现 VPS 切分与管理。]]></summary>
        <content type="html"><![CDATA[<h1 id="pve-安装切-kvm-虚拟机以及基于-nat-实现独立双栈-ip">PVE 安装切 KVM 虚拟机以及基于 NAT 实现独立双栈 IP<a aria-hidden="true" href="#pve-安装切-kvm-虚拟机以及基于-nat-实现独立双栈-ip">#</a></h1>
<div><div>温馨提示</div><div>
<p>本文由用户 <code>灰机喵喵喵</code> 撰写，并已加入 <code>VPS.Town 优秀原创文章激励计划</code>，未经允许不得转载。</p>
<p>本文已通过 <a href="/kb/community.html">VPS.Town 社区文章投稿及奖励规则 (试行稿)</a> 格式审核，投稿内容真实性由原作者负责。</p>
</div></div>
<details><summary>📖 本文目录</summary><div>

</div></details>
<h2 id="准备">准备<a aria-hidden="true" href="#准备">#</a></h2>
<ul>
<li>大鸡一台</li>
<li>一个人</li>
<li>一双手</li>
<li>一键盘</li>
</ul>
<h2 id="安装-pve">安装 PVE<a aria-hidden="true" href="#安装-pve">#</a></h2>
<h3 id="dd-重装系统">DD 重装系统<a aria-hidden="true" href="#dd-重装系统">#</a></h3>
<p>首先，进入 SSH，重装一下系统，这里使用 <a href="https://github.com/bin456789/reinstall" target="_blank" rel="noopener noreferrer">bin456789/reinstall</a> 的 DD 重装脚本。</p>
<pre><code>curl -O https://raw.githubusercontent.com/bin456789/reinstall/main/reinstall.sh || wget -O ${_##*/} $_
bash reinstall.sh debian 12 --password 这里填写你的root密码 --ssh-key &quot;这里填写你的ssh公钥ID (没有可不填)&quot;
</code></pre>
<div><div>注意</div><div>
<p>安装<code>PVE8</code>必须是<code>Debian12</code>，如果要装<code>PVE9</code>，则需要<code>Debian13</code>。</p>
</div></div>
<h3 id="安装基本包">安装基本包<a aria-hidden="true" href="#安装基本包">#</a></h3>
<pre><code>apt update
apt install curl sudo wget -y
</code></pre>
<h3 id="安装-pve-1">安装 PVE<a aria-hidden="true" href="#安装-pve-1">#</a></h3>
<ol>
<li>使用<code>oneclickvirt</code>的<code>install_pve.sh</code>一键安装 PVE 脚本</li>
</ol>
<pre><code>curl -L https://raw.githubusercontent.com/oneclickvirt/pve/main/scripts/install_pve.sh -o install_pve.sh &amp;&amp; chmod +x install_pve.sh &amp;&amp; bash install_pve.sh
</code></pre>
<ol start="2">
<li>安装直到显示以下对话：</li>
</ol>
<pre><code>Please execute reboot to reboot the system and then execute this script again
Please wait for at least 20 seconds without automatically rebooting the system before executing this script.
请执行 reboot 重启系统后再次执行本脚本，再次使用SSH登录后请等待至少20秒未自动重启系统再执行本脚本
</code></pre>
<ol start="3">
<li>如文本所示，这时候只需要<code>reboot</code>重启，然后再次连接等待 20s 后再执行一次脚本</li>
</ol>
<pre><code>bash install_pve.sh
</code></pre>
<ol start="4">
<li>然后会要求输入新主机名字：</li>
</ol>
<pre><code>Please enter a new host name (can only contain English letters and numbers, not pure numbers or special characters, enter the default pve):
请输入新的主机名(只能包含英文字母和数字,不能是纯数字或特殊字符,回车默认为pve):
</code></pre>
<p>不修改默认回车就好。
然后等待安装完成。</p>
<ol start="5">
<li>当显示如下信息则已经安装完成：</li>
</ol>
<pre><code>Running kernel: pve-manager/8.4.14/b502d23c55afcba1 (running kernel: 6.1.0-41-cloud-amd64)

Installation complete, please open HTTPS web page https://123.123.123.123:8006/
The username and password are the username and password used by the server (e.g. root and root user&#39;s password)
If the login is correct please do not rush to reboot the system, go to execute the commands of the pre-configured environment and then reboot the system
If there is a problem logging in the web side is not up(Referring to the page reporting an error, it keeps loading or is normal), wait 10 seconds and restart the system to see

安装完毕，请打开HTTPS网页 https://123.123.123.123:8006/
用户名、密码就是服务器所使用的用户名、密码(如root和root用户的密码)

如果登录无误请不要急着重启系统，去执行预配置环境的命令后再重启系统
如果登录有问题web端没起来(指的是网页报错，一直在加载还是正常的)，等待10秒后重启系统看看
</code></pre>
<p>这时候就去访问信息中的链接地址就可以访问到 PVE 后台了，用户名是<code>root</code>，密码则是你<code>ssh</code>的<code>root</code>密码。</p>
<h3 id="配置-pve-宿主机的网络">配置 PVE 宿主机的网络<a aria-hidden="true" href="#配置-pve-宿主机的网络">#</a></h3>
<blockquote>
<p>[!警告]
确定能够进入 PVE 之后，再进行此操作。</p>
</blockquote>
<p>使用一键脚本进行配置：</p>
<pre><code>bash &lt;(wget -qO- --no-check-certificate https://raw.githubusercontent.com/oneclickvirt/pve/main/scripts/build_nat_network.sh)
</code></pre>
<p>然后就会自动创建<code>brige</code>网络接口。
<strong><code>vmbr0</code>负责 v4 的独立 IP，<code>vmbr1</code>负责复杂 v4/v6 的 NAT，<code>vmbr2</code>负责 v6 的独立 IP</strong></p>
<div><div>注意</div><div>
<p>如果宿主机自带的<code>IPV6</code>是<code>/64</code>的，就不会有<code>vmbr2</code>。</p>
<p>因为有一些杜甫是直接给多个<code>IPV6</code>的<code>/64</code>子段（VPS.Town 的 A4 就是），这时候就直接用<code>vmbr0</code>去分即可。</p>
</div></div>
<h2 id="分-kvm-虚拟机">分 KVM 虚拟机<a aria-hidden="true" href="#分-kvm-虚拟机">#</a></h2>
<ol>
<li>首先，先下镜像，这里直接用 Debian 的官方镜像，<a href="https://cdimage.debian.org/cdimage/cloud/" target="_blank" rel="noopener noreferrer">传送门</a>
这里使用<a href="https://cdimage.debian.org/cdimage/cloud/bookworm/latest/debian-12-genericcloud-amd64.qcow2" target="_blank" rel="noopener noreferrer">debian-12-genericcloud-amd64.qcow2</a>作为小鸡的系统。
先下载到 PVE 上：</li>
</ol>
<pre><code>wget https://cdimage.debian.org/cdimage/cloud/bookworm/latest/debian-12-genericcloud-amd64.qcow2
</code></pre>
<ol start="2">
<li>接下来去创建虚拟机，填写虚拟机名称，然后<code>操作系统</code>选择<code>不使用任何介质</code>：
<img src="/assets/images/proxmox-pve-installation-kvm-vm-setup-nat-and-dualstack-ipv4-ipv6/image-1.png" alt="操作系统设置"></img></li>
</ol>
<p><code>系统</code>默认即可</p>
<p><code>磁盘</code> 删除掉默认的硬盘，不需要添加硬盘：
<img src="/assets/images/proxmox-pve-installation-kvm-vm-setup-nat-and-dualstack-ipv4-ipv6/image-2.png" alt="硬盘设置"></img></p>
<p><code>CPU</code>根据需要选择，<code>类别</code>如需要高性能可选择<code>host</code>否则默认即可：
<img src="/assets/images/proxmox-pve-installation-kvm-vm-setup-nat-and-dualstack-ipv4-ipv6/image-3.png" alt="CPU设置"></img></p>
<p><code>内存</code>根据需要给就行：
<img src="/assets/images/proxmox-pve-installation-kvm-vm-setup-nat-and-dualstack-ipv4-ipv6/image-4.png" alt="内存设置"></img></p>
<p><code>网络</code>如果有多个独立 IPV4 选择<code>vmbr0</code>，如果使用 NAT，选择<code>vmbr1</code>：
<img src="/assets/images/proxmox-pve-installation-kvm-vm-setup-nat-and-dualstack-ipv4-ipv6/image-5.png" alt="网络设置"></img></p>
<div><div>注意</div><div>
<p>防火墙需要关闭，不然 KVM 虚拟机可能会无法访问公网。如需开启防火墙需要去主机防火墙放行<code>in</code> 来源 IP 内网网段规则。
</p></div></div>
<p>然后创建即可。</p>
<ol start="3">
<li>然后进入 PVE 控制台，将镜像导入到该虚拟机中：</li>
</ol>
<pre><code>qm disk import 100 debian-12-genericcloud-amd64.qcow2 local --format qcow2
</code></pre>
<p><code>100</code>是虚拟机 ID <code>debian-12-genericcloud-amd64.qcow2</code>是镜像 <code>local</code>是本地存储</p>
<ol start="4">
<li>
<p>导入之后，进入虚拟机的<code>硬件</code>，找到<code>未使用的硬盘0</code>，双击或者点编辑，然后添加硬盘，<code>总线/设备</code>可选<code>VirtIO Block</code>：
<img src="/assets/images/proxmox-pve-installation-kvm-vm-setup-nat-and-dualstack-ipv4-ipv6/image-6.png" alt="添加硬盘"></img></p>
</li>
<li>
<p>然后再选择硬盘，然后点击<code>磁盘操作</code>-<code>调整大小</code>，输入要增大硬盘的大小：
<img src="/assets/images/proxmox-pve-installation-kvm-vm-setup-nat-and-dualstack-ipv4-ipv6/image-7.png" alt="调整硬盘大小"></img></p>
</li>
<li>
<p>然后再点<code>选项</code>，双击<code>引导顺序</code>，将<code>virtio0</code>硬盘启用，然后拉到第一位：
<img src="/assets/images/proxmox-pve-installation-kvm-vm-setup-nat-and-dualstack-ipv4-ipv6/image-8.png" alt="设置引导顺序"></img></p>
</li>
<li>
<p>再回到<code>硬件</code>，点击<code>添加</code>，选择<code>Cloudinit 设备</code>，然后添加：
<img src="/assets/images/proxmox-pve-installation-kvm-vm-setup-nat-and-dualstack-ipv4-ipv6/image-9.png" alt="添加CloudInit"></img></p>
</li>
<li>
<p>然后点击<code>Cloud-Init</code>，然后可以设置<code>用户</code>、<code>密码</code>、<code>SSH公钥</code>、<code>DNS服务器</code>、<code>IP设置</code>
按需设置，这里还需要讲清楚<code>IP设置</code>，NAT4 需要为虚拟机设置固定的内网 IP：
<img src="/assets/images/proxmox-pve-installation-kvm-vm-setup-nat-and-dualstack-ipv4-ipv6/image-10.png" alt="设置NAT4"></img></p>
</li>
</ol>
<p>这里因为我要给虚拟机设置独立 IPV6，就不需要设置 NAT6 了，如果需要设置 NAT6，就给它设置 NAT 的子网段，例如：
<img src="/assets/images/proxmox-pve-installation-kvm-vm-setup-nat-and-dualstack-ipv4-ipv6/image-11.png" alt="设置NAT6"></img></p>
<ol start="9">
<li>
<p>然后再回到<code>硬件</code>，添加<code>串行接口</code>：
<img src="/assets/images/proxmox-pve-installation-kvm-vm-setup-nat-and-dualstack-ipv4-ipv6/image-12.png" alt="添加串行端口"></img></p>
</li>
<li>
<p>然后选中<code>显示</code>，显卡换成<code>串行终端 0</code>：
<img src="/assets/images/proxmox-pve-installation-kvm-vm-setup-nat-and-dualstack-ipv4-ipv6/image-13.png" alt="更改显示端口"></img></p>
</li>
<li>
<p>然后就可以正常开机，享受刚切的小鸡鸡了。</p>
</li>
</ol>
<h2 id="给-kvm-虚拟机添加独立-ipv6">给 KVM 虚拟机添加独立 IPV6<a aria-hidden="true" href="#给-kvm-虚拟机添加独立-ipv6">#</a></h2>
<ol>
<li>在虚拟机<code>硬件</code>中点击添加<code>网络设备</code>：
<img src="/assets/images/proxmox-pve-installation-kvm-vm-setup-nat-and-dualstack-ipv4-ipv6/image-14.png" alt="添加网络设备"></img></li>
</ol>
<div><div>注意</div><div><p><code>桥接</code>选择宿主机的<code>vmbr0</code>或者<code>vmbr2</code>，具体看宿主机的 IPV6 分配情况。
</p></div></div>
<ol start="2">
<li>
<p>然后回到<code>Cloud-Init</code>中，编辑<code>IP配置(net1)</code>，设置静态的 IPV6：
<img src="/assets/images/proxmox-pve-installation-kvm-vm-setup-nat-and-dualstack-ipv4-ipv6/image-15.png" alt="设置静态IPV6"></img></p>
</li>
<li>
<p>进入虚拟机，使用<code>ip.sb</code>测试 IPV4 和 IPV6 是否正常：</p>
</li>
</ol>
<pre><code>curl ip.sb -4
curl ip.sb -6
</code></pre>
<p><img src="/assets/images/proxmox-pve-installation-kvm-vm-setup-nat-and-dualstack-ipv4-ipv6/image-16.png" alt="测试IPV4和IPV6"></img></p>
<h2 id="开启-root-密码登录">开启 ROOT 密码登录<a aria-hidden="true" href="#开启-root-密码登录">#</a></h2>
<ol>
<li>
<p>进入虚拟机的<code>控制台</code>，然后输入用户名和密码进行登录</p>
</li>
<li>
<p>编辑<code>/etc/ssh/sshd_config</code>文件</p>
</li>
</ol>
<pre><code>nano /etc/ssh/sshd_config
</code></pre>
<p>找到<code>PermitRootLogin</code>和<code>PasswordAuthentication</code>，去掉注释改成：</p>
<pre><code>PermitRootLogin yes
PasswordAuthentication yes
</code></pre>
<p>然后按<code>Ctrl+X</code>，按 Y 确认然后回车保存，然后再重启 ssh 服务：</p>
<pre><code>systemctl restart sshd
</code></pre>
<h2 id="nat-端口转发">NAT 端口转发<a aria-hidden="true" href="#nat-端口转发">#</a></h2>
<ol>
<li>使用<code>iptables</code>宿主机上的端口转发到虚拟机的端口上</li>
</ol>
<pre><code>iptables -t nat -A PREROUTING -i vmbr0 -p tcp --dport 10000 -j DNAT --to-destination 172.16.1.2:22
</code></pre>
<p><code>dport</code> 宿主机端口 <code>to-destination</code> 虚拟机地址端口</p>
<ol start="2">
<li>永久保存方法：
编辑<code>/etc/network/interfaces</code>
在<code>iface vmbr1 inet static</code>后面添加上</li>
</ol>
<pre><code>post-up iptables -t nat -A PREROUTING -i vmbr0 -p tcp --dport 10000 -j DNAT --to-destination 172.16.1.2:22
post-dodwn iptables -t nat -D PREROUTING -i vmbr0 -p tcp --dport 10000 -j DNAT --to-destination 172.16.1.2:22
</code></pre>
<p>保存即可，然后重启网络：</p>
<pre><code>systemctl restart networking
</code></pre>]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[使用 Squashfs 进行服务器数据备份——从为什么，到怎么做]]></title>
        <id>22</id>
        <link href="https://docs.vps.town/guide/squashfs-server-backup-guide"/>
        <updated>2025-11-03T15:00:00.000Z</updated>
        <summary type="html"><![CDATA[如何使用 Squashfs 工具，来实现服务器数据的高效归档与备份。]]></summary>
        <content type="html"><![CDATA[<div><div>温馨提示</div><div>
<p>本文由用户 <code>abc1763613206</code> 撰写，并已加入 <code>VPS.Town 优秀原创文章激励计划</code>，未经允许不得转载。</p>
<p>本文已通过 <a href="/kb/community.html">VPS.Town 社区文章投稿及奖励规则 (试行稿)</a> 格式审核，投稿内容真实性由原作者负责。</p>
</div></div>
<details><summary>📖 本文目录</summary><div>

</div></details>
<h1 id="使用-squashfs-进行服务器数据备份从为什么到怎么做">使用 Squashfs 进行服务器数据备份——从为什么，到怎么做<a aria-hidden="true" href="#使用-squashfs-进行服务器数据备份从为什么到怎么做">#</a></h1>
<p><strong>数据无价。</strong> 在现代服务器运维中，数据备份是每一位用户的必修课。如果服务器上承载着不可复现的珍贵数据，那么即便只有万分之一的可能，您也必须为天灾、人祸、乃至「物理上云」的最坏情况做好准备。</p>
<p>而无论是执行备份还是服务迁移，选择一种高效的归档格式都至关重要。与使用 rsync 等工具处理海量的零散文件相比，单个归档文件在管理和传输上显然更为便捷高效。<br></br>
本文将详细介绍如何使用 Squashfs 工具，来实现服务器数据的高效归档与备份。</p>
<h2 id="为什么选择-squashfs">为什么选择 Squashfs？<a aria-hidden="true" href="#为什么选择-squashfs">#</a></h2>
<p>Squashfs 可能对于 Linux 高手来说已经并不陌生，但是对于大多数平常在用 Windows 的用户而言，当提到压缩与归档格式的时候，第一反应往往是 zip、7z 或者 zip 这一类常见格式。因此在正式开工之前，请允许我使用比较大的篇幅来介绍一下，我们为什么要选择 Squashfs 格式。</p>
<p>我们首先理清一下我们的需求：</p>
<ul>
<li>我们想要对服务器的数据进行备份，而且在我们需要的时候<strong>原样恢复</strong>回去。</li>
<li>我们希望备份文件尽可能小，以节省存储空间和传输时间。</li>
<li>我们希望备份和恢复的过程尽可能简单高效。</li>
<li>虽然对于备份数据而言一般都是冷备份（除非真的发生故障，否则一般都不会去访问），但有时又想从里面拿出一点东西来用。</li>
</ul>
<p>如果你认为如上需求和你的备份理念相符，那么恭喜你 —— Squashfs 很可能是一个非常适合你的选择。</p>
<p>Squashfs 是一款专为 Linux 设计，随 Linux 而生的只读压缩文件系统。它于 Linux 2.6.29 内核中被正式引入主线，并在 Linux 4.14 之后进一步完善成现在的样子。现在这个格式已经被广泛应用于各种 Linux 发行版的 Live CD、嵌入式系统（如 OpenWrt）以及容器镜像中。<br></br>
Squashfs 之所以适合备份，有以下几个原因：</p>
<ul>
<li><strong>高压缩比</strong>：Squashfs 支持 Gzip、LZMA、LZO、LZ4、XZ 和 Zstd 等多种压缩算法，可以根据需求选择合适的压缩方式，从而在压缩率和速度之间取得平衡。除此之外，Squashfs 块级压缩的特性还方便了重复数据的去重，从而进一步提升压缩效果。</li>
<li><strong>只读特性</strong>：作为只读文件系统（可以通过 OverlayFS 等方式来实现读写，但是对于备份数据而言超纲了），Squashfs 可以保证备份数据的一致性。而且尤其需要强调的是，Squashfs 能够做到在创建归档文件的同时<strong>完整保留文件的元数据（包括权限、时间戳、符号链接等）</strong>，最大限度保持原样，这对于服务器数据的备份和恢复尤为重要。</li>
<li><strong>随机访问</strong>：Squashfs <strong>支持通过 mount 挂载的方式直接随机访问文件</strong>，这意味着即使在一个大型的归档文件中，也可以快速定位并提取单个文件，而不需要解压整个归档。</li>
<li><strong>支持广泛</strong>：作为随 Linux 内核成长的文件系统，Squashfs 在 Linux 中能够做到<strong>不额外安装任何软件即可通过内核挂载读取数据</strong>，而在 Windows 等平台上，你也可以通过第三方工具（如 7-Zip 及其衍生）来访问 Squashfs 文件。</li>
</ul>
<p>接下来我们将 Squashfs 与常见的归档格式进行对比：</p>
<ul>
<li><code>tar</code> 和他的动物朋友们：<code>tar</code> 本身属于流式归档，并不具备压缩功能。通常需要配合 <code>gzip</code>、<code>bzip2</code>、<code>xz</code> 等压缩工具使用。但是压缩后的文件格式<strong>不支持随机访问</strong>，需要解压整个归档才能访问其中的文件。</li>
<li><code>7z</code> / <code>zip</code> / <code>rar</code>：这三个都是 Windows 上非常流行的压缩格式，但是和 POSIX 系统下的 Linux 生态相比，显得相当水土不服——这些格式都无法完整保留 Linux 文件的元数据（尤其是权限和链接），这对于服务器核心数据的备份来说是不可接受的。此外，可以认为这些格式的随机访问能力和他们的数据去重能力不可兼得：标准 ZIP 格式不支持数据去重，而 7z 和 RAR 格式启用了固实压缩后就失去了随机访问能力。</li>
</ul>
<h2 id="创建归档">创建归档<a aria-hidden="true" href="#创建归档">#</a></h2>
<p>虽然 Squashfs 可以在现代 Linux 内核中直接挂载使用，但是创建 Squashfs 归档文件则需要借助 <code>mksquashfs</code> 工具。这个工具通常包含在 <code>squashfs-tools</code> 软件包中，可以通过包管理器安装：</p>
<pre><code>sudo apt update &amp;&amp; sudo apt install squashfs-tools
</code></pre>
<p><code>mksquashfs</code> 的基本用法非常简单，你如果想快速创建一个 Squashfs 归档文件，只需要指定源目录和目标文件名即可：</p>
<pre><code># 备份 /etc 目录到 etc.squashfs
mksquashfs /etc etc.squashfs
</code></pre>
<p>通过查看 <a href="https://manpages.debian.org/trixie/squashfs-tools/mksquashfs.1.en.html" target="_blank" rel="noopener noreferrer">manpage</a> ，我们可以知道：在 Debian 13 中如果不加任何参数，<code>mksquashfs</code> 会使用 <code>gzip</code> 进行 9 级压缩，默认分块大小为 128KB，并且保留所有文件扩展元数据。</p>
<p>在归档完成后，<code>mksquashfs</code> 会输出一大串信息，详细给出包括重复文件数、符号链接与硬连接数、块大小、乃至 <code>uid</code> 和 <code>gid</code> 个数等信息，十分详细：
<img src="/assets/images/squashfs-server-backup-guide/image-20251104003449907.png" alt="image-20251104003449907"></img></p>
<p>而对于这里的冷备份需求，我们可以牺牲一点时间来换取更高的压缩比，你可以在如上的 <a href="https://manpages.debian.org/trixie/squashfs-tools/mksquashfs.1.en.html" target="_blank" rel="noopener noreferrer">manpage</a> 中找到更多可选参数（注意对于一些老 Linux 版本，通常不支持使用一些比较新的压缩算法）。<br></br>
通常而言，对于归档需求，我会建议换成比 <code>gzip</code> 压缩表现更好的 <code>zstd</code> 算法，把压缩比拉到最高的 22，然后把块大小调大到 <code>mksquashfs</code> 支持的最大值 <code>1M</code>（压缩表现更好，但是会牺牲一些随机读取性能），同时显性要求保留元数据，反映在命令上就是这样：</p>
<pre><code>mksquashfs /etc etc.squashfs -xattrs -comp zstd -Xcompression-level 22 -b 1M
</code></pre>
<p>特别的，如果你想要排除掉目录里的某些文件或子目录，可以使用 <code>-e</code> 参数指定排除列表。例如，下面的命令会排除 <code>/etc</code> 目录下的 <code>shadow</code> 和 <code>passwd</code> 文件：</p>
<pre><code>mksquashfs /etc etc.squashfs -xattrs -comp zstd -Xcompression-level 22 -b 1M -e shadow passwd
</code></pre>
<h2 id="解压与管理归档">解压与管理归档<a aria-hidden="true" href="#解压与管理归档">#</a></h2>
<p>创建好的 Squashfs 归档文件可以通过多种方式进行解压和管理。如果你只是想要对归档文件进行管理，最常见的方法是使用 <code>unsquashfs</code> 工具，它同样包含在 <code>squashfs-tools</code> 软件包中。</p>
<p>你同样可以在 <a href="https://manpages.debian.org/trixie/squashfs-tools/unsquashfs.1.en.html" target="_blank" rel="noopener noreferrer">manpage</a> 中找到 <code>unsquashfs</code> 的使用说明，如下仅介绍一些常见的用法：</p>
<h3 id="列出归档内容不解压">列出归档内容（不解压）<a aria-hidden="true" href="#列出归档内容不解压">#</a></h3>
<p>使用 <code>-l</code> (list) 选项：</p>
<pre><code>unsquashfs -l etc.squashfs
</code></pre>
<p>它会像 <code>ls -R</code> 命令一样，递归地列出镜像中的所有文件、权限和目录结构。</p>
<p><img src="/assets/images/squashfs-server-backup-guide/image-20251104005754057.png" alt="image-20251104005754057"></img></p>
<p>如果你想像 <code>ls -lR</code> 一样显示文件权限与所有者，请使用 <code>-ll</code> 选项：</p>
<p><img src="/assets/images/squashfs-server-backup-guide/image-20251104005900938.png" alt="image-20251104005900938"></img></p>
<p>你可以在后面追加路径参数，来限制只列出某个子目录下的内容，例如：</p>
<pre><code>unsquashfs -ll etc.squashfs alternatives/
</code></pre>
<h3 id="解压归档内容">解压归档内容<a aria-hidden="true" href="#解压归档内容">#</a></h3>
<p>使用 <code>-d</code> (destination) 选项指定解压目录：</p>
<pre><code>mkdir ./etc_backup
unsquashfs -d ./etc_backup etc.squashfs
</code></pre>
<p><img src="/assets/images/squashfs-server-backup-guide/image-20251104010210898.png" alt="image-20251104010210898"></img></p>
<p>你也可以只解压归档中的某个子目录或文件，例如：</p>
<pre><code>unsquashfs -d ./alternatives_backup etc.squashfs alternatives/
</code></pre>
<p><img src="/assets/images/squashfs-server-backup-guide/image-20251104010305910.png" alt="image-20251104010305910"></img></p>
<h3 id="直接挂载">直接挂载<a aria-hidden="true" href="#直接挂载">#</a></h3>
<p>解压并不是 SquashFS 的主要用法。它真正的强大之处在于<strong>直接挂载</strong>，无需解压即可访问。
你可以使用 <code>mount</code> 命令将 Squashfs 归档文件挂载到一个目录中：</p>
<pre><code>mkdir /mnt/etc
sudo mount -o loop etc.squashfs /mnt/etc
</code></pre>
<p><img src="/assets/images/squashfs-server-backup-guide/image-20251104010457857.png" alt="image-20251104010457857"></img></p>
<p>现在，你可以像访问普通目录一样访问里面的文件，但<strong>所有文件都是只读的</strong>：</p>
<p><img src="/assets/images/squashfs-server-backup-guide/image-20251104010611062.png" alt="image-20251104010611062"></img></p>
<p>在你完成访问后，记得卸载挂载点：</p>
<pre><code>sudo umount /mnt/etc
</code></pre>
<h3 id="在其他系统上访问">在其他系统上访问<a aria-hidden="true" href="#在其他系统上访问">#</a></h3>
<p>如上所述，你可以使用 7-Zip 等第三方工具在 Windows 上访问 Squashfs 文件。他可能并没有被加入默认文件关联中，所以你需要手动打开 7-Zip，然后通过它的界面打开 Squashfs 文件进行浏览和提取。在此不再赘述。</p>]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[如何解决VPS.Town A3 VDS  PVE8/9（Proxmox VE 8/9）上虚拟机无法正常开机问题]]></title>
        <id>11</id>
        <link href="https://docs.vps.town/guide/how-to-resolve-virtual-machine-failure-on-vpstown-a3-vds-pve89-proxmox-ve-89"/>
        <updated>2025-10-15T05:00:00.000Z</updated>
        <summary type="html"><![CDATA[如何在VPS.Town A3 VDS  PVE8/9（Proxmox VE 8/9）上解决虚拟机无法正常开机问题]]></summary>
        <content type="html"><![CDATA[<h1 id="如何解决vpstown-a3-vds--pve89proxmox-ve-89上虚拟机无法正常开机问题">如何解决VPS.Town A3 VDS  PVE8/9（Proxmox VE 8/9）上虚拟机无法正常开机问题<a aria-hidden="true" href="#如何解决vpstown-a3-vds--pve89proxmox-ve-89上虚拟机无法正常开机问题">#</a></h1>
<details><summary>📖 本文目录</summary><div>

</div></details>
<h2 id="1问题描述">1.问题描述<a aria-hidden="true" href="#1问题描述">#</a></h2>
<blockquote>
<p>正常配置好虚拟机，开机在控制台界面上看到如下报错，无法进入登陆界面。</p>
<p>如果CPU是host模拟模式，<strong>关闭KVM硬件虚拟化</strong>开机，控制台提示报错：kvm: CPU model 'host' requires KVM or HVF</p>
<p>将CPU类型改为<strong>KVM64模式</strong>并<strong>不关闭选项内的KVM硬件虚拟化</strong>，还是有如下报错。</p>
</blockquote>
<p><img src="/assets/images/how-to-resolve-virtual-machine-failure-on-vpstown-a3-vds-pve89-proxmox-ve-89/1.png" alt="1"></img></p>
<h2 id="2第一种解决办法">2.第一种解决办法<a aria-hidden="true" href="#2第一种解决办法">#</a></h2>
<blockquote>
<p>将cpu的虚拟化类型改为KVM64并<strong>关闭虚拟机选项内的KVM硬件虚拟化</strong></p>
</blockquote>
<p><img src="/assets/images/how-to-resolve-virtual-machine-failure-on-vpstown-a3-vds-pve89-proxmox-ve-89/2.png" alt="2"></img></p>
<p><img src="/assets/images/how-to-resolve-virtual-machine-failure-on-vpstown-a3-vds-pve89-proxmox-ve-89/2-17609703582815.png" alt="2"></img></p>
<blockquote>
<p>服务器正常开机</p>
</blockquote>
<p><img src="/assets/images/how-to-resolve-virtual-machine-failure-on-vpstown-a3-vds-pve89-proxmox-ve-89/4.png" alt="4"></img></p>
<h2 id="3第二种解决办法">3.第二种解决办法<a aria-hidden="true" href="#3第二种解决办法">#</a></h2>
<blockquote>
<p>将CPU模拟调整为EPYC-Milan-v2，为什么调整为这个？</p>
<p>是因为A3 VDS服务器的CPU是EPYC 7c13,代号： "Milan" （米兰），EPYC 7003 系列处理器。EPYC-Milan这个模拟模式比较老，EPYC-Milan-v2比较新的 Milan 微码更新，更完善的漏洞修复。</p>
</blockquote>
<p><img src="/assets/images/how-to-resolve-virtual-machine-failure-on-vpstown-a3-vds-pve89-proxmox-ve-89/5.png" alt="5"></img></p>
<blockquote>
<p>修改为EPYC-Milan-v2，如果不关闭<strong>虚拟机选项内的KVM硬件虚拟化</strong>，将会有如下报错，所以需要关闭KVM硬件虚拟化。</p>
</blockquote>
<p><img src="/assets/images/how-to-resolve-virtual-machine-failure-on-vpstown-a3-vds-pve89-proxmox-ve-89/6.png" alt="6"></img></p>
<p><img src="/assets/images/how-to-resolve-virtual-machine-failure-on-vpstown-a3-vds-pve89-proxmox-ve-89/7.png" alt="7"></img></p>
<hr></hr>
<h2 id="4彩蛋怎么让pve虚拟出来的虚拟机更流畅仅可用于vpstown-a3虚拟化出的虚拟机">4.【彩蛋】怎么让PVE虚拟出来的虚拟机更流畅（仅可用于VPS.TOWN A3虚拟化出的虚拟机）<a aria-hidden="true" href="#4彩蛋怎么让pve虚拟出来的虚拟机更流畅仅可用于vpstown-a3虚拟化出的虚拟机">#</a></h2>
<pre><code># 以下三种任选
# 第一种：使用CPU x86_64虚拟化
cpu: x86-64-v4,flags=+virt-ssbd;+amd-ssbd;+aes
args: -cpu kvm64,accel=kvm,kvm=on,vmware-cpuid-freq=on,,+invtsc,+aes,+svm

# 第二种:使用CPU代号的虚拟化（优先推荐）
cpu: EPYC-Milan-v2,flags=+virt-ssbd;+amd-ssbd;+aes
args:  -cpu EPYC-Milan-v2,kvm=on,vmware-cpuid-freq=on,,+invtsc,+aes,+svm

# 第三种:使用CPU host方式进行虚拟化
cpu: host,flags=+virt-ssbd;+amd-ssbd;+aes
args:  -cpu max,kvm=on,vmware-cpuid-freq=on,+invtsc,+aes,+svm

</code></pre>
<blockquote>
<p><strong>操作步骤</strong></p>
</blockquote>
<pre><code># SSH 连接宿主机
ssh root@xx.xxx.xx.xx

# 切换到虚拟机配置文件目录下
cd /etc/pve/qemu-server

# 编辑虚拟机配置文件(这里以虚拟机ID为100的虚拟机配置文件作演示)
vi 100.conf
</code></pre>
<p><img src="/assets/images/how-to-resolve-virtual-machine-failure-on-vpstown-a3-vds-pve89-proxmox-ve-89/image-20251016220007445.png" alt="image-20251016220007445"></img></p>
<p><img src="/assets/images/how-to-resolve-virtual-machine-failure-on-vpstown-a3-vds-pve89-proxmox-ve-89/image-20251016220304564.png" alt="image-20251016220304564"></img></p>
<p><img src="/assets/images/how-to-resolve-virtual-machine-failure-on-vpstown-a3-vds-pve89-proxmox-ve-89/image-20251016220327975.png" alt="image-20251016220327975"></img></p>
<p><img src="/assets/images/how-to-resolve-virtual-machine-failure-on-vpstown-a3-vds-pve89-proxmox-ve-89/image-20251016220432380.png" alt="image-20251016220432380"></img></p>
<blockquote>
<p>回到<strong>PVE网页端</strong>查看虚拟机启动完毕</p>
</blockquote>
<p><img src="/assets/images/how-to-resolve-virtual-machine-failure-on-vpstown-a3-vds-pve89-proxmox-ve-89/image-20251016220530780.png" alt="image-20251016220530780"></img></p>]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[在 VPS.Town 的 Debian 12 上安装 PVE（Proxmox VE）教程]]></title>
        <id>23</id>
        <link href="https://docs.vps.town/guide/tutorial-for-installing-pve-proxmox-ve-on-debian-12-in-vps-town"/>
        <updated>2025-09-03T01:30:00.000Z</updated>
        <summary type="html"><![CDATA[本文逐步说明如何在 VPS.Town 的 Debian 12 环境上安装 Proxmox VE（PVE），包含每步的命令、原因与常见故障排查，适合想简便安装PVE的用户。]]></summary>
        <content type="html"><![CDATA[<h1 id="在-vpstown-的-debian-12-上安装-pveproxmox-ve教程">在 VPS.Town 的 Debian 12 上安装 PVE（Proxmox VE）教程<a aria-hidden="true" href="#在-vpstown-的-debian-12-上安装-pveproxmox-ve教程">#</a></h1>
<div><div>温馨提示</div><div>
<p>本文由用户 <code>赛博丁真</code> 撰写，并已加入 <code>VPS.Town 优秀原创文章激励计划</code>，未经允许不得转载。</p>
<p>本文已通过 <a href="/kb/community.html">VPS.Town 社区文章投稿及奖励规则 (试行稿)</a> 格式审核，投稿内容真实性由原作者负责。</p>
</div></div>
<details><summary>📖 本文目录</summary><div>

</div></details>
<h2 id="前言">前言<a aria-hidden="true" href="#前言">#</a></h2>
<p>Proxmox VE（简称 PVE）是一款基于 Debian 的开源虚拟化平台，支持 KVM（完整虚拟化）和 LXC（容器化），并带有友好的 Web 管理界面。把一台 Debian 12 主机转成 PVE 节点的典型做法是：添加 Proxmox 的软件源、安装 PVE 软件包与专用内核、移除冲突的内核并重启。下面按步骤展开，逐条解释每一步的目的与常见问题。</p>
<hr></hr>
<h2 id="环境与准备建议先读">环境与准备（建议先读）<a aria-hidden="true" href="#环境与准备建议先读">#</a></h2>
<ul>
<li>推荐环境：VPS.Town A3 系列（示例），但方法对其他云厂商的 Debian 12 通常也适用。</li>
<li>最低要求（建议更高）：1 核 CPU / 2GB RAM / 可用 IPv4 地址 / SSD 系统盘。</li>
<li>强烈建议：在开始前做好重要数据备份。</li>
</ul>
<hr></hr>
<h2 id="why-pve">why pve<a aria-hidden="true" href="#why-pve">#</a></h2>
<p><strong>1. pve 作为虚拟化平台</strong></p>
<p>🖥️ pve 支持<strong>KVM 虚拟机</strong>和<strong>LXC 容器</strong>，可以同时跑完整系统和轻量应用环境。</p>
<p><strong>2. Web 管理界面</strong></p>
<p>🌐 pve 自带超好用的<strong>网页管理面板</strong>，可一键创建、监控和管理 VM 和容器。</p>
<p><strong>3. 开源 & 免费</strong></p>
<p>🆓 pve 基础功能完全开源免费，用起来放心。</p>
<h2 id="前置准备">前置准备<a aria-hidden="true" href="#前置准备">#</a></h2>
<h3 id="使用-dd-脚本对系统进行-dd使用默认系统会导致安装-pve-后出现网卡丢失机子失联的情况注意-dd-系统会导致数据丢失请提前备份数据">使用 dd 脚本对系统进行 dd，使用默认系统会导致安装 pve 后出现网卡丢失机子失联的情况，注意 dd 系统会导致数据丢失，请提前备份数据。<a aria-hidden="true" href="#使用-dd-脚本对系统进行-dd使用默认系统会导致安装-pve-后出现网卡丢失机子失联的情况注意-dd-系统会导致数据丢失请提前备份数据">#</a></h3>
<pre><code>wget --no-check-certificate -qO InstallNET.sh &#39;https://raw.githubusercontent.com/leitbogioro/Tools/master/Linux_reinstall/InstallNET.sh&#39; &amp;&amp; chmod a+x InstallNET.sh

bash InstallNET.sh -debian 12 -port 22 -pwd yourspassword #请将yourspassword改为你自己的root密码
</code></pre>
<h2 id="1修改-vps-主机名">1.修改 vps 主机名<a aria-hidden="true" href="#1修改-vps-主机名">#</a></h2>
<ul>
<li>PVE 对主机名和主机名解析比较敏感，建议设置一个短且固定的主机名（如 pve01）。</li>
</ul>
<pre><code>sudo hostnamectl set-hostname pve01
</code></pre>
<h2 id="2将主机名写入-host">2.将主机名写入 host<a aria-hidden="true" href="#2将主机名写入-host">#</a></h2>
<ul>
<li>
<p>PVE 在启动和一些管理功能中，会检查主机名对应的 IP。如果主机名只解析为回环地址（127.0.0.1），会导致服务间通信或面板登录出现问题。</p>
</li>
<li>
<p>因此把主机名和真实 IP 映射写进 /etc/hosts 能保证本机解析正确。</p>
</li>
</ul>
<pre><code>echo &quot;154.19.1.0 pve01&quot; | sudo tee -a /etc/hosts
#其中154.19.1.0改为你自己vps的ip，注意不能是127.0.0.1
</code></pre>
<h2 id="3检测主机名解析生效">3.检测主机名解析生效<a aria-hidden="true" href="#3检测主机名解析生效">#</a></h2>
<ul>
<li>如果返回 127.0.0.1 或 127.0.1.1，说明解析没有正确设置，需要检查 /etc/hosts。</li>
</ul>
<pre><code>hostname --ip-address
</code></pre>
<p>返回结果</p>
<p><img src="/assets/images/tutorial-for-installing-pve-proxmox-ve-on-debian-12-in-vps-town/image.png" alt="image.png"></img></p>
<p>注意该结果不能为回环 ip 127.0.0.1</p>
<h2 id="4添加-pve-仓库以及密钥并更新软件包">4.添加 pve 仓库以及密钥并更新软件包<a aria-hidden="true" href="#4添加-pve-仓库以及密钥并更新软件包">#</a></h2>
<pre><code># 添加 pve 仓库（针对 bookworm / Debian 12）
echo &quot;deb [arch=amd64] http://download.proxmox.com/debian/pve bookworm pve-no-subscription&quot; &gt; /etc/apt/sources.list.d/pve-install-repo.list

# 下载并安装 Proxmox 的 GPG 公钥
wget https://enterprise.proxmox.com/debian/proxmox-release-bookworm.gpg -O /etc/apt/trusted.gpg.d/proxmox-release-bookworm.gpg

# 更新并升级当前包
apt update &amp;&amp; apt full-upgrade -y

</code></pre>
<h2 id="5安装-pve-内核并重启">5.安装 pve 内核并重启<a aria-hidden="true" href="#5安装-pve-内核并重启">#</a></h2>
<ul>
<li>Proxmox 使用定制的内核（包含 KVM、ZFS、网络相关的补丁与模块），安装 proxmox-default-kernel 会将系统引导到适配 PVE 的内核上。</li>
</ul>
<pre><code>apt install proxmox-default-kernel -y

systemctl reboot
</code></pre>
<p><img src="/assets/images/tutorial-for-installing-pve-proxmox-ve-on-debian-12-in-vps-town/image%201.png" alt="image.png"></img></p>
<h2 id="6安装-pve-软件包">6.安装 pve 软件包<a aria-hidden="true" href="#6安装-pve-软件包">#</a></h2>
<pre><code>apt install proxmox-ve postfix open-iscsi chrony -y
</code></pre>
<ul>
<li>安装过程中系统可能提示设置 postfix，默认选择 Internet Site 并填写主机名通常是可行的（按 Tab 选择 OK 并回车）。</li>
</ul>
<p><img src="/assets/images/tutorial-for-installing-pve-proxmox-ve-on-debian-12-in-vps-town/image%202.png" alt="image.png"></img></p>
<h2 id="7移除原本的-debian-内核">7.移除原本的 debian 内核<a aria-hidden="true" href="#7移除原本的-debian-内核">#</a></h2>
<ul>
<li>为了避免 pve 升级时旧内核与 Proxmox 内核冲突或引导时选择错误内核，建议移除原生 Debian 内核包。</li>
</ul>
<pre><code>apt remove linux-image-amd64 &#39;linux-image-6.1*&#39; -y
</code></pre>
<h2 id="8最后再升级并检查-grub2-并重启一次">8.最后再升级并检查 grub2 并重启一次<a aria-hidden="true" href="#8最后再升级并检查-grub2-并重启一次">#</a></h2>
<ul>
<li>update-grub 会重新生成 GRUB 引导配置，确保默认引导项为 Proxmox 内核。</li>
</ul>
<pre><code>update-grub &amp;&amp; reboot
</code></pre>
<h2 id="9然后就可以进入后台了">9.然后就可以进入后台了<a aria-hidden="true" href="#9然后就可以进入后台了">#</a></h2>
<ul>
<li>登录凭据：</li>
</ul>
<p>用户名：root</p>
<p>密码：你在系统中设置的 root 密码</p>
<p>默认使用 HTTPS（端口 8006），浏览器可能提示自签名证书警告，可先接受例外进入界面。</p>
<pre><code>https://your-ip:8006
</code></pre>
<p><img src="/assets/images/tutorial-for-installing-pve-proxmox-ve-on-debian-12-in-vps-town/image%203.png" alt="image.png"></img></p>]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[在 Debian 12 上安装并使用 RSStT]]></title>
        <id>16</id>
        <link href="https://docs.vps.town/guide/how-to-setup-rsstt-debian-12-guide-vps-town"/>
        <updated>2025-05-25T05:30:00.000Z</updated>
        <summary type="html"><![CDATA[指导您如何在 Debian 12 服务器上使用 Docker Compose 轻松安装和配置 RSS-to-Telegram-Bot (RSStT)，这是官方推荐且对新手友好的方式。]]></summary>
        <content type="html"><![CDATA[<h1 id="在-debian-12-上安装并使用-rsstt">在 Debian 12 上安装并使用 RSStT<a aria-hidden="true" href="#在-debian-12-上安装并使用-rsstt">#</a></h1>
<blockquote>
<p>更关心您阅读体验的 Telegram RSS 机器人</p>
</blockquote>
<p><a href="https://github.com/Rongronggg9/RSS-to-Telegram-Bot" target="_blank" rel="noopener noreferrer">RSS-to-Telegram-Bot (RSStT)</a> 是一个功能强大的 Telegram 机器人，可以将 RSS 源的更新推送到 Telegram。使用 Docker Compose 是官方<strong>最推荐</strong>的部署方式，它极大地简化了安装、配置和更新过程，将应用程序及其依赖项打包在隔离的容器中运行，非常适合新手和追求便捷管理的用户。本教程将指导您如何在 Debian 12 服务器上一步步完成 Docker Compose 部署。</p>
<div><div>温馨提示</div><div>
<p>本文由用户 <code>k08255-lxm</code> 撰写，并已加入 <code>VPS.Town 优秀原创文章激励计划</code>，本站享有完整版权，未经允许不得转载。</p>
<p>本文已通过 <a href="/kb/community.html">VPS.Town 社区文章投稿及奖励规则 (试行稿)</a> 审核，并获得 <code>现金 50 元</code> 奖励。</p>
</div></div>
<details><summary>📖 本文目录</summary><div>

</div></details>
<h2 id="1-准备工作">1. 准备工作<a aria-hidden="true" href="#1-准备工作">#</a></h2>
<p>与任何安装方式一样，我们首先需要获取一些必要的凭证信息。如果您已在其他教程中获取过，可以跳过此步。</p>
<div><div>所需信息</div><div>
<ul>
<li><strong>Telegram Bot Token:</strong> 用于让我们的程序作为 Bot 连接到 Telegram。</li>
<li><strong>管理员 Telegram User ID:</strong> 用于管理 Bot 的权限。</li>
<li><strong>Telegraph API Token(s):</strong> 用于将过长的消息发布为 Telegraph 文章 (推荐获取 5 个)。</li>
</ul>
</div></div>
<h3 id="11-获取-telegram-bot-token">1.1 获取 Telegram Bot Token<a aria-hidden="true" href="#11-获取-telegram-bot-token">#</a></h3>
<p><img src="/assets/images/how-to-setup-rsstt-debian-12-guide-vps-town/1.png" alt="Get_BotToken"></img></p>
<ol>
<li>打开 Telegram，搜索并与 <a href="https://t.me/BotFather" target="_blank" rel="noopener noreferrer">@BotFather</a> 开始对话。</li>
<li>发送 <code>/newbot</code> 命令，按提示设置 Bot 的名字 (Name) 和用户名 (Username, 必须以 <code>bot</code> 结尾)。</li>
<li>创建成功后，复制 BotFather 发送的 <strong>HTTP API Token</strong>。<strong>妥善保管</strong>。</li>
<li><strong>（重要）</strong> 接着，向 BotFather 发送 <code>/setinline</code> 命令，选择你刚创建的 Bot，然后随意回复一条消息（如：<code>输入命令...</code>）以启用内联模式。</li>
</ol>
<div><div>记录 Token</div><div><p>
将获取到的 Bot Token 复制下来备用。我们称之为 <code>TOKEN</code>。
</p></div></div>
<p>然后与您的机器人对话，并发送<code>/start</code>命令。
<img src="/assets/images/how-to-setup-rsstt-debian-12-guide-vps-town/4.png" alt="Activate_Bot"></img></p>
<h3 id="12-获取你的-telegram-user-id">1.2 获取你的 Telegram User ID<a aria-hidden="true" href="#12-获取你的-telegram-user-id">#</a></h3>
<p><img src="/assets/images/how-to-setup-rsstt-debian-12-guide-vps-town/2.png" alt="Get_TGUserID"></img></p>
<ol>
<li>打开 Telegram，搜索并与 <a href="https://t.me/userinfobot" target="_blank" rel="noopener noreferrer">@userinfobot</a> 开始对话。</li>
<li>发送 <code>/start</code> 或任何消息。</li>
<li>复制它回复的纯数字 <strong>User ID</strong>。</li>
</ol>
<div><div>记录 User ID</div><div><p>
将获取到的 User ID 复制下来备用。我们称之为 <code>MANAGER</code>。
</p></div></div>
<h3 id="13-获取-telegraph-api-tokens">1.3 获取 Telegraph API Token(s)<a aria-hidden="true" href="#13-获取-telegraph-api-tokens">#</a></h3>
<p><img src="/assets/images/how-to-setup-rsstt-debian-12-guide-vps-town/3.png" alt="Get_TelegraphAPIToken"></img></p>
<ol>
<li>访问 <a href="https://api.telegra.ph/createAccount?short_name=RSStT&amp;author_name=Generated%20by%20RSStT&amp;author_url=https%3A%2F%2Fgithub.com%2FRongronggg9%2FRSS-to-Telegram-Bot" target="_blank" rel="noopener noreferrer">Telegraph API 创建页面（此链接会在生成的文章页脚留下 RSStT 的项目标识）</a>。
<blockquote>
<p>自定义无标识链接：
<a href="https://api.telegra.ph/createAccount?short_name=YourName" target="_blank" rel="noopener noreferrer">https://api.telegra.ph/createAccount?short_name=YourName</a></p>
</blockquote>
</li>
<li>复制页面结果中 <code>access_token</code> 的值。</li>
<li><strong>（重要）</strong> <strong>刷新页面</strong>以获取新的、不同的 <code>access_token</code>。重复此操作，<strong>至少获取 5 个</strong> Token。</li>
</ol>
<div><div>记录 Telegraph Token</div><div><p>
将获取到的所有 Telegraph API Token 用<strong>逗号</strong>连接起来，复制备用。我们称之为 <code>TELEGRAPH_TOKEN</code>。例如：<code>token1,token2,token3,token4,token5</code>。
</p></div></div>
<h2 id="2-服务器环境准备安装-docker-和-docker-compose">2. 服务器环境准备：安装 Docker 和 Docker Compose<a aria-hidden="true" href="#2-服务器环境准备安装-docker-和-docker-compose">#</a></h2>
<p>Docker Compose 需要 Docker Engine 运行环境。我们将安装最新的 Docker 版本。</p>
<div><div>操作环境</div><div><p>
本教程假设您使用的是一台拥有 <code>sudo</code> 权限用户的 Debian 12 服务器。所有命令默认使用 <code>sudo</code> 提升权限，除非已将用户添加到 <code>docker</code> 组。
</p></div></div>
<h3 id="21-更新系统软件包">2.1 更新系统软件包<a aria-hidden="true" href="#21-更新系统软件包">#</a></h3>
<p>首先，确保系统是最新的。</p>
<pre><code>sudo apt update &amp;&amp; sudo apt upgrade -y
</code></pre>
<h3 id="22-安装-docker">2.2 安装 Docker<a aria-hidden="true" href="#22-安装-docker">#</a></h3>
<ol>
<li>
<p><strong>卸载旧版本 (如果存在):</strong></p>
<pre><code>sudo apt remove docker docker-engine docker.io containerd runc -y
</code></pre>
</li>
<li>
<p><strong>安装必要的依赖包:</strong></p>
<pre><code>sudo apt install -y ca-certificates curl gnupg lsb-release
</code></pre>
</li>
<li>
<p><strong>使用一键脚本</strong></p>
<pre><code>curl -fsSL https://get.docker.com | bash
</code></pre>
</li>
</ol>
<h2 id="3-使用-docker-compose-安装-rsstt">3. 使用 Docker Compose 安装 RSStT<a aria-hidden="true" href="#3-使用-docker-compose-安装-rsstt">#</a></h2>
<p>现在 Docker 环境准备就绪，我们可以开始部署 RSStT 了。</p>
<h3 id="31-创建工作目录并下载配置文件">3.1 创建工作目录并下载配置文件<a aria-hidden="true" href="#31-创建工作目录并下载配置文件">#</a></h3>
<pre><code># 创建一个专门的目录存放 RSStT 的配置和数据
mkdir ~/rsstt_docker
cd ~/rsstt_docker

# 下载官方提供的 docker-compose.yml 示例文件
wget https://raw.githubusercontent.com/Rongronggg9/RSS-to-Telegram-Bot/dev/docker-compose.yml.sample -O docker-compose.yml
</code></pre>
<h3 id="32-配置-docker-composeyml-文件">3.2 配置 docker-compose.yml 文件<a aria-hidden="true" href="#32-配置-docker-composeyml-文件">#</a></h3>
<p><code>docker-compose.yml</code> 文件定义了运行 RSStT 所需的服务（即容器）及其配置。我们需要编辑它来填入之前准备好的凭证信息。</p>
<pre><code># 使用 nano 编辑器编辑文件 (也可以使用 vim 或其他编辑器)
nano docker-compose.yml
</code></pre>
<p>找到 <code>services:</code> -> <code>rsstt:</code> -> <code>environment:</code> 部分。这里定义了 RSStT 运行所需的环境变量。你需要修改以下几行：</p>
<pre><code meta="">services:
  rsstt:
    # ... (其他配置保持不变)
    environment:
      # --- Required ---
      # Telegram Bot Token (从 @BotFather 获取)
      - TOKEN=781243512:AAGSDGHSRTGHJTRDSFGDSSD # <--- 修改这里

      # Bot 管理员的 Telegram User ID (从 @userinfobot 获取)
      - MANAGER=123456789 # <--- 修改这里

      # Telegraph API Tokens (一行一个，至少一个，推荐5个)
      TELEGRAPH_TOKEN=<你的Telegraph_API_Token1>
        1599373e3dbf55515XXXXX8658d28297fa3
        f2a8f5c5db81c740bcXxxxX52287ec413
        361935c66b7XXX7ce645af19
        0702249218XXXXXc2ab7fcd981b9db820d80098c03ce6
        130f258173dXXXX10ef89adf51477535822a94fca708f578d62

      # 数据库类型 (Docker Compose 默认使用 sqlite, 数据存储在 volume 中)
      # 如果你想使用外部 PostgreSQL 数据库，需要取消注释并修改下面两行
      # - DB_TYPE=postgre
      # - DATABASE_URL=postgresql://user:password@host:port/database

      # --- Optional ---
      # Telegram API 的代理 (例如: socks5://192.168.1.100:1080, 注意这里的 IP 通常是宿主机 IP 或代理服务容器 IP)
      # - PROXY=socks5://192.168.1.100:1080
      # RSS 源的代理
      # - RSS_PROXY=http://192.168.1.100:1081

      # 启用 HTML 表格转图片 (需要容器内字体支持，官方镜像已包含)
      # - TABLE_TO_IMAGE=1
</code></pre>
<p><strong>重要修改点：</strong></p>
<ul>
<li>将 <code>&lt;你的机器人TOKEN&gt;</code> 替换为你的真实 Bot Token。</li>
<li>将 <code>&lt;你的Telegram用户ID&gt;</code> 替换为你的真实 User ID。</li>
<li>将 <code>&lt;你的Telegraph_API_Token1&gt;</code> 替换为你之前生成的 Telegraph Token ，一行一个。</li>
<li>如果需要代理，请取消对应 <code>- PROXY=</code> 或 <code>- RSS_PROXY=</code> 行的注释并填入正确的代理地址。注意，如果代理在宿主机上，地址通常是宿主机的局域网 IP 或 <code>172.17.0.1</code> (Docker 默认网桥 IP)，而不是 <code>127.0.0.1</code>。</li>
<li>默认使用 SQLite 数据库，数据会保存在 Docker Volume (<code>rsstt-data</code>) 中，无需额外配置。</li>
</ul>
<p>编辑完成后，按 <code>Ctrl + X</code>，然后按 <code>Y</code>，最后按 <code>Enter</code> 保存并退出 <code>nano</code>。</p>
<h3 id="33-启动-rsstt-服务">3.3 启动 RSStT 服务<a aria-hidden="true" href="#33-启动-rsstt-服务">#</a></h3>
<p>现在，只需要一条命令即可启动 RSStT：</p>
<pre><code># 确保你在 ~/rsstt_docker 目录下
# 如果你没有将用户添加到 docker 组，请使用 sudo docker compose up -d
docker compose up -d
</code></pre>
<ul>
<li><code>up</code>: 创建并启动 <code>docker-compose.yml</code> 文件中定义的服务。</li>
<li><code>-d</code>: Detached mode，表示在后台运行容器。</li>
</ul>
<p>Docker 会自动下载 RSStT 的镜像 (如果本地没有)，然后创建并启动容器。</p>
<h3 id="34-检查服务状态和日志">3.4 检查服务状态和日志<a aria-hidden="true" href="#34-检查服务状态和日志">#</a></h3>
<pre><code># 查看正在运行的容器 (应该能看到名为 rsstt_docker-rsstt-1 或类似的容器)
# 如果你没有将用户添加到 docker 组，请使用 sudo docker ps
docker ps

# 查看 RSStT 容器的实时日志
# 如果你没有将用户添加到 docker 组，请使用 sudo docker compose logs -f
docker compose logs -f
</code></pre>
<p>如果日志滚动显示，并且没有明显的错误信息 (如 <code>ERROR</code> 级别的日志)，最后看到类似 <code>INFO:telegram.ext.Application:Getting updates</code> 的信息，说明 Bot 已经成功启动。</p>
<p>此时，你可以打开 Telegram，与你的 Bot 对话，发送 <code>/start</code> 或 <code>/help</code> 命令进行测试。</p>
<p>按 <code>Ctrl + C</code> 停止查看实时日志 (服务仍在后台运行)。</p>
<h2 id="4-管理-rsstt-服务-docker-compose">4. 管理 RSStT 服务 (Docker Compose)<a aria-hidden="true" href="#4-管理-rsstt-服务-docker-compose">#</a></h2>
<p>使用 Docker Compose 管理 RSStT 非常方便：</p>
<ul>
<li><strong>启动服务 (后台运行):</strong> <code>docker compose up -d</code></li>
<li><strong>停止并移除容器:</strong> <code>docker compose down</code> (数据卷 <code>rsstt-data</code> 默认会保留)</li>
<li><strong>停止服务 (不移除容器):</strong> <code>docker compose stop</code></li>
<li><strong>启动已停止的服务:</strong> <code>docker compose start</code></li>
<li><strong>重启服务:</strong> <code>docker compose restart</code></li>
<li><strong>查看所有服务日志:</strong> <code>docker compose logs</code></li>
<li><strong>查看实时日志:</strong> <code>docker compose logs -f</code></li>
<li><strong>拉取最新镜像 (用于更新):</strong> <code>docker compose pull</code></li>
</ul>
<div><div>执行命令的位置</div><div><p>
以上所有 <code>docker compose</code> 命令都需要在包含 <code>docker-compose.yml</code> 文件的目录 (<code>~/rsstt_docker</code>) 下执行。
</p></div></div>
<h2 id="5-更新-rsstt">5. 更新 RSStT<a aria-hidden="true" href="#5-更新-rsstt">#</a></h2>
<p>更新 RSStT 非常简单：</p>
<ol>
<li><strong>进入工作目录:</strong>
<pre><code>cd ~/rsstt_docker
</code></pre>
</li>
<li><strong>拉取最新的 Docker 镜像:</strong>
<pre><code># 如果你没有将用户添加到 docker 组，请使用 sudo docker compose pull
docker compose pull
</code></pre>
</li>
<li><strong>停止当前容器并使用新镜像重新创建启动:</strong>
<pre><code># 如果你没有将用户添加到 docker 组，请使用 sudo docker compose up -d
docker compose up -d --remove-orphans
</code></pre>
<code>--remove-orphans</code> 会移除旧版本可能遗留的不再需要的容器。</li>
</ol>
<p>更新完成！数据因为存储在 Docker Volume 中，所以会保留下来。</p>
<h2 id="6-常见问题与注意事项-docker">6. 常见问题与注意事项 (Docker)<a aria-hidden="true" href="#6-常见问题与注意事项-docker">#</a></h2>
<ul>
<li><strong>Bot 没有响应?</strong>
<ul>
<li>检查容器是否在运行: <code>docker ps</code> (或 <code>sudo docker ps</code>)。</li>
<li>查看容器日志: <code>docker compose logs -f</code> (或 <code>sudo docker compose logs -f</code>)。</li>
<li>确认 <code>docker-compose.yml</code> 文件中的 <code>TOKEN</code>, <code>MANAGER</code>, <code>TELEGRAPH_TOKEN</code> 是否正确填写且没有多余空格。</li>
<li>确认服务器网络是否正常，Docker 容器的网络是否能访问 Telegram API (检查代理设置 <code>PROXY</code> 是否正确)。</li>
<li>确认是否启用了 inline 模式 (<code>/setinline</code> @BotFather)。</li>
</ul>
</li>
<li><strong>RSS 抓取失败?</strong>
<ul>
<li>检查 RSS 源地址是否有效。</li>
<li>确认 Docker 容器的网络是否能访问该 RSS 源 (检查代理设置 <code>RSS_PROXY</code> 是否正确)。</li>
<li>查看容器日志获取详细错误信息。</li>
</ul>
</li>
<li><strong>消息过长被截断?</strong>
<ul>
<li>确认 <code>docker-compose.yml</code> 文件中的 <code>TELEGRAPH_TOKEN</code> 是否配置正确且有效 (确保有多个，用逗号分隔)。</li>
<li>检查容器日志看是否有 Telegraph 相关的错误。</li>
</ul>
</li>
<li><strong>数据持久化:</strong> <code>docker-compose.yml</code> 文件中定义了名为 <code>rsstt-data</code> 的 Docker Volume。只要你不手动删除这个 Volume (<code>docker volume rm rsstt_docker_rsstt-data</code>)，你的订阅和配置信息就会在容器停止、重启或更新后保留下来。</li>
<li><strong>资源占用:</strong> 可以使用 <code>docker stats</code> (或 <code>sudo docker stats</code>) 命令查看 RSStT 容器的实时资源使用情况 (CPU, 内存等)。</li>
</ul>
<h2 id="7使用">7.使用<a aria-hidden="true" href="#7使用">#</a></h2>
<p>现在您的 RSStT 机器人已经在 Docker 中成功运行，是时候开始使用它来订阅和管理 RSS 源了。以下是一些基本的操作指令：</p>
<h3 id="71-添加订阅">7.1 添加订阅<a aria-hidden="true" href="#71-添加订阅">#</a></h3>
<p>这是核心功能，用于添加新的 RSS 源。</p>
<ul>
<li>
<p><strong>为自己订阅 (Bot 向私聊发送信息):</strong></p>
<ul>
<li>
<p>订阅单个源: <code>/sub &lt;RSS 订阅 URL&gt;</code>
将<code>&lt;RSS 订阅 URL&gt;</code>替换为你想要订阅的 url，例如<code>/sub https://rss.nodeseek.com/</code></p>
</li>
<li>
<p>批量订阅: <code>/sub &lt;URL1&gt; &lt;URL2&gt; ... (url之间用空格分隔)</code>
例如：<code>/sub https://rss.nodeseek.com/ https://docs.vps.town/rss/event.xml</code>
<img src="/assets/images/how-to-setup-rsstt-debian-12-guide-vps-town/5.png" alt="Single_Sub"></img></p>
</li>
</ul>
</li>
<li>
<p><strong>为群组/频道订阅:</strong></p>
<ul>
<li>
<p>首先，将机器人添加为群组成员或频道管理员(需发布消息权限)。</p>
</li>
<li>
<p>将机器人加入至群组的步骤：
<img src="/assets/images/how-to-setup-rsstt-debian-12-guide-vps-town/6.png" alt="Join_Group"></img></p>
</li>
<li>
<p>将机器人加入至频道的步骤：
<img src="/assets/images/how-to-setup-rsstt-debian-12-guide-vps-town/7.png" alt="Join_Channel_S1"></img>
<img src="/assets/images/how-to-setup-rsstt-debian-12-guide-vps-town/8.png" alt="Join_Channel_S2"></img>
<img src="/assets/images/how-to-setup-rsstt-debian-12-guide-vps-town/9.png" alt="Join_Channel_S3"></img>
<img src="/assets/images/how-to-setup-rsstt-debian-12-guide-vps-town/10.png" alt="Join_Channel_S4"></img></p>
</li>
<li>
<p>方法一 (直接在群组/频道内):</p>
<ul>
<li>在群组或频道内直接发送 <code>/sub &lt;RSS 订阅 URL&gt;。</code>
<img src="/assets/images/how-to-setup-rsstt-debian-12-guide-vps-town/11.png" alt="Control_Bot_Public"></img></li>
</ul>
</li>
<li>
<p>方法二 (在与 Bot 的私聊中指定目标):</p>
<ul>
<li>
<p>使用用户名: <code>/sub @频道或群组用户名 &lt;RSS 订阅 URL&gt;</code>
例如：<code>/sub @MyChannelName https://example.com/feed.xml</code>
(注意：@ 符号必不可少)<br></br>
<img src="/assets/images/how-to-setup-rsstt-debian-12-guide-vps-town/12.png" alt="Control_Bot_in_Private_Chat"></img></p>
</li>
<li>
<p>使用 Chat ID: <code>/sub &lt;频道或群组ID&gt; &lt;RSS 订阅 URL&gt;</code>
例如：<code>/sub -1001234567890 https://example.com/feed.xml</code></p>
<p>(注意：频道/群组 ID 通常以 -100 开头。您可以通过转发频道/群组消息给 @userinfobot 等方式获取 ID)</p>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<h3 id="72-管理订阅">7.2 管理订阅<a aria-hidden="true" href="#72-管理订阅">#</a></h3>
<p><strong>对于在群组或频道中的管理可以参见 7.1：</strong><code>在群组或频道内直接发送命令</code>或<code>在与 Bot 的私聊中指定目标</code></p>
<ul>
<li>列出订阅:
发送 <code>/list</code> 查看您（或当前群组/频道）的所有订阅。</li>
<li>取消订阅:
<ul>
<li>发送 <code>/unsub</code>，机器人会列出订阅并提供按钮供您选择取消。</li>
<li>或发送 <code>/unsub &lt;RSS 订阅 URL&gt;</code> 直接指定取消。</li>
</ul>
</li>
<li>全部取消订阅:
发送 <code>/unsub_all</code> 将一次性取消当前聊天（私聊、群组或频道）中的所有 RSS 订阅。请谨慎使用！</li>
<li>停用订阅:
发送 <code>/deactivate_subs</code>，可以选择暂时停止接收某些源的更新，但保留订阅关系。</li>
<li>启用订阅:
发送 <code>/activate_subs</code>，可以选择重新启用之前被停用的订阅源。</li>
</ul>
<h3 id="73-导入与导出">7.3 导入与导出<a aria-hidden="true" href="#73-导入与导出">#</a></h3>
<p>方便地迁移和备份您的订阅列表。</p>
<ul>
<li>导入订阅:
发送 /import 命令，然后按提示上传一个 OPML 文件 (一种常见的 RSS 订阅列表格式)。机器人会将文件中的订阅源添加到当前聊天。</li>
<li>导出订阅:
发送 /export，机器人会将当前聊天的所有订阅打包成一个 OPML 文件发送给您，方便备份或迁移到其他阅读器。</li>
</ul>
<h3 id="74-自定义设置">7.4 自定义设置<a aria-hidden="true" href="#74-自定义设置">#</a></h3>
<p>调整订阅和机器人的行为。</p>
<ul>
<li>单个订阅设置:
发送 /set，可以选择一个已订阅的源，并对其进行详细设置（如：通知格式、过滤规则、Webpage Preview 等）。这是进行精细化管理的入口。</li>
<li>默认设置:
发送 /set_default，可以为之后新添加的订阅设置默认的行为（类似 /set 中的选项，但作为默认值）。</li>
<li>选择语言:
发送 <code>/lang</code>，可以更改机器人界面的显示语言。</li>
</ul>
<h3 id="75-bot-管理员命令-仅限-manager-用户-id">7.5 Bot 管理员命令 (仅限 MANAGER 用户 ID)<a aria-hidden="true" href="#75-bot-管理员命令-仅限-manager-用户-id">#</a></h3>
<p>这些命令仅限在 docker-compose.yml 中配置为 MANAGER 的用户 ID 在与机器人私聊时使用。</p>
<ul>
<li>测试订阅源:
发送 <code>/test &lt;RSS 订阅 URL&gt;</code> 来检查机器人是否能成功抓取和解析该源。这对于诊断问题非常有用。</li>
<li>更改 Bot 配置:
允许 Bot 管理员修改一些全局性的机器人配置参数。</li>
<li>用户信息:
查看或修改与特定用户相关的信息（通常用于管理）。</li>
</ul>
<h3 id="76-其他命令">7.6 其他命令<a aria-hidden="true" href="#76-其他命令">#</a></h3>
<ul>
<li>查看版本:
发送 <code>/version</code> 查看当前运行的 RSStT 机器人版本。</li>
</ul>
<h3 id="77-获取帮助-help">7.7 获取帮助 (/help):<a aria-hidden="true" href="#77-获取帮助-help">#</a></h3>
<p>发送 <code>/help</code> 显示所有可用命令及其简要说明，您可以自行探索该机器人的更多用法。</p>
<h2 id="8-结语">8. 结语<a aria-hidden="true" href="#8-结语">#</a></h2>
<p>恭喜！您已经通过 Docker Compose 在 Debian 12 服务器上成功部署并运行了 RSS-to-Telegram-Bot。这种方式不仅安装过程简洁，后续的维护和更新也十分方便。</p>
<p>现在，您可以开始在 Telegram 上与您的 Bot 互动，添加您想要关注的 RSS 源了。</p>
<p>如果遇到任何问题或想了解更多高级功能，请查阅官方文档：</p>
<ul>
<li><strong>项目仓库:</strong> <a href="https://github.com/Rongronggg9/RSS-to-Telegram-Bot" target="_blank" rel="noopener noreferrer"><a href="https://github.com/Rongronggg9/RSS-to-Telegram-Bot" target="_blank" rel="noopener noreferrer">https://github.com/Rongronggg9/RSS-to-Telegram-Bot</a></a></li>
<li><strong>文档导航:</strong> <a href="https://github.com/Rongronggg9/RSS-to-Telegram-Bot/tree/dev/docs" target="_blank" rel="noopener noreferrer">docs</a></li>
<li><strong>FAQ:</strong> <a href="https://github.com/Rongronggg9/RSS-to-Telegram-Bot/blob/dev/docs/FAQ.zh.md" target="_blank" rel="noopener noreferrer">docs/FAQ.zh.md</a></li>
</ul>]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[在 VPS.Town 上部署 Vaultwarden 密码管理器完全指南]]></title>
        <id>18</id>
        <link href="https://docs.vps.town/guide/how-to-using-vaultwarden-as-password-manager-vps-town"/>
        <updated>2025-04-16T15:00:00.000Z</updated>
        <summary type="html"><![CDATA[本教程详细介绍如何使用 Docker 部署 Vaultwarden 密码管理器，包括环境准备、安装配置、反向代理设置、账户管理、浏览器插件使用、安全建议和故障排除等内容，帮助您搭建一个安全可靠的自托管密码管理解决方案。]]></summary>
        <content type="html"><![CDATA[<h1 id="在-vpstown-上部署-vaultwarden-密码管理器完全指南">在 VPS.Town 上部署 Vaultwarden 密码管理器完全指南<a aria-hidden="true" href="#在-vpstown-上部署-vaultwarden-密码管理器完全指南">#</a></h1>
<div><div>温馨提示</div><div>
<p>本文由用户 <code>biebiele</code> 撰写，并已加入 <code>VPS.Town 优秀原创文章激励计划</code>，未经允许不得转载。</p>
<p>本文已通过 <a href="/kb/community.html">VPS.Town 社区文章投稿及奖励规则 (试行稿)</a> 审核，并获得 <code>--</code> 奖励。</p>
</div></div>
<details><summary>📖 本文目录</summary><div>

</div></details>
<h2 id="前言">前言<a aria-hidden="true" href="#前言">#</a></h2>
<p>在当今数字化时代，我们每天都需要使用大量的账号和密码。使用简单或重复的密码会带来严重的安全风险，而记住众多复杂密码又几乎不可能。这就是为什么我们需要一个可靠的密码管理工具。</p>
<p>Vaultwarden 是 Bitwarden 的一个非官方实现，它是一个开源的密码管理解决方案，允许您安全地存储和管理您的密码、信用卡信息、身份信息和其他敏感数据。与商业密码管理器不同，Vaultwarden 可以自托管，这意味着您的数据完全由您自己控制，不依赖于第三方服务。</p>
<div><div>为什么选择 Vaultwarden</div><div>
<p>相比其他密码管理工具，Vaultwarden 具有以下优势：</p>
<ul>
<li>完全开源，代码透明可审计</li>
<li>可以完全控制自己的数据</li>
<li>资源占用低，适合在 VPS 上运行</li>
<li>支持所有主流平台和浏览器</li>
</ul>
</div></div>
<h3 id="vaultwarden-的主要特点">Vaultwarden 的主要特点：<a aria-hidden="true" href="#vaultwarden-的主要特点">#</a></h3>
<ul>
<li><strong>开源且免费</strong>：完全开源，无需支付订阅费用</li>
<li><strong>自托管</strong>：您的数据存储在您自己的服务器上，提高隐私保护</li>
<li><strong>跨平台支持</strong>：提供 Windows、macOS、Linux、iOS 和 Android 客户端</li>
<li><strong>浏览器扩展</strong>：支持 Chrome、Firefox、Safari 等主流浏览器</li>
<li><strong>强大的加密</strong>：使用 AES-256 加密、PBKDF2 和 SHA-256 哈希算法</li>
<li><strong>资源占用低</strong>：相比官方 Bitwarden 服务器，Vaultwarden 对系统资源要求更低</li>
<li><strong>功能丰富</strong>：支持密码生成、安全笔记、身份信息管理、文件附件等</li>
</ul>
<div><div>安全提示</div><div>
<p>在开始部署之前，请确保：</p>
<ol>
<li>您的服务器已经配置了防火墙</li>
<li>使用 HTTPS 访问 Vaultwarden</li>
<li>定期备份您的数据</li>
<li>使用强密码保护您的账户</li>
</ol>
</div></div>
<p>本教程将指导您如何使用 Docker 在自己的服务器上部署 Vaultwarden，并进行基本配置和使用。</p>
<div><div>适用环境</div><div><p>本教程适用于 Ubuntu 22.04 系统，其他 Linux 发行版可能需要调整部分命令。</p></div></div>
<h2 id="1-安装-docker-和-docker-compose">1. 安装 Docker 和 Docker Compose<a aria-hidden="true" href="#1-安装-docker-和-docker-compose">#</a></h2>
<pre><code># 更新软件包索引，下载 Docker 官方 GPG 密钥，并允许所有人读取
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# 将 Docker 仓库添加到 Apt 源列表
echo \
  &quot;deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release &amp;&amp; echo &quot;${UBUNTU_CODENAME:-$VERSION_CODENAME}&quot;) stable&quot; | \
  sudo tee /etc/apt/sources.list.d/docker.list &gt; /dev/null
sudo apt-get update

# 安装 docker 软件包
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y

# 启动 docker 服务和开机自启
systemctl enable docker
systemctl restart docker

# 验证安装
systemctl status docker
docker compose version
</code></pre>
<div><div>验证安装</div><div><p>
如果看到类似以下输出，说明安装成功：</p>
<pre><code>● docker.service - Docker Application Container Engine
     Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
     Active: active (running) since ...
</code></pre>
</div></div>
<h2 id="2-安装-vaultwarden">2. 安装 vaultwarden<a aria-hidden="true" href="#2-安装-vaultwarden">#</a></h2>
<div><div>准备工作</div><div>
<p>在开始安装之前，请确保：</p>
<ol>
<li>已经配置好域名并指向您的服务器</li>
<li>已经安装好 nginx 并配置好 SSL 证书</li>
<li>防火墙已开放相应端口</li>
</ol>
</div></div>
<pre><code meta=""># 创建数据目录
mkdir -p /opt/vaultwarden
cd /opt/vaultwarden

# 创建 docker-compose.yml 文件
sudo cat > /opt/vaultwarden/docker-compose.yml <<EOF
services:
  vaultwarden:
    image: vaultwarden/server:latest
    container_name: vaultwarden
    restart: unless-stopped
    environment:
      DOMAIN: "https://vw.domain.tld/vault"  ## 修改为您自己的域名
    volumes:
      - ./vw-data/:/data/
    ports:
      - 10080:80  ## （可选）修改前面的映射端口
EOF

# 启动服务
docker compose up -d
</code></pre>
<p>执行<code>docker ps</code>查看程序启动状态
<img src="/assets/images/how-to-using-vaultwarden-as-password-manager-vps-town/1744816150283.png" alt="Docker 容器运行状态检查"></img></p>
<h2 id="3-配置反向代理">3. 配置反向代理<a aria-hidden="true" href="#3-配置反向代理">#</a></h2>
<div><div>反向代理配置</div><div><p>我们建议使用 Nginx 作为反向代理，并配置 SSL 证书以确保安全。</p></div></div>
<p>以 <code>nginx</code> 为例，修改 nginx.conf，添加类似于如下配置：</p>
<pre><code>location /vault/ { # 注意这个路径和上面 docker 配置的域名路径名一致
    proxy_http_version 1.1;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_pass http://127.0.0.1:10080;
}
</code></pre>
<p>重启 nginx：<code>service nginx restart</code></p>
<p>使用浏览器访问 <code>https://vw.domain.tld/vault</code></p>
<h2 id="4-账户设置和浏览器插件使用">4. 账户设置和浏览器插件使用<a aria-hidden="true" href="#4-账户设置和浏览器插件使用">#</a></h2>
<h3 id="41-创建账户">4.1 创建账户<a aria-hidden="true" href="#41-创建账户">#</a></h3>
<ol>
<li>
<p>点击"创建账户"
<img src="/assets/images/how-to-using-vaultwarden-as-password-manager-vps-town/1744817120248.png" alt="创建新账户界面"></img></p>
</li>
<li>
<p>填写您的账户信息
<img src="/assets/images/how-to-using-vaultwarden-as-password-manager-vps-town/1744817144425.png" alt="账户信息填写表单"></img></p>
</li>
</ol>
<div><div>密码安全</div><div>
<ul>
<li>使用强密码（至少 12 个字符，包含大小写字母、数字和特殊字符）</li>
<li>建议使用密码生成器生成主密码</li>
<li>妥善保管您的主密码，这是恢复账户的唯一方式</li>
</ul>
</div></div>
<ol start="3">
<li>创建完成后，登录您的账户
<img src="/assets/images/how-to-using-vaultwarden-as-password-manager-vps-town/1744817244800.png" alt="登录界面"></img></li>
</ol>
<h3 id="42-安装浏览器扩展">4.2 安装浏览器扩展<a aria-hidden="true" href="#42-安装浏览器扩展">#</a></h3>
<ol>
<li>
<p>安装扩展
<img src="/assets/images/how-to-using-vaultwarden-as-password-manager-vps-town/1744817305288.png" alt="浏览器扩展安装指引"></img></p>
</li>
<li>
<p>配置扩展信息，固定到标签栏
<img src="/assets/images/how-to-using-vaultwarden-as-password-manager-vps-town/1744817425109.png" alt="扩展配置和固定到标签栏"></img></p>
</li>
<li>
<p>选择自托管，输入您的域名（如 <code>https://vw.domain.tld/vault</code>），再输入您注册的账户和密码
<img src="/assets/images/how-to-using-vaultwarden-as-password-manager-vps-town/1744817462403.png" alt="自托管服务器配置界面"></img></p>
</li>
<li>
<p>之后登录或注册网站时，会提示您是否要保存密码
<img src="/assets/images/how-to-using-vaultwarden-as-password-manager-vps-town/1744817728258.png" alt="密码保存提示界面"></img></p>
</li>
</ol>
<h2 id="5-安全建议">5. 安全建议<a aria-hidden="true" href="#5-安全建议">#</a></h2>
<div><div>重要安全提示</div><div>
<ol>
<li>定期备份您的数据目录（<code>/opt/vaultwarden/vw-data/</code>）</li>
<li>启用双因素认证（2FA）</li>
<li>定期更新 Vaultwarden 到最新版本</li>
<li>监控服务器日志，及时发现异常</li>
<li>使用强密码保护您的账户</li>
</ol>
</div></div>
<h2 id="6-故障排除">6. 故障排除<a aria-hidden="true" href="#6-故障排除">#</a></h2>
<h3 id="61-常见问题">6.1 常见问题<a aria-hidden="true" href="#61-常见问题">#</a></h3>
<ol>
<li>
<p><strong>无法访问 Web 界面</strong></p>
<ul>
<li>检查 Docker 容器是否正常运行：<code>docker ps</code></li>
<li>检查端口是否正确映射：<code>netstat -tulpn | grep 10080</code></li>
<li>检查 Nginx 配置是否正确</li>
</ul>
</li>
<li>
<p><strong>无法保存密码</strong></p>
<ul>
<li>检查浏览器扩展是否正确配置</li>
<li>确认服务器地址是否正确</li>
<li>检查网络连接是否正常</li>
</ul>
</li>
<li>
<p><strong>数据同步问题</strong></p>
<ul>
<li>检查服务器状态</li>
<li>尝试重新登录账户</li>
<li>检查网络连接</li>
</ul>
</li>
</ol>
<h3 id="62-日志查看">6.2 日志查看<a aria-hidden="true" href="#62-日志查看">#</a></h3>
<pre><code># 查看容器日志
docker logs vaultwarden

# 实时查看日志
docker logs -f vaultwarden
</code></pre>
<h2 id="7-备份与恢复">7. 备份与恢复<a aria-hidden="true" href="#7-备份与恢复">#</a></h2>
<h3 id="71-备份数据">7.1 备份数据<a aria-hidden="true" href="#71-备份数据">#</a></h3>
<pre><code># 创建备份目录
mkdir -p /backup/vaultwarden

# 备份数据
tar -czf /backup/vaultwarden/backup-$(date +%Y%m%d).tar.gz /opt/vaultwarden/vw-data/
</code></pre>
<h3 id="72-恢复数据">7.2 恢复数据<a aria-hidden="true" href="#72-恢复数据">#</a></h3>
<pre><code># 停止服务
cd /opt/vaultwarden
docker compose down

# 恢复数据
tar -xzf /backup/vaultwarden/backup-YYYYMMDD.tar.gz -C /

# 重启服务
docker compose up -d
</code></pre>
<div><div>备份建议</div><div>
<ul>
<li>建议设置自动备份脚本</li>
<li>将备份文件存储在安全的位置</li>
<li>定期测试备份的可用性</li>
</ul>
</div></div>
<h2 id="8-更新-vaultwarden">8. 更新 Vaultwarden<a aria-hidden="true" href="#8-更新-vaultwarden">#</a></h2>
<pre><code># 进入项目目录
cd /opt/vaultwarden

# 拉取最新镜像
docker compose pull

# 重启服务
docker compose up -d
</code></pre>
<div><div>更新建议</div><div>
<ul>
<li>更新前先备份数据</li>
<li>关注 Vaultwarden 的更新日志</li>
<li>建议定期检查更新</li>
</ul>
</div></div>]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[如何使用 Acme.sh 自动更新 Nginx 网站证书]]></title>
        <id>17</id>
        <link href="https://docs.vps.town/guide/how-to-use-acme.sh-vps-town"/>
        <updated>2025-04-15T07:00:00.000Z</updated>
        <summary type="html"><![CDATA[本文详细介绍了如何使用 Acme.sh 工具自动申请和更新 SSL 证书，包括安装配置、CloudFlare DNS API验证、证书申请流程以及 Nginx 服务器配置 SSL 证书的具体步骤。]]></summary>
        <content type="html"><![CDATA[<h1 id="如何使用-acmesh-自动更新-nginx-网站证书">如何使用 Acme.sh 自动更新 Nginx 网站证书<a aria-hidden="true" href="#如何使用-acmesh-自动更新-nginx-网站证书">#</a></h1>
<div><div>温馨提示</div><div>
<p>本文由用户 <code>biebiele</code> 撰写，并已加入 <code>VPS.Town 优秀原创文章激励计划</code>，未经允许不得转载。</p>
<p>本文已通过 <a href="/kb/community.html">VPS.Town 社区文章投稿及奖励规则 (试行稿)</a> 审核，并获得 <code>--</code> 奖励。</p>
</div></div>
<details><summary>📖 本文目录</summary><div>

</div></details>
<div><div>介绍</div><div>
<p>Acme.sh 是一个纯粹用 Shell（Unix shell）语言编写的 ACME 协议客户端。可自动帮您申请 SSL 证书并自动更新。</p>
</div></div>
<h2 id="1-acmesh-安装">1. acme.sh 安装<a aria-hidden="true" href="#1-acmesh-安装">#</a></h2>
<pre><code meta=""># 将 my@example.com 换成您自己的邮箱地址
curl https://get.acme.sh | sh -s email=my@example.com
</code></pre>
<div><div>小贴士</div><div><p>
安装完成后，程序安装在<code>/root/.acme.sh/</code>下，且可在任何地方使用<code>acme.sh</code>命令
</p></div></div>
<p><img src="/assets/images/how-to-use-acme.sh-vps-town/1.png" alt="acme.sh安装完成界面"></img></p>
<h2 id="2-使用-cloudflare-dns-api-验证">2. 使用 CloudFlare DNS api 验证<a aria-hidden="true" href="#2-使用-cloudflare-dns-api-验证">#</a></h2>
<h3 id="21-添加您的域名到-cloudflare">2.1. 添加您的域名到 CloudFlare<a aria-hidden="true" href="#21-添加您的域名到-cloudflare">#</a></h3>
<ul>
<li>
<p><code>账户主页</code>-<code>添加域</code>：按照页面指示添加您的个人域名
<img src="/assets/images/how-to-use-acme.sh-vps-town/2.png" alt="CloudFlare添加域名界面"></img></p>
</li>
<li>
<p><code>选择计划</code>：选择下方的<code>free计划</code>，点击<code>继续</code>
<img src="/assets/images/how-to-use-acme.sh-vps-town/3.png" alt="CloudFlare选择免费计划界面"></img></p>
</li>
<li>
<p><code>dns记录</code>：会自动导入已有的 dns 记录，检查没什么问题，点击继续
<img src="/assets/images/how-to-use-acme.sh-vps-town/4.png" alt="CloudFlare DNS记录导入界面"></img></p>
</li>
<li>
<p><code>更新名称服务器</code>：根据指引，在您域名之前网站，修改 ns 记录。主要删除原来的 dns 锁定和删除并添加新的 ns 记录
<img src="/assets/images/how-to-use-acme.sh-vps-town/5.png" alt="CloudFlare更新名称服务器界面"></img></p>
</li>
<li>
<p><code>验证</code>：修改完成后，检查添加状态是否正常，如不正常，可手动最下方立即检查或手动检查添加过程是否正确
<img src="/assets/images/how-to-use-acme.sh-vps-town/6.png" alt="CloudFlare域名验证界面"></img></p>
</li>
</ul>
<h3 id="22-创建-api-令牌">2.2. 创建 API 令牌<a aria-hidden="true" href="#22-创建-api-令牌">#</a></h3>
<p><img src="/assets/images/how-to-use-acme.sh-vps-town/7.png" alt="CloudFlare API令牌创建入口"></img></p>
<ul>
<li>点击创建令牌
<img src="/assets/images/how-to-use-acme.sh-vps-town/8.png" alt="CloudFlare创建令牌界面"></img></li>
<li>选择使用模版 <code>编辑区域dns</code>
<img src="/assets/images/how-to-use-acme.sh-vps-town/9.png" alt="CloudFlare选择API模板界面"></img></li>
<li>权限配置
<img src="/assets/images/how-to-use-acme.sh-vps-town/10.png" alt="CloudFlare API权限配置界面"></img></li>
<li>确定创建令牌
<img src="/assets/images/how-to-use-acme.sh-vps-town/11.png" alt="CloudFlare确认创建令牌界面"></img></li>
<li>复制生成的 token 值
<img src="/assets/images/how-to-use-acme.sh-vps-town/12.png" alt="CloudFlare API令牌生成结果"></img></li>
</ul>
<h3 id="23-区域-id-和账户-id">2.3. 区域 ID 和账户 ID<a aria-hidden="true" href="#23-区域-id-和账户-id">#</a></h3>
<p><img src="/assets/images/how-to-use-acme.sh-vps-town/13.png" alt="CloudFlare区域ID和账户ID位置"></img></p>
<h3 id="24-申请-ssl-域名证书">2.4. 申请 SSL 域名证书<a aria-hidden="true" href="#24-申请-ssl-域名证书">#</a></h3>
<pre><code># API令牌：上述步骤获取的令牌token值
export CF_Token=&quot;Y_jpG9AnfQmuX5Ss9M_qaNab6SQwme3HWXNDzRWs&quot;

# 以下二选一
# 单个域名：上述区域ID值
export CF_Zone_ID=&quot;763eac4f1bcebd8b5c95e9fc50d010b4&quot;
# 多个域名：上述账户ID值
# export CF_Account_ID=&quot;763eac4f1bcebd8b5c95e9fc50d010b4&quot;
</code></pre>
<ul>
<li>配置以上环境变量后，手动执行申请</li>
</ul>
<pre><code># 以下申请ssl通配证书，根据提示操作
acme.sh --issue --dns dns_cf -d example.com -d &#39;*.example.com&#39;
</code></pre>
<div><div>小贴士</div><div><p>
设置和使用的任何环境变量都将保存在 ~/.acme.sh/account.conf
</p></div></div>
<p>检查脚本执行日志，是否获取证书正常，提示证书文件保存在何地
<img src="/assets/images/how-to-use-acme.sh-vps-town/14.png" alt="acme.sh证书申请成功界面"></img></p>
<ul>
<li>后续定期更新，是由计划任务 cron 里的定期检查和自动更新
<img src="/assets/images/how-to-use-acme.sh-vps-town/15.png" alt="acme.sh自动更新计划任务"></img></li>
</ul>
<h2 id="3-nginx-等程序配置-ssl">3. nginx 等程序配置 ssl<a aria-hidden="true" href="#3-nginx-等程序配置-ssl">#</a></h2>
<p>在<code>nginx.conf</code>配置文件，添加 ssl 相关配置并重启服务，浏览器检查 https 访问是否正常。以下供参考：</p>
<pre><code>        ssl_certificate      /opt/ssl_cert.pem;
        ssl_certificate_key /opt/ssl_key.pem;

        ssl_protocols             TLSv1.2 TLSv1.3;
        ssl_prefer_server_ciphers on;
        ssl_ciphers               ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-CHACHA20-POLY1305;
        ssl_ecdh_curve            secp521r1:secp384r1:secp256r1:x25519;
</code></pre>
<p><img src="/assets/images/how-to-use-acme.sh-vps-town/16.png" alt="Nginx SSL配置示例"></img></p>]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[如何在 VPS.Town 服务器上安装并配置青龙面板]]></title>
        <id>15</id>
        <link href="https://docs.vps.town/guide/how-to-setup-qinglong-vps-town"/>
        <updated>2025-04-14T16:00:00.000Z</updated>
        <summary type="html"><![CDATA[本文详细介绍了如何在 VPS.Town 服务器上安装并配置青龙面板，包括安装 Docker 和 Docker Compose、创建路径、创建 docker compose 文件、启动青龙面板、配置通知、设置用户名和密码等步骤。]]></summary>
        <content type="html"><![CDATA[<h1 id="如何在-vpstown-服务器上安装并配置青龙面板">如何在 VPS.Town 服务器上安装并配置青龙面板<a aria-hidden="true" href="#如何在-vpstown-服务器上安装并配置青龙面板">#</a></h1>
<div><div>温馨提示</div><div>
<p>本文由用户 <code>biebiele</code> 撰写，并已加入 <code>VPS.Town 优秀原创文章激励计划</code>，本站享有完整版权，未经允许不得转载。</p>
<p>本文已通过 <a href="/kb/community.html">VPS.Town 社区文章投稿及奖励规则 (试行稿)</a> 审核，并获得 <code>现金 150 元</code> (共三篇文章) 奖励。</p>
</div></div>
<details><summary>📖 本文目录</summary><div>

</div></details>
<h2 id="1-安装-docker-和-docker-compose">1. 安装 Docker 和 Docker Compose<a aria-hidden="true" href="#1-安装-docker-和-docker-compose">#</a></h2>
<h3 id="11-更新软件包索引">1.1 更新软件包索引<a aria-hidden="true" href="#11-更新软件包索引">#</a></h3>
<pre><code># 更新软件包索引，下载 Docker 官方 GPG 密钥，并允许所有人读取
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
</code></pre>
<h3 id="12-添加-docker-仓库">1.2 添加 Docker 仓库<a aria-hidden="true" href="#12-添加-docker-仓库">#</a></h3>
<pre><code>echo \
  &quot;deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release &amp;&amp; echo &quot;${UBUNTU_CODENAME:-$VERSION_CODENAME}&quot;) stable&quot; | \
  sudo tee /etc/apt/sources.list.d/docker.list &gt; /dev/null
</code></pre>
<h3 id="13-安装-docker-和-docker-compose">1.3 安装 Docker 和 Docker Compose<a aria-hidden="true" href="#13-安装-docker-和-docker-compose">#</a></h3>
<pre><code># 更新软件包索引
sudo apt-get update

# 安装docker软件包
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y

# 启动docker服务和开机自启
systemctl enable docker
systemctl restart docker

# 验证安装
systemctl status docker
docker compose version
</code></pre>
<p>验证显示 docker 启动正常，docker compose 版本号显示正常即可，如下图：
<img src="/assets/images/how-to-setup-qinglong-vps-town/1.png" alt="docker验证"></img></p>
<h2 id="2-安装青龙面板">2. 安装青龙面板<a aria-hidden="true" href="#2-安装青龙面板">#</a></h2>
<h3 id="21-创建路径">2.1 创建路径<a aria-hidden="true" href="#21-创建路径">#</a></h3>
<pre><code># 创建路径
mkdir -p /opt/qinglong
cd /opt/qinglong
</code></pre>
<h3 id="22-创建-docker-compose-文件">2.2 创建 docker compose 文件<a aria-hidden="true" href="#22-创建-docker-compose-文件">#</a></h3>
<p>创建 docker compose 文件，可修改映射目录./data、映射端口 5700</p>
<pre><code>sudo cat &gt; /opt/qinglong/docker-compose.yml &lt;&lt;EOF
services:
  web:
    image: whyour/qinglong:latest
    volumes:
      - ./data:/ql/data
    ports:
      - &quot;5700:5700&quot;
    environment:
      QlBaseUrl: &#39;/&#39;
    restart: unless-stopped
EOF
</code></pre>
<h3 id="23-启动青龙面板">2.3 启动青龙面板<a aria-hidden="true" href="#23-启动青龙面板">#</a></h3>
<pre><code># 启动青龙面板
docker compose up -d
</code></pre>
<h3 id="24-安装完成">2.4 安装完成<a aria-hidden="true" href="#24-安装完成">#</a></h3>
<p><img src="/assets/images/how-to-setup-qinglong-vps-town/2.png" alt="docker验证"></img></p>
<p>如下图状态，即启动正常</p>
<p><img src="/assets/images/how-to-setup-qinglong-vps-town/3.png" alt="docker验证"></img></p>
<h2 id="3青龙面板配置">3、青龙面板配置<a aria-hidden="true" href="#3青龙面板配置">#</a></h2>
<ul>
<li>打开浏览器访问: http://<strong>ip 地址</strong>:5700</li>
<li>首次访问需要设置管理员账号和密码
<img src="/assets/images/how-to-setup-qinglong-vps-town/4.png" alt="初始化配置"></img></li>
</ul>
<h3 id="31-通知配置">3.1 通知配置<a aria-hidden="true" href="#31-通知配置">#</a></h3>
<p>以配置 telegram 机器人为例
<img src="/assets/images/how-to-setup-qinglong-vps-town/5.png" alt="通知配置"></img></p>
<ul>
<li>先申请个人机器人
与 <a href="https://t.me/BotFather" target="_blank" rel="noopener noreferrer">@BotFather</a> 对话，创建机器人
<img src="/assets/images/how-to-setup-qinglong-vps-town/6.png" alt="创建机器人"></img></li>
<li>输入机器人名称，<strong>名称需要以 bot 结尾</strong>，然后拿到<strong>token</strong>
<img src="/assets/images/how-to-setup-qinglong-vps-town/7.png" alt="机器人token"></img></li>
<li><strong>创建机器人成功后，需要主动对话一次才可使机器人实际生效</strong></li>
<li>获取个人 userid
与 <a href="https://t.me/userinfobot" target="_blank" rel="noopener noreferrer">@userinfobot</a> 对话，随便输入，拿到个人<strong>userid</strong>
<img src="/assets/images/how-to-setup-qinglong-vps-town/8.png" alt="userid"></img></li>
</ul>
<p><strong>把上方获取到的机器人 token 和个人 userid 填入上方的通知配置中</strong></p>
<h3 id="32-用户名密码设置">3.2 用户名、密码设置<a aria-hidden="true" href="#32-用户名密码设置">#</a></h3>
<p>保存后，输入用户名和密码后登陆后台
<img src="/assets/images/how-to-setup-qinglong-vps-town/9.png" alt="用户名密码设置"></img></p>
<h3 id="33-青龙后台">3.3 青龙后台<a aria-hidden="true" href="#33-青龙后台">#</a></h3>
<p><img src="/assets/images/how-to-setup-qinglong-vps-town/10.png" alt="青龙后台"></img></p>]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[如何使用青龙面板定时运行 Bilibili 日常签到脚本]]></title>
        <id>26</id>
        <link href="https://docs.vps.town/guide/vps-town-qinglong-bilibili-daily"/>
        <updated>2025-04-14T16:00:00.000Z</updated>
        <summary type="html"><![CDATA[如何使用青龙面板定时运行 Bilibili 日常签到脚本]]></summary>
        <content type="html"><![CDATA[<h1 id="如何使用青龙面板定时运行-bilibili-日常签到脚本">如何使用青龙面板定时运行 Bilibili 日常签到脚本<a aria-hidden="true" href="#如何使用青龙面板定时运行-bilibili-日常签到脚本">#</a></h1>
<div><div>温馨提示</div><div>
<p>本文由用户 <code>biebiele</code> 撰写，并已加入 <code>VPS.Town 优秀原创文章激励计划</code>，本站享有完整版权，未经允许不得转载。</p>
<p>本文已通过 <a href="/kb/community.html">VPS.Town 社区文章投稿及奖励规则 (试行稿)</a> 审核，并获得 <code>现金 150 元</code> (共三篇文章) 奖励。</p>
</div></div>
<details><summary>📖 本文目录</summary><div>

</div></details>
<div><div>提示</div><div>
<p>前提条件：已成功完成青龙面板安装，安装教程请参考 <a href="/guide/how-to-setup-qinglong-vps-town">如何在 VPS.Town 服务器上安装并配置青龙面板</a></p>
</div></div>
<h2 id="1-登录青龙面板并修改配置文件">1. 登录青龙面板并修改配置文件<a aria-hidden="true" href="#1-登录青龙面板并修改配置文件">#</a></h2>
<p>青龙面板，<code>配置文件</code>页。</p>
<ul>
<li>修改<code>RepoFileExtensions=&quot;js mjs py pyc&quot;</code> 为 <code>RepoFileExtensions=&quot;js mjs py pyc sh&quot;</code></li>
<li>新增<code>export BILI_MODE=&quot;bilitool&quot; # bili运行模式，dotnet或bilitool</code>
<img src="/assets/images/vps-town-qinglong-bilibili-daily/1.png" alt="修改配置文件"></img></li>
</ul>
<h2 id="2拉取库文件">2、拉取库文件<a aria-hidden="true" href="#2拉取库文件">#</a></h2>
<p>青龙面板，<code>订阅管理</code>页，点击右上角<code>创建订阅</code></p>
<pre><code>名称: Bilibili
类型: 公开仓库
链接: https://github.com/RayWangQvQ/BiliBiliToolPro.git
定时类型: crontab
定时规则: 1 0 * * *
白名单: bili_task_.+\.sh
文件后缀: sh
</code></pre>
<p><img src="/assets/images/vps-town-qinglong-bilibili-daily/2.png" alt="创建订阅1"></img>
<img src="/assets/images/vps-town-qinglong-bilibili-daily/3.png" alt="创建订阅2"></img></p>
<p>点击确定后，点击<code>运行</code>拉取库文件
<img src="/assets/images/vps-town-qinglong-bilibili-daily/4.png" alt="创建订阅2"></img>
可点击<code>日志</code>，检查拉取过程是否正常
<img src="/assets/images/vps-town-qinglong-bilibili-daily/5.png" alt="拉取日志"></img></p>
<h2 id="3-检查定时任务">3. 检查定时任务<a aria-hidden="true" href="#3-检查定时任务">#</a></h2>
<p>如果正常，拉库成功后，会自动添加 bilibili 相关的 task 任务。
<img src="/assets/images/vps-town-qinglong-bilibili-daily/6.png" alt="拉取日志"></img></p>
<h2 id="4-登录获取-cookie">4. 登录获取 cookie<a aria-hidden="true" href="#4-登录获取-cookie">#</a></h2>
<p>首次运行会自动安装环境，时间可能长一点，之后就不需要重复安装了。</p>
<p>在青龙定时任务中，点击运行 <code>bili扫码登录</code> 任务，查看运行日志，扫描日志中的二维码进行登录。</p>
<p><img src="/assets/images/vps-town-qinglong-bilibili-daily/7.png" alt="拉取日志1"></img></p>
<p>登录成功后，会提示手动保存 cookie：
<img src="/assets/images/vps-town-qinglong-bilibili-daily/8.png" alt="拉取日志2"></img></p>
<p>手工设置 cookie
<img src="/assets/images/vps-town-qinglong-bilibili-daily/9.png" alt="手工设置cookie"></img></p>
<h2 id="5-手动执行bili每日任务任务">5. 手动执行<code>bili每日任务</code>任务<a aria-hidden="true" href="#5-手动执行bili每日任务任务">#</a></h2>
<p><img src="/assets/images/vps-town-qinglong-bilibili-daily/10.png" alt="bili每日任务日志"></img></p>]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[VPS.Town 服务器新手入门保姆级教程]]></title>
        <id>24</id>
        <link href="https://docs.vps.town/guide/vps-town-101-guide"/>
        <updated>2025-04-14T07:00:00.000Z</updated>
        <summary type="html"><![CDATA[VPS.Town 服务器新手入门保姆级教程，涵盖了从购买 VPS.Town 服务器、连接、重置密码、优化配置、安装常用软件、配置 Fail2ban 保护您的服务器等操作。]]></summary>
        <content type="html"><![CDATA[<h1 id="vpstown-服务器新手入门保姆级教程">VPS.Town 服务器新手入门保姆级教程<a aria-hidden="true" href="#vpstown-服务器新手入门保姆级教程">#</a></h1>
<div><div>温馨提示</div><div>
<p>本文由用户 <code>biebiele</code> 撰写，并已加入 <code>VPS.Town 优秀原创文章激励计划</code>，本站享有完整版权，未经允许不得转载。</p>
<p>本文已通过 <a href="/kb/community.html">VPS.Town 社区文章投稿及奖励规则 (试行稿)</a> 审核，并获得 <code>现金 25 元</code> 奖励。</p>
</div></div>
<details><summary>📖 本文目录</summary><div>

</div></details>
<h2 id="1-网站管理界面">1. 网站管理界面<a aria-hidden="true" href="#1-网站管理界面">#</a></h2>
<h3 id="11-已开通产品列表">1.1 已开通产品列表<a aria-hidden="true" href="#11-已开通产品列表">#</a></h3>
<p>购买产品之后，可在个人中心-已开通产品内看到购买的服务器。如下图：</p>
<p><img src="/assets/images/vps-town-101-guide/1.png" alt="服务器管理"></img></p>
<p>在已开通产品列表中，您可以：</p>
<ul>
<li>查看所有已购买的服务器</li>
<li>查看每个服务器的基本信息（如服务器名称、状态等）</li>
<li>通过操作按钮进入具体服务器的管理界面</li>
</ul>
<div><div>小贴士</div><div><p>
建议定期检查服务器状态，确保服务正常运行。
</p></div></div>
<h3 id="12-服务器列表界面">1.2 服务器列表界面<a aria-hidden="true" href="#12-服务器列表界面">#</a></h3>
<p>点击进入管理界面，其中有 IP 信息、管理，如下图：</p>
<p><img src="/assets/images/vps-town-101-guide/2.png" alt="服务器列表"></img></p>
<p>在服务器列表界面中，您可以：</p>
<ul>
<li>查看服务器的 IP 地址信息（<strong>点击后可看到具体的 IPv6 地址</strong>）</li>
<li>查看服务器的运行状态</li>
<li>进行服务器的基本操作（如重启、关机等）</li>
<li>查看服务器的配置信息</li>
</ul>
<div><div>警告</div><div><p>
进行服务器重启或关机操作前，请确保已保存所有重要数据。
</p></div></div>
<h3 id="13-服务器详情界面">1.3 服务器详情界面<a aria-hidden="true" href="#13-服务器详情界面">#</a></h3>
<p>点击操作按钮，进入具体服务器管理页面，如下图，主要有以下关键信息：</p>
<p><img src="/assets/images/vps-town-101-guide/3.png" alt="管理界面"></img></p>
<p>在服务器详情界面中，您可以：</p>
<ul>
<li>查看服务器的详细配置信息</li>
<li>进行服务器的各项管理操作</li>
<li>查看服务器的使用统计信息</li>
<li>管理服务器的安全组设置</li>
<li>查看服务器的监控信息</li>
</ul>
<h2 id="2-远程连接服务器">2. 远程连接服务器<a aria-hidden="true" href="#2-远程连接服务器">#</a></h2>
<p>初始安装时，默认是支持使用用户名、密码的 SSH 连接，以下以 Putty 工具为例：</p>
<h3 id="21-下载-putty">2.1 下载 Putty<a aria-hidden="true" href="#21-下载-putty">#</a></h3>
<p>您可以在 <a href="https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html" target="_blank" rel="noopener noreferrer">官方网站</a> 下载 Putty 的客户端。<a href="https://the.earth.li/~sgtatham/putty/latest/w64/putty.exe" target="_blank" rel="noopener noreferrer">点此直接下载 Windows 64 位版</a></p>
<p><img src="/assets/images/vps-town-101-guide/4.png" alt="putty下载"></img></p>
<h3 id="22-添加新主机并配置信息">2.2 添加新主机并配置信息<a aria-hidden="true" href="#22-添加新主机并配置信息">#</a></h3>
<h4 id="221-配置地址和端口">2.2.1 配置地址和端口<a aria-hidden="true" href="#221-配置地址和端口">#</a></h4>
<p>在 session 页填写服务器<strong>IP 地址、端口</strong></p>
<p><img src="/assets/images/vps-town-101-guide/5.png" alt="配置地址和端口"></img></p>
<h4 id="222-连接实例">2.2.2 连接实例<a aria-hidden="true" href="#222-连接实例">#</a></h4>
<p>点击 Open 按钮连接到实例。如果是第一次连接到实例，可能会看到对于密钥的验证信息。点击 Accept 按钮确认连接即可。连接成功后，会提示你输入用户名、密码，校验成功后进入控制台。即可开始 linux 管理。</p>
<p><img src="/assets/images/vps-town-101-guide/6.png" alt="输入用户名、密码"></img></p>
<div><div>使用说明</div><div><p>本文档适用于 Ubuntu 22.04 系统，其他 Linux 发行版可能需要适当调整命令。</p></div></div>
<h2 id="3可选项是否网络重装操作系统">3.（可选项）是否网络重装操作系统<a aria-hidden="true" href="#3可选项是否网络重装操作系统">#</a></h2>
<div><div>提示</div><div><p>
这是一个可选步骤，仅在您需要更换默认操作系统时使用。
</p></div></div>
<p>使用 <a href="https://github.com/bin456789/reinstall" target="_blank" rel="noopener noreferrer">dd 脚本</a> 重装操作系统。</p>
<h3 id="下载-dd-脚本到本地">下载 dd 脚本到本地<a aria-hidden="true" href="#下载-dd-脚本到本地">#</a></h3>
<pre><code># 使用 curl 或 wget 下载 reinstall.sh 脚本
# -O: 将下载的文件保存为指定名称
curl -O https://raw.githubusercontent.com/bin456789/reinstall/main/reinstall.sh || wget -O reinstall.sh $_
</code></pre>
<h3 id="选择要重装的操作系统">选择要重装的操作系统<a aria-hidden="true" href="#选择要重装的操作系统">#</a></h3>
<p>以下示例为重装为 Ubuntu 22.04 最小化版本：</p>
<pre><code># 执行重装脚本
# ubuntu: 目标操作系统
# 22.04: 版本号
# --minimal: 最小化安装，只安装基本系统
bash reinstall.sh ubuntu 22.04 --minimal
</code></pre>
<p>执行后，会提示输入重装后的密码，命令执行完成后，输入 <code>reboot</code> 重启操作系统，等待约 5-10 分钟后，使用 SSH 工具重新连接服务器。</p>
<details><summary>支持的操作系统列表</summary><div>
<pre><code>bash reinstall.sh anolis      7|8|23
                  opencloudos 8|9|23
                  rocky       8|9
                  redhat      8|9   --img=&quot;http://xxx.com/xxx.qcow2&quot;
                  oracle      8|9
                  almalinux   8|9
                  centos      9|10
                  fedora      40|41
                  nixos       24.11
                  debian      9|10|11|12
                  opensuse    15.6|tumbleweed
                  alpine      3.18|3.19|3.20|3.21
                  openeuler   20.03|22.03|24.03|25.03
                  ubuntu      16.04|18.04|20.04|22.04|24.04|24.10 [--minimal]
                  kali
                  arch
                  gentoo
                  aosc
                  fnos
</code></pre>
</div></details>
<h2 id="4-修改密码">4. 修改密码<a aria-hidden="true" href="#4-修改密码">#</a></h2>
<div><div>安全提示</div><div>
<p>请确保使用强密码，并妥善保管。</p>
</div></div>
<pre><code># 切换到 root 用户
sudo -i

# 修改 root 用户密码
# root:&lt;password&gt;: 设置 root 用户的密码
# chpasswd: 批量修改用户密码的命令
echo root:&lt;password&gt; |sudo chpasswd root
</code></pre>
<h2 id="5-优化-ssh-配置">5. 优化 SSH 配置<a aria-hidden="true" href="#5-优化-ssh-配置">#</a></h2>
<div><div>配置说明</div><div><p>
以下配置将优化 SSH 连接的安全性和性能。
</p></div></div>
<pre><code># 配置系统更新后自动重启
sudo sed -i &quot;s/^#\?\$nrconf{restart}.*/\$nrconf{restart} = \&#39;a\&#39;;/g&quot; /etc/needrestart/needrestart.conf;

# 删除可能冲突的 SSH 配置文件
rm -rf /etc/ssh/sshd_config.d/*.conf

# 修改 SSH 配置
sudo sed -i &#39;s/^#\?PermitRootLogin.*/PermitRootLogin yes/g&#39; /etc/ssh/sshd_config;  # 启用 root 登录
sudo sed -i &#39;s/^#\?Port.*/Port 3022/g&#39; /etc/ssh/sshd_config;                     # 修改默认端口为 3022
sudo sed -i &#39;s/^#\?PasswordAuthentication.*/PasswordAuthentication yes/g&#39; /etc/ssh/sshd_config;  # 启用密码认证
sudo sed -i &#39;s/^#\?UseDNS.*/UseDNS no/g&#39; /etc/ssh/sshd_config;                   # 禁用 DNS 反向解析
sudo sed -i &#39;s/^#\?GSSAPIAuthentication.*/GSSAPIAuthentication no/g&#39; /etc/ssh/sshd_config;  # 禁用 GSSAPI 认证
sudo sed -i &#39;s/^#\?ClientAliveInterval.*/ClientAliveInterval 60/g&#39; /etc/ssh/sshd_config;    # 设置客户端活动检测间隔
sudo sed -i &#39;s/^#\?ClientAliveCountMax.*/ClientAliveCountMax 10/g&#39; /etc/ssh/sshd_config;    # 设置客户端活动检测最大次数
sudo sed -i &#39;s/^#\?X11Forwarding.*/X11Forwarding no/g&#39; /etc/ssh/sshd_config;                # 禁用 X11 转发

# 修改 systemd socket 配置
sudo sed -i &#39;s/^#\?ListenStream.*/ListenStream=3022/g&#39; /usr/lib/systemd/system/ssh.socket;

# 重启 SSH 服务
service sshd restart
systemctl daemon-reload
systemctl restart ssh.socket
</code></pre>
<h2 id="6-优化内核参数">6. 优化内核参数<a aria-hidden="true" href="#6-优化内核参数">#</a></h2>
<div><div>性能优化</div><div><p>
以下配置将优化网络性能和连接稳定性。
</p></div></div>
<pre><code>tee -a /etc/sysctl.conf &lt;&lt; EOF
net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control=bbr
net.ipv4.tcp_available_congestion_control=cubic bbr
net.ipv4.tcp_fastopen=3
net.ipv4.tcp_keepalive_time=600
net.ipv4.tcp_keepalive_intvl=30
net.ipv4.tcp_keepalive_probes=5
net.ipv4.tcp_rmem=8192 262144 536870912
net.ipv4.tcp_wmem=4096 16384 536870912
EOF

# 应用配置
sysctl -p
</code></pre>
<h2 id="7-安装常用软件">7. 安装常用软件<a aria-hidden="true" href="#7-安装常用软件">#</a></h2>
<pre><code># 设置时区
sudo timedatectl set-timezone Asia/Shanghai

# 更新软件包列表并安装常用工具
apt update
apt install wget net-tools telnet fail2ban cron zip -y
</code></pre>
<h2 id="8-防火墙配置">8. 防火墙配置<a aria-hidden="true" href="#8-防火墙配置">#</a></h2>
<div><div>警告</div><div><p>
配置防火墙前请确保已保存当前 SSH 连接，避免配置错误导致无法连接。
</p></div></div>
<pre><code># 安装防火墙工具
sudo apt-get install iptables-persistent

# 配置防火墙持久化，防止重启后失效
sudo echo -e &quot;# CLOUD_IMG: This file was created/modified by the Cloud Image build process\nIPTABLES_RESTORE_NOFLUSH=no\nIP6TABLES_RESTORE_NOFLUSH=no&quot; &gt; /etc/default/netfilter-persistent
sudo iptables-save | awk &#39;{if($1==&quot;COMMIT&quot;){delete x}}$1==&quot;-A&quot;?!x[$0]++:1&#39; | sudo iptables-restore
sudo netfilter-persistent save
sudo netfilter-persistent reload

# 清除现有规则
sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT ACCEPT
sudo iptables -F
sudo iptables -X
sudo iptables -Z

# 配置基本规则
sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A OUTPUT -o lo -j ACCEPT
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

# 开放必要端口
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
sudo iptables -A INPUT -p udp --dport 22 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p udp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
sudo iptables -A INPUT -p udp --dport 443 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 8001:9999 -j ACCEPT
sudo iptables -A INPUT -p udp --dport 8001:9999 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 3022 -j ACCEPT
sudo iptables -A INPUT -p udp --dport 3022 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 5700 -j ACCEPT
sudo iptables -A INPUT -p udp --dport 5700 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 7000 -j ACCEPT
sudo iptables -A INPUT -p udp --dport 7000 -j ACCEPT

# 允许 ICMP (ping)
sudo iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT
sudo iptables -A INPUT -p icmp --icmp-type 0 -j ACCEPT

# 配置端口转发
iptables -t nat -A PREROUTING -p udp --dport 8001:9999 -j REDIRECT --to-ports 443
iptables -t nat -L PREROUTING -v -n

# 保存并应用配置
sudo iptables -L -v -n
sudo netfilter-persistent save
service iptables restart
</code></pre>
<h2 id="9-增加历史执行命令记录">9. 增加历史执行命令记录<a aria-hidden="true" href="#9-增加历史执行命令记录">#</a></h2>
<div><div>小贴士</div><div><p>
此配置将记录所有执行过的命令，方便后续查看和审计。
</p></div></div>
<pre><code>sudo bash -c &#39;cat &gt;&gt; /etc/profile &lt;&lt;EOF
# 配置历史记录的时间格式
export HISTTIMEFORMAT=&quot;%Y-%m-%d %H:%M:%S &quot;

# 设置保存历史记录的文件路径
HISTORY_FILE=&quot;\$HOME/command_history.log&quot;

# 自定义命令日志函数
log_command() {
    local HISTFILE_PATH=\$HISTFILE
    local HIST_ENTRY_NUMBER=\$1
    local HIST_ENTRY=&quot;\$(history \$HIST_ENTRY_NUMBER | tail -n 1)&quot;
    local CURRENT_USER=\$(whoami)
    local LOG_ENTRY=&quot;[USER: \$CURRENT_USER] \$HIST_ENTRY&quot;

    echo &quot;\$LOG_ENTRY&quot; &gt;&gt; \$HISTORY_FILE
}

# 在每个命令之后，将命令追加到自定义的日志文件中，同时同步到 HISTFILE
PROMPT_COMMAND=&quot;history -a; log_command 1&quot;
ulimit -SHn 1000000
EOF&#39;

# 应用配置
source /etc/profile
</code></pre>
<h2 id="10-可选配置">10. 可选配置<a aria-hidden="true" href="#10-可选配置">#</a></h2>
<h3 id="101-禁用检测更新">10.1 禁用检测更新<a aria-hidden="true" href="#101-禁用检测更新">#</a></h3>
<div><div>警告</div><div><p>
此配置适用于不需要自动更新的环境。
</p></div></div>
<pre><code>sudo bash -c &#39;cat &gt; /etc/apt/apt.conf.d/10periodic &lt;&lt;EOF
APT::Periodic::Update-Package-Lists &quot;0&quot;;
APT::Periodic::Download-Upgradeable-Packages &quot;0&quot;;
APT::Periodic::AutocleanInterval &quot;0&quot;;
EOF&#39;

sudo bash -c &#39;cat &gt; /etc/apt/apt.conf.d/20auto-upgrades &lt;&lt;EOF
APT::Periodic::Update-Package-Lists &quot;0&quot;;
APT::Periodic::Unattended-Upgrade &quot;0&quot;;
EOF&#39;
</code></pre>
<h3 id="102-登录提示文字优化">10.2 登录提示文字优化<a aria-hidden="true" href="#102-登录提示文字优化">#</a></h3>
<div><div>简单提示</div><div><p>
此配置将优化登录时的提示信息显示。
</p></div></div>
<pre><code>sudo sed -i &#39;s/^#\?ENABLED=.*/ENABLED=0/g&#39; /etc/default/motd-news;
touch /var/lib/ubuntu-advantage/hide-esm-in-motd
touch /var/lib/update-notifier/hide-esm-in-motd
rm -rf /var/lib/update-notifier/updates-available
chmod -x /etc/update-motd.d/90-updates-available
sudo rm /var/lib/ubuntu-release-upgrader/release-upgrade-available
sudo sed -i &#39;s/^#\?Prompt.*/Prompt=never/g&#39; /etc/update-manager/release-upgrades;
</code></pre>
<h3 id="103-安装-fail2ban保护您的服务器">10.3 安装 fail2ban，保护您的服务器<a aria-hidden="true" href="#103-安装-fail2ban保护您的服务器">#</a></h3>
<pre><code>apt update
apt install wget net-tools telnet -y
apt install fail2ban -y
</code></pre>
<h4 id="配置规则">配置规则<a aria-hidden="true" href="#配置规则">#</a></h4>
<pre><code>cat &gt; /etc/fail2ban/jail.local &lt;&lt;EOF
# 默认规则
[DEFAULT]
# 白名单,不受规则限制，以下规则为每60秒错误2次，永久封禁，限制访问所有端口
ignoreip = 127.0.0.1/8 ::1 223.104.0.0/16
findtime = 60s
maxretry = 2
bantime = -1
action = iptables-allports

# sshd拦截规则，注意端口填写，默认为22
[sshd]
enabled  = true
port    = 22
logpath = /var/log/auth.log

EOF
</code></pre>
<h4 id="重启服务">重启服务<a aria-hidden="true" href="#重启服务">#</a></h4>
<pre><code>systemctl restart fail2ban
systemctl enable fail2ban
systemctl status fail2ban
</code></pre>
<h4 id="常用命令">常用命令<a aria-hidden="true" href="#常用命令">#</a></h4>
<pre><code># 查看fail2ban状态
fail2ban-client status

# 查看sshd jail状态
fail2ban-client status sshd

# 解封IP
fail2ban-client set sshd unbanip IP地址

# 查看被封禁的IP列表
fail2ban-client banned
</code></pre>
<h4 id="配置详解">配置详解<a aria-hidden="true" href="#配置详解">#</a></h4>
<h5 id="主配置文件">主配置文件<a aria-hidden="true" href="#主配置文件">#</a></h5>
<p>Fail2Ban 的主配置文件是<code>/etc/fail2ban/fail2ban.conf</code>，建议创建副本<code>/etc/fail2ban/fail2ban.local</code>进行修改。</p>
<h5 id="封禁配置">封禁配置<a aria-hidden="true" href="#封禁配置">#</a></h5>
<ul>
<li><code>bantime</code>: 封禁时间长度，单位可以是 m(分钟)、d(天)或 s(秒)</li>
<li><code>findtime</code>: 计算登录失败的时间窗口</li>
<li><code>maxretry</code>: 最大失败尝试次数</li>
<li><code>ignoreip</code>: 白名单 IP，多个 IP 用空格分隔</li>
<li><code>action</code>: 封禁时采取的动作
<ul>
<li><code>action_</code>: 默认动作，拒绝流量</li>
<li><code>action_mw</code>: 封禁并发送邮件通知</li>
<li><code>action_mwl</code>: 封禁并发送邮件通知，包含相关日志</li>
<li><code>action_xarf</code>: 封禁并发送 XARF 格式邮件</li>
</ul>
</li>
</ul>
<h5 id="注意事项">注意事项<a aria-hidden="true" href="#注意事项">#</a></h5>
<ol>
<li>如果 SSH 使用密钥登录并禁用密码登录，则不需要 Fail2Ban 保护</li>
<li>修改配置后需要重启 fail2ban 服务才能生效</li>
<li>建议将常用 IP 加入白名单，避免误封</li>
<li>封禁时间设置要合理，避免影响正常用户</li>
</ol>
<h5 id="常见问题">常见问题<a aria-hidden="true" href="#常见问题">#</a></h5>
<h6 id="启动服务报错提示varlogauthlog-文件不存在">启动服务报错，提示/var/log/auth.log 文件不存在<a aria-hidden="true" href="#启动服务报错提示varlogauthlog-文件不存在">#</a></h6>
<pre><code># 最小化系统，未启用日志服务，执行以下命令启用
sudo apt-get update
sudo apt-get install rsyslog
sudo systemctl start rsyslog
sudo systemctl enable rsyslog
sudo systemctl status rsyslog
</code></pre>
<h6 id="防火墙未启用导致-fail2ban-未实际生效以下启用防火墙参考">防火墙未启用，导致 fail2ban 未实际生效，以下启用防火墙参考<a aria-hidden="true" href="#防火墙未启用导致-fail2ban-未实际生效以下启用防火墙参考">#</a></h6>
<pre><code>systemctl restart iptables
systemctl enable iptables
systemctl status iptables
</code></pre>]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[如何在 VPS.Town 服务器中安装 Syncthing]]></title>
        <id>9</id>
        <link href="https://docs.vps.town/guide/how-to-install-syncthing-vps-town"/>
        <updated>2025-04-13T14:00:00.000Z</updated>
        <summary type="html"><![CDATA[本教程详细介绍了如何在您的 Debian 12 VPS.Town 服务器上安装 Syncthing，以实现安全、去中心化的文件实时同步，方便您在多个设备间管理文件。]]></summary>
        <content type="html"><![CDATA[<h1 id="如何在-vpstown-服务器中安装-syncthing">如何在 VPS.Town 服务器中安装 Syncthing<a aria-hidden="true" href="#如何在-vpstown-服务器中安装-syncthing">#</a></h1>
<div><div>温馨提示</div><div>
<p>本文由用户 <code>k08255-lxm</code> 撰写，并已加入 <code>VPS.Town 优秀原创文章激励计划</code>，本站享有完整版权，未经允许不得转载。</p>
<p>本文已通过 <a href="/kb/community.html">VPS.Town 社区文章投稿及奖励规则 (试行稿)</a> 审核，并获得 <code>--</code> 奖励。</p>
</div></div>
<details><summary>📖 本文目录</summary><div>

</div></details>
<h2 id="什么是-syncthing">什么是 Syncthing?<a aria-hidden="true" href="#什么是-syncthing">#</a></h2>
<p>Syncthing 是一个开源、免费、跨平台的点对点 (P2P) 文件同步工具。与传统的云存储服务（如 Dropbox 或 Google Drive）不同，Syncthing 的数据传输是去中心化的，直接在您控制的设备之间进行，不经过任何中央服务器。这为您提供了更高的数据隐私性和控制权。</p>
<p>在 VPS.Town 服务器上使用 Syncthing 可以带来诸多便利：</p>
<ul>
<li><strong>服务器文件备份：</strong> 将服务器上的重要配置文件、网站数据等实时同步到您的本地电脑或其他服务器。</li>
<li><strong>多服务器文件分发：</strong> 如果您管理多个 VPS.Town 实例，可以使用 Syncthing 轻松地将文件或更新分发到所有实例。</li>
<li><strong>构建个人同步云：</strong> 结合 VPS.Town 服务器的稳定在线特性，您可以将其作为同步网络中的一个可靠节点。</li>
</ul>
<p>本教程将指导您在基于 Debian 12 的 VPS.Town 服务器上安装和基本配置 Syncthing。</p>
<h2 id="为什么选择-vpstown">为什么选择 VPS.Town?<a aria-hidden="true" href="#为什么选择-vpstown">#</a></h2>
<div><div>🔄 VPS.Town 备份解决方案</div><div>
<ol>
<li>最多可提供高达 <strong>8TB 大容量存储</strong> 的选项，随时随地备份大量数据；</li>
<li>同时提供 <strong>SSD & HDD</strong> 混合方案，读写速度更快、同步速度更稳定；</li>
<li>完善的售后保障，支持随时增加硬盘、灵活升级配置，还支持 7 天内有理由退款；</li>
<li>1TB 存储大盘鸡续费仅需 260/年或 28.5/月，硬盘一次性买断最低仅需 ¥80/TiB</li>
<li>服务器位于香港，距离大陆近，对于移动用户更加友好</li>
</ol>
<p>无 AFF 购买链接：<a href="https://vps.town/cart?fid=3&amp;gid=1" target="_blank" rel="noopener noreferrer">点我一键直达</a></p>
</div></div>
<h2 id="准备工作">准备工作<a aria-hidden="true" href="#准备工作">#</a></h2>
<div><div>运行环境说明</div><div>
<p>本教程明确针对 <strong>VPS.Town 的 Debian 12 (Bookworm) 服务器实例</strong> 操作。</p>
<p>Syncthing 的配置步骤在其他 Linux 发行版上基本一致，但软件包安装和防火墙配置命令可能不同。</p>
</div></div>
<p>在开始之前，请确保您满足以下条件：</p>
<ul>
<li>至少拥有一台运行 <strong>Debian 12</strong> 的服务器实例。</li>
<li>您需要同步的另一台设备（可以是本地电脑 Windows/macOS/Linux，或另一台服务器）。</li>
<li>具备基本的 Linux 命令行操作知识。</li>
<li>拥有服务器的 root 权限或 sudo 权限。</li>
</ul>
<h2 id="在-vpstown-服务器-debian-12-上安装-syncthing">在 VPS.Town 服务器 (Debian 12) 上安装 Syncthing<a aria-hidden="true" href="#在-vpstown-服务器-debian-12-上安装-syncthing">#</a></h2>
<p>我们将使用 Syncthing 官方推荐的 APT 仓库进行安装，以确保获取最新版本。该方法在 Debian 12 上运行良好。</p>
<ol>
<li>
<p><strong>安装依赖 (如果需要):</strong>
确保 <code>curl</code> 和 <code>gpg</code> 已安装。通常 Debian 12 默认包含，但执行一下无妨。</p>
<pre><code>sudo apt update
sudo apt install curl gpg -y
</code></pre>
</li>
<li>
<p><strong>添加 Syncthing 的 PGP 密钥：</strong></p>
<pre><code>sudo curl -s -o /usr/share/keyrings/syncthing-archive-keyring.gpg https://syncthing.net/release-key.gpg
</code></pre>
<p>这条命令会下载 Syncthing 的发布密钥并保存到指定位置，用于验证软件包的真实性。</p>
</li>
<li>
<p><strong>添加 Syncthing 的 APT 仓库：</strong>
推荐使用 <code>stable</code> (稳定版) 频道。</p>
<pre><code>echo &quot;deb [signed-by=/usr/share/keyrings/syncthing-archive-keyring.gpg] https://apt.syncthing.net/ syncthing stable&quot; | sudo tee /etc/apt/sources.list.d/syncthing.list
</code></pre>
<p>这条命令将 Syncthing 的稳定版仓库地址写入 APT 的源列表文件中。</p>
</li>
<li>
<p><strong>更新软件包列表并安装 Syncthing：</strong></p>
<pre><code>sudo apt update
sudo apt install syncthing -y
</code></pre>
<p>首先更新本地的软件包索引，然后执行安装命令。</p>
</li>
<li>
<p><strong>验证安装：</strong></p>
<pre><code>syncthing --version
</code></pre>
<p>如果看到 Syncthing 的版本号输出，则表示安装成功，输出应该类似于这样：</p>
<pre><code>syncthing v1.29.5 &quot;Gold Grasshopper&quot; (go1.24.2 linux-amd64) debian@github.syncthing.net 2025-04-12 12:55:24 UTC [noupgrade]
</code></pre>
</li>
</ol>
<h2 id="首次配置与访问-web-ui">首次配置与访问 Web UI<a aria-hidden="true" href="#首次配置与访问-web-ui">#</a></h2>
<p>Syncthing 提供了一个基于 Web 的图形用户界面 (GUI) 来进行管理。默认情况下，它只监听本地回环地址 (<code>127.0.0.1</code>) 的 <code>8384</code> 端口，需要修改配置才能从外部访问。</p>
<ol>
<li>
<p><strong>首次运行 Syncthing (生成配置)：</strong>
在服务器上执行一次 <code>syncthing</code> 命令(最好是非 root 的普通用户)，它会生成默认的配置文件，然后按 <code>Ctrl+C</code> 停止它。</p>
<pre><code>syncthing

#下面是我执行以后输出的最后几行
# [35WMX] 2025/04/13 21:15:25 INFO: Creating new HTTPS certificate
#[35WMX] 2025/04/13 21:15:25 INFO: Ready to synchronize &quot;Default Folder&quot; (default) (sendreceive)
#[35WMX] 2025/04/13 21:15:25 INFO: Completed initial scan of sendreceive folder &quot;Default Folder&quot; (default)
#[35WMX] 2025/04/13 21:15:25 INFO: GUI and API listening on 127.0.0.1:8384
#[35WMX] 2025/04/13 21:15:25 INFO: Access the GUI via the following URL: http://127.0.0.1:8384/
#[35WMX] 2025/04/13 21:15:25 INFO: My name is &quot;HKG-A2-AF0CIDDAFCR68WMC&quot;
#[35WMX] 2025/04/13 21:15:25 WARNING: Syncthing should not run as a privileged or system user. Please consider using a normal user account.
</code></pre>
</li>
<li>
<p><strong>确认并编辑配置文件：</strong>
Syncthing 的配置文件通常位于 <code>/用户名/.local/state/syncthing/config.xml</code>。您可以通过以下命令确认具体路径：</p>
<pre><code>syncthing --paths
</code></pre>
<p>记下 "Configuration" 对应的路径。下面以常见的 <code>/root/.local/state/syncthing/config.xml</code> 为例进行编辑（如果您的路径不同，请替换命令中的路径）：</p>
<pre><code>nano ~/.config/syncthing/config.xml
</code></pre>
</li>
<li>
<p><strong>允许远程访问 Web UI (重要！)：</strong>
找到 <code>&lt;gui&gt;</code> 标签下的 <code>&lt;address&gt;</code> 行，将其内容从 <code>127.0.0.1:8384</code> 修改为 <code>0.0.0.0:8384</code>：</p>
<pre><code meta=""><gui enabled="true" tls="false" debugging="false">
    <address>0.0.0.0:8384</address> <!-- 修改这里 -->
    <!-- user 和 password 稍后在 Web UI 中设置 -->
    <user></user>
    <password></password>
    <apikey>...</apikey>
    <theme>default</theme>
</gui>
</code></pre>
<p>按 <code>Ctrl+X</code>，然后按 <code>Y</code> 保存，最后按 Enter 确认。</p>
<p>也可以使用一键命令来进行修改（需替换自己的路径）</p>
<pre><code meta="">sed -i 's|<address>127.0.0.1:8384</address>|<address>0.0.0.0:8384</address>|g' /root/.local/state/syncthing/config.xml
</code></pre>
</li>
</ol>
<div><div>⚠️ 安全风险提示</div><div>
<p>将 Web UI 直接监听在 <code>0.0.0.0</code> (所有网络接口) 会将其暴露于公网，存在安全风险。<strong>强烈建议</strong> 采取以下至少一种安全措施：</p>
<ul>
<li><strong>配置防火墙：</strong> 仅允许特定可信 IP 地址访问 8384 端口。</li>
<li><strong>使用 SSH 隧道：</strong> (推荐用于临时或个人访问) 这是更安全的方式，无需修改监听地址或开放防火墙。</li>
<li><strong>设置反向代理：</strong> (推荐用于长期或多人访问) 使用 Nginx 或 Caddy 等设置反向代理，并配置 HTTPS 加密和访问控制。</li>
</ul>
</div></div>
<ol start="4">
<li>
<p><strong>启动 Syncthing 服务 (Systemd):</strong>
为了让 Syncthing 在后台持续运行并开机自启，我们使用 <code>systemd</code>。将 <code>&lt;user&gt;</code> 替换为您运行 Syncthing 的用户名（<strong>必须是您生成配置文件的那个用户</strong>）。</p>
<pre><code>sudo systemctl enable syncthing@&lt;user&gt;.service
sudo systemctl start syncthing@&lt;user&gt;.service
</code></pre>
<p>例如，如果您的用户名是 <code>vpstownuser</code>：</p>
<pre><code>sudo systemctl enable syncthing@vpstownuser.service
sudo systemctl start syncthing@vpstownuser.service
</code></pre>
<p>检查服务状态：</p>
<pre><code>systemctl status syncthing@&lt;user&gt;.service
</code></pre>
<p>如果服务正常运行，您应该看到 <code>Active (running)</code> 的状态。</p>
</li>
<li>
<p><strong>访问 Web UI 并进行初始设置：</strong></p>
<ul>
<li><strong>如果配置了公网访问:</strong> 在浏览器中访问 <code>http://&lt;你的服务器 IP&gt;:8384</code>。</li>
<li><strong>如果使用 SSH 隧道 :</strong> 在您的 <strong>本地电脑</strong> 上打开终端，运行以下命令（将 <code>&lt;user&gt;</code> 替换为您服务器的用户名，<code>&lt;你的 VPS.Town 服务器 IP&gt;</code> 替换为实际 IP）：
<pre><code>ssh -L 8384:localhost:8384 &lt;user&gt;@&lt;你的 VPS.Town 服务器 IP&gt;
</code></pre>
保持这个 SSH 连接处于活动状态，然后在您的 <strong>本地电脑</strong> 浏览器中访问 <code>http://localhost:8384</code>。这种方式更安全，无需暴露端口或修改监听地址。</li>
</ul>
<p>首次访问 Web UI 时，Syncthing 会提示您设置界面访问的用户名和密码。<strong>请务必设置一个强密码！</strong></p>
<p><img src="/assets/images/how-to-install-syncthing-vps-town/img1.png" alt="页面介绍配图"></img></p>
<p>点击提示框里面的 "Settings" (设置)，在 "GUI" 选项卡中设置 "GUI Authentication User" (用户名) 和 "GUI Authentication Password" (密码)，然后点击 "Save" (保存)。</p>
<p>浏览器会要求您使用新凭据重新登录。</p>
<p><img src="/assets/images/how-to-install-syncthing-vps-town/img2.png" alt="设置页面配图"></img></p>
<p>至此，安装完成</p>
</li>
</ol>
<h2 id="使用">使用<a aria-hidden="true" href="#使用">#</a></h2>
<p>下次填坑，可以参考其<a href="https://docs.syncthing.net/users/index.html" target="_blank" rel="noopener noreferrer">官方文档</a>或移步搜索引擎。</p>
<h2 id="总结">总结<a aria-hidden="true" href="#总结">#</a></h2>
<p>通过以上步骤，您已成功在您的 Debian 12 VPS.Town 服务器上安装并配置了 Syncthing，并与您的本地电脑建立了一个安全、自动的文件同步通道。</p>
<p>Syncthing 功能强大，还支持文件版本控制、忽略规则、单向同步等高级功能，您可以进一步探索其<a href="https://docs.syncthing.net/users/index.html" target="_blank" rel="noopener noreferrer">官方文档</a> 来满足更复杂的需求。</p>
<p>现在，您可以利用 Syncthing 轻松地备份服务器数据、在多设备间保持文件一致，享受去中心化同步带来的便利和安全性。</p>]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[VPS.Town 大盘鸡 + JuiceFS + MiniIO = 无限扩展存储空间]]></title>
        <id>14</id>
        <link href="https://docs.vps.town/guide/how-to-setup-minio-juicefs-vps-town"/>
        <updated>2025-04-13T14:00:00.000Z</updated>
        <summary type="html"><![CDATA[使用 VPS.Town 大盘鸡 搭配 JuiceFS + MiniIO 技术实现无限扩展存储空间，为您的小存储 VPS 轻松赋能、扩容硬盘更轻松！]]></summary>
        <content type="html"><![CDATA[<h1 id="vpstown-大盘鸡--juicefs--miniio--无限扩展存储空间">VPS.Town 大盘鸡 + JuiceFS + MiniIO = 无限扩展存储空间<a aria-hidden="true" href="#vpstown-大盘鸡--juicefs--miniio--无限扩展存储空间">#</a></h1>
<div><div>温馨提示</div><div>
<p>本文由用户 <code>solar</code> 撰写，并已加入 <code>VPS.Town 优秀原创文章激励计划</code>，本站享有完整版权，未经允许不得转载。</p>
<p>本文已通过 <a href="/kb/community.html">VPS.Town 社区文章投稿及奖励规则 (试行稿)</a> 审核，并获得 <code>100 元无门槛代金券</code> 奖励。</p>
</div></div>
<details><summary>📖 本文目录</summary><div>

</div></details>
<h2 id="准备工作">准备工作<a aria-hidden="true" href="#准备工作">#</a></h2>
<div><div>🌰 VPS.Town & JuiceFS 集群解决方案</div><div>
<ol>
<li>最多可提供高达 <strong>8TB 大容量存储</strong> 的选项，扩容硬盘更轻松；</li>
<li>同时提供 <strong>SSD & HDD</strong> 混合方案，读写速度更快、JuiceFS 速度更稳定；</li>
<li>完善的售后保障，12*7 在线客服，更支持 7 天有理由退款；</li>
<li>搭配 JuiceFS 使用，可以实现无限扩展存储空间，扩容硬盘更轻松！</li>
</ol>
<p>无 AFF 购买链接：<a href="https://vps.town/cart?fid=3&amp;gid=1" target="_blank" rel="noopener noreferrer">点我一键直达</a></p>
</div></div>
<ol>
<li>服务器
<ul>
<li><code>server-A</code>: <a href="https://vps.town/cart?fid=3&amp;gid=1" target="_blank" rel="noopener noreferrer">VPS Town 大盘鸡</a></li>
<li><code>server-B</code>: 任意其他 vps (例如，<a href="https://vps.town/cart?fid=3&amp;gid=3" target="_blank" rel="noopener noreferrer">VPS.Town 传家宝</a>)</li>
</ul>
</li>
<li>软件工具
<ul>
<li>MinIO</li>
<li>Juicefs</li>
<li>Redis</li>
<li>docker/podman</li>
<li>docker-compose/podman-compose</li>
</ul>
</li>
</ol>
<p>硬盘无限扩展分为以下三个步骤，<del>1. 打开冰箱门；2. 硬盘放进冰箱里；3. 关闭冰箱门</del>。</p>
<h2 id="第一步使用大盘鸡-server-a-部署-minio">第一步：使用大盘鸡 (<code>server-A</code>) 部署 MinIO<a aria-hidden="true" href="#第一步使用大盘鸡-server-a-部署-minio">#</a></h2>
<blockquote>
<p>(VPSTown 的数据盘与系统盘分开，刚好适合 MinIO)</p>
</blockquote>
<p>假设大盘的分区路径为 <code>/dev/vdb</code>，让我们格式化一下分区，创建标签名为 <code>MINIODRIVE1</code> 的 XFS 文件系统：:</p>
<pre><code meta="">mkfs.xfs /dev/vdb -L MINIODRIVE1
</code></pre>
<p>然后创建一个目录 (<code>/minio/data</code>) 挂载上去：</p>
<pre><code meta="">mkdir -p /minio/data
mount -t xfs -o "noatime,nodiratime" /dev/vdb /minio/data
</code></pre>
<p>创建 MinIO 的配置文件 <code>/etc/default/minio</code>，内容如下（注意修改用户名和密码： <code>MINIO_ROOT_USER</code>，<code>MINIO_ROOT_PASSWORD</code>）：</p>
<pre><code meta="">MINIO_ROOT_USER=minio-user-name
MINIO_ROOT_PASSWORD=minio-password-123

MINIO_VOLUMES="/data"

MINIO_OPTS="--console-address :9001"
</code></pre>
<p>接下来使用容器启动 MinIO：</p>
<blockquote>
<p>假设你已经安装 docker/podman 和 docker-compose</p>
</blockquote>
<p>Minio 的 <code>compose.yaml</code> 文件内容如下：</p>
<pre><code>version: &quot;3.8&quot;
services:
  minio_local:
    image: quay.io/minio/minio
    container_name: minio_local
    ports:
      - 9000:9000 # MinIO API 端口
      - 9001:9001 # MinIO Web 控制台端口
    volumes:
      - /minio/data:/data # 替换为上面挂载了分区的目录
      - /etc/default/minio:/etc/config.env
    environment:
      - MINIO_CONFIG_ENV_FILE=/etc/config.env # 指定配置文件路径
    command: server --console-address &quot;:9001&quot; # 启动 MinIO 服务器并指定控制台端口
    restart: always # 容器自动重启策略
</code></pre>
<p>让我们启动 Minio: <code>docker compose -f compose.yaml up -d </code></p>
<p>打开 <code>http://{机器 ip}:9001</code> 看看是否启动成功，看到如下界面说明成功</p>
<p><img src="/assets/images/how-to-setup-minio-juicefs-vps-town/minio-success.png" alt=""></img></p>
<p>输入用户名密码登录 (例如，用户名：minio-user-name, 密码：minio-password-123)，点击左侧 <code>Buckets -&gt; Create bucket</code> 创建新存储桶，例如命名为 <code>juicefs</code>：</p>
<p><img src="/assets/images/how-to-setup-minio-juicefs-vps-town/minio-create-bucket.png" alt=""></img></p>
<p>然后创建新的 keys 用于后续的 juicefs。</p>
<p>点击左侧 <code>Access Keys</code>创建新的 keys，并记录：</p>
<blockquote>
<p><img src="/assets/images/how-to-setup-minio-juicefs-vps-town/minio-api-key.png" alt=""></img></p>
</blockquote>
<p>现在 Minio 部署完成了。</p>
<h2 id="第二步在大盘鸡-server-a-上使用部署-redis">第二步：在大盘鸡 (<code>server-A</code>) 上使用部署 Redis<a aria-hidden="true" href="#第二步在大盘鸡-server-a-上使用部署-redis">#</a></h2>
<p>使用容器部署 Redis 十分简单，先找个目录创建 redis 配置文件，例如 <code>/redis/redis.conf</code>，内容如下：</p>
<pre><code meta=""># 关闭保护
protected-mode no
# 绑定监听IP地址
bind 0.0.0.0
maxmemory 1024mb
appendonly yes
appendfsync everysec
</code></pre>
<p>然后创建容器 <code>compose.yaml</code> 文件，内容如下（注意修改 <code>--requirepass</code> 后面的密码，例如 <code>redis-passwd-123</code>)：</p>
<pre><code meta="">version: "3"
services:
  juicefs-redis:
    image: redis:latest
    container_name: juicefs-redis
    deploy:
      resources:
        limits:
          memory: 2G
          cpus: "2"
    ports:
      - 6379:6379
    volumes:
      - redis-data:/data
      - ./redis.conf:/etc/redis.conf
    restart: always
    command: redis-server /etc/redis.conf --requirepass redis-passwd-123

volumes:
  db-data:
</code></pre>
<p>然后启动容器：<code>docker compose up -d</code></p>
<p>然后使用以下命令验证 redis 是否成功：</p>
<pre><code>docker exec juicefs-redis redis-cli -a redis-passwd-123 ping
</code></pre>
<p>显示 <code>pong</code> 表示 redis 启动成功，现在第二步完成了。</p>
<p><img src="/assets/images/how-to-setup-minio-juicefs-vps-town/redis.png" alt=""></img></p>
<h2 id="第三步在小盘鸡-server-b-中安装创建并挂载-juicefs">第三步：在小盘鸡 (<code>server-B</code>) 中安装、创建并挂载 Juicefs<a aria-hidden="true" href="#第三步在小盘鸡-server-b-中安装创建并挂载-juicefs">#</a></h2>
<ol>
<li>执行以下命令安装 juicefs:</li>
</ol>
<pre><code>curl -sSL https://d.juicefs.com/install | sh -
</code></pre>
<ol start="2">
<li>创建一个目录用于挂载 juicefs，例如 <code>/shared-jfs</code></li>
</ol>
<pre><code>mkdir /shared-jfs
</code></pre>
<ol start="3">
<li>创建名为 shared-jfs 的 juicefs：</li>
</ol>
<blockquote>
<p>假设：</p>
<ul>
<li>
<p>server-A ip 为：<code>1.2.3.4</code>，</p>
</li>
<li>
<p>Minio 创建的存储桶名字为 <code>juicefs</code></p>
</li>
<li>
<p>minio 的访问密钥对：</p>
<ul>
<li>access-key: <code>8lzuaquVzxmnzbl87DsU</code>,</li>
<li>secret-key: <code>UbkAcsYeeaOMebTNPJrgHme2PLGBWU8yOi1AolRc</code>，</li>
</ul>
</li>
<li>
<p>redis 密码为：<code>redis-passwd-123</code>,</p>
</li>
<li>
<p>redis 端口为：<code>6379</code>，</p>
</li>
<li>
<p>juicefs 文件系统名为 <code>shared-jfs</code></p>
</li>
</ul>
</blockquote>
<pre><code>juicefs format --storage minio --bucket http://1.2.3.4:9000/juicefs --access-key 8lzuaquVzxmnzbl87DsU --secret-key UbkAcsYeeaOMebTNPJrgHme2PLGBWU8yOi1AolRc redis://:redis-passwd-123@1.2.3.4:6379/1 shared-jfs
</code></pre>
<blockquote>
<p>注：redis 地址中最后的 1 改为其他值可以创建新的 juicefs</p>
</blockquote>
<p>成功后会在 MinIO web 控制台的 juicefs 存储桶中看到名为 <code>shared-jfs</code> 的文件夹。</p>
<p>然后挂载 juicefs 文件系统到 <code>/shared-jfs</code> 目录：</p>
<pre><code>juicefs mount -d redis://:redis-passwd-123@1.2.3.4:6379/1 /shared-jfs
</code></pre>
<blockquote>
<p>-d 表示后台运行</p>
</blockquote>
<p>最后让我们运行 juicefs 自带的性能测试看下是否成功 (这里我们关闭了大文件测试，太耗时啦 🤣)：</p>
<p>juicefs bench --big-file-size 0 /shared-jfs</p>
<p><img src="/assets/images/how-to-setup-minio-juicefs-vps-town/juicefs-bench.png" alt=""></img></p>
<p>再来看一下存储空间：</p>
<p><img src="/assets/images/how-to-setup-minio-juicefs-vps-town/juicefs-df.png" alt=""></img></p>
<h2 id="教程结束">教程结束<a aria-hidden="true" href="#教程结束">#</a></h2>
<div><div>🎉 教程结束！</div><div>
<p>啊哈，现在 <code>server-B</code> 也有一个超级大的存储空间了。</p>
<p>😁 冰箱门关闭。</p>
</div></div>]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[在 VPS.Town 上使用 Docker 部署 MinIO 个人图床完全指南]]></title>
        <id>2</id>
        <link href="https://docs.vps.town/guide/build-miniio-image-hosting-service-with-vps-town"/>
        <updated>2025-04-13T12:00:00.000Z</updated>
        <summary type="html"><![CDATA[本文详细介绍了如何使用 Docker 在 VPS.Town 服务器上部署 MinIO 对象存储服务，并通过 Nginx 反向代理和 Cloudflare 加速，打造一个高性能的个人图床。文章还包含完整的安装配置步骤和 PicGo 客户端连接指南。]]></summary>
        <content type="html"><![CDATA[<h1 id="在-vpstown-上使用-docker-部署-minio-个人图床完全指南">在 VPS.Town 上使用 Docker 部署 MinIO 个人图床完全指南<a aria-hidden="true" href="#在-vpstown-上使用-docker-部署-minio-个人图床完全指南">#</a></h1>
<div><div>温馨提示</div><div>
<p>本文由用户 <code>听风</code> 撰写，并已加入 <code>VPS.Town 优秀原创文章激励计划</code>，本站享有完整版权，未经允许不得转载。</p>
<p>本文已通过 <a href="/kb/community.html">VPS.Town 社区文章投稿及奖励规则 (试行稿)</a> 审核，并获得 <code>现金 50 元</code> 奖励。</p>
</div></div>
<details><summary>📖 本文目录</summary><div>

</div></details>
<h2 id="前言">前言<a aria-hidden="true" href="#前言">#</a></h2>
<p>MinIO 是一种开源的大型、高性能、分布式对象存储服务，可以作为个人网盘、图床的通用基座。需要注意的是，MinIO 虽然有着非常好的优化，但如果只是作为个人图床使用，我们更推荐 Lsky 这类的轻量图床应用。</p>
<div><div>适用环境</div><div><p>
本教程适用于 Debian 12 系统，其他 Linux 发行版可能需要调整部分命令。
</p></div></div>
<h2 id="准备工作">准备工作<a aria-hidden="true" href="#准备工作">#</a></h2>
<h3 id="购买-vps">购买 VPS<a aria-hidden="true" href="#购买-vps">#</a></h3>
<div><div>🖼️ VPS.Town & MiniIO + PicGo 图床解决方案</div><div>
<ol>
<li>最多可提供高达 <strong>8TB 大容量存储</strong> 的选项，随时随地为您的图床安个新家；</li>
<li>同时提供 <strong>SSD & HDD</strong> 混合方案，读写速度更快、上传图片更稳定；</li>
<li>完善的 7/12 售后保障，支持随时灵活升级配置、支持 7 天内有理由退款；</li>
<li>可在香港抗下 DMCA 版权投诉，分享图床更安全；</li>
<li>服务器位于香港，距离大陆近，对于移动用户更加友好</li>
</ol>
<p>无 AFF 购买链接：<a href="https://vps.town/cart?fid=3&amp;gid=1" target="_blank" rel="noopener noreferrer">点我一键直达</a></p>
</div></div>
<h3 id="安装-docker">安装 Docker<a aria-hidden="true" href="#安装-docker">#</a></h3>
<div><div>提示</div><div><p>
如果已安装 Docker，则可以跳过这一步，您可以使用 <code>docker -v</code> 命令检查是否已安装。
</p></div></div>
<p>Debian 12 系统可直接复制以下命令安装 docker、docker-compose，其它系统请参见 Docker 官方文档。</p>
<pre><code meta="">for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done

sudo apt-get update
sudo apt-get install ca-certificates curl -y
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
</code></pre>
<h2 id="docker-安装-minio">Docker 安装 MinIO<a aria-hidden="true" href="#docker-安装-minio">#</a></h2>
<p>首先创建并进入你的安装目录，编辑 docker-compose.yaml，这里我的目录是 <code>/root/minio</code></p>
<pre><code>mkdir -p /root/minio
cd /root/minio
vim docker-compose.yaml
</code></pre>
<p>将以下内容输入后，按下 <code>esc</code> <code>:x</code> 保存，输入 <code>docker compose up -d</code> 启动</p>
<pre><code meta="">services:
  minio:
    container_name: minio
    image: quay.io/minio/minio
    restart: always
    volumes:
      - ./data:/data
    environment:
      - TZ=Asia/Shanghai
      - MINIO_BROWSER_REDIRECT_URL=https://minio.yourdomain/minio/ui # 请在这里输入你的域名
      - MINIO_SERVER_URL=https://minio.yourdomain # 请在这里输入你的域名
      - MINIO_ROOT_USER=user # 请在这里输入你的用户名
      - MINIO_ROOT_PASSWORD=password # 请在这里输入你的密码
    ports:
      - "9001:9000"
      - "9091:9090"
    command: server /data --console-address ":9090"
</code></pre>
<div><div>安全提示</div><div><p>
请务必修改默认的用户名和密码，使用强密码增强安全性。同时确保将 yourdomain 替换为你实际使用的域名。
</p></div></div>
<h2 id="配置反向代理和-cloudflare-加速">配置反向代理和 Cloudflare 加速<a aria-hidden="true" href="#配置反向代理和-cloudflare-加速">#</a></h2>
<p>不出意外的话，你已经可以通过 <code>ip:端口号</code> 的方式访问 MinIO 的管理面板了，但考虑到存储服务的公开性，我强烈建议开启反向代理并启用 Cloudflare 加速，这里我使用 nginx proxy manager 配置反向代理，npm 的具体安装方式请参照官方文档。</p>
<p>配置 nginx 你首先需要一个域名，以 Cloudflare 为例，添加如下的 DNS 解析，<strong>注意开启小黄云</strong>。</p>
<p><img src="/assets/images/build-miniio-image-hosting-service-with-vps-town/image-20250413202218082.png" alt=""></img></p>
<div><div>小黄云说明</div><div><p>
Cloudflare 的"小黄云"是指开启了 Cloudflare 代理服务，它能为你的服务提供额外的安全防护和性能优化。
</p></div></div>
<p>由于 Cloudflare 代理会修改请求头，导致 MinIO 的鉴权出现问题，并且缓存对象存储违反了 Cloudflare 的用户协议，我们需要关闭该子域名的缓存。</p>
<p><img src="/assets/images/build-miniio-image-hosting-service-with-vps-town/image-20250413202521077.png" alt=""></img></p>
<p>在 <code>缓存</code> - <code>Cache Rules</code> 下创建一条新的规则如下</p>
<p><img src="/assets/images/build-miniio-image-hosting-service-with-vps-town/image-20250413203005683.png" alt=""></img></p>
<p>现在，我们进入 npm 的管理面板进行配置，请尽量按照我的配置方式，避免不必要的折腾。</p>
<div><div>重要提醒</div><div><p>
由于 MinIO 同 nginx 的适配非常烂，如果要关闭小黄云可能需要另外的 nginx 配置。所以建议 <code>开启小黄云+绕过缓存</code>。
</p></div></div>
<p><img src="/assets/images/build-miniio-image-hosting-service-with-vps-town/image-20250413233600362.png" alt=""></img></p>
<p><img src="/assets/images/build-miniio-image-hosting-service-with-vps-town/image-20250413233648402.png" alt=""></img></p>
<p>点设置按钮，填入以下信息：</p>
<pre><code meta="">location /minio/ui/ {
      rewrite ^/minio/ui/(.*) /$1 break;
      proxy_set_header Host $http_host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-Forwarded-Proto $scheme;
      proxy_set_header X-NginX-Proxy true;

      # This is necessary to pass the correct IP to be hashed
      real_ip_header X-Real-IP;

      proxy_connect_timeout 300;

      # To support websockets in MinIO versions released after January 2023
      proxy_http_version 1.1;
      proxy_buffering off;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection "upgrade";
      # Some environments may encounter CORS errors (Kubernetes + Nginx Ingress)
      # Uncomment the following line to set the Origin request to an empty string
      #  proxy_set_header Origin '';

      chunked_transfer_encoding off;

      proxy_pass http://172.17.0.1:9091;
   }
</code></pre>
<p><img src="/assets/images/build-miniio-image-hosting-service-with-vps-town/image-20250413233750641.png" alt=""></img></p>
<div><div>SSL 必要性</div><div><p>
务必开启 SSL。
</p></div></div>
<h2 id="配置-minio-存储桶">配置 MinIO 存储桶<a aria-hidden="true" href="#配置-minio-存储桶">#</a></h2>
<p>现在你应该可以访问 <code>https://minio.yourdomain/minio/ui</code>，输入你在 docker-compose.yaml 中填写的用户名和密码登录到 MinIO 的后台。</p>
<p>点击 <code>Create a Bucket</code> 创建一个新的存储桶。</p>
<p><img src="/assets/images/build-miniio-image-hosting-service-with-vps-town/image-20250413204745325.png" alt=""></img></p>
<p>这里以 <code>img</code> 为例，下面三个选项一般无需勾选。</p>
<p><img src="/assets/images/build-miniio-image-hosting-service-with-vps-town/image-20250413204913593.png" alt=""></img></p>
<p>创建好桶后第一步是配置权限，首先将匿名用户的对根路径的权限设为 <code>read only</code>。</p>
<p><img src="/assets/images/build-miniio-image-hosting-service-with-vps-town/image-20250413205059650.png" alt=""></img></p>
<p><strong>刷新</strong>页面后，手动调整关闭匿名用户的 <code>s3:ListBucket</code> 权限，避免被刷目录，删除红框中标记的行，及上一行结尾的逗号，并保存。</p>
<p><img src="/assets/images/build-miniio-image-hosting-service-with-vps-town/image-20250413205326303.png" alt=""></img></p>
<div><div>权限说明</div><div><p>
关闭 <code>s3:ListBucket</code> 权限是为了防止他人浏览你的存储桶中的所有文件，这是一个重要的安全措施。
</p></div></div>
<p>现在，你可以点击右上角的文件夹图标，进入 <code>img</code> 存储桶的根目录，上传一张照片，并测试他的预览和加载功能是否正常。</p>
<p><img src="/assets/images/build-miniio-image-hosting-service-with-vps-town/image-20250413205916965.png" alt=""></img></p>
<p>同时，开启一个浏览器的匿名窗口，使用以下格式的直链测试外部访问，请注意将域名和路径替换为你自己的。</p>
<p><img src="/assets/images/build-miniio-image-hosting-service-with-vps-town/image-20250413210054959.png" alt=""></img></p>
<p>如果能够正常打开，恭喜你，你的图床已经可用了。</p>
<h2 id="picgo-连接图床上传图片">PicGo 连接图床上传图片<a aria-hidden="true" href="#picgo-连接图床上传图片">#</a></h2>
<p>PicGo 是一个非常实用的 Markdown 图片上传软件，为了能够连接你搭建的 MinIO 图床，你需要为存储桶配置密钥，密钥在创建后<strong>只会显示一次，请妥善保存</strong>。</p>
<p><img src="/assets/images/build-miniio-image-hosting-service-with-vps-town/image-20250413210715130.png" alt=""></img></p>
<p>同时，你还要为 PicGo 安装一个插件。</p>
<p><img src="/assets/images/build-miniio-image-hosting-service-with-vps-town/image-20250413210835177.png" alt=""></img></p>
<p>接下来配置这个插件。注意将端口设为 <code>443</code> 并勾选 <code>useSSL</code></p>
<p><img src="/assets/images/build-miniio-image-hosting-service-with-vps-town/image-20250413211019552.png" alt=""></img></p>
<p><code>bucket</code> 是你存储桶的名称，<code>基础目录</code> 可任意填写，<code>自定义域名</code> 建议手动填写，否则图片链接会添加 443 端口，不太美观，<code>归档</code> 建议开启。</p>
<p><img src="/assets/images/build-miniio-image-hosting-service-with-vps-town/image-20250413211222401.png" alt=""></img></p>
<p>在 <code>上传区</code> 将默认图床修改为 <code>MinIO图床</code>，拖动并上传文件测试。</p>
<p><img src="/assets/images/build-miniio-image-hosting-service-with-vps-town/image-20250413211529002.png" alt=""></img></p>
<h2 id="测试图床">测试图床<a aria-hidden="true" href="#测试图床">#</a></h2>
<p><img src="/assets/images/build-miniio-image-hosting-service-with-vps-town/image-20250413233425534.png" alt=""></img></p>
<p>图片可以正常加载，至此为止，搭建完成。</p>
<details><summary>MinIO 的其他用途</summary><div><p>
除了作为图床使用外，MinIO 还可以用作：</p>
<ul>
<li>个人网盘系统</li>
<li>网站静态资源存储</li>
<li>应用程序的对象存储后端</li>
<li>备份存储解决方案</li>
</ul>
<p>你可以根据自己的需求进一步探索 MinIO 的高级功能。
</p></div></details>]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[如何将 GitHub 仓库代码迁移到使用 VPS.Town 搭建的 Gitea 中]]></title>
        <id>10</id>
        <link href="https://docs.vps.town/guide/how-to-migrate-github-repo-to-gitea-vps-town"/>
        <updated>2025-04-13T09:00:00.000Z</updated>
        <summary type="html"><![CDATA[本文介绍如何将 GitHub 等代码仓库迁移至部署在 VPS.Town 上的 Gitea 自托管平台。通过图文步骤指导用户进行公开与私有仓库的迁移，特别适合因合规问题需转移仓库的项目，如 unlock-music。]]></summary>
        <content type="html"><![CDATA[<h1 id="如何将-github-仓库代码迁移到使用-vpstown-搭建的-gitea-中">如何将 GitHub 仓库代码迁移到使用 VPS.Town 搭建的 Gitea 中<a aria-hidden="true" href="#如何将-github-仓库代码迁移到使用-vpstown-搭建的-gitea-中">#</a></h1>
<div><div>温馨提示</div><div>
<p>本文由用户 (<a href="#">赛博丁真</a>) 撰写，并已加入 <code>VPS.Town 优秀原创文章激励计划</code>，本站享有完整版权，未经允许不得转载。</p>
<p>本文已通过 <a href="/kb/community.html">VPS.Town 社区文章投稿及奖励规则 (试行稿)</a> 审核，并获得 <code>7 折循环优惠券</code> 奖励。</p>
</div></div>
<details><summary>📖 本文目录</summary><div>

</div></details>
<h2 id="引言">引言<a aria-hidden="true" href="#引言">#</a></h2>
<p>本教程将引导你如何从 GitHub 等第代码托管平台迁移至 VPS.Town 大盘机搭建的自托管 Gitea</p>
<p><code>unlock-music</code> 项目曾经因为 DMCA，被 GitHub 官方下架</p>
<p><img src="/assets/images/how-to-migrate-github-repo-to-gitea-vps-town/image.png" alt="image.png"></img></p>
<p>最近 GitHub 也开始屏蔽来自中国大陆 IP 的访问，不难想象后续还会发生什么事情：删除国人的仓库、组织，甚至封号。</p>
<p>而 <a href="http://VPS.Town" target="_blank" rel="noopener noreferrer">VPS.Town</a> 大盘机抗 DMCA，允许托管该类仓库，没有任何后顾之忧。</p>
<h3 id="vpstown-大盘机"><a href="http://VPS.Town" target="_blank" rel="noopener noreferrer">VPS.Town</a> 大盘机<a aria-hidden="true" href="#vpstown-大盘机">#</a></h3>
<div><div>💡 VPS.Town 大盘鸡解决方案</div><div>
<ol>
<li>最多可提供高达 <strong>8TB 大容量存储</strong> 的选项，非常适合存放大量项目代码与文档；</li>
<li>同时也提供 <strong>SSD & HDD</strong> 混合方案，读写速度更快、成本更低；</li>
<li>性价比高，适合个人开发者、小团队进行长期托管部署；</li>
<li>抗 DMCA 版权投诉，可用于一些敏感项目；</li>
<li>⚠️ 其中 1TB 存储大盘鸡续费仅需 260/年或 28.5/月，硬盘一次性买断最低仅需 ¥80/TiB</li>
<li>服务器位于香港，距离大陆近，延迟低，速度快</li>
</ol>
<p>无 AFF 购买链接：<a href="https://vps.town/cart?fid=3&amp;gid=1" target="_blank" rel="noopener noreferrer">点我一键直达</a></p>
</div></div>
<h2 id="选择右上角号">选择右上角+号<a aria-hidden="true" href="#选择右上角号">#</a></h2>
<p>迁移外部仓库</p>
<p><img src="/assets/images/how-to-migrate-github-repo-to-gitea-vps-town/image%201.png" alt="image.png"></img></p>
<h3 id="可选择-github-等平台">可选择 github 等平台<a aria-hidden="true" href="#可选择-github-等平台">#</a></h3>
<p><img src="/assets/images/how-to-migrate-github-repo-to-gitea-vps-town/image%202.png" alt="image.png"></img></p>
<h3 id="public-repo-无需填写-token直接迁移即可">public repo 无需填写 token，直接迁移即可<a aria-hidden="true" href="#public-repo-无需填写-token直接迁移即可">#</a></h3>
<p>private repo 请接着往下看</p>
<p><img src="/assets/images/how-to-migrate-github-repo-to-gitea-vps-town/image%203.png" alt="image.png"></img></p>
<h2 id="private-repo-迁移教程">private repo 迁移教程<a aria-hidden="true" href="#private-repo-迁移教程">#</a></h2>
<h3 id="github-创建令牌教程">github 创建令牌教程<a aria-hidden="true" href="#github-创建令牌教程">#</a></h3>
<h4 id="点击右上角头像-settings">点击右上角头像 →settings<a aria-hidden="true" href="#点击右上角头像-settings">#</a></h4>
<p><img src="/assets/images/how-to-migrate-github-repo-to-gitea-vps-town/image%204.png" alt="image.png"></img></p>
<h4 id="往下拉找到-developer-settings">往下拉，找到 developer settings<a aria-hidden="true" href="#往下拉找到-developer-settings">#</a></h4>
<p><img src="/assets/images/how-to-migrate-github-repo-to-gitea-vps-town/image%205.png" alt="image.png"></img></p>
<h4 id="选择-generate-classic-token">选择 generate classic token<a aria-hidden="true" href="#选择-generate-classic-token">#</a></h4>
<p><img src="/assets/images/how-to-migrate-github-repo-to-gitea-vps-town/image%206.png" alt="image.png"></img></p>
<h4 id="把-repo-的权限选上">把 repo 的权限选上<a aria-hidden="true" href="#把-repo-的权限选上">#</a></h4>
<p>如果需要迁移其他内容则需要给令牌更多的权限</p>
<p><img src="/assets/images/how-to-migrate-github-repo-to-gitea-vps-town/image%207.png" alt="image.png"></img></p>
<h4 id="确认后等待迁移即可">确认后等待迁移即可<a aria-hidden="true" href="#确认后等待迁移即可">#</a></h4>
<p><img src="/assets/images/how-to-migrate-github-repo-to-gitea-vps-town/image%208.png" alt="image.png"></img></p>
<h2 id="迁移成功的范本">迁移成功的范本<a aria-hidden="true" href="#迁移成功的范本">#</a></h2>
<p><a href="https://gitea.886663.xyz/agczsz/unlock-music1" target="_blank" rel="noopener noreferrer">agczsz/unlock-music1 - unlock-music1 - Gitea: Git with a cup of tea</a></p>]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[引言]]></title>
        <id>12</id>
        <link href="https://docs.vps.town/guide/how-to-self-hosted-deploy-gitea-vps-town"/>
        <updated>2025-04-13T09:00:00.000Z</updated>
        <summary type="html"><![CDATA[本文详细介绍了如何使用 VPS.Town 的大盘机部署 Gitea 代码托管平台的全过程。内容包括安装 Docker、配置 docker-compose 文件、设置反向代理与 SSL 证书，适合开发者去 GitHub 化，实现代码自托管自由。]]></summary>
        <content type="html"><![CDATA[<h1 id="使用-vpstown-大盘机搭建-gitea-自托管代码不再依赖-github">使用 VPS.Town 大盘机搭建 Gitea 自托管代码，不再依赖 GitHub<a aria-hidden="true" href="#使用-vpstown-大盘机搭建-gitea-自托管代码不再依赖-github">#</a></h1>
<div><div>温馨提示</div><div>
<p>本文由用户 (<a href="#">赛博丁真</a>) 撰写，并已加入 <code>VPS.Town 优秀原创文章激励计划</code>，本站享有完整版权，未经允许不得转载。</p>
<p>本文已通过 <a href="/kb/community.html">VPS.Town 社区文章投稿及奖励规则 (试行稿)</a> 审核，并获得 <code>现金 40 元</code> 奖励。</p>
</div></div>
<details><summary>📖 本文目录</summary><div>

</div></details>
<h1 id="引言">引言<a aria-hidden="true" href="#引言">#</a></h1>
<details><summary>本文配图</summary><div>
<p><img src="/assets/images/how-to-self-hosted-deploy-gitea-vps-town/banner.png" alt="banner"></img></p>
</div></details>
<blockquote>
<p><strong>🧩Gitea</strong> 是一个轻量级的 <strong>Git 代码托管平台</strong>，也就是说，它可以用来像 GitHub、GitLab 一样管理代码仓库。</p>
</blockquote>
<h2 id="为什么选择-gitea">为什么选择 Gitea？🚀<a aria-hidden="true" href="#为什么选择-gitea">#</a></h2>
<ol>
<li>
<p><strong>自托管（Self-hosted）🔐</strong></p>
<p>Gitea 支持完全自托管，可以在自己的服务器上安装和运行。这意味着所有的代码和数据都由自己掌控，<strong>极大地提升了数据安全性</strong>，有效防止敏感代码外泄的风险。</p>
</li>
<li>
<p><strong>避免平台风险 ❌🌐</strong></p>
<p>相比于 GitHub 可能因政策原因被阻断访问，或 Gitee 存在的内容审查机制，Gitea 作为自托管平台，不依赖第三方服务，从根本上杜绝了外部平台带来的访问限制与内容审查问题，保障了研发工作的连续性与自由性。</p>
</li>
<li>
<p><strong>灵活配置 CDN 加速 ⚡️🌍</strong></p>
<p>使用 Gitea 可以根据自身网络环境，自由选择并配置 CDN 服务，从而优化访问速度和稳定性，特别适合在多地协作或访问环境复杂的情况下使用。</p>
</li>
<li>
<p><strong>资源占用小，部署简便 🧩📦</strong></p>
<p>Gitea 是用 Go 语言编写的，编译后的单一可执行文件体积小，运行效率高，资源占用少，部署和维护都非常方便，适合中小型团队或个人开发者快速上手。</p>
</li>
<li>
<p><strong>开源社区活跃，功能不断迭代 🔄🛠️</strong></p>
<p>Gitea 拥有活跃的开源社区，持续进行功能更新与漏洞修复，保障了平台的可用性和稳定性。同时支持丰富的功能如 issue 管理、PR 流程、代码审查、Webhook 等，能够满足大多数开发场景需求。</p>
</li>
</ol>
<h2 id="其中-vpstown-的大盘鸡方案最适合-gitea-部署使用"><strong>其中 VPS.Town 的「大盘鸡」方案最适合 Gitea 部署使用</strong><a aria-hidden="true" href="#其中-vpstown-的大盘鸡方案最适合-gitea-部署使用">#</a></h2>
<div><div>🚀 VPS.Town 大盘鸡解决方案</div><div>
<ol>
<li>最多可提供高达 <strong>8TB 大容量存储</strong> 的选项，非常适合存放大量项目代码与文档；</li>
<li>同时也提供 <strong>SSD & HDD</strong> 混合方案，读写速度更快、成本更低；</li>
<li>性价比高，适合个人开发者、小团队进行长期托管部署；</li>
<li>抗 DMCA 版权投诉，可用于一些敏感项目；</li>
<li>⚠️ 其中 1TB 存储大盘鸡续费仅需 260/年或 28.5/月，硬盘一次性买断最低仅需 ¥80/TiB</li>
</ol>
<p>无 AFF 购买链接：<a href="https://vps.town/cart?fid=3&amp;gid=1" target="_blank" rel="noopener noreferrer">点我一键直达</a></p>
</div></div>
<h2 id="️-安装教程">🛠️ 安装教程<a aria-hidden="true" href="#️-安装教程">#</a></h2>
<h3 id="第一步连接到您的-vps-服务器"><strong>第一步：连接到您的 VPS 服务器</strong><a aria-hidden="true" href="#第一步连接到您的-vps-服务器">#</a></h3>
<p>使用 SSH 工具连接到您的 VPS.Town 服务器实例，确保您切换到 root 用户，以便执行后续操作。</p>
<p><img src="/assets/images/how-to-self-hosted-deploy-gitea-vps-town/image%201.png" alt=""></img></p>
<h3 id="第二步安装-docker"><strong>第二步：安装 docker</strong><a aria-hidden="true" href="#第二步安装-docker">#</a></h3>
<p>我们将使用 docker 官方的安装脚本。该脚本简化了 docker 编译安装过程，操作更加便捷。</p>
<p>安装 docker 是为了隔离系统与运行环境，保障 VPS 的安全，同时也能简化配置，节省配置时间</p>
<pre><code>curl -fsSL https://get.docker.com | bash -s docker
</code></pre>
<h2 id="第三步创建-docker-compose-配置文件">第三步：创建 docker-compose 配置文件<a aria-hidden="true" href="#第三步创建-docker-compose-配置文件">#</a></h2>
<h3 id="创建-gitea-目录">创建 gitea 目录<a aria-hidden="true" href="#创建-gitea-目录">#</a></h3>
<p>使用 <a href="https://vps.town" target="_blank" rel="noopener noreferrer">VPS.TOWN</a> 大盘机时，默认挂载目录为/home，无需对硬盘格式化</p>
<div><div>💡 VPS.Town 大盘鸡解决方案</div><div>
<ol>
<li>最多可提供高达 <strong>8TB 大容量存储</strong> 的选项，非常适合存放大量项目代码与文档；</li>
<li>同时也提供 <strong>SSD & HDD</strong> 混合方案，读写速度更快、成本更低；</li>
<li>性价比高，适合个人开发者、小团队进行长期托管部署；</li>
<li>抗 DMCA 版权投诉，可用于一些敏感项目；</li>
<li>⚠️ 其中 1TB 存储大盘鸡续费仅需 260/年或 28.5/月，硬盘一次性买断最低仅需 ¥80/TiB</li>
<li>服务器位于香港，距离大陆近，延迟低，速度快</li>
</ol>
<p>无 AFF 购买链接：<a href="https://vps.town/cart?fid=3&amp;gid=1" target="_blank" rel="noopener noreferrer">点我一键直达</a></p>
</div></div>
<p><img src="/assets/images/how-to-self-hosted-deploy-gitea-vps-town/image.png" alt="image.png"></img></p>
<pre><code>mkdir  /home/gitea #在数据盘上创建目录存放数据
mkdir gitea #存放docker-compose文件
cd ./gitea
nano ./docker-compose.yaml
</code></pre>
<h3 id="填入-docker-compose-的内容">填入 docker-compose 的内容<a aria-hidden="true" href="#填入-docker-compose-的内容">#</a></h3>
<h4 id="默认配置使用-sqlite">默认配置，使用 sqlite<a aria-hidden="true" href="#默认配置使用-sqlite">#</a></h4>
<pre><code>version: &quot;3&quot;

networks:
  gitea:
    external: false

services:
  server:
    image: gitea/gitea:1.21.1
    container_name: gitea
    environment:
      - USER_UID=1000
      - USER_GID=1000
    restart: always
    networks:
      - gitea
    volumes:
      - /home/gitea:/data #/home/gitea 可修改为自定义数据目录
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    ports:
      - &quot;&#39;127.0.0.1:3000&#39;:3000&quot; #若需要修改端口可修改127.0.0.1:3000
      - &quot;&#39;127.0.0.1:2222&#39;:22&quot; #容器内ssh端口映射，安全起见设置为本地，有需要可以重新打开
</code></pre>
<p>完成后 CTRL+X 推出，保存时选 Y</p>
<p><img src="/assets/images/how-to-self-hosted-deploy-gitea-vps-town/image%201.png" alt="image.png"></img></p>
<h3 id="启动-gitea">启动 gitea<a aria-hidden="true" href="#启动-gitea">#</a></h3>
<pre><code>docker compose up -d
</code></pre>
<p><img src="/assets/images/how-to-self-hosted-deploy-gitea-vps-town/image%202.png" alt="image.png"></img></p>
<h3 id="配合宝塔面板配置反向代理">配合宝塔面板配置反向代理<a aria-hidden="true" href="#配合宝塔面板配置反向代理">#</a></h3>
<blockquote>
<p>宝塔面板适合新手快速配置反向代理，当然，你也可以使用 1panel 等工具进行配置</p>
</blockquote>
<p>安装宝塔面板：<a href="https://www.bt.cn/new/download.html" target="_blank" rel="noopener noreferrer">宝塔面板下载，免费全能的服务器运维软件</a></p>
<p>首次进入网站设置项会提示安装 nginx，选择版本安装即可</p>
<h3 id="选择网站--反向代理--添加反代">选择网站 → 反向代理 → 添加反代<a aria-hidden="true" href="#选择网站--反向代理--添加反代">#</a></h3>
<p><img src="/assets/images/how-to-self-hosted-deploy-gitea-vps-town/image%203.png" alt="image.png"></img></p>
<h3 id="填入你的域名目标地址填入本地-ipgitea-端口">填入你的域名、目标地址填入本地 ip+gitea 端口<a aria-hidden="true" href="#填入你的域名目标地址填入本地-ipgitea-端口">#</a></h3>
<p><img src="/assets/images/how-to-self-hosted-deploy-gitea-vps-town/image%204.png" alt="image.png"></img></p>
<h3 id="1-申请-ssl-证书">1. 申请 ssl 证书<a aria-hidden="true" href="#1-申请-ssl-证书">#</a></h3>
<h4 id="将域名-ip-解析到-vps">将域名 IP 解析到 vps<a aria-hidden="true" href="#将域名-ip-解析到-vps">#</a></h4>
<p><img src="/assets/images/how-to-self-hosted-deploy-gitea-vps-town/image%205.png" alt="image.png"></img></p>
<h3 id="2-选择网站的-ssl-设置">2. 选择网站的 ssl 设置<a aria-hidden="true" href="#2-选择网站的-ssl-设置">#</a></h3>
<p><img src="/assets/images/how-to-self-hosted-deploy-gitea-vps-town/image%206.png" alt="image.png"></img></p>
<h3 id="3-使用文件验证申请证书">3. 使用文件验证申请证书<a aria-hidden="true" href="#3-使用文件验证申请证书">#</a></h3>
<p><img src="/assets/images/how-to-self-hosted-deploy-gitea-vps-town/image%207.png" alt="image.png"></img></p>
<h3 id="4-执行安装">4. 执行安装<a aria-hidden="true" href="#4-执行安装">#</a></h3>
<p>打开你的域名，按照官方指引进行设置即可（默认使用 sqlite）</p>
<p><img src="/assets/images/how-to-self-hosted-deploy-gitea-vps-town/image%207.png" alt="image.png"></img></p>
<h3 id="5-创建账户">5. 创建账户<a aria-hidden="true" href="#5-创建账户">#</a></h3>
<p>创建账户后即可使用，第一个创建的用户即为管理员账户</p>
<p><img src="/assets/images/how-to-self-hosted-deploy-gitea-vps-town/image%209.png" alt="image.png"></img></p>
<h3 id="6-创建仓库">6. 创建仓库<a aria-hidden="true" href="#6-创建仓库">#</a></h3>
<p>点击＋号，即可创建并托管你的第一个代码仓库</p>
<p><img src="/assets/images/how-to-self-hosted-deploy-gitea-vps-town/image%208.png" alt="image.png"></img></p>
<h3 id="使用方法同-github">使用方法同 github<a aria-hidden="true" href="#使用方法同-github">#</a></h3>
<p><img src="/assets/images/how-to-self-hosted-deploy-gitea-vps-town/image%209.png" alt="image.png"></img></p>
<h2 id="进阶使用-mysql-数据库进行安装">进阶：使用 MySQL 数据库进行安装<a aria-hidden="true" href="#进阶使用-mysql-数据库进行安装">#</a></h2>
<p>将 docker-compose 文件修改为以下内容：</p>
<div><div>⚠️ 强烈建议修改 MySQL 密码</div><div>
<p>虽然 docker 的网络不暴露在公网，但为了安全起见，强烈建议修改 MySQL 密码</p>
</div></div>
<pre><code>version: &quot;3&quot;

networks:
  gitea:
    external: false

services:
  server:
    image: gitea/gitea:1.21.1
    container_name: gitea
    environment:
      - USER_UID=1000
      - USER_GID=1000
      - GITEA__database__DB_TYPE=mysql #请注意修改用户名和密码
      - GITEA__database__HOST=db:3306
      - GITEA__database__NAME=gitea
      - GITEA__database__USER=gitea
      - GITEA__database__PASSWD=gitea
    restart: always
    networks:
      - gitea
    volumes:
      - /home/gitea:/data
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    ports:
      - &quot;3000:3000&quot;
      - &quot;222:22&quot;
    depends_on:
      - db

  db:
    image: mysql:8
    restart: always
    environment:
      - MYSQL_ROOT_PASSWORD=gitea #请注意修改用户名和密码
      - MYSQL_USER=gitea
      - MYSQL_PASSWORD=gitea
      - MYSQL_DATABASE=gitea
    networks:
      - gitea
    volumes:
      - ./mysql:/var/lib/mysql
</code></pre>
<p>安装时选择 mysql，填入相关信息安装即可</p>
<p><img src="/assets/images/how-to-self-hosted-deploy-gitea-vps-town/image%2010.png" alt="image.png"></img></p>]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[新人专用：兰空图床安装配置手册]]></title>
        <id>7</id>
        <link href="https://docs.vps.town/guide/how-to-install-lsky-vps-town"/>
        <updated>2025-04-13T06:34:00.000Z</updated>
        <summary type="html"><![CDATA[本文介绍了在 VPS.Town VPS (Debian 系统)上使用 Docker 安装兰空图床，并通过 Nginx 反代访问的完整步骤，适合 Docker 新手快速上手。]]></summary>
        <content type="html"><![CDATA[<div><div>温馨提示</div><div>
<p>本文由用户 <code>xiaoqingnian-</code> 撰写，并已加入 <code>VPS.Town 优秀原创文章激励计划</code>，本站享有完整版权，未经允许不得转载。</p>
<p>本文已通过 <a href="/kb/community.html">VPS.Town 社区文章投稿及奖励规则 (试行稿)</a> 审核，并获得 <code>--</code> 奖励。</p>
</div></div>
<details><summary>📖 本文目录</summary><div>

</div></details>
<h1 id="新人专用兰空图床安装配置手册">新人专用：兰空图床安装配置手册<a aria-hidden="true" href="#新人专用兰空图床安装配置手册">#</a></h1>
<p>看到有人在某坛问兰空图床的问题，意识到虽然有官方文档和社区加持，但可能仍然有一些细节存在坑点，导致安装不成功。最近入了 VPS.Town 的 A2 大盘鸡，刚好要再装一次，便分享一份安装指南，回馈社区。</p>
<p>本指南适用于在 VPS.Town 服务器(Debian 系统) 上使用 Docker 安装兰空图床，并通过宿主机上的 Nginx 进行访问。整个过程分为 5 个简单步骤，即使是没有接触过的新人同学也可以很快上手，轻松完成。</p>
<h2 id="准备工作">准备工作<a aria-hidden="true" href="#准备工作">#</a></h2>
<p><strong>需要的环境：</strong></p>
<ul>
<li>Debian 系统（确保你能正确使用 <code>SSH / VNC</code> 登入）</li>
<li>Docke 已安装</li>
<li>Nginx 已安装在宿主机</li>
<li>准备一个已经完成好 DNS 解析的域名 (例如：<code>img.domain.com</code>)</li>
</ul>
<p><strong>确认 Docker 是否正常：</strong></p>
<pre><code># 在终端输入以下命令
Docker version
# 如果显示版本号，说明Docker已安装
</code></pre>
<blockquote>
<p>未安装的话，可参考以下命令快速安装</p>
</blockquote>
<p><strong>Docker 安装</strong></p>
<ol>
<li>更新系统包列表</li>
</ol>
<pre><code>sudo apt update
sudo apt upgrade -y
</code></pre>
<ol start="2">
<li>安装必要的依赖</li>
</ol>
<pre><code>sudo apt install -y apt-transport-https ca-certificates curl gnupg lsb-release
</code></pre>
<ol start="3">
<li>添加 Docker 官方 GPG 密钥</li>
</ol>
<pre><code>curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
</code></pre>
<ol start="4">
<li>添加 Docker 仓库</li>
</ol>
<pre><code>echo &quot;deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable&quot; | sudo tee /etc/apt/sources.list.d/docker.list &gt; /dev/null
</code></pre>
<ol start="5">
<li>安装 Docker Engine</li>
</ol>
<pre><code>sudo apt install -y docker-ce docker-ce-cli containerd.io
</code></pre>
<ol start="6">
<li>验证</li>
</ol>
<pre><code>docker version
</code></pre>
<p><strong>确认 Nginx 是否正常：</strong></p>
<pre><code># 在终端输入以下命令
nginx -v
# 如果显示版本号，说明Nginx已安装
</code></pre>
<blockquote>
<p>如未安装，可 Refer <a href="/guide/how-to-install-nginx-vps-town">nginx 安装手册</a></p>
</blockquote>
<h2 id="第一步创建项目目录">第一步：创建项目目录<a aria-hidden="true" href="#第一步创建项目目录">#</a></h2>
<p>如果你没有修改挂载目录的话 ，那么你可以直接照着做就可以。建议把 Docker 数据放数据盘，不占用系统盘容量，当然如果你进行了扩容且够用的话当我没说。</p>
<p><strong>先查看挂载目录</strong></p>
<pre><code>df -h
</code></pre>
<p><img src="/assets/images/c187b4412ff5/df-h.png" alt="df-h"></img>
可以看到数据盘是在 <code>/home</code> 路径</p>
<p><strong>然后我们来创建项目目录</strong></p>
<pre><code># 创建项目目录
mkdir -p /home/Docker/lsky-pro
cd /home/Docker/lsky-pro

# 创建数据目录
mkdir -p ./mysql  # MySQL数据存储
mkdir -p ./lsky   # Lsky数据存储
</code></pre>
<h2 id="第二步创建-docker-compose-配置文件">第二步：创建 Docker Compose 配置文件<a aria-hidden="true" href="#第二步创建-docker-compose-配置文件">#</a></h2>
<pre><code># 在项目目录中创建Docker-compose.yml文件
nano Docker-compose.yml
</code></pre>
<p>复制以下内容到编辑器中：</p>
<pre><code>version: &quot;3&quot;

services:
  mysql:
    image: mysql:8.0
    container_name: lsky_mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: mysql_password # 请修改为强密码
      MYSQL_DATABASE: lsky # 数据库名称
      MYSQL_USER: lsky # 数据库用户名
      MYSQL_PASSWORD: lsky_password # 请修改为强密码
    volumes:
      - ./mysql:/var/lib/mysql
    networks:
      - lsky_network
    healthcheck:
      test: [&quot;CMD&quot;, &quot;mysqladmin&quot;, &quot;ping&quot;, &quot;-h&quot;, &quot;localhost&quot;, &quot;-u&quot;, &quot;root&quot;, &quot;-p$$MYSQL_ROOT_PASSWORD&quot;]
      interval: 5s
      timeout: 5s
      retries: 5

  lsky:
    image: halcyonazure/lsky-pro-Docker:latest
    container_name: lskypro
    restart: always
    ports:
      - &quot;127.0.0.1:8089:8089&quot; # 只监听本地接口，增加安全性
    volumes:
      - ./lsky:/var/www/html/storage
    depends_on:
      mysql:
        condition: service_healthy
    networks:
      - lsky_network

networks:
  lsky_network:
    driver: bridge
</code></pre>
<div><div>重要提示</div><div><p>
请将示例中的 <code>mysql_password</code> 和 <code>lsky_password</code> 修改为你自己的强密码
</p></div></div>
<p>按 <code>Ctrl+O</code> 保存文件，然后按 <code>Enter</code> 确认，最后按 <code>Ctrl+X</code> 退出编辑器。</p>
<h2 id="第三步启动服务">第三步：启动服务<a aria-hidden="true" href="#第三步启动服务">#</a></h2>
<pre><code># 在/home/Docker/lsky-pro目录中运行
cd /home/Docker/lsky-pro
Docker compose up -d
</code></pre>
<p>这条命令会启动 MySQL 和兰空图床两个容器，<code>-d</code> 表示在后台运行。</p>
<p><strong>检查服务是否正常运行：</strong></p>
<pre><code>Docker ps
</code></pre>
<p><img src="/assets/images/c187b4412ff5/docker-ps.png" alt="Docker-ps"></img>
你应该看到两个容器都处于 <code>Up</code> 状态，说明启动成功。</p>
<h2 id="第四步配置-nginx-反向代理">第四步：配置 Nginx 反向代理<a aria-hidden="true" href="#第四步配置-nginx-反向代理">#</a></h2>
<pre><code># 创建Nginx配置文件
nano /etc/nginx/conf.d/lsky.conf
</code></pre>
<p>复制以下内容到编辑器中（包含注释）：</p>
<pre><code>server {
    listen 80;                          # 监听80端口
    server_name img.example.com;        # [修改] 将这里改为你的域名

    # 日志文件位置
    access_log /var/log/nginx/lsky.access.log;
    error_log /var/log/nginx/lsky.error.log;

    location / {
        proxy_pass http://127.0.0.1:8089;      # 转发请求到兰空图床服务

        # 设置HTTP请求头
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        # 上传文件大小限制和超时设置
        client_max_body_size 100m;             # 允许上传的最大文件大小
        proxy_connect_timeout 120;             # 连接超时时间
        proxy_send_timeout 120;                # 发送超时时间
        proxy_read_timeout 120;                # 读取超时时间
    }
}
</code></pre>
<div><div>重要提示</div><div><p>
请将 <code>img.example.com</code> 替换为你自己的域名
</p></div></div>
<p>按 <code>Ctrl+O</code> 保存文件，然后按 <code>Enter</code> 确认，最后按 <code>Ctrl+X</code> 退出编辑器。
然后重新加载 Nginx 配置：</p>
<pre><code># 检查Nginx配置是否有错误
nginx -t

# 重新加载Nginx配置
nginx -s reload
</code></pre>
<h2 id="第五步完成兰空图床初始设置">第五步：完成兰空图床初始设置<a aria-hidden="true" href="#第五步完成兰空图床初始设置">#</a></h2>
<h3 id="1-打开浏览器访问你的域名">1. 打开浏览器，访问你的域名<a aria-hidden="true" href="#1-打开浏览器访问你的域名">#</a></h3>
<p>例如：<code>http://img.example.com</code>（替换为你自己的域名）
以上配置正确的话，会进入到兰空图床安装程序，请点击下一步
展示如下：
<img src="/assets/images/c187b4412ff5/lsky-step-1.png" alt="step-1"></img></p>
<h3 id="2-数据库配置--管理员配置页面">2. 数据库配置 & 管理员配置页面<a aria-hidden="true" href="#2-数据库配置--管理员配置页面">#</a></h3>
<p><img src="/assets/images/c187b4412ff5/lsky-step-2.png" alt="step-2"></img>
填写以下信息：</p>
<table>
<thead>
<tr>
<th>配置项</th>
<th>填写内容</th>
<th>注意事项</th>
</tr>
</thead>
<tbody>
<tr>
<td>数据库地址</td>
<td><code>lsky_mysql</code></td>
<td>这里填写容器名称，不要填写 127.0.0.1</td>
</tr>
<tr>
<td>数据库端口</td>
<td><code>3306</code></td>
<td>保持默认</td>
</tr>
<tr>
<td>数据库名称</td>
<td><code>lsky</code></td>
<td>与<code>Docker-compose.yml</code>中设置一致</td>
</tr>
<tr>
<td>数据库用户名</td>
<td><code>lsky</code></td>
<td>与<code>Docker-compose.yml</code>中设置一致</td>
</tr>
<tr>
<td>数据库用户密码</td>
<td><code>lsky_password</code></td>
<td>与<code>Docker-compose.yml</code>中设置一致</td>
</tr>
</tbody>
</table>
<div><div>注意</div><div>
<ul>
<li>数据库地址必须填写 <code>lsky_mysql</code> (容器名称)，而不是 localhost 或 127.0.0.1</li>
<li>确保密码与 Docker-compose.yml 中设置的一致</li>
</ul>
</div></div>
<p>点击【立即安装】，等待安装完成。</p>
<h3 id="3-安装完成">3. 安装完成<a aria-hidden="true" href="#3-安装完成">#</a></h3>
<p>安装成功后，系统会自动跳转到登录页面。使用刚才设置的管理员账号和密码登录系统。</p>
<h2 id="恭喜你">恭喜你<a aria-hidden="true" href="#恭喜你">#</a></h2>
<p>现在你已经成功安装了兰空图床！你可以开始使用它来管理和分享你的图片了。</p>
<p>但仍然有一些安全策略需要进行，如为你的网站添加 https ，控制并发请求数，设置合理的访问控制和防火墙策略等。另外还有一些兰空图床的具体玩法，如设置用户组，设置不同的存储策略（ e.g oss 存储,sftp ），邮件配置等等，这里也都不逐一展开了。</p>
<p>祝你玩的愉快， Have Fun!</p>
<h2 id="常见问题解决">常见问题解决<a aria-hidden="true" href="#常见问题解决">#</a></h2>
<h3 id="安装过程中断或出错">安装过程中断或出错<a aria-hidden="true" href="#安装过程中断或出错">#</a></h3>
<p>如果安装过程中断或出错，可以重置数据库后重新开始：</p>
<pre><code># 停止所有服务
cd /home/Docker/lsky-pro
Docker compose down

# 删除MySQL数据目录 再重新创建
rm -rf ./mysql &amp;&amp; mkdir ./mysql

# 重新启动服务
Docker compose up -d
</code></pre>
<p>然后重新访问你的域名，再次进行安装。</p>
<h3 id="上传图片失败">上传图片失败<a aria-hidden="true" href="#上传图片失败">#</a></h3>
<p>如果上传图片失败，可能是权限问题，执行：</p>
<pre><code># 修复上传目录权限
Docker exec -it lsky-pro chown -R www-data:www-data /var/www/html/storage/app/uploads
</code></pre>]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[在 VPS.Town 安装 Nginx 完全指南]]></title>
        <id>8</id>
        <link href="https://docs.vps.town/guide/how-to-install-nginx-vps-town"/>
        <updated>2025-04-13T04:38:00.000Z</updated>
        <summary type="html"><![CDATA[Nginx 安装指南: 介绍了什么是 Nginx 以及其安装方法、基础配置和服务管理，适合初学者快速掌握核心功能。]]></summary>
        <content type="html"><![CDATA[<h1 id="在-vpstown-安装-nginx-完全指南">在 VPS.Town 安装 Nginx 完全指南<a aria-hidden="true" href="#在-vpstown-安装-nginx-完全指南">#</a></h1>
<div><div>温馨提示</div><div>
<p>本文由用户 <code>xiaoqingnian-</code> 撰写，并已加入 <code>VPS.Town 优秀原创文章激励计划</code>，本站享有完整版权，未经允许不得转载。</p>
<p>本文已通过 <a href="/kb/community.html">VPS.Town 社区文章投稿及奖励规则 (试行稿)</a> 审核，并获得 <code>--</code> 奖励。</p>
</div></div>
<details><summary>📖 本文目录</summary><div>

</div></details>
<h2 id="1-nginx-简介">1. Nginx 简介<a aria-hidden="true" href="#1-nginx-简介">#</a></h2>
<p>Nginx (发音为 "engine-x") 是一个高性能的开源 Web 服务器和反向代理服务器。它因其高效、稳定、低内存消耗和高并发连接处理能力而闻名。</p>
<p><strong>主要用途：</strong></p>
<ul>
<li>Web 服务器：提供静态内容，如 HTML、CSS、JavaScript 等</li>
<li>反向代理：将客户端请求转发到后端服务器</li>
<li>负载均衡器：在多个后端服务器之间分配流量</li>
<li>缓存服务器：缓存静态内容，减轻后端压力</li>
<li>API 网关：管理 API 请求和响应</li>
</ul>
<p><img src="/assets/images/c187b4412ff5/nginx-architecture.svg" alt="nginx-architecture"></img></p>
<h2 id="2-安装准备">2. 安装准备<a aria-hidden="true" href="#2-安装准备">#</a></h2>
<h3 id="21-系统要求">2.1 系统要求<a aria-hidden="true" href="#21-系统要求">#</a></h3>
<p>Nginx 可以在多种操作系统上运行，包括： Linux (各种发行版)、FreeBSD、macOS、Windows。</p>
<h3 id="22-安装前的准备工作">2.2 安装前的准备工作<a aria-hidden="true" href="#22-安装前的准备工作">#</a></h3>
<p>在安装 Nginx 前，请确保系统已更新并安装必要的依赖包：</p>
<pre><code># Debian/Ubuntu 系统
sudo apt update
sudo apt install -y build-essential libpcre3 libpcre3-dev zlib1g zlib1g-dev libssl-dev

# CentOS/RHEL 系统
sudo yum update
sudo yum install -y gcc gcc-c++ make pcre pcre-devel zlib zlib-devel openssl openssl-devel
</code></pre>
<p>我更偏爱 Debian 一点，以我的本地环境(Debian 12.0)为例，给出安装截图：
<img src="/assets/images/c187b4412ff5/nginx-base.2.2.png" alt="nginx-architecture"></img></p>
<h2 id="3-安装方法">3. 安装方法<a aria-hidden="true" href="#3-安装方法">#</a></h2>
<h3 id="31-使用包管理器安装-五星推荐">3.1 使用包管理器安装 (<strong>五星推荐</strong>)<a aria-hidden="true" href="#31-使用包管理器安装-五星推荐">#</a></h3>
<p>Debian/Ubuntu</p>
<pre><code>sudo apt update
sudo apt install -y nginx
</code></pre>
<p>CentOS/RHEL</p>
<pre><code>sudo yum install epel-release
sudo yum install nginx
</code></pre>
<p>安装完记的去设置开机启动，参见<a href="#5-nginx-%E7%AE%A1%E7%90%86">Nginx 管理</a>。</p>
<h3 id="32-源代码编译安装">3.2 源代码编译安装<a aria-hidden="true" href="#32-源代码编译安装">#</a></h3>
<p>源码安装可以个性化选择想要的模块，集成自己想要的第三方模块，还可以针对特定硬件做优化。
但对于我们普通用户来说可以但没必要。以前玩树莓派的时候编过，现在没有热情了没有再完整编译安装过，这里也不做推荐。只是为了文档完整性，作为补充。</p>
<p><img src="/assets/images/c187b4412ff5/nginx-source-install.svg" alt="nginx-source-install"></img></p>
<p>步骤 1:下载源码包</p>
<pre><code># 创建下载目录
mkdir -p ~/nginx-build &amp;&amp; cd ~/nginx-build

# 下载最新稳定版
wget http://nginx.org/download/nginx-1.24.0.tar.gz
</code></pre>
<p>步骤 2: 解压源码包</p>
<pre><code>tar -zxvf nginx-1.24.0.tar.gz
cd nginx-1.24.0
</code></pre>
<p>步骤 3:配置编译选项</p>
<pre><code>./configure \
  --prefix=/usr/local/nginx \
  --with-http_ssl_module \
  --with-http_v2_module \
  --with-http_realip_module \
  --with-http_gzip_static_module \
  --with-http_stub_status_module
</code></pre>
<p>步骤 4: 编译和安装</p>
<pre><code># 编译
make

# 安装
sudo make install
</code></pre>
<h3 id="33-验证安装">3.3 验证安装<a aria-hidden="true" href="#33-验证安装">#</a></h3>
<pre><code># 检查 Nginx 版本
/usr/local/nginx/sbin/nginx -v

# 检查配置文件语法
/usr/local/nginx/sbin/nginx -t
</code></pre>
<p><img src="/assets/images/c187b4412ff5/nginx-base.3.3.png" alt="nginx-architecture"></img></p>
<h2 id="4配置-nginx">4.配置 Nginx<a aria-hidden="true" href="#4配置-nginx">#</a></h2>
<h3 id="41-目录结构">4.1 目录结构<a aria-hidden="true" href="#41-目录结构">#</a></h3>
<p>安装完成后， Nginx 的主要目录结构如下：</p>
<table>
<thead>
<tr>
<th>目录/文件</th>
<th>描述</th>
</tr>
</thead>
<tbody>
<tr>
<td>/etc/nginx/ 或 /usr/local/nginx/conf/</td>
<td>配置文件目录</td>
</tr>
<tr>
<td>/etc/nginx/nginx.conf 或 /usr/local/nginx/conf/nginx.conf</td>
<td>主配置文件</td>
</tr>
<tr>
<td>/etc/nginx/sites-available/</td>
<td>可用站点配置</td>
</tr>
<tr>
<td>/etc/nginx/sites-enabled/</td>
<td>已启用站点配置</td>
</tr>
<tr>
<td>/var/log/nginx/ 或 /usr/local/nginx/logs/</td>
<td>日志文件目录</td>
</tr>
<tr>
<td>/usr/share/nginx/html/ 或 /usr/local/nginx/html/</td>
<td>默认网站文件目录</td>
</tr>
</tbody>
</table>
<h3 id="42-常见配置场景">4.2 常见配置场景<a aria-hidden="true" href="#42-常见配置场景">#</a></h3>
<p>静态网站配置</p>
<pre><code>nginxserver {
    listen 80;
    server_name example.com www.example.com;
    root /var/www/example.com;
    index index.html;

    location / {
        try_files $uri $uri/ =404;
    }
}
</code></pre>
<p>反向代理配置</p>
<pre><code>nginxserver {
    listen 80;
    server_name api.example.com;

    location / {
        proxy_pass http://localhost:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}
</code></pre>
<p>负载均衡配置</p>
<pre><code>nginxupstream backend {
    server backend1.example.com weight=3;
    server backend2.example.com;
    server backend3.example.com;
}

server {
    listen 80;
    server_name example.com;

    location / {
        proxy_pass http://backend;
    }
}
</code></pre>
<h2 id="5-nginx-管理">5. Nginx 管理<a aria-hidden="true" href="#5-nginx-管理">#</a></h2>
<h3 id="51-服务控制">5.1 服务控制<a aria-hidden="true" href="#51-服务控制">#</a></h3>
<p>系统服务方式 (systemd)</p>
<pre><code># 启动 Nginx
sudo systemctl start nginx

# 停止 Nginx
sudo systemctl stop nginx

# 重启 Nginx
sudo systemctl restart nginx

# 重新加载配置
sudo systemctl reload nginx

# 查看状态
sudo systemctl status nginx

# 设置开机启动 (建议开启)
sudo systemctl enable nginx
</code></pre>
<p>手动控制</p>
<pre><code># 启动 Nginx
sudo nginx

# 停止 Nginx
sudo nginx -s stop

# 优雅停止（等待请求处理完毕）
sudo nginx -s quit

# 重新加载配置
sudo nginx -s reload

# 检查配置文件语法
sudo nginx -t
</code></pre>
<h2 id="6-extra">6. Extra<a aria-hidden="true" href="#6-extra">#</a></h2>
<p>还有一些别的配置，如日志管理， Nginx 性能优化、安全配置，这里暂且不谈，有机会在下一篇我们再聊。</p>
<h2 id="refer">Refer<a aria-hidden="true" href="#refer">#</a></h2>
<p><a href="https://nginx.org/" target="_blank" rel="noopener noreferrer">1. Nginx 官方手册</a></p>
<p><a href="https://github.com/nginx/nginx" target="_blank" rel="noopener noreferrer">2. Nginx Github 仓库</a></p>]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[如何在 VPS.Town 上安装一套可以自动更新的番剧影音系统]]></title>
        <id>4</id>
        <link href="https://docs.vps.town/guide/how-to-install-autobangumi-vps-town"/>
        <updated>2025-04-12T14:33:00.000Z</updated>
        <summary type="html"><![CDATA[本文基于 Debian 12 使用 AutoBangumi 配合 Mikanani 网站订阅相关番剧 RSS 并推送至 Qbittorrent自动进行下载，完成后对番剧进行重命名以便 Emby 服务识别刮削信息来实现一套完整的番剧自动更新影音系统]]></summary>
        <content type="html"><![CDATA[<h1 id="如何在-vpstown-上安装一套可以自动更新的番剧影音系统">如何在 VPS.Town 上安装一套可以自动更新的番剧影音系统<a aria-hidden="true" href="#如何在-vpstown-上安装一套可以自动更新的番剧影音系统">#</a></h1>
<details><summary>📖 本文目录</summary><div>

</div></details>
<h2 id="服务器配置阶段">服务器配置阶段<a aria-hidden="true" href="#服务器配置阶段">#</a></h2>
<h3 id="第一步-部署安装-docker-与-docker-compose">第一步 部署安装 Docker 与 Docker-compose<a aria-hidden="true" href="#第一步-部署安装-docker-与-docker-compose">#</a></h3>
<pre><code>curl -fsSL https://get.docker.com | bash -s docker
curl -L &quot;https://github.com/docker/compose/releases/download/v2.35.0/docker-compose-$(uname -s)-$(uname -m)&quot; -o /usr/local/bin/docker-compose &amp;&amp; chmod +x /usr/local/bin/docker-compose
</code></pre>
<blockquote>
<p>文章使用编写时 Docker-compose 最新版本，如后续部署请查看版本发行地址： <a href="https://github.com/docker/compose/releases" target="_blank" rel="noopener noreferrer">https://github.com/docker/compose/releases</a></p>
</blockquote>
<h3 id="第二步-检查磁盘目录">第二步 检查磁盘目录<a aria-hidden="true" href="#第二步-检查磁盘目录">#</a></h3>
<p>确认存储盘挂载目录 (默认为 <code>/home</code>)</p>
<p><img src="/assets/images/how-to-install-autobangumi-vps-town/image-1.png" alt="挂载目录指引"></img></p>
<h3 id="第三步-创建数据目录">第三步 创建数据目录<a aria-hidden="true" href="#第三步-创建数据目录">#</a></h3>
<pre><code>  cd /home
  mkdir anime
  cd anime
  mkdir autoBangumi qbittorrent emby
</code></pre>
<h3 id="第四步-将代码复制并粘贴至-anime-目录下命名为-docker-composeyml">第四步 将代码复制并粘贴至 anime 目录下，命名为 docker-compose.yml<a aria-hidden="true" href="#第四步-将代码复制并粘贴至-anime-目录下命名为-docker-composeyml">#</a></h3>
<pre><code>version: &quot;3.8&quot;

services:
  autobangumi:
    image: ghcr.io/estrellaxd/auto_bangumi:latest
    container_name: AutoBangumi
    restart: unless-stopped
    ports:
      - &quot;27892:7892&quot;
    environment:
      TZ: Asia/Shanghai
      PUID: &quot;${PUID:-1000}&quot;
      PGID: &quot;${PGID:-1000}&quot;
      UMASK: &quot;022&quot;
    volumes:
      - ./autobangumi/config:/app/config
      - ./autobangumi/data:/app/data
    networks:
      - media
    dns:
      - 8.8.8.8

  qbittorrent:
    image: lscr.io/linuxserver/qbittorrent:5.0.4
    container_name: qbittorrent
    restart: unless-stopped
    ports:
      - &quot;28989:28989&quot;
      - &quot;26881:26881&quot;
      - &quot;26881:26881/udp&quot;
    environment:
      PUID: 1000
      PGID: 1000
      TZ: Asia/Shanghai
      WEBUI_PORT: 28989
      TORRENTING_PORT: 26881
    volumes:
      - ./qbittorrent/appdata:/config
      - ./qbittorrent/downloads:/downloads
    networks:
      - media

  embyserver:
    image: emby/embyserver:4.9.0.43
    container_name: embyserver
    restart: unless-stopped
    ports:
      - &quot;28096:8096&quot;
    volumes:
      - ./emby/config:/config
      - ./qbittorrent/downloads:/mnt/share1
    networks:
      - media

networks:
  media:
    driver: bridge
</code></pre>
<p>端口分别为：</p>
<ul>
<li>AutoBangumi：27892</li>
<li>qBittorrent：28989</li>
<li>emby：28096</li>
</ul>
<h3 id="第五步-启动容器">第五步 启动容器<a aria-hidden="true" href="#第五步-启动容器">#</a></h3>
<pre><code>docker-compose up -d
</code></pre>
<p><img src="/assets/images/how-to-install-autobangumi-vps-town/image-2.png" alt="启动容器指引"></img></p>
<p>恭喜你，三个服务就已经部署完成了接下来需要打开浏览器进行配置</p>
<h2 id="web-配置阶段">Web 配置阶段<a aria-hidden="true" href="#web-配置阶段">#</a></h2>
<h3 id="第一步-下载器服务配置">第一步 下载器服务配置<a aria-hidden="true" href="#第一步-下载器服务配置">#</a></h3>
<ol>
<li>
<p>首先，我们需要查看 qBittorrent 的日志来获取临时密码</p>
<pre><code>docker logs qbittorrent
</code></pre>
<p><img src="/assets/images/how-to-install-autobangumi-vps-town/image-3.png" alt="获取密码指引"></img></p>
</li>
<li>
<p>打开浏览器访问 <a href="http://IP:28989" target="_blank" rel="noopener noreferrer">http://IP:28989</a></p>
<p>账号：admin</p>
<p>密码为获取到的临时密码</p>
</li>
<li>
<p>修改语言和密码配置</p>
<p>成功登录进界面后默认为英语，我们需要修改他为常用语言并修改临时密码，首先查看左上角顶栏菜单 Tools 菜单下的 Options...</p>
<p><img src="/assets/images/how-to-install-autobangumi-vps-town/image-4.png" alt="下载器修改语言指引-1"></img></p>
<p>打开设置界面第一页点选下拉框，将语言选择为常用语言</p>
<p><img src="/assets/images/how-to-install-autobangumi-vps-town/image-5.png" alt="下载器修改语言指引-2"></img></p>
<p>选择后点击下方 Save 保存语言配置</p>
<p><img src="/assets/images/how-to-install-autobangumi-vps-town/image-6.png" alt="下载器修改语言指引-3"></img></p>
<p>保存完成后，再次进入“选项”菜单，选择横向菜单栏中的 WebUI 进行用户名与密码修改</p>
<p><img src="/assets/images/how-to-install-autobangumi-vps-town/image-7.png" alt="下载器修改密码指引"></img></p>
<p>建议将用户名与密码都修改为自定义配置</p>
</li>
</ol>
<h3 id="第二步-autobangumi-配置">第二步 AutoBangumi 配置<a aria-hidden="true" href="#第二步-autobangumi-配置">#</a></h3>
<ol>
<li>
<p>首先，打开浏览器访问 <a href="http://IP:27892" target="_blank" rel="noopener noreferrer">http://IP:27892</a></p>
<p>用户名：admin</p>
<p>密码：adminadmin</p>
</li>
<li>
<p>修改用户名与密码</p>
<p>登录成功后，点选右上角方形图标选择账户设置</p>
<p><img src="/assets/images/how-to-install-autobangumi-vps-town/image-8.png" alt="订阅器修改密码指引-1"></img></p>
<p>弹出修改账户窗口，建议用户名与密码都修改为自定义配置设置完成后点选更新</p>
<p><img src="/assets/images/how-to-install-autobangumi-vps-town/image-9.png" alt="订阅器修改密码指引-2"></img></p>
</li>
<li>
<p>配置下载器信息</p>
<p>查看左侧边栏，选择齿轮图标进入设置界面</p>
<p><img src="/assets/images/how-to-install-autobangumi-vps-town/image-10.png" alt="订阅器修改配置指引-1"></img></p>
<p>进入设置界面后，点击下载设置展开选项卡</p>
<p><img src="/assets/images/how-to-install-autobangumi-vps-town/image-11.png" alt="订阅器修改配置指引-2"></img></p>
<p>分别填写下载器地址、用户名、密码</p>
<p><img src="/assets/images/how-to-install-autobangumi-vps-town/image-12.png" alt="订阅器修改配置指引-3"></img></p>
<p>将以上信息修改为实际下载器的配置，完成后点击右下角应用</p>
<p><img src="/assets/images/how-to-install-autobangumi-vps-town/image-13.png" alt="订阅器修改配置指引-4"></img></p>
</li>
</ol>
<h3 id="第三步-订阅番剧">第三步 订阅番剧<a aria-hidden="true" href="#第三步-订阅番剧">#</a></h3>
<ol>
<li>
<p>首先，使用浏览器打开网址：<a href="https://mikanani.me/%EF%BC%8C%E5%A6%82%E6%9E%9C%E4%BD%A0%E5%9C%A8%E5%9B%BD%E5%86%85%E4%B8%94%E6%B2%A1%E6%9C%89%E7%A7%91%E5%AD%A6%E5%8F%AF%E4%BB%A5%E8%AE%BF%E9%97%AE%EF%BC%9Ahttps://mikanime.tv/" target="_blank" rel="noopener noreferrer">https://mikanani.me/，如果你在国内且没有科学可以访问：https://mikanime.tv/</a></p>
<p>进入网站后，如果没有账户请先查看右上角选择注册</p>
<p><img src="/assets/images/how-to-install-autobangumi-vps-town/image-14.png" alt="网站指引注册指引-1"></img></p>
<p>进入注册界面，填入相关信息并点击底部注册按钮</p>
<p><img src="/assets/images/how-to-install-autobangumi-vps-town/image-15.png" alt="网站指引注册指引-2"></img></p>
<p>注册完成后登录即可，本文不过多赘述</p>
<p>登录后可以向下翻阅新番列表，对希望订阅的番剧点击展开菜单后订阅对应字幕组和字幕</p>
<p><img src="/assets/images/how-to-install-autobangumi-vps-town/image-16.png" alt="网站订阅指引-1"></img></p>
<p>订阅后在顶部会显示订阅番剧的信息，点击右下角的 RSS 订阅 左侧图标按钮可以进入链接</p>
<p><img src="/assets/images/how-to-install-autobangumi-vps-town/image-17.png" alt="网站订阅指引-2"></img></p>
<p>可以右键复制也可以打开新页面后复制链接地址</p>
<p><img src="/assets/images/how-to-install-autobangumi-vps-town/image-18.png" alt="网站订阅指引-3"></img></p>
</li>
</ol>
<h3 id="第四步-设置番剧自动推送下载">第四步 设置番剧自动推送下载<a aria-hidden="true" href="#第四步-设置番剧自动推送下载">#</a></h3>
<ol>
<li>
<p>首先，打开 AutoBangumi 页面地址为：<a href="http://IP:27892/" target="_blank" rel="noopener noreferrer">http://IP:27892/</a></p>
<p>点击右上角顶栏加号图标，添加 RSS 信息将上一步骤获取的订阅链接填入第一栏并打开聚合 RSS 开关点击添加</p>
<p><img src="/assets/images/how-to-install-autobangumi-vps-town/image-19.png" alt="订阅器番剧配置指引-1"></img></p>
</li>
<li>
<p>查看订阅状态，点击侧边栏 RSS 图标</p>
<p><img src="/assets/images/how-to-install-autobangumi-vps-town/image-20.png" alt="订阅器番剧配置指引-2"></img></p>
<p>可以查看当前的 RSS 订阅，也可以设置启动与停止状态</p>
<p><img src="/assets/images/how-to-install-autobangumi-vps-town/image-21.png" alt="订阅器番剧配置指引-3"></img></p>
<p>恭喜你到这里订阅下载服务就已经配置完成，订阅刷新大概需要 10 分钟左右稍等片刻就可以看到在 qBittorrent 中的下载状态</p>
<p><img src="/assets/images/how-to-install-autobangumi-vps-town/image-22.png" alt="订阅器番剧配置指引-4"></img></p>
<p>待下载部分完成后再进入下一个步骤</p>
</li>
</ol>
<h3 id="第五步-emby-影音库配置">第五步 Emby 影音库配置<a aria-hidden="true" href="#第五步-emby-影音库配置">#</a></h3>
<ul>
<li>
<p>首先，打开浏览器访问：<a href="http://IP:28096" target="_blank" rel="noopener noreferrer">http://IP:28096</a></p>
<p>成功进入页面后按照向导进行配置，第一个是选择显示语言请选择您的常用语言并点击 Next</p>
<p><img src="/assets/images/how-to-install-autobangumi-vps-town/image-23.png" alt="影音库初始化指引-1"></img></p>
<p>第二个页面设置用户名与密码，建议复杂一些完成后点击 Next</p>
<p><img src="/assets/images/how-to-install-autobangumi-vps-town/image-24.png" alt="影音库初始化指引-2"></img></p>
<p>第三个界面为媒体库设置，这里先跳过直接点击 Next 按钮</p>
<p><img src="/assets/images/how-to-install-autobangumi-vps-town/image-25.png" alt="影音库初始化指引-3"></img></p>
<p>第四个界面为是否开启远程连接，这里默认开启可以直接点击 Next 按钮</p>
<p><img src="/assets/images/how-to-install-autobangumi-vps-town/image-26.png" alt="影音库初始化指引-4"></img></p>
<p>最后一个界面，同意协议后点击 Next 按钮</p>
<p><img src="/assets/images/how-to-install-autobangumi-vps-town/image-27.png" alt="影音库初始化指引-5"></img></p>
<p>到这里前期配置就完成了，点击 Finish 按钮结束配置</p>
<p><img src="/assets/images/how-to-install-autobangumi-vps-town/image-28.png" alt="影音库初始化指引-6"></img></p>
<p>结束配置后 Emby 会跳转至登录页面，首先点击手动登录</p>
<p><img src="/assets/images/how-to-install-autobangumi-vps-town/image-29.png" alt="影音库初始化指引-7"></img></p>
<p>跳转页面后，输入设定的用户名与密码并点击登录</p>
<p><img src="/assets/images/how-to-install-autobangumi-vps-town/image-30.png" alt="影音库初始化指引-8"></img></p>
<p>登录成功后，点击右上角齿轮图标进入设置</p>
<p><img src="/assets/images/how-to-install-autobangumi-vps-town/image-31.png" alt="影音库配置指引-1"></img></p>
<p>进入设置后，点击左侧边栏中媒体库选项</p>
<p><img src="/assets/images/how-to-install-autobangumi-vps-town/image-32.png" alt="影音库配置指引-2"></img></p>
<p>点击新增媒体库</p>
<p><img src="/assets/images/how-to-install-autobangumi-vps-town/image-33.png" alt="影音库配置指引-3"></img></p>
<p>弹出菜单后，第一个内容类型选择电视节目第二个名称可自定义填写完成后点击下方添加按钮</p>
<p><img src="/assets/images/how-to-install-autobangumi-vps-town/image-34.png" alt="影音库配置指引-4"></img></p>
<p>进入路径菜单后，如您使用的是默认配置则选择图中路径即可</p>
<p><img src="/assets/images/how-to-install-autobangumi-vps-town/image-35.png" alt="影音库配置指引-5"></img></p>
<p>进入目录后继续点击 Bangumi 文件夹</p>
<p><img src="/assets/images/how-to-install-autobangumi-vps-town/image-36.png" alt="影音库配置指引-6"></img></p>
<p>进入目录后点击确定按钮</p>
<p><img src="/assets/images/how-to-install-autobangumi-vps-town/image-37.png" alt="影音库配置指引-7"></img></p>
<p>确认后回到媒体库菜单，下方选项可以参考我的配置也可以自行按照经验设定</p>
<p><img src="/assets/images/how-to-install-autobangumi-vps-town/image-38.png" alt="影音库配置指引-8"></img></p>
<p><img src="/assets/images/how-to-install-autobangumi-vps-town/image-39.png" alt="影音库配置指引-9"></img></p>
<p><img src="/assets/images/how-to-install-autobangumi-vps-town/image-40.png" alt="影音库配置指引-10"></img></p>
<p><img src="/assets/images/how-to-install-autobangumi-vps-town/image-41.png" alt="影音库配置指引-11"></img></p>
<p><img src="/assets/images/how-to-install-autobangumi-vps-town/image-42.png" alt="影音库配置指引-12"></img></p>
<p>下方为默认配置，完成后点击确定</p>
<p><img src="/assets/images/how-to-install-autobangumi-vps-town/image-43.png" alt="影音库配置指引-13"></img></p>
<p>等待自动刮削完成</p>
<p><img src="/assets/images/how-to-install-autobangumi-vps-town/image-44.png" alt="影音库配置指引-14"></img></p>
<p>完成后点击左侧菜单栏选择首页，查看刮削后的媒体信息</p>
<p><img src="/assets/images/how-to-install-autobangumi-vps-town/image-45.png" alt="影音库配置指引-15"></img></p>
<p>可以看到大部分内容已经刮削完毕，部分错误可以手动刮削进行处理</p>
<p><img src="/assets/images/how-to-install-autobangumi-vps-town/image-46.png" alt="影音库配置指引-16"></img></p>
</li>
</ul>
<h2 id="-结语">🎉 结语<a aria-hidden="true" href="#-结语">#</a></h2>
<p>至此，我们已经完成了 AutoBangumi + qBittorrent + Emby 的联动配置，实现了番剧自动订阅 → 下载 → 播放 的完整自动化流程。</p>
<p>你可以进一步优化：</p>
<ul>
<li>配置 Nginx/Caddy 做反向代理 + HTTPS</li>
<li>使用 DDNS 配置外部访问</li>
<li>配合 Telegram 实现推送通知</li>
<li>使用 BT 或 1Panel 面板简化容器管理</li>
</ul>]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[查看 Cloudreve 状态]]></title>
        <id>5</id>
        <link href="https://docs.vps.town/guide/how-to-install-cloudreve-v4-vps-town"/>
        <updated>2025-04-12T07:00:00.000Z</updated>
        <summary type="html"><![CDATA[全面图文教程，手把手教你在 Linux 服务器上搭建 Cloudreve 私有云网盘，附带 Docker、反向代理、从机节点和离线下载配置方法。]]></summary>
        <content type="html"><![CDATA[<h1 id="cloudreve-v4-私有云网盘搭建与优化全攻略">Cloudreve V4 私有云网盘搭建与优化全攻略<a aria-hidden="true" href="#cloudreve-v4-私有云网盘搭建与优化全攻略">#</a></h1>
<details><summary>📖 本文目录</summary><div>

</div></details>
<h2 id="-项目简介">📦 项目简介<a aria-hidden="true" href="#-项目简介">#</a></h2>
<p>Cloudreve 是一款开源网盘系统，支持多用户、多存储策略（本地、S3、Ali OSS、OneDrive 等），适合搭建私有云盘或文件分享服务。</p>
<p>✅ 特性：</p>
<ul>
<li>多用户、多存储支持</li>
<li>分享系统、团队协作、离线下载</li>
<li>Docker / 从机分布式部署</li>
<li>可接入 下载独立 CDN + 多个自定义域名</li>
</ul>
<h2 id="-环境准备">🧰 环境准备<a aria-hidden="true" href="#-环境准备">#</a></h2>
<p>推荐部署环境：VPS.Town A2 系列</p>
<p>注：这里用捐赠版进行演示说明</p>
<ul>
<li><strong>系统</strong>：Debian 12 或 Ubuntu 22.04</li>
<li><strong>CPU</strong>：1 核以上</li>
<li><strong>内存</strong>：1 GB 以上</li>
<li><strong>硬盘</strong>：系统盘 SSD，推荐带 HHD 的独立数据盘 A2 系列</li>
<li><strong>网络</strong>：1 IPV4</li>
</ul>
<p>必备工具：</p>
<ul>
<li>SSH 终端（FinalShell、XShell）</li>
<li>能上网的电脑</li>
<li>会仔细阅读理解的大脑</li>
</ul>
<h2 id="-下载安装-cloudreve">📥 下载安装 Cloudreve<a aria-hidden="true" href="#-下载安装-cloudreve">#</a></h2>
<p>前往官方 Release 页面下载 Cloudreve 程序：</p>
<p>👉 <a href="https://github.com/cloudreve/Cloudreve/releases" target="_blank" rel="noopener noreferrer">Cloudreve Releases</a></p>
<p>选择与你系统架构相符的版本（这里选择 linux_amd64），使用 FinalShell 等工具上传至服务器 <code>/root</code> 目录。</p>
<p>为什么选择 <code>linux_amd64</code> ？</p>
<p><code>linux_amd64</code> 表示：
系统平台：Linux
CPU 架构：amd64，也叫 x86_64，常见于大多数主流云服务器、VPS 和普通电脑
只要你用的是 Linux 操作系统 + x86/64 架构的 CPU，就选 linux_amd64</p>
<h3 id="-安装命令示例">📦 安装命令示例：<a aria-hidden="true" href="#-安装命令示例">#</a></h3>
<pre><code>cd /root
chmod +x cloudreve
</code></pre>
<p>这代表了赋予 Cloudreve 可执行权限，如果无法打开 有可能就是这步出问题了。</p>
<h3 id="-安装文件示意">📸 安装文件示意：<a aria-hidden="true" href="#-安装文件示意">#</a></h3>
<p><img src="/assets/images/how-to-install-cloudreve-v4-vps-town/cloudreve-download.jpg" alt="Cloudreve下载"></img></p>
<h2 id="-首次运行与激活">🚀 首次运行与激活<a aria-hidden="true" href="#-首次运行与激活">#</a></h2>
<pre><code>./cloudreve
# 捐赠版则需要运行下面这个，需要授权的：
./cloudreve --license-key &quot;你的授权密钥&quot;
</code></pre>
<p>新版本在打开时需要进行 --license-key 授权，v3 版本的则不需要。
运行后按 <code>Ctrl + C</code> 停止程序，进入配置阶段。</p>
<p><img src="/assets/images/how-to-install-cloudreve-v4-vps-town/first-run.jpg" alt="首次运行输出"></img>
首次运行需要初始化数据库、配置文件等
（如果直接退出了，则说明有地方没有配置对）</p>
<h2 id="-配置守护进程-systemd">🔁 配置守护进程 systemd<a aria-hidden="true" href="#-配置守护进程-systemd">#</a></h2>
<p>配置好进程守护才能保证进程的运行，至关重要。
新建服务文件：</p>
<pre><code>apt update -y
apt install vim -y
sudo vim /etc/systemd/system/cloudreve.service
</code></pre>
<p>填入的内容如下：</p>
<pre><code>[Unit]
Description=Cloudreve
After=network.target

[Service]
WorkingDirectory=/root
ExecStart=/root/cloudreve
Restart=on-failure
RestartSec=5
KillMode=mixed
Environment=&quot;CR_LICENSE_KEY=你的授权密钥&quot;
StandardOutput=file:/var/log/cloudreve.log
StandardError=journal

[Install]
WantedBy=multi-user.target
</code></pre>
<p><img src="/assets/images/how-to-install-cloudreve-v4-vps-town/systemd-setup.jpg" alt="systemd配置"></img></p>
<p>通过 Systemd 启动 Cloudreve</p>
<pre><code>sudo systemctl daemon-reload
sudo systemctl enable cloudreve
sudo systemctl start cloudreve
</code></pre>
<h2 id="日后管理-cloudreve">日后管理 Cloudreve：<a aria-hidden="true" href="#日后管理-cloudreve">#</a></h2>
<p>以后都从这里运行和关闭程序，非常方便</p>
<h1 id="停止-cloudreve">停止 Cloudreve<a aria-hidden="true" href="#停止-cloudreve">#</a></h1>
<pre><code>sudo systemctl stop cloudreve
</code></pre>
<h1 id="启动-cloudreve">启动 Cloudreve<a aria-hidden="true" href="#启动-cloudreve">#</a></h1>
<pre><code>sudo systemctl start cloudreve
</code></pre>
<h1 id="重启-cloudreve">重启 Cloudreve<a aria-hidden="true" href="#重启-cloudreve">#</a></h1>
<pre><code>sudo systemctl restart cloudreve
</code></pre>
<h1 id="查看-cloudreve-状态">查看 Cloudreve 状态<a aria-hidden="true" href="#查看-cloudreve-状态">#</a></h1>
<pre><code>sudo systemctl status cloudreve
</code></pre>
<h2 id="️-配置-confini-详解">⚙️ 配置 conf.ini 详解<a aria-hidden="true" href="#️-配置-confini-详解">#</a></h2>
<p>请按照需要修改：</p>
<pre><code>[System]
; 运行模式，可选值为 master/slave 无需修改，默认即可
Mode = master
; HTTP 监听端口，默认为 5212
; 如果没有其他服务，可以选择修改成80端口+cdn
Listen = :5212
; 是否开启 Debug 模式，默认为 false 无需修改，默认即可
Debug = false
; 呈递客户端 IP 时使用的 Header，默认为 X-Forwarded-For 无需修改，默认即可
ProxyHeader = X-Forwarded-For
; 进程安全退出的最长缓冲时间，默认为 0，不限制 无需修改，默认即可
GracePeriod = 0
; 日志级别，可选值为 debug/info/warning/error，默认为 info
; 可选修改成error 这样日志会少很多
LogLevel = info

; SSL 相关
; 如果配置反向代理或者加cdn 则无需添加ssl配置！
[SSL]
; SSL 监听端口，默认为 443
Listen = :443
; 证书路径，默认为空
CertPath =
; 私钥路径，默认为空
KeyPath =

; 启用 Unix Socket 监听
[Unix]
; Unix Socket 监听路径，默认为空
Listen = /run/cloudreve/cloudreve.sock
; 设置产生的 socket 文件的权限，默认为空
Perm = 0666

; 数据库相关，如果你只想使用内置的 SQLite 数据库，这一部分直接删去即可
[Database]
; 数据库类型，目前支持 sqlite/mysql/postgres，默认为 sqlite
Type = sqlite
; 数据库端口，默认为 3306
Port = 3306
; 用户名，默认为空
User =
; 密码，默认为空
Password =
; 数据库地址，默认为空
Host = 127.0.0.1
; 数据库名称，默认为空
Name = cloudreve
; 连接字符集，默认为 utf8mb4
Charset = utf8mb4
; SQLite 数据库文件路径，默认为 data/cloudreve.db
DBFile = cloudreve.db
; 使用 Unix Socket 连接到数据库, 默认为 false，如需开启，请在 Host 中指定 Unix Socket 路径
UnixSocket = false

; 从机模式下的配置
[Slave]
; 通信密钥，默认为空
Secret =
; 回调请求超时时间 (s)，默认为 20
CallbackTimeout = 20
; 签名有效期 (s)，默认为 600
SignatureTTL = 600

; 跨域配置
[CORS]
AllowOrigins = *
AllowMethods = OPTIONS,GET,POST
AllowHeaders = *
AllowCredentials = false

; Redis 相关
[Redis]
; 连接类型，默认为 tcp
Network = tcp
; 服务器地址，默认为空，不启用
Server = 127.0.0.1:6379
; 密码，默认为空
Password =
; 数据库，默认为 0
DB = 0
; 用户名，默认为空
User =

; 从机配置应用配置覆盖
[OptionOverwrite]
; 可直接使用 `设置名称 = 值` 的格式覆盖
queue_slave_worker_num = 50
</code></pre>
<h2 id="优化建议">优化建议<a aria-hidden="true" href="#优化建议">#</a></h2>
<ol>
<li>开启 Redis 缓存</li>
<li>独立数据库部署</li>
<li>启用 CDN</li>
<li>开启 HTTP/2 + GZIP</li>
<li>日志等级改为 <code>error</code></li>
<li>上传目录挂载至独立数据盘</li>
</ol>
<h2 id="-1panel-图形化反向代理--ssl">🌐 1Panel 图形化反向代理 + SSL<a aria-hidden="true" href="#-1panel-图形化反向代理--ssl">#</a></h2>
<p>安装 1Panel：</p>
<pre><code>curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh | bash
</code></pre>
<p>控制台界面：</p>
<p><img src="/assets/images/how-to-install-cloudreve-v4-vps-town/7ac14a965c5ac170aa58ef0db58cd271.image.jpg" alt="安装 1Panel"></img></p>
<p>设置反代：</p>
<p><img src="/assets/images/how-to-install-cloudreve-v4-vps-town/reverse-proxy.jpg" alt="反向代理设置"></img></p>
<p>配置 HTTPS：</p>
<p><img src="/assets/images/how-to-install-cloudreve-v4-vps-town/ssl-setup.jpg" alt="SSL 配置"></img></p>
<h2 id="-添加存储策略">📁 添加存储策略<a aria-hidden="true" href="#-添加存储策略">#</a></h2>
<p>后台 → 存储策略 → 添加</p>
<p><img src="/assets/images/how-to-install-cloudreve-v4-vps-town/add-storage.jpg" alt="添加存储"></img></p>
<h2 id="-使用-docker-安装可选">🐳 使用 Docker 安装（可选）<a aria-hidden="true" href="#-使用-docker-安装可选">#</a></h2>
<p>安装 docker</p>
<pre><code>curl -sSL https://get.docker.com/ | sh
</code></pre>
<pre><code>docker run -d --name cloudreve -p 5212:5212 \
  -v /root/cloudreve:/cloudreve \
  -e CR_LICENSE_KEY=你的密钥 \
  cloudreve.azurecr.io/cloudreve/pro:latest
</code></pre>
<p><img src="/assets/images/how-to-install-cloudreve-v4-vps-town/docker-login.jpg" alt="docker 登录"></img>
<img src="/assets/images/how-to-install-cloudreve-v4-vps-town/docker-login1.jpg" alt="docker 登录"></img></p>
<p>剩下的内容请参考：前文的使用 1panel 反向代理</p>
<h2 id="️-部署从机节点--离线下载">🛰️ 部署从机节点 & 离线下载<a aria-hidden="true" href="#️-部署从机节点--离线下载">#</a></h2>
<p>从机节点：</p>
<p>Cloudreve 除了主节点，还可以部署多个<strong>从机节点</strong>（Slave），用于<strong>分担主节点压力、提升扩展性</strong>。</p>
<ul>
<li>
<p>📦 <strong>解压缩</strong><br></br>
解压缩非常占用 CPU，通过从机，将上传的压缩包（.zip/.rar/.7z）通过从机解压到指定目录。</p>
</li>
<li>
<p>🗜️ <strong>创建压缩文件</strong><br></br>
用户可在 Web 面板批量选择文件，生成压缩包。（耗费流量和 CPU）</p>
</li>
<li>
<p>🚀 <strong>离线下载</strong><br></br>
将磁力链接、BT 种子、HTTP 下载链接推送至从机节点，由从机执行下载任务，再同步到主节点存储。（耗费大量资源）</p>
</li>
</ul>
<hr></hr>
<ul>
<li>分担主节点 CPU 和 IO 压力</li>
<li>多个从机可同时解压、打包、下载，提升并发性能</li>
<li>远程离线下载，不占用主节点带宽</li>
</ul>
<hr></hr>
<h2 id="-部署说明">📌 部署说明<a aria-hidden="true" href="#-部署说明">#</a></h2>
<ol>
<li>安装 Cloudreve 至其他服务器 （参考上文安装流程）</li>
<li>在后台里面 - 新建节点 - 自动单独生成从机 <code>conf.ini</code></li>
<li>粘贴到从机的<code>conf.ini</code> 文件内</li>
<li>启动从机节点服务</li>
</ol>
<p>部署命令示例：</p>
<pre><code>./cloudreve --slave --license-key &quot;你的授权密钥&quot;
</code></pre>
<p><img src="/assets/images/how-to-install-cloudreve-v4-vps-town/slave-setup.jpg" alt="从机节点"></img></p>
<h2 id="aria2-配置">Aria2 配置：<a aria-hidden="true" href="#aria2-配置">#</a></h2>
<p>Cloudreve 内的配置内容
<img src="/assets/images/how-to-install-cloudreve-v4-vps-town/aria2.jpg" alt="aria2 配置"></img></p>
<p>VPS 上的配置内容</p>
<h3 id="-安装-aria2">📦 安装 Aria2<a aria-hidden="true" href="#-安装-aria2">#</a></h3>
<p>执行以下命令安装：</p>
<pre><code>wget -N git.io/aria2.sh &amp;&amp; chmod +x aria2.sh &amp;&amp; ./aria2.sh
</code></pre>
<p>执行过程中，输入 1 确认安装。</p>
<p>安装完成后，终端会输出 Aria2 相关配置信息及默认下载路径。</p>
<h3 id="️-修改-aria2-配置文件">⚙️ 修改 Aria2 配置文件<a aria-hidden="true" href="#️-修改-aria2-配置文件">#</a></h3>
<p>执行命令打开配置文件：</p>
<pre><code>sudo vim /root/.aria2c/aria2.conf
</code></pre>
<hr></hr>
<p>建议修改以下参数：</p>
<p>将最大同时下载任务数调大
将单服务器最大连接数调大
将下载目录改为独立数据盘，防止主盘爆满</p>
<hr></hr>
<p>###📄 配置修改参考：</p>
<pre><code>dir=/home/aria2/downloads
max-concurrent-downloads=500
max-connection-per-server=320
split=640
</code></pre>
<h3 id="️-注意">⚠️ 注意：<a aria-hidden="true" href="#️-注意">#</a></h3>
<p>修改完配置后，务必重启 Aria2 服务，否则配置不生效。</p>
<pre><code>./aria2.sh
</code></pre>
<h2 id="qbittorrent-安装设置">qBittorrent 安装设置：<a aria-hidden="true" href="#qbittorrent-安装设置">#</a></h2>
<h3 id="安装-qbittorrent-439">安装 qBittorrent 4.3.9<a aria-hidden="true" href="#安装-qbittorrent-439">#</a></h3>
<pre><code meta="">wget https://raw.githubusercontent.com/networkdu/qb439/refs/heads/main/install.sh && chmod +x install.sh && ./install.sh
</code></pre>
<p><img src="/assets/images/how-to-install-cloudreve-v4-vps-town/qb-setup.jpg" alt="qbittorrent"></img></p>
<p>修改下载路径到存储盘
<img src="/assets/images/how-to-install-cloudreve-v4-vps-town/qb2.jpg" alt="qbittorrent"></img></p>
<p>进入网盘后台配置 qb 离线下载
<img src="/assets/images/how-to-install-cloudreve-v4-vps-town/crqb.jpg" alt="qbittorrent"></img></p>
<p>测试一下即可使用
<img src="/assets/images/how-to-install-cloudreve-v4-vps-town/qbtest.jpg" alt="qbittorrent"></img></p>
<h2 id="-常见问题-faq">❓ 常见问题 FAQ<a aria-hidden="true" href="#-常见问题-faq">#</a></h2>
<p><strong>Q: 上传失败？</strong><br></br>
A: 检查权限、磁盘空间、nginx 上传限制</p>
<p><strong>Q: 登录后台失败？</strong><br></br>
A: 检查端口监听、防火墙和授权密钥</p>
<p><strong>Q: 如何启用 HTTPS？</strong><br></br>
A: 推荐 1Panel 自动申请证书</p>
<p><strong>Q: 🚀 Docker 部署 vs 直接部署对比</strong></p>
<table>
<thead>
<tr>
<th align="left">特性/维度</th>
<th align="left">Docker 部署</th>
<th align="left">直接部署（本地二进制）</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left">📦 安装复杂度</td>
<td align="left">简单，<strong>一条命令搞定</strong>，镜像自带环境</td>
<td align="left">稍复杂，需自己下载程序、授权、配置 systemd</td>
</tr>
<tr>
<td align="left">⚙️ 环境隔离性</td>
<td align="left"><strong>完全隔离</strong>，程序与主机环境解耦，互不影响</td>
<td align="left">直接运行在主机环境，依赖主机本地环境</td>
</tr>
<tr>
<td align="left">🔄 升级维护方便性</td>
<td align="left"><strong>简单换镜像</strong>，无缝更新</td>
<td align="left">手动替换程序，改 systemd，重启</td>
</tr>
<tr>
<td align="left">🐳 依赖管理</td>
<td align="left">镜像内自带依赖，<strong>不依赖宿主机安装额外组件</strong></td>
<td align="left">依赖本地环境，MySQL/Redis/Aria2 需自己部署</td>
</tr>
<tr>
<td align="left">📁 数据持久化</td>
<td align="left">需要<strong>挂载卷（volume）</strong>，否则容器重启数据丢失</td>
<td align="left">默认保存在本地目录，持久化简单</td>
</tr>
<tr>
<td align="left">🚀 性能</td>
<td align="left">稍有容器虚拟化开销（一般忽略不计）</td>
<td align="left"><strong>原生性能</strong>，直接运行</td>
</tr>
<tr>
<td align="left">📚 配置文件管理</td>
<td align="left">建议挂载配置文件目录，方便更新和备份</td>
<td align="left">本地直接编辑 <code>/root/conf.ini</code> 即可</td>
</tr>
<tr>
<td align="left">📦 多节点部署</td>
<td align="left"><strong>Docker Compose / Swarm / Kubernetes 集群化更方便</strong></td>
<td align="left">需手动维护多机 systemd 和环境</td>
</tr>
<tr>
<td align="left">📄 日志管理</td>
<td align="left">容器日志走 <code>docker logs</code>，或挂载日志目录</td>
<td align="left">写入本地文件或 systemd 日志</td>
</tr>
<tr>
<td align="left">📱 运维习惯</td>
<td align="left">偏 DevOps / 云原生，现代运维偏好</td>
<td align="left">传统 VPS、服务器部署方式</td>
</tr>
<tr>
<td align="left">🛑 出错恢复</td>
<td align="left">重启容器即可恢复，镜像固定</td>
<td align="left">手动排查、修改配置、重启 systemd</td>
</tr>
</tbody>
</table>
<div><div>💡 VPS.Town 大盘鸡解决方案</div><div>
<ol>
<li>最多可提供高达 <strong>8TB 大容量存储</strong> 的选项，非常适合存放大量项目代码与文档；</li>
<li>同时也提供 <strong>SSD & HDD</strong> 混合方案，读写速度更快、成本更低；</li>
<li>性价比高，适合个人开发者、小团队进行长期托管部署；</li>
<li>抗 DMCA 版权投诉，可用于一些敏感项目；</li>
<li>⚠️ 其中 1TB 存储大盘鸡续费仅需 260/年或 28.5/月，硬盘一次性买断最低仅需 ¥80/TiB</li>
<li>服务器位于香港，距离大陆近，延迟低，速度快</li>
</ol>
<p>无 AFF 购买链接：<a href="https://vps.town/cart?fid=3&amp;gid=1" target="_blank" rel="noopener noreferrer">点我一键直达</a></p>
</div></div>]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[如何在 VPS.Town 服务器上安装和配置 Cloudreve 个人网盘]]></title>
        <id>6</id>
        <link href="https://docs.vps.town/guide/how-to-install-cloudreve-vps-town"/>
        <updated>2025-04-11T13:30:00.000Z</updated>
        <summary type="html"><![CDATA[本教程详细介绍了如何在 VPS.Town 的 Debian 12 服务器上安装和配置 Cloudreve 个人网盘]]></summary>
        <content type="html"><![CDATA[<h1 id="如何在-vpstown-服务器上安装和配置-cloudreve-个人网盘">如何在 VPS.Town 服务器上安装和配置 Cloudreve 个人网盘<a aria-hidden="true" href="#如何在-vpstown-服务器上安装和配置-cloudreve-个人网盘">#</a></h1>
<div><div>温馨提示</div><div>
<p>本文由用户 (<a href="#">grys2012</a>) 撰写，并已加入 <code>VPS.Town 优秀原创文章激励计划</code>，本站享有完整版权，未经允许不得转载。</p>
<p>本文已通过 <a href="/kb/community.html">VPS.Town 社区文章投稿及奖励规则 (试行稿)</a> 审核，并获得 <code>现金 35 元</code> 奖励。</p>
</div></div>
<details><summary>📖 本文目录</summary><div>

</div></details>
<h2 id="引言">引言<a aria-hidden="true" href="#引言">#</a></h2>
<p>本教程基于 Debian 12 系统，将引导您如何在 VPS.Town 服务器上安装和配置 Cloudreve 个人网盘。</p>
<blockquote>
<p><strong>Q: 为什么要部署 Cloudreve？</strong><br></br>
A: Cloudreve 是我目前使用认为比较方便以及排版好看的网盘</p>
</blockquote>
<p>先来看看官方是怎么宣传的：Cloudreve 可以让您快速搭建起公私兼备的网盘系统。Cloudreve 在底层支持不同的云存储平台，用户在实际使用时 无须关心物理存储方式。你可以使用 Cloudreve 搭建个人用网盘、文件分享系统，亦或是针对大小团体的公有云系统。</p>
<p>下面，让我们开始安装吧</p>
<h2 id="第一步连接到您的-vps-服务器"><strong>第一步：连接到您的 VPS 服务器</strong><a aria-hidden="true" href="#第一步连接到您的-vps-服务器">#</a></h2>
<div><div>💡 VPS.Town 大盘鸡解决方案</div><div>
<ol>
<li>最多可提供高达 <strong>8TB 大容量存储</strong> 的选项，非常适合存放大量项目代码与文档；</li>
<li>同时也提供 <strong>SSD & HDD</strong> 混合方案，读写速度更快、成本更低；</li>
<li>性价比高，适合个人开发者、小团队进行长期托管部署；</li>
<li>抗 DMCA 版权投诉，可用于一些敏感项目；</li>
<li>⚠️ 其中 1TB 存储大盘鸡续费仅需 260/年或 28.5/月，硬盘一次性买断最低仅需 ¥80/TiB</li>
<li>服务器位于香港，距离大陆近，延迟低，速度快</li>
</ol>
<p>无 AFF 购买链接：<a href="https://vps.town/cart?fid=3&amp;gid=1" target="_blank" rel="noopener noreferrer">点我一键直达</a></p>
</div></div>
<p>使用 SSH 工具连接到您的 VPS.Town 服务器实例，确保您切换到 root 用户，以便执行后续操作。</p>
<p><img src="/assets/images/how-to-install-cloudreve-vps-town/67f9009145647.webp" alt="image.webp"></img></p>
<h2 id="第二步安装-1panel-面板"><strong>第二步：安装 1Panel 面板</strong><a aria-hidden="true" href="#第二步安装-1panel-面板">#</a></h2>
<p>或可自行选择基底面板如宝塔，对 Nginx 熟悉的也可以跳过这一步</p>
<p>以下命令适用于 Debian 12 系统，其他系统安装 1Panel 可 <a href="https://1panel.cn/docs/installation/online_installation/" target="_blank" rel="noopener noreferrer">参考此链接</a></p>
<pre><code meta="">curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && bash quick_start.sh
</code></pre>
<p>可选择中文安装，按照步骤提示，设置属于自己的安装目录、端口号、账号密码等信息
<img src="/assets/images/how-to-install-cloudreve-vps-town/67f901e949b97.webp" alt="image.webp"></img>
<img src="/assets/images/how-to-install-cloudreve-vps-town/67f9023260330.webp" alt="image.webp"></img>
安装后会输出后台信息
<img src="/assets/images/how-to-install-cloudreve-vps-town/67f9025be8e6f.webp" alt="image.webp"></img>
登录即可
<img src="/assets/images/how-to-install-cloudreve-vps-town/67f90279b081d.webp" alt="image.webp"></img>
在左侧菜单栏（网站-网站处）安装 openresty
<img src="/assets/images/how-to-install-cloudreve-vps-town/67f9030b9c902.webp" alt="image.webp"></img></p>
<h2 id="第三步设置域名信息若无域名也可略过这步不影响后续步骤"><strong>第三步：设置域名信息（若无域名也可略过这步，不影响后续步骤）</strong><a aria-hidden="true" href="#第三步设置域名信息若无域名也可略过这步不影响后续步骤">#</a></h2>
<p>在该处选择填写您的 acme 账户以及 DNS 账户
如下
<img src="/assets/images/how-to-install-cloudreve-vps-town/67f90505b198f.webp" alt="image.webp"></img>
<img src="/assets/images/how-to-install-cloudreve-vps-town/67f905392d4b0.webp" alt="image.webp"></img>
注意：Acme 账户可填写任意邮箱，我以<a href="mailto:A123321EEE@gmail.com">A123321EEE@gmail.com</a>举例
<img src="/assets/images/how-to-install-cloudreve-vps-town/67f90565b5843.webp" alt="image.webp"></img>
填写后保存即可</p>
<p>DNS 账户需要根据您的域名服务商，打开对应控制页面，我以 CF 举例，打开如下网址并登录</p>
<pre><code>https://www.cloudflare.com/
</code></pre>
<p>右上角打开配置文件
<img src="/assets/images/how-to-install-cloudreve-vps-town/67f9044593fc3.webp" alt="image.webp"></img>
API 令牌
<img src="/assets/images/how-to-install-cloudreve-vps-town/67f9045ce1304.webp" alt="image.webp"></img>
创建令牌
<img src="/assets/images/how-to-install-cloudreve-vps-town/67f90477aee9f.webp" alt="image.webp"></img>
使用模板
<img src="/assets/images/how-to-install-cloudreve-vps-town/67f904896f69a.webp" alt="image.webp"></img>
选择你的对应域名，选择继续
<img src="/assets/images/how-to-install-cloudreve-vps-town/67f904b4afda8.webp" alt="image.webp"></img>
<img src="/assets/images/how-to-install-cloudreve-vps-town/67f904b717700.webp" alt="image.webp"></img>
创建令牌
<img src="/assets/images/how-to-install-cloudreve-vps-town/67f904d19cb8e.webp" alt="image.webp"></img>
获取生成的令牌后妥善保存好
<img src="/assets/images/how-to-install-cloudreve-vps-town/67f904e9b2084.webp" alt="image.webp"></img>
复制刚刚生成的 API 令牌，填入 DNS 账户处(邮箱为 CF 账户邮箱)
<img src="/assets/images/how-to-install-cloudreve-vps-town/67f905ace9c57.webp" alt="image.webp"></img>
到此处，已完成域名信息的填写</p>
<h2 id="第四步安装-cloudreve这是我目前使用起来得心应手的网盘适合自用以及给他人分享"><strong>第四步：安装 cloudreve，这是我目前使用起来得心应手的网盘，适合自用以及给他人分享</strong><a aria-hidden="true" href="#第四步安装-cloudreve这是我目前使用起来得心应手的网盘适合自用以及给他人分享">#</a></h2>
<p>进入 1panel 应用商店，安装 cloudreve
<img src="/assets/images/how-to-install-cloudreve-vps-town/67f906238c0bd.webp" alt="image.webp"></img>
记住您的端口，且开放外部端口访问并安装
<img src="/assets/images/how-to-install-cloudreve-vps-town/67f90661a9f21.webp" alt="image.webp"></img>
等待安装完毕
<img src="/assets/images/how-to-install-cloudreve-vps-town/67f906770e428.webp" alt="image.webp"></img>
安装完毕后，打开日志，查看账号密码
<img src="/assets/images/how-to-install-cloudreve-vps-town/67f9082f4323c.webp" alt="image.webp"></img>
<img src="/assets/images/how-to-install-cloudreve-vps-town/67f908504cfd6.webp" alt="image.webp"></img>
访问您的 IP 加设置的端口号，输入账号密码后登录后台
<img src="/assets/images/how-to-install-cloudreve-vps-town/67f9087166811.webp" alt="image.webp"></img>
<img src="/assets/images/how-to-install-cloudreve-vps-town/67f9088279ef6.webp" alt="image.webp"></img></p>
<p>过程中可以先设置好域名和 HTTPS
访问域名服务商后台，将您的域名和 IP 绑定上，这里不演示了，下面进行后续步骤
<img src="/assets/images/how-to-install-cloudreve-vps-town/67f906949f2ff.webp" alt="image.webp"></img>
<img src="/assets/images/how-to-install-cloudreve-vps-town/67f906fb66f46.webp" alt="image.webp"></img>
<img src="/assets/images/how-to-install-cloudreve-vps-town/67f9070d064a8.webp" alt="image.webp"></img>
<img src="/assets/images/how-to-install-cloudreve-vps-town/67f90738708b4.webp" alt="image.webp"></img>
<img src="/assets/images/how-to-install-cloudreve-vps-town/67f90734b733c.webp" alt="image.webp"></img>
<img src="/assets/images/how-to-install-cloudreve-vps-town/67f907649cc4a.webp" alt="image.webp"></img>
<img src="/assets/images/how-to-install-cloudreve-vps-town/67f90783cd438.webp" alt="image.webp"></img>
保存即可
<img src="/assets/images/how-to-install-cloudreve-vps-town/67f907a43d9df.webp" alt="image.webp"></img>
访问您的域名
<img src="/assets/images/how-to-install-cloudreve-vps-town/67f907ca443f6.webp" alt="image.webp"></img>
登录后打开后台管理面板
<img src="/assets/images/how-to-install-cloudreve-vps-town/67f9096e84dcd.webp" alt="image.webp"></img>
会提示不一致，点击更改即可
<img src="/assets/images/how-to-install-cloudreve-vps-town/67f9098329581.webp" alt="image.webp"></img>
在该处可以设置空间大小，以及用户组和用户信息等高阶玩法，可以自行研究</p>
<h2 id="第五步享受成果"><strong>第五步：享受成果</strong><a aria-hidden="true" href="#第五步享受成果">#</a></h2>
<p>可以拖拽上传文件，也可以利用 QB、aria2 等下载磁力链接，毕竟 VPS.Town 抗版权投诉，请自由发挥</p>
<p><img src="/assets/images/how-to-install-cloudreve-vps-town/67f90aa992428.webp" alt="image.webp"></img>
<img src="/assets/images/how-to-install-cloudreve-vps-town/67f90aac74e94.webp" alt="image.webp"></img></p>
<p>还可以分享给朋友</p>
<p><img src="/assets/images/how-to-install-cloudreve-vps-town/67f90abe72148.webp" alt="image.webp"></img></p>
<p><strong>这个网盘是我目前使用认为比较方便以及排版好看的网盘，推荐给大家</strong></p>]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[如何在 VPS.Town 服务器上安装 qBittorent 和 AList]]></title>
        <id>25</id>
        <link href="https://docs.vps.town/guide/vps-town-install-qbittorrent-alist"/>
        <updated>2025-04-11T11:21:00.000Z</updated>
        <summary type="html"><![CDATA[本教程详细介绍了如何在 Debian 12 系统的 VPS.Town 服务器上，通过 Docker 安装和配置 qBittorrent 进行 BT 下载，并结合 AList 实现离线下载文件至网盘的功能。]]></summary>
        <content type="html"><![CDATA[<h1 id="如何在-vpstown-服务器上安装-qbittorent-和-alist">如何在 VPS.Town 服务器上安装 qBittorent 和 AList<a aria-hidden="true" href="#如何在-vpstown-服务器上安装-qbittorent-和-alist">#</a></h1>
<div><div>温馨提示</div><div>
<p>本文由用户 (<a href="#">赛博丁真</a>) 撰写，并已加入 <code>VPS.Town 优秀原创文章激励计划</code>，本站享有完整版权，未经允许不得转载。</p>
<p>本文已通过 <a href="/kb/community.html">VPS.Town 社区文章投稿及奖励规则 (试行稿)</a> 审核，并获得 <code>现金 20 元</code> 奖励。</p>
</div></div>
<details><summary>📖 本文目录</summary><div>

</div></details>
<h2 id="引言">引言<a aria-hidden="true" href="#引言">#</a></h2>
<p>本教程详细介绍了如何在 Debian 12 系统的 VPS.Town 服务器上，通过 Docker 安装和配置 qBittorrent 进行 BT 下载，并结合 AList 实现离线下载文件至网盘的功能。</p>
<h2 id="第一步连接到您的-vps-服务器"><strong>第一步：连接到您的 VPS 服务器</strong><a aria-hidden="true" href="#第一步连接到您的-vps-服务器">#</a></h2>
<div><div>💡 VPS.Town 大盘鸡解决方案</div><div>
<ol>
<li>最多可提供高达 <strong>8TB 大容量存储</strong> 的选项，非常适合存放大量项目代码与文档；</li>
<li>同时也提供 <strong>SSD & HDD</strong> 混合方案，读写速度更快、成本更低；</li>
<li>性价比高，适合个人开发者、小团队进行长期托管部署；</li>
<li>抗 DMCA 版权投诉，可用于一些敏感项目；</li>
<li>⚠️ 其中 1TB 存储大盘鸡续费仅需 260/年或 28.5/月，硬盘一次性买断最低仅需 ¥80/TiB</li>
</ol>
<p>无 AFF 购买链接：<a href="https://vps.town/cart?fid=3&amp;gid=1" target="_blank" rel="noopener noreferrer">点我一键直达</a></p>
</div></div>
<p>使用 SSH 工具连接到您的 VPS.Town 服务器实例，确保您切换到 root 用户，以便执行后续操作。</p>
<p><img src="/assets/images/vps-town-install-qbittorrent-alist/image.png" alt="image.png"></img></p>
<h2 id="第二步安装-docker"><strong>第二步：安装 docker</strong><a aria-hidden="true" href="#第二步安装-docker">#</a></h2>
<p>我们将使用 docker 官方的安装脚本。该脚本简化了 docker 编译安装过程，操作更加便捷。</p>
<p>安装 docker 是为了隔离系统与运行环境，同时也能简化配置</p>
<pre><code>curl -fsSL https://get.docker.com | bash -s docker
</code></pre>
<h2 id="第三步运行-docker-命令">第三步：运行 docker 命令<a aria-hidden="true" href="#第三步运行-docker-命令">#</a></h2>
<div><div>小贴士 💡</div><div>
<p>请把 <code>-v /mnt:/Downloads</code> 中的 <code>/mnt</code> 改为硬盘的挂载路径，例如 <code>/data/qbittorrent</code></p>
</div></div>
<pre><code meta="">docker run \
--name=qbittorrent \
-e QB_WEBUI_PORT=8989 \
-e QB_EE_BIN=false \
-e UID=1000 \
-e GID=1000 \
-e UMASK=022 \
-p 6881:6881 \
-p 6881:6881/udp \
-p 8989:8989 \
-v /docker/johngong:/config \
-v /mnt:/Downloads \
--restart unless-stopped \
johngong/qbittorrent:latest
</code></pre>
<h2 id="第四步查看-webui-密码并登录修改密码">第四步：查看 webui 密码并登录修改密码<a aria-hidden="true" href="#第四步查看-webui-密码并登录修改密码">#</a></h2>
<p>第一次启动会生成密码，查看即可</p>
<pre><code meta="">docker logs qbittorrent
</code></pre>
<h3 id="打开-webui">打开 webui<a aria-hidden="true" href="#打开-webui">#</a></h3>
<p>选择 <strong>工具</strong> → <strong>选项</strong></p>
<p><img src="/assets/images/vps-town-install-qbittorrent-alist/1.png" alt="image.png"></img></p>
<h3 id="修改密码并拉到最下方保存">修改密码并拉到最下方保存<a aria-hidden="true" href="#修改密码并拉到最下方保存">#</a></h3>
<p><img src="/assets/images/vps-town-install-qbittorrent-alist/2.png" alt="image.png"></img></p>
<h2 id="第五步下载种子">第五步，下载种子<a aria-hidden="true" href="#第五步下载种子">#</a></h2>
<p>选择左侧图标，可以下载磁链，右侧可以上传种子文件进行下载</p>
<p><img src="/assets/images/vps-town-install-qbittorrent-alist/3.png" alt="image.png"></img></p>
<hr></hr>
<h2 id="进阶教程配合-alist-实现离线下载上传至网盘">进阶教程：配合 AList 实现离线下载、上传至网盘<a aria-hidden="true" href="#进阶教程配合-alist-实现离线下载上传至网盘">#</a></h2>
<p>安装 AList 请参见 <a href="https://alist.nn.ci/zh/guide/install/script.html" target="_blank" rel="noopener noreferrer">官方的一键脚本</a></p>
<h3 id="进入后台设置--其他--qbittorent">进入后台设置 → 其他 → qbittorent<a aria-hidden="true" href="#进入后台设置--其他--qbittorent">#</a></h3>
<p><img src="/assets/images/vps-town-install-qbittorrent-alist/4.png" alt="image.png"></img></p>
<p>将 URL 改为</p>
<p><code>http://admin:[密码]@localhost:8989/</code></p>
<p>进入要离线到网盘的目录，选择侧边栏的离线下载功能即可</p>
<p><img src="/assets/images/vps-town-install-qbittorrent-alist/5.png" alt="image.png"></img></p>]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[如何在 VPS.Town 服务器上安装飞牛 OS]]></title>
        <id>3</id>
        <link href="https://docs.vps.town/guide/fnos"/>
        <updated>2025-03-03T12:00:00.000Z</updated>
        <summary type="html"><![CDATA[本教程基于 Debian 11 系统，将引导您如何在 VPS.Town 服务器实例上安装 飞牛 (fnOS) 系统。]]></summary>
        <content type="html"><![CDATA[<h1 id="如何在-vpstown-服务器上安装飞牛-os">如何在 VPS.Town 服务器上安装飞牛 OS<a aria-hidden="true" href="#如何在-vpstown-服务器上安装飞牛-os">#</a></h1>
<div><div>温馨提示</div><div>
<p>本文由社区用户 (<a href="#">@grys2012</a>) 撰写，并已加入 <code>VPS.Town 优秀原创文章激励计划</code>，本站享有完整版权，未经允许不得转载。</p>
<p>本文已通过 <a href="/kb/community.html">VPS.Town 社区文章投稿及奖励规则 (试行稿)</a> 审核，并获得 <code>现金 200 元</code> 奖励。</p>
</div></div>
<details><summary>📖 本文目录</summary><div>

</div></details>
<h2 id="准备工作">准备工作<a aria-hidden="true" href="#准备工作">#</a></h2>
<p>本教程基于 Debian 11 系统，将引导您如何在 VPS.Town 服务器实例上安装 <code>飞牛 (fnOS)</code> 系统。</p>
<h2 id="第一步连接到您的-vps-服务器">第一步：连接到您的 VPS 服务器<a aria-hidden="true" href="#第一步连接到您的-vps-服务器">#</a></h2>
<div><div>💡 VPS.Town 大盘鸡解决方案</div><div>
<ol>
<li>最多可提供高达 <strong>8TB 大容量存储</strong> 的选项，非常适合存放大量项目代码与文档；</li>
<li>同时也提供 <strong>SSD & HDD</strong> 混合方案，读写速度更快、成本更低；</li>
<li>性价比高，适合个人开发者、小团队进行长期托管部署；</li>
<li>抗 DMCA 版权投诉，可用于一些敏感项目；</li>
<li>⚠️ 其中 1TB 存储大盘鸡续费仅需 260/年或 28.5/月，硬盘一次性买断最低仅需 ¥80/TiB</li>
<li>服务器位于香港，距离大陆近，延迟低，速度快</li>
</ol>
<p>无 AFF 购买链接：<a href="https://vps.town/cart?fid=3&amp;gid=1" target="_blank" rel="noopener noreferrer">点我一键直达</a></p>
</div></div>
<p>使用 SSH 工具连接到您的 VPS.Town 服务器实例，确保您切换到 root 用户，以便执行后续操作。</p>
<p><img src="/assets/images/fnos/fnos-01.png" alt="SSH 连接界面"></img></p>
<h2 id="第二步下载安装脚本">第二步：下载安装脚本<a aria-hidden="true" href="#第二步下载安装脚本">#</a></h2>
<p>我们将使用 bin456789 开发的 DD 重装脚本。该脚本简化了系统重装过程，操作更加便捷。</p>
<h3 id="脚本来源">脚本来源<a aria-hidden="true" href="#脚本来源">#</a></h3>
<ul>
<li>GitHub 项目地址：<a href="https://github.com/bin456789/reinstall" target="_blank" rel="noopener noreferrer"><a href="https://github.com/bin456789/reinstall" target="_blank" rel="noopener noreferrer">https://github.com/bin456789/reinstall</a></a></li>
<li>如有疑虑，可以先查看项目源代码</li>
</ul>
<h3 id="下载脚本">下载脚本<a aria-hidden="true" href="#下载脚本">#</a></h3>
<p>在终端中执行以下命令：</p>
<pre><code meta="">curl -O https://raw.githubusercontent.com/bin456789/reinstall/main/reinstall.sh || wget -O reinstall.sh $_
</code></pre>
<p><img src="/assets/images/fnos/fnos-02.png" alt="下载脚本成功"></img></p>
<h2 id="第三步运行安装脚本并设置参数">第三步：运行安装脚本并设置参数<a aria-hidden="true" href="#第三步运行安装脚本并设置参数">#</a></h2>
<h3 id="执行安装命令">执行安装命令<a aria-hidden="true" href="#执行安装命令">#</a></h3>
<p>下载完成后，运行以下命令启动安装流程：</p>
<pre><code meta="">bash reinstall.sh fnos
</code></pre>
<h3 id="设置关键参数">设置关键参数<a aria-hidden="true" href="#设置关键参数">#</a></h3>
<p>在提示界面中，您需要设置：</p>
<ul>
<li>登录密码：请设置一个安全性高的密码</li>
<li>系统盘大小：根据您的需求设置，最小默认为 8G</li>
</ul>
<div><div>小贴士</div><div><p>请根据您的实际硬盘容量合理分配。例如，在 40G 系统盘的情况下，可以将 FNOS 系统盘设置为 20G。</p></div></div>
<p><img src="/assets/images/fnos/fnos-03.png" alt="设置系统参数"></img></p>
<h2 id="第四步等待安装完成并重启系统">第四步：等待安装完成并重启系统<a aria-hidden="true" href="#第四步等待安装完成并重启系统">#</a></h2>
<p>确认参数后，脚本将自动执行安装流程。安装过程需要一些时间，请耐心等待。</p>
<h3 id="安装进度监控">安装进度监控<a aria-hidden="true" href="#安装进度监控">#</a></h3>
<p>系统会显示实时安装进度，请勿中断连接。</p>
<h3 id="重启系统">重启系统<a aria-hidden="true" href="#重启系统">#</a></h3>
<p>当看到完成提示后，输入以下命令重启系统以完成安装：</p>
<pre><code>reboot
</code></pre>
<p><img src="/assets/images/fnos/fnos-04.png" alt="安装进行中"></img></p>
<p>完成安装后的界面：</p>
<p><img src="/assets/images/fnos/fnos-05.png" alt="安装完成界面"></img></p>
<h2 id="第五步访问-fnos-管理后台">第五步：访问 FNOS 管理后台<a aria-hidden="true" href="#第五步访问-fnos-管理后台">#</a></h2>
<h3 id="登录方式">登录方式<a aria-hidden="true" href="#登录方式">#</a></h3>
<p>系统重启后，您可以通过浏览器访问 FNOS 管理界面。</p>
<p>访问地址格式：<code>http://您服务器IP:5666</code></p>
<p>例如，如果您的服务器 IP 是 123.123.123.123，则访问地址为：
<code>http://123.123.123.123:5666</code></p>
<p><img src="/assets/images/fnos/fnos-06.png" alt="FNOS 管理后台"></img></p>
<h2 id="安装完成">安装完成！<a aria-hidden="true" href="#安装完成">#</a></h2>
<p>恭喜！您已成功安装 FNOS 系统，祝您使用愉快！</p>]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[VPS.Town 教程中心]]></title>
        <id>19</id>
        <link href="https://docs.vps.town/guide/"/>
        <updated>2025-02-28T16:00:00.000Z</updated>
        <summary type="html"><![CDATA[VPS.Town 教程中心收集了各类实用指南，帮助用户在 VPS 服务器上部署和管理各种自托管应用]]></summary>
        <content type="html"><![CDATA[<h1 id="vpstown-教程中心">VPS.Town 教程中心<a aria-hidden="true" href="#vpstown-教程中心">#</a></h1>
<p>欢迎来到 VPS.Town 教程中心！这里收集了各类实用指南，帮助您在 VPS 服务器上部署和管理各种自托管应用。</p>
<p>无论您是初学者还是有经验的用户，都能找到适合自己的教程。</p>

<details><summary>📖 本文目录</summary><div>
<ul>
<li><a href="#%E5%85%A5%E9%97%A8%E6%8C%87%E5%8D%97">🧭 入门指南</a></li>
<li><a href="#%E8%BD%AF%E4%BB%B6%E5%AE%89%E8%A3%85%E7%94%9F%E6%80%81">🗄️ 软件安装生态</a></li>
<li><a href="#%E4%BB%A3%E7%A0%81%E4%B8%8E%E7%89%88%E6%9C%AC%E6%8E%A7%E5%88%B6">💻 代码与版本控制</a></li>
<li><a href="#%E4%B8%8B%E8%BD%BD%E4%B8%8E%E6%B5%81%E5%AA%92%E4%BD%93">📥 下载与流媒体</a></li>
<li><a href="#%E7%B3%BB%E7%BB%9F%E4%B8%8E%E5%AE%89%E5%85%A8">🔐 系统与安全</a></li>
<li><a href="#%E8%87%AA%E5%8A%A8%E5%8C%96%E4%B8%8E%E8%84%9A%E6%9C%AC">🤖 自动化与脚本</a></li>
</ul>
</div></details>
]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[vps.town 磁盘扩容新手指南]]></title>
        <id>13</id>
        <link href="https://docs.vps.town/guide/how-to-setup-lvm-conversion-vps-town"/>
        <updated>2024-04-18T16:00:00.000Z</updated>
        <summary type="html"><![CDATA[本文详细介绍了如何在不丢失数据的情况下，将普通分区转换为 LVM 分区，并实现磁盘扩容。]]></summary>
        <content type="html"><![CDATA[<h1 id="vpstown-磁盘扩容新手指南">vps.town 磁盘扩容新手指南<a aria-hidden="true" href="#vpstown-磁盘扩容新手指南">#</a></h1>
<details><summary>📖 本文目录</summary><div>

</div></details>
<div><div>温馨提示</div><div>
<p>本文由用户 <code>biebiele</code> 撰写，并已加入 <code>VPS.Town 优秀原创文章激励计划</code>，本站享有完整版权，未经允许不得转载。</p>
<p>本文已通过 <a href="/kb/community.html">VPS.Town 社区文章投稿及奖励规则 (试行稿)</a> 审核，并获得 <code>200 元余额</code> 奖励。</p>
</div></div>
<div><div>操作风险提示</div><div><p>
在进行磁盘扩容操作时，请特别注意以下几点：</p>
<ol>
<li><strong>数据安全</strong>：操作前必须进行<strong>完整的数据备份</strong>，有准备应急恢复方案。</li>
<li><strong>系统状态</strong>：确保系统处于<strong>稳定</strong>状态，在系统<strong>低负载</strong>情况下进行操作。</li>
<li><strong>操作过程</strong>：<strong>严格按照步骤</strong>执行，<strong>验证</strong>每个步骤完成情况。</li>
<li><strong>后续维护</strong>：<strong>定期检查</strong>磁盘状态，<strong>监控</strong>文件系统使用情况。</li>
</ol>
</div></div>
<div><div>使用须知</div><div><p>
<strong>请务必先完整阅读后在操作，并确保你具有以下知识：</strong></p>
<ul>
<li>了解磁盘分区和 LVM 原理</li>
<li>明白数据是无价的</li>
<li>熟悉基本的 Linux 命令操作</li>
<li>了解文件系统的基本概念</li>
</ul>
<p><strong>系统要求：</strong></p>
<ul>
<li>Linux 系统（推荐 Ubuntu 20.04 或更高版本）</li>
<li>足够的磁盘空间用于备份</li>
<li>root 权限或 sudo 权限</li>
</ul>
<p><strong>术语说明：</strong></p>
<ul>
<li>LVM (Logical Volume Manager)：逻辑卷管理器，用于管理磁盘存储的高级工具</li>
<li>PV (Physical Volume)：物理卷，LVM 的基本存储单元</li>
<li>VG (Volume Group)：卷组，由多个物理卷组成的存储池</li>
<li>LV (Logical Volume)：逻辑卷，从卷组中划分出的逻辑存储空间</li>
</ul>
<p><strong>文档结构说明：</strong>
本文分为四个主要部分：</p>
<ol>
<li>准备工作：介绍必要的系统检查和工具安装</li>
<li>原磁盘本身扩容：适用于已有分区需要扩容的情况</li>
<li>新增磁盘扩容：适用于需要合并多个磁盘的情况</li>
<li>注意事项：总结操作过程中的重要提示</li>
</ol>
</div></div>
<h2 id="1-准备工作">1. 准备工作<a aria-hidden="true" href="#1-准备工作">#</a></h2>
<pre><code># 查看系统中是否安装了 LVM 管理工具
apt list --installed | grep lvm2
# 如提示未安装，执行下面命令安装
apt install lvm2
# 检查系统磁盘情况
fdisk -l | grep /dev/vd | grep -v vda
</code></pre>
<p><img src="/assets/images/how-to-setup-lvm-conversion-vps-town/7.png" alt="系统磁盘列表"></img>
<strong>一般默认除系统盘后，系统第一个磁盘是<code>/dev/vdb</code>、第二个是<code>/dev/vdc</code></strong></p>
<details><summary>磁盘命名说明</summary><div><p>
在 Linux 系统中，磁盘设备通常按以下规则命名：</p>
<ul>
<li><code>/dev/vda</code>：系统盘（通常是第一个磁盘）</li>
<li><code>/dev/vdb</code>：第一个数据盘</li>
<li><code>/dev/vdc</code>：第二个数据盘</li>
<li>以此类推...</li>
</ul>
<p>在物理服务器上，可能会看到 <code>/dev/sda</code>、<code>/dev/sdb</code> 等命名方式，这是不同的磁盘控制器类型导致的命名差异。</p>
</div></details>
<h3 id="查看当前磁盘情况">查看当前磁盘情况<a aria-hidden="true" href="#查看当前磁盘情况">#</a></h3>
<p>使用命令 <code>fdisk -l</code> 或者 <code>lsblk</code> 找到新增的未分区的磁盘。</p>
<div><div>提示</div><div><p>
如果看不到新增的磁盘，可以执行以下命令扫描：</p>
<pre><code meta="">for file in `ls /sys/class/scsi_host`; \
do echo '- - -' > /sys/class/scsi_host/$file/scan ; \
done
</code></pre>
<p><strong>注意事项：</strong></p>
<ul>
<li>执行扫描命令后，建议等待几秒钟让系统识别新磁盘</li>
<li>如果仍然无法识别，可以尝试重启系统</li>
<li>在云服务器环境中，可能需要先在控制台挂载新磁盘</li>
</ul>
</div></div>
<div><div>重要提示</div><div>
<p><strong>需求确认</strong>：</p>
<ol>
<li>需要扩容原本的/dev/vdb1 空间以利用/dev/vdb 所有空间，请参考<code>2. 原磁盘本身扩容</code></li>
<li>需要将/dev/vdc 和/dev/vdb 合并使用，请参考<code>3. 新增磁盘扩容，与原有磁盘合并</code></li>
</ol>
</div></div>
<h2 id="2-原磁盘本身扩容">2. 原磁盘本身扩容<a aria-hidden="true" href="#2-原磁盘本身扩容">#</a></h2>
<p><strong>适用情况</strong>:原磁盘已有分区，但申请了新增了磁盘空间
类似于下图：本身 vdb1 只有 500GB，但对 vdb 磁盘新增了 500G，本次需要对 vdb1 扩容至 1000G</p>
<p><img src="/assets/images/how-to-setup-lvm-conversion-vps-town/10.png" alt="lsblk情况"></img></p>
<details><summary>扩容原理说明</summary><div><p>
磁盘扩容的基本原理是：</p>
<ol>
<li>首先取消磁盘挂载，确保数据安全</li>
<li>将分区表转换为 GPT 格式，支持更大容量</li>
<li>调整分区大小，使其占用所有可用空间</li>
<li>扩展文件系统以使用新增的空间</li>
<li>重新挂载并验证扩容结果</li>
</ol>
</div></details>
<h3 id="21-取消原磁盘挂载">2.1 取消原磁盘挂载<a aria-hidden="true" href="#21-取消原磁盘挂载">#</a></h3>
<pre><code>vim /etc/fstab
注释以下行`# /dev/vdb1 /home ext4 defaults 0 0`并`ESC`和`:wq`保存退出
</code></pre>
<p><img src="/assets/images/how-to-setup-lvm-conversion-vps-town/11.png" alt="fstab情况"></img></p>
<pre><code>mount -a
umount /home  ## 取消/home挂载
</code></pre>
<details><summary>挂载点说明</summary><div>
<ul>
<li><code>/etc/fstab</code> 文件记录了系统启动时需要自动挂载的文件系统</li>
<li>在修改挂载配置前，请确保了解每个挂载点的用途</li>
<li>建议在修改前备份 <code>/etc/fstab</code> 文件</li>
</ul>
</div></details>
<h3 id="22-转为-gpt-格式">2.2 转为 GPT 格式<a aria-hidden="true" href="#22-转为-gpt-格式">#</a></h3>
<div><div>⚠️ 警告</div><div>
<p>高危操作，请小心执行</p>
</div></div>
<pre><code>gdisk /dev/vdb  # 选择磁盘
w               # 写入，是否转为GPT格式
Y               # 确定转格式
# 等待执行完成
</code></pre>
<p><img src="/assets/images/how-to-setup-lvm-conversion-vps-town/12.png" alt="gdisk情况"></img></p>
<h3 id="23-调整分区大小">2.3 调整分区大小<a aria-hidden="true" href="#23-调整分区大小">#</a></h3>
<div><div>⚠️ 警告</div><div>
<p>高危操作，请小心执行</p>
</div></div>
<pre><code meta=""># 检查文件系统
e2fsck -f /dev/vdb1

# 使用 parted 调整分区
parted /dev/vdb                      # 操作磁盘
               print                 # 打印信息
(parted)       resizepart 1          # 选择分区
End? [500GB]?  100%                  # 扩展到全部空间
(parted)       quit                  # 退出

# 扩展文件系统
resize2fs /dev/vdb1
</code></pre>
<p><img src="/assets/images/how-to-setup-lvm-conversion-vps-town/13.png" alt="调整分区大小"></img></p>
<h3 id="24-重新挂载">2.4 重新挂载<a aria-hidden="true" href="#24-重新挂载">#</a></h3>
<pre><code>mount /dev/vdb1 /home
vim /etc/fstab
# 注释以下行`/dev/vdb1 /home ext4 defaults 0 0`并`ESC`和`:wq`保存退出
</code></pre>
<p><img src="/assets/images/how-to-setup-lvm-conversion-vps-town/14.png" alt="fstab情况2"></img></p>
<h3 id="25-检查磁盘挂载情况">2.5 检查磁盘挂载情况<a aria-hidden="true" href="#25-检查磁盘挂载情况">#</a></h3>
<pre><code>mount -a
lsblk
df -hT
</code></pre>
<p><img src="/assets/images/how-to-setup-lvm-conversion-vps-town/15.png" alt="检查磁盘挂载情况"></img></p>
<h2 id="3-新增磁盘扩容与原有磁盘合并">3. 新增磁盘扩容，与原有磁盘合并<a aria-hidden="true" href="#3-新增磁盘扩容与原有磁盘合并">#</a></h2>
<p><strong>适用情况:已有磁盘/dev/vdb，需要将新磁盘/dev/vdc 合并，即把/dev/vdc 空间和/dev/vdb 合并使用</strong></p>
<details><summary>LVM 扩容优势</summary><div><p>
使用 LVM 进行磁盘扩容的主要优势：</p>
<ol>
<li>支持在线扩容，无需停机</li>
<li>可以灵活管理多个物理磁盘</li>
<li>支持动态调整分区大小</li>
<li>提供更好的数据管理能力</li>
</ol>
</div></details>
<h3 id="31-备份原本磁盘数据devvdb-devvdc">3.1. 备份原本磁盘数据（/dev/vdb->/dev/vdc）<a aria-hidden="true" href="#31-备份原本磁盘数据devvdb-devvdc">#</a></h3>
<div><div>数据备份重要性</div><div><p>
在进行任何磁盘操作前，数据备份是必不可少的步骤：</p>
<ol>
<li>确保备份目标磁盘有足够空间</li>
<li>建议在备份前进行数据完整性检查</li>
<li>备份完成后进行验证</li>
<li>保留备份直到确认新系统运行正常</li>
</ol>
</div></div>
<h4 id="311-在新硬盘上创建新分区并格式化">3.1.1 在新硬盘上创建新分区并格式化<a aria-hidden="true" href="#311-在新硬盘上创建新分区并格式化">#</a></h4>
<div><div>⚠️ 警告</div><div>
<p>高危操作，请小心执行</p>
</div></div>
<pre><code meta=""># 查看新硬盘信息
fdisk -l /dev/vdc

# 创建新分区
fdisk /dev/vdc
g    # 新建一份 GPT 分区表
n    # 添加新分区
     # 默认回车 分区号
     # 默认回车 第一个扇区
     # 默认回车 大小
w    # 将分区表写入磁盘并退出

# 格式化分区
mkfs.ext4 /dev/vdc1

# 验证分区创建
fdisk -l /dev/vdc1
</code></pre>
<h4 id="312-将旧硬盘内容传输至新硬盘">3.1.2 将旧硬盘内容传输至新硬盘<a aria-hidden="true" href="#312-将旧硬盘内容传输至新硬盘">#</a></h4>
<pre><code># 建议先验证源分区和目标分区的大小，需求 vdc 区大于或等于 vdb 区
fdisk -l /dev/vdb1 /dev/vdc1

# 开始数据迁移
dd if=/dev/vdb1 of=/dev/vdc1 bs=512M
# 可以再开一个终端执行此命令查看进度
watch -n 10 kill -USR1 $(ps aux | grep &quot;dd if=/dev/vdb1&quot;|grep -v grep|awk &#39;{print $2}&#39;)
</code></pre>
<div><div>数据迁移注意事项</div><div>
<ul>
<li>迁移过程中请勿中断操作</li>
<li>建议在迁移前进行数据完整性检查</li>
<li>迁移完成后务必进行验证</li>
<li>如果发现数据不一致，请立即停止操作并联系技术支持</li>
</ul>
</div></div>
<h3 id="32-修改原磁盘为-lvm-卷组如-devvdb">3.2 修改原磁盘为 LVM 卷组（如 /dev/vdb）<a aria-hidden="true" href="#32-修改原磁盘为-lvm-卷组如-devvdb">#</a></h3>
<h4 id="321-删除-devvdb-当前分区">3.2.1 删除 /dev/vdb 当前分区<a aria-hidden="true" href="#321-删除-devvdb-当前分区">#</a></h4>
<div><div>⚠️ 警告</div><div>
<p>高危操作，请小心执行</p>
</div></div>
<pre><code meta=""># 卸载正在使用的硬盘
umount /dev/vdb1
# 如果提示设备正忙，可以使用 fuser 命令查看正在操作硬盘的进程，并合理关闭它们
fuser -cu /dev/vdb1 # 找到进程号
ps -ef|grep 进程号  # 找到对应进程
kill -9 进程号      # 杀死进程
# 如当前终端处于 /home 路径，切换到其他路径，如 `cd /`，避免占用

# 删除磁盘分区
fdisk /dev/vdb
d    # 删除分区
w    # 将分区表写入磁盘并退出
</code></pre>
<p><img src="/assets/images/how-to-setup-lvm-conversion-vps-town/3.png" alt="删除分区操作"></img></p>
<h4 id="322-将-devvdb-转换为-lvm-卷组">3.2.2 将 /dev/vdb 转换为 LVM 卷组<a aria-hidden="true" href="#322-将-devvdb-转换为-lvm-卷组">#</a></h4>
<div><div>⚠️ 警告</div><div>
<p>高危操作，请小心执行</p>
</div></div>
<pre><code meta=""># 检查当前磁盘状态
lsblk
fdisk -l /dev/vdb
# 清除磁盘签名，会删除 /dev/vdb 数据
wipefs -a /dev/vdb

# 创建物理卷 (PV)
pvcreate /dev/vdb
# 创建卷组 (VG)
vgcreate vg_data /dev/vdb
# 创建逻辑卷 (LV)
lvcreate -n lv_data -l 100%FREE vg_data
# 格式化逻辑卷 (LV)，**需要等一会儿执行完成**
mkfs.ext4 /dev/mapper/vg_data-lv_data
# 挂载逻辑卷 /home
mount /dev/mapper/vg_data-lv_data /home

# 设置自动挂载
vim /etc/fstab
# 按a进入编辑模式，添加下面一行
/dev/mapper/vg_data-lv_data /home ext4 defaults 0 0
# esc 后再 :wq 保存

# 手动挂载
mount -a
# 检查挂载情况
df -h
</code></pre>
<p><img src="/assets/images/how-to-setup-lvm-conversion-vps-town/4.png" alt="LVM 创建过程1"></img></p>
<p><img src="/assets/images/how-to-setup-lvm-conversion-vps-town/9.png" alt="LVM 创建过程2"></img></p>
<p><img src="/assets/images/how-to-setup-lvm-conversion-vps-town/6.png" alt="fstab 信息"></img></p>
<p><strong>重启机器后，检查挂载情况</strong></p>
<p><img src="/assets/images/how-to-setup-lvm-conversion-vps-town/5.png" alt="重启后挂载检查"></img></p>
<h3 id="33-将新硬盘上的数据传至-lvm-卷组">3.3 将新硬盘上的数据传至 LVM 卷组<a aria-hidden="true" href="#33-将新硬盘上的数据传至-lvm-卷组">#</a></h3>
<pre><code># 开始数据迁移，**等待执行完成**
dd if=/dev/vdc1 of=/dev/mapper/vg_data-lv_data bs=512M
# 可以再开一个终端执行此命令查看进度
watch -n 10 kill -USR1 $(ps aux | grep &quot;dd if=/dev/vdc1&quot;|grep -v grep|awk &#39;{print $2}&#39;)
</code></pre>
<h3 id="34-将新硬盘加入-lvm-卷组">3.4 将新硬盘加入 LVM 卷组<a aria-hidden="true" href="#34-将新硬盘加入-lvm-卷组">#</a></h3>
<div><div>⚠️ 警告</div><div>
<p>高危操作，请小心执行</p>
</div></div>
<pre><code meta=""># 删除原有分区
fdisk /dev/vdc
d    # 删除分区
n    # 添加新分区
     # 默认回车 分区号
     # 默认回车 第一个扇区
     # 默认回车 大小
w    # 将分区表写入磁盘并退出

# 通知操作系统分区表更新
partprobe /dev/vdc

# 查看 pv 信息
pvs
# 创建 pv
pvcreate /dev/vdc

# 扩展卷组(VG)空间
vgextend vg_data /dev/vdc # 往 vg_data 添加
lvextend -l +100%FREE /dev/mapper/vg_data-lv_data # 100%空间分配
</code></pre>
<h3 id="35-扩容-lvm-卷组的文件系统">3.5 扩容 LVM 卷组的文件系统<a aria-hidden="true" href="#35-扩容-lvm-卷组的文件系统">#</a></h3>
<div><div>文件系统扩容注意事项</div><div>
<ul>
<li>确保文件系统支持在线扩容</li>
<li>扩容过程中不要中断操作</li>
<li>建议在扩容后检查文件系统完整性</li>
</ul>
</div></div>
<pre><code># 检查当前文件系统类型
df -hT
# 根据文件系统类型选择扩容命令
# 如果是 ext4 文件系统
resize2fs -p /dev/mapper/vg_data-lv_data
# 如果是 xfs 文件系统
# xfs_growfs /dev/mapper/vg_data-lv_data

# 检查挂载信息
df -hT
</code></pre>
<p><img src="/assets/images/how-to-setup-lvm-conversion-vps-town/8.png" alt="文件系统扩容结果"></img></p>
<h2 id="4-注意事项">4. 注意事项<a aria-hidden="true" href="#4-注意事项">#</a></h2>
<div><div>常见问题处理</div><div><p>
如果遇到问题，可以尝试以下解决方案：</p>
<ol>
<li>
<p><strong>磁盘无法识别</strong></p>
<ul>
<li>检查磁盘是否已正确连接</li>
<li>执行磁盘扫描命令</li>
<li>检查系统日志</li>
</ul>
</li>
<li>
<p><strong>挂载失败</strong></p>
<ul>
<li>检查文件系统是否损坏</li>
<li>验证挂载点权限</li>
<li>检查 fstab 配置</li>
</ul>
</li>
<li>
<p><strong>LVM 操作失败</strong></p>
<ul>
<li>检查 PV、VG、LV 状态</li>
<li>确保有足够的空间</li>
<li>查看系统日志</li>
</ul>
</li>
</ol>
</div></div>]]></content>
    </entry>
</feed>