非常小的成本实现一个图床(远远不止)

2020-03-02 08:06:14 +08:00
 int64ago

可以直接先体验 https://302.at/

手机也可以扫码体验(用浏览器打开):

下面就啰嗦下介绍下

应该很多人都跟我一样有图床的需求,我几年前其实就做了,实现也很简单,就是找个对象存储服务商(比如七牛、阿里云 OSS 等)通过 SDK 实现,但是一直很别扭。周末重新梳理了下,我个人对此类需求有以下诉求:

然后,周末我就把上面的需求都实现了,并且还扩展了很多其它实用的功能

特性

技术栈及依赖

一些预览图

有兴趣的话代码在 GitHub,可以 fork 过去自己改改就能部署,绝大多数配置我都抽离成环境变量了,当然直接用也可以,不过最好登录下,非登录态会有些限制

4856 次点击
所在节点    分享创造
56 条回复
iiduce
2020-03-02 08:18:01 +08:00
没看懂,文件究竟存储到什么地方了?
int64ago
2020-03-02 08:23:28 +08:00
@iiduce 文件在阿里云 OSS,当然换其他也很简单

数据储存在 LeanCloud,主要是云数据库太贵,自己 VPS 搭的感觉也不靠谱
int64ago
2020-03-02 08:25:31 +08:00
@iiduce 为了横向扩展,基本上应用都是用的外部服务,所以机器基本就只有纯计算逻辑,我对这点诉求很高,因为要应对随时可能被封的主机
Cbdy
2020-03-02 08:47:35 +08:00
从一个设计师的角度,Logo 可以再设计一下,页面字号可以适当调整一下(感觉文字和按钮不协调字号)
int64ago
2020-03-02 08:49:20 +08:00
@Cbdy 🤓 求具体点的指导
lhx2008
2020-03-02 08:53:25 +08:00
项目是不错的,阿里云要注意账单
sofarx
2020-03-02 08:53:31 +08:00
你图床上传的图在我这里都是显示问号
fengbjhqs
2020-03-02 08:56:40 +08:00
如果只是图库,感觉可以不需要数据库, 可以自建 cdn,文件放本地
7gugu
2020-03-02 08:56:49 +08:00
噢,不错哦!会长久运营吗?
luckyrayyy
2020-03-02 09:19:27 +08:00
常见的图库都是放到第三方的,就没有能放到本地的么...
int64ago
2020-03-02 09:20:38 +08:00
@7gugu #9 我自己要用的东西肯定会长久,而且代码里有黑名单机制,如果有滥用的人会直接点对点拉黑

而且针对访问频率我也做了限制


当然,以上只要是正常使用都不会感知
int64ago
2020-03-02 09:23:11 +08:00
@luckyrayyy #10 放本地:

- 不便于迁移
- 可靠性不好保证(除非自己做三备份)
- 磁盘性能不行(当然 SSD 好点)
- 没法使用到一些高级特性(比如三方都会支持图片裁剪压缩等)
chenxiaoyan
2020-03-02 09:25:34 +08:00
测试了一下,上传挺快的,可老哥,怎么删掉我上传的图片??😂
int64ago
2020-03-02 09:28:10 +08:00
@chenxiaoyan 登录状态下是可以删的,匿名为了不干扰别人测试,禁了删除
iiduce
2020-03-02 10:21:24 +08:00
一直想做一个自用放照片的网盘,觉着这个界面功能挺合适。

我有空闲的阿里云服务器 ECS,求教把文件和数据存储都放在阿里云上,容易改么? 主要需做哪些工作。

希望能得到您的指教,谢谢! @int64ago
opengps
2020-03-02 10:28:37 +08:00
目前看来并不是低成本,oss 的流量费问题你没有提到,这个往往是最贵的支出
int64ago
2020-03-02 10:35:13 +08:00
@opengps 我提到了

金钱成本少,除了对象存储这个钱不得不花,其它尽量不花钱

这个没办法,不得花这个钱
int64ago
2020-03-02 10:38:02 +08:00
@iiduce 部署这块我没多说,因为每个人部署方式可能都不一样

我可以说下我的:

- GitHub Actions 自动 Docker build && push

- 搞台 VPS,装好 Docker,然后便排好应用和 Caddy 即可
ryV60s
2020-03-02 10:48:28 +08:00
一打开就有黄图 (/ □ \)
int64ago
2020-03-02 10:59:58 +08:00
@ryV60s 不要慌,我接了鉴黄服务,我看到黄图确实貌似已经被自动冻结了 :-)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/648993

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX