一、废话编

之所以要为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。

VPS上自建图床优缺点

第三方图床自然是好的,特别像github之类的,最大的优点就是套个CDN就能白嫖

然而他也有着明显的缺陷,那就是图片托管于图床的,也就是说你的图片可有能说没就没

就现今的网络情况来说,大家都把github开发成图床来白嫖,要是什么时候来个大规模封杀,那画面真的不要太美。

就以上的原因,个人要在白嫖和自建个人图床之间做选择的话,博主倾向选择在自己的VPS上搭建个人专用图床,毕竟图片文件还在自己的VPS上。当然了,这是有前提的,那就是图床服务器的搭建难度不高,或者说足够简单。

二、个人图床选择

自建图床的程序选择上,网上推荐得比较多的是chevereto。非常有名的开源图床程序,而且能实现很多扩展功能。但也正因为功太多,反而不是本文的首选。

先理清需求:

  • 1.开源图床,适合个人网站使用就够,不必做推广运营。
  • 2.可以利用docker-compose配置文件拉起容器
  • 3.功能越简单越好,能提供api上传图片搭配picgo使用,并返回自定义链接即可,对相册分类功能及样式没要求。

基于以上几点,本文选择的开源图床程序为:EasyImages2.0

点击展开 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

四、图床设置

正常安装

正常情况下,启动容器后就进入安装界面。

利用Docker 为Typora自建VPS图床服用器,Typora+PicGo自动上传

利用Docker 为Typora自建VPS图床服用器,Typora+PicGo自动上传

安装过程不表,注意一下网站域名以https://开头即可。

要关注的设置

Easyimage2.0 的 docker容器目录结构

/app/web目录下,分别是 config,i,images,public,可以关注一下,有利于理解后面的设置。

利用Docker 为Typora自建VPS图床服用器,Typora+PicGo自动上传

1.网站设置

利用Docker 为Typora自建VPS图床服用器,Typora+PicGo自动上传

这里如果想着重推广网站,可以关注“网站关键字”,“网站标题”这些选项。如果只是像up一样用来存储图片,刚只需要注意“网站域名”和“图片域名”,添加上https即可,没traefik2反代则根据实际情况填。

2.上传设置

利用Docker 为Typora自建VPS图床服用器,Typora+PicGo自动上传

这选项卡是设置上传的图片所存储的位置及上传后转换的格式。

  • 存储目录 --> 这里填的是images,images文件夹会生成在容器内的/app/web目录下,所有上传的图片都会存在images下,因此这文件夹必须在docker-compose文件中影射主机的文件夹。
  volumes:
    - ./images:/app/web/images
  • 已上传文件的命名方式 -->选一种过得去的就可以。
  • 将上传图片转换格式 --> 有不转换,webp,png,jpg,gif,bmp几个选项。这里要注意一下,只有选择不转换格式,后面的自动水印才能生效,如果选择转换格式,水印模式失效。

3.水印设置

这里可选文字或图片水印。

利用Docker 为Typora自建VPS图床服用器,Typora+PicGo自动上传

解释:

  • 图片水印路径 --> 默认路径是/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 --> 自用的话可以尽量调整有效期长一些。

    利用Docker 为Typora自建VPS图床服用器,Typora+PicGo自动上传

最后配置config.php

位置就是docker-compose文件设置的volumses位置,up这里是config/config.php,完成图床安装程序会自动生成。

volumes:
  - './config:/app/web/config'

利用Docker 为Typora自建VPS图床服用器,Typora+PicGo自动上传

 关注并修改以下几个项
// 设置domain和url,上面设置过的基本不用改
'domain'=>'https://image.domain.com',
'imgurl'=>'https://image.domain.com',
 
// 支持api上传,typora搭配picgo上传必须开启选项
'apiStatus'=>1,
 
// 图片位置,同样,上面设置过的基本不用改
'path'=>'/images/'

// 登陆才可以使用,自用的最好打开这个必须登录选项
'mustLogin'=>1,

利用Docker 为Typora自建VPS图床服用器,Typora+PicGo自动上传

五、PicGo && Typora设置

PicGo设置

先安装插件,再填充上面的api地址及token.

利用Docker 为Typora自建VPS图床服用器,Typora+PicGo自动上传

打开Picgo,找到插件设置,搜索并安装web-uploader。

利用Docker 为Typora自建VPS图床服用器,Typora+PicGo自动上传

分别填上token及api地址,并设置为默认图床。

  • Api地址,就是上面设置图床时获得的Api地址。
  • 参数名,统一填image。
  • Json路径,统一填 url。
  • 自定义请求头,留空。
  • 自定义Body,格式如下:{"token":"8327acdca0ddabd1c5899e350abb3217"}

Typora设置

文件 --> 偏好设置 --> 图像,找到 上传服务设定,设置 picgo上传即可。

利用Docker 为Typora自建VPS图床服用器,Typora+PicGo自动上传

到些,完美搞掂自定义图床,可以在自己的vps上随意耍弄图床。

测试成功后,Typora+PicGo+VPS自建图床(easyimage)的模式就搞定了。

总结:

自从 有了docker 的窗口微服务概念后,很多配置都变得非常简单,而https加密协调的问题,有了traefik的反代,一切也变得非常傻瓜化。

也正因如此,利用自己的vps搭建一个个人专属的私人图床也变得简单起来,只需要依葫芦画瓢,配置好docker-compose文件,即可完成。

既然自有图床有了,那么一切设置其实就跟之前上传github的设置是一样的,只是picgo里换了个upload的插件及插件相应的参数。

说了这么多,其实就是配置好docker-compose即可启动,其他都是细枝末节。

如果你也与up有同样的需求,只想简单的能为typora提供自动上传图片的图床,那么easyimages值得拥有。