实用技巧|自建图床+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中的命令是:

image-20230427195451280

而在github中是这样写的:

image-20230427195627023

这里应该是作者写错了。

然后我们运行启动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加对应的端口进入兰空后台。

image-20230427201042881

因为用的docker所以环境都是齐全的,我们直接点击下一步就好。

然后选择数据库,如果你有自定义数据库的要求,按照你数据库的信息填写就好,如果没有建议使用SQLite。

理论上MySQL的性能比SQLite强,但是SQLite在理论上已经完全可以满足个人建站或者是小团队小公司使用了。同时SQLite数据库的本质就是一个文件,相比于MySQL来说迁移时很是方便。

image-20230427201518947

填写账号密码,建议账号邮箱写真实的,如果密码忘记了还可以找回。

image-20230427201634862

这样我们就可以进入仪表盘了,我们此时需要修改几个设置。

第一个基础设置:

image-20230427202108093

image-20230427203052782

如果只是自用建议关闭注册和游客上传。

第二个容量设置:

image-20230427201816293

image-20230427201839018

这样我们就可以修改图床的容量大小。

第三个存储设置:

image-20230427202153833

image-20230427202228507

这里存储策略可以选第三方的存储,目前支持:AWS、阿里云、腾讯云、七牛云、又拍云、SFTP、FTP、WebDav、Minio。不过创建好的存储策略时不能修改的,需要新建。

访问网址和存储路径也可以自定义。

第四个上传限制:

image-20230427202639857

image-20230427202659315

可以对上传的限制进行设置。

4 Typora+PicGo

如果想实现Typora自动上床,我们需要依赖PicGo。

PicGo App github: https://github.com/Molunerfinn/PicGo

下载安装后我们选择插件->搜索lankong插件->安装(注意,安装前需要确保电脑安装的有node.js)

image-20230427202855387

在图床设置中找到刚刚安装的lankong插件:

image-20230427203300226

Lsky Pro Version 我们选择V2

Server 填写你图床的访问地址

Auth token 下面会讲

Strategy ID 是存储策略,当你有好几个存储策略时可以填写对应的策略ID

Ignore certificate error 如果你没有配置Https证书,可以勾选

Sync Delete 是同步上传

我们需要获取到token。建议使用Apifox

image-20230427203801141

在控制台的接口中详解了所有API接口

image-20230427203949566

这样我们就得到了token

image-20230427204054675

注意,在填写token前要加上 Bearer空格token

注意!!Bearer和token之间有个英文空格别忘了。

当我们设置好后点击设为默认图床就可以了。

打开Typora->左上角文件->偏好设置->图像

image-20230427204525347

注意PicGo路径选择你的安装路径,点击验证图片上床选项。

image-20230427204434414

此时你在Typora中插入图片就可以自动上传啦!

image-20230427204632331

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



最后修改:2024 年 03 月 30 日
如果觉得我的文章对你有用,请随意赞赏