实用技巧|自建图床+Typora&PicGo自动上传
1 需求
Markdown就是好,用的舒服嘎嘎叫!
过去我的工作流就是在本地写好博客,然后把图片从本地上传到服务器里。再把博文粘贴到服务器里,手动修改每个图片的URL。一般我一篇博文也没有多少图片,所以虽然这种方式有点傻傻的,但也不是不饿能接受。然而最近重新迁移自己的老博文到博客上,存在本地的博文都是引用的本地的图片,这次可就不是几张图片的修改量了,而是几十张!
那么多图片都要一个个的手动上传修改真的是一件又枯燥又乏力的事情。为了解决这个问题,我准备在服务器上搭建一个图床,再通过Typora提供的自动上传服务。这样老博文可以快速的迁移,同时未来写博文的时候也会变得很方便。
2 图床搭建
我选择了兰空图床(LskyPro),它的免费版是开源的,支持多图上传、拖拽上传、粘贴上传、复制图片、复制链接、一键复制链接、相册分类以及强大的图片管理功能。同时也支持第三方的存储,未来图片变多了以后也可以方便的迁移到别的云存储上。
但是兰空图床需要php环境,同时还要很多php的插件。部署这些环境很是麻烦,也有可能和我服务器上的环境产生冲突。不过没有关系!兰空图床有对应的docker! 我们通过docker可以进行一键部署。
•docker hub地址:https://hub.docker.com/r/halcyonazure/lsky-pro-docker•docker github地址:https://github.com/HalcyonAzure/lsky-pro-docker
Docker搭建命令
docker pull halcyonazure/lsky-pro-docker
注意!!
在写博文的今天(23年4月27日)。dockerhub中的命令是:
而在github中是这样写的:
这里应该是作者写错了。
然后我们运行启动docker命令
docker run -d \
--name lsky-pro \
--restart unless-stopped \
-p 8089:8089 \
-v your_path:/var/www/html \
-e WEB_PORT=8089 \
halcyonazure/lsky-pro-docker:latest
注意!
其中
-v your_path:/var/www/html \
要把里面的your_path
换成你的路径。这样当docker掉了以后,下次再启动docker的时候数据不会丢失。
-p 8089:8089
前面那个可以换成你自己指定的端口。
Docker-Compose部署参考
使用MySQL
来作为数据库的话可以参考原项目 #256 来创建docker-compose.yaml
,参考内容如下:
version: '3'
services:
lskypro:
image: halcyonazure/lsky-pro-docker:latest
restart: unless-stopped
hostname: lskypro
container_name: lskypro
environment:
- WEB_PORT=8089
volumes:
- $PWD/web:/var/www/html/
ports:
- "9080:8089"
networks:
- lsky-net
# 注:arm64的无法使用该镜像,请选择sqlite或自建数据库
mysql-lsky:
image: mysql:5.7.22
restart: unless-stopped
# 主机名,可作为"数据库连接地址"
hostname: mysql-lsky
# 容器名称
container_name: mysql-lsky
# 修改加密规则
command: --default-authentication-plugin=mysql_native_password
volumes:
- $PWD/mysql/data:/var/lib/mysql
- $PWD/mysql/conf:/etc/mysql
- $PWD/mysql/log:/var/log/mysql
environment:
MYSQL_ROOT_PASSWORD: lAsWjb6rzSzENUYg # 数据库root用户密码,自行修改
MYSQL_DATABASE: lsky-data # 可作为"数据库名称/路径"
networks:
- lsky-net
networks:
lsky-net: {}
原项目:☁️兰空图床(Lsky Pro) - Your photo album on the cloud.
3 图床设置
首先访问你的ip加对应的端口进入兰空后台。
因为用的docker所以环境都是齐全的,我们直接点击下一步就好。
然后选择数据库,如果你有自定义数据库的要求,按照你数据库的信息填写就好,如果没有建议使用SQLite。
理论上MySQL的性能比SQLite强,但是SQLite在理论上已经完全可以满足个人建站或者是小团队小公司使用了。同时SQLite数据库的本质就是一个文件,相比于MySQL来说迁移时很是方便。
填写账号密码,建议账号邮箱写真实的,如果密码忘记了还可以找回。
这样我们就可以进入仪表盘了,我们此时需要修改几个设置。
第一个基础设置:
如果只是自用建议关闭注册和游客上传。
第二个容量设置:
这样我们就可以修改图床的容量大小。
第三个存储设置:
这里存储策略可以选第三方的存储,目前支持:AWS、阿里云、腾讯云、七牛云、又拍云、SFTP、FTP、WebDav、Minio。不过创建好的存储策略时不能修改的,需要新建。
访问网址和存储路径也可以自定义。
第四个上传限制:
可以对上传的限制进行设置。
4 Typora+PicGo
如果想实现Typora自动上床,我们需要依赖PicGo。
PicGo App github: https://github.com/Molunerfinn/PicGo
下载安装后我们选择插件->搜索lankong插件->安装(注意,安装前需要确保电脑安装的有node.js)
在图床设置中找到刚刚安装的lankong插件:
Lsky Pro Version 我们选择V2
Server 填写你图床的访问地址
Auth token 下面会讲
Strategy ID 是存储策略,当你有好几个存储策略时可以填写对应的策略ID
Ignore certificate error 如果你没有配置Https证书,可以勾选
Sync Delete 是同步上传
我们需要获取到token。建议使用Apifox
在控制台的接口中详解了所有API接口
这样我们就得到了token
注意,在填写token前要加上 Bearer空格token
注意!!Bearer和token之间有个英文空格别忘了。
当我们设置好后点击设为默认图床就可以了。
打开Typora->左上角文件->偏好设置->图像
注意PicGo路径选择你的安装路径,点击验证图片上床选项。
此时你在Typora中插入图片就可以自动上传啦!
5 设置Nginx代理和反盗链
location ~*\.(gif|jpg|jpeg|png|bmp|swf)$ {
valid_referers none blocked *.kuunnn.cc;
if ($invalid_referer){return 403;}
proxy_set_header HOST $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:9080;
}
location / {
proxy_set_header HOST $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:9080/;
}
第一段是反盗链,valid_referers none blocked *.kuunnn.cc;
里设置通过的域名,当其他域名使用你的图床的时候就可以直接返回403。
参考资料
自建图床+Typora&PicGo自动上传https://www.kuunnn.cc/archives/lskytyporapicgo