# 关于自建图床那些事──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 页面进行设置
采用 post 方法将图片进行上传
# 数据格式:
data = { | |
"key":"Your API KEY", | |
"source": imagesource, | |
"action":"upload", | |
"format":"json" | |
} |
# url 拆解:
分为四个部分
-
ip 地址部分
http://mysite.com/api/1/upload/?
-
api 部分
key=12345
-
图片位置
source=http://somewebsite/someimage.jpg
可以使用网络位置本地文件需要 base64 编码
-
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 |
点击验证图片上传选项
显示上传成功,同时将插入图片时的规则中:对本地应用和对网络位置应用勾上。这样每次加入图片时,typora 都会将图片上传并且替换成图床上的地址。