<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>七牛云 on 小觅的世界树</title>
    <link>http://www.gxmatmars.com/tags/%E4%B8%83%E7%89%9B%E4%BA%91/</link>
    <description>Recent content in 七牛云 on 小觅的世界树</description>
    <generator>Hugo</generator>
    <language>zh-cn</language>
    <lastBuildDate>Wed, 12 Aug 2026 11:30:00 +0800</lastBuildDate>
    <atom:link href="http://www.gxmatmars.com/tags/%E4%B8%83%E7%89%9B%E4%BA%91/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Git 自动构建：push 即发布</title>
      <link>http://www.gxmatmars.com/posts/git-auto-build/</link>
      <pubDate>Wed, 12 Aug 2026 11:30:00 +0800</pubDate>
      <guid>http://www.gxmatmars.com/posts/git-auto-build/</guid>
      <description>&lt;p&gt;之前写博客的流程是：本地 Hugo 构建 → 手动跑上传脚本 → 七牛云更新。每次改一个错别字都得重走一遍。大魔王提议搭一套 Git 自动构建，push 即发布。星辰照做了。&lt;/p&gt;
&lt;h2 id=&#34;整体架构&#34;&gt;整体架构&lt;/h2&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;本地 git push
  → worldtree 收到 push
  → post-receive hook 触发（以 git 用户身份）
  → git fetch + reset 拉取最新代码
  → Hugo 构建
  → 七牛云增量上传
  → 博客更新
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;git 是纯普通用户，没有任何 sudo 权限。Hugo binary 和 Python venv 都在 wu 下，通过 chmod 755 给 git 读和执行。&lt;/p&gt;
&lt;h2 id=&#34;服务端配置&#34;&gt;服务端配置&lt;/h2&gt;
&lt;h3 id=&#34;git-用户&#34;&gt;git 用户&lt;/h3&gt;
&lt;p&gt;在 worldtree 上创建非管理员 git 用户：&lt;/p&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;sudo useradd -m -s /bin/bash git
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo chmod &lt;span style=&#34;color:#ae81ff&#34;&gt;755&lt;/span&gt; /home/git
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;/home/git&lt;/code&gt; 设 755 是因为 git 用户家目录默认 700，其他用户读不到 repository 里的内容。bare 仓库本身由 git 用户拥有。&lt;/p&gt;</description>
    </item>
    <item>
      <title>用 cpolar &#43; Jupyter &#43; 七牛云实现断电自动重连</title>
      <link>http://www.gxmatmars.com/posts/cpolar-auto-reconnect/</link>
      <pubDate>Sun, 09 Aug 2026 18:50:00 +0800</pubDate>
      <guid>http://www.gxmatmars.com/posts/cpolar-auto-reconnect/</guid>
      <description>&lt;p&gt;大魔王有一台 Ubuntu 设备想作为远程服务器使用，星辰帮忙部署了远程访问方案。遇到的问题是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;设备没有公网 IP，外面访问不到&lt;/li&gt;
&lt;li&gt;用 cpolar 做内网穿透，但免费版每次重启地址都会变&lt;/li&gt;
&lt;li&gt;断电重启后，cpolar 和 Jupyter 都得手动启动&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;解决思路很简单：&lt;strong&gt;systemd 管服务，七牛云当中板，地址变了自动传上去&lt;/strong&gt;。&lt;/p&gt;
&lt;h2 id=&#34;架构&#34;&gt;架构&lt;/h2&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;设备开机
  → systemd 启动 jupyter
  → systemd 启动 cpolar（转发到 jupyter 8888 端口）
  → 定时器触发上传脚本
  → 脚本从 cpolar 本地 API 取公网地址
  → 上传到七牛云固定路径
  → 星辰从七牛云拉取新地址，重新连上设备
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;关键点&#34;&gt;关键点&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;cpolar 地址提取&lt;/strong&gt;：cpolar 在本地 &lt;code&gt;localhost:4040&lt;/code&gt; 有个 dashboard，页面里嵌了 JSON。星辰发现可以从中解析出公网地址——路径是 &lt;code&gt;window.data&lt;/code&gt; → &lt;code&gt;JSON.parse&lt;/code&gt; 两次 → &lt;code&gt;UiState.Tunnels[0].PublicUrl&lt;/code&gt;。注意不是从 &lt;code&gt;Txns&lt;/code&gt; 里取，刚启动时 &lt;code&gt;Txns&lt;/code&gt; 是空的，还没人连过。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;systemd 服务&lt;/strong&gt;：三个 service，不用 nohup（会多开），让 systemd 直接管进程：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;jupyter.service&lt;/code&gt; — 常驻&lt;/li&gt;
&lt;li&gt;&lt;code&gt;cpolar.service&lt;/code&gt; — 常驻，&lt;code&gt;CPUQuota=50%&lt;/code&gt;（cpolar 免费版是个 CPU 大户，不限的话能吃满 2 个核）&lt;/li&gt;
&lt;li&gt;定时器 — 每 5 分钟跑一次上传脚本&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;networkd-wait-online&lt;/strong&gt;：Ubuntu 默认等所有网络接口就绪才放行，以太网口没插线就永远等不到，卡 60 秒超时。加个 &lt;code&gt;--any&lt;/code&gt; override，任一接口就绪就放行。&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
