# 图仓 **Repository Path**: lgsj/tucang.cc ## Basic Information - **Project Name**: 图仓 - **Description**: 图仓是一款以图片上传、图片分发、图片管理为核心的图床/图片管理平台,能够满足「收藏、整理、查找」的各种场景,把琐碎复杂的事情变得简单与高效,让收集素材成为⽇常习惯,更让素材真正到想用的时候可以信手拈来!是设计师和摄影爱好者必不可少的工具! - **Primary Language**: Java - **License**: Not specified - **Default Branch**: main - **Homepage**: http://tucang.cc - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-04-16 - **Last Updated**: 2022-04-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 图仓 https://tucang.cc ### 交流与反馈 https://support.qq.com/products/315563 ### 项目简介 #### 图仓是一款以图片上传、图片分发、图片管理为核心的图床/图片管理平台,能够满足「收藏、整理、查找」的各种场景,把琐碎复杂的事情变得简单与高效,让收集素材成为⽇常习惯,更让素材真正到想用的时候可以信手拈来!是设计师和摄影爱好者必不可少的工具! #### 说人话就是:你可以上传你的图片,除了保存在我本地和我购买的存储服务上,还会分发到其他图床,以确保你的图片不会丢失。同时,你还可以对图片进行标签化的管理,给图片打上标签,可以根据标签进行搜索.... ### 项目由来 #### 作为一个(伪)摄影爱好者,平日里有审图的习惯,遇到拍的比较好的图片,就会随手保存下来,以免等到拍小姐姐的时候,不知道如何引导、构图。久而久之,手机里就有很多小姐姐了,真正想回顾一下,再回过头学习就不是那么方便了。以手机相册维度进行管理的图片,没法实现我想实现标签化归类的需求,同时,在不同APP看到的图片,保存下来,也会分散到不同的文件夹,还需要后期批量移动、整理......本来想看看有没有造好了的轮子的,找了一圈下来,没有找到合适的,目前市面上有的,都是基于本地进行管理的,虽然为了一些隐私等安全,能够理解这种设计理念,但无法实现我的要求,难不成随时抱着一台笔记本外出么。而传统意义上的图床吧,也就只是个图床而已,没有一点管理的功能。 #### 与此同时,博客上的图片,一直是购买使用某位大佬的图床程序,对于我来说,过于臃肿,有些设计,没有达到我想要的一些效果,苦于不熟悉PHP,所以一直也就这么用下来了。直到最近因为某个接口的事情,大佬被请喝茶了,同时群里购买过付费程序的群友,也有不少被喊去做笔录,了解相关情况。于是就有了想自己写一套的想法。 #### 所以,本项目由此诞生了。 ### 说一下很多人在问的开源问题 #### 首先,非常感谢大家对这个项目的关注。这里我统一详细回复一下开源的相关问题。 #### 【暂时没有开源的打算】你可以直接使用我部署好的,因为我自己是要一直用的,所以会一直维护下去,我能够保证数据不会丢失,毕竟存了好几份COS、OSS之类。也能够确保不会看你上传了哪些文件,目前已经有鉴黄的功能了,是自动的,除非被AI鉴定为疑似图片,我才能在后台看到,后续涉恐涉暴等都会上线。并且,已经有了“防跑路导出”功能,我提供了预览程序,你可以自己部署,再导入从我站点导出的数据即可。在这些功能的加持下,我相信你能够用的安心。 #### 【如果你确实非常有意,很想自己部署一套,甚至是想商用】可以联系我,我可以根据你的要求,进行定制化开发、部署,当然,肯定不是无偿的,具体就看你和我的协商能力了。 #### 主要原因有以下几点: - 目前不具备开源的各方面条件。项目的诞生之初,就是为了我自己的需求的,所以到目前为止,也是按照我自己的需求开发,包括整体的架构等等。①JAVA开发的项目,从部署方面来说,远远比不上PHP的便捷,对于小白来说,光是安装编译环境、软件、导入项目,就够喝一壶的了。②目前图仓整个项目并不是单体的应用,目前主要分为:前端、主站(后端)、分发站(后端)、预览站(后端)。以上两点,我也实在没有时间和精力来整理文档、教程和重构。 - 分发的一些API,懂的都懂,这部分肯定不会开源。 - 开源后,肯定会有小白问一堆无脑的问题,想到这,就没有开源的想法了。我没有这个时间、精力和耐心。 ### 项目进度(持续更新中) #### 20220301一直在更新!!!近期实现了接口的动态扩展,以后再也不需要写代码加接口了。然后终于结束了永爱发电的生涯,这次可以持续很长一段时间了。 #### 20211219又做了一些优化,调整了下部署方案,提升了大图分发的成功率。前段时间,有大佬推荐了下图仓,那段时间注册用户增长了好多。看到目前的一些PV、UV、IP等数据,还是挺有成就感的。然后依旧是每天都跟一些攻击者斗智斗勇... #### 20211208优化了线上的一些BUG,同时新增了【节点管理】给用户使用,用户可以自己设置使用哪些节点、不使用哪些,交给用户自己选择 #### 20211129新增了生成图片代码的功能,支持自定义,可以直接复制到html、markdown等使用。紧急优化了图片管理列表翻页报错的问题,这个图片管理列表越写越复杂,有想重构的打算,奈何工作量大,前端技术也不够。优化了图片重新分发的逻辑,现在,只要你的图片保存到了图仓,并且图片源地址存在一个有效的,就一定能够重新分发成功 #### 20211127本周是跟各种渗透、扫描、爆破斗智斗勇的一周,时不时的看下日志,每次都有新的惊喜,唉。索性把防御机制再加强了一波,服务器也直接切到高防了,理论上400Gb/s内的DDos应该没问题,虽说基本上没有人会为了这么一个小站而搞,但不得不防。顺便优化了一下部署的策略,图片访问的速度直接起飞~之前最差的情况下,访问一张图片,可能要花个3秒,现在最差的情况是200ms,最好的情况甚至能做到个位数,普遍都在20ms左右。对了,新功能在开发了,有几个用户反馈了一波需求,合理,安排上 #### 20211124最近发现有些站写了几篇文章,推荐图仓的,涌入了不少新用户,但我发现,注册了之后,又不上传图片的,何必要浪费这个时间呢?莫非还想从我这偷API?而且,最近看后台,发现有不少异常的情况,对图仓进行各种扫描和爆破,服了,真恶心啊,又没什么人用,也没有盈利,图床千千万,盈利的,大规模的多了去了了,别来搞我好吧。最近先准备一台高防好了,以防万一,谁敢D我,直接切高防去,哎。 #### 20211122新增WordPress插件。 #### 20211112稳定运行中。下一步准备开发个WordPress插件进行对接。 #### 20210917重新调整了上传上限这块的逻辑,默认情况下,每个用户每天最多上传100张。也可以在后台单独给某个用户设置上限。图仓目前已经很稳定了,目前的功能,也符合了我一开始的预期。接下来,看情况开发。 #### 20210820图床API已经上线,可以先自行对接ShareX、PicGo等应用。还剩下一些大家希望开发的功能,正在慢慢开发中,近两个月都比较忙。 #### 20210808图片鉴黄功能开发完毕,对接了多家内容审核商。接下来会开发用户反馈的一些功能,预计月底上线。 #### 20210802近期忙,新功能开发暂缓 #### 20210716把支持哪些图片格式单独抽成了配置,这样只需要动态修改即可,无需再重新改代码发布程序了。同时,完成了分发记录的功能,可以展示近期上次/重新分发图片的记录,哪些成功,哪些失败,一目了然~ #### 20210712终于把防跑路的功能全部完成了,光是部署教程就写了4K字左右。这样一来的话,如果图仓跑路不能用了,用户只需要自己部署一套预览的程序即可。使用Docker构建了预览的程序,部署基本就是一行命令的事情了,但还是写了一个从安装到部署的小白教程,累死了。 #### 20210705这周放假把分发的逻辑单独抽出来了,这样方便横向扩展,目前启动了两个分发实例,暂时足够用了。主要是发现试用redis stream实现的消息队列,出现了消息积压,但是又没有收到stream的消息,没有消费的日志。估计是线程挂了,但是又看不出具体原因,只好先拆分出来,多起几个实例。然后通过定时任务,查看堆积情况,以此来判断分发程序是否正常。 #### 20210610又更新了一波功能:图片搜索、用户管理、更新日志等。同时,优化了消息队列,现在处理的速度更快了。优化了图片展示这款的逻辑,如果你访问一张不存在的图片,会统一返回我设置好的图片;如果你访问的图片,所有源都挂了,也会返回一张统一的图片,提醒站长更新图源。 #### 20210528二期基本上开发完毕了,至此,我一开始对于图仓的功能设计已经差不多开发完毕了。最后增加了查看图片分发到各个节点的情况,也能重新分发某个节点,这个功能是非常实用的。剩下再看有什么其他功能想开发的吧,平时就维护一下节点。后期着重“管理”,进行设计和开发。下一次大更新,就不知道什么时候了。 #### 20210525前端文件夹管理相关完善 #### 20210524本来五一期间要上线一版的,结果拖到了现在。新功能的接口也写了差不多了,暂时还没有时间来写前端... #### 20210430之前用redis实现的消息队列,有一个死循环,以便随时获取新的分发任务,但是这种处理太消耗CPU了,本来服务器购买的是1C的,上线后直接100%运行了。最近把这部分优化掉了,用stream实现了简单的消息队列,五一期间会上一版,然后再观察一波。 #### 20210425购买了一台服务器,把服务全部迁移过去了,晚高峰的时候,速度有了明显的改善。最近很忙,代码没动。 #### 20210415优化了一些并发导致的问题。一边调研一下服务器的选购,一边把文件夹管理相关的功能开发了。最近有点忙,更新慢。 #### 20210409紧急优化了分发这块的逻辑,之前发现线程池莫名其妙就挂了,还在观察中。优化了一些并发导致的问题。近期准备购买服务器,做一些迁移工作,提升体验。 #### 20210327完善了一下安全这块,可以避免一些恶意注册、恶意上传以及简单的一些攻击。jar包的加密也搞定了,前端进行了一点优化。先更新一版,然后再进行正常的功能开发了。等项目完成度差不多了,再换好一点的服务器。 #### 20210320把多模块的项目变成了单模块,主要是想尝试一下代码混淆和jar包加密,试了一下目前加密的工具,对于多模块打包的项目,都有点问题,试了很久很久,发现单模块的项目就没有问题了。最近主要是在优化安全这块的,例如增加一些风控,防止一些滥用的情况,每天可上传的数量以及总大小都做了一些限制等等。安全性这块,还得花点时间。 #### 20210309最近把图片的预览和其他功能剥离开来了,分开进行部署。这样的话,可以增强系统的稳定性,也方便进行横向扩展。如果遇到了攻击,也能够保证已经上传好了的图片能够正常访问。研究了一些新的接口,基本上别人家有的接口,我这都有,别人家没有的接口,我这还有~ #### 20210303最近重构了分发这块的队列,做了一些减法,因为目前从使用人数和频繁度上面来说,不需要太复杂的队列来处理分发。同时,有不少接口挂了,又更新了一批新的接口,目前一共有二十多个接口,开放了十五个,足够足够用了。距离上次更新,已经很久了,主要是太忙,没有太多空闲的时间,最近还是准备挤一挤,每周都更新一点点,哪怕是一点点也好。 #### 由于前后端都是我一个人,白天还得上班,进度比较慢。不过目前也没有其他用户,我开发这玩意儿,初衷也不是为了给谁用,怎么推广之类的,所以,基本上开发什么、开发进度,纯凭个人了。不过,我还是希望能够找到一个开发前端的同学,最好是在校大学生(因为没有酬劳哈哈哈哈),你可以当做练手的项目,在企业中项目实际的开发流程和部署运维等,我基本了解一些,能够给你讲讲。做好后也可以写到你的简历上。我会一直做下去,如果可能的话,可以推广一下,我相信需要这个的人,还是有的。扯远了... #### 目前一期功能已经开发并上线了,也就是目前你看到的效果。能够注册登录、批量上传图片、异地分发图片、图片打标签、按照标签搜索,等等。不过由于第一期开发的很匆忙,没有仔细测试,BUG应该有不少,特别是前端的。所以欢迎大家给我反馈BUG,给我建议和意见。 ### 图片存储 #### 这里我只简单说下。目前上传图片,首先会往本地上传一份,然后直接返回成功,不需要经过漫长的等待。同时,会进行异步的分发,分发到腾讯COS、阿里OSS以及几个公开的图床。当然,这里都是可以方便的进行扩展的,~~在二期我也会实现动态的管理接口,包括开启禁用、权重等等~~(已实现)。所以不用担心你的图片会丢失,若你想上传一些偏隐私的图片,~~暂时不建议,二期我会开发相应的功能,可以不进行分发,只保存到我的COS和OSS~~(已实现),若可能的话,可以对接你的一些网络存储,例如云盘什么的。 #### 图片上传原理 [![图片上传原理](https://tucang.cc/api/image/show/1ef67462110a7acae7721a6bc8e67041 "图片上传原理")](https://tucang.cc "图片上传原理") #### 图片预览原理 [![图片预览原理](https://tucang.cc/api/image/show/29ab5da7a8ad7a28ee2af996672e696d "图片预览原理")](https://tucang.cc "图片预览原理") ### 技术栈 - Springboot - Mysql - Redis - Mybatis Plus - Shiro - VUE - Element UI - 等 ### 贴几张图 前端使用的是开源框架,目前都没有怎么开发样式,也没有这个精力,等会前端的有缘人吧。随着开发,功能会增多,但是下面的图片不一定会及时更新。 #### 首页 [![首页](https://tucang.cc/api/image/show/fa54ef36e536ec80c4f4f13ebc2ce437 "首页")](https://tucang.cc "首页") #### 登录后管理员首页 普通用户只有 “首页”、“图片管理”、“标签管理”、“分发记录”、“防跑路导出”功能 [![登录后管理员首页](https://tucang.cc/api/image/show/01d9fcb071d37f24fe31c636ee760eee "登录后管理员首页")](https://tucang.cc "登录后管理员首页") #### 图片管理 [![后台-图片管理-列表视图](http://tucang.cc/api/image/show/49b39f5e69b3552e9932f6d83da123fa "后台-图片管理-列表视图")](https://tucang.cc "后台-图片管理-列表视图") [![后台-图片管理-图片详情](http://tucang.cc/api/image/show/0fd5a58fb4c599b398f95e046941608d "后台-图片管理-图片详情")](https://tucang.cc "后台-图片管理-图片详情") [![后台-图片管理](https://tucang.cc/api/image/show/a077af0d2e8f7ae184fcf30a6d6fb562 "后台-图片管理")](https://tucang.cc "后台-图片管理") [![后台-图片管理](https://tucang.cc/api/image/show/058f1f13ded430712ef5f5af59193f1a "后台-图片管理")](https://tucang.cc "后台-图片管理") #### 标签管理 [![后台-标签管理](https://tucang.cc/api/image/show/844e46034ca58b3a08ee61c0a7ad016f "后台-标签管理")](https://tucang.cc "后台-标签管理") #### 防跑路导出 [![后台-防跑路导出](https://tucang.cc/api/image/show/4735d0831967ab4246e29614dd4d36c8 "后台-防跑路导出")](https://tucang.cc "后台-防跑路导出") #### 分发记录 [![后台-分发记录](https://tucang.cc/api/image/show/bdcb63fe2fa15de5a3003ec1e1c8f0d7 "后台-分发记录")](https://tucang.cc "后台-分发记录") #### 管理员-API管理 [![后台-管理员API管理](http://tucang.cc/api/image/show/eb81614103425ff7cde2b7415ad1e901 "后台-管理员API管理")](https://tucang.cc "后台-管理员API管理") #### 管理员-图片审核 [![后台-图片审核](https://tucang.cc/api/image/show/3e9efbcd7ae4e228cff6e672d362a84f "后台-图片审核")](https://tucang.cc "后台-图片审核") ### 最后 #### 如果本项目帮助到了你,可以给我提供建议和意见,如果身边有需要的人,也可以帮忙推荐一下,最后还烦请帮忙点个Star~