<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[洛雨晨的小站]]></title><description><![CDATA[欢迎来到这只柚子猫的站点～]]></description><link>https://blog.ngny0n.top</link><image><url>https://blog.ngny0n.top/innei.svg</url><title>洛雨晨的小站</title><link>https://blog.ngny0n.top</link></image><generator>Shiro (https://github.com/Innei/Shiro)</generator><lastBuildDate>Wed, 21 Oct 2026 03:21:12 GMT</lastBuildDate><atom:link href="https://blog.ngny0n.top/feed" rel="self" type="application/rss+xml"/><pubDate>Wed, 21 Oct 2026 03:21:12 GMT</pubDate><language><![CDATA[zh-CN]]></language><item><title><![CDATA[记一次部署Mx-Space + Shiro]]></title><description><![CDATA[<link rel="preload" as="image" href="https://bucket.ngny0n.top/suwnh23dpclk11q1jj.png"/><link rel="preload" as="image" href="https://bucket.ngny0n.top/byln87nx3pdx61kcrh.png"/><link rel="preload" as="image" href="https://bucket.ngny0n.top/5n5b7fvnebmeaztwgb.png"/><link rel="preload" as="image" href="https://bucket.ngny0n.top/6ech3c5yp12rk025qu.png"/><link rel="preload" as="image" href="https://bucket.ngny0n.top/x4q43ihs9ii6hbt0dh.png"/><link rel="preload" as="image" href="https://bucket.ngny0n.top/43snrlqbvo4nw8f7js.png"/><div><blockquote>该渲染由 Shiro API 生成，可能存在排版问题，最佳体验请前往：<a href="https://blog.ngny0n.top/posts/devlo/Shiro">https://blog.ngny0n.top/posts/devlo/Shiro</a></blockquote><div><h1 id="">前言：</h1><p>各位应该对Mix-Space + Shiro感到不陌生吧（说实话我是不太陌生了）</p><p>那么你们的小洛猫子，在编译这个玩意儿的时候属于是把坑都给踩干净了</p><p>那么今天，一篇文章教你如何编译这个博客系统！</p><p>---</p><h1 id="">一、准备工作</h1><p>你需要：一个服务器、一个Vercel账户、一台电脑，因为我们以后还要改配置。</p><p>如果你没有服务器又想看哪里的服务器好，推荐你去<a href="http://www.jufcloud.com/aff/CJEAJMVT">桔风云</a>哦亲（橘汁打钱）</p><p>好的准备工作到此为止</p><p>---</p><h1 id="">二、后端部署</h1><p>后端部署之前，你需要先看这个：
<img src="https://bucket.ngny0n.top/suwnh23dpclk11q1jj.png" height="192" width="874"/>
免得你直接部署错了，部署了v14版本结果试了好久才发现不对（笑）
v10版本的编排我这里给一个：</p><pre class="language-yaml lang-yaml"><code class="language-yaml lang-yaml">services:
  app:
    container_name: mx-server
    image: innei/mx-server:10.5.3
    environment:
      - TZ=Asia/Shanghai
      - NODE_ENV=production
      - DB_HOST=mongo
      - REDIS_HOST=redis
      - ALLOWED_ORIGINS=localhost #localhost就行了
      - JWT_SECRET=自己改一下免得出问题
    volumes:
      - ./data/mx-space:/root/.mx-space
    ports:
      - &#x27;2333:2333&#x27;
    depends_on:
      - mongo
      - redis
    networks:
      - mx-space
    restart: unless-stopped
    healthcheck:
      test: [CMD, curl, -f, &#x27;http://127.0.0.1:2333/api/v2/ping&#x27;]
      interval: 1m30s
      timeout: 30s
      retries: 5
      start_period: 30s

  mongo:
    container_name: mongo
    image: mongo:7
    volumes:
      - ./data/db:/data/db
    networks:
      - mx-space
    restart: unless-stopped

  redis:
    image: redis:alpine
    container_name: redis
    volumes:
      - ./data/redis:/data
    healthcheck:
      test: [CMD-SHELL, &#x27;redis-cli ping | grep PONG&#x27;]
      start_period: 20s
      interval: 30s
      retries: 5
      timeout: 3s
    networks:
      - mx-space
    restart: unless-stopped

networks:
  mx-space:
    driver: bridge
</code></pre><p>（当然你想手动编译我也不是想阻止你）
把这份Da~mn的docker compose yaml文件上传到服务器，就比如这种方法：</p><pre class=""><code class="">mkdir mx-space/core
cd mx-space/core
docker compose up -d #先确保您安装了Docker和Compose
</code></pre><p>然后接下来等部署成功，反向代理127.0.0.1:2333，并访问&lt;你的网站&gt;/api/v2/ping，看见回复为data:pong即可。</p><hr/><h1 id="">三、前端部署</h1><p>好的也是来到了前端部署，那么首先我们需要先注意这个JettBrain的坑，那就是pnpm install生成的pnpm-lock过于古老，以至于会直接报错</p><pre class="language-Log lang-Log"><code class="language-Log lang-Log">ERR_PNPM_OUTDATED_LOCKFILE  Cannot install with &quot;frozen-lockfile&quot; because pnpm-lock.yaml is not up to date with &lt;ROOT&gt;/package.json
</code></pre>
<p><img src="https://bucket.ngny0n.top/byln87nx3pdx61kcrh.png"/>
所以呢，为了解决这个问题，我们需要先fork仓库，然后git clone下来，手动的pnpm更新一次，接下来就不会这样了</p><h2 id="">坑</h2><p>就在我以为更新一下就OK的时候，突然出现了报错：</p><pre class=""><code class="">15:50:25.469 @shiro/web:build: ┆             ^-- &#x27;highlight&#x27; is not recognized as a valid pseudo-element. Did you mean &#x27;:highlight&#x27; (pseudo-class) or is this a typo?
</code></pre><p><img src="https://bucket.ngny0n.top/5n5b7fvnebmeaztwgb.png"/>
也就是@haklex/rich-kit出现了::highlight问题，这里给出两种处理方式：</p><h3 id="">坑的解决方法</h3><h4 id="patchinnei">一、直接打patch，也是Innei老大推荐的方法</h4><p><img src="https://bucket.ngny0n.top/6ech3c5yp12rk025qu.png"/></p><blockquote><p>这不是正确的解法（指下面的强制要求使用webpack） 。你可以添加tailwindcss在devDependency字符串里，千万不能也不要使用webpack在生产模式。
Innei 在 <a href="https://github.com/Innei/Shiro/pull/651">https://github.com/Innei/Shiro/pull/651</a> 时候的回复</p></blockquote>
<p>在电脑本地运行</p><pre class="language-bash lang-bash"><code class="language-bash lang-bash">pnpm patch @haklex/rich-editor
</code></pre><p>然后应该会输出一大片类似这样的：</p><pre class="language-bash lang-bash"><code class="language-bash lang-bash">❯ pnpm patch @haklex/rich-editor
✔ Choose which version to patch · 0.0.105
✔ Apply this patch to all versions? (y/N) · true
Patch: You can now edit the package at:

  /mnt/data/1p5/Shiro/node_modules/.pnpm_patches/@haklex/rich-editor@0.0.105

To commit your changes, run:

  pnpm patch-commit &#x27;/mnt/data/1p5/Shiro/node_modules/.pnpm_patches/@haklex/rich-editor@0.0.105&#x27;

</code></pre><p>打开这个文件夹（如我这里输出内写的/mnt/data/1p5/Shiro/node<em>modules/.pnpm</em>patches/@haklex/rich-editor@0.0.105）然后接着打开目录下的dist/rich-editor.css。</p><p>将所有::highlight去掉，改成::selection，然后把后面的括号去掉。</p><p>（哦对了，这坨代码还带了反编译，所以是没有回车的哦）</p><p>如果不去掉括号，就会像我这样
<img src="https://bucket.ngny0n.top/x4q43ihs9ii6hbt0dh.png"/>
接下来，保存更改，在控制台内输入：</p><pre class="language-bash lang-bash"><code class="language-bash lang-bash"> pnpm patch-commit &#x27;/mnt/data/1p5/Shiro/node_modules/.pnpm_patches/@haklex/rich-editor@0.0.105&#x27;
</code></pre><p>然后接下来git三件套（指add&amp;commit&amp;push）我就不多说了</p><p>随后你就可以前往Vercel进行部署了（按照<a href="https://mx-space.js.org/docs/themes/shiro/deploy">官网</a>说的做就行）</p><p>当然，你也可以Fork我改过的<a href="https://github.com/lldxlzy/Shiro">仓库</a></p><h4 id="webpack">二、webpack，用在生产环境简直就是活受罪</h4><p>打开apps/web/package.json，然后找到build脚本</p><p>修改前：</p><pre class="language-json lang-json"><code class="language-json lang-json">&quot;build&quot;: &quot;tsc --noEmit &amp;&amp; cross-env NODE_ENV=production NODE_OPTIONS=--max_old_space_size=4096 next build&quot;,
</code></pre><p>修改后：</p><pre class="language-json lang-json"><code class="language-json lang-json">&quot;build&quot;: &quot;tsc --noEmit &amp;&amp; cross-env NODE_ENV=production NODE_OPTIONS=--max_old_space_size=4096 next build --webpack&quot;,
</code></pre><p>提交并推送，就完了
---</p><h1 id="">尾结</h1><p>虽说部署这个东西浪费了不少时间，但实际自己写出来还是很有成就感（划掉）的，尤其是老师甚至还让最后一个版本编译出来提示是Shiroi（不是）</p><p><img src="https://bucket.ngny0n.top/43snrlqbvo4nw8f7js.png"/></p><p>那么这篇博文到此就结束了，感谢您的查看，希望我的博文可以帮到您（如果可以的话，帮我宣传一下吧）~</p></div><p style="text-align:right"><a href="https://blog.ngny0n.top/posts/devlo/Shiro#comments">看完了？说点什么呢</a></p></div>]]></description><link>https://blog.ngny0n.top/posts/devlo/Shiro</link><guid isPermaLink="true">https://blog.ngny0n.top/posts/devlo/Shiro</guid><dc:creator><![CDATA[YoseLok]]></dc:creator><pubDate>Mon, 24 Aug 2026 09:49:46 GMT</pubDate></item></channel></rss>