# 关于自建图床那些事──typora+cheverto 图床

偶然间发现 typora 可以使用规则,将本地或者网络图片上传到图床。查了些资料,发现了开源的图床 chevereto。正好手上有个闲置的服务器,于是开始了快乐的踩坑之旅

# 一些参考信息:

API 官方文档

linuxserver/chevereto - Docker Image | Docker Hub

环境信息:Linux VM-16-5-centos 4.18.0-193.28.1.el8_2.x86_64 #1 SMP Thu Oct 22 00:20:22 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

# 配置流程:

# 1. 服务器安装 docker

​ 可选:docker-compose

# 2. 配置数据库及云服务器端口放开

mysql -u -root -p
>>>>>>>>>>>>>>>>>>
use mysql;
create database chevereto;
CREATE USER 'usernmae'@'%' IDENTIFIED BY 'password';
GRANT ALL ON chevereto.* TO 'chevereto'@'%';

新建了一个数据库 chevereto,用于后续配置。

其中 % 为通配符,表示任意来源都可以登录该帐号。

同时在云服务器防火墙策略放开 3306 端口

# 3. 启动镜像

docker pull linuxserver/chevereto

启动命令:服务器将对应端口放开

docker run -d \
  --name=chevereto \
  -e PUID=1000 \
  -e PGID=1000 \
  -e TZ=Asia/Shanghai \
  -p 80:80 \
  -p 443:443 \
  -v /data/chevereto/config:/config \
  -v /data/chevereto/data:/data \
  -m 150m\
  --restart unless-stopped \
  linuxserver/chevereto

-p 表示 宿主机:docker 端口 自行调整映射端口

-v 为挂载地址 需提前新建

cd /data/
mkdir cheverto
mkdir cheverto/config
mkdir cheverto/data

# 4. 页面配置

正常情况下,打开之前映射的网址,能看到数据库配置页面,将之前设置好的数据库和密码输入,同时下一步配置管理员信息

在 dashboard 可开启私人模式

# 5. API 配置

进入 dashboard->settings->API 页面进行设置

Clipboard - 2021-12-15 00.27.20

采用 post 方法将图片进行上传

# 数据格式:
data = {
    "key":"Your API KEY",
    "source": imagesource,
    "action":"upload",
    "format":"json"
}
# url 拆解:

分为四个部分

  1. ip 地址部分 http://mysite.com/api/1/upload/?

  2. api 部分 key=12345

  3. 图片位置 source=http://somewebsite/someimage.jpg 可以使用网络位置

    本地文件需要 base64 编码

  4. json 格式 format=json 不可少

url = "http://mysite.com/api/1/upload/?key=12345source=http://somewebsite/someimage.jpg&format=json"
# python urllib post:
def upLoadImage(filename):
    filename = tobase64(filename)
    data["source"] = filename
    test = parse.urlencode(data).encode('utf-8')
    req = request.Request(url,data = test)
    page = request.urlopen(req).read()
    page = page.decode('utf-8')
    response_json = json.loads(page)
    print(response_json["image"]["url"])

# 6. typora 配置

偏好设置 -> 图像 -> 上传服务设定:选择 custom command

输入:

python3 post.py

点击验证图片上传选项

Clipboard - 2021-12-15 00.38.20

显示上传成功,同时将插入图片时的规则中:对本地应用和对网络位置应用勾上。这样每次加入图片时,typora 都会将图片上传并且替换成图床上的地址。