w

PicGo-Core 对接自建 Lsky Pro 图床笔记

PicGo-Core 对接自建 Lsky Pro 图床笔记

适用:Typora / VS Code / PicList 等编辑器,通过 PicGo-Core 自动上传图片到自建 Lsky Pro
前提:Lsky Pro 已部署完成并可访问(如 <code>https://xxx.yidacp.com:xxxx</code>)

一、确认 Lsky 版本(决定 Token 获取方式)

版本 判断方法 Token 获取
V2(halcyonazure 镜像拉取的开源版最新代码 = V2.1) 后台有「接口」菜单,提到 Bearer Token / <code>/api/v1/tokens</code> 需 POST 接口换取
V1 无上述菜单 个人设置页直接复制
![image.png 1200](https://lsky.yidacp.com:1015/JLZGd9.webp)

开源版 V2.1 后已停止维护,但 API 完全可用。V1/V2 插件与配置不通用,别混用。

二、获取 V2 Token(关键)

① 开启 API:Lsky 后台 → 「接口」菜单能看到说明即已开启;
没有则去「系统设置 → 其他配置」打开接口开关。

② 换取 Token(POST,不是 GET;用 GET 打开会失败,正常):

方法 1:JSON 文件法(cmd / PowerShell 通用,推荐,100% 避开引号坑)

新建 <code>token.json</code>,内容一行:

{&quot;email&quot;:&quot;你的邮箱&quot;,&quot;password&quot;:&quot;你的密码&quot;}

执行:

curl.exe -X POST &quot;https://你的域名:端口/api/v1/tokens&quot; -H &quot;Accept: application/json&quot; -H &quot;Content-Type: application/json&quot; -d @D:\路径\token.json

方法 2:PowerShell 原生(无引号烦恼,自动解析)

$body = @{ email = &#039;你的邮箱&#039;; password = &#039;你的密码&#039; } | ConvertTo-Json
$res = Invoke-RestMethod -Uri &quot;https://你的域名:端口/api/v1/tokens&quot; &#x60;
    -Method Post -Headers @{ &#039;Accept&#039; = &#039;application/json&#039; } &#x60;
    -ContentType &#039;application/json&#039; -Body $body
$res.data.token

方法 3:cmd 反斜杠转义

curl.exe -X POST &quot;https://你的域名:端口/api/v1/tokens&quot; -H &quot;Accept: application/json&quot; -H &quot;Content-Type: application/json&quot; -d &quot;{\&quot;email\&quot;:\&quot;你的邮箱\&quot;,\&quot;password\&quot;:\&quot;你的密码\&quot;}&quot;

成功返回:

{&quot;status&quot;:true,&quot;message&quot;:&quot;success&quot;,&quot;data&quot;:{&quot;token&quot;:&quot;1|aBcDeFgHiJkLmNoPqRsTuVwXyZ...&quot;}}

<code>1|aBcDeFg…</code>(格式 <code>数字|一串字符</code>)即 Token。

image.png|1200

⚠️ Windows 两个大坑

  • PowerShell 里 <code>curl</code> 是 <code>Invoke-WebRequest</code> 的别名,<code>-H</code> 会被当 <code>-Headers</code>(要求哈希表)→ 报「无法将 String 转换为 IDictionary」。改用 <code>curl.exe</code>方法 2
  • cmd 不认识单引号,<code>-d '{"…":…}'</code> 会把单引号一并发出去 → JSON 非法 → 返回 <code>email 不能为空</code>。改用双引号+转义,或直接用 JSON 文件法。
  • 自签证书加 <code>-k</code>(curl.exe)或忽略证书错误(插件里开 <code>ignoreCertErr</code>)。

三、安装 PicGo-Core(两条路线)

路线 A:全局 npm 安装(推荐,命令行可自由测试)

npm install picgo -g
picgo -v            # 出版本号即成功

国内慢先切源:<code>npm config set registry https://registry.npmmirror.com</code>

路线 B:Typora 内置下载(省事,免 Node)

Typora → 文件 → 偏好设置 → 图像 → 上传服务选 PicGo-Core (command line) →「下载或更新」。

⚠️ 路线 B 装插件必须 cd 到 Typora 的 picgo 目录再执行 install,否则插件装到全局,Typora 找不到。

  • Windows:<code>C:\Users\用户名\AppData\Roaming\Typora\picgo\win64</code>
  • macOS:<code>~/Library/Application Support/abnerworks.Typora/picgo/mac/</code>

四、安装 Lsky 上传插件

picgo install lsky-uploader     # 推荐:自动处理 Bearer,兼容 V2 最新 API
# 或
picgo install lankong           # 备选:需手动加 Bearer 前缀

看到 <code>install success</code> 即成功。

五、配置图床

方式 1:交互式(推荐,自动生成配置,不用记字段名)

picgo set uploader      # 方向键选中 lsky-uploader / lankong,按提示填
picgo use uploader      # 再选一次,设为默认图床

image.png|1200

提示项 填什么
服务器域名 / server <code>https://你的域名:端口</code>(不带 /api/v1,不以 / 结尾
Token 见下表(Bearer 规则不同!)
策略ID / strategyId 留空(用默认存储策略)
相册ID / albumId 留空
permission public / 公开(否则外链打不开)
ignoreCertErr 关闭;自签/证书过期报 <code>certificate has expired</code> 再打开

Token 前缀规则(极易错)

插件 怎么填
<code>lsky-uploader</code> <code>1 | aBcDeFg…</code>(不加 Bearer)
<code>lankong</code> <code>Bearer 1 | aBcDeFg…</code>(Bearer + 空格

方式 2:手写 <code>~/.picgo/config.json</code>

路径:Windows <code>C:\Users\用户名\.picgo\config.json</code>;Linux/macOS <code>~/.picgo/config.json</code>

以 <code>lankong</code> 为例:

{
  &quot;picBed&quot;: {
    &quot;current&quot;: &quot;lankong&quot;,
    &quot;uploader&quot;: &quot;lankong&quot;,
    &quot;transformer&quot;: &quot;path&quot;,
    &quot;lankong&quot;: {
      &quot;lskyProVersion&quot;: &quot;V2&quot;,
      &quot;server&quot;: &quot;https://你的域名:端口&quot;,
      &quot;token&quot;: &quot;Bearer 1|这里换成你的token&quot;,
      &quot;strategyId&quot;: &quot;&quot;,
      &quot;albumId&quot;: &quot;&quot;,
      &quot;permission&quot;: &quot;public&quot;,
      &quot;ignoreCertErr&quot;: false,
      &quot;syncDelete&quot;: false
    }
  },
  &quot;picgoPlugins&quot;: {
    &quot;picgo-plugin-lankong&quot;: true
  }
}

自签证书把 <code>ignoreCertErr</code> 改为 <code>true</code>。

六、测试上传

picgo upload D:\路径\test.png

返回 <code>https://你的域名:端口/i/2026/…png</code> 即成功。

七、接入 Typora(自动上传)

Typora → 文件 → 偏好设置 → 图像

  1. 「插入图片时…」选 上传图片
  2. 「上传服务」选 PicGo-Core (command line)
  3. 「PicGo 路径」:
    • 路线 A(全局 npm):Windows 填 <code>C:\Users\用户名\AppData\Roaming\npm\picgo.cmd</code>(是 .cmd 不是 .exe);Mac/Linux 用 <code>which picgo</code> 查
    • 路线 B(Typora 内置):留空,Typora 自动识别
  4. 点「验证图片上传选项」测试,返回图片 URL 即成功

之后粘贴/拖入图片,Typora 自动上传并替换为图床外链。
image.png|1200|1200

八、必做检查

Lsky 后台 → 存储策略 → 默认本地策略 → 编辑 → 访问地址 = <code>https://你的域名:端口</code>。
PicGo 返回的图片链接前缀来源于此,填错会「上传成功但图片裂图」。

image.png|1200

九、排错速查表

报错 原因 / 解决
<code>email 不能为空</code> body 不是合法 JSON(cmd 单引号被当数据)→ 用 JSON 文件法
<code>无法绑定参数"Headers"</code> PowerShell 里 <code>curl</code> 是 <code>Invoke-WebRequest</code> 别名 → 用 <code>curl.exe</code> 或 <code>Invoke-RestMethod</code>
<code>资源解析服务请求失败</code> 用 GET 访问 <code>/api/v1/tokens</code> → 该接口只接受 POST
<code>Connection refused</code> / 超时 server 填错(带 /api/v1 或带 / 结尾)或 Lsky 容器没起来
<code>401 Unauthorized</code> Token 无效:<code>lsky-uploader</code> 别加 Bearer;<code>lankong</code> 必须加 <code>Bearer </code>(有空格)
<code>Too Many Attempts</code> 密码错太多次被限流,等几分钟;确认是 Lsky 管理员账号,不是群晖 DSM 账号
上传成功但图片 404/裂图 存储策略「访问地址」未改成实际地址
<code>certificate has expired</code> <code>ignoreCertErr</code> 设 <code>true</code> / 开「忽略证书错误」
Typora 找不到 picgo 路线 A 填完整 <code>picgo.cmd</code> 路径;路线 B 要在 Typora 的 picgo 目录里装插件
外链要登录/不公开 permission 设为 <code>public</code>

十、核心四句话

  1. V2 的 Token 要 POST <code>/api/v1/tokens</code> 换,格式 <code>数字|字符</code>
  2. <code>lsky-uploader</code> 不加 Bearer,<code>lankong</code> 必须加 <code>Bearer </code>(带空格)
  3. server 填根地址,不带 <code>/api/v1</code>、不以 <code>/</code> 结尾
  4. 装完改存储策略访问地址,否则图片裂图