1 PicGo-app
启用飞牛FTP步骤(略)
1.1 安装FTP插件
PicGo插件列表 https://github.com/PicGo/Awesome-PicGo
1 2 3 4 5
| # cd /D C:\Users\用户名\AppData\Roaming\picgo cd %APPDATA%\picgo npm install 插件名
# npm list
|
1.2 FTP插件设置
GitHub - imba97/picgo-plugin-ftp-uploader: picgo插件 FTP上传
打开软件,配置picgo:
1 2 3 4
| 图床设置-FTP上传 图床配置名: Default 网站标识: img1 配置文件:C:\Users\name\.picgo\ftpconfig.json
|
ftpconfig.json
1 2 3 4 5 6 7 8 9 10 11
| { "img1": { "url": "http://192.168.200.104:8002/images", "path": "/{year}/{month}/{day}/{fullName}", "uploadPath": "/PicGo/{year}/{month}/{day}/{fullName}", "host": "192.168.200.104", "port": 21, "username": "admin", "password": "888888" } }
|
1.3 安装HTTP server
FTP上传,以后通过http访问,使用docker 安装nginx 。把ftp上传目录/fs/1000/ftp/PicGo挂载到nginx以后,默认FTP用户是admin(uid=1000),而nginx工作进程(worker processes)运行用户为nginx(uid=1001)。由于权限会导致无法访问图片,页面会提示403错误。
解决办法:
- 在docker 中修改nginx用户UID,保持与飞牛FTP用户UID一致。(Dockerfile1)
- 在docker中增加用户,指定UID与FTP用户UID一致。(Dockerfile2)
- 修改FTP用户UID,与docker中nginx UID一致。(未测试)
- 写个脚本,定期强制修改FTP上传目录下的文件权限。(未测试)
- docker run –user 1000 (测试失败)
1.3.1 Dockerfile
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| # Dockerfile1 FROM nginx:latest
# 更改 Nginx 相关目录的权限和所有者,确保 admin 用户有足够的权限 RUN chown -R 1000:1000 /var/cache/nginx /var/run /var/log/nginx /etc/nginx /usr/share/nginx/html && \ chmod u+s /usr/sbin/nginx
RUN sed -i 's/nginx:x:101:101/nginx:x:1000:1000/' /etc/passwd
# 切换用户 USER 1000
# 启动 Nginx CMD ["nginx", "-g", "daemon off;"]
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| # Dockerfile2
FROM nginx:latest
# 创建一个新的用户和组,并设置 UID 和 GID 为 1000 RUN groupadd -g 1000 admin && \ useradd -u 1000 -g admin -m -s /bin/bash admin
# 更改 Nginx 相关目录的权限和所有者,确保 admin 用户有足够的权限 RUN chown -R admin:admin /var/cache/nginx /var/run /var/log/nginx /etc/nginx /usr/share/nginx/html && \ chmod u+s /usr/sbin/nginx
# 显式地告知 Nginx 使用 admin 用户,而不是默认的 nginx 用户 RUN sed -i 's/user nginx/user admin/g' /etc/nginx/nginx.conf
# 启动 Nginx # USER root # CMD ["su","-","admin","-c", "/usr/sbin/nginx -g \"daemon off;\""] USER admin CMD ["nginx", "-g", "daemon off;"]
|
1.3.2 生成镜像
1
| docker build -t picgo-nginx:v1 -f Dockerfile .
|
1.3.3 nginx配置
nginx.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| server { listen 8002; server_name localhost;
location / { root /usr/share/nginx/html; index index.html index.htm; }
error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; }
location /images { alias /usr/share/nginx/html/images/; autoindex on; #关闭详细文件大小统计,让文件大小显示MB,GB单位,默认为b; autoindex_exact_size off; #开启以服务器本地时区显示文件修改日期! autoindex_localtime on; } }
|
1.3.4 启动 nginx
1 2 3 4 5 6 7
| docker run -d \ --name picgo-ftp-nginx \ --restart=always \ -p 8002:8002 \ -v /root/PicGo/nginx.conf:/etc/nginx/conf.d/ftp.conf \ -v /vol1/1000/ftp/PicGo:/usr/share/nginx/html/images:ro \ picgo-nginx:v1
|
1000 代表用户用户UID, 根据情况修改。我创建了一个ftp用户,实际上使用的是1004。
1.4 obsidian picgo 插件Image auto upload设置
保持默认,设置略
使用picgo-core的好处是,不用打开app,需要的时候调用picgo命令就行了。避免app突然不能开机自启动了,还得手动打开;节省CPU、内存。
2.1 安装PicGo-Core
1
| yarn global add picgo # 或者 npm install picgo -g
|
2.2 安装FTP插件
查看全局目录路径:
1 2 3 4 5 6
| npm get
cd %appdata%\npm
picgo install picgo-plugin-ftp-uploader
|
2.3 生成配置文件
默认配置文件
picgo 的默认配置文件为~/.picgo/config.json
。其中~
为用户目录。不同系统的用户目录不太一样。
linux 和 macOS 均为~/.picgo/config.json
。
windows 则为C:\Users\你的用户名\.picgo\config.json
。
C:\Users\你的用户名\.picgo\config.json
:
1 2 3 4 5 6 7 8 9 10 11 12 13
| { "picBed": { "uploader": "ftp-uploader", "current": "ftp-uploader", "ftp-uploader": { "site": "", "configFile": "F:\\SYNC\\Obsidian\\README\\ftpconfig.json" } }, "picgoPlugins": { "picgo-plugin-ftp-uploader": true } }
|
2.4 手动上传测试
picgo upload “C:\\Users\\X\\Pictures\\Snipaste_2024-10-21_13-10-27.png”
3 重启Obsidian
4 参考
https://github.com/Molunerfinn/PicGo
https://picgo.github.io/PicGo-Doc/zh/guide/
https://picgo.github.io/PicGo-Core-Doc/zh/guide/
https://github.com/PicGo/Awesome-PicGo
https://github.com/imba97/picgo-plugin-ftp-uploader