<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <id>https://www.foldspace.cn/blog</id>
    <title>折叠科技 Blog</title>
    <updated>2026-05-07T18:00:00.000Z</updated>
    <generator>https://github.com/jpmonette/feed</generator>
    <link rel="alternate" href="https://www.foldspace.cn/blog"/>
    <subtitle>折叠科技 Blog</subtitle>
    <icon>https://www.foldspace.cn/img/favicon.ico</icon>
    <entry>
        <title type="html"><![CDATA[easytier多地多机房 混合组网]]></title>
        <id>https://www.foldspace.cn/blog/easytier多地多机房 混合组网</id>
        <link href="https://www.foldspace.cn/blog/easytier多地多机房 混合组网"/>
        <updated>2026-05-07T18:00:00.000Z</updated>
        <summary type="html"><![CDATA[简介]]></summary>
        <content type="html"><![CDATA[<h2 class="anchor anchorWithStickyNavbar_LWe7" id="简介">简介<a href="https://www.foldspace.cn/blog/easytier%E5%A4%9A%E5%9C%B0%E5%A4%9A%E6%9C%BA%E6%88%BF%20%E6%B7%B7%E5%90%88%E7%BB%84%E7%BD%91#%E7%AE%80%E4%BB%8B" class="hash-link" aria-label="Direct link to 简介" title="Direct link to 简介">​</a></h2>
<p>如果你在全国多个地方有家, 可以放一些机器可以试下</p>
<p>多地组网时候 有些参数 不配置好 容易漂 所以我记录一下</p>
<p>我的拓扑如下
<img decoding="async" loading="lazy" alt="687" src="https://www.foldspace.cn/assets/images/Pasted%20image%2020260507160749-8f72fdc16c4e5141b6a8e95daa184162.png" width="1536" height="1024" class="img_ev3q"></p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="公网中继配置">公网中继配置<a href="https://www.foldspace.cn/blog/easytier%E5%A4%9A%E5%9C%B0%E5%A4%9A%E6%9C%BA%E6%88%BF%20%E6%B7%B7%E5%90%88%E7%BB%84%E7%BD%91#%E5%85%AC%E7%BD%91%E4%B8%AD%E7%BB%A7%E9%85%8D%E7%BD%AE" class="hash-link" aria-label="Direct link to 公网中继配置" title="Direct link to 公网中继配置">​</a></h2>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">/usr/local/bin/easytier-core --hostname foldstace-yisu-hub  --network-name=foldspace --network-secret=******   -l tcp://0.0.0.0:11010 -l udp://0.0.0.0:11010 --mtu=1000 --enable-kcp-proxy --relay-network-whitelist="*" --private-mode=false  --relay-all-peer-rpc</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="其他节点配置">其他节点配置<a href="https://www.foldspace.cn/blog/easytier%E5%A4%9A%E5%9C%B0%E5%A4%9A%E6%9C%BA%E6%88%BF%20%E6%B7%B7%E5%90%88%E7%BB%84%E7%BD%91#%E5%85%B6%E4%BB%96%E8%8A%82%E7%82%B9%E9%85%8D%E7%BD%AE" class="hash-link" aria-label="Direct link to 其他节点配置" title="Direct link to 其他节点配置">​</a></h2>
<div class="language-toml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-toml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">instance_name = "**************"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">instance_id = "**********************"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">dhcp = false</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">ipv4 = "192.188.86.40/16"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">listeners = ["tcp://0.0.0.0:11010", "udp://0.0.0.0:11010"]</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">relay_all_peer = false</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">[network_identity]</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">network_name = "foldspace"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">network_secret = "**********"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">[[peer]]</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">uri = "tcp://{you public hub ip}:11010"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">[[peer]]</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">uri = "tcp://{you public hub ip}:11010"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">[flags]</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">enable_kcp_proxy = true</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">latency_first = true</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">keep_alive_interval = 5       # 新增</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">default_protocol = "tcp"</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="mac-个人电脑机器配置">mac 个人电脑机器配置<a href="https://www.foldspace.cn/blog/easytier%E5%A4%9A%E5%9C%B0%E5%A4%9A%E6%9C%BA%E6%88%BF%20%E6%B7%B7%E5%90%88%E7%BB%84%E7%BD%91#mac-%E4%B8%AA%E4%BA%BA%E7%94%B5%E8%84%91%E6%9C%BA%E5%99%A8%E9%85%8D%E7%BD%AE" class="hash-link" aria-label="Direct link to mac 个人电脑机器配置" title="Direct link to mac 个人电脑机器配置">​</a></h2>
<div class="language-toml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-toml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">instance_name = "my-mac"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">instance_id = "4c1a9564-fb8d-4764-aae6-d564854f4377"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">dhcp = false</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">ipv4 = "192.188.86.88/16"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">listeners = ["tcp://0.0.0.0:11010", "udp://0.0.0.0:11010"]</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">relay_all_peer = false  # 禁止转发流量给其他节点，这是关键</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">[network_identity]</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">network_name = "foldspace"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">network_secret = "**********"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">[[peer]]</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">uri = "tcp://{you public hub ip}:11010"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">[[peer]]</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">uri = "tcp://{you public hub ip}:11010"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">[flags]</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">p2p_only = false</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">mtu = 1000</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">keep_alive_interval = 1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">default_protocol = "tcp"</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>以上配置 避免了 路由老漂到不合理的位置
导致卡死或者其他</p>
<p>我现在 可以稳定 ping 无太大的波动, 避免了 漂到不正常的链路</p>]]></content>
        <author>
            <name>timger</name>
            <uri>https://www.zhihu.com/people/timger</uri>
        </author>
        <category label="easytier" term="easytier"/>
        <category label="组网" term="组网"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[fastapi 接入 azure 的 openapi 接口]]></title>
        <id>https://www.foldspace.cn/blog/fastapi-auzre-openai</id>
        <link href="https://www.foldspace.cn/blog/fastapi-auzre-openai"/>
        <updated>2026-05-07T09:27:46.000Z</updated>
        <summary type="html"><![CDATA[https://portal.azure.com/#home]]></summary>
        <content type="html"><![CDATA[<p><a href="https://portal.azure.com/#home" target="_blank" rel="noopener noreferrer">https://portal.azure.com/#home</a></p>
<p><a href="https://learn.microsoft.com/zh-cn/azure/ai-services/openai/reference" target="_blank" rel="noopener noreferrer">https://learn.microsoft.com/zh-cn/azure/ai-services/openai/reference</a></p>
<p><a href="https://learn.microsoft.com/zh-cn/azure/ai-services/openai/how-to/migration?tabs=python-new%2Cdalle-fix" target="_blank" rel="noopener noreferrer">https://learn.microsoft.com/zh-cn/azure/ai-services/openai/how-to/migration?tabs=python-new%2Cdalle-fix</a></p>]]></content>
        <author>
            <name>timger</name>
            <uri>https://www.zhihu.com/people/timger</uri>
        </author>
        <category label="python" term="python"/>
        <category label="fastapi" term="fastapi"/>
        <category label="sse" term="sse"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[2025/12/Katenary docker-compose 转 helm]]></title>
        <id>https://www.foldspace.cn/blog/2025/12/Katenary docker-compose 转 helm</id>
        <link href="https://www.foldspace.cn/blog/2025/12/Katenary docker-compose 转 helm"/>
        <updated>2026-05-07T09:27:46.000Z</updated>
    </entry>
    <entry>
        <title type="html"><![CDATA[2025/12/camel kaoto 和 camel karavan]]></title>
        <id>https://www.foldspace.cn/blog/2025/12/camel kaoto 和 camel karavan</id>
        <link href="https://www.foldspace.cn/blog/2025/12/camel kaoto 和 camel karavan"/>
        <updated>2026-05-07T09:27:46.000Z</updated>
        <summary type="html"><![CDATA[Camel Kaoto vs. Camel Karavan：哪个低代码集成工具更适合你？]]></summary>
        <content type="html"><![CDATA[<h3 class="anchor anchorWithStickyNavbar_LWe7" id="camel-kaoto-vs-camel-karavan哪个低代码集成工具更适合你"><strong>Camel Kaoto vs. Camel Karavan：哪个低代码集成工具更适合你？</strong><a href="https://www.foldspace.cn/blog/2025/12/camel%20kaoto%20%E5%92%8C%20camel%20karavan#camel-kaoto-vs-camel-karavan%E5%93%AA%E4%B8%AA%E4%BD%8E%E4%BB%A3%E7%A0%81%E9%9B%86%E6%88%90%E5%B7%A5%E5%85%B7%E6%9B%B4%E9%80%82%E5%90%88%E4%BD%A0" class="hash-link" aria-label="Direct link to camel-kaoto-vs-camel-karavan哪个低代码集成工具更适合你" title="Direct link to camel-kaoto-vs-camel-karavan哪个低代码集成工具更适合你">​</a></h3>
<p>当开发者希望使用 Apache Camel 的强大功能进行系统集成，却又不想深陷于复杂的代码时，Kaoto 和 Karavan 这两个“低代码/无代码”工具就成了热门选择。它们都旨在通过可视化来简化 Camel 路由的设计，但两者的理念、定位和适用场景却有显著不同。</p>
<p>简单来说，你可以把它们看作两位风格迥异的向导：</p>
<ul>
<li><strong>Kaoto</strong> 像是<strong>集成架构师</strong>的草图板，专注于让你在通用 IDE（如 VS Code）中灵活、直观地设计和编排集成流程。</li>
<li><strong>Karavan</strong> 则更像一个<strong>一体化集成平台</strong>，它不仅提供设计工具，还内置了针对容器化环境（Docker/Kubernetes）的快速构建和部署能力。</li>
</ul>
<p>下面这张核心对比表可以帮你快速抓住关键区别：</p>
<table><thead><tr><th style="text-align:left">特性维度</th><th style="text-align:left"><strong>Camel Kaoto</strong></th><th style="text-align:left"><strong>Camel Karavan</strong></th></tr></thead><tbody><tr><td style="text-align:left"><strong>核心定位</strong></td><td style="text-align:left"><strong>集成设计器</strong>，专注路由可视化设计。</td><td style="text-align:left"><strong>集成开发与部署平台</strong>，覆盖设计、构建、部署全链路。</td></tr><tr><td style="text-align:left"><strong>主要形态</strong></td><td style="text-align:left">VS Code 扩展（主流），也可作为独立 Web 应用。</td><td style="text-align:left">独立的 Web 应用，通常通过浏览器访问。</td></tr><tr><td style="text-align:left"><strong>运行时环境</strong></td><td style="text-align:left">设计完成后的路由，可部署到任何 Camel 支持的运行时（如 Spring Boot, Quarkus）。</td><td style="text-align:left"><strong>紧密集成容器化环境</strong>，设计时可无缝对接 Docker/Kubernetes/OpenShift，快速生成镜像并部署。</td></tr><tr><td style="text-align:left"><strong>核心优势</strong></td><td style="text-align:left">1. <strong>深度 IDE 集成</strong>，设计、代码、调试体验流畅。2. <strong>回环编辑</strong>，支持图形与源代码双向实时同步。3. <strong>强大的表达式和配置支持</strong>。</td><td style="text-align:left">1. <strong>项目拓扑视图</strong>，直观展示项目内所有集成及其连接关系，便于理解和管理。2. <strong>一体化的容器化部署</strong>，开发到上线路径极短。3. <strong>优化的性能和资源管理</strong>（如使用更高效的缓存）。</td></tr><tr><td style="text-align:left"><strong>学习曲线</strong></td><td style="text-align:left">对于已熟悉 VS Code 和 Camel 概念的开发者更友好。</td><td style="text-align:left">需要理解基本的容器化概念，但提供了更“开箱即用”的集成体验。</td></tr><tr><td style="text-align:left"><strong>适用场景</strong></td><td style="text-align:left"><strong>开发阶段</strong>的集成流程设计、原型构建、与现有代码库的深度结合。</td><td style="text-align:left">面向<strong>云原生和微服务</strong>的快速集成开发，以及需要频繁在容器环境中部署和管理的场景。</td></tr></tbody></table>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="如何选择关键决策因素"><strong>如何选择：关键决策因素</strong><a href="https://www.foldspace.cn/blog/2025/12/camel%20kaoto%20%E5%92%8C%20camel%20karavan#%E5%A6%82%E4%BD%95%E9%80%89%E6%8B%A9%E5%85%B3%E9%94%AE%E5%86%B3%E7%AD%96%E5%9B%A0%E7%B4%A0" class="hash-link" aria-label="Direct link to 如何选择关键决策因素" title="Direct link to 如何选择关键决策因素">​</a></h4>
<p>面对两者，你可以根据以下三个关键问题来做决定：</p>
<ol>
<li>
<p><strong>你的主要目标是什么？是设计路由，还是快速部署？</strong></p>
<ul>
<li>如果你的核心需求是在编码环境中<strong>精细地设计、验证和调试复杂的 Camel 路由</strong>，并且享受图形与代码双视角带来的灵活性和控制力，<strong>Kaoto</strong> 与 VS Code 的深度集成模式会是更优选择。</li>
<li>如果你的目标是<strong>快速构建一个集成应用并直接推送到 Kubernetes 或 Docker 环境</strong>，希望工具能覆盖从拖拽设计到生成镜像、配置发布的完整流程，那么 <strong>Karavan</strong> 一体化的、针对容器化优化的设计会更适合你。</li>
</ul>
</li>
<li>
<p><strong>你将在哪里运行你的集成？</strong></p>
<ul>
<li>如果你计划将最终的路由部署在传统的 Spring Boot 应用、独立 JAR 包或其他 Camel 支持的运行时中，Kaoto 是通用的设计器。</li>
<li>如果你的技术栈明确基于 <strong>Docker 或 Kubernetes（包括 OpenShift）</strong>，并且希望利用环境变量、ConfigMap 等云原生特性进行配置管理，Karavan 的原生支持将大幅减少你的配置工作量。</li>
</ul>
</li>
<li>
<p><strong>你更看重哪种协作与理解方式？</strong></p>
<ul>
<li>Kaoto 专注于单个路由或管道的设计清晰度。</li>
<li>Karavan 独有的 <strong>“项目拓扑视图”</strong> 能为你展示整个项目中所有集成、外部连接和服务之间的宏观关系图，这对于团队理解复杂项目结构和协作尤其有价值。</li>
</ul>
</li>
</ol>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="结论与建议"><strong>结论与建议</strong><a href="https://www.foldspace.cn/blog/2025/12/camel%20kaoto%20%E5%92%8C%20camel%20karavan#%E7%BB%93%E8%AE%BA%E4%B8%8E%E5%BB%BA%E8%AE%AE" class="hash-link" aria-label="Direct link to 结论与建议" title="Direct link to 结论与建议">​</a></h4>
<p>总而言之，<strong>Kaoto 和 Karavan 并非竞争关系，而是互补关系</strong>，它们分别优化了集成开发流程中不同环节的体验。</p>
<ul>
<li><strong>为现代云原生栈构建新集成</strong>：如果你的项目是全新的，且明确采用容器化和微服务架构，想从设计到部署一路畅通，建议直接从 <strong>Camel Karavan</strong> 开始尝试。</li>
<li><strong>在现有Java项目中设计或重构集成</strong>：如果你更习惯于在 IDE 中工作，需要将集成逻辑深度嵌入到现有 Spring Boot 或 Quarkus 应用中，或者你非常看重图形与源代码之间的双向编辑能力，那么 <strong>Camel Kaoto</strong> 的 VS Code 扩展是你的不二之选。</li>
<li><strong>不妨都试试</strong>：两个工具都有在线演示或便捷的安装方式。花上半小时分别体验一下，你很快就能感受到哪一个的工作流更符合你的思维模式和项目需求。</li>
</ul>
<p>综上感觉还是
<img decoding="async" loading="lazy" src="https://www.foldspace.cn/assets/images/Pasted%20image%2020251219155621-4768e1c3f55f6f885c5f3cc006c78caf.png" width="649" height="480" class="img_ev3q"></p>
<h1>参考</h1>
<ol>
<li><a href="https://docs.redhat.com/zh-cn/documentation/red_hat_build_of_apache_camel/4.4/html/kaoto/overview-of-kaoto" target="_blank" rel="noopener noreferrer">https://docs.redhat.com/zh-cn/documentation/red_hat_build_of_apache_camel/4.4/html/kaoto/overview-of-kaoto</a></li>
<li><a href="https://camel.apache.org/categories/Karavan/" target="_blank" rel="noopener noreferrer">https://camel.apache.org/categories/Karavan/</a></li>
</ol>]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[2025/12/debain 13 安装 cuda-toolkit]]></title>
        <id>https://www.foldspace.cn/blog/2025/12/debain 13 安装 cuda-toolkit</id>
        <link href="https://www.foldspace.cn/blog/2025/12/debain 13 安装 cuda-toolkit"/>
        <updated>2026-05-07T09:27:46.000Z</updated>
        <summary type="html"><![CDATA[https://docs.nvidia.com/cuda/cuda-installation-guide-linux/#network-repo-installation-for-debian]]></summary>
        <content type="html"><![CDATA[<p><a href="https://docs.nvidia.com/cuda/cuda-installation-guide-linux/#network-repo-installation-for-debian" target="_blank" rel="noopener noreferrer">https://docs.nvidia.com/cuda/cuda-installation-guide-linux/#network-repo-installation-for-debian</a></p>
<p>下载</p>
<div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">wget https://developer.download.nvidia.cn/compute/cuda/repos/debian13/x86_64/cuda-keyring_1.1-1_all.deb</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">dpkg -i cuda-keyring_1.1-1_all.deb</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>更新</p>
<div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">apt update</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>安装  6 个 G</p>
<div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">apt -y install cuda-toolkit</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">wget https://developer.download.nvidia.com/compute/cudnn/9.17.0/local_installers/cudnn-local-repo-debian12-9.17.0_1.0-1_amd64.deb</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">sudo dpkg -i cudnn-local-repo-debian12-9.17.0_1.0-1_amd64.deb</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">sudo cp /var/cudnn-local-repo-debian12-9.17.0/cudnn-*-keyring.gpg /usr/share/keyrings/</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">sudo apt-get update</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">sudo apt-get -y install cudnn9-cuda-12</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[2025/12/langbot-使用体验]]></title>
        <id>https://www.foldspace.cn/blog/2025/12/langbot-使用体验</id>
        <link href="https://www.foldspace.cn/blog/2025/12/langbot-使用体验"/>
        <updated>2026-05-07T09:27:46.000Z</updated>
    </entry>
    <entry>
        <title type="html"><![CDATA[2025/12/nextjs 的 鉴权实践]]></title>
        <id>https://www.foldspace.cn/blog/2025/12/nextjs 的 鉴权实践</id>
        <link href="https://www.foldspace.cn/blog/2025/12/nextjs 的 鉴权实践"/>
        <updated>2026-05-07T09:27:46.000Z</updated>
        <summary type="html"><![CDATA[Auth.js]]></summary>
        <content type="html"><![CDATA[<p>Auth.js</p>]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[Apache Camel Karavan 完整安装与体验指南]]></title>
        <id>https://www.foldspace.cn/blog/2025/12/安装和体验karavan</id>
        <link href="https://www.foldspace.cn/blog/2025/12/安装和体验karavan"/>
        <updated>2026-05-07T09:27:46.000Z</updated>
        <summary type="html"><![CDATA[Karavan 是 Apache Camel 生态中一款强大的低代码集成开发平台，它为云原生时代的系统集成提供了从设计到部署的一体化解决方案。本文将详细介绍 Karavan 的安装配置、功能特性以及实际使用体验。]]></summary>
        <content type="html"><![CDATA[<blockquote>
<p><strong>Karavan</strong> 是 Apache Camel 生态中一款强大的低代码集成开发平台，它为云原生时代的系统集成提供了从设计到部署的一体化解决方案。本文将详细介绍 Karavan 的安装配置、功能特性以及实际使用体验。</p>
</blockquote>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="-什么是-apache-camel-karavan">🚀 什么是 Apache Camel Karavan？<a href="https://www.foldspace.cn/blog/2025/12/%E5%AE%89%E8%A3%85%E5%92%8C%E4%BD%93%E9%AA%8Ckaravan#-%E4%BB%80%E4%B9%88%E6%98%AF-apache-camel-karavan" class="hash-link" aria-label="Direct link to 🚀 什么是 Apache Camel Karavan？" title="Direct link to 🚀 什么是 Apache Camel Karavan？">​</a></h2>
<p>Karavan 是基于 Apache Camel 的可视化集成开发环境，专门为现代云原生架构设计。它不仅仅是一个设计工具，更是一个完整的集成开发与部署平台，让开发者能够通过图形化界面快速构建、测试和部署 Camel 集成应用。</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="核心特点">核心特点<a href="https://www.foldspace.cn/blog/2025/12/%E5%AE%89%E8%A3%85%E5%92%8C%E4%BD%93%E9%AA%8Ckaravan#%E6%A0%B8%E5%BF%83%E7%89%B9%E7%82%B9" class="hash-link" aria-label="Direct link to 核心特点" title="Direct link to 核心特点">​</a></h3>
<ul>
<li><strong>可视化设计</strong>：通过拖拽方式设计和编排 Camel 路由</li>
<li><strong>一体化平台</strong>：集成设计、构建、部署全流程</li>
<li><strong>云原生优化</strong>：深度支持 Docker、Kubernetes 和 OpenShift</li>
<li><strong>项目拓扑视图</strong>：直观展示项目内所有集成及其连接关系</li>
<li><strong>实时预览</strong>：支持实时的路由设计和调试</li>
</ul>
<hr>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="-安装指南">📦 安装指南<a href="https://www.foldspace.cn/blog/2025/12/%E5%AE%89%E8%A3%85%E5%92%8C%E4%BD%93%E9%AA%8Ckaravan#-%E5%AE%89%E8%A3%85%E6%8C%87%E5%8D%97" class="hash-link" aria-label="Direct link to 📦 安装指南" title="Direct link to 📦 安装指南">​</a></h2>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="方式一在线体验推荐新手">方式一：在线体验（推荐新手）<a href="https://www.foldspace.cn/blog/2025/12/%E5%AE%89%E8%A3%85%E5%92%8C%E4%BD%93%E9%AA%8Ckaravan#%E6%96%B9%E5%BC%8F%E4%B8%80%E5%9C%A8%E7%BA%BF%E4%BD%93%E9%AA%8C%E6%8E%A8%E8%8D%90%E6%96%B0%E6%89%8B" class="hash-link" aria-label="Direct link to 方式一：在线体验（推荐新手）" title="Direct link to 方式一：在线体验（推荐新手）">​</a></h3>
<p>最快的方式是通过在线演示来体验 Karavan 的功能：</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain"># 访问官方在线演示</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># https://camel.apache.org/karavan/</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p><strong>优势</strong>：</p>
<ul>
<li>无需安装，直接使用</li>
<li>功能完整，支持保存和分享</li>
<li>可以随时体验最新版本</li>
</ul>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="方式二docker-容器部署">方式二：Docker 容器部署<a href="https://www.foldspace.cn/blog/2025/12/%E5%AE%89%E8%A3%85%E5%92%8C%E4%BD%93%E9%AA%8Ckaravan#%E6%96%B9%E5%BC%8F%E4%BA%8Cdocker-%E5%AE%B9%E5%99%A8%E9%83%A8%E7%BD%B2" class="hash-link" aria-label="Direct link to 方式二：Docker 容器部署" title="Direct link to 方式二：Docker 容器部署">​</a></h3>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="1-环境准备">1. 环境准备<a href="https://www.foldspace.cn/blog/2025/12/%E5%AE%89%E8%A3%85%E5%92%8C%E4%BD%93%E9%AA%8Ckaravan#1-%E7%8E%AF%E5%A2%83%E5%87%86%E5%A4%87" class="hash-link" aria-label="Direct link to 1. 环境准备" title="Direct link to 1. 环境准备">​</a></h4>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain"># 确保已安装 Docker 和 Docker Compose</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">docker --version</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">docker-compose --version</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="2-拉取镜像">2. 拉取镜像<a href="https://www.foldspace.cn/blog/2025/12/%E5%AE%89%E8%A3%85%E5%92%8C%E4%BD%93%E9%AA%8Ckaravan#2-%E6%8B%89%E5%8F%96%E9%95%9C%E5%83%8F" class="hash-link" aria-label="Direct link to 2. 拉取镜像" title="Direct link to 2. 拉取镜像">​</a></h4>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain"># 从 Docker Hub 拉取 Karavan 镜像</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">docker pull apache/camel-karavan:latest</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="3-运行容器">3. 运行容器<a href="https://www.foldspace.cn/blog/2025/12/%E5%AE%89%E8%A3%85%E5%92%8C%E4%BD%93%E9%AA%8Ckaravan#3-%E8%BF%90%E8%A1%8C%E5%AE%B9%E5%99%A8" class="hash-link" aria-label="Direct link to 3. 运行容器" title="Direct link to 3. 运行容器">​</a></h4>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain"># 运行 Karavan 容器</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">docker run -d -p 8080:8080 --name karavan apache/camel-karavan:latest</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="4-访问应用">4. 访问应用<a href="https://www.foldspace.cn/blog/2025/12/%E5%AE%89%E8%A3%85%E5%92%8C%E4%BD%93%E9%AA%8Ckaravan#4-%E8%AE%BF%E9%97%AE%E5%BA%94%E7%94%A8" class="hash-link" aria-label="Direct link to 4. 访问应用" title="Direct link to 4. 访问应用">​</a></h4>
<div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain"># 打开浏览器访问</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">http://localhost:8080</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="方式三源码编译安装">方式三：源码编译安装<a href="https://www.foldspace.cn/blog/2025/12/%E5%AE%89%E8%A3%85%E5%92%8C%E4%BD%93%E9%AA%8Ckaravan#%E6%96%B9%E5%BC%8F%E4%B8%89%E6%BA%90%E7%A0%81%E7%BC%96%E8%AF%91%E5%AE%89%E8%A3%85" class="hash-link" aria-label="Direct link to 方式三：源码编译安装" title="Direct link to 方式三：源码编译安装">​</a></h3>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="1-克隆源码">1. 克隆源码<a href="https://www.foldspace.cn/blog/2025/12/%E5%AE%89%E8%A3%85%E5%92%8C%E4%BD%93%E9%AA%8Ckaravan#1-%E5%85%8B%E9%9A%86%E6%BA%90%E7%A0%81" class="hash-link" aria-label="Direct link to 1. 克隆源码" title="Direct link to 1. 克隆源码">​</a></h4>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">git clone https://github.com/apache/camel-karavan.git</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">cd camel-karavan</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="2-安装依赖">2. 安装依赖<a href="https://www.foldspace.cn/blog/2025/12/%E5%AE%89%E8%A3%85%E5%92%8C%E4%BD%93%E9%AA%8Ckaravan#2-%E5%AE%89%E8%A3%85%E4%BE%9D%E8%B5%96" class="hash-link" aria-label="Direct link to 2. 安装依赖" title="Direct link to 2. 安装依赖">​</a></h4>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain"># 使用 Maven 编译</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">mvn clean install</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="3-运行应用">3. 运行应用<a href="https://www.foldspace.cn/blog/2025/12/%E5%AE%89%E8%A3%85%E5%92%8C%E4%BD%93%E9%AA%8Ckaravan#3-%E8%BF%90%E8%A1%8C%E5%BA%94%E7%94%A8" class="hash-link" aria-label="Direct link to 3. 运行应用" title="Direct link to 3. 运行应用">​</a></h4>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain"># 运行开发服务器</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">mvn spring-boot:run</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="4-访问应用-1">4. 访问应用<a href="https://www.foldspace.cn/blog/2025/12/%E5%AE%89%E8%A3%85%E5%92%8C%E4%BD%93%E9%AA%8Ckaravan#4-%E8%AE%BF%E9%97%AE%E5%BA%94%E7%94%A8-1" class="hash-link" aria-label="Direct link to 4. 访问应用" title="Direct link to 4. 访问应用">​</a></h4>
<div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain"># 开发环境通常运行在</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">http://localhost:8080</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<hr>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="-功能特性详解">🎯 功能特性详解<a href="https://www.foldspace.cn/blog/2025/12/%E5%AE%89%E8%A3%85%E5%92%8C%E4%BD%93%E9%AA%8Ckaravan#-%E5%8A%9F%E8%83%BD%E7%89%B9%E6%80%A7%E8%AF%A6%E8%A7%A3" class="hash-link" aria-label="Direct link to 🎯 功能特性详解" title="Direct link to 🎯 功能特性详解">​</a></h2>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="1-集成路由设计器">1. 集成路由设计器<a href="https://www.foldspace.cn/blog/2025/12/%E5%AE%89%E8%A3%85%E5%92%8C%E4%BD%93%E9%AA%8Ckaravan#1-%E9%9B%86%E6%88%90%E8%B7%AF%E7%94%B1%E8%AE%BE%E8%AE%A1%E5%99%A8" class="hash-link" aria-label="Direct link to 1. 集成路由设计器" title="Direct link to 1. 集成路由设计器">​</a></h3>
<p>Karavan 提供了直观的可视化界面，让开发者能够通过拖拽组件来构建复杂的 Camel 路由：</p>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># 示例：简单的文件处理路由</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">from("file</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">data/input")</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  .process(new MyProcessor())</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  .to("file</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">data/output");</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p><strong>设计器特性</strong>：</p>
<ul>
<li><strong>组件库</strong>：丰富的 Camel 组件和 EIP 模式</li>
<li><strong>实时验证</strong>：语法检查和错误提示</li>
<li><strong>代码同步</strong>：图形化设计与 YAML 代码双向同步</li>
<li><strong>历史记录</strong>：支持撤销和重做操作</li>
</ul>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="2-项目拓扑视图">2. 项目拓扑视图<a href="https://www.foldspace.cn/blog/2025/12/%E5%AE%89%E8%A3%85%E5%92%8C%E4%BD%93%E9%AA%8Ckaravan#2-%E9%A1%B9%E7%9B%AE%E6%8B%93%E6%89%91%E8%A7%86%E5%9B%BE" class="hash-link" aria-label="Direct link to 2. 项目拓扑视图" title="Direct link to 2. 项目拓扑视图">​</a></h3>
<p>Karavan 独有的拓扑视图功能，让整个项目的集成结构一目了然：</p>
<div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">┌─────────────────┐    ┌─────────────────┐</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">│  Integration A  │───▶│  Integration B  │</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">└─────────────────┘    └─────────────────┘</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">         │                      │</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">         ▼                      ▼</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">┌─────────────────┐    ┌─────────────────┐</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">│  Service X     │    │  Service Y     │</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">└─────────────────┘    └─────────────────┘</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p><strong>拓扑视图优势</strong>：</p>
<ul>
<li><strong>全局视角</strong>：直观展示项目内的所有集成和连接关系</li>
<li><strong>依赖分析</strong>：快速识别组件间的依赖关系</li>
<li><strong>故障排查</strong>：便于定位问题点和性能瓶颈</li>
<li><strong>团队协作</strong>：提升团队对项目结构的理解</li>
</ul>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="3-集成环境配置">3. 集成环境配置<a href="https://www.foldspace.cn/blog/2025/12/%E5%AE%89%E8%A3%85%E5%92%8C%E4%BD%93%E9%AA%8Ckaravan#3-%E9%9B%86%E6%88%90%E7%8E%AF%E5%A2%83%E9%85%8D%E7%BD%AE" class="hash-link" aria-label="Direct link to 3. 集成环境配置" title="Direct link to 3. 集成环境配置">​</a></h3>
<p>Karavan 支持多种运行时环境的配置：</p>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># Kubernetes 配置示例</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">apiVersion</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> v1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">kind</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> ConfigMap</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">metadata</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">name</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> karavan</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">config</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">data</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">application.properties</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">|</span><span class="token scalar string" style="color:#e3116c"></span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">    camel.main.name=my-camel-app</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">    camel.springboot.main-run-controller=true</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p><strong>配置特性</strong>：</p>
<ul>
<li><strong>环境变量</strong>：支持容器化环境变量配置</li>
<li><strong>ConfigMap</strong>：Kubernetes 配置映射支持</li>
<li><strong>Secrets</strong>：敏感信息的安全管理</li>
<li><strong>多环境切换</strong>：开发、测试、生产环境配置分离</li>
</ul>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="4-构建与部署">4. 构建与部署<a href="https://www.foldspace.cn/blog/2025/12/%E5%AE%89%E8%A3%85%E5%92%8C%E4%BD%93%E9%AA%8Ckaravan#4-%E6%9E%84%E5%BB%BA%E4%B8%8E%E9%83%A8%E7%BD%B2" class="hash-link" aria-label="Direct link to 4. 构建与部署" title="Direct link to 4. 构建与部署">​</a></h3>
<p>Karavan 提供了完整的 CI/CD 流水线支持：</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain"># 自动构建 Docker 镜像</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">mvn package docker:build</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># 部署到 Kubernetes</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">kubectl apply -f target/camel-app.yaml</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p><strong>部署特性</strong>：</p>
<ul>
<li><strong>一键部署</strong>：从设计直接部署到目标环境</li>
<li><strong>版本管理</strong>：集成 Git 进行版本控制</li>
<li><strong>自动构建</strong>：支持构建流水线自动化</li>
<li><strong>健康检查</strong>：内置应用健康监控</li>
</ul>
<hr>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="-实际使用体验">💡 实际使用体验<a href="https://www.foldspace.cn/blog/2025/12/%E5%AE%89%E8%A3%85%E5%92%8C%E4%BD%93%E9%AA%8Ckaravan#-%E5%AE%9E%E9%99%85%E4%BD%BF%E7%94%A8%E4%BD%93%E9%AA%8C" class="hash-link" aria-label="Direct link to 💡 实际使用体验" title="Direct link to 💡 实际使用体验">​</a></h2>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="1-快速上手体验">1. 快速上手体验<a href="https://www.foldspace.cn/blog/2025/12/%E5%AE%89%E8%A3%85%E5%92%8C%E4%BD%93%E9%AA%8Ckaravan#1-%E5%BF%AB%E9%80%9F%E4%B8%8A%E6%89%8B%E4%BD%93%E9%AA%8C" class="hash-link" aria-label="Direct link to 1. 快速上手体验" title="Direct link to 1. 快速上手体验">​</a></h3>
<p><strong>创建第一个集成</strong>：</p>
<ol>
<li>
<p><strong>新建项目</strong></p>
<div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">- 点击 "Create New Project"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">- 输入项目名称 "my-first-integration"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">- 选择技术栈（Spring Boot 或 Quarkus）</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
</li>
<li>
<p><strong>设计路由</strong></p>
<div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">- 从组件库拖拽 "File" 组件</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">- 添加 "Processor" 处理节点</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">- 连接 "Log" 输出组件</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
</li>
<li>
<p><strong>配置参数</strong></p>
<div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">- 设置文件输入路径：file:input</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">- 配置输出路径：file:output</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">- 添加处理逻辑处理器</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
</li>
<li>
<p><strong>测试运行</strong></p>
<div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">- 点击 "Test" 按钮预览</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">- 实时查看日志输出</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">- 验证路由正确性</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
</li>
</ol>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="2-高级功能体验">2. 高级功能体验<a href="https://www.foldspace.cn/blog/2025/12/%E5%AE%89%E8%A3%85%E5%92%8C%E4%BD%93%E9%AA%8Ckaravan#2-%E9%AB%98%E7%BA%A7%E5%8A%9F%E8%83%BD%E4%BD%93%E9%AA%8C" class="hash-link" aria-label="Direct link to 2. 高级功能体验" title="Direct link to 2. 高级功能体验">​</a></h3>
<p><strong>复杂路由设计</strong>：</p>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># 多步骤数据处理路由</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">from("timer</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">tick</span><span class="token punctuation" style="color:#393A34">?</span><span class="token plain">period=5000")</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  .process(new DataEnricher())</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  .to("log</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">info")</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  .choice()</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    .when(simple("$</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">body.type</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"> == 'A'"))</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      .to("direct</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">processA")</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    .when(simple("$</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">body.type</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"> == 'B'"))</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      .to("direct</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">processB")</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    .otherwise()</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      .to("direct</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">default");</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p><strong>性能优化技巧</strong>：</p>
<ul>
<li>使用连接池配置优化性能</li>
<li>合理设置线程池大小</li>
<li>启用缓存机制提升响应速度</li>
<li>监控和调整内存使用</li>
</ul>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="3-团队协作体验">3. 团队协作体验<a href="https://www.foldspace.cn/blog/2025/12/%E5%AE%89%E8%A3%85%E5%92%8C%E4%BD%93%E9%AA%8Ckaravan#3-%E5%9B%A2%E9%98%9F%E5%8D%8F%E4%BD%9C%E4%BD%93%E9%AA%8C" class="hash-link" aria-label="Direct link to 3. 团队协作体验" title="Direct link to 3. 团队协作体验">​</a></h3>
<p><strong>项目共享</strong>：</p>
<div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">1. 点击 "Share Project"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">2. 生成分享链接或导出配置</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">3. 团队成员通过链接访问</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p><strong>版本控制</strong>：</p>
<div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">1. 集成 Git 仓库</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">2. 自动提交设计变更</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">3. 支持分支管理和合并</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<hr>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="-核心优势分析">🌟 核心优势分析<a href="https://www.foldspace.cn/blog/2025/12/%E5%AE%89%E8%A3%85%E5%92%8C%E4%BD%93%E9%AA%8Ckaravan#-%E6%A0%B8%E5%BF%83%E4%BC%98%E5%8A%BF%E5%88%86%E6%9E%90" class="hash-link" aria-label="Direct link to 🌟 核心优势分析" title="Direct link to 🌟 核心优势分析">​</a></h2>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="1-开发效率提升">1. 开发效率提升<a href="https://www.foldspace.cn/blog/2025/12/%E5%AE%89%E8%A3%85%E5%92%8C%E4%BD%93%E9%AA%8Ckaravan#1-%E5%BC%80%E5%8F%91%E6%95%88%E7%8E%87%E6%8F%90%E5%8D%87" class="hash-link" aria-label="Direct link to 1. 开发效率提升" title="Direct link to 1. 开发效率提升">​</a></h3>
<p><strong>相比传统开发方式</strong>：</p>
<ul>
<li><strong>可视化设计</strong>：减少 80% 的路由编写时间</li>
<li><strong>实时调试</strong>：即时代码修改和效果验证</li>
<li><strong>模板复用</strong>：内置丰富的集成模板</li>
<li><strong>错误预防</strong>：设计阶段的实时错误检查</li>
</ul>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="2-云原生原生支持">2. 云原生原生支持<a href="https://www.foldspace.cn/blog/2025/12/%E5%AE%89%E8%A3%85%E5%92%8C%E4%BD%93%E9%AA%8Ckaravan#2-%E4%BA%91%E5%8E%9F%E7%94%9F%E5%8E%9F%E7%94%9F%E6%94%AF%E6%8C%81" class="hash-link" aria-label="Direct link to 2. 云原生原生支持" title="Direct link to 2. 云原生原生支持">​</a></h3>
<p><strong>容器化部署优势</strong>：</p>
<ul>
<li><strong>无缝集成</strong>：与 Docker/Kubernetes 深度集成</li>
<li><strong>配置管理</strong>：支持 ConfigMap 和 Secrets</li>
<li><strong>弹性伸缩</strong>：基于 K8s 的自动扩缩容</li>
<li><strong>持续交付</strong>：完整的 DevOps 流程支持</li>
</ul>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="3-团队协作优化">3. 团队协作优化<a href="https://www.foldspace.cn/blog/2025/12/%E5%AE%89%E8%A3%85%E5%92%8C%E4%BD%93%E9%AA%8Ckaravan#3-%E5%9B%A2%E9%98%9F%E5%8D%8F%E4%BD%9C%E4%BC%98%E5%8C%96" class="hash-link" aria-label="Direct link to 3. 团队协作优化" title="Direct link to 3. 团队协作优化">​</a></h3>
<p><strong>协作体验提升</strong>：</p>
<ul>
<li><strong>统一平台</strong>：设计、开发、部署一体化</li>
<li><strong>可视化沟通</strong>：拓扑视图便于团队理解</li>
<li><strong>知识沉淀</strong>：项目文档和配置自动生成</li>
<li><strong>质量保证</strong>：集成测试和性能监控</li>
</ul>
<hr>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="-适用场景分析">🎯 适用场景分析<a href="https://www.foldspace.cn/blog/2025/12/%E5%AE%89%E8%A3%85%E5%92%8C%E4%BD%93%E9%AA%8Ckaravan#-%E9%80%82%E7%94%A8%E5%9C%BA%E6%99%AF%E5%88%86%E6%9E%90" class="hash-link" aria-label="Direct link to 🎯 适用场景分析" title="Direct link to 🎯 适用场景分析">​</a></h2>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="1-推荐使用场景">1. 推荐使用场景<a href="https://www.foldspace.cn/blog/2025/12/%E5%AE%89%E8%A3%85%E5%92%8C%E4%BD%93%E9%AA%8Ckaravan#1-%E6%8E%A8%E8%8D%90%E4%BD%BF%E7%94%A8%E5%9C%BA%E6%99%AF" class="hash-link" aria-label="Direct link to 1. 推荐使用场景" title="Direct link to 1. 推荐使用场景">​</a></h3>
<p><strong>微服务集成</strong>：</p>
<ul>
<li>API 网关和后端服务集成</li>
<li>微服务间的数据同步</li>
<li>事件驱动架构实现</li>
</ul>
<p><strong>数据流处理</strong>：</p>
<ul>
<li>ETL 数据管道构建</li>
<li>实时数据流处理</li>
<li>批处理作业编排</li>
</ul>
<p><strong>系统集成</strong>：</p>
<ul>
<li>企业应用集成 (EAI)</li>
<li>SaaS 集成连接</li>
<li>遗留系统现代化</li>
</ul>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="2-特别适合的用户">2. 特别适合的用户<a href="https://www.foldspace.cn/blog/2025/12/%E5%AE%89%E8%A3%85%E5%92%8C%E4%BD%93%E9%AA%8Ckaravan#2-%E7%89%B9%E5%88%AB%E9%80%82%E5%90%88%E7%9A%84%E7%94%A8%E6%88%B7" class="hash-link" aria-label="Direct link to 2. 特别适合的用户" title="Direct link to 2. 特别适合的用户">​</a></h3>
<p><strong>开发者类型</strong>：</p>
<ul>
<li>前端开发者想要理解后端集成逻辑</li>
<li>业务分析师参与集成流程设计</li>
<li>DevOps 工程师管理集成部署</li>
</ul>
<p><strong>组织规模</strong>：</p>
<ul>
<li>中小企业快速构建集成能力</li>
<li>大型企业提升开发效率</li>
<li>创业公司快速实现产品原型</li>
</ul>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="3-学习曲线">3. 学习曲线<a href="https://www.foldspace.cn/blog/2025/12/%E5%AE%89%E8%A3%85%E5%92%8C%E4%BD%93%E9%AA%8Ckaravan#3-%E5%AD%A6%E4%B9%A0%E6%9B%B2%E7%BA%BF" class="hash-link" aria-label="Direct link to 3. 学习曲线" title="Direct link to 3. 学习曲线">​</a></h3>
<p><strong>入门难度</strong>：</p>
<div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">- 基础使用：1-2 小时</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">- 熟练操作：1-2 周</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">- 深度应用：1-2 个月</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p><strong>前置知识要求</strong>：</p>
<ul>
<li>了解 Apache Camel 基础概念</li>
<li>具备基本的容器化知识</li>
<li>熟悉系统集成的基本概念</li>
</ul>
<hr>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="-与其他工具对比">🔍 与其他工具对比<a href="https://www.foldspace.cn/blog/2025/12/%E5%AE%89%E8%A3%85%E5%92%8C%E4%BD%93%E9%AA%8Ckaravan#-%E4%B8%8E%E5%85%B6%E4%BB%96%E5%B7%A5%E5%85%B7%E5%AF%B9%E6%AF%94" class="hash-link" aria-label="Direct link to 🔍 与其他工具对比" title="Direct link to 🔍 与其他工具对比">​</a></h2>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="vs-apache-camel-kaoto">vs Apache Camel Kaoto<a href="https://www.foldspace.cn/blog/2025/12/%E5%AE%89%E8%A3%85%E5%92%8C%E4%BD%93%E9%AA%8Ckaravan#vs-apache-camel-kaoto" class="hash-link" aria-label="Direct link to vs Apache Camel Kaoto" title="Direct link to vs Apache Camel Kaoto">​</a></h3>
<table><thead><tr><th>特性维度</th><th><strong>Camel Karavan</strong></th><th><strong>Camel Kaoto</strong></th></tr></thead><tbody><tr><td><strong>核心定位</strong></td><td>集成开发与部署平台</td><td>集成设计器</td></tr><tr><td><strong>运行环境</strong></td><td>深度支持容器化</td><td>通用运行时支持</td></tr><tr><td><strong>部署能力</strong></td><td>一体化容器化部署</td><td>需手动部署</td></tr><tr><td><strong>拓扑视图</strong></td><td>项目拓扑可视化</td><td>单路由设计</td></tr><tr><td><strong>学习曲线</strong></td><td>需要容器化知识</td><td>IDE 环境熟悉即可</td></tr></tbody></table>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="vs-自定义编码开发">vs 自定义编码开发<a href="https://www.foldspace.cn/blog/2025/12/%E5%AE%89%E8%A3%85%E5%92%8C%E4%BD%93%E9%AA%8Ckaravan#vs-%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BC%96%E7%A0%81%E5%BC%80%E5%8F%91" class="hash-link" aria-label="Direct link to vs 自定义编码开发" title="Direct link to vs 自定义编码开发">​</a></h3>
<table><thead><tr><th>方面</th><th><strong>Karavan</strong></th><th><strong>自定义编码</strong></th></tr></thead><tbody><tr><td><strong>开发效率</strong></td><td>⭐⭐⭐⭐⭐</td><td>⭐⭐⭐</td></tr><tr><td><strong>代码质量</strong></td><td>⭐⭐⭐⭐</td><td>⭐⭐⭐⭐⭐</td></tr><tr><td><strong>维护成本</strong></td><td>⭐⭐⭐</td><td>⭐⭐</td></tr><tr><td><strong>部署速度</strong></td><td>⭐⭐⭐⭐⭐</td><td>⭐⭐⭐</td></tr><tr><td><strong>灵活性</strong></td><td>⭐⭐⭐⭐</td><td>⭐⭐⭐⭐⭐</td></tr></tbody></table>
<hr>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="-总结与建议">📈 总结与建议<a href="https://www.foldspace.cn/blog/2025/12/%E5%AE%89%E8%A3%85%E5%92%8C%E4%BD%93%E9%AA%8Ckaravan#-%E6%80%BB%E7%BB%93%E4%B8%8E%E5%BB%BA%E8%AE%AE" class="hash-link" aria-label="Direct link to 📈 总结与建议" title="Direct link to 📈 总结与建议">​</a></h2>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="karavan-的核心价值">Karavan 的核心价值<a href="https://www.foldspace.cn/blog/2025/12/%E5%AE%89%E8%A3%85%E5%92%8C%E4%BD%93%E9%AA%8Ckaravan#karavan-%E7%9A%84%E6%A0%B8%E5%BF%83%E4%BB%B7%E5%80%BC" class="hash-link" aria-label="Direct link to Karavan 的核心价值" title="Direct link to Karavan 的核心价值">​</a></h3>
<p><strong>开发效率提升</strong>：</p>
<ul>
<li>可视化设计大幅缩短开发时间</li>
<li>一体化平台减少配置复杂度</li>
<li>自动化部署提升交付速度</li>
</ul>
<p><strong>技术优势</strong>：</p>
<ul>
<li>云原生架构的深度支持</li>
<li>完整的 DevOps 流水线</li>
<li>丰富的集成组件库</li>
</ul>
<p><strong>业务价值</strong>：</p>
<ul>
<li>加速数字化转型的实施</li>
<li>降低系统集成门槛</li>
<li>提升团队协作效率</li>
</ul>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="使用建议">使用建议<a href="https://www.foldspace.cn/blog/2025/12/%E5%AE%89%E8%A3%85%E5%92%8C%E4%BD%93%E9%AA%8Ckaravan#%E4%BD%BF%E7%94%A8%E5%BB%BA%E8%AE%AE" class="hash-link" aria-label="Direct link to 使用建议" title="Direct link to 使用建议">​</a></h3>
<p><strong>适合选择 Karavan 的场景</strong>：</p>
<ol>
<li><strong>新建云原生项目</strong>：容器化部署的集成开发</li>
<li><strong>团队协作项目</strong>：需要可视化协作的集成设计</li>
<li><strong>快速原型验证</strong>：从设计到部署的快速验证</li>
<li><strong>标准化集成</strong>：需要统一标准的集成流程</li>
</ol>
<p><strong>不建议过度使用的场景</strong>：</p>
<ol>
<li><strong>简单集成场景</strong>：简单的系统集成可能过于复杂化</li>
<li><strong>性能敏感应用</strong>：需要极致优化的复杂路由</li>
<li><strong>深度定制需求</strong>：需要高度定制化的特殊功能</li>
</ol>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="未来发展展望">未来发展展望<a href="https://www.foldspace.cn/blog/2025/12/%E5%AE%89%E8%A3%85%E5%92%8C%E4%BD%93%E9%AA%8Ckaravan#%E6%9C%AA%E6%9D%A5%E5%8F%91%E5%B1%95%E5%B1%95%E6%9C%9B" class="hash-link" aria-label="Direct link to 未来发展展望" title="Direct link to 未来发展展望">​</a></h3>
<p><strong>功能演进趋势</strong>：</p>
<ul>
<li>AI 辅助设计和优化</li>
<li>更好的多云支持</li>
<li>增强的安全性和合规性</li>
<li>更丰富的集成模板</li>
</ul>
<p><strong>生态系统发展</strong>：</p>
<ul>
<li>第三方工具集成</li>
<li>更多运行时支持</li>
<li>社区驱动的功能扩展</li>
<li>企业级特性增强</li>
</ul>
<hr>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="-参考资源">📚 参考资源<a href="https://www.foldspace.cn/blog/2025/12/%E5%AE%89%E8%A3%85%E5%92%8C%E4%BD%93%E9%AA%8Ckaravan#-%E5%8F%82%E8%80%83%E8%B5%84%E6%BA%90" class="hash-link" aria-label="Direct link to 📚 参考资源" title="Direct link to 📚 参考资源">​</a></h2>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="官方文档">官方文档<a href="https://www.foldspace.cn/blog/2025/12/%E5%AE%89%E8%A3%85%E5%92%8C%E4%BD%93%E9%AA%8Ckaravan#%E5%AE%98%E6%96%B9%E6%96%87%E6%A1%A3" class="hash-link" aria-label="Direct link to 官方文档" title="Direct link to 官方文档">​</a></h3>
<ul>
<li><a href="https://camel.apache.org/karavan/" target="_blank" rel="noopener noreferrer">Apache Camel Karavan 官方文档</a></li>
<li><a href="https://camel.apache.org/" target="_blank" rel="noopener noreferrer">Apache Camel 官方网站</a></li>
<li><a href="https://github.com/apache/camel-karavan" target="_blank" rel="noopener noreferrer">GitHub 仓库</a></li>
</ul>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="学习资源">学习资源<a href="https://www.foldspace.cn/blog/2025/12/%E5%AE%89%E8%A3%85%E5%92%8C%E4%BD%93%E9%AA%8Ckaravan#%E5%AD%A6%E4%B9%A0%E8%B5%84%E6%BA%90" class="hash-link" aria-label="Direct link to 学习资源" title="Direct link to 学习资源">​</a></h3>
<ul>
<li><a href="https://camel.apache.org/karavan/" target="_blank" rel="noopener noreferrer">Karavan 在线演示</a></li>
<li><a href="https://www.youtube.com/results?search_query=apache+camel+karavan" target="_blank" rel="noopener noreferrer">视频教程</a></li>
<li><a href="https://camel.apache.org/community/support" target="_blank" rel="noopener noreferrer">社区论坛</a></li>
</ul>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="部署指南">部署指南<a href="https://www.foldspace.cn/blog/2025/12/%E5%AE%89%E8%A3%85%E5%92%8C%E4%BD%93%E9%AA%8Ckaravan#%E9%83%A8%E7%BD%B2%E6%8C%87%E5%8D%97" class="hash-link" aria-label="Direct link to 部署指南" title="Direct link to 部署指南">​</a></h3>
<ul>
<li><a href="https://hub.docker.com/r/apache/camel-karavan" target="_blank" rel="noopener noreferrer">Docker 部署文档</a></li>
<li><a href="https://camel.apache.org/karavan/docs/deployment" target="_blank" rel="noopener noreferrer">Kubernetes 部署指南</a></li>
<li><a href="https://camel.apache.org/karavan/docs/spring-boot" target="_blank" rel="noopener noreferrer">Spring Boot 集成教程</a></li>
</ul>
<hr>
<p><strong>Apache Camel Karavan 让集成开发变得简单、高效、有趣！</strong> 🚀</p>
<p>无论是个人开发者还是团队组织，Karavan 都能为您提供强大的集成开发能力，帮助您快速构建现代化的云原生集成应用。立即开始您的低代码集成之旅吧！</p>]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[2025/12/视频翻译方案设计]]></title>
        <id>https://www.foldspace.cn/blog/2025/12/视频翻译方案设计</id>
        <link href="https://www.foldspace.cn/blog/2025/12/视频翻译方案设计"/>
        <updated>2026-05-07T09:27:46.000Z</updated>
    </entry>
    <entry>
        <title type="html"><![CDATA[2026/01/nextjs 的 鉴权实践 1]]></title>
        <id>https://www.foldspace.cn/blog/2026/01/nextjs 的 鉴权实践 1</id>
        <link href="https://www.foldspace.cn/blog/2026/01/nextjs 的 鉴权实践 1"/>
        <updated>2026-05-07T09:27:46.000Z</updated>
        <summary type="html"><![CDATA[Auth.js]]></summary>
        <content type="html"><![CDATA[<p>Auth.js</p>]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[agent简介 agent 简介]]></title>
        <id>https://www.foldspace.cn/blog/agent简介 agent 简介</id>
        <link href="https://www.foldspace.cn/blog/agent简介 agent 简介"/>
        <updated>2026-03-25T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[博客正文内容]]></summary>
        <content type="html"><![CDATA[<p>博客正文内容</p>]]></content>
        <author>
            <name>timger</name>
            <uri>https://www.zhihu.com/people/timger</uri>
        </author>
        <category label="uncategorized" term="uncategorized"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[测试博客]]></title>
        <id>https://www.foldspace.cn/blog/测试博客</id>
        <link href="https://www.foldspace.cn/blog/测试博客"/>
        <updated>2026-03-25T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[测试正文]]></summary>
        <content type="html"><![CDATA[<p>测试正文</p>]]></content>
        <author>
            <name>timger</name>
            <uri>https://www.zhihu.com/people/timger</uri>
        </author>
        <category label="uncategorized" term="uncategorized"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[笔记-20260-01-13]]></title>
        <id>https://www.foldspace.cn/blog/笔记-20260-01-13</id>
        <link href="https://www.foldspace.cn/blog/笔记-20260-01-13"/>
        <updated>2026-01-13T12:00:00.000Z</updated>
        <author>
            <name>timger</name>
            <uri>https://www.zhihu.com/people/timger</uri>
        </author>
        <category label="note" term="note"/>
        <category label="笔记" term="笔记"/>
        <category label="创业" term="创业"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[在window中 让makefile 自动补全生效]]></title>
        <id>https://www.foldspace.cn/blog/在window中 让makefile 自动补全生效</id>
        <link href="https://www.foldspace.cn/blog/在window中 让makefile 自动补全生效"/>
        <updated>2025-12-16T20:00:00.000Z</updated>
        <summary type="html"><![CDATA[以管理员身份打开PowerShell，然后执行：]]></summary>
        <content type="html"><![CDATA[<p>以管理员身份打开PowerShell，然后执行：</p>
<div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain"># 查看当前执行策略</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Get-ExecutionPolicy</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># 将执行策略设置为 RemoteSigned（推荐）</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Set-ExecutionPolicy RemoteSigned -Scope CurrentUser</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># 或者设置为 Bypass（临时解决方案）</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Set-ExecutionPolicy Bypass -Scope CurrentUser -Force</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># 验证更改</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Get-ExecutionPolicy -List</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>在powershell 中</p>
<div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain"> notepad $PROFILE</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>编辑文件</p>
<div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain"># Make 命令补全函数</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">function MakeCompletion {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    param($wordToComplete, $commandAst, $cursorPosition)</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    $makefile = Get-ChildItem -File | Where-Object {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        $_.Name -in @('Makefile', 'makefile', 'GNUmakefile')</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    } | Select-Object -First 1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    if ($makefile) {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        $targets = Get-Content $makefile.FullName | </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                   Select-String '^\s*([a-zA-Z0-9_-]+):' |</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                   ForEach-Object { $_.Matches.Groups[1].Value } |</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                   Sort-Object -Unique</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        $targets | Where-Object { $_ -like "$wordToComplete*" } |</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        ForEach-Object {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            [System.Management.Automation.CompletionResult]::new(</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                $_, </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                $_, </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                'ParameterValue', </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                $_</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            )</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        }</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    }</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># 注册补全</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Register-ArgumentCompleter -CommandName make -ScriptBlock $function:MakeCompletion</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>现在可以了</p>
<div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">make </span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>输入tab 会自动补全</p>]]></content>
        <author>
            <name>timger</name>
            <uri>https://www.zhihu.com/people/timger</uri>
        </author>
        <category label="winxp" term="winxp"/>
        <category label="win7" term="win7"/>
        <category label="make" term="make"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[在容器中运行 winxp 使用docker 运行 winxp 和 win7]]></title>
        <id>https://www.foldspace.cn/blog/在容器中运行 winxp 使用docker 运行 winxp 和 win7</id>
        <link href="https://www.foldspace.cn/blog/在容器中运行 winxp 使用docker 运行 winxp 和 win7"/>
        <updated>2024-08-19T13:00:00.000Z</updated>
        <summary type="html"><![CDATA[dockur/windows 是一个容器化的 win 项目]]></summary>
        <content type="html"><![CDATA[<p>dockur/windows 是一个容器化的 win 项目</p>
<p><a href="https://github.com/dockur/windows" target="_blank" rel="noopener noreferrer">https://github.com/dockur/windows</a></p>
<p>特点✨
多语言
ISO 下载器
KVM加速
基于 Web 的查看器</p>
<h1>安装</h1>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="镜像">镜像<a href="https://www.foldspace.cn/blog/%E5%9C%A8%E5%AE%B9%E5%99%A8%E4%B8%AD%E8%BF%90%E8%A1%8C%20winxp%20%E4%BD%BF%E7%94%A8docker%20%E8%BF%90%E8%A1%8C%20winxp%20%E5%92%8C%20win7#%E9%95%9C%E5%83%8F" class="hash-link" aria-label="Direct link to 镜像" title="Direct link to 镜像">​</a></h2>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">docker pull ghcr.io/dockur/windows:3.13</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>运行</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">docker run \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">	-it --rm \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">	-p 8006:8006  \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">	--cap-add NET_ADMIN \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">	-e VERSION='winxp' \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">	-e KVM="N" \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">	-e RAM_SIZE='1G' \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">	--stop-timeout 120 \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">	ghcr.io/dockur/windows:3.13</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p><a href="http://127.0.0.1:8006/?resize=scale&amp;autoconnect=true" target="_blank" rel="noopener noreferrer">http://127.0.0.1:8006/?resize=scale&amp;autoconnect=true</a></p>
<p>他这个 本身使用的事 vnc 技术</p>
<p><img decoding="async" loading="lazy" src="https://www.foldspace.cn/assets/images/Pasted%20image%2020240819164425-51e36f746a6fbccffa2202aae2f96126.png" width="1444" height="790" class="img_ev3q"></p>
<p><img decoding="async" loading="lazy" src="https://www.foldspace.cn/assets/images/Pasted%20image%2020240819170345-943a1ccffaa2e464b5dfe71ec2153bf8.png" width="1233" height="855" class="img_ev3q"></p>
<p><img decoding="async" loading="lazy" src="https://www.foldspace.cn/assets/images/Pasted%20image%2020240819193841-3138bdd66257c0c822f0793755ad69b1.png" width="1600" height="888" class="img_ev3q"></p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="win7">win7<a href="https://www.foldspace.cn/blog/%E5%9C%A8%E5%AE%B9%E5%99%A8%E4%B8%AD%E8%BF%90%E8%A1%8C%20winxp%20%E4%BD%BF%E7%94%A8docker%20%E8%BF%90%E8%A1%8C%20winxp%20%E5%92%8C%20win7#win7" class="hash-link" aria-label="Direct link to win7" title="Direct link to win7">​</a></h2>
<p><img decoding="async" loading="lazy" src="https://www.foldspace.cn/assets/images/Pasted%20image%2020240819194955-462c4d5a1ee784e3bc64e47cd6b339e3.png" width="716" height="196" class="img_ev3q"></p>
<p><img decoding="async" loading="lazy" src="https://www.foldspace.cn/assets/images/Pasted%20image%2020240819194940-d1bb4e8306e2d2378fa58f90cff5e0ae.png" width="1266" height="926" class="img_ev3q"></p>
<p><img decoding="async" loading="lazy" src="https://www.foldspace.cn/assets/images/Pasted%20image%2020240819195318-11e224da3eb32f7897a145c5d6196203.png" width="1281" height="866" class="img_ev3q">
<img decoding="async" loading="lazy" src="https://www.foldspace.cn/assets/images/Pasted%20image%2020240819195844-69020f913c6241466ecd1e017fbd39f3.png" width="1285" height="860" class="img_ev3q"></p>
<p><img decoding="async" loading="lazy" src="https://www.foldspace.cn/assets/images/Pasted%20image%2020240819205318-0cfd271d7b41f0251f8db8a44b021757.png" width="596" height="204" class="img_ev3q"></p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="改为-可以-开箱即用的镜像">改为 可以 开箱即用的镜像<a href="https://www.foldspace.cn/blog/%E5%9C%A8%E5%AE%B9%E5%99%A8%E4%B8%AD%E8%BF%90%E8%A1%8C%20winxp%20%E4%BD%BF%E7%94%A8docker%20%E8%BF%90%E8%A1%8C%20winxp%20%E5%92%8C%20win7#%E6%94%B9%E4%B8%BA-%E5%8F%AF%E4%BB%A5-%E5%BC%80%E7%AE%B1%E5%8D%B3%E7%94%A8%E7%9A%84%E9%95%9C%E5%83%8F" class="hash-link" aria-label="Direct link to 改为 可以 开箱即用的镜像" title="Direct link to 改为 可以 开箱即用的镜像">​</a></h2>
<div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">docker commit b46f8da3f4f4 registry.dafengstudio.cn/windows:xp</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">docker push  registry.dafengstudio.cn/windows:xp</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>win7</p>
<div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">docker commit bce2411bd9a4 registry.dafengstudio.cn/windows:win7</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">docker push  registry.dafengstudio.cn/windows:win7</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>]]></content>
        <author>
            <name>timger</name>
            <uri>https://www.zhihu.com/people/timger</uri>
        </author>
        <category label="docker" term="docker"/>
        <category label="winxp" term="winxp"/>
        <category label="win7" term="win7"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Vite + storybook 搭建自己的 React 组件库]]></title>
        <id>https://www.foldspace.cn/blog/Vite + storybook 搭建自己的 React 组件库</id>
        <link href="https://www.foldspace.cn/blog/Vite + storybook 搭建自己的 React 组件库"/>
        <updated>2024-08-08T13:00:00.000Z</updated>
        <summary type="html"><![CDATA[https://juejin.cn/post/7183265085884104763]]></summary>
        <content type="html"><![CDATA[<p><a href="https://juejin.cn/post/7183265085884104763" target="_blank" rel="noopener noreferrer">https://juejin.cn/post/7183265085884104763</a></p>]]></content>
        <author>
            <name>timger</name>
            <uri>https://www.zhihu.com/people/timger</uri>
        </author>
        <category label="k8s" term="k8s"/>
        <category label="qdrant" term="qdrant"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Vite + storybook 搭建自己的 React 组件库]]></title>
        <id>https://www.foldspace.cn/blog/Vite + storybook 搭建自己的 React 组件库</id>
        <link href="https://www.foldspace.cn/blog/Vite + storybook 搭建自己的 React 组件库"/>
        <updated>2024-08-08T13:00:00.000Z</updated>
        <summary type="html"><![CDATA[https://juejin.cn/post/7183265085884104763]]></summary>
        <content type="html"><![CDATA[<p><a href="https://juejin.cn/post/7183265085884104763" target="_blank" rel="noopener noreferrer">https://juejin.cn/post/7183265085884104763</a></p>]]></content>
        <author>
            <name>timger</name>
            <uri>https://www.zhihu.com/people/timger</uri>
        </author>
        <category label="k8s" term="k8s"/>
        <category label="qdrant" term="qdrant"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[NAS 上安装bitwarden]]></title>
        <id>https://www.foldspace.cn/blog/NAS 上安装bitwarden</id>
        <link href="https://www.foldspace.cn/blog/NAS 上安装bitwarden"/>
        <updated>2024-07-30T19:02:00.000Z</updated>
        <summary type="html"><![CDATA[Bitwarden 是一款开源的密码管理工具，提供跨平台的密码管理解决方案。用户可以安全地存储敏感信息，如密码、信用卡信息和笔记，并通过加密保护这些信息。Bitwarden 支持自动填充密码、生成强密码、共享安全信息等功能，同时提供浏览器插件、移动应用和桌面应用，方便用户在不同设备上访问和管理密码。Bitwarden 的安全性建立在端到端加密和零知识架构之上，确保用户的数据得到最高级别的保护。]]></summary>
        <content type="html"><![CDATA[<p>Bitwarden 是一款开源的密码管理工具，提供跨平台的密码管理解决方案。用户可以安全地存储敏感信息，如密码、信用卡信息和笔记，并通过加密保护这些信息。Bitwarden 支持自动填充密码、生成强密码、共享安全信息等功能，同时提供浏览器插件、移动应用和桌面应用，方便用户在不同设备上访问和管理密码。Bitwarden 的安全性建立在端到端加密和零知识架构之上，确保用户的数据得到最高级别的保护。</p>
<h1>安装</h1>
<p>注意 最近 docker 被强
自己找加速器 下载后 再推到私有</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">docker pull hub.uuuadc.top/bitwarden/server&nbsp;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">docker image tag hub.uuuadc.top/bitwarden/server:latest registry.dafengstudio.cn/bitwarden/server:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">docker push registry.dafengstudio.cn/bitwarden/server:latest</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>挂载目录</p>
<div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">WORKDIR /opt/bitwarden</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p><img decoding="async" loading="lazy" src="https://www.foldspace.cn/assets/images/Pasted%20image%2020240730155318-410666529ae7753354c964e710eaee73.png" width="1842" height="898" class="img_ev3q"></p>
<h1>nas 安装</h1>
<p>admin token 生成</p>
<p><a href="https://github.com/dani-garcia/vaultwarden/wiki/Enabling-admin-page#secure-the-admin_token" target="_blank" rel="noopener noreferrer">https://github.com/dani-garcia/vaultwarden/wiki/Enabling-admin-page#secure-the-admin_token</a></p>
<div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">docker exec -it bitwarden-server /vaultwarden hash</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>run</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">docker stop bitwarden-server|true</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">docker rm bitwarden-server</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">docker run \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">	--name bitwarden-server \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">	 -d \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">	--restart=always \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">	-e WEBSOCKET_ENABLED=true \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">	-e SIGNUPS_ALLOWED=false \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">	-e I_REALLY_WANT_VOLATILE_STORAGE=true \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">	-e  ADMIN_TOKEN='$argon2id$v=19$m=65540,t=3,p=4$UhMyL86++kz+P9BmkHYFB8DmflBNrWnkcrAYRYTCR4c$YGSGH494PLQkXyiRJ9wFfeXbQREPwsZsmJArEQqKtlg' \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">	  -p 3013:80 \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">	  -p 3012:3012 \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    -v /volume1/docker/foldspace-apps/bitwarden:/data/ \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    registry.dafengstudio.cn/vaultwarden/server:latest</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p><img decoding="async" loading="lazy" src="https://www.foldspace.cn/assets/images/Pasted%20image%2020240730171732-428e7ae39edbd7d17f459db7a974f8f3.png" width="2280" height="1148" class="img_ev3q"></p>
<p><img decoding="async" loading="lazy" src="https://www.foldspace.cn/assets/images/Pasted%20image%2020240730171711-20d27d81af571ab8ba3d10bf8418eff4.png" width="1016" height="1328" class="img_ev3q"></p>
<h1>参考</h1>
<ol>
<li><a href="https://zx1.fun/2022/09/21/%E4%BD%BF%E7%94%A8docker%E6%90%AD%E5%BB%BA%E8%87%AA%E5%B7%B1%E7%9A%84bitwarden%E5%AF%86%E7%A0%81%E7%AE%A1%E7%90%86%E6%9C%8D%E5%8A%A1/" target="_blank" rel="noopener noreferrer">https://zx1.fun/2022/09/21/%E4%BD%BF%E7%94%A8docker%E6%90%AD%E5%BB%BA%E8%87%AA%E5%B7%B1%E7%9A%84bitwarden%E5%AF%86%E7%A0%81%E7%AE%A1%E7%90%86%E6%9C%8D%E5%8A%A1/</a></li>
<li><a href="https://hub.docker.com/r/vaultwarden/server" target="_blank" rel="noopener noreferrer">https://hub.docker.com/r/vaultwarden/server</a></li>
<li><a href="https://frameworks.readthedocs.io/en/latest/devops/vaultwardenDocker.html" target="_blank" rel="noopener noreferrer">https://frameworks.readthedocs.io/en/latest/devops/vaultwardenDocker.html</a></li>
<li><a href="https://github.com/dani-garcia/vaultwarden" target="_blank" rel="noopener noreferrer">https://github.com/dani-garcia/vaultwarden</a></li>
</ol>]]></content>
        <author>
            <name>timger</name>
            <uri>https://www.zhihu.com/people/timger</uri>
        </author>
        <category label="docker" term="docker"/>
        <category label="bitwarden" term="bitwarden"/>
        <category label="nas" term="nas"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[NAS 上安装logseq]]></title>
        <id>https://www.foldspace.cn/blog/NAS 上安装logseq</id>
        <link href="https://www.foldspace.cn/blog/NAS 上安装logseq"/>
        <updated>2024-07-30T19:02:00.000Z</updated>
        <summary type="html"><![CDATA[Logseq是一个知识管理和协作平台。它专注于隐私、持久性和用户控制。Logseq 提供了一系列强大的知识管理、协作、PDF 注释和任务管理工具，支持多种文件格式，包括Markdown和Org-mode，以及用于组织和构建笔记的各种功能。]]></summary>
        <content type="html"><![CDATA[<p><a href="https://logseq.com/" target="_blank" rel="noopener noreferrer">Logseq</a>是一个<strong>知识管理</strong>和<strong>协作</strong>平台。它专注于隐私**、<strong>持久</strong>性<strong>和<a href="https://www.gnu.org/philosophy/free-sw.en.html" target="_blank" rel="noopener noreferrer"><strong>用户控制</strong></a>。Logseq 提供了一系列强大的</strong>知识管理**、<strong>协作</strong>、<strong>PDF 注释</strong>和<strong>任务管理****工具</strong>，支持多种文件格式，包括<strong>Markdown</strong>和<strong>Org-mode</strong>，以及用于组织和构建笔记的<strong>各种功能。</strong></p>
<p>Logseq 的<strong>白板</strong>功能可让您使用带有<strong>形状</strong>、<strong>绘图</strong>、<strong>网站嵌入</strong>和<strong>连接器的空间****画布</strong>来组织您的知识和想法。您可以<strong>直观地分组</strong>和<strong>链接</strong>您的<strong>笔记</strong>和外部媒体（例如<strong>视频</strong>和<strong>图像</strong>），使视觉思考者能够以新的方式撰写、重新混合、<strong>注释</strong>和连接来自其知识库和新兴想法的内容。</p>
<p>除了核心功能外，Logseq 还拥有不断壮大的<strong>插件</strong>和<strong>主题</strong>生态系统，可实现各种工作流程和<strong>自定义</strong>选项。还提供<strong>移动应用程序</strong>，可访问桌面应用程序的大多数功能。无论您是学生、专业人士，还是任何重视以清晰、有条理的方式管理想法和笔记的人，Logseq 都是任何希望提高工作效率和简化工作流程的人的绝佳选择。</p>
<p><a href="https://github.com/logseq/logseq" target="_blank" rel="noopener noreferrer">https://github.com/logseq/logseq</a></p>
<h1>安装</h1>
<p>在 nas 上执行</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">Status: Downloaded newer image for registry.dafengstudio.cn/logseq/logseq-webapp:latest</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">registry.dafengstudio.cn/logseq/logseq-webapp:latest</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">ash-4.3# docker pull registry.dafengstudio.cn/bitwarden/server:latest</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">latest: Pulling from bitwarden/server</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">efc2b5ad9eec: Downloading [===========================&gt;                       ]  16.22MB/29.13MB</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">66b672aaa3a6: Downloading [=======================&gt;                           ]   8.65MB/18.71MB</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">3d7d086377ca: Download complete</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">030dfb09a3db: Downloading [===============================&gt;                   ]  20.32MB/32.24MB</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">75cceec2ae3f: Waiting</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">2fe3f9fcc07a: Waiting</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">5005e22762b0: Waiting</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>注意 最近 docker 被强
自己找加速器 下载后 再推到私有</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">docker pull hub.uuuadc.top/bitwarden/server&nbsp;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">docker image tag hub.uuuadc.top/bitwarden/server:latest registry.dafengstudio.cn/bitwarden/server:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">docker push registry.dafengstudio.cn/bitwarden/server:latest</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>挂载目录</p>
<div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">WORKDIR /data</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<h1>nas 安装</h1>
<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">docker run --name tream-logseq  \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">	-it -d \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">	--restart=always \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    -p 3001:80 \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    -v /volume1/docker/foldspace-apps/tream-logseq/:/data \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    registry.dafengstudio.cn/logseq/logseq-webapp:latest</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p><a href="http://192.168.31.88:3001/#/" target="_blank" rel="noopener noreferrer">http://192.168.31.88:3001/#/</a></p>
<p><img decoding="async" loading="lazy" src="https://www.foldspace.cn/assets/images/Pasted%20image%2020240730160105-5b9fdb973d5cc4a0caf1efa45811f074.png" width="3464" height="1688" class="img_ev3q"></p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="错误it-seems-that-your-browser-doesnt-support-thenew-native-filesystem-api-please-use-any-chromium-86-based-browser-like-chrome-vivaldi-edge-etc-notice-that-the-api-doesnt-support-mobile-browsers-at-the-moment">错误It seems that your browser doesn't support the&nbsp;<a href="https://web.dev/file-system-access/" target="_blank" rel="noopener noreferrer">new native filesystem API</a>, please use any Chromium 86+ based browser like Chrome, Vivaldi, Edge, etc. Notice that the API doesn't support mobile browsers at the moment.<a href="https://www.foldspace.cn/blog/NAS%20%E4%B8%8A%E5%AE%89%E8%A3%85logseq#%E9%94%99%E8%AF%AFit-seems-that-your-browser-doesnt-support-thenew-native-filesystem-api-please-use-any-chromium-86-based-browser-like-chrome-vivaldi-edge-etc-notice-that-the-api-doesnt-support-mobile-browsers-at-the-moment" class="hash-link" aria-label="Direct link to 错误it-seems-that-your-browser-doesnt-support-thenew-native-filesystem-api-please-use-any-chromium-86-based-browser-like-chrome-vivaldi-edge-etc-notice-that-the-api-doesnt-support-mobile-browsers-at-the-moment" title="Direct link to 错误it-seems-that-your-browser-doesnt-support-thenew-native-filesystem-api-please-use-any-chromium-86-based-browser-like-chrome-vivaldi-edge-etc-notice-that-the-api-doesnt-support-mobile-browsers-at-the-moment">​</a></h3>
<p><img decoding="async" loading="lazy" src="https://www.foldspace.cn/assets/images/Pasted%20image%2020240730160238-517382421b55b7e1dcf76debaa5592b1.png" width="1860" height="1404" class="img_ev3q"></p>
<h1>参考</h1>
<ol>
<li><a href="https://github.com/logseq/logseq/blob/master/docs/docker-web-app-guide.md" target="_blank" rel="noopener noreferrer">https://github.com/logseq/logseq/blob/master/docs/docker-web-app-guide.md</a></li>
<li><a href="https://github.com/logseq/logseq/blob/master/Dockerfile" target="_blank" rel="noopener noreferrer">https://github.com/logseq/logseq/blob/master/Dockerfile</a></li>
</ol>]]></content>
        <author>
            <name>timger</name>
            <uri>https://www.zhihu.com/people/timger</uri>
        </author>
        <category label="docker" term="docker"/>
        <category label="bitwarden" term="bitwarden"/>
        <category label="nas" term="nas"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[使用 nginx-openid-connect 模块 让nginx作为网关登录]]></title>
        <id>https://www.foldspace.cn/blog/使用 nginx-openid-connect 模块 让nginx作为网关登录</id>
        <link href="https://www.foldspace.cn/blog/使用 nginx-openid-connect 模块 让nginx作为网关登录"/>
        <updated>2024-07-30T18:05:00.000Z</updated>
        <summary type="html"><![CDATA[什么是 openid]]></summary>
        <content type="html"><![CDATA[<h2 class="anchor anchorWithStickyNavbar_LWe7" id="什么是-openid">什么是 openid<a href="https://www.foldspace.cn/blog/%E4%BD%BF%E7%94%A8%20nginx-openid-connect%20%E6%A8%A1%E5%9D%97%20%E8%AE%A9nginx%E4%BD%9C%E4%B8%BA%E7%BD%91%E5%85%B3%E7%99%BB%E5%BD%95#%E4%BB%80%E4%B9%88%E6%98%AF-openid" class="hash-link" aria-label="Direct link to 什么是 openid" title="Direct link to 什么是 openid">​</a></h2>
<h2></h2>
<h1>详细</h1>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="openid-配置部分">openid 配置部分<a href="https://www.foldspace.cn/blog/%E4%BD%BF%E7%94%A8%20nginx-openid-connect%20%E6%A8%A1%E5%9D%97%20%E8%AE%A9nginx%E4%BD%9C%E4%B8%BA%E7%BD%91%E5%85%B3%E7%99%BB%E5%BD%95#openid-%E9%85%8D%E7%BD%AE%E9%83%A8%E5%88%86" class="hash-link" aria-label="Direct link to openid 配置部分" title="Direct link to openid 配置部分">​</a></h2>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="什么是-well-knownjwks">什么是 <code>.well-known/jwks</code><a href="https://www.foldspace.cn/blog/%E4%BD%BF%E7%94%A8%20nginx-openid-connect%20%E6%A8%A1%E5%9D%97%20%E8%AE%A9nginx%E4%BD%9C%E4%B8%BA%E7%BD%91%E5%85%B3%E7%99%BB%E5%BD%95#%E4%BB%80%E4%B9%88%E6%98%AF-well-knownjwks" class="hash-link" aria-label="Direct link to 什么是-well-knownjwks" title="Direct link to 什么是-well-knownjwks">​</a></h3>
<p><code>.well-known/jwks</code> 是一个标准的 URI 路径，用于在 Web 服务器上公开 JSON Web Key Set（JWKS），以便其他应用程序可以使用它们来验证令牌的签名。</p>
<p>JSON Web Key Set（JWKS）是一种包含公钥或证书的 JSON 格式文件，用于在 OAuth 2.0 和 OpenID Connect 等身份验证和授权协议中进行令牌签名验证。通过公开 JWKS，应用程序可以获取到用于验证签名的公钥，从而验证来自认证服务器签发的令牌的合法性。</p>
<p>在 OAuth 2.0 和 OpenID Connect 中，认证服务器通常会使用非对称加密算法生成令牌的签名，并将公钥或证书存储在 JWKS 中。其他应用程序可以通过获取 JWKS 中的公钥来验证令牌的签名，确保令牌的真实性和完整性。</p>
<p>因此，当一个应用程序需要验证来自认证服务器签发的令牌时，它可以通过访问 <code>.well-known/jwks</code> 路径来获取 JWKS，并使用其中的公钥来验证令牌的签名。这有助于确保令牌的安全性和有效性。</p>
<h1>配置</h1>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="启动js支持">启动js支持<a href="https://www.foldspace.cn/blog/%E4%BD%BF%E7%94%A8%20nginx-openid-connect%20%E6%A8%A1%E5%9D%97%20%E8%AE%A9nginx%E4%BD%9C%E4%B8%BA%E7%BD%91%E5%85%B3%E7%99%BB%E5%BD%95#%E5%90%AF%E5%8A%A8js%E6%94%AF%E6%8C%81" class="hash-link" aria-label="Direct link to 启动js支持" title="Direct link to 启动js支持">​</a></h2>
<p>需要 <code>ngx_http_js_module.so</code></p>
<p>在开始在研究</p>
<ol>
<li><a href="https://github.com/nginx/njs" target="_blank" rel="noopener noreferrer">https://github.com/nginx/njs</a></li>
<li><a href="https://pkgs.alpinelinux.org/package/edge/main/ppc64le/nginx-mod-http-js" target="_blank" rel="noopener noreferrer">https://pkgs.alpinelinux.org/package/edge/main/ppc64le/nginx-mod-http-js</a>
和
<a href="https://casdoor.org/zh/docs/integration/C++/Nginx/" target="_blank" rel="noopener noreferrer">https://casdoor.org/zh/docs/integration/C++/Nginx/</a>
<a href="https://casdoor.org/zh/docs/integration/C++/NginxCommunityVersion" target="_blank" rel="noopener noreferrer">https://casdoor.org/zh/docs/integration/C++/NginxCommunityVersion</a></li>
</ol>
<p>感觉纯nginx 比较复杂, 要么需要 nginx plus 要么配置负载</p>
<p>换 <a href="https://github.com/zmartzone/lua-resty-openidc" target="_blank" rel="noopener noreferrer">https://github.com/zmartzone/lua-resty-openidc</a>
看看</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">RUN luarocks install lua-resty-openidc</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">RUN luarocks install lua-resty-http</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">RUN luarocks install lua-resty-session</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">RUN luarocks install lua-resty-jwt</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>安装目录</p>
<div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">#15 [11/20] RUN luarocks list</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">#15 0.208 </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">#15 0.209 Rocks installed for Lua 5.1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">#15 0.209 ---------------------------</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">#15 0.209 </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">#15 0.209 lua-ffi-zlib</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">#15 0.209    0.6-0 (installed) - /usr/local/openresty/luajit/lib/luarocks/rocks-5.1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">#15 0.209 </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">#15 0.209 lua-resty-auto-ssl</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">#15 0.209    0.13.1-1 (installed) - /usr/local/openresty/luajit/lib/luarocks/rocks-5.1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">#15 0.209 </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">#15 0.209 lua-resty-http</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">#15 0.209    0.17.2-0 (installed) - /usr/local/openresty/luajit/lib/luarocks/rocks-5.1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">#15 0.209 </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">#15 0.209 lua-resty-jwt</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">#15 0.209    0.2.3-0 (installed) - /usr/local/openresty/luajit/lib/luarocks/rocks-5.1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">#15 0.209 </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">#15 0.209 lua-resty-openidc</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">#15 0.209    1.7.6-3 (installed) - /usr/local/openresty/luajit/lib/luarocks/rocks-5.1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">#15 0.209 </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">#15 0.209 lua-resty-openssl</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">#15 0.209    1.5.1-1 (installed) - /usr/local/openresty/luajit/lib/luarocks/rocks-5.1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">#15 0.209 </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">#15 0.209 lua-resty-session</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">#15 0.209    4.0.5-1 (installed) - /usr/local/openresty/luajit/lib/luarocks/rocks-5.1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">#15 0.209    3.10-1 (installed) - /usr/local/openresty/luajit/lib/luarocks/rocks-5.1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">#15 0.209 </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">#15 0.209 shell-games</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">#15 0.209    1.1.0-1 (installed) - /usr/local/openresty/luajit/lib/luarocks/rocks-5.1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">#15 0.209 </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">#15 DONE 0.2s</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<h1>其他</h1>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="在k8s-上使用">在k8s 上使用<a href="https://www.foldspace.cn/blog/%E4%BD%BF%E7%94%A8%20nginx-openid-connect%20%E6%A8%A1%E5%9D%97%20%E8%AE%A9nginx%E4%BD%9C%E4%B8%BA%E7%BD%91%E5%85%B3%E7%99%BB%E5%BD%95#%E5%9C%A8k8s-%E4%B8%8A%E4%BD%BF%E7%94%A8" class="hash-link" aria-label="Direct link to 在k8s 上使用" title="Direct link to 在k8s 上使用">​</a></h2>
<p><a href="https://www.nginx-cn.net/blog/easy-robust-sso-openid-connect-nginx-ingress-controller/" target="_blank" rel="noopener noreferrer">https://www.nginx-cn.net/blog/easy-robust-sso-openid-connect-nginx-ingress-controller/</a></p>
<p>最后发现 js 模块需要</p>
<h1>参考</h1>
<ol>
<li><a href="https://github.com/nginxinc/nginx-openid-connect" target="_blank" rel="noopener noreferrer">https://github.com/nginxinc/nginx-openid-connect</a></li>
<li><a href="https://www.nginx-cn.net/blog/easy-robust-sso-openid-connect-nginx-ingress-controller/" target="_blank" rel="noopener noreferrer">https://www.nginx-cn.net/blog/easy-robust-sso-openid-connect-nginx-ingress-controller/</a></li>
<li><a href="https://pkgs.alpinelinux.org/package/edge/main/ppc64le/nginx-mod-http-js" target="_blank" rel="noopener noreferrer">https://pkgs.alpinelinux.org/package/edge/main/ppc64le/nginx-mod-http-js</a></li>
</ol>]]></content>
        <author>
            <name>timger</name>
            <uri>https://www.zhihu.com/people/timger</uri>
        </author>
        <category label="cobalt" term="cobalt"/>
        <category label="boolbase" term="boolbase"/>
    </entry>
</feed>