<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Posts on 小时候的胡同</title>
        <link>https://blog.lovetianjin.com/post/</link>
        <description>Recent content in Posts on 小时候的胡同</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-cn</language>
        <lastBuildDate>Sun, 10 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://blog.lovetianjin.com/post/index.xml" rel="self" type="application/rss+xml" /><item>
            <title>使用两台 VPS 部署 TeslaMate</title>
            <link>https://blog.lovetianjin.com/post/teslamate-two-vps-deployment-guide-hugo-v2/</link>
            <pubDate>Sun, 10 May 2026 00:00:00 +0000</pubDate>
            <guid>https://blog.lovetianjin.com/post/teslamate-two-vps-deployment-guide-hugo-v2/</guid>
            <description>&lt;h1 id=&#34;使用两台-vps-部署-teslamatenginx-httpsgrafana-与-tesla-中国-api-代理链路完整记录&#34;&gt;使用两台 VPS 部署 TeslaMate：Nginx HTTPS、Grafana 与 Tesla 中国 API 代理链路完整记录&#xA;&lt;/h1&gt;&lt;h2 id=&#34;为什么需要两台-vps&#34;&gt;为什么需要两台 VPS&#xA;&lt;/h2&gt;&lt;p&gt;正常情况下，TeslaMate 只需要一台 VPS 就可以部署：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;TeslaMate + PostgreSQL + Grafana + Mosquitto + Nginx&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;但这次部署遇到的关键问题不是安装问题，而是&lt;strong&gt;网络出口问题&lt;/strong&gt;。&lt;/p&gt;&#xA;&lt;p&gt;主 VPS 上 TeslaMate 可以成功访问 Tesla 登录接口，并刷新 Token：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;POST https://auth.tesla.cn/oauth2/v3/token -&amp;gt; 200&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Refreshed api tokens&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这说明 Tesla 账号 Token 本身是有效的，TeslaMate 也能正常启动。但主 VPS 访问 Tesla 中国区车辆接口时失败：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;GET https://owner-api.vn.cloud.tesla.cn/api/1/products -&amp;gt; error: :timeout&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Could not get vehicles: :timeout&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;手工测试也能复现：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;curl -v --connect-timeout &lt;span style=&#34;color:#ae81ff&#34;&gt;15&lt;/span&gt; https://owner-api.vn.cloud.tesla.cn/api/1/products&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;现象是 TCP 443 已经连上，但 TLS 握手超时：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Connected to owner-api.vn.cloud.tesla.cn port 443&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;TLS handshake, Client hello&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;SSL connection timeout&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这说明问题不是 Docker、Nginx、Grafana、数据库，也不是 TeslaMate 配置错误，而是：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;主 VPS 到 Tesla 中国 API 后端的网络链路不稳定或不可用&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;如果 TeslaMate 拿不到车辆列表，后续就会连锁出现：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;TeslaMate 主页没有车辆&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;PostgreSQL 的 cars 表为空&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Grafana 面板 No data&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;部分 Grafana SQL 面板因为车辆变量为空而报错&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;随后测试第二台 VPS，发现它可以正常访问 Tesla 中国 API：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;curl -I --connect-timeout &lt;span style=&#34;color:#ae81ff&#34;&gt;10&lt;/span&gt; https://fleet-api.prd.cn.vn.cloud.tesla.cn&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;curl -I --connect-timeout &lt;span style=&#34;color:#ae81ff&#34;&gt;10&lt;/span&gt; https://owner-api.vn.cloud.tesla.cn/api/1/products&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;返回结果分别是：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;HTTP/2 404&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;HTTP/2 401&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这里的 &lt;code&gt;404&lt;/code&gt; 和 &lt;code&gt;401&lt;/code&gt; 都不是网络错误：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;404&lt;/code&gt; 说明 Fleet API 根路径可达，只是根路径没有对应资源；&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;401&lt;/code&gt; 说明 Owner API 可达，只是没有携带 Tesla Token。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;因此最终选择使用两台 VPS：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;主 VPS：继续运行 TeslaMate、Grafana、Nginx、PostgreSQL&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;第二台 VPS：作为访问 Tesla 中国 API 的专用出口&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这样做的目的不是“让整台主 VPS 都走代理”，而是只让 TeslaMate 容器访问 Tesla API 的 HTTPS 流量走第二台 VPS。其他服务，例如 Nginx、Grafana、sub-store、系统 apt、SSH 等，都保持原来的网络出口。&lt;/p&gt;&#xA;&lt;p&gt;最终解决方案是：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;第二台 VPS 上运行 tinyproxy&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;主 VPS 用 systemd 保持 SSH 隧道&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;主 VPS 用 redsocks 接收透明代理流量&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;主 VPS 用 iptables 只劫持 TeslaMate 容器的 443 流量&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;&#xA;&lt;h2 id=&#34;一最终架构&#34;&gt;一、最终架构&#xA;&lt;/h2&gt;&lt;p&gt;本次使用两台服务器：&lt;/p&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;角色&lt;/th&gt;&#xA;          &lt;th&gt;IP&lt;/th&gt;&#xA;          &lt;th&gt;用途&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;主服务器 / Evoxt VPS&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;&amp;lt;MAIN_VPS_IP&amp;gt;&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;运行 TeslaMate、Grafana、PostgreSQL、Mosquitto、Nginx&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;代理出口服务器&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;&amp;lt;PROXY_VPS_IP&amp;gt;&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;运行 tinyproxy，帮助主服务器访问 Tesla 中国 API&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;p&gt;域名规划：&lt;/p&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;域名&lt;/th&gt;&#xA;          &lt;th&gt;指向&lt;/th&gt;&#xA;          &lt;th&gt;用途&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;&amp;lt;TESLAMATE_DOMAIN&amp;gt;&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;&amp;lt;MAIN_VPS_IP&amp;gt;&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;TeslaMate Web&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;&amp;lt;GRAFANA_DOMAIN&amp;gt;&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;&amp;lt;MAIN_VPS_IP&amp;gt;&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Grafana 仪表盘&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;p&gt;最终流量路径：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;浏览器&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  ↓&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;https://&amp;lt;TESLAMATE_DOMAIN&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;https://&amp;lt;GRAFANA_DOMAIN&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  ↓&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Nginx + HTTPS + Basic Auth&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  ↓&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;TeslaMate / Grafana&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;TeslaMate 访问 Tesla 中国 API 的路径：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;TeslaMate 容器&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  ↓&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;iptables 只劫持 TeslaMate 容器的 443 流量&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  ↓&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;redsocks :12345&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  ↓&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Evoxt 本机 172.17.0.1:7890&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  ↓&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;systemd 托管的 SSH 隧道&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  ↓&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;lt;PROXY_VPS_IP&amp;gt;:127.0.0.1:8888&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  ↓&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;tinyproxy&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  ↓&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Tesla 中国 API&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这套结构的核心目标是：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;只有 TeslaMate 容器访问 Tesla API 时走第二台服务器；&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Evoxt 上的 Nginx、Grafana、PostgreSQL、Mosquitto、sub-store 等其他服务不走代理。&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;&#xA;&lt;h2 id=&#34;二两台-vps-之间是如何连接的&#34;&gt;二、两台 VPS 之间是如何连接的&#xA;&lt;/h2&gt;&lt;p&gt;两台 VPS 之间不是直接把代理端口暴露到公网，而是通过 SSH 隧道连接。&lt;/p&gt;&#xA;&lt;p&gt;设计原则：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;第二台 VPS 的 tinyproxy 只监听 127.0.0.1:8888&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;主 VPS 通过 SSH 隧道把 172.17.0.1:7890 转发到第二台 VPS 的 127.0.0.1:8888&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;TeslaMate 容器的 443 流量被 iptables 转给 redsocks&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;redsocks 再通过 172.17.0.1:7890 进入 SSH 隧道&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这样第二台 VPS 不会变成公开代理，主 VPS 的其他服务也不会被全局代理影响。&lt;/p&gt;&#xA;&lt;p&gt;简化链路如下：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;TeslaMate 容器&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  ↓ iptables 只匹配 TeslaMate 容器 IP&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;redsocks :12345&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  ↓&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;172.17.0.1:7890&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  ↓ SSH 隧道&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;第二台 VPS 127.0.0.1:8888&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  ↓ tinyproxy&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Tesla 中国 API&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;&#xA;&lt;h2 id=&#34;三部署-teslamate-主服务&#34;&gt;三、部署 TeslaMate 主服务&#xA;&lt;/h2&gt;&lt;h3 id=&#34;1-检查端口占用&#34;&gt;1. 检查端口占用&#xA;&lt;/h3&gt;&lt;p&gt;主 VPS 上先检查 &lt;code&gt;3000&lt;/code&gt; 和 &lt;code&gt;4000&lt;/code&gt; 是否被占用：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ss -lntp | grep -E &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;:3000|:4000&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;实际情况中，&lt;code&gt;3000&lt;/code&gt; 已经被 &lt;code&gt;sub-store&lt;/code&gt; 占用：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sub-store   xream/sub-store   0.0.0.0:3000-&amp;gt;3000/tcp&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;所以不能让 Grafana 继续占用宿主机 &lt;code&gt;3000&lt;/code&gt;。&lt;/p&gt;&#xA;&lt;p&gt;最终端口规划：&lt;/p&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;服务&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: right&#34;&gt;容器内部端口&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: right&#34;&gt;宿主机端口&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;TeslaMate&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;&lt;code&gt;4000&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;&lt;code&gt;127.0.0.1:14000&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Grafana&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;&lt;code&gt;3000&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;&lt;code&gt;127.0.0.1:13000&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;sub-store&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;&lt;code&gt;3000&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;&lt;code&gt;0.0.0.0:3000&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h3 id=&#34;2-创建目录&#34;&gt;2. 创建目录&#xA;&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;mkdir -p /opt/teslamate&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cd /opt/teslamate&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;3-创建-env&#34;&gt;3. 创建 &lt;code&gt;.env&lt;/code&gt;&#xA;&lt;/h3&gt;&lt;p&gt;生成随机密钥：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;openssl rand -hex &lt;span style=&#34;color:#ae81ff&#34;&gt;32&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;openssl rand -hex &lt;span style=&#34;color:#ae81ff&#34;&gt;24&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;创建 &lt;code&gt;.env&lt;/code&gt;：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nano .env&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;内容示例：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-env&#34; data-lang=&#34;env&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;TM_ENCRYPTION_KEY&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;替换成第一条随机字符串&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;TM_DB_USER&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;teslamate&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;TM_DB_PASS&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;替换成第二条随机字符串&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;TM_DB_NAME&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;teslamate&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;收紧权限：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;chmod &lt;span style=&#34;color:#ae81ff&#34;&gt;600&lt;/span&gt; .env&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;4-创建-docker-composeyml&#34;&gt;4. 创建 &lt;code&gt;docker-compose.yml&lt;/code&gt;&#xA;&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nano docker-compose.yml&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;内容：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;services&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;teslamate&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;image&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;teslamate/teslamate:latest&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;restart&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;always&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;depends_on&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;database&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;mosquitto&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;environment&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;ENCRYPTION_KEY=${TM_ENCRYPTION_KEY}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;DATABASE_USER=${TM_DB_USER}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;DATABASE_PASS=${TM_DB_PASS}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;DATABASE_NAME=${TM_DB_NAME}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;DATABASE_HOST=database&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;MQTT_HOST=mosquitto&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;CHECK_ORIGIN=true&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;VIRTUAL_HOST=&amp;lt;TESLAMATE_DOMAIN&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;TZ=Asia/Shanghai&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;ports&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;127.0.0.1&lt;/span&gt;:&lt;span style=&#34;color:#ae81ff&#34;&gt;14000&lt;/span&gt;:&lt;span style=&#34;color:#ae81ff&#34;&gt;4000&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;volumes&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;./import:/opt/app/import&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;cap_drop&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;all&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;database&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;image&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;postgres:18-trixie&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;restart&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;always&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;environment&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;POSTGRES_USER=${TM_DB_USER}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;POSTGRES_PASSWORD=${TM_DB_PASS}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;POSTGRES_DB=${TM_DB_NAME}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;volumes&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;teslamate-db:/var/lib/postgresql&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;grafana&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;image&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;teslamate/grafana:latest&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;restart&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;always&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;depends_on&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;database&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;environment&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;DATABASE_USER=${TM_DB_USER}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;DATABASE_PASS=${TM_DB_PASS}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;DATABASE_NAME=${TM_DB_NAME}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;DATABASE_HOST=database&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;GF_SERVER_DOMAIN=&amp;lt;GRAFANA_DOMAIN&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;GF_SERVER_ROOT_URL=https://&amp;lt;GRAFANA_DOMAIN&amp;gt;/&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;GF_SECURITY_ADMIN_USER=admin&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;GF_SECURITY_ADMIN_PASSWORD=${TM_DB_PASS}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;GF_AUTH_ANONYMOUS_ENABLED=false&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;TZ=Asia/Shanghai&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;ports&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;127.0.0.1&lt;/span&gt;:&lt;span style=&#34;color:#ae81ff&#34;&gt;13000&lt;/span&gt;:&lt;span style=&#34;color:#ae81ff&#34;&gt;3000&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;volumes&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;teslamate-grafana-data:/var/lib/grafana&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;mosquitto&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;image&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;eclipse-mosquitto:2&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;restart&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;always&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;command&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;mosquitto -c /mosquitto-no-auth.conf&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;volumes&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;mosquitto-conf:/mosquitto/config&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;mosquitto-data:/mosquitto/data&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;volumes&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;teslamate-db&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;teslamate-grafana-data&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;mosquitto-conf&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;mosquitto-data&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;检查配置：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;docker compose config&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;启动：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;docker compose up -d&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;检查容器：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;docker ps --format &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;table {{.Names}}\t{{.Image}}\t{{.Status}}\t{{.Ports}}&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;本机测试：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;curl -I http://127.0.0.1:14000&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;curl -I http://127.0.0.1:13000&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;看到 &lt;code&gt;302 Found&lt;/code&gt; 是正常的，表示服务已启动。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;四配置-nginx-反向代理https-与-basic-auth&#34;&gt;四、配置 Nginx 反向代理、HTTPS 与 Basic Auth&#xA;&lt;/h2&gt;&lt;h3 id=&#34;1-创建-basic-auth-密码&#34;&gt;1. 创建 Basic Auth 密码&#xA;&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;apt update&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;apt install -y apache2-utils&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;htpasswd -c /etc/nginx/.htpasswd-teslamate &amp;lt;BASIC_AUTH_USER&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;2-创建-nginx-配置&#34;&gt;2. 创建 Nginx 配置&#xA;&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nano /etc/nginx/sites-available/teslamate.conf&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;内容：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-nginx&#34; data-lang=&#34;nginx&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;server&lt;/span&gt; {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;listen&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;80&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;server_name&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;lt;TESLAMATE_DOMAIN&amp;gt;&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;location&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;/&lt;/span&gt; {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;auth_basic&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;TeslaMate&amp;#34;&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;auth_basic_user_file&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;/etc/nginx/.htpasswd-teslamate&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;proxy_pass&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;http://127.0.0.1:14000&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;proxy_http_version&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;.1&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;proxy_set_header&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;Host&lt;/span&gt; $host;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;proxy_set_header&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;X-Real-IP&lt;/span&gt; $remote_addr;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;proxy_set_header&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;X-Forwarded-For&lt;/span&gt; $proxy_add_x_forwarded_for;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;proxy_set_header&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;X-Forwarded-Proto&lt;/span&gt; $scheme;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;proxy_set_header&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;Upgrade&lt;/span&gt; $http_upgrade;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;proxy_set_header&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;Connection&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;upgrade&amp;#34;&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;server&lt;/span&gt; {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;listen&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;80&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;server_name&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;lt;GRAFANA_DOMAIN&amp;gt;&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;location&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;/&lt;/span&gt; {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;auth_basic&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Grafana&amp;#34;&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;auth_basic_user_file&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;/etc/nginx/.htpasswd-teslamate&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;proxy_pass&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;http://127.0.0.1:13000&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;proxy_http_version&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;.1&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;proxy_set_header&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;Host&lt;/span&gt; $host;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;proxy_set_header&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;X-Real-IP&lt;/span&gt; $remote_addr;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;proxy_set_header&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;X-Forwarded-For&lt;/span&gt; $proxy_add_x_forwarded_for;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;proxy_set_header&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;X-Forwarded-Proto&lt;/span&gt; $scheme;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;proxy_set_header&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;Upgrade&lt;/span&gt; $http_upgrade;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;proxy_set_header&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;Connection&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;upgrade&amp;#34;&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;启用配置：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ln -s /etc/nginx/sites-available/teslamate.conf /etc/nginx/sites-enabled/teslamate.conf&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nginx -t&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;systemctl reload nginx&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;测试 Basic Auth：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;curl -I -H &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Host: &amp;lt;TESLAMATE_DOMAIN&amp;gt;&amp;#34;&lt;/span&gt; http://127.0.0.1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;curl -I -H &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Host: &amp;lt;GRAFANA_DOMAIN&amp;gt;&amp;#34;&lt;/span&gt; http://127.0.0.1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;正常返回：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;HTTP/1.1 401 Unauthorized&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;3-申请-https-证书&#34;&gt;3. 申请 HTTPS 证书&#xA;&lt;/h3&gt;&lt;p&gt;先确认 DNS：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;dig +short &amp;lt;TESLAMATE_DOMAIN&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;dig +short &amp;lt;GRAFANA_DOMAIN&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;应返回主 VPS IP：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;lt;MAIN_VPS_IP&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;lt;MAIN_VPS_IP&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;申请证书：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;certbot --nginx -d &amp;lt;TESLAMATE_DOMAIN&amp;gt; -d &amp;lt;GRAFANA_DOMAIN&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;测试：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;curl -I https://&amp;lt;TESLAMATE_DOMAIN&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;curl -I https://&amp;lt;GRAFANA_DOMAIN&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;正常返回 &lt;code&gt;401 Unauthorized&lt;/code&gt;，表示 HTTPS 与 Basic Auth 都生效。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;五排查-teslamate-无车辆grafana-no-data&#34;&gt;五、排查 TeslaMate 无车辆、Grafana No Data&#xA;&lt;/h2&gt;&lt;p&gt;安装完成后，TeslaMate 登录 Token 成功，但主页没有车辆，Grafana 显示 &lt;code&gt;No data&lt;/code&gt; 或 SQL 错误。&lt;/p&gt;&#xA;&lt;p&gt;查看日志：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cd /opt/teslamate&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;docker compose logs --tail&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;200&lt;/span&gt; teslamate&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;关键日志：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;POST https://auth.tesla.cn/oauth2/v3/token -&amp;gt; 200&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Scheduling token refresh in 6 h&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;GET https://owner-api.vn.cloud.tesla.cn/api/1/products -&amp;gt; error: :timeout&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Could not get vehicles: :timeout&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这说明：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Token 成功；&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;车辆列表拉取失败；&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;数据库 cars 表为空；&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Grafana 没有数据。&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;测试主 VPS 到 Tesla API：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;curl -v --connect-timeout &lt;span style=&#34;color:#ae81ff&#34;&gt;15&lt;/span&gt; https://owner-api.vn.cloud.tesla.cn/api/1/products&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;curl -v --connect-timeout &lt;span style=&#34;color:#ae81ff&#34;&gt;15&lt;/span&gt; https://fleet-api.prd.cn.vn.cloud.tesla.cn&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;现象：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;TCP 443 连接成功&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;TLS Client Hello 发出&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;SSL connection timeout&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;因此判断：主 VPS 到 Tesla 中国 API 的链路不正常。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;六在第二台-vps-上安装-tinyproxy&#34;&gt;六、在第二台 VPS 上安装 tinyproxy&#xA;&lt;/h2&gt;&lt;p&gt;第二台 VPS：&lt;code&gt;&amp;lt;PROXY_VPS_IP&amp;gt;&lt;/code&gt;&lt;/p&gt;&#xA;&lt;h3 id=&#34;1-测试-tesla-api&#34;&gt;1. 测试 Tesla API&#xA;&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;curl -I --connect-timeout &lt;span style=&#34;color:#ae81ff&#34;&gt;10&lt;/span&gt; https://fleet-api.prd.cn.vn.cloud.tesla.cn&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;curl -I --connect-timeout &lt;span style=&#34;color:#ae81ff&#34;&gt;10&lt;/span&gt; https://owner-api.vn.cloud.tesla.cn/api/1/products&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;正常结果：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;HTTP/2 404&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;HTTP/2 401&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;2-安装-tinyproxy&#34;&gt;2. 安装 tinyproxy&#xA;&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;apt update&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;apt install -y tinyproxy&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cp /etc/tinyproxy/tinyproxy.conf /etc/tinyproxy/tinyproxy.conf.bak&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nano /etc/tinyproxy/tinyproxy.conf&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;关键配置：&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-conf&#34; data-lang=&#34;conf&#34;&gt;Port 8888&#xA;Listen 127.0.0.1&#xA;Allow 127.0.0.1&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;重启：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;systemctl restart tinyproxy&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;systemctl enable tinyproxy&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;systemctl status tinyproxy --no-pager&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;检查监听：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ss -lntp | grep &lt;span style=&#34;color:#ae81ff&#34;&gt;8888&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;正常：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;127.0.0.1:8888&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;测试代理：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;curl -I -x http://127.0.0.1:8888 --connect-timeout &lt;span style=&#34;color:#ae81ff&#34;&gt;10&lt;/span&gt; https://owner-api.vn.cloud.tesla.cn/api/1/products&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;正常：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;HTTP/1.0 200 Connection established&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;HTTP/2 401&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;&#xA;&lt;h2 id=&#34;七在主-vps-上建立-ssh-隧道&#34;&gt;七、在主 VPS 上建立 SSH 隧道&#xA;&lt;/h2&gt;&lt;p&gt;主 VPS 需要通过 SSH 隧道访问第二台 VPS 的本地 tinyproxy。&lt;/p&gt;&#xA;&lt;h3 id=&#34;1-确认-docker-网桥地址&#34;&gt;1. 确认 Docker 网桥地址&#xA;&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ip -4 addr show docker0 | grep -oP &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;(?&amp;lt;=inet\s)\d+(\.\d+){3}&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;结果：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;172.17.0.1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;2-创建-ssh-密钥&#34;&gt;2. 创建 SSH 密钥&#xA;&lt;/h3&gt;&lt;p&gt;在主 VPS 上执行：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ssh-keygen -t ed25519 -f /root/.ssh/teslamate_tunnel -N &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;查看公钥：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cat /root/.ssh/teslamate_tunnel.pub&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;把公钥加入第二台 VPS 的：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;/root/.ssh/authorized_keys&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;权限：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;chmod &lt;span style=&#34;color:#ae81ff&#34;&gt;700&lt;/span&gt; /root/.ssh&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;chmod &lt;span style=&#34;color:#ae81ff&#34;&gt;600&lt;/span&gt; /root/.ssh/authorized_keys&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;测试免密：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ssh -i /root/.ssh/teslamate_tunnel root@&amp;lt;PROXY_VPS_IP&amp;gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;echo ok&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;3-用-systemd-托管-ssh-隧道&#34;&gt;3. 用 systemd 托管 SSH 隧道&#xA;&lt;/h3&gt;&lt;p&gt;创建服务：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nano /etc/systemd/system/teslamate-proxy-tunnel.service&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;内容：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ini&#34; data-lang=&#34;ini&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;[Unit]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;Description&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;TeslaMate SSH tunnel to &amp;lt;PROXY_VPS_IP&amp;gt; tinyproxy&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;After&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;network-online.target&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;Wants&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;network-online.target&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;[Service]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;Type&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;simple&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;User&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;root&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;ExecStart&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;/usr/bin/ssh -i /root/.ssh/teslamate_tunnel -N -o ExitOnForwardFailure=yes -o ServerAliveInterval=30 -o ServerAliveCountMax=3 -o StrictHostKeyChecking=accept-new -L 172.17.0.1:7890:127.0.0.1:8888 root@&amp;lt;PROXY_VPS_IP&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;Restart&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;always&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;RestartSec&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;5&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;[Install]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;WantedBy&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;multi-user.target&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;启动：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;systemctl daemon-reload&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;systemctl enable --now teslamate-proxy-tunnel&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;检查：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;systemctl status teslamate-proxy-tunnel --no-pager&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ss -lntp | grep &lt;span style=&#34;color:#ae81ff&#34;&gt;7890&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;正常：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Active: active (running)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;172.17.0.1:7890&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;测试链路：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;curl -I -x http://172.17.0.1:7890 --connect-timeout &lt;span style=&#34;color:#ae81ff&#34;&gt;10&lt;/span&gt; https://owner-api.vn.cloud.tesla.cn/api/1/products&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;正常：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;HTTP/1.0 200 Connection established&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;HTTP/2 401&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;&#xA;&lt;h2 id=&#34;八为什么不能只给-teslamate-配-http_proxy&#34;&gt;八、为什么不能只给 TeslaMate 配 &lt;code&gt;HTTP_PROXY&lt;/code&gt;&#xA;&lt;/h2&gt;&lt;p&gt;尝试在 &lt;code&gt;docker-compose.yml&lt;/code&gt; 的 TeslaMate 服务里加入：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;- &lt;span style=&#34;color:#ae81ff&#34;&gt;HTTP_PROXY=http://172.17.0.1:7890&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;- &lt;span style=&#34;color:#ae81ff&#34;&gt;HTTPS_PROXY=http://172.17.0.1:7890&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;但 TeslaMate 仍然请求失败：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;GET https://owner-api.vn.cloud.tesla.cn/api/1/products -&amp;gt; error: :timeout&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;因此判断：TeslaMate 本体没有按预期使用这两个环境变量访问 Tesla API。&lt;/p&gt;&#xA;&lt;p&gt;最终改用透明代理：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;iptables 定向转发 TeslaMate 容器的 443 流量&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  ↓&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;redsocks&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  ↓&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;HTTP CONNECT 代理&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;&#xA;&lt;h2 id=&#34;九配置-redsocks-透明代理&#34;&gt;九、配置 redsocks 透明代理&#xA;&lt;/h2&gt;&lt;h3 id=&#34;1-安装-redsocks&#34;&gt;1. 安装 redsocks&#xA;&lt;/h3&gt;&lt;p&gt;在主 VPS 上执行：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;apt update&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;apt install -y redsocks&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cp /etc/redsocks.conf /etc/redsocks.conf.bak&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;2-修改配置&#34;&gt;2. 修改配置&#xA;&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nano /etc/redsocks.conf&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;内容：&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-conf&#34; data-lang=&#34;conf&#34;&gt;base {&#xA;    log_debug = off;&#xA;    log_info = on;&#xA;    log = &amp;#34;syslog:daemon&amp;#34;;&#xA;    daemon = on;&#xA;    redirector = iptables;&#xA;}&#xA;&#xA;redsocks {&#xA;    local_ip = 0.0.0.0;&#xA;    local_port = 12345;&#xA;&#xA;    ip = 172.17.0.1;&#xA;    port = 7890;&#xA;&#xA;    type = http-connect;&#xA;}&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;启动：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;systemctl restart redsocks&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;systemctl enable redsocks&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;systemctl status redsocks --no-pager&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;检查：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ss -lntp | grep &lt;span style=&#34;color:#ae81ff&#34;&gt;12345&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;正常：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;0.0.0.0:12345&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;&#xA;&lt;h2 id=&#34;十只劫持-teslamate-容器的-https-流量&#34;&gt;十、只劫持 TeslaMate 容器的 HTTPS 流量&#xA;&lt;/h2&gt;&lt;h3 id=&#34;1-获取-teslamate-容器-ip&#34;&gt;1. 获取 TeslaMate 容器 IP&#xA;&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;docker inspect -f &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}&amp;#39;&lt;/span&gt; teslamate-teslamate-1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;示例：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;172.18.0.4&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;2-添加-iptables-规则&#34;&gt;2. 添加 iptables 规则&#xA;&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;TM_IP&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;$(&lt;/span&gt;docker inspect -f &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}&amp;#39;&lt;/span&gt; teslamate-teslamate-1&lt;span style=&#34;color:#66d9ef&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;echo &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;TeslaMate container IP: &lt;/span&gt;$TM_IP&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;iptables -t nat -N TESLAMATE_REDSOCKS 2&amp;gt;/dev/null &lt;span style=&#34;color:#f92672&#34;&gt;||&lt;/span&gt; true&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;iptables -t nat -F TESLAMATE_REDSOCKS&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;iptables -t nat -A TESLAMATE_REDSOCKS -d 0.0.0.0/8 -j RETURN&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;iptables -t nat -A TESLAMATE_REDSOCKS -d 10.0.0.0/8 -j RETURN&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;iptables -t nat -A TESLAMATE_REDSOCKS -d 127.0.0.0/8 -j RETURN&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;iptables -t nat -A TESLAMATE_REDSOCKS -d 169.254.0.0/16 -j RETURN&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;iptables -t nat -A TESLAMATE_REDSOCKS -d 172.16.0.0/12 -j RETURN&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;iptables -t nat -A TESLAMATE_REDSOCKS -d 192.168.0.0/16 -j RETURN&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;iptables -t nat -A TESLAMATE_REDSOCKS -d 224.0.0.0/4 -j RETURN&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;iptables -t nat -A TESLAMATE_REDSOCKS -p tcp --dport &lt;span style=&#34;color:#ae81ff&#34;&gt;443&lt;/span&gt; -j REDIRECT --to-ports &lt;span style=&#34;color:#ae81ff&#34;&gt;12345&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;iptables -t nat -D PREROUTING -s &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$TM_IP&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; -p tcp --dport &lt;span style=&#34;color:#ae81ff&#34;&gt;443&lt;/span&gt; -j TESLAMATE_REDSOCKS 2&amp;gt;/dev/null &lt;span style=&#34;color:#f92672&#34;&gt;||&lt;/span&gt; true&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;iptables -t nat -A PREROUTING -s &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$TM_IP&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; -p tcp --dport &lt;span style=&#34;color:#ae81ff&#34;&gt;443&lt;/span&gt; -j TESLAMATE_REDSOCKS&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;解释：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;只匹配来源为 TeslaMate 容器 IP 的 443 流量；&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;排除内网、Docker 网段、本机地址；&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;只把公网 HTTPS 流量转给 redsocks。&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;所以不会影响：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Nginx&lt;/li&gt;&#xA;&lt;li&gt;Grafana&lt;/li&gt;&#xA;&lt;li&gt;PostgreSQL&lt;/li&gt;&#xA;&lt;li&gt;Mosquitto&lt;/li&gt;&#xA;&lt;li&gt;sub-store&lt;/li&gt;&#xA;&lt;li&gt;主机系统自身的 apt、curl、ssh&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;3-检查规则&#34;&gt;3. 检查规则&#xA;&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;iptables -t nat -L PREROUTING -n -v --line-numbers | grep TESLAMATE&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;iptables -t nat -L TESLAMATE_REDSOCKS -n -v&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;应看到：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;TESLAMATE_REDSOCKS  tcp  --  172.18.0.4  0.0.0.0/0  tcp dpt:443&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;REDIRECT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:443 redir ports 12345&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;&#xA;&lt;h2 id=&#34;十一重启-teslamate-并验证&#34;&gt;十一、重启 TeslaMate 并验证&#xA;&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cd /opt/teslamate&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;docker compose restart teslamate&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;docker compose logs --tail&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;200&lt;/span&gt; teslamate&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;如果成功，之前的：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Could not get vehicles: :timeout&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;应该消失，TeslaMate 主页会显示车辆。之后 Grafana 中的 &lt;code&gt;No data&lt;/code&gt; 也会随着数据采集逐步恢复。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;十二持久化与开机自启&#34;&gt;十二、持久化与开机自启&#xA;&lt;/h2&gt;&lt;h3 id=&#34;1-持久化-iptables&#34;&gt;1. 持久化 iptables&#xA;&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;apt install -y iptables-persistent&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;netfilter-persistent save&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;systemctl enable netfilter-persistent&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;以后每次修改 iptables 后执行：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;netfilter-persistent save&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;2-确认服务开机自启&#34;&gt;2. 确认服务开机自启&#xA;&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;systemctl is-enabled teslamate-proxy-tunnel&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;systemctl is-enabled redsocks&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;systemctl is-enabled docker&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;应返回：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;enabled&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;如未启用：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;systemctl enable teslamate-proxy-tunnel&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;systemctl enable redsocks&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;systemctl enable docker&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;&#xA;&lt;h2 id=&#34;十三常用排查命令&#34;&gt;十三、常用排查命令&#xA;&lt;/h2&gt;&lt;h3 id=&#34;1-检查-teslamate-日志&#34;&gt;1. 检查 TeslaMate 日志&#xA;&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cd /opt/teslamate&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;docker compose logs --tail&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;100&lt;/span&gt; teslamate&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;2-检查-ssh-隧道&#34;&gt;2. 检查 SSH 隧道&#xA;&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;systemctl status teslamate-proxy-tunnel --no-pager&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ss -lntp | grep &lt;span style=&#34;color:#ae81ff&#34;&gt;7890&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;3-检查-tinyproxy-链路&#34;&gt;3. 检查 tinyproxy 链路&#xA;&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;curl -I -x http://172.17.0.1:7890 --connect-timeout &lt;span style=&#34;color:#ae81ff&#34;&gt;10&lt;/span&gt; https://owner-api.vn.cloud.tesla.cn/api/1/products&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;正常：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;HTTP/1.0 200 Connection established&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;HTTP/2 401&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;4-检查-redsocks&#34;&gt;4. 检查 redsocks&#xA;&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;systemctl status redsocks --no-pager&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ss -lntp | grep &lt;span style=&#34;color:#ae81ff&#34;&gt;12345&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;5-检查-iptables-计数&#34;&gt;5. 检查 iptables 计数&#xA;&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;iptables -t nat -L TESLAMATE_REDSOCKS -n -v&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;如果 &lt;code&gt;REDIRECT&lt;/code&gt; 行的 &lt;code&gt;pkts/bytes&lt;/code&gt; 在增长，说明 TeslaMate 的 HTTPS 流量正在被透明代理接管。&lt;/p&gt;&#xA;&lt;h3 id=&#34;6-检查数据库是否已有车辆&#34;&gt;6. 检查数据库是否已有车辆&#xA;&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cd /opt/teslamate&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;docker compose exec database psql -U teslamate -d teslamate -c &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;select id, eid, vid, name, model, inserted_at from cars;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;&#xA;&lt;h2 id=&#34;十四安全注意事项&#34;&gt;十四、安全注意事项&#xA;&lt;/h2&gt;&lt;h3 id=&#34;1-不要直接开放-teslamate--grafana-端口&#34;&gt;1. 不要直接开放 TeslaMate / Grafana 端口&#xA;&lt;/h3&gt;&lt;p&gt;不要使用：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;ports&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  - &lt;span style=&#34;color:#ae81ff&#34;&gt;4000&lt;/span&gt;:&lt;span style=&#34;color:#ae81ff&#34;&gt;4000&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  - &lt;span style=&#34;color:#ae81ff&#34;&gt;3000&lt;/span&gt;:&lt;span style=&#34;color:#ae81ff&#34;&gt;3000&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;应使用：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;ports&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  - &lt;span style=&#34;color:#ae81ff&#34;&gt;127.0.0.1&lt;/span&gt;:&lt;span style=&#34;color:#ae81ff&#34;&gt;14000&lt;/span&gt;:&lt;span style=&#34;color:#ae81ff&#34;&gt;4000&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  - &lt;span style=&#34;color:#ae81ff&#34;&gt;127.0.0.1&lt;/span&gt;:&lt;span style=&#34;color:#ae81ff&#34;&gt;13000&lt;/span&gt;:&lt;span style=&#34;color:#ae81ff&#34;&gt;3000&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;2-tinyproxy-不要监听公网&#34;&gt;2. tinyproxy 不要监听公网&#xA;&lt;/h3&gt;&lt;p&gt;第二台服务器上的 tinyproxy 必须是：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;127.0.0.1:8888&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;不要是：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;0.0.0.0:8888&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;否则会变成公开代理。&lt;/p&gt;&#xA;&lt;h3 id=&#34;3-basic-auth-与-grafana-密码要使用强密码&#34;&gt;3. Basic Auth 与 Grafana 密码要使用强密码&#xA;&lt;/h3&gt;&lt;p&gt;访问 Grafana 实际有两层认证：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;第一层：Nginx Basic Auth&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;第二层：Grafana 登录&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;4-不要使用公开免费代理&#34;&gt;4. 不要使用公开免费代理&#xA;&lt;/h3&gt;&lt;p&gt;TeslaMate 涉及：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Tesla Token&lt;/li&gt;&#xA;&lt;li&gt;车辆位置&lt;/li&gt;&#xA;&lt;li&gt;行程&lt;/li&gt;&#xA;&lt;li&gt;充电记录&lt;/li&gt;&#xA;&lt;li&gt;电池信息&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;不要把这些流量交给来路不明的免费代理。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;十五总结&#34;&gt;十五、总结&#xA;&lt;/h2&gt;&lt;p&gt;本次部署的关键不是 TeslaMate 安装，而是网络路径处理。&lt;/p&gt;&#xA;&lt;p&gt;正常安装 TeslaMate 很简单：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Docker Compose + PostgreSQL + Grafana + Mosquitto&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;真正的问题是主 VPS 到 Tesla 中国 API 的 TLS 握手失败。解决方式是：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;找一台能访问 Tesla 中国 API 的第二台 VPS；&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;在第二台 VPS 上运行 tinyproxy；&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;主 VPS 用 systemd 托管 SSH 隧道；&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;再用 redsocks + iptables 只透明代理 TeslaMate 容器的 443 流量。&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;最终实现：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;TeslaMate 能访问 Tesla 中国 API；&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Grafana 正常获取数据；&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;主 VPS 其他服务不走代理；&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;代理服务不暴露公网。&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
        </item><item>
            <title>悲剧的4月18</title>
            <link>https://blog.lovetianjin.com/post/tragedy-april-18/</link>
            <pubDate>Fri, 17 Apr 2026 12:00:00 +0800</pubDate>
            <guid>https://blog.lovetianjin.com/post/tragedy-april-18/</guid>
            <description>&lt;p&gt;今天本来只是一个再普通不过的工作日。&lt;/p&gt;&#xA;&lt;p&gt;我随口问了一句：“你今天去打工吗？”&lt;br&gt;&#xA;毕竟是周五，按惯例她要去餐馆做兼职。&lt;/p&gt;&#xA;&lt;p&gt;没想到等来的，是一句——&lt;br&gt;&#xA;“我摔倒了，在医院。”&lt;/p&gt;&#xA;&lt;p&gt;其实，我并不是完全意外。&lt;br&gt;&#xA;她每天魂不守舍，手机几乎从不离手，连骑车都在看屏幕。这样的状态，迟早会出事。&lt;/p&gt;&#xA;&lt;p&gt;但讽刺的是，我每一次善意的提醒，换来的总是那句：&lt;br&gt;&#xA;“你怎么什么都要管？”&lt;/p&gt;&#xA;&lt;p&gt;接下来，是一连串忙碌而混乱的过程——检查、入院、签字。&lt;br&gt;&#xA;医生说，颅内出血不多，在可控范围内；头部有轻微骨折。&lt;br&gt;&#xA;需要住院15天，后期存在突发癫痫的可能。&lt;/p&gt;&#xA;&lt;p&gt;我查了一下资料，这种概率应该不会超过2%。&lt;br&gt;&#xA;但医生还是把最坏的情况全部讲了一遍。&lt;br&gt;&#xA;中国的医生大概总是这样，把风险说尽，像是在提前撇清责任。&lt;/p&gt;&#xA;&lt;p&gt;回家的路上，我忽然有些恍惚。&lt;/p&gt;&#xA;&lt;p&gt;为什么我这一生，总是得不到一个“善良的结果”？&lt;/p&gt;&#xA;&lt;p&gt;年轻时拼命工作，把自己交给公司，却从未被善待——&lt;br&gt;&#xA;不是被边缘化，就是被迫离开，如今甚至还要承受老板的挤压。&lt;/p&gt;&#xA;&lt;p&gt;感情也是如此。&lt;br&gt;&#xA;从初恋到现在，我始终认真对待，却换来的，总是一地狼藉。&lt;/p&gt;&#xA;&lt;p&gt;现在的婚姻，更像是一种无法摆脱的责任。&lt;br&gt;&#xA;我承担着整个家庭的支出，连卫生、孩子的教育，也几乎是我一个人在扛。&lt;/p&gt;&#xA;&lt;p&gt;我真的很累。&lt;/p&gt;&#xA;&lt;p&gt;有时候，我甚至会想——&lt;br&gt;&#xA;如果就这样离开这个世界，是不是下一世，会好一点？&lt;/p&gt;&#xA;</description>
        </item><item>
            <title>2026 生产环境 NGINX 与 SSL 自动化最佳实践：从第一性原理到极致安全</title>
            <link>https://blog.lovetianjin.com/post/nginx-ssl-2026-guide/</link>
            <pubDate>Mon, 13 Apr 2026 20:15:00 +0800</pubDate>
            <guid>https://blog.lovetianjin.com/post/nginx-ssl-2026-guide/</guid>
            <description>&lt;h3 id=&#34;一-引言回归第一性原理&#34;&gt;一、 引言：回归第一性原理&#xA;&lt;/h3&gt;&lt;p&gt;在处理复杂的 NGINX 配置和 SSL 证书申请之前，我们首先要问：为什么要这么做？&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;NGINX 的本质是“契约守门人”&lt;/strong&gt;：它定义了外部不可信流量如何进入内部可信环境，承担了协议转换、负载均衡和安全屏障的角色。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;SSL/TLS 的本质是“信任背书”&lt;/strong&gt;：它解决了互联网通信中三个核心风险——&lt;strong&gt;窃听&lt;/strong&gt;（加密）、&lt;strong&gt;篡改&lt;/strong&gt;（完整性）和&lt;strong&gt;冒充&lt;/strong&gt;（身份认证）。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;hr&gt;&#xA;&lt;h3 id=&#34;二-2026-年-web-安全新局势&#34;&gt;二、 2026 年 Web 安全新局势&#xA;&lt;/h3&gt;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;证书有效期缩短至 90 天&lt;/strong&gt;：主流浏览器已全面强制执行短效证书。&lt;strong&gt;自动化&lt;/strong&gt;不再是可选项，而是唯一的生存方式。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;ECC (椭圆曲线加密) 成为绝对主流&lt;/strong&gt;：256 位 ECC 密钥（如 &lt;code&gt;Prime256v1&lt;/code&gt;）握手速度更快、CPU 占用更低。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;HTTP/3 (QUIC) 标准化&lt;/strong&gt;：基于 UDP 解决了 TCP 的队头阻塞问题，极大提升弱网加载速度。&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;hr&gt;&#xA;&lt;h3 id=&#34;三-ssl-证书申请自动化方案acmesh&#34;&gt;三、 SSL 证书申请自动化方案：acme.sh&#xA;&lt;/h3&gt;&lt;h4 id=&#34;1-安装-acmesh&#34;&gt;1. 安装 acme.sh&#xA;&lt;/h4&gt;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# 替换为你自己的邮箱，用于接收证书过期提醒&#xA;curl https://get.acme.sh | sh -s email=admin@yourdomain.com&#xA;&#xA;# 使别名生效&#xA;source ~/.bashrc&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;h4 id=&#34;2-使用-dns-api-申请泛域名证书-以-cloudflare-为例&#34;&gt;2. 使用 DNS API 申请泛域名证书 (以 Cloudflare 为例)&#xA;&lt;/h4&gt;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# 1. 导入 API 密钥（从 DNS 服务商后台获取）&#xA;export CF_Key=&amp;#34;your_global_api_key&amp;#34;&#xA;export CF_Email=&amp;#34;your_email@example.com&amp;#34;&#xA;&#xA;# 2. 申请 ECC 证书&#xA;# -d 指定域名，--keylength ec-256 指定使用 ECC 算法&#xA;acme.sh --issue --dns dns_cf \&#xA;    -d example.com \&#xA;    -d &amp;#34;*.example.com&amp;#34; \&#xA;    --keylength ec-256&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;hr&gt;&#xA;&lt;h3 id=&#34;四-nginx-极致安全配置模板&#34;&gt;四、 NGINX 极致安全配置模板&#xA;&lt;/h3&gt;&lt;h4 id=&#34;1-规范化证书安装&#34;&gt;1. 规范化证书安装&#xA;&lt;/h4&gt;&lt;p&gt;使用 &lt;code&gt;install-cert&lt;/code&gt; 命令，它会自动关联 NGINX 重载任务。&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# 创建证书存放目录&#xA;mkdir -p /etc/nginx/ssl/example.com/&#xA;&#xA;# 安装证书并设置自动重载&#xA;acme.sh --install-cert -d example.com --ecc \&#xA;    --key-file       /etc/nginx/ssl/example.com/key.pem \&#xA;    --fullchain-file /etc/nginx/ssl/example.com/cert.pem \&#xA;    --reloadcmd     &amp;#34;systemctl reload nginx&amp;#34;&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;h4 id=&#34;2-nginx-站点配置文件&#34;&gt;2. NGINX 站点配置文件&#xA;&lt;/h4&gt;&lt;p&gt;&lt;strong&gt;路径：&lt;/strong&gt; &lt;code&gt;/etc/nginx/conf.d/example.com.conf&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;Nginx&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# HTTP/3 &amp;amp; HTTPS 整合配置&#xA;server {&#xA;    # 监听配置&#xA;    listen 443 quic reuseport;       # HTTP/3 UDP 端口&#xA;    listen 443 ssl;                  # HTTP/1.1 &amp;amp; HTTP/2 TCP 端口&#xA;    listen [::]:443 ssl;             &#xA;    &#xA;    server_name example.com;&#xA;&#xA;    # 证书路径&#xA;    ssl_certificate     /etc/nginx/ssl/example.com/cert.pem;&#xA;    ssl_certificate_key /etc/nginx/ssl/example.com/key.pem;&#xA;&#xA;    # 协议优化：仅使用 TLS 1.3 (2026年安全标准)&#xA;    ssl_protocols TLSv1.3;&#xA;    ssl_prefer_server_ciphers off;&#xA;&#xA;    # 开启 HSTS (强制浏览器使用 HTTPS，有效期一年)&#xA;    add_header Strict-Transport-Security &amp;#34;max-age=31536000; includeSubDomains; preload&amp;#34; always;&#xA;&#xA;    # 开启 HTTP/3 响应头 (告知浏览器支持 QUIC)&#xA;    add_header Alt-Svc &amp;#39;h3=&amp;#34;:443&amp;#34;; ma=86400&amp;#39;;&#xA;&#xA;    # 安全增强响应头&#xA;    add_header X-Frame-Options &amp;#34;SAMEORIGIN&amp;#34;;&#xA;    add_header X-Content-Type-Options &amp;#34;nosniff&amp;#34;;&#xA;&#xA;    location / {&#xA;        proxy_pass http://127.0.0.1:8080;&#xA;        proxy_set_header Host $host;&#xA;        proxy_set_header X-Real-IP $remote_addr;&#xA;        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;&#xA;        proxy_set_header X-Forwarded-Proto $scheme;&#xA;&#xA;        # 支持 WebSocket 协议&#xA;        proxy_http_version 1.1;&#xA;        proxy_set_header Upgrade $http_upgrade;&#xA;        proxy_set_header Connection &amp;#34;upgrade&amp;#34;;&#xA;    }&#xA;}&#xA;&#xA;# 80 端口强制跳转 HTTPS&#xA;server {&#xA;    listen 80;&#xA;    listen [::]:80;&#xA;    server_name example.com;&#xA;    return 301 https://$host$request_uri;&#xA;}&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;hr&gt;&#xA;&lt;h3 id=&#34;五-自动化运维检查与验证&#34;&gt;五、 自动化运维：检查与验证&#xA;&lt;/h3&gt;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;验证定时任务&lt;/strong&gt;：确认 acme.sh 已自动写入 crontab（通常剩余 30 天自动续期）。&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;crontab -l | grep acme.sh&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;查看 NGINX 状态&lt;/strong&gt;：&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# 检查配置语法&#xA;nginx -t&#xA;# 平滑重载&#xA;systemctl reload nginx&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;安全评分&lt;/strong&gt;：推荐使用 &lt;a class=&#34;link&#34; href=&#34;https://www.google.com/search?q=https://www.ssllabs.com/ssltest/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;SSL Labs&lt;/a&gt; 进行扫描，此配置可稳拿 &lt;strong&gt;A+&lt;/strong&gt;。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;hr&gt;&#xA;&lt;h3 id=&#34;六-总结&#34;&gt;六、 总结&#xA;&lt;/h3&gt;&lt;p&gt;在 2026 年，构建 Web 环境的公式是：&lt;strong&gt;ECC 证书 + acme.sh 自动化 + NGINX (TLS 1.3 &amp;amp; HTTP/3)&lt;/strong&gt;。将底层的安全交付自动化，才能把精力留给更有价值的业务和生活。&lt;/p&gt;&#xA;</description>
        </item><item>
            <title>Linux 运维核心指令集：从底层原理到实战进阶</title>
            <link>https://blog.lovetianjin.com/post/linux-essential-commands-guide/</link>
            <pubDate>Mon, 13 Apr 2026 18:30:00 +0800</pubDate>
            <guid>https://blog.lovetianjin.com/post/linux-essential-commands-guide/</guid>
            <description>&lt;h1 id=&#34;linux-运维核心指令集从底层原理到实战进阶&#34;&gt;Linux 运维核心指令集：从底层原理到实战进阶&#xA;&lt;/h1&gt;&lt;p&gt;在管理 VPS 或折腾 Docker 容器的过程中，Linux 命令行就是我们手中的手术刀。为了方便日常运维查阅，我将之前的几篇指令笔记进行了深度汇总与去重，并基于“第一性原理”重新梳理了底层的运行逻辑。&lt;/p&gt;&#xA;&lt;p&gt;这篇文章将 21 个高频指令归纳为六大模块，旨在帮助大家从单纯的“复制粘贴”晋升为真正的“系统掌控者”。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h3 id=&#34;一-基础导航与文件管理&#34;&gt;一、 基础导航与文件管理&#xA;&lt;/h3&gt;&lt;p&gt;这是与文件系统交互的起点，本质上是在操作文件系统的索引节点（inode）和目录项（dentry）。&lt;/p&gt;&#xA;&lt;h4 id=&#34;1-ls-list---列出文件&#34;&gt;1. &lt;code&gt;ls&lt;/code&gt; (List) - 列出文件&#xA;&lt;/h4&gt;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;原理&lt;/strong&gt;：调用内核函数读取目录文件的内容（记录了文件名与 inode 的映射关系）。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;常用命令&lt;/strong&gt;：&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ls -alh  &lt;span style=&#34;color:#75715e&#34;&gt;# a:显示隐藏文件; l:详细列表; h:易读单位(KB/MB)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h4 id=&#34;2-cd-change-directory---切换目录&#34;&gt;2. &lt;code&gt;cd&lt;/code&gt; (Change Directory) - 切换目录&#xA;&lt;/h4&gt;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;原理&lt;/strong&gt;：更改当前 Shell 进程的工作目录环境变量 &lt;code&gt;PWD&lt;/code&gt;。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;常用命令&lt;/strong&gt;：&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cd /var/lib/docker  &lt;span style=&#34;color:#75715e&#34;&gt;# 进入指定路径&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cd ~                &lt;span style=&#34;color:#75715e&#34;&gt;# 回到家目录&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cd -                &lt;span style=&#34;color:#75715e&#34;&gt;# 快速返回上一次所在的目录&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h4 id=&#34;3-pwd-print-working-directory---确认坐标&#34;&gt;3. &lt;code&gt;pwd&lt;/code&gt; (Print Working Directory) - 确认坐标&#xA;&lt;/h4&gt;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;原理&lt;/strong&gt;：从根目录 &lt;code&gt;/&lt;/code&gt; 开始向上追踪路径，确认当前进程的绝对位置。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;常用命令&lt;/strong&gt;：&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;pwd  &lt;span style=&#34;color:#75715e&#34;&gt;# 在执行 rm 操作前，务必执行此命令确认位置&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h4 id=&#34;4-mkdir-make-directory---创建新空间&#34;&gt;4. &lt;code&gt;mkdir&lt;/code&gt; (Make Directory) - 创建新空间&#xA;&lt;/h4&gt;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;原理&lt;/strong&gt;：在文件系统中创建一个新的目录项，并分配 inode。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;常用命令&lt;/strong&gt;：&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;mkdir -p ./projects/hugo/posts  &lt;span style=&#34;color:#75715e&#34;&gt;# -p 参数递归创建多层父目录&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h4 id=&#34;5-rm-remove---慎用的橡皮擦&#34;&gt;5. &lt;code&gt;rm&lt;/code&gt; (Remove) - 慎用的“橡皮擦”&#xA;&lt;/h4&gt;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;原理&lt;/strong&gt;：解除文件名与 inode 的链接（unlink）。当链接数为 0 且无进程占用时，系统才会回收磁盘空间。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;常用命令&lt;/strong&gt;：&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;rm -rf /path/to/dir  &lt;span style=&#34;color:#75715e&#34;&gt;# -r:递归; -f:强制。敲下前请三思！&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h4 id=&#34;6-cp--mv---复制与移动&#34;&gt;6. &lt;code&gt;cp&lt;/code&gt; &amp;amp; &lt;code&gt;mv&lt;/code&gt; - 复制与移动&#xA;&lt;/h4&gt;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;原理&lt;/strong&gt;：&lt;code&gt;cp&lt;/code&gt; 分配新 inode 并写入数据；&lt;code&gt;mv&lt;/code&gt; 在同分区下仅修改目录索引，速度极快；跨分区则执行“复制+删除”。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;常用命令&lt;/strong&gt;：&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cp -r /etc/nginx /etc/nginx_bak  &lt;span style=&#34;color:#75715e&#34;&gt;# 递归备份配置文件夹&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;mv old.txt new.txt               &lt;span style=&#34;color:#75715e&#34;&gt;# 重命名文件或移动位置&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;hr&gt;&#xA;&lt;h3 id=&#34;二-文本处理与内容查看&#34;&gt;二、 文本处理与内容查看&#xA;&lt;/h3&gt;&lt;p&gt;在 Linux 中，“一切皆文件”，处理配置文件和日志是运维的核心。&lt;/p&gt;&#xA;&lt;h4 id=&#34;7-cat-concatenate---快速预览&#34;&gt;7. &lt;code&gt;cat&lt;/code&gt; (Concatenate) - 快速预览&#xA;&lt;/h4&gt;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;原理&lt;/strong&gt;：将文件内容流化输出到标准输出（stdout），适合查看小文件。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;常用命令&lt;/strong&gt;：&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cat /etc/os-release  &lt;span style=&#34;color:#75715e&#34;&gt;# 查看系统发行版信息&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h4 id=&#34;8-vim--vi---文本编辑神器&#34;&gt;8. &lt;code&gt;vim&lt;/code&gt; / &lt;code&gt;vi&lt;/code&gt; - 文本编辑神器&#xA;&lt;/h4&gt;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;原理&lt;/strong&gt;：全屏幕文本编辑器，分为命令模式、编辑模式和末行模式。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;常用命令&lt;/strong&gt;：&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;vim docker-compose.yml  &lt;span style=&#34;color:#75715e&#34;&gt;# i 进入编辑；Esc 后输入 :wq 保存退出&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h4 id=&#34;9-grep-global-regular-expression-print---关键词检索&#34;&gt;9. &lt;code&gt;grep&lt;/code&gt; (Global Regular Expression Print) - 关键词检索&#xA;&lt;/h4&gt;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;原理&lt;/strong&gt;：基于正则引擎扫描文本流，实时过滤并打印匹配行。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;常用命令&lt;/strong&gt;：&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;docker ps -a | grep memos  &lt;span style=&#34;color:#75715e&#34;&gt;# 在容器列表中快速定位特定服务&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h4 id=&#34;10-tail---追踪末尾&#34;&gt;10. &lt;code&gt;tail&lt;/code&gt; - 追踪末尾&#xA;&lt;/h4&gt;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;原理&lt;/strong&gt;：基于文件描述符监听数据追加，是排查故障的“监视器”。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;常用命令&lt;/strong&gt;：&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;tail -f /var/log/nginx/error.log  &lt;span style=&#34;color:#75715e&#34;&gt;# 实时滚动查看网站报错日志&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;hr&gt;&#xA;&lt;h3 id=&#34;三-权限与核心安全&#34;&gt;三、 权限与核心安全&#xA;&lt;/h3&gt;&lt;p&gt;权限管理控制着谁能读（r）、写（w）、执行（x），是系统的护城河。&lt;/p&gt;&#xA;&lt;h4 id=&#34;11-chmod-change-mode---权限赋能&#34;&gt;11. &lt;code&gt;chmod&lt;/code&gt; (Change Mode) - 权限赋能&#xA;&lt;/h4&gt;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;原理&lt;/strong&gt;：修改文件系统中的权限位。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;常用命令&lt;/strong&gt;：&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;chmod +x start.sh  &lt;span style=&#34;color:#75715e&#34;&gt;# 给脚本增加执行权限&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;chmod &lt;span style=&#34;color:#ae81ff&#34;&gt;600&lt;/span&gt; id_rsa   &lt;span style=&#34;color:#75715e&#34;&gt;# 设置私钥仅本人可读写（SSH 安全要求）&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h4 id=&#34;12-chown-change-owner---所属权变更&#34;&gt;12. &lt;code&gt;chown&lt;/code&gt; (Change Owner) - 所属权变更&#xA;&lt;/h4&gt;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;原理&lt;/strong&gt;：修改文件的 UID（用户 ID）和 GID（组 ID）。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;常用命令&lt;/strong&gt;：&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;chown -R www-data:www-data /var/www/blog  &lt;span style=&#34;color:#75715e&#34;&gt;# 解决网站 403 权限问题&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h4 id=&#34;13-sudo-superuser-do---临时提权&#34;&gt;13. &lt;code&gt;sudo&lt;/code&gt; (Superuser Do) - 临时提权&#xA;&lt;/h4&gt;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;原理&lt;/strong&gt;：根据 &lt;code&gt;/etc/sudoers&lt;/code&gt; 配置文件校验权限，以超级用户身份运行命令。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;常用命令&lt;/strong&gt;：&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo apt update &lt;span style=&#34;color:#f92672&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; sudo apt upgrade -y  &lt;span style=&#34;color:#75715e&#34;&gt;# 以管理员权限更新系统&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;hr&gt;&#xA;&lt;h3 id=&#34;四-系统监控与健康检查&#34;&gt;四、 系统监控与健康检查&#xA;&lt;/h3&gt;&lt;p&gt;当服务器响应变慢或 Docker 容器崩溃时，这些指令能帮你快速定位瓶颈。&lt;/p&gt;&#xA;&lt;h4 id=&#34;14-df--du---磁盘侦察&#34;&gt;14. &lt;code&gt;df&lt;/code&gt; &amp;amp; &lt;code&gt;du&lt;/code&gt; - 磁盘侦察&#xA;&lt;/h4&gt;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;原理&lt;/strong&gt;：&lt;code&gt;df&lt;/code&gt; 读取文件系统超级块信息；&lt;code&gt;du&lt;/code&gt; 通过递归遍历统计具体目录占用。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;常用命令&lt;/strong&gt;：&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;df -h                     &lt;span style=&#34;color:#75715e&#34;&gt;# 查看磁盘整体剩余空间&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;du -sh * | sort -hr       &lt;span style=&#34;color:#75715e&#34;&gt;# 找出当前目录下最大的文件或文件夹&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h4 id=&#34;15-top--htop---实时任务管理器&#34;&gt;15. &lt;code&gt;top&lt;/code&gt; / &lt;code&gt;htop&lt;/code&gt; - 实时任务管理器&#xA;&lt;/h4&gt;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;原理&lt;/strong&gt;：从 &lt;code&gt;/proc&lt;/code&gt; 虚拟文件系统中抓取进程运行状态的实时快照。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;常用命令&lt;/strong&gt;：&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;htop  &lt;span style=&#34;color:#75715e&#34;&gt;# 交互式查看 CPU、内存、负载情况（推荐安装）&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h4 id=&#34;16-free---内存深度扫描&#34;&gt;16. &lt;code&gt;free&lt;/code&gt; - 内存深度扫描&#xA;&lt;/h4&gt;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;原理&lt;/strong&gt;：解析 &lt;code&gt;/proc/meminfo&lt;/code&gt;，显示物理内存与 Swap 的使用详情。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;常用命令&lt;/strong&gt;：&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;free -m  &lt;span style=&#34;color:#75715e&#34;&gt;# 以 MB 为单位查看内存压力&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;hr&gt;&#xA;&lt;h3 id=&#34;五-进程网络与连接&#34;&gt;五、 进程、网络与连接&#xA;&lt;/h3&gt;&lt;p&gt;掌控系统内部动态以及与外界的通信状态。&lt;/p&gt;&#xA;&lt;h4 id=&#34;17-ps-process-status---进程状态&#34;&gt;17. &lt;code&gt;ps&lt;/code&gt; (Process Status) - 进程状态&#xA;&lt;/h4&gt;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;原理&lt;/strong&gt;：抓取瞬间的进程状态，适合配合 grep 使用。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;常用命令&lt;/strong&gt;：&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ps -ef | grep portainer  &lt;span style=&#34;color:#75715e&#34;&gt;# 获取特定服务的进程号 (PID)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h4 id=&#34;18-kill---终止进程&#34;&gt;18. &lt;code&gt;kill&lt;/code&gt; - 终止进程&#xA;&lt;/h4&gt;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;原理&lt;/strong&gt;：向进程发送信号（SIGTERM 15 或 SIGKILL 9）。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;常用命令&lt;/strong&gt;：&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;kill -9 &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;PID&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;  &lt;span style=&#34;color:#75715e&#34;&gt;# 强制关闭失去响应的进程&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h4 id=&#34;19-curl---网络请求工具&#34;&gt;19. &lt;code&gt;curl&lt;/code&gt; - 网络请求工具&#xA;&lt;/h4&gt;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;原理&lt;/strong&gt;：基于 libcurl 库，支持多种协议的数据传输和测试。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;常用命令&lt;/strong&gt;：&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;curl -I &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;https://laoqiao.life&lt;span style=&#34;color:#f92672&#34;&gt;](&lt;/span&gt;https://laoqiao.life&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;  &lt;span style=&#34;color:#75715e&#34;&gt;# 检查网站响应头和状态码&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h4 id=&#34;20-ssh-secure-shell---远程之门&#34;&gt;20. &lt;code&gt;ssh&lt;/code&gt; (Secure Shell) - 远程之门&#xA;&lt;/h4&gt;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;原理&lt;/strong&gt;：基于非对称加密算法构建的安全传输协议。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;常用命令&lt;/strong&gt;：&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ssh user@ip_address -p port  &lt;span style=&#34;color:#75715e&#34;&gt;# 登录远程 VPS&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;hr&gt;&#xA;&lt;h3 id=&#34;六-备份与压缩&#34;&gt;六、 备份与压缩&#xA;&lt;/h3&gt;&lt;p&gt;对于独立开发者来说，备份是所有操作中最重要的一环。&lt;/p&gt;&#xA;&lt;h4 id=&#34;21-tar-tape-archive---打包与压缩&#34;&gt;21. &lt;code&gt;tar&lt;/code&gt; (Tape Archive) - 打包与压缩&#xA;&lt;/h4&gt;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;原理&lt;/strong&gt;：将多个文件归档为一个文件，并可调用 gzip 等算法进行压缩。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;常用命令&lt;/strong&gt;：&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;tar -zcvf backup.tar.gz /path/to/dir  &lt;span style=&#34;color:#75715e&#34;&gt;# 压缩备份&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;tar -zxvf backup.tar.gz               &lt;span style=&#34;color:#75715e&#34;&gt;# 解压到当前目录&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;hr&gt;&#xA;&lt;h3 id=&#34;结语&#34;&gt;结语&#xA;&lt;/h3&gt;&lt;p&gt;Linux 的强大之处不在于指令的数量，而在于&lt;strong&gt;组合的力量&lt;/strong&gt;。当你能够熟练使用管道符 &lt;code&gt;|&lt;/code&gt; 将这些基础工具串联起来解决复杂问题时，你就不再是命令的搬运工，而是这台机器的真正主人。&lt;/p&gt;&#xA;&lt;p&gt;多实践、多“折腾”，肌肉记忆会比大脑更快记住这些符号。祝大家的博客和 VPS 运行稳定，永不宕机！&lt;/p&gt;&#xA;</description>
        </item><item>
            <title>linux根目录文件夹说明</title>
            <link>https://blog.lovetianjin.com/post/linux%E6%A0%B9%E7%9B%AE%E5%BD%95%E6%96%87%E4%BB%B6%E5%A4%B9%E8%AF%B4%E6%98%8E/</link>
            <pubDate>Sun, 22 Mar 2026 00:00:00 +0000</pubDate>
            <guid>https://blog.lovetianjin.com/post/linux%E6%A0%B9%E7%9B%AE%E5%BD%95%E6%96%87%E4%BB%B6%E5%A4%B9%E8%AF%B4%E6%98%8E/</guid>
            <description>&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;&lt;strong&gt;文件夹 / 文件&lt;/strong&gt;&lt;/th&gt;&#xA;          &lt;th&gt;&lt;strong&gt;作用说明&lt;/strong&gt;&lt;/th&gt;&#xA;          &lt;th&gt;&lt;strong&gt;重要程度&lt;/strong&gt;&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;/bin&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;&lt;strong&gt;基础命令&lt;/strong&gt;。存放系统最核心的二进制可执行命令（如 &lt;code&gt;ls&lt;/code&gt;, &lt;code&gt;cp&lt;/code&gt;, &lt;code&gt;cat&lt;/code&gt;）。&lt;/td&gt;&#xA;          &lt;td&gt;⭐⭐⭐⭐⭐&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;/boot&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;&lt;strong&gt;引导目录&lt;/strong&gt;。存放启动 Linux 时必需的文件，包括内核和引导加载程序。&lt;/td&gt;&#xA;          &lt;td&gt;⭐⭐⭐⭐&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;/dev&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;&lt;strong&gt;设备文件&lt;/strong&gt;。Linux 把硬件也当做文件，这里存放硬盘、键盘、串口等映射文件。&lt;/td&gt;&#xA;          &lt;td&gt;⭐⭐⭐⭐&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;/etc&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;&lt;strong&gt;配置中心&lt;/strong&gt;。&lt;strong&gt;极其重要&lt;/strong&gt;，系统及所有软件的配置文件都在这里。&lt;/td&gt;&#xA;          &lt;td&gt;⭐⭐⭐⭐⭐&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;/home&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;&lt;strong&gt;普通用户家目录&lt;/strong&gt;。每创建一个新用户，这里就会多一个以用户名命名的文件夹。&lt;/td&gt;&#xA;          &lt;td&gt;⭐⭐⭐&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;/lib&lt;/code&gt; &amp;amp; &lt;code&gt;/lib64&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;&lt;strong&gt;系统库文件&lt;/strong&gt;。存放程序运行所需的共享库（类似于 Windows 的 .dll 文件）。&lt;/td&gt;&#xA;          &lt;td&gt;⭐⭐⭐⭐&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;/media&lt;/code&gt; &amp;amp; &lt;code&gt;/mnt&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;&lt;strong&gt;挂载点&lt;/strong&gt;。通常用于挂载 U 盘、光驱或临时挂载其他硬盘分区。&lt;/td&gt;&#xA;          &lt;td&gt;⭐⭐&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;/opt&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;&lt;strong&gt;可选目录&lt;/strong&gt;。存放第三方大型软件，很多一键安装脚本会把程序塞这里。&lt;/td&gt;&#xA;          &lt;td&gt;⭐⭐⭐&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;/proc&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;&lt;strong&gt;进程信息&lt;/strong&gt;。虚拟文件系统，实时反映内核和进程的状态，不占硬盘空间。&lt;/td&gt;&#xA;          &lt;td&gt;⭐⭐⭐⭐&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;/root&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;&lt;strong&gt;管理员家目录&lt;/strong&gt;。超级管理员 root 的私地（你的 Memos 数据就在这里）。&lt;/td&gt;&#xA;          &lt;td&gt;⭐⭐⭐⭐⭐&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;/run&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;&lt;strong&gt;运行数据&lt;/strong&gt;。存放系统启动以来的临时运行信息（如进程 ID 文件）。&lt;/td&gt;&#xA;          &lt;td&gt;⭐⭐⭐&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;/sbin&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;&lt;strong&gt;管理员命令&lt;/strong&gt;。存放只有 root 权限才能运行的系统管理命令。&lt;/td&gt;&#xA;          &lt;td&gt;⭐⭐⭐⭐&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;/srv&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;&lt;strong&gt;服务数据&lt;/strong&gt;。存放某些服务（如 Web、FTP）启动后需要访问的数据。&lt;/td&gt;&#xA;          &lt;td&gt;⭐⭐&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;/sys&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;&lt;strong&gt;内核设备树&lt;/strong&gt;。虚拟文件系统，提供比 &lt;code&gt;/proc&lt;/code&gt; 更深层的硬件和驱动信息。&lt;/td&gt;&#xA;          &lt;td&gt;⭐⭐⭐&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;/tmp&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;&lt;strong&gt;临时文件夹&lt;/strong&gt;。存放程序产生的临时数据，系统重启通常会清理这里。&lt;/td&gt;&#xA;          &lt;td&gt;⭐⭐⭐&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;/usr&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;&lt;strong&gt;用户程序&lt;/strong&gt;。系统最大的目录，存放绝大多数安装的软件、库文件和文档。&lt;/td&gt;&#xA;          &lt;td&gt;⭐⭐⭐⭐⭐&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;/var&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;&lt;strong&gt;动态数据&lt;/strong&gt;。存放经常变动的文件，如系统日志（log）、缓存、数据库。&lt;/td&gt;&#xA;          &lt;td&gt;⭐⭐⭐⭐⭐&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;&lt;code&gt;/lost+found&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;&lt;strong&gt;碎片恢复&lt;/strong&gt;。当文件系统非法关机损坏后，修复时找回的碎片会放在这。&lt;/td&gt;&#xA;          &lt;td&gt;⭐&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;</description>
        </item><item>
            <title>从零打造私人云中枢：N150 &#43; Debian &#43; Cloudflare 内网穿透实战全记录</title>
            <link>https://blog.lovetianjin.com/post/%E4%BB%8E%E9%9B%B6%E6%89%93%E9%80%A0%E7%A7%81%E4%BA%BA%E4%BA%91%E4%B8%AD%E6%9E%A2n150-&#43;-debian-&#43;-cloudflare-%E5%86%85%E7%BD%91%E7%A9%BF%E9%80%8F%E5%AE%9E%E6%88%98%E5%85%A8%E8%AE%B0%E5%BD%95/</link>
            <pubDate>Sat, 14 Mar 2026 12:00:00 +0800</pubDate>
            <guid>https://blog.lovetianjin.com/post/%E4%BB%8E%E9%9B%B6%E6%89%93%E9%80%A0%E7%A7%81%E4%BA%BA%E4%BA%91%E4%B8%AD%E6%9E%A2n150-&#43;-debian-&#43;-cloudflare-%E5%86%85%E7%BD%91%E7%A9%BF%E9%80%8F%E5%AE%9E%E6%88%98%E5%85%A8%E8%AE%B0%E5%BD%95/</guid>
            <description>&lt;h2 id=&#34;前言&#34;&gt;前言&#xA;&lt;/h2&gt;&lt;p&gt;为了实现数据自主和随时随地的远程办公，我利用一台 &lt;strong&gt;N150 (8G RAM)&lt;/strong&gt; 小主机，搭建了以 &lt;strong&gt;Debian Server&lt;/strong&gt; 为核心的家庭私有云。本文记录了从系统安装到实现全球无感访问的全过程。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;1-基础设施搭建debian-与-docker&#34;&gt;1. 基础设施搭建：Debian 与 Docker&#xA;&lt;/h2&gt;&lt;p&gt;第一步是夯实地基。选择 Debian 服务器版是为了极致的稳定与轻量。&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;系统环境&lt;/strong&gt;：Debian Server&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;内网 IP&lt;/strong&gt;：&lt;code&gt;**&lt;/code&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;核心工具&lt;/strong&gt;：安装 Docker 与 Docker Compose，作为所有服务的运行容器。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;2-网络优化mihomo-clash-的深度调优&#34;&gt;2. 网络优化：Mihomo (Clash) 的深度调优&#xA;&lt;/h2&gt;&lt;p&gt;在家庭网络环境中，N150 同时承担了流量导流的任务。我们使用了 &lt;strong&gt;Mihomo&lt;/strong&gt; 内核，但在配置过程中遇到了一个经典坑位：&lt;strong&gt;内网穿透流量被代理劫持。&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;h3 id=&#34;关键突破配置直连规则&#34;&gt;关键突破：配置直连规则&#xA;&lt;/h3&gt;&lt;p&gt;为了防止 Cloudflare Tunnel 的流量被 Mihomo 误拦截导致连接失败（出现 &lt;code&gt;198.18.x.x&lt;/code&gt; 虚拟 IP 报错），我们在 &lt;code&gt;/etc/clashctl/resources/runtime.yaml&lt;/code&gt; 的 &lt;code&gt;rules&lt;/code&gt; 最上方加入了强制直连规则：&lt;/p&gt;&#xA;&lt;p&gt;YAML&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;rules:&#xA;  - DOMAIN-SUFFIX,cloudflare.com,DIRECT&#xA;  - DOMAIN-SUFFIX,argotunnel.com,DIRECT&#xA;  - DOMAIN-KEYWORD,cloudflared,DIRECT&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;经验总结&lt;/strong&gt;：修改配置后务必重启 &lt;code&gt;mihomo.service&lt;/code&gt;，确保规则生效。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;3-全球访问cloudflare-tunnel-隧道打通&#34;&gt;3. 全球访问：Cloudflare Tunnel 隧道打通&#xA;&lt;/h2&gt;&lt;p&gt;在没有公网 IP 的环境下，Cloudflare Tunnel 是目前最优雅的内网穿透方案。&lt;/p&gt;&#xA;&lt;h3 id=&#34;核心步骤&#34;&gt;核心步骤：&#xA;&lt;/h3&gt;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;安装与注册&lt;/strong&gt;：将 &lt;code&gt;cloudflared&lt;/code&gt; 安装为系统服务。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;协议优化&lt;/strong&gt;：针对国内网络环境，强制使用 &lt;code&gt;--protocol http2&lt;/code&gt;。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;绕过拦截&lt;/strong&gt;：通过设置 &lt;code&gt;export TUNNEL_DNS_UPSTREAM=https://223.5.5.5/dns-query&lt;/code&gt;，确保隧道建立时不被本地 DNS 污染干扰。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h3 id=&#34;最终效果&#34;&gt;最终效果：&#xA;&lt;/h3&gt;&lt;p&gt;通过 &lt;code&gt;laoqiao.life&lt;/code&gt; 域名，实现了外网 HTTPS 安全访问家中的 CasaOS 管理面板。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;4-私有同步桥梁webdav-服务的部署&#34;&gt;4. 私有同步桥梁：WebDAV 服务的部署&#xA;&lt;/h2&gt;&lt;p&gt;为了让笔记本软件（如 Tabby、Obsidian）能够实时同步数据，我们部署了轻量级的 WebDAV 服务。&lt;/p&gt;&#xA;&lt;h3 id=&#34;docker-compose-配置示例&#34;&gt;Docker Compose 配置示例：&#xA;&lt;/h3&gt;&lt;p&gt;YAML&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;services:&#xA;  webdav:&#xA;    image: bytemark/webdav&#xA;    container_name: webdav&#xA;    restart: always&#xA;    ports:&#xA;      - &amp;#34;8080:80&amp;#34;&#xA;    environment:&#xA;      - AUTH_TYPE=Basic # 兼容性最好的验证方式&#xA;      - USERNAME=peter&#xA;      - PASSWORD=your_password&#xA;    volumes:&#xA;      - ./data:/var/lib/dav&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;实战笔记&lt;/strong&gt;：在配置 Tabby 同步插件时，务必使用 &lt;code&gt;Basic&lt;/code&gt; 验证模式，并确保 Cloudflare 端的 &lt;code&gt;Public Hostname&lt;/code&gt; 正确指向了 &lt;code&gt;**:8080&lt;/code&gt; 端口。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;5-成果展示与未来规划&#34;&gt;5. 成果展示与未来规划&#xA;&lt;/h2&gt;&lt;p&gt;目前，这台 N150 已经实现了：&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;CasaOS&lt;/strong&gt; 全球远程管理。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;Tabby 终端&lt;/strong&gt; 跨设备自动同步配置。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;WebDAV&lt;/strong&gt; 作为笔记和文件的存储后端。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;&lt;strong&gt;下一步计划&lt;/strong&gt;：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;部署 &lt;strong&gt;Immich&lt;/strong&gt; 管理胶片摄影作品。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;编写 Python 脚本实现 &lt;strong&gt;A 股与黄金数据&lt;/strong&gt; 的自动化采集与展示。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;hr&gt;&#xA;</description>
        </item><item>
            <title>从零开始：手把手教你用 GitHub 免费部署 Hugo 博客</title>
            <link>https://blog.lovetianjin.com/post/%E4%BB%8E%E9%9B%B6%E5%BC%80%E5%A7%8B%E6%89%8B%E6%8A%8A%E6%89%8B%E6%95%99%E4%BD%A0%E7%94%A8-github-%E5%85%8D%E8%B4%B9%E9%83%A8%E7%BD%B2-hugo-%E5%8D%9A%E5%AE%A2/</link>
            <pubDate>Tue, 03 Mar 2026 12:00:00 +0800</pubDate>
            <guid>https://blog.lovetianjin.com/post/%E4%BB%8E%E9%9B%B6%E5%BC%80%E5%A7%8B%E6%89%8B%E6%8A%8A%E6%89%8B%E6%95%99%E4%BD%A0%E7%94%A8-github-%E5%85%8D%E8%B4%B9%E9%83%A8%E7%BD%B2-hugo-%E5%8D%9A%E5%AE%A2/</guid>
            <description>&lt;p&gt;嘿！想拥有一个既极速又极简，还完全免费的个人博客吗？&lt;/p&gt;&#xA;&lt;p&gt;很多小伙伴被“部署”、“服务器”、“域名”这些词吓到了。其实，利用 &lt;strong&gt;Hugo（世界上最快的静态网站生成器）&lt;/strong&gt; 和 &lt;strong&gt;GitHub（全球最大的代码托管平台）&lt;/strong&gt;，你只需要动动手指，就能拥有一个专属的互联网小家。&lt;/p&gt;&#xA;&lt;p&gt;今天这篇教程，就是专门为“小白”准备的避坑指南。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;一-为什么选择-hugo--github&#34;&gt;一、 为什么选择 Hugo + GitHub？&#xA;&lt;/h2&gt;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;快：&lt;/strong&gt; Hugo 生成页面的速度是以“毫秒”计算的。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;省：&lt;/strong&gt; GitHub Pages 提供的托管服务完全&lt;strong&gt;免费&lt;/strong&gt;，连服务器钱都省了。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;稳：&lt;/strong&gt; 只要 GitHub 不倒闭，你的博客就永远在线。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;酷：&lt;/strong&gt; 纯文本写作，像程序员一样记录生活。&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;二-准备工作你需要准备什么&#34;&gt;二、 准备工作（你需要准备什么）&#xA;&lt;/h2&gt;&lt;p&gt;在开始之前，请确保你已经：&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;注册了一个 &lt;a class=&#34;link&#34; href=&#34;https://github.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;GitHub&lt;/a&gt; 账号。&lt;/li&gt;&#xA;&lt;li&gt;在电脑上安装了 &lt;strong&gt;Git&lt;/strong&gt; 和 &lt;strong&gt;Hugo&lt;/strong&gt;（如果还没装，可以去官网下载，一路“下一步”即可）。&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;三-实战步骤&#34;&gt;三、 实战步骤&#xA;&lt;/h2&gt;&lt;h3 id=&#34;1-本地创建博客&#34;&gt;1. 本地创建博客&#xA;&lt;/h3&gt;&lt;p&gt;打开终端（Windows 的 PowerShell 或 Mac 的 Terminal），输入：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;hugo new site my-blog&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cd my-blog&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;2-挑选一个皮肤主题&#34;&gt;2. 挑选一个“皮肤”（主题）&#xA;&lt;/h3&gt;&lt;p&gt;没有皮肤的博客是不完整的。我们以经典的 &lt;strong&gt;PaperMod&lt;/strong&gt; 为例：&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-git&#34; data-lang=&#34;git&#34;&gt;git init&#xA;git submodule add --depth=1 [https://github.com/adityatelange/hugo-PaperMod.git](https://github.com/adityatelange/hugo-PaperMod.git) themes/PaperMod&#xA;echo &amp;#34;theme = &amp;#39;PaperMod&amp;#39;&amp;#34; &amp;gt;&amp;gt; hugo.toml&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;3-写下第一篇文章&#34;&gt;3. 写下第一篇文章&#xA;&lt;/h3&gt;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-hugo&#34; data-lang=&#34;hugo&#34;&gt;hugo new posts/hello-world.md&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;打开生成的 content/posts/hello-world.md，随便写点什么。&lt;/p&gt;&#xA;&lt;h3 id=&#34;4-推送到-github&#34;&gt;4. 推送到 GitHub&#xA;&lt;/h3&gt;&lt;p&gt;这是最关键的一步。&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;在 GitHub 上新建一个仓库，名字叫：你的用户名.github.io（例如 zhangsan.github.io）。&lt;/li&gt;&#xA;&lt;li&gt;在本地博客根目录，关联这个仓库并推送：&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-git&#34; data-lang=&#34;git&#34;&gt;git commit -m &amp;#34;初次建站&amp;#34;&#xA;git branch -M main&#xA;git remote add origin [https://github.com/你的用户名/你的用户名.github.io.git](https://github.com/你的用户名/你的用户名.github.io.git)&#xA;git push -u origin main&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;5开启自动化部署github-actions&#34;&gt;5.开启自动化部署（GitHub Actions）&#xA;&lt;/h3&gt;&lt;p&gt;现在最流行的做法是使用 GitHub Actions。你只需要在 GitHub 仓库的设置（Settings -&amp;gt; Pages）里，把 Build and deployment 的源改为 GitHub Actions。&lt;/p&gt;&#xA;&lt;p&gt;GitHub 会自动识别 Hugo 项目并帮你把网页“变”出来。几分钟后，访问 https://你的用户名.github.io，奇迹就发生了！&lt;/p&gt;&#xA;&lt;h2 id=&#34;四-掌握写作利器markdown-md&#34;&gt;四、 掌握写作利器：Markdown (MD)&#xA;&lt;/h2&gt;&lt;p&gt;既然用了 Hugo，你就必须学会用 Markdown 写作。这是一种“所见即所得”的轻量级标记语言。&lt;/p&gt;&#xA;&lt;p&gt;为什么大家都爱 Markdown？&#xA;专注于文字： 你不需要纠结字体大小、行间距，写完即排版。&lt;/p&gt;&#xA;&lt;p&gt;跨平台： 任何编辑器都能打开，不会像 Word 文档那样格式错乱。&lt;/p&gt;&#xA;&lt;p&gt;代码友好： 插入代码块非常漂亮，适合技术人。&lt;/p&gt;&#xA;&lt;p&gt;常用命令“小抄”&#xA;如果你是第一次使用，记住下面这几个就够用了：&lt;/p&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;&lt;strong&gt;效果&lt;/strong&gt;&lt;/th&gt;&#xA;          &lt;th&gt;&lt;strong&gt;Markdown 语法&lt;/strong&gt;&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;一级标题&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;# 标题名字&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;二级标题&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;## 标题名字&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;加粗&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;**这是粗体**&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;斜体&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;*这是斜体*&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;超链接&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;[文字](链接地址)&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;插入图片&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;![描述](图片地址)&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;无序列表&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;* 列表项&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;引用代码&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;&lt;code&gt;代码内容&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;p&gt;&lt;strong&gt;温馨提示：&lt;/strong&gt; 在 Markdown 中，&lt;strong&gt;所有的符号（如 #、*、!）后面都要加一个空格&lt;/strong&gt;，这样格式才最标准。&lt;/p&gt;&#xA;&lt;h2 id=&#34;五-结语&#34;&gt;五、 结语&#xA;&lt;/h2&gt;&lt;p&gt;搭建博客只是第一步，&lt;strong&gt;持续的输出&lt;/strong&gt;才是灵魂。&lt;/p&gt;&#xA;&lt;p&gt;利用 Hugo，你可以摆脱社交平台的束缚，拥有一个完全属于自己的思考空间。&lt;/p&gt;&#xA;</description>
        </item><item>
            <title>观尘：苦灭</title>
            <link>https://blog.lovetianjin.com/post/2026-02-28-%E8%A7%82%E5%B0%98%E8%8B%A6%E7%81%AD/</link>
            <pubDate>Sat, 28 Feb 2026 00:00:00 +0000</pubDate>
            <guid>https://blog.lovetianjin.com/post/2026-02-28-%E8%A7%82%E5%B0%98%E8%8B%A6%E7%81%AD/</guid>
            <description>&lt;h3 id=&#34;观尘苦灭&#34;&gt;《观尘：苦灭》&#xA;&lt;/h3&gt;&lt;p&gt;万象如泡影，浮生一刹那。 执迷因爱起，烦恼自萌芽。&lt;/p&gt;&#xA;&lt;p&gt;心被尘缘锁，身随幻境斜。 观空知妄相，听雪落残花。&lt;/p&gt;&#xA;&lt;p&gt;贪嗔如旧梦，痴怨付流沙。 熄灭无明火，归来煮晚茶。&lt;/p&gt;&#xA;&lt;p&gt;不寻来处路，此地即归家。&lt;/p&gt;&#xA;&lt;img src=&#34;https://hugo-1318939875.cos.ap-beijing.myqcloud.com//picgoDSCF1427_DxO.jpg&#34; alt=&#34;DSCF1427_DxO&#34; style=&#34;zoom: 67%;&#34; /&gt;</description>
        </item><item>
            <title>行旅江西：赣江、晒秋与古镇精致</title>
            <link>https://blog.lovetianjin.com/post/2026%E6%B1%9F%E8%A5%BF%E6%97%A5%E8%AE%B0/</link>
            <pubDate>Mon, 23 Feb 2026 01:00:00 +0800</pubDate>
            <guid>https://blog.lovetianjin.com/post/2026%E6%B1%9F%E8%A5%BF%E6%97%A5%E8%AE%B0/</guid>
            <description>&lt;p&gt;每年的行旅依然继续。总觉得2025年过得极快，不知是年岁增长带来的时光流转，还是终日忙碌忘却了日月盈仄，一转眼便已是从年头到年尾。&lt;/p&gt;&#xA;&lt;p&gt;今年，我将目光锁定在了从未涉足的省份——江西，主要游历了南昌、婺源与景德镇三处。&lt;/p&gt;&#xA;&lt;p&gt;坦白讲，此前我对江西这个省份较为陌生。唯一与我有交集的，便是我所从事的有机硅行业——国内星火集团总部坐落于此。除此以外，即便是提及景德镇，平日里也不会常挂在嘴边。&lt;/p&gt;&#xA;&lt;p&gt;然而，此行江西，却带给我一场深深震撼心灵的体验。赣江的宽广辽阔、景德镇的精致古朴、婺源徽派建筑的宁静优雅，均深深镌刻进我的脑海。&lt;/p&gt;&#xA;&lt;p&gt;我想，我还会继续造访江西，去进行一次深度的体验。&lt;/p&gt;&#xA;&lt;h3 id=&#34;赣江夜景&#34;&gt;赣江夜景&#xA;&lt;/h3&gt;&lt;p&gt;&lt;img alt=&#34;赣江货船粼粼波光映繁华&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;320px&#34; data-flex-grow=&#34;133&#34; height=&#34;3888&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://hugo-1318939875.cos.ap-beijing.myqcloud.com//picgoP2210808_DxO.jpg&#34; srcset=&#34;https://blog.lovetianjin.com/picgoP2210808_DxO_4689056981244730809_hu_61be8771949d61a8.jpg 800w, https://blog.lovetianjin.com/picgoP2210808_DxO_4689056981244730809_hu_246c40d384037ea0.jpg 1600w, https://blog.lovetianjin.com/picgoP2210808_DxO_4689056981244730809_hu_de3368a8260aeb07.jpg 2400w, https://hugo-1318939875.cos.ap-beijing.myqcloud.com//picgoP2210808_DxO.jpg 5184w&#34; width=&#34;5184&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;em&gt;赣江之上，货船缓缓而行，粼粼波光映衬着繁华都市背后的辛勤劳作。&lt;/em&gt;&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h3 id=&#34;无语佛的震撼&#34;&gt;“无语佛”的震撼&#xA;&lt;/h3&gt;&lt;p&gt;&lt;img alt=&#34;景德镇无语佛&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;180px&#34; data-flex-grow=&#34;75&#34; height=&#34;5184&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://hugo-1318939875.cos.ap-beijing.myqcloud.com//picgopicgoP2200546_DxO.jpg&#34; srcset=&#34;https://blog.lovetianjin.com/picgopicgoP2200546_DxO_17514131041255219307_hu_126b92c26e93c1c9.jpg 800w, https://blog.lovetianjin.com/picgopicgoP2200546_DxO_17514131041255219307_hu_19ae0c5c52d86541.jpg 1600w, https://blog.lovetianjin.com/picgopicgoP2200546_DxO_17514131041255219307_hu_aee5b7a7fe6f110c.jpg 2400w, https://hugo-1318939875.cos.ap-beijing.myqcloud.com//picgopicgoP2200546_DxO.jpg 3888w&#34; width=&#34;3888&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;em&gt;这尊静立的佛像，有一种直抵人心的宁静力量。&lt;/em&gt;&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h3 id=&#34;婺源与篁岭晒秋&#34;&gt;婺源与篁岭晒秋&#xA;&lt;/h3&gt;&lt;p&gt;&lt;img alt=&#34;婺源徽派建筑与晒秋&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;180px&#34; data-flex-grow=&#34;75&#34; height=&#34;5184&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://hugo-1318939875.cos.ap-beijing.myqcloud.com//picgopicgoP2180257_DxO.jpg&#34; srcset=&#34;https://blog.lovetianjin.com/picgopicgoP2180257_DxO_15626884977721442211_hu_ff066245edbb5664.jpg 800w, https://blog.lovetianjin.com/picgopicgoP2180257_DxO_15626884977721442211_hu_72f9cef68692a102.jpg 1600w, https://blog.lovetianjin.com/picgopicgoP2180257_DxO_15626884977721442211_hu_241d62c20b9b29e5.jpg 2400w, https://hugo-1318939875.cos.ap-beijing.myqcloud.com//picgopicgoP2180257_DxO.jpg 3888w&#34; width=&#34;3888&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;婺源晒秋农家&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;180px&#34; data-flex-grow=&#34;75&#34; height=&#34;5184&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://hugo-1318939875.cos.ap-beijing.myqcloud.com//picgopicgoP2180255_DxO.jpg&#34; srcset=&#34;https://blog.lovetianjin.com/picgopicgoP2180255_DxO_10193463657386235239_hu_842539283170a06e.jpg 800w, https://blog.lovetianjin.com/picgopicgoP2180255_DxO_10193463657386235239_hu_6eb7cb90d662ae72.jpg 1600w, https://blog.lovetianjin.com/picgopicgoP2180255_DxO_10193463657386235239_hu_e315a297f6b2fb50.jpg 2400w, https://hugo-1318939875.cos.ap-beijing.myqcloud.com//picgopicgoP2180255_DxO.jpg 3888w&#34; width=&#34;3888&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;婺源全景&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;320px&#34; data-flex-grow=&#34;133&#34; height=&#34;3888&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://hugo-1318939875.cos.ap-beijing.myqcloud.com//picgopicgoP2180216_DxO.jpg&#34; srcset=&#34;https://blog.lovetianjin.com/picgopicgoP2180216_DxO_17400716652032505279_hu_87aaa6288a185c36.jpg 800w, https://blog.lovetianjin.com/picgopicgoP2180216_DxO_17400716652032505279_hu_d2d89445f58ca28e.jpg 1600w, https://blog.lovetianjin.com/picgopicgoP2180216_DxO_17400716652032505279_hu_bf99bfedef3aa408.jpg 2400w, https://hugo-1318939875.cos.ap-beijing.myqcloud.com//picgopicgoP2180216_DxO.jpg 5184w&#34; width=&#34;5184&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;婺源屋脊&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;320px&#34; data-flex-grow=&#34;133&#34; height=&#34;3888&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://hugo-1318939875.cos.ap-beijing.myqcloud.com//picgopicgoP2180231_DxO.jpg&#34; srcset=&#34;https://blog.lovetianjin.com/picgopicgoP2180231_DxO_15350240458461992650_hu_1913be15f075060e.jpg 800w, https://blog.lovetianjin.com/picgopicgoP2180231_DxO_15350240458461992650_hu_e7e6375b0ae9f3f3.jpg 1600w, https://blog.lovetianjin.com/picgopicgoP2180231_DxO_15350240458461992650_hu_c93014a5a9fadae4.jpg 2400w, https://hugo-1318939875.cos.ap-beijing.myqcloud.com//picgopicgoP2180231_DxO.jpg 5184w&#34; width=&#34;5184&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;婺源晒架&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;320px&#34; data-flex-grow=&#34;133&#34; height=&#34;3628&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://hugo-1318939875.cos.ap-beijing.myqcloud.com//picgopicgoP2180190_DxO.jpg&#34; srcset=&#34;https://blog.lovetianjin.com/picgopicgoP2180190_DxO_4514591469577490500_hu_f82e733c3d6193e.jpg 800w, https://blog.lovetianjin.com/picgopicgoP2180190_DxO_4514591469577490500_hu_ff83a9eea3e9429f.jpg 1600w, https://blog.lovetianjin.com/picgopicgoP2180190_DxO_4514591469577490500_hu_dc38824e3db51cee.jpg 2400w, https://hugo-1318939875.cos.ap-beijing.myqcloud.com//picgopicgoP2180190_DxO.jpg 4838w&#34; width=&#34;4838&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;em&gt;在婺源，晒秋不仅仅是一种农事景观，更是一幅充满生机的乡村画卷。&lt;/em&gt;&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h3 id=&#34;未及盛开的油菜花&#34;&gt;未及盛开的油菜花&#xA;&lt;/h3&gt;&lt;p&gt;&lt;img alt=&#34;婺源梯田&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;320px&#34; data-flex-grow=&#34;133&#34; height=&#34;3628&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://hugo-1318939875.cos.ap-beijing.myqcloud.com//picgopicgoP2180185_DxO.jpg&#34; srcset=&#34;https://blog.lovetianjin.com/picgopicgoP2180185_DxO_7130762284012052062_hu_a6edfc3d246a49ab.jpg 800w, https://blog.lovetianjin.com/picgopicgoP2180185_DxO_7130762284012052062_hu_32838190ecbb1a43.jpg 1600w, https://blog.lovetianjin.com/picgopicgoP2180185_DxO_7130762284012052062_hu_21cda7d660ff110b.jpg 2400w, https://hugo-1318939875.cos.ap-beijing.myqcloud.com//picgopicgoP2180185_DxO.jpg 4838w&#34; width=&#34;4838&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;em&gt;虽然错过了漫山金黄，但初生的梯田绿意，依然诉说着新春的信息。&lt;/em&gt;&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h3 id=&#34;景德镇的极致&#34;&gt;景德镇的极致&#xA;&lt;/h3&gt;&lt;p&gt;&lt;img alt=&#34;景德镇古窑&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;360px&#34; data-flex-grow=&#34;150&#34; height=&#34;4128&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://hugo-1318939875.cos.ap-beijing.myqcloud.com//picgoR0000418_DxO.jpg&#34; srcset=&#34;https://blog.lovetianjin.com/picgoR0000418_DxO_3622748964894234448_hu_a58b7f66ab3c0332.jpg 800w, https://blog.lovetianjin.com/picgoR0000418_DxO_3622748964894234448_hu_902a0fb78538ff6b.jpg 1600w, https://blog.lovetianjin.com/picgoR0000418_DxO_3622748964894234448_hu_f6c23059d4c1c76.jpg 2400w, https://hugo-1318939875.cos.ap-beijing.myqcloud.com//picgoR0000418_DxO.jpg 6192w&#34; width=&#34;6192&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;景德镇陶瓷展厅&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;360px&#34; data-flex-grow=&#34;150&#34; height=&#34;4128&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://hugo-1318939875.cos.ap-beijing.myqcloud.com//picgoR0000419_DxO.jpg&#34; srcset=&#34;https://blog.lovetianjin.com/picgoR0000419_DxO_1037650825982146348_hu_e19ead4888cb6e2f.jpg 800w, https://blog.lovetianjin.com/picgoR0000419_DxO_1037650825982146348_hu_8c1997335b658d2d.jpg 1600w, https://blog.lovetianjin.com/picgoR0000419_DxO_1037650825982146348_hu_31274dbb3168b8d9.jpg 2400w, https://hugo-1318939875.cos.ap-beijing.myqcloud.com//picgoR0000419_DxO.jpg 6192w&#34; width=&#34;6192&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;景德镇街头装置&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;160px&#34; data-flex-grow=&#34;66&#34; height=&#34;6192&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://hugo-1318939875.cos.ap-beijing.myqcloud.com//picgoR0000433_DxO.jpg&#34; srcset=&#34;https://blog.lovetianjin.com/picgoR0000433_DxO_4565199328754017880_hu_da2b904c3ff7f72c.jpg 800w, https://blog.lovetianjin.com/picgoR0000433_DxO_4565199328754017880_hu_ef34a229c86d0893.jpg 1600w, https://blog.lovetianjin.com/picgoR0000433_DxO_4565199328754017880_hu_6e3b96262b8488c8.jpg 2400w, https://hugo-1318939875.cos.ap-beijing.myqcloud.com//picgoR0000433_DxO.jpg 4128w&#34; width=&#34;4128&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;景德镇手工制瓷&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;360px&#34; data-flex-grow=&#34;150&#34; height=&#34;4028&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://hugo-1318939875.cos.ap-beijing.myqcloud.com//picgoR0000434_DxO.jpg&#34; srcset=&#34;https://blog.lovetianjin.com/picgoR0000434_DxO_13804063829706562340_hu_df4694ba156f1d2d.jpg 800w, https://blog.lovetianjin.com/picgoR0000434_DxO_13804063829706562340_hu_575e2eaa66226f5a.jpg 1600w, https://blog.lovetianjin.com/picgoR0000434_DxO_13804063829706562340_hu_f9834f02d844a55d.jpg 2400w, https://hugo-1318939875.cos.ap-beijing.myqcloud.com//picgoR0000434_DxO.jpg 6042w&#34; width=&#34;6042&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;em&gt;景德镇的美，的确并非几张照片或寥寥数语所能尽述。这虽是一个小镇，却值得你在这里驻足，静下心来，用心去感知、用眼去捕捉、用手去触碰，在那宁静中，体会那份经久不衰的精致与韵味。&lt;/em&gt;&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h3 id=&#34;鄱阳湖日落&#34;&gt;鄱阳湖日落&#xA;&lt;/h3&gt;&lt;p&gt;&lt;img alt=&#34;鄱阳湖壮丽日落&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;320px&#34; data-flex-grow=&#34;133&#34; height=&#34;3888&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://hugo-1318939875.cos.ap-beijing.myqcloud.com//picgopicgoP2210794_DxO.jpg&#34; srcset=&#34;https://blog.lovetianjin.com/picgopicgoP2210794_DxO_14724177000807302278_hu_d0065375ed09ce93.jpg 800w, https://blog.lovetianjin.com/picgopicgoP2210794_DxO_14724177000807302278_hu_dbbbaa19b177db86.jpg 1600w, https://blog.lovetianjin.com/picgopicgoP2210794_DxO_14724177000807302278_hu_db5ee0d49b68f8d7.jpg 2400w, https://hugo-1318939875.cos.ap-beijing.myqcloud.com//picgopicgoP2210794_DxO.jpg 5184w&#34; width=&#34;5184&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;em&gt;鄱阳湖的落日，苍茫而壮阔，为这趟旅程画上了完美的句号。&lt;/em&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;以此篇行旅日记开启我的2026吧&#34;&gt;以此篇行旅日记，开启我的2026吧。&#xA;&lt;/h2&gt;</description>
        </item><item>
            <title>2026-02-15日记</title>
            <link>https://blog.lovetianjin.com/post/2026-02-15%E6%97%A5/</link>
            <pubDate>Sun, 15 Feb 2026 00:00:00 +0000</pubDate>
            <guid>https://blog.lovetianjin.com/post/2026-02-15%E6%97%A5/</guid>
            <description>&lt;p&gt;新春除夕前一天，日子非常的无聊。&lt;/p&gt;&#xA;&lt;p&gt;孩子在自己房间享受珍贵的假期，打游戏和同学的连麦呼喊声，此起彼伏。&lt;/p&gt;&#xA;&lt;p&gt;我自己坐在电脑前，无聊的开打B站，听着八百年前的音乐无限循环。翻动着Steam，看着仓库中丰富的游戏，还有可怜的游戏时间。我好像电子阳痿了，打游戏已经提不起不任何兴趣了，最喜欢的策略类游戏，长篇的文字说明让我很是烦躁，没有兴趣读下去。花了几十块买了2个游戏，发现不适合我，进去放仓库吧。&lt;/p&gt;&#xA;&lt;p&gt;感觉我掉进了一种怪圈，消费好像能让我多巴胺分泌，刺激自己的大脑，但是消费后的空虚，却让我调入无尽的烦躁。&lt;/p&gt;&#xA;&lt;p&gt;想起来一句诗词：&lt;/p&gt;&#xA;&#xA;    &lt;blockquote&gt;&#xA;        &lt;p&gt;&lt;strong&gt;《元日》&lt;/strong&gt;&#xA;[宋] 王安石&#xA;爆竹声中一岁除，&#xA;春风送暖入屠苏。&#xA;千门万户曈曈日，&#xA;总把新桃换旧符。&lt;/p&gt;&#xA;&#xA;    &lt;/blockquote&gt;&#xA;&lt;p&gt;现在已经连烟花爆竹都不允许放了，真是可悲啊。&#xA;春节的意义已经不存在了，在这个社会上，每个人就像流水线上的机器手，工作、消费、纳税、休息，最终进入医院把积蓄花光，死亡。&lt;/p&gt;&#xA;&lt;img src=&#34;https://hugo-1318939875.cos.ap-beijing.myqcloud.com//picgopicgoP1000701.jpg&#34; style=&#34;zoom:50%;&#34; /&gt;&#xA;&lt;p&gt;&lt;strong&gt;人生真的是无意义啊。&lt;/strong&gt;&lt;/p&gt;&#xA;</description>
        </item><item>
            <title>胶片相机</title>
            <link>https://blog.lovetianjin.com/post/%E8%83%B6%E5%8D%B7%E7%9B%B8%E6%9C%BA/</link>
            <pubDate>Sun, 08 Feb 2026 00:00:00 +0000</pubDate>
            <guid>https://blog.lovetianjin.com/post/%E8%83%B6%E5%8D%B7%E7%9B%B8%E6%9C%BA/</guid>
            <description>&lt;p&gt;心中一直有个胶片梦，在购物车里反复掂量了许久。&lt;/p&gt;&#xA;&lt;p&gt;最终，我并没有带走心心念念的徕卡 M6，而是选择了这台尼康大F。坦白说，预算是现实的考量，但更多的是一份对未知的敬畏——面对胶片拍摄的门槛，我尚无十足把握将这份重金投入在徕卡上。&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;320px&#34; data-flex-grow=&#34;133&#34; height=&#34;3072&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://hugo-1318939875.cos.ap-beijing.myqcloud.com//picgopicgopicgoIMG20260208173651.jpg&#34; srcset=&#34;https://blog.lovetianjin.com/picgopicgopicgoIMG20260208173651_17572976666223090967_hu_cf5c24e75edcf479.jpg 800w, https://blog.lovetianjin.com/picgopicgopicgoIMG20260208173651_17572976666223090967_hu_9e556b2b5d9b2773.jpg 1600w, https://blog.lovetianjin.com/picgopicgopicgoIMG20260208173651_17572976666223090967_hu_1163e7c6e115b1d7.jpg 2400w, https://hugo-1318939875.cos.ap-beijing.myqcloud.com//picgopicgopicgoIMG20260208173651.jpg 4096w&#34; width=&#34;4096&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;320px&#34; data-flex-grow=&#34;133&#34; height=&#34;3072&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://hugo-1318939875.cos.ap-beijing.myqcloud.com//picgopicgoIMG20260208173640.jpg&#34; srcset=&#34;https://blog.lovetianjin.com/picgopicgoIMG20260208173640_5614523643948215452_hu_1768cc09d2968cc6.jpg 800w, https://blog.lovetianjin.com/picgopicgoIMG20260208173640_5614523643948215452_hu_e5c40751686c604b.jpg 1600w, https://blog.lovetianjin.com/picgopicgoIMG20260208173640_5614523643948215452_hu_7bb1560a633c8c19.jpg 2400w, https://hugo-1318939875.cos.ap-beijing.myqcloud.com//picgopicgoIMG20260208173640.jpg 4096w&#34; width=&#34;4096&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;但我对胶片的迷恋从未减退。无论是负片的宽容、正片的绚烂，还是黑白胶盐间的颗粒感，那种色彩的质感始终令我着迷。&lt;/p&gt;&#xA;&lt;p&gt;更重要的是，我厌倦了数码时代那种“机关枪式”的快门倾泄。当摄影被海量的废片和无尽的后期填满，这项本该优雅、慢节奏的爱好，变得愈发仓促而逼仄。&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;320px&#34; data-flex-grow=&#34;133&#34; height=&#34;3072&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://hugo-1318939875.cos.ap-beijing.myqcloud.com//picgopicgoIMG20260208173618.jpg&#34; srcset=&#34;https://blog.lovetianjin.com/picgopicgoIMG20260208173618_11345160007384587692_hu_369aa480f5c67129.jpg 800w, https://blog.lovetianjin.com/picgopicgoIMG20260208173618_11345160007384587692_hu_7b369cf99d71c54c.jpg 1600w, https://blog.lovetianjin.com/picgopicgoIMG20260208173618_11345160007384587692_hu_3e057b5762699599.jpg 2400w, https://hugo-1318939875.cos.ap-beijing.myqcloud.com//picgopicgoIMG20260208173618.jpg 4096w&#34; width=&#34;4096&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;爱好理应是生活的留白。唯有慢下来，去感受机械快门的每一次跳动，去等待显影液里的惊喜，才能真正触达摄影带来的精神愉悦。&lt;/p&gt;&#xA;&lt;p&gt;2026年2月，落笔。&lt;/p&gt;</description>
        </item><item>
            <title>2026年上海的第一场雪</title>
            <link>https://blog.lovetianjin.com/post/2026%E5%B9%B4%E4%B8%8A%E6%B5%B7%E7%9A%84%E7%AC%AC%E4%B8%80%E5%9C%BA%E9%9B%AA/</link>
            <pubDate>Sun, 25 Jan 2026 00:00:00 +0000</pubDate>
            <guid>https://blog.lovetianjin.com/post/2026%E5%B9%B4%E4%B8%8A%E6%B5%B7%E7%9A%84%E7%AC%AC%E4%B8%80%E5%9C%BA%E9%9B%AA/</guid>
            <description>&lt;p&gt;这组理光 GR4 记录的纪实片段，精准捕捉到了冬日都市中那份静谧且略带疏离的质感。从深夜街头那抹孤寂的暖黄灯影，到建筑墙面上利落的几何线条，理光直出的影调将平凡的物象点缀出了浓郁的故事感。画面中无论是粗糙的砖石纹理，还是光影交错下的空间结构，都展现出一种极简而有力的视觉语言。这些瞬间不需要繁杂的叙述，仅靠镜头对光线的细腻裁切，便勾勒出了城市角落里最真实、最动人的肌理，让人在冷暖对比的色调中感受到一种沉静的叙事力量。&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;20260120-IMG_20260120_233630&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;160px&#34; data-flex-grow=&#34;66&#34; height=&#34;4504&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://hugo-1318939875.cos.ap-beijing.myqcloud.com//picgo20260120-IMG_20260120_233630.jpg&#34; srcset=&#34;https://blog.lovetianjin.com/picgo20260120-IMG_20260120_233630_7003595506528079873_hu_9ae355eef53ad0ee.jpg 800w, https://blog.lovetianjin.com/picgo20260120-IMG_20260120_233630_7003595506528079873_hu_de96d768b7047a35.jpg 1600w, https://blog.lovetianjin.com/picgo20260120-IMG_20260120_233630_7003595506528079873_hu_85d6974f735edb57.jpg 2400w, https://hugo-1318939875.cos.ap-beijing.myqcloud.com//picgo20260120-IMG_20260120_233630.jpg 3004w&#34; width=&#34;3004&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;20260121-1768976383000_R0000107&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;160px&#34; data-flex-grow=&#34;66&#34; height=&#34;6079&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://hugo-1318939875.cos.ap-beijing.myqcloud.com//picgo20260121-1768976383000_R0000107.jpg&#34; srcset=&#34;https://blog.lovetianjin.com/picgo20260121-1768976383000_R0000107_4675101921224956498_hu_b79e246e9747e03.jpg 800w, https://blog.lovetianjin.com/picgo20260121-1768976383000_R0000107_4675101921224956498_hu_d3a46064ddd20431.jpg 1600w, https://blog.lovetianjin.com/picgo20260121-1768976383000_R0000107_4675101921224956498_hu_4c675d72e67c82d7.jpg 2400w, https://hugo-1318939875.cos.ap-beijing.myqcloud.com//picgo20260121-1768976383000_R0000107.jpg 4053w&#34; width=&#34;4053&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;20260121-1768976367000_R0000106&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;160px&#34; data-flex-grow=&#34;66&#34; height=&#34;6079&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://hugo-1318939875.cos.ap-beijing.myqcloud.com//picgo20260121-1768976367000_R0000106.jpg&#34; srcset=&#34;https://blog.lovetianjin.com/picgo20260121-1768976367000_R0000106_8661424425680844409_hu_1376ec4baa0e74a5.jpg 800w, https://blog.lovetianjin.com/picgo20260121-1768976367000_R0000106_8661424425680844409_hu_fba10b829edf1550.jpg 1600w, https://blog.lovetianjin.com/picgo20260121-1768976367000_R0000106_8661424425680844409_hu_fbd20ef53419944a.jpg 2400w, https://hugo-1318939875.cos.ap-beijing.myqcloud.com//picgo20260121-1768976367000_R0000106.jpg 4053w&#34; width=&#34;4053&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;20260120-1768874975000_R0000041&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;360px&#34; data-flex-grow=&#34;150&#34; height=&#34;4105&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://hugo-1318939875.cos.ap-beijing.myqcloud.com//picgo20260120-1768874975000_R0000041.jpg&#34; srcset=&#34;https://blog.lovetianjin.com/picgo20260120-1768874975000_R0000041_18278525400098357899_hu_e156c13111871f3e.jpg 800w, https://blog.lovetianjin.com/picgo20260120-1768874975000_R0000041_18278525400098357899_hu_62cae289e2b6452.jpg 1600w, https://blog.lovetianjin.com/picgo20260120-1768874975000_R0000041_18278525400098357899_hu_49d40db075633902.jpg 2400w, https://hugo-1318939875.cos.ap-beijing.myqcloud.com//picgo20260120-1768874975000_R0000041.jpg 6158w&#34; width=&#34;6158&#34;&gt;&lt;/p&gt;</description>
        </item><item>
            <title>近期照片</title>
            <link>https://blog.lovetianjin.com/post/%E5%88%86%E6%9E%90%E8%BF%91%E6%9C%9F%E7%85%A7%E7%89%87/</link>
            <pubDate>Sat, 24 Jan 2026 00:00:00 +0000</pubDate>
            <guid>https://blog.lovetianjin.com/post/%E5%88%86%E6%9E%90%E8%BF%91%E6%9C%9F%E7%85%A7%E7%89%87/</guid>
            <description>&lt;p&gt;既然开了新的博客，就把自己近期的户外拍摄吧。当然，现在北方的天气很差，鸟的种类也不是很多，这篇文章，只是作为MD博客的练手&lt;/p&gt;&#xA;&lt;h2 id=&#34;拍摄于水西公园&#34;&gt;拍摄于水西公园&#xA;&lt;/h2&gt;&lt;p&gt;&lt;img alt=&#34;P1030074_DxO&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;320px&#34; data-flex-grow=&#34;133&#34; height=&#34;2552&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://hugo-1318939875.cos.ap-beijing.myqcloud.com//picgopicgoP1030074_DxO.jpg&#34; srcset=&#34;https://blog.lovetianjin.com/picgopicgoP1030074_DxO_11317039052374628013_hu_426f8cbb588f2053.jpg 800w, https://blog.lovetianjin.com/picgopicgoP1030074_DxO_11317039052374628013_hu_1ddacf7b191094c0.jpg 1600w, https://blog.lovetianjin.com/picgopicgoP1030074_DxO_11317039052374628013_hu_1bd072591568c571.jpg 2400w, https://hugo-1318939875.cos.ap-beijing.myqcloud.com//picgopicgoP1030074_DxO.jpg 3403w&#34; width=&#34;3403&#34;&gt;&lt;/p&gt;&#xA;&lt;h4 id=&#34;这只树梢的喜鹊我很是喜欢&#34;&gt;这只树梢的喜鹊，我很是喜欢。&#xA;&lt;/h4&gt;&lt;p&gt;&lt;img alt=&#34;P1030028_DxO&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;320px&#34; data-flex-grow=&#34;133&#34; height=&#34;2728&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://hugo-1318939875.cos.ap-beijing.myqcloud.com//picgoP1030028_DxO.jpg&#34; srcset=&#34;https://blog.lovetianjin.com/picgoP1030028_DxO_15592616926660541064_hu_dcd4634784f5d5d2.jpg 800w, https://blog.lovetianjin.com/picgoP1030028_DxO_15592616926660541064_hu_78f0f07663c202a0.jpg 1600w, https://blog.lovetianjin.com/picgoP1030028_DxO_15592616926660541064_hu_b50849a60cba2407.jpg 2400w, https://hugo-1318939875.cos.ap-beijing.myqcloud.com//picgoP1030028_DxO.jpg 3638w&#34; width=&#34;3638&#34;&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;西沽公园拍摄&#34;&gt;西沽公园拍摄&#xA;&lt;/h2&gt;&lt;p&gt;&lt;img alt=&#34;P6020031&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;180px&#34; data-flex-grow=&#34;75&#34; height=&#34;3888&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://hugo-1318939875.cos.ap-beijing.myqcloud.com//picgoP6020031.jpg&#34; srcset=&#34;https://blog.lovetianjin.com/picgoP6020031_13318509159846412762_hu_22d31446606e1c62.jpg 800w, https://blog.lovetianjin.com/picgoP6020031_13318509159846412762_hu_a874a9d209f232d5.jpg 1600w, https://blog.lovetianjin.com/picgoP6020031_13318509159846412762_hu_cd0848bc33429bd9.jpg 2400w, https://hugo-1318939875.cos.ap-beijing.myqcloud.com//picgoP6020031.jpg 2916w&#34; width=&#34;2916&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;P6020076&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;180px&#34; data-flex-grow=&#34;75&#34; height=&#34;3888&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://hugo-1318939875.cos.ap-beijing.myqcloud.com//picgoP6020076.jpg&#34; srcset=&#34;https://blog.lovetianjin.com/picgoP6020076_8955155706964666841_hu_2e8bd85bffdcdd32.jpg 800w, https://blog.lovetianjin.com/picgoP6020076_8955155706964666841_hu_c41e204a90d993ab.jpg 1600w, https://blog.lovetianjin.com/picgoP6020076_8955155706964666841_hu_6483ed5fedb07e12.jpg 2400w, https://hugo-1318939875.cos.ap-beijing.myqcloud.com//picgoP6020076.jpg 2916w&#34; width=&#34;2916&#34;&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;最后再上传几张自己的随拍吧&#34;&gt;最后再上传几张自己的随拍吧&#xA;&lt;/h2&gt;&lt;p&gt;&lt;img alt=&#34;P6080133_DxO&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;179px&#34; data-flex-grow=&#34;74&#34; height=&#34;5175&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://hugo-1318939875.cos.ap-beijing.myqcloud.com//picgoP6080133_DxO.jpg&#34; srcset=&#34;https://blog.lovetianjin.com/picgoP6080133_DxO_2143405433779193362_hu_15ed8f64cab7c3ea.jpg 800w, https://blog.lovetianjin.com/picgoP6080133_DxO_2143405433779193362_hu_1d3c73d2c83a4994.jpg 1600w, https://blog.lovetianjin.com/picgoP6080133_DxO_2143405433779193362_hu_7b6e6f405237c578.jpg 2400w, https://hugo-1318939875.cos.ap-beijing.myqcloud.com//picgoP6080133_DxO.jpg 3881w&#34; width=&#34;3881&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;P6080069_DxO&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;180px&#34; data-flex-grow=&#34;75&#34; height=&#34;4284&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://hugo-1318939875.cos.ap-beijing.myqcloud.com//picgoP6080069_DxO.jpg&#34; srcset=&#34;https://blog.lovetianjin.com/picgoP6080069_DxO_5191789891390253259_hu_ce8ea843b7ba4ba9.jpg 800w, https://blog.lovetianjin.com/picgoP6080069_DxO_5191789891390253259_hu_7a82e314f1d8eec7.jpg 1600w, https://blog.lovetianjin.com/picgoP6080069_DxO_5191789891390253259_hu_e26441e391428eeb.jpg 2400w, https://hugo-1318939875.cos.ap-beijing.myqcloud.com//picgoP6080069_DxO.jpg 3213w&#34; width=&#34;3213&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;P1010029_DxO&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;319px&#34; data-flex-grow=&#34;133&#34; height=&#34;3080&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://hugo-1318939875.cos.ap-beijing.myqcloud.com//picgoP1010029_DxO.jpg&#34; srcset=&#34;https://blog.lovetianjin.com/picgoP1010029_DxO_14537942464833384487_hu_46ffe07f3376e143.jpg 800w, https://blog.lovetianjin.com/picgoP1010029_DxO_14537942464833384487_hu_7f63167e9e12b1e1.jpg 1600w, https://blog.lovetianjin.com/picgoP1010029_DxO_14537942464833384487_hu_4b2376ad1eb0109a.jpg 2400w, https://hugo-1318939875.cos.ap-beijing.myqcloud.com//picgoP1010029_DxO.jpg 4106w&#34; width=&#34;4106&#34;&gt;&#xA;&lt;img alt=&#34;P1010024_DxO&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;320px&#34; data-flex-grow=&#34;133&#34; height=&#34;2814&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://hugo-1318939875.cos.ap-beijing.myqcloud.com//picgoP1010024_DxO.jpg&#34; srcset=&#34;https://blog.lovetianjin.com/picgoP1010024_DxO_9935889501061495641_hu_f52ad76b3fb1d95e.jpg 800w, https://blog.lovetianjin.com/picgoP1010024_DxO_9935889501061495641_hu_29c5682c194160a4.jpg 1600w, https://blog.lovetianjin.com/picgoP1010024_DxO_9935889501061495641_hu_98df7bd6ee459af8.jpg 2400w, https://hugo-1318939875.cos.ap-beijing.myqcloud.com//picgoP1010024_DxO.jpg 3752w&#34; width=&#34;3752&#34;&gt;&#xA;&lt;img alt=&#34;P1000701&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;320px&#34; data-flex-grow=&#34;133&#34; height=&#34;1536&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://hugo-1318939875.cos.ap-beijing.myqcloud.com//picgoP1000701.jpg&#34; srcset=&#34;https://blog.lovetianjin.com/picgoP1000701_13539514192429054944_hu_e96d91484fd9a3d3.jpg 800w, https://blog.lovetianjin.com/picgoP1000701_13539514192429054944_hu_73429b6a80530ec8.jpg 1600w, https://hugo-1318939875.cos.ap-beijing.myqcloud.com//picgoP1000701.jpg 2048w&#34; width=&#34;2048&#34;&gt;&#xA;&lt;img alt=&#34;P1000573&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;180px&#34; data-flex-grow=&#34;75&#34; height=&#34;2048&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://hugo-1318939875.cos.ap-beijing.myqcloud.com//picgoP1000573.jpg&#34; srcset=&#34;https://blog.lovetianjin.com/picgoP1000573_7801156966055230191_hu_b0aee62033f1fb7a.jpg 800w, https://hugo-1318939875.cos.ap-beijing.myqcloud.com//picgoP1000573.jpg 1538w&#34; width=&#34;1538&#34;&gt;&#xA;&lt;img alt=&#34;P1000559&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;319px&#34; data-flex-grow=&#34;133&#34; height=&#34;4000&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://hugo-1318939875.cos.ap-beijing.myqcloud.com//picgoP1000559.jpg&#34; srcset=&#34;https://blog.lovetianjin.com/picgoP1000559_14360666132664091206_hu_a8b95e3f1b52a248.jpg 800w, https://blog.lovetianjin.com/picgoP1000559_14360666132664091206_hu_f1bdadf9784a040a.jpg 1600w, https://blog.lovetianjin.com/picgoP1000559_14360666132664091206_hu_1ff08c74858e5911.jpg 2400w, https://hugo-1318939875.cos.ap-beijing.myqcloud.com//picgoP1000559.jpg 5328w&#34; width=&#34;5328&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;2026年开始了，发现了新的博客部署方式，我很是喜欢。&lt;/p&gt;</description>
        </item></channel>
</rss>
