最近这几天看到 V 站上有不少讨论说新浪微博开始限制外链了,感觉到处蹭免费图床的日子终究不太安心,250 天前做了一个聚合图床专门用来未雨绸缪解决这种问题的,当时还在 V 站上发了帖子
https://www.v2ex.com/t/477060#reply85
当时想解决的一个是一次上传,多次分发,然后提供一个跳转的链接来重定向,比如像下面这张图片:
https://www.superbed.cn/info/5caea03b3a213b041703f55a
对应一个跳转的链接:
https://pic.superbed.cn/item/5caea03b3a213b041703f55a
使用图片的时候直接用跳转链接就可以了,后台会检测上传到的三个图床如 微博,阿里,搜狐的链接的有效性,比如这个时候微博开始限制链接了,比如你的网站是 https://xxx.com, 后台会使用 referer: https://xxx.com 来检测,微博有效则直接重定向到微博的地址,如果检测的时候返回 403 了,则轮换到下一个。如果有一天这三个都失效了,后台会自动再上传,而你引用的地方完全不需要更新,对页面引用是透明的。
我自己的几个网站一直在用,很方便,终于可以统一管理所有的图片了,而且也不用担心存储空间什么的,什么图片都往上仍就好了。
当然还是有很多人担心我这个说不定哪天就倒闭了,第一是不敢直接用跳转链接,只把它当一个上传的图床,使用的还是微博或者阿里的链接,比较大厂会比较安心一点,即便我这个站不在了至少图片是没有问题的,当然这么用也是 OK 的,虽然我没有这个担心~~
既然有很多人担心,于是我花时间搞了一个 docker 镜像出来,用于部署。目前源码应该是不打算直接开源了,毕竟写代码都是有成本的,开源与否都是个人选择,打算长期维护的东西需要精力,各位应该也都理解,请勿喷,现在直接说一下怎么安装。
首先安装一下 docker 和 docker-compose,这个不会安装的直接在网上找一下好了。
然后写一个 docker-compose.yml
version: '3.3'
services:
mongo:
image: mongo
volumes:
- mongo_db:/data/db:rw
restart: always
privileged: true
redis:
image: redis
volumes:
- redis_db:/data:rw
restart: always
privileged: true
rabbitmq:
image: rabbitmq:management
restart: always
privileged: true
superbed:
depends_on:
- mongo
- redis
- rabbitmq
image: zkdfbb/superbed
ports:
- "8000:8000"
volumes:
- ./config.sh:/code/config.sh
- ./images:/code/static/images
restart: on-failure
privileged: true
volumes:
mongo_db:
redis_db:
再提供一个配置文件 config.sh:
export SUPERBED_TOKEN=
export SUPERBED_TONGJI=
export ADDRESS="http://192.168.1.1:8000"
export ENDPOINTS=alicdn,sohu,sogou
export ADMIN_USER=admin
export ADMIN_PWD=123456
export ADMIN_EMAIL=
export MONGO_HOST=mongo
export MQ_HOST=rabbitmq
export REDIS_HOST=redis
export EMAIL_SENDER=
export EMAIL_SMTP=
export EMAIL_USER=
export EMAIL_PWD=
export Z4A_USER=
export Z4A_PWD=
其中配置文件的说明如下:
SUPERBED_TOKEN: 用于授权的 token
SUPERBED_TONGJI:百度统计,就是 https://hm.baidu.com/hm.js? 后面跟着的那一串 32 个字符,用来安装百度统计的
ADDRESS:你的网站的地址,可以是域名或者 ip+端口都行
ENDPOINTS:默认上传的图床,用逗号分隔
ADMIN_USER:创建的管理员的账号
ADMIN_PWD:管理员密码
ADMIN_EMAIL:管理员的邮箱
EMAIL_SENDER:用户注册时,用来发送注册验证码的邮箱,后面几个 EMAIL_开头的分别是 smtp 地址,用户名和密码
Z4A_USER/Z4A_PWD:几个使用 chevereto 搭建的图床的用户名和密码,目前支持
imgchr: https://imgchr.com
jpgdog: https://jpg.dog
aphoto: https://a.photo
imgbb: https://imgbb.com
z4a: https://www.z4a.net
miaosu: https://miao.su
moetu: https://moetu.org
photouploads: https://photouploads.com
biuu: https://pic.biuu.me
imgrpost: https://imgrpost.com
tryimg: http://tryimg.com
用户名和密码和 Z4A_USER 类似,就是前面的名称大写加上_USER 和_PWD
这样会上传到对应图床的自己的账号下面,如果不提供的话就相当于游客上传的
上传的图床目前支持:
weibo (需要自己配置微博账号密码,如果非常用地址会遇到验证码,不建议使用)
sogou
sohu
baidu
juejin
qihu
vimcn
uploadcc
catbox
以及上面说的那几个 chevereto 图床
这两个文件都写完之后,在当前目录使用 docker-compose up -d,等待安装完成,过几秒钟就可以直接用 ip+端口访问了,如果 ADDRESS 是域名,则需要自己配置 nginx 转发,转发的地址是 127.0.0.1:8000,如果 8000 端口已经被占用,则修改一下 docker-compose.yml:
ports:
- "8010:8000" # 将 8000 端口换位 8010 端口
目前小范围测试,可以提供 5 个授权码,也就是 SUPERBED_TOKEN,先到先得 ~
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.