[Feature] 添加 Fast Note Sync Service (FNS) 到应用商店
### 1Panel Version
2.2.3
### Please describe your needs or suggestions for improvements
<h3 class="font-semibold my-3 text-base" style="box-sizing: border-box; border-width: 0px; border-style: solid; border-color: var(--border); border-image: initial; margin: 0px; padding: 0px; outline-color: color-mix(in oklab,var(--ring)50%,transparent); font-size: var(--text-base); font-weight: var(--font-weight-semibold); margin-block: calc(var(--spacing)*3); line-height: var(--tw-leading,var(--text-base--line-height)); --tw-font-weight: var(--font-weight-semibold); color: rgb(237, 238, 240); font-family: "IBM Plex Sans", Geist, "Avenir Next", Inter, ui-sans-serif, system-ui, -apple-system, "system-ui", "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Apple Color Emoji", "Segoe UI Emoji"; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: oklab(0.178515 0.00112827 -0.00390793 / 0.85); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;">功能请求</h3><p class="my-3 leading-relaxed" style="box-sizing: border-box; border-width: 0px; border-style: solid; border-color: var(--border); border-image: initial; margin: 0px; padding: 0px; outline-color: color-mix(in oklab,var(--ring)50%,transparent); margin-block: calc(var(--spacing)*3); --tw-leading: var(--leading-relaxed); line-height: var(--leading-relaxed); color: rgb(237, 238, 240); font-family: "IBM Plex Sans", Geist, "Avenir Next", Inter, ui-sans-serif, system-ui, -apple-system, "system-ui", "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Apple Color Emoji", "Segoe UI Emoji"; font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: oklab(0.178515 0.00112827 -0.00390793 / 0.85); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;">希望1Panel应用商店能添加<span> </span><strong style="box-sizing: border-box; border-width: 0px; border-style: solid; border-color: var(--border); border-image: initial; margin: 0px; padding: 0px; outline-color: color-mix(in oklab,var(--ring)50%,transparent); font-weight: bolder;">Fast Note Sync Service (FNS)</strong><span> </span>—— 一个高性能的 Obsidian 笔记同步服务。</p><h3 class="font-semibold my-3 text-base" style="box-sizing: border-box; border-width: 0px; border-style: solid; border-color: var(--border); border-image: initial; margin: 0px; padding: 0px; outline-color: color-mix(in oklab,var(--ring)50%,transparent); font-size: var(--text-base); font-weight: var(--font-weight-semibold); margin-block: calc(var(--spacing)*3); line-height: var(--tw-leading,var(--text-base--line-height)); --tw-font-weight: var(--font-weight-semibold); color: rgb(237, 238, 240); font-family: "IBM Plex Sans", Geist, "Avenir Next", Inter, ui-sans-serif, system-ui, -apple-system, "system-ui", "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Apple Color Emoji", "Segoe UI Emoji"; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: oklab(0.178515 0.00112827 -0.00390793 / 0.85); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;">项目简介</h3><p class="my-3 leading-relaxed" style="box-sizing: border-box; border-width: 0px; border-style: solid; border-color: var(--border); border-image: initial; margin: 0px; padding: 0px; outline-color: color-mix(in oklab,var(--ring)50%,transparent); margin-block: calc(var(--spacing)*3); --tw-leading: var(--leading-relaxed); line-height: var(--leading-relaxed); color: rgb(237, 238, 240); font-family: "IBM Plex Sans", Geist, "Avenir Next", Inter, ui-sans-serif, system-ui, -apple-system, "system-ui", "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Apple Color Emoji", "Segoe UI Emoji"; font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: oklab(0.178515 0.00112827 -0.00390793 / 0.85); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;">FNS 是基于 Golang + WebSocket + SQLite/MySQL/PostgreSQL 构建的笔记同步平台,支持:</p><ul class="my-3 pl-6 list-disc" style="box-sizing: border-box; border-width: 0px; border-style: solid; border-color: var(--border); border-image: initial; margin: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: calc(var(--spacing)*6); outline-color: color-mix(in oklab,var(--ring)50%,transparent); list-style: disc; margin-block: calc(var(--spacing)*3); color: rgb(237, 238, 240); font-family: "IBM Plex Sans", Geist, "Avenir Next", Inter, ui-sans-serif, system-ui, -apple-system, "system-ui", "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Apple Color Emoji", "Segoe UI Emoji"; font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: oklab(0.178515 0.00112827 -0.00390793 / 0.85); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;"><li class="my-1" style="box-sizing: border-box; border-width: 0px; border-style: solid; border-color: var(--border); border-image: initial; margin: 0px; padding: 0px; outline-color: color-mix(in oklab,var(--ring)50%,transparent); margin-block: calc(var(--spacing)*1);"><strong style="box-sizing: border-box; border-width: 0px; border-style: solid; border-color: var(--border); border-image: initial; margin: 0px; padding: 0px; outline-color: color-mix(in oklab,var(--ring)50%,transparent); font-weight: bolder;">多设备实时同步</strong>:毫秒级同步笔记到所有在线设备</li><li class="my-1" style="box-sizing: border-box; border-width: 0px; border-style: solid; border-color: var(--border); border-image: initial; margin: 0px; padding: 0px; outline-color: color-mix(in oklab,var(--ring)50%,transparent); margin-block: calc(var(--spacing)*1);"><strong style="box-sizing: border-box; border-width: 0px; border-style: solid; border-color: var(--border); border-image: initial; margin: 0px; padding: 0px; outline-color: color-mix(in oklab,var(--ring)50%,transparent); font-weight: bolder;">REST API</strong>:标准 RESTful 接口,支持程序化访问</li><li class="my-1" style="box-sizing: border-box; border-width: 0px; border-style: solid; border-color: var(--border); border-image: initial; margin: 0px; padding: 0px; outline-color: color-mix(in oklab,var(--ring)50%,transparent); margin-block: calc(var(--spacing)*1);"><strong style="box-sizing: border-box; border-width: 0px; border-style: solid; border-color: var(--border); border-image: initial; margin: 0px; padding: 0px; outline-color: color-mix(in oklab,var(--ring)50%,transparent); font-weight: bolder;">MCP 支持</strong>:原生支持 Model Context Protocol,可与 AI 客户端集成</li><li class="my-1" style="box-sizing: border-box; border-width: 0px; border-style: solid; border-color: var(--border); border-image: initial; margin: 0px; padding: 0px; outline-color: color-mix(in oklab,var(--ring)50%,transparent); margin-block: calc(var(--spacing)*1);"><strong style="box-sizing: border-box; border-width: 0px; border-style: solid; border-color: var(--border); border-image: initial; margin: 0px; padding: 0px; outline-color: color-mix(in oklab,var(--ring)50%,transparent); font-weight: bolder;">Web 管理面板</strong>:内置现代化管理界面</li><li class="my-1" style="box-sizing: border-box; border-width: 0px; border-style: solid; border-color: var(--border); border-image: initial; margin: 0px; padding: 0px; outline-color: color-mix(in oklab,var(--ring)50%,transparent); margin-block: calc(var(--spacing)*1);"><strong style="box-sizing: border-box; border-width: 0px; border-style: solid; border-color: var(--border); border-image: initial; margin: 0px; padding: 0px; outline-color: color-mix(in oklab,var(--ring)50%,transparent); font-weight: bolder;">附件同步</strong>:支持图片、视频等文件同步</li><li class="my-1" style="box-sizing: border-box; border-width: 0px; border-style: solid; border-color: var(--border); border-image: initial; margin: 0px; padding: 0px; outline-color: color-mix(in oklab,var(--ring)50%,transparent); margin-block: calc(var(--spacing)*1);"><strong style="box-sizing: border-box; border-width: 0px; border-style: solid; border-color: var(--border); border-image: initial; margin: 0px; padding: 0px; outline-color: color-mix(in oklab,var(--ring)50%,transparent); font-weight: bolder;">笔记历史</strong>:查看历史版本</li><li class="my-1" style="box-sizing: border-box; border-width: 0px; border-style: solid; border-color: var(--border); border-image: initial; margin: 0px; padding: 0px; outline-color: color-mix(in oklab,var(--ring)50%,transparent); margin-block: calc(var(--spacing)*1);"><strong style="box-sizing: border-box; border-width: 0px; border-style: solid; border-color: var(--border); border-image: initial; margin: 0px; padding: 0px; outline-color: color-mix(in oklab,var(--ring)50%,transparent); font-weight: bolder;">回收站</strong>:删除的笔记自动进入回收站</li><li class="my-1" style="box-sizing: border-box; border-width: 0px; border-style: solid; border-color: var(--border); border-image: initial; margin: 0px; padding: 0px; outline-color: color-mix(in oklab,var(--ring)50%,transparent); margin-block: calc(var(--spacing)*1);"><strong style="box-sizing: border-box; border-width: 0px; border-style: solid; border-color: var(--border); border-image: initial; margin: 0px; padding: 0px; outline-color: color-mix(in oklab,var(--ring)50%,transparent); font-weight: bolder;">离线同步</strong>:支持离线编辑自动合并</li><li class="my-1" style="box-sizing: border-box; border-width: 0px; border-style: solid; border-color: var(--border); border-image: initial; margin: 0px; padding: 0px; outline-color: color-mix(in oklab,var(--ring)50%,transparent); margin-block: calc(var(--spacing)*1);"><strong style="box-sizing: border-box; border-width: 0px; border-style: solid; border-color: var(--border); border-image: initial; margin: 0px; padding: 0px; outline-color: color-mix(in oklab,var(--ring)50%,transparent); font-weight: bolder;">多存储备份</strong>:支持 S3、OSS、R2、WebDAV 等</li></ul><h3 class="font-semibold my-3 text-base" style="box-sizing: border-box; border-width: 0px; border-style: solid; border-color: var(--border); border-image: initial; margin: 0px; padding: 0px; outline-color: color-mix(in oklab,var(--ring)50%,transparent); font-size: var(--text-base); font-weight: var(--font-weight-semibold); margin-block: calc(var(--spacing)*3); line-height: var(--tw-leading,var(--text-base--line-height)); --tw-font-weight: var(--font-weight-semibold); color: rgb(237, 238, 240); font-family: "IBM Plex Sans", Geist, "Avenir Next", Inter, ui-sans-serif, system-ui, -apple-system, "system-ui", "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Apple Color Emoji", "Segoe UI Emoji"; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: oklab(0.178515 0.00112827 -0.00390793 / 0.85); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;">项目信息</h3>
项目 | 信息
-- | --
GitHub | https://github.com/haierkeys/fast-note-sync-service
许可证 | Apache 2.0
语言 | Go (91.4%)
Docker 镜像 | haierkeys/fast-note-sync-service:latest
默认端口 | 9000
配置文件 | config.yaml
<h3 class="font-semibold my-3 text-base" style="box-sizing: border-box; border-width: 0px; border-style: solid; border-color: var(--border); border-image: initial; margin: 0px; padding: 0px; outline-color: color-mix(in oklab,var(--ring)50%,transparent); font-size: var(--text-base); font-weight: var(--font-weight-semibold); margin-block: calc(var(--spacing)*3); line-height: var(--tw-leading,var(--text-base--line-height)); --tw-font-weight: var(--font-weight-semibold); color: rgb(237, 238, 240); font-family: "IBM Plex Sans", Geist, "Avenir Next", Inter, ui-sans-serif, system-ui, -apple-system, "system-ui", "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Apple Color Emoji", "Segoe UI Emoji"; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: oklab(0.178515 0.00112827 -0.00390793 / 0.85); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;">Docker 部署命令</h3><div data-openwork-shiki="true" class="my-4 overflow-x-auto rounded-lg border border-border/70 bg-gray-1/80 p-4 text-xs leading-6" style="box-sizing: border-box; border-width: 1px; border-style: var(--tw-border-style); border-color: color-mix(in oklab,var(--border)70%,transparent); border-image: initial; margin: 0px; padding: calc(var(--spacing)*4); outline-color: color-mix(in oklab,var(--ring)50%,transparent); margin-block: calc(var(--spacing)*4); overflow-x: auto; border-radius: var(--radius); background-color: color-mix(in oklab,var(--gray-1)80%,transparent); font-size: var(--text-xs); line-height: calc(var(--spacing)*6); --tw-leading: calc(var(--spacing)*6); color: rgb(237, 238, 240); font-family: "IBM Plex Sans", Geist, "Avenir Next", Inter, ui-sans-serif, system-ui, -apple-system, "system-ui", "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Apple Color Emoji", "Segoe UI Emoji"; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;"><pre class="shiki github-light" tabindex="0" style="box-sizing: border-box; border-width: 0px; border-style: solid; border-color: var(--border); border-image: initial; margin: 0px; padding: 0px; outline-color: color-mix(in oklab,var(--ring)50%,transparent); font-family: var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace); font-feature-settings: var(--default-mono-font-feature-settings,normal); font-variation-settings: var(--default-mono-font-variation-settings,normal); font-size: 1em; background-color: rgb(255, 255, 255); color: rgb(36, 41, 46);"><code style="box-sizing: border-box; border-width: 0px; border-style: solid; border-color: var(--border); border-image: initial; margin: 0px; padding: 0px; outline-color: color-mix(in oklab,var(--ring)50%,transparent); font-family: var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace); font-feature-settings: var(--default-mono-font-feature-settings,normal); font-variation-settings: var(--default-mono-font-variation-settings,normal); font-size: 1em;"><span class="line" style="box-sizing: border-box; border-width: 0px; border-style: solid; border-color: var(--border); border-image: initial; margin: 0px; padding: 0px; outline-color: color-mix(in oklab,var(--ring)50%,transparent);"><span style="box-sizing: border-box; border-width: 0px; border-style: solid; border-color: var(--border); border-image: initial; margin: 0px; padding: 0px; outline-color: color-mix(in oklab,var(--ring)50%,transparent); color: rgb(111, 66, 193);">docker</span><span style="box-sizing: border-box; border-width: 0px; border-style: solid; border-color: var(--border); border-image: initial; margin: 0px; padding: 0px; outline-color: color-mix(in oklab,var(--ring)50%,transparent); color: rgb(3, 47, 98);"> run</span><span style="box-sizing: border-box; border-width: 0px; border-style: solid; border-color: var(--border); border-image: initial; margin: 0px; padding: 0px; outline-color: color-mix(in oklab,var(--ring)50%,transparent); color: rgb(0, 92, 197);"> -tid</span><span style="box-sizing: border-box; border-width: 0px; border-style: solid; border-color: var(--border); border-image: initial; margin: 0px; padding: 0px; outline-color: color-mix(in oklab,var(--ring)50%,transparent); color: rgb(0, 92, 197);"> --name</span><span style="box-sizing: border-box; border-width: 0px; border-style: solid; border-color: var(--border); border-image: initial; margin: 0px; padding: 0px; outline-color: color-mix(in oklab,var(--ring)50%,transparent); color: rgb(3, 47, 98);"> fast-note-sync-service</span><span style="box-sizing: border-box; border-width: 0px; border-style: solid; border-color: var(--border); border-image: initial; margin: 0px; padding: 0px; outline-color: color-mix(in oklab,var(--ring)50%,transparent); color: rgb(0, 92, 197);"> \</span></span>
<span class="line" style="box-sizing: border-box; border-width: 0px; border-style: solid; border-color: var(--border); border-image: initial; margin: 0px; padding: 0px; outline-color: color-mix(in oklab,var(--ring)50%,transparent);"><span style="box-sizing: border-box; border-width: 0px; border-style: solid; border-color: var(--border); border-image: initial; margin: 0px; padding: 0px; outline-color: color-mix(in oklab,var(--ring)50%,transparent); color: rgb(0, 92, 197);"> -p</span><span style="box-sizing: border-box; border-width: 0px; border-style: solid; border-color: var(--border); border-image: initial; margin: 0px; padding: 0px; outline-color: color-mix(in oklab,var(--ring)50%,transparent); color: rgb(3, 47, 98);"> 9000:9000</span><span style="box-sizing: border-box; border-width: 0px; border-style: solid; border-color: var(--border); border-image: initial; margin: 0px; padding: 0px; outline-color: color-mix(in oklab,var(--ring)50%,transparent); color: rgb(0, 92, 197);"> \</span></span>
<span class="line" style="box-sizing: border-box; border-width: 0px; border-style: solid; border-color: var(--border); border-image: initial; margin: 0px; padding: 0px; outline-color: color-mix(in oklab,var(--ring)50%,transparent);"><span style="box-sizing: border-box; border-width: 0px; border-style: solid; border-color: var(--border); border-image: initial; margin: 0px; padding: 0px; outline-color: color-mix(in oklab,var(--ring)50%,transparent); color: rgb(0, 92, 197);"> -v</span><span style="box-sizing: border-box; border-width: 0px; border-style: solid; border-color: var(--border); border-image: initial; margin: 0px; padding: 0px; outline-color: color-mix(in oklab,var(--ring)50%,transparent); color: rgb(3, 47, 98);"> /data/fast-note-sync/storage/:/fast-note-sync/storage/</span><span style="box-sizing: border-box; border-width: 0px; border-style: solid; border-color: var(--border); border-image: initial; margin: 0px; padding: 0px; outline-color: color-mix(in oklab,var(--ring)50%,transparent); color: rgb(0, 92, 197);"> \</span></span>
<span class="line" style="box-sizing: border-box; border-width: 0px; border-style: solid; border-color: var(--border); border-image: initial; margin: 0px; padding: 0px; outline-color: color-mix(in oklab,var(--ring)50%,transparent);"><span style="box-sizing: border-box; border-width: 0px; border-style: solid; border-color: var(--border); border-image: initial; margin: 0px; padding: 0px; outline-color: color-mix(in oklab,var(--ring)50%,transparent); color: rgb(0, 92, 197);"> -v</span><span style="box-sizing: border-box; border-width: 0px; border-style: solid; border-color: var(--border); border-image: initial; margin: 0px; padding: 0px; outline-color: color-mix(in oklab,var(--ring)50%,transparent); color: rgb(3, 47, 98);"> /data/fast-note-sync/config/:/fast-note-sync/config/</span><span style="box-sizing: border-box; border-width: 0px; border-style: solid; border-color: var(--border); border-image: initial; margin: 0px; padding: 0px; outline-color: color-mix(in oklab,var(--ring)50%,transparent); color: rgb(0, 92, 197);"> \</span></span>
<span class="line" style="box-sizing: border-box; border-width: 0px; border-style: solid; border-color: var(--border); border-image: initial; margin: 0px; padding: 0px; outline-color: color-mix(in oklab,var(--ring)50%,transparent);"><span style="box-sizing: border-box; border-width: 0px; border-style: solid; border-color: var(--border); border-image: initial; margin: 0px; padding: 0px; outline-color: color-mix(in oklab,var(--ring)50%,transparent); color: rgb(3, 47, 98);"> haierkeys/fast-note-sync-service:latest</span></span></code></pre></div><h3 class="font-semibold my-3 text-base" style="box-sizing: border-box; border-width: 0px; border-style: solid; border-color: var(--border); border-image: initial; margin: 0px; padding: 0px; outline-color: color-mix(in oklab,var(--ring)50%,transparent); font-size: var(--text-base); font-weight: var(--font-weight-semibold); margin-block: calc(var(--spacing)*3); line-height: var(--tw-leading,var(--text-base--line-height)); --tw-font-weight: var(--font-weight-semibold); color: rgb(237, 238, 240); font-family: "IBM Plex Sans", Geist, "Avenir Next", Inter, ui-sans-serif, system-ui, -apple-system, "system-ui", "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Apple Color Emoji", "Segoe UI Emoji"; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: oklab(0.178515 0.00112827 -0.00390793 / 0.85); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;">为什么值得收录</h3><ol class="my-3 pl-6 list-decimal" style="box-sizing: border-box; border-width: 0px; border-style: solid; border-color: var(--border); border-image: initial; margin: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: calc(var(--spacing)*6); outline-color: color-mix(in oklab,var(--ring)50%,transparent); list-style: decimal; margin-block: calc(var(--spacing)*3); color: rgb(237, 238, 240); font-family: "IBM Plex Sans", Geist, "Avenir Next", Inter, ui-sans-serif, system-ui, -apple-system, "system-ui", "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Apple Color Emoji", "Segoe UI Emoji"; font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: oklab(0.178515 0.00112827 -0.00390793 / 0.85); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;"><li class="my-1" style="box-sizing: border-box; border-width: 0px; border-style: solid; border-color: var(--border); border-image: initial; margin: 0px; padding: 0px; outline-color: color-mix(in oklab,var(--ring)50%,transparent); margin-block: calc(var(--spacing)*1);"><strong style="box-sizing: border-box; border-width: 0px; border-style: solid; border-color: var(--border); border-image: initial; margin: 0px; padding: 0px; outline-color: color-mix(in oklab,var(--ring)50%,transparent); font-weight: bolder;">活跃项目</strong>:持续更新,已有 1321+ commits</li><li class="my-1" style="box-sizing: border-box; border-width: 0px; border-style: solid; border-color: var(--border); border-image: initial; margin: 0px; padding: 0px; outline-color: color-mix(in oklab,var(--ring)50%,transparent); margin-block: calc(var(--spacing)*1);"><strong style="box-sizing: border-box; border-width: 0px; border-style: solid; border-color: var(--border); border-image: initial; margin: 0px; padding: 0px; outline-color: color-mix(in oklab,var(--ring)50%,transparent); font-weight: bolder;">用户基础</strong>:配套 Obsidian 插件已有大量用户</li><li class="my-1" style="box-sizing: border-box; border-width: 0px; border-style: solid; border-color: var(--border); border-image: initial; margin: 0px; padding: 0px; outline-color: color-mix(in oklab,var(--ring)50%,transparent); margin-block: calc(var(--spacing)*1);"><strong style="box-sizing: border-box; border-width: 0px; border-style: solid; border-color: var(--border); border-image: initial; margin: 0px; padding: 0px; outline-color: color-mix(in oklab,var(--ring)50%,transparent); font-weight: bolder;">官方 Docker 镜像</strong>:直接从 Docker Hub 拉取</li><li class="my-1" style="box-sizing: border-box; border-width: 0px; border-style: solid; border-color: var(--border); border-image: initial; margin: 0px; padding: 0px; outline-color: color-mix(in oklab,var(--ring)50%,transparent); margin-block: calc(var(--spacing)*1);"><strong style="box-sizing: border-box; border-width: 0px; border-style: solid; border-color: var(--border); border-image: initial; margin: 0px; padding: 0px; outline-color: color-mix(in oklab,var(--ring)50%,transparent); font-weight: bolder;">文档完善</strong>:提供完整的 REST API 文档和 OpenAPI 规范</li><li class="my-1" style="box-sizing: border-box; border-width: 0px; border-style: solid; border-color: var(--border); border-image: initial; margin: 0px; padding: 0px; outline-color: color-mix(in oklab,var(--ring)50%,transparent); margin-block: calc(var(--spacing)*1);"><strong style="box-sizing: border-box; border-width: 0px; border-style: solid; border-color: var(--border); border-image: initial; margin: 0px; padding: 0px; outline-color: color-mix(in oklab,var(--ring)50%,transparent); font-weight: bolder;">隐私友好</strong>:自托管方案,数据完全自主可控</li></ol><h3 class="font-semibold my-3 text-base" style="box-sizing: border-box; border-width: 0px; border-style: solid; border-color: var(--border); border-image: initial; margin: 0px; padding: 0px; outline-color: color-mix(in oklab,var(--ring)50%,transparent); font-size: var(--text-base); font-weight: var(--font-weight-semibold); margin-block: calc(var(--spacing)*3); line-height: var(--tw-leading,var(--text-base--line-height)); --tw-font-weight: var(--font-weight-semibold); color: rgb(237, 238, 240); font-family: "IBM Plex Sans", Geist, "Avenir Next", Inter, ui-sans-serif, system-ui, -apple-system, "system-ui", "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Apple Color Emoji", "Segoe UI Emoji"; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: oklab(0.178515 0.00112827 -0.00390793 / 0.85); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;">补充说明</h3><p class="my-3 leading-relaxed" style="box-sizing: border-box; border-width: 0px; border-style: solid; border-color: var(--border); border-image: initial; margin: 0px; padding: 0px; outline-color: color-mix(in oklab,var(--ring)50%,transparent); margin-block: calc(var(--spacing)*3); --tw-leading: var(--leading-relaxed); line-height: var(--leading-relaxed); color: rgb(237, 238, 240); font-family: "IBM Plex Sans", Geist, "Avenir Next", Inter, ui-sans-serif, system-ui, -apple-system, "system-ui", "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Apple Color Emoji", "Segoe UI Emoji"; font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: oklab(0.178515 0.00112827 -0.00390793 / 0.85); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;">FNS 项目还提供了一键安装脚本和 Docker Compose 配置,部署非常简单。项目 README 中有详细的中文文档,适合国内用户使用。</p>
### Please describe the solution you suggest
_No response_
### Additional Information
_No response_
0 条评论