一、废话编
之所以要为Typora自建一个自用的图床服务器,原因是多复杂多样的,然而最直接的原因还是把wordpress换成typecho的操作,还有docker容器化的便捷概念。至于为什么会把网站cms 从wordpress转成typecho,以及怎么操作,具体可参考《博客程序 从 Wordpress 转到 Typecho步骤》。
然而从wp过渡到typecho,最直接的转变就是写文章的语法变了:
- wp默认编辑器是TinyMCE编辑器,直接写html标签即可。
- 而 typecho 默认编辑器是HyperDown的markdown解析器。
因为习惯原因,博主不太喜欢CMS后台编辑器,一直都是软件离线排版好后,手动发布。
Wordpress时代,用的离线编辑器是【Windows Live Writer/Open Live Writer】,非常好用,可以直接ctr+v复制图片到编辑器,软件会自动上存图片到网站空间 。但他并不支持markdown语法。
到了Typecho后,找到了支持markdown语法相应的替代的离线编辑软件 Typora,排版及全新markdown语法都不是问题。这软件也可以ctr+v直接复制图片,然而最大的问题是图片要手动上传,想自动上传可以,但只能上传到第三图床(具体实现如下【Typora编辑 + PicGo上传 + Github作图床的实现办法】,没法像windows Live。
第三方图床自然是好的,特别像github之类的,最大的优点就是套个CDN就能白嫖。
然而他也有着明显的缺陷,那就是图片托管于图床的,也就是说你的图片可有能说没就没。
就现今的网络情况来说,大家都把github开发成图床来白嫖,要是什么时候来个大规模封杀,那画面真的不要太美。
就以上的原因,个人要在白嫖和自建个人图床之间做选择的话,博主倾向选择在自己的VPS上搭建个人专用图床,毕竟图片文件还在自己的VPS上。当然了,这是有前提的,那就是图床服务器的搭建难度不高,或者说足够简单。
二、个人图床选择
在自建图床的程序选择上,网上推荐得比较多的是chevereto
。非常有名的开源图床程序,而且能实现很多扩展功能。但也正因为功太多,反而不是本文的首选。
先理清需求:
- 1.开源图床,适合个人网站使用就够,不必做推广运营。
- 2.可以利用docker-compose配置文件拉起容器
- 3.功能越简单越好,能提供api上传图片搭配picgo使用,并返回自定义链接即可,对相册分类功能及样式没要求。
基于以上几点,本文选择的开源图床程序为:EasyImages2.0。
- 支持API
- 支持仅登录后上传
- 支持设置图片质量
- 支持压缩图片大小
- 支持文字/图片水印
- 支持设置图片指定宽/高
- 支持上传图片转换为指定格式
- 支持限制最低宽度/高度上传
- 支持上传其他文件格式
- 在线管理图片
- 支持网站统计
- 支持设置广告
- 支持图片鉴黄
- 支持自定义代码
- 支持上传IP黑白名单
- 支持上传日志IP定位
- 支持限制日上传次数
- 支持创建仅上传用户
- 对于安装环境要求极低
- 对于服务器性能要求极低
三、配置图床
这里的配置还是一样,沿用以前的tarefik2配置文件,利用traefik2反代,不进行反代则要开放相应的容器外部访问端口。
1. 创建图床目录
mkdir easyimage1
cd easyimage1
mkdir config
mkdir images
touch docker-compose.yml
2. 编辑docker-compose.yml文件
nano docker-compose.yml
version: '3.3'
services:
easyimage:
image: ddsderek/easyimage:v2.7.5-r1
container_name: easyimage1
environment:
- TZ=Asia/Shanghai
- PUID=1000
- PGID=1000
volumes:
- './config:/app/web/config'
- './i:/app/web/i'
- './images:/app/web/images'
restart: unless-stopped
networks:
- proxy
networks:
proxy:
external: true
3. 配置Traefik的动态配置文件dynamic.yml
增加 routers
routers:
# Roter3: easyimage-1
easyimage-1:
entryPoints:
- "websecure"
service: easyimage-service1
rule: "Host(`youdomain.com`)"
增加 services
services:
# service3: easyimage-service1
teasyimage-service1:
loadBalancer:
servers:
- url: "http://172.18.0.5"
查找容器 url,用docker inspect --format='{{.NetworkSettings.Networks.proxy.IPAddress}}' easyimage1
命令。
关于本站沿用的,更多traefik2的相关配置文件参考: Docker-compose安装Traefik2基本配置文件。
4.启动docker-compose
启动命令: docker-compose up -d
。
四、图床设置
正常安装
正常情况下,启动容器后就进入安装界面。
安装过程不表,注意一下网站域名以https://
开头即可。
要关注的设置
Easyimage2.0 的 docker容器目录结构
/app/web
目录下,分别是 config,i,images,public,可以关注一下,有利于理解后面的设置。
1.网站设置
这里如果想着重推广网站,可以关注“网站关键字”,“网站标题”这些选项。如果只是像up一样用来存储图片,刚只需要注意“网站域名”和“图片域名”,添加上https即可,没traefik2反代则根据实际情况填。
2.上传设置
这选项卡是设置上传的图片所存储的位置及上传后转换的格式。
- 存储目录 --> 这里填的是
images
,images文件夹会生成在容器内的/app/web
目录下,所有上传的图片都会存在images下,因此这文件夹必须在docker-compose文件中影射主机的文件夹。
volumes:
- ./images:/app/web/images
- 已上传文件的命名方式 -->选一种过得去的就可以。
- 将上传图片转换格式 --> 有不转换,webp,png,jpg,gif,bmp几个选项。这里要注意一下,只有选择不转换格式,后面的自动水印才能生效,如果选择转换格式,水印模式失效。
3.水印设置
这里可选文字或图片水印。
解释:
- 图片水印路径 --> 默认路径是
/public/images/watermark.png
,如果想改又不想映射关联,可直接上传图片,然后指定图片位置。如图片:ivyzya-0.png,那么这里要填定的路径是/images/2023/03/02/ivyzya-0.png
。 - 文字水印 --> 填你想要的文字即可。
4.API设置
API这里的内容要记下来,后面用picgo自动上传图片时会用到两个。
- API调用地址 --> 这里是
https://imgs.zctou.com/api/index.php
。 - Token --> 自用的话可以尽量调整有效期长一些。
最后配置config.php
位置就是docker-compose文件设置的volumses位置,up这里是config/config.php
,完成图床安装程序会自动生成。
volumes:
- './config:/app/web/config'
// 设置domain和url,上面设置过的基本不用改
'domain'=>'https://image.domain.com',
'imgurl'=>'https://image.domain.com',
// 支持api上传,typora搭配picgo上传必须开启选项
'apiStatus'=>1,
// 图片位置,同样,上面设置过的基本不用改
'path'=>'/images/'
// 登陆才可以使用,自用的最好打开这个必须登录选项
'mustLogin'=>1,
五、PicGo && Typora设置
PicGo设置
先安装插件,再填充上面的api地址及token.
打开Picgo,找到插件设置,搜索并安装web-uploader。
分别填上token及api地址,并设置为默认图床。
- Api地址,就是上面设置图床时获得的Api地址。
- 参数名,统一填image。
- Json路径,统一填 url。
- 自定义请求头,留空。
- 自定义Body,格式如下:
{"token":"8327acdca0ddabd1c5899e350abb3217"}
。
Typora设置
文件
--> 偏好设置
--> 图像
,找到 上传服务设定
,设置 picgo上传即可。
到些,完美搞掂自定义图床,可以在自己的vps上随意耍弄图床。
测试成功后,Typora+PicGo+VPS自建图床(easyimage)的模式就搞定了。
总结:
自从 有了docker 的窗口微服务概念后,很多配置都变得非常简单,而https加密协调的问题,有了traefik的反代,一切也变得非常傻瓜化。
也正因如此,利用自己的vps搭建一个个人专属的私人图床也变得简单起来,只需要依葫芦画瓢,配置好docker-compose文件,即可完成。
既然自有图床有了,那么一切设置其实就跟之前上传github的设置是一样的,只是picgo里换了个upload的插件及插件相应的参数。
说了这么多,其实就是配置好docker-compose即可启动,其他都是细枝末节。
如果你也与up有同样的需求,只想简单的能为typora提供自动上传图片的图床,那么easyimages值得拥有。