FSA全栈行动 FSA全栈行动
首页
  • 移动端文章

    • Android
    • iOS
    • Flutter
  • 学习笔记

    • 《Kotlin快速入门进阶》笔记
    • 《Flutter从入门到实战》笔记
    • 《Flutter复习》笔记
  • 内功心法

    • 《深入浅出设计模式Java版》笔记
前端
后端
  • 产品
  • 代理
  • 提效
  • 逆向
  • 分类
  • 标签
  • 归档
  • LinXunFeng
  • GitLqr

公众号:FSA全栈行动

记录学习过程中的知识
首页
  • 移动端文章

    • Android
    • iOS
    • Flutter
  • 学习笔记

    • 《Kotlin快速入门进阶》笔记
    • 《Flutter从入门到实战》笔记
    • 《Flutter复习》笔记
  • 内功心法

    • 《深入浅出设计模式Java版》笔记
前端
后端
  • 产品
  • 代理
  • 提效
  • 逆向
  • 分类
  • 标签
  • 归档
  • LinXunFeng
  • GitLqr
  • 产品

  • 代理

  • 提升效率工具

    • Jsonnet - json数据模板语言
    • Obsidian - 使用 Share Note 分享笔记并自部署
      • 一、前言
      • 二、Share Note 能做什么
      • 三、基础使用
        • 1、安装插件
        • 2、分享当前笔记
        • 3、复制分享链接
      • 四、关于加密
      • 五、为什么要自部署
      • 六、自部署 note-sx/server
        • 1、准备目录
        • 2、编写 docker-compose.yml
        • 3、编写 .env
        • 4、启动服务
        • 5、配置反向代理
      • 七、让 Obsidian 使用自部署服务
      • 八、验证流程
      • 九、最后
  • 逆向

  • 更多
  • 提升效率工具
LinXunFeng
2026-06-21
目录

Obsidian - 使用 Share Note 分享笔记并自部署

欢迎关注微信公众号:[FSA全栈行动 👋]

# 一、前言

最近在整理 Obsidian 笔记时,经常会遇到一个小需求:想把某一篇笔记快速分享给别人,但又不想为了它单独搭建博客、导出 PDF 或复制到其它平台。

如果只是分享纯文本,复制粘贴当然可以。但 Obsidian 笔记里往往会有这些内容:

  • 图片附件
  • 代码块
  • Callout 提示块
  • 标签、任务列表
  • Dataview 查询结果
  • 当前主题样式和自定义 CSS
  • 笔记之间的内部链接

这时候手动搬运就有点麻烦了,格式容易丢,图片也要重新处理。这里介绍一个插件:Share Note (opens new window)。

它的目标很直接:在 Obsidian 里一键把当前笔记发布成网页,并尽量保持和本地笔记一致的显示效果。

本文主要介绍两部分:

  • Share Note 的基础使用
  • 为什么以及如何使用 note-sx/server (opens new window) 自部署分享服务

# 二、Share Note 能做什么

Share Note 是一个 Obsidian 插件,官方仓库地址如下:

  • GitHub:https://github.com/alangrainger/share-note (opens new window)
  • 默认分享服务:https://share.note.sx (opens new window)
  • 故障排查文档:https://docs.note.sx (opens new window)
  • 服务状态:https://status.note.sx (opens new window)

它比较吸引我的点主要有几个:

  • 一键分享: 在命令面板执行命令即可发布当前笔记
  • 主题支持: 会上传当前主题、主题配置以及自定义 CSS 片段
  • 内容支持比较完整: 图片、代码块、Callout、任务列表、标签等都能正常展示
  • 支持笔记链接: 如果两个笔记都已经分享,分享页面里的内部链接也可以跳转
  • 默认加密: 笔记正文默认加密,解密密钥放在分享链接的 # 后面

当然,这里也要提前说明一点:Share Note 适合分享笔记,不适合当成网盘使用。官方也说明了,加密只作用于笔记正文,附件并不会加密存储。

# 三、基础使用

# 1、安装插件

在 Obsidian 中进入:

设置 -> 第三方插件 -> 社区插件市场

搜索 Share Note 并安装启用即可。

如果你习惯手动安装,也可以从 GitHub 仓库下载插件文件放到:

<VAULT_DIR>/.obsidian/plugins/share-note

这里的 <VAULT_DIR> 指的是你的 Obsidian 仓库根目录,也就是存放笔记文件的那个文件夹,默认在文稿目录下,如:

/Users/lxf/Documents/Obsidian\ Vault

安装完成后重启 Obsidian 或重新加载插件。

# 2、分享当前笔记

打开任意一篇笔记,然后通过命令面板(快捷键 Cmd + P)输入:

Share Note

选择 Share Note: Share current note 命令。

也可以点击笔记右上角的 ⋮ 菜单,选择:

Share note on the web

首次分享时,插件会上传当前主题相关资源。后续再分享其它笔记时,会复用之前上传过的主题文件,所以速度会更快一些。

如果你修改了主题、CSS 片段,或者发现网页展示效果没有同步,可以执行:

Force re-upload of all data for this note

这个命令会强制重新上传当前笔记相关数据。

# 3、复制分享链接

分享成功后,插件会生成一个网页链接。你可以把这个链接发给其他人,对方打开后就能看到这篇笔记。

如果需要重新复制已经分享过的笔记链接,可以执行:

Copy shared note link

需要注意的是,插件会把分享链接写入系统剪贴板,但不会读取剪贴板内容。

# 四、关于加密

Share Note 默认会对笔记正文进行加密。官方示例里,一个加密分享链接大概长这样:

https://share.note.sx/4earajc8#PtC3oQDjDQK9VP7fljmQkLBA/rIMb2tbFsGoG44VdFY

它可以拆成两部分来看:

https://share.note.sx/4earajc8

这是笔记页面地址。

#PtC3oQDjDQK9VP7fljmQkLBA/rIMb2tbFsGoG44VdFY

这是解密密钥。

也就是说,如果只有前半段地址,服务端或访问者都无法直接看到笔记正文。只有拿到完整链接的人,浏览器才能在本地完成解密并展示内容。

这里有几个常用控制方式:

  • 默认情况:笔记正文加密分享
  • 单篇不加密:在 frontmatter 里添加 share_unencrypted 并勾选
  • 默认不加密时,单篇加密:在 frontmatter 里添加 share_encrypted 并勾选

这里的 frontmatter 指的是笔记最开头用 --- 包起来的元信息区域,也就是给这篇笔记添加一些属性。比如想让某一篇笔记不加密分享,可以在笔记最上方添加:

---
share_unencrypted: true
---

如果你使用的是 Obsidian 的属性面板,也可以在笔记顶部添加一个名为 share_unencrypted 的复选框属性,然后把它勾选上。

不过再强调一下:附件不在正文加密范围内。如果笔记里包含敏感图片、文件、截图,请不要直接分享,或者先自行脱敏。

# 五、为什么要自部署

默认情况下,Share Note 会使用官方服务:

https://api.note.sx

对于普通分享来说,这已经足够方便。但如果使用频率比较高,或者笔记内容对可控性要求更高,我会更倾向于自部署一份服务。

主要原因有几个:

  • 域名可控: 分享链接可以使用自己的域名,长期维护更稳定
  • 数据可控: 笔记页面、附件和数据库都落在自己的服务器上
  • 权限可控: 可以关闭新用户注册,只给自己生成 API Key 使用
  • 容量可控: 可以根据自己的服务器和存储情况调整上传大小限制
  • 服务可控: 不依赖公共服务状态,后续迁移、备份也更主动

当然,自部署也不是没有成本。你需要自己准备服务器、域名、HTTPS、备份和安全策略。如果只是偶尔分享几篇公开笔记,直接使用官方服务会更省心。

# 六、自部署 note-sx/server

Share Note 的后端服务也开源了,仓库地址如下:

  • GitHub:https://github.com/note-sx/server (opens new window)

官方提供了 Docker 部署方式,整体流程比较简单。

# 1、准备目录

先在服务器上准备一个目录:

mkdir -p ~/notesx-server
cd ~/notesx-server

目录里后续会放三个核心内容:

notesx-server
├── docker-compose.yml
├── .env
├── db
└── userfiles
  • docker-compose.yml:服务编排配置
  • .env:服务运行参数
  • db:服务数据库目录
  • userfiles:用户上传文件目录

# 2、编写 docker-compose.yml

创建 docker-compose.yml:

services:
  notesx-server:
    image: ghcr.io/note-sx/server:latest
    container_name: notesx-server
    restart: always
    ports:
      - "3000:3000"
    env_file:
      - ".env"
    volumes:
      - ./db:/notesx/db:Z
      - ./userfiles:/notesx/userfiles:Z
    healthcheck:
      test: (wget -qO - http://localhost:3000/v1/ping | grep -q ok) || exit 1
      interval: 30s
      timeout: 5s
      retries: 2
      start_period: 10s

服务默认会监听容器内的 3000 端口,这里映射到宿主机的 3000 端口。

如果你的服务器前面还有 Nginx、Caddy 或其它反向代理,只要把外部域名代理到:

http://127.0.0.1:3000

即可。

# 3、编写 .env

创建 .env:

BASE_WEB_URL=https://note.example.com
CLOUDFLARE_TURNSTILE_KEY=
CLOUDFLARE_TURNSTILE_SECRET=
CLOUDFLARE_ZONE_ID=
CLOUDFLARE_API_KEY=
HASH_SALT=please-change-this-to-a-random-string
FOLDER_PREFIX=0
MAXIMUM_UPLOAD_SIZE_MB=5
ALLOW_NEW_USERS=true

几个需要重点关注的配置如下:

配置 说明
BASE_WEB_URL 对外访问的服务地址,比如 https://note.example.com
HASH_SALT 随机字符串,建议使用足够长的随机值
MAXIMUM_UPLOAD_SIZE_MB 单次上传大小限制,默认示例是 5
FOLDER_PREFIX 是否按文件名前 N 位拆分目录,可选 0、1、2
ALLOW_NEW_USERS 是否允许新用户注册
CLOUDFLARE_TURNSTILE_KEY 如需注册验证码,可配置 Cloudflare Turnstile
CLOUDFLARE_ZONE_ID 如前面接入 Cloudflare,可按需配置

如果只是自己使用,建议首次完成账号/API Key 准备后,把:

ALLOW_NEW_USERS=false

这样可以避免其它人注册新用户。已有用户仍然可以生成新的 API Key。

这里需要注意:ALLOW_NEW_USERS 是通过 .env 注入到容器里的环境变量,修改 .env 后需要让容器重新创建,配置才会真正生效。可以执行:

docker-compose up -d --force-recreate

如果你使用的是新版 Docker Compose 命令,也可以写成:

docker compose up -d --force-recreate

不建议只执行 docker-compose restart,因为它通常只是重启已有容器,不会重新读取并应用新的环境变量。上面的命令会复用 db 和 userfiles 挂载目录,不会清空已分享的数据。

# 4、启动服务

执行:

docker-compose up -d

启动后可以查看容器状态:

docker-compose ps

也可以访问健康检查接口:

curl http://127.0.0.1:3000/v1/ping

正常情况下会返回包含 ok 的结果。

# 5、配置反向代理

如果使用 Nginx,可以参考下面的配置:

server {
    listen 80;
    server_name note.example.com;

    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

生产环境建议再配上 HTTPS。如果你使用的是 Caddy,配置会更简单:

note.example.com {
    reverse_proxy 127.0.0.1:3000
}

# 七、让 Obsidian 使用自部署服务

服务部署完成后,还需要让 Share Note 插件请求自己的服务。

根据 note-sx/server 的说明,需要修改当前仓库里的插件配置文件:

<VAULT_DIR>/.obsidian/plugins/share-note/data.json

打开后找到默认服务地址相关字段,通常能看到类似下面这样的地址:

https://api.note.sx

把它改成自己的服务器地址即可:

https://note.example.com

实际字段名请以你本地 data.json 里的已有内容为准,不要把其它配置删掉,只替换服务地址即可。

当然,也可以在设置页中找到第三方插件 Share Note,打开 Show advanced options, 修改 Server URL

修改完成后,重新加载插件或重启 Obsidian,让配置生效。

这里还有一个小细节:这个 data.json 位于 .obsidian 目录下,如果你使用 Obsidian Sync、Git 或其它同步方案,它会跟随你的普通同步流程同步到其它设备。也就是说,多设备场景下不需要每台机器都手动配置一遍。

# 八、验证流程

最后可以按下面这个流程验证一下:

  1. 在 Obsidian 新建一篇测试笔记
  2. 插入一张图片、一个代码块
  3. 执行命令 Share Note: Share current note
  4. 打开生成的分享链接
  5. 确认页面域名是自己的 BASE_WEB_URL
  6. 确认图片、代码块、主题样式都能正常展示
  7. 修改笔记内容后重新分享,确认页面内容会更新

如果访问失败,可以优先检查这几个地方:

  • docker-compose ps 中容器是否正常运行
  • curl http://127.0.0.1:3000/v1/ping 是否返回 ok
  • 反向代理是否正确转发到 3000 端口
  • BASE_WEB_URL 是否和外部访问域名一致
  • data.json 中插件服务地址是否已经改成自部署地址
  • 修改配置后是否已经重启 Obsidian 或重新加载插件

# 九、最后

整体体验下来,Share Note 比较适合这类场景:

  • 临时分享一篇格式完整的 Obsidian 笔记
  • 给同事或朋友发一份技术记录、排查过程、会议纪要
  • 不想为单篇内容单独搭建博客,但又希望展示效果比纯文本更好
  • 对分享域名、数据落点、注册权限有要求,所以选择自部署

如果你只是偶尔分享公开内容,直接使用官方服务就很方便;如果你和我一样,更在意长期可控、域名统一和数据落点,那就可以考虑把 note-sx/server (opens new window) 部署到自己的服务器上。

本篇到此结束,希望对你有帮助~

#Obsidian#Share Note#Docker
上次更新: 2026/06/21, 15:15:23
Jsonnet - json数据模板语言
逆向 - 用IDA破解adb时间限制

← Jsonnet - json数据模板语言 逆向 - 用IDA破解adb时间限制→

最近更新
01
AI - Antigravity 不认全局 skills 怎么办?
03-02
02
AI - 通过 Docker 来安装与访问 OpenClaw
02-02
03
FlutterEye - 发现你手机里的 Flutter 应用
01-18
更多文章>
Theme by Vdoing | Copyright © 2020-2026 FSA全栈行动
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×