Obsidian仓库图片过多,电脑端、手机端使用时总是多重复同步一堆图片,十分麻烦且不美观。
本文采用兰空图床做主图床,本地webdav做备份,实现通过域名进行访问的方式来解决这个问题。

笔记工具:Obsidian
Custom Attachment LocationImage ConverterObsidian Vault的根目录的assets目录中,自动压缩75%并转换为webp格式,路径使用相对路径。Remotely SaveWebDAV服务: 笔记和图片统一保存在自搭建的WebDAV服务中使用工具如下:
ObsidianObsidian 插件:Image Auto Upload,自动监听剪贴板并调用PicList上传lsky-pro)WebDAV,用作避免单点故障的备份(可选)PicList,多平台图床与云存储管理工具Nginx :反向代理,访问大致路径描述:粘贴图片到Obsidian中,通过Image Auto Upload插件来实现:调用本地 PicList → 上传到 Lsky (WebDAV)→ 得到链接可以直接粘贴。示意图如下

WebDAV 和 兰空图床的图片路径和命名需要保持一致;可以参考的一个docker-compose.yml配置
services:
lsky-pro:
image: coldpig/lskypro-docker:latest
hostname: lsky-pro
container_name: lsky-pro
ports:
- "80:80"
volumes:
- ./tools-data/lsky-pro/data:/var/www/html
restart: unless-stopped
cpus: "1.0"
mem_limit: 2g
memswap_limit: 2g
mysql8:
image: mysql:8.0.32
container_name: mysql8
restart: always
environment:
MYSQL_USER: z7ping
MYSQL_PASSWORD: '用户密码记得改'
MYSQL_ROOT_PASSWORD: 'root密码记得改'
ports:
- "33306:3306"
volumes:
- ./tools-data/mysql8:/var/lib/mysql安装完成之后,访问IP:80端口
创建数据库脚本示例:
CREATE DATABASE IF NOT EXISTS `lsky-pro-db` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
GRANT ALL PRIVILEGES ON `lsky-pro-db`.* TO 'z7ping'@'%';
FLUSH PRIVILEGES;为了确保
WebDAV和兰空图床中的文件名和路径名一致。
{Y}/{m}/{d}{filename}(用PicList上传的原文件名,解决难点①)WEBP
https://xxxx.com/assets (根据个人情况,跟Nginx中配置的一致)用于配置到PicList中进行接口方式上传
curl -X POST http://192.168.xx.xxx:28000/api/v1/tokens \
-H "Content-Type: application/json" \
-d '{
"email": "your-email@example.com",
"password": "your-password"
}'
PicList 用的是PicGo相同的配置

下载地址见文末,
PicList软件自带的支持兰空图床,修改配置即可。
PicList的重命名规则(根据各自情况自行调整)
{Y}/{m}/{d}/{Y}{m}{d}-{md5-16}第一图床配置WebDAV,第二图床配置兰空,如果反过来的话,就会上传不成功报错。
图床配置如下:
WebDAV的配置:

兰空图床配置:

这一步根据各自的情况来吧,有利有弊,我觉得这样比较快,而且不会把后台配置界面到公网上面。
目的:配置访问兰空图床为:
参考配置如下:
server {
listen 58000;
# 禁止访问所有敏感路径(带/不带斜杠)
location ~ ^/(login|admin|api|dashboard|register|install)(/|$) {
return 404;
}
# 静态资源
location /assets/ {
alias /xxxx/lsky-pro/data/storage/app/uploads/;
try_files $uri =404;
expires 30d;
add_header Cache-Control "public";
access_log off;
}
location / {
return 404;
}
}通过Obsidian的Image Auto Upload 插件来实现。
点击【命令】,输入 Image auto upload。通过命令手动实现上传图片附件。
第一图床配置WebDAV,第二图床配置兰空,如果反过来的话,就会上传不成功报错。
其他的配置跟上一步4.2中的“兰空图床”的配置一样,WebDAV配置如下。
WebP 是 Google 推出的高压缩率图片格式,体积比 JPEG/PNG 小约 25-35%,页面加载速度提升。
图片格式转换通过PicList来实现。
将wiki格式的文件链接改为markdown格式的方案。
[[]] 这种格式改为 ![]()这种格式使用Custom Attachment Location插件,右键文档,并选择“收集文件夹中的附件”。
使用Nginx直接访问兰空的图片目录会出现这个问题。
兰空的保存权限跟Nginx的用户不一致,因此Nginx的用户没有访问权限,需要手动授权。
临时解决办法:
chmod -R u+rwX,go+rX,u-x+X ./lsky-pro/data/storage/app/uploads2025年12月28日解决,用 inotify 实时把新建目录 750 秒改 775。
sudo dnf install -y inotify-toolsvim /usr/local/bin/lsky-fix-perm.sh
#!/bin/bash
PATH=/usr/bin:/bin
DIR=/lsky-pro/data # 改成你实际卷路径
inotifywait -mr --format '%w%f' -e create,MOVED_TO "$DIR" \
| while read path; do
# 只处理“目录”且权限还不是 775
if [[ -d "$path" ]] && [[ $(stat -c '%a' "$path") != "775" ]]; then
sleep 0.1
chmod -R 775 "$path"
fi
done设成 systemd 服务,vim /etc/systemd/system/lsky-fix-perm.service
[Unit]
Description=Lsky uploader permission fix
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/bin/lsky-fix-perm.sh
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.targetchmod +x /usr/local/bin/lsky-fix-perm.sh
systemctl enable --now lsky-fix-perm.service上述方案inotify方式,已经验证可行。