V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zicla
V2EX  ›  开源软件

我开源了一个私人云盘——蓝眼云盘

  •  5
     
  •   zicla · 2018-01-16 11:25:44 +08:00 · 14326 次点击
    这是一个创建于 2539 天前的主题,其中的信息可能已经有所发展或是发生改变。

    蓝眼云盘

    在线 Demo (体验账号: [email protected] 密码:123456)

    后端 tank 地址

    前端 tank-front 地址

    简介

    蓝眼云盘是 蓝眼系列开源软件 之一,也是蓝眼系列其他软件的基础服务软件。蓝眼博客具有以下几大特色:

    1. 软件体积小,跨平台,运行简单

    • 蓝眼云盘[安装包](( https://github.com/eyebluecn/tank/releases)6M 左右,在windows linux mac OS操作系统中均可安装运行;

    • 蓝眼云盘为绿色软件,将安装包解压缩,修改配置文件后即可一行命令立即运行。

    2. 使用方便,核心功能齐全

    • 蓝眼云盘主要支持 pc web 端,同时手机 web 也具有不错的响应性支持。

    • 蓝眼云盘实现了云盘(如:百度云盘微云)的核心功能:文件夹管理,文件管理,上传文件,下载文件,文件分享等。

    • 蓝眼云盘提供能账号管理系统,超级管理员可以管理用户,查看用户文件,普通用户只能查看自己的文件,修改自己的资料。上面提供的体验账号就是一个普通用户的账号。

    3. 支持接口编程

    • 蓝眼云盘提供了编程接口,实现了云存储(如:七牛云阿里云 OSS)的核心功能,可以使用编程接口上传文件,作为其他网站、系统、app 的资源存储器。可以在下载图片时对图片做缩放裁剪处理,可以有效地节省客户端流量。

    • 蓝眼系列开源软件之二的《蓝眼博客》正是使用蓝眼博客作为第三方资源存储器。蓝眼博客中的所有图片,附件均是存储在蓝眼云盘中。

    4. 前后端分离,文档丰富

    • 项目后端使用 golang 开发,前端使用 vue 套件开发。

    • 蓝眼云盘有详细的后台 api 文档,对于学习前端的童鞋而言可以快速部署一个正式而又具有丰富接口的后端供学习使用。

    • 后端技术栈使用 golang,没有使用任何 web 框架;初始化安装,生命周期控制,路由管理,路由匹配,日志管理,依赖注入,错误处理,panic 拦截,打包,安装脚本等功能全采用纯手动打造,绿色环保,因此代码更精炼,更具有探讨学习的价值。

    如果您觉得蓝眼云盘对您有帮助,请不要吝惜您的 star

    软件截图

    安装

    ** a) 准备工作 **

    1. 一台 windows/linux 服务器,当然你可以使用自己的电脑充当这台服务器

    2. 安装好 Mysql 数据库

    3. 在这里下载服务器对应的安装包

    4. 在服务器上解压缩,修改配置文件conf/tank.json,各项说明如下:

    {
       //服务器运行的端口,默认 6010。如果配置为 80,则可直接用 http 打开
      "ServerPort": 6010,
      //日志是否需要打印到控制台,默认 false,主要用于调试
      "LogToConsole": false,
      //Mysql 端口,默认 3306
      "MysqlPort": 3306,
      //Mysql 主机
      "MysqlHost": "127.0.0.1",
      //Mysql 数据库名称
      "MysqlSchema": "tank",
      //Mysql 用户名,建议为蓝眼云盘创建一个用户,不建议使用 root
      "MysqlUserName": "tank",
      //Mysql 密码
      "MysqlPassword": "tank123",
      //超级管理员用户名,只能是字母和数字
      "AdminUsername": "admin",
      //超级管理员邮箱,作为登录的账号
      "AdminEmail": "[email protected]",
      //超级管理员密码
      "AdminPassword": "123456"
    }
    
    

    ** b) 运行 **

    • windows 平台直接双击应用目录下的tank.exe

    • linux 平台执行

    cd 应用目录路径
    ./tank
    

    如果你希望关闭 shell 窗口后,应用依然运行,请使用以下脚本启动和停止

    # 启动应用
    cd 应用目录路径 /service
    ./startup.sh
    
    # 停止应用
    cd 应用目录路径 /service
    ./shutdown.sh
    
    

    ** c) 验证 **

    浏览器中打开 http://127.0.0.1:6010 (127.0.0.1 请使用服务器所在 ip,6010 请使用tank.json中配置的ServerPort) 可以看到登录页面,并且使用配置文件中的邮箱和密码登录成功后可以看到全部文件(见上文截图)即表示安装成功。

    使用源代码自行打包

    前端项目打包

    1. clone tank-front

    2. 安装依赖项

    npm install
    
    1. 执行打包命令
    npm run build
    
    1. 通过前面三步可以在dist文件夹下得到打包后的静态文件,将dist目录下的所有文件拷贝到后端项目的build/html文件夹下。(下文的工程目录中也有说明)

    后端项目打包

    1. clone tank

    2. 安装 Golang,环境变量GOPATH配置到工程目录,建议工程目录结构如下:

    golang                       #环境变量 GOPATH 所在路径
    ├── bin                      #编译生成的可执行文件目录
    ├── pkg                      #编译生成第三方库
    ├── src                      #golang 工程源代码
    │   ├── github.com           #来自 github 的第三方库
    │   ├── golang.org           #来自 golang.org 的第三方库
    │   ├── tank                 #clone 下来的 tank 根目录
    │   │   ├── build            #用来辅助打包的文件夹
    │   │   │   ├── conf         #默认的配置文件
    │   │   │   ├── doc          #文档
    │   │   │   ├── html         #前端静态资源,从项目 tank-front 编译获得
    │   │   │   ├── pack         #打包的脚本
    │   │   │   ├── service      #将 tank 当作服务启动的脚本
    │   │   ├── dist             #运行打包脚本后获得的安装包目录
    │   │   ├── rest             #golang 源代码
          
    
    1. 准备项目依赖的第三方库

    其中golang.org/x国内无法下载,请从这里下载,并按上文推荐的目录结构放置。其余依赖项均可通过安装脚本自动下载。

    1. 打包
    • windows 平台双击运行 tank/build/pack/build.bat,成功之后可在tank/dist下看到tank-x.x.x文件夹,该文件夹即为最终安装包。

    • linux 平台运行如下命令:

    cd tank/build/pack/
    ./build.sh
    

    成功之后可在tank/dist下看到tank-x.x.x.linux-amd64.tar.gz

    利用得到的安装包即可参考上文的安装一节进行安装。

    相关文档

    蓝眼云盘后端 api

    蓝眼云盘编程接口

    Contribution

    感谢所有蓝眼云盘的贡献者 @zicla@seaheart@yemuhe@hxsherry

    如果您也想参与进来,请尽情的 fork, star, post issue, pull requests

    License

    MIT

    Copyright (c) 2017-present, eyeblue.cn

    注: 原文发布于蓝眼博客 http://blog.eyeblue.cn/home/article/8953d493-f80a-4be0-bde2-50d3c5747430

    63 条回复    2019-01-18 21:37:32 +08:00
    zicla
        1
    zicla  
    OP
       2018-01-16 11:33:29 +08:00   ❤️ 1
    为什么使用 golang 来开发?因为 golang 这几年上升特别快,正好也想用来练手一下;另一方面 golang 编译简单,最后就一个可执行文件,用于做软件分发太合适了。
    bubue
        2
    bubue  
       2018-01-16 13:40:20 +08:00
    错误类的提示比如我上传了一个文件,等待过程中去其他 Tab 网页了,可能会看不到结果。
    zicla
        3
    zicla  
    OP
       2018-01-16 13:58:45 +08:00
    @bubue 文件最终还是上传成功了吧?
    bubue
        4
    bubue  
       2018-01-16 14:32:51 +08:00
    @zicla #3 ch 超过了 1M
    zicla
        5
    zicla  
    OP
       2018-01-16 14:51:34 +08:00
    @bubue 因为这个是 demo 账号,我不能把上传限制放太大,否则我的服务器流量烧钱那个心痛啊。不过如果你自己部署一个蓝眼云盘的话,你可以对任何用户设置任何大小限制 ^_^
    FFLY
        6
    FFLY  
       2018-01-16 14:59:59 +08:00
    功能太少了,没法和 Nextcloud 这样的产品比。
    mokeyjay
        7
    mokeyjay  
       2018-01-16 15:00:07 +08:00
    看起来不错,开源项目都 应该滋糍一个
    另外,已经被挂色情广告了
    zicla
        8
    zicla  
    OP
       2018-01-16 15:05:40 +08:00
    @FFLY,做这个开源的目的就是追求小而精,方便程序员根据自己的需求做二次开发。
    zicla
        9
    zicla  
    OP
       2018-01-16 15:06:57 +08:00
    @mokeyjay 在线体验的链接没有做 https,我这边看就没有色情广告,是不是你的 DNS 被劫持了啊?
    ztshia
        10
    ztshia  
       2018-01-16 15:11:20 +08:00
    每一款产品都有完善的过程,鼓励一下
    cy97cool
        11
    cy97cool  
       2018-01-16 15:12:29 +08:00
    能不能提供个 Dockerfile 并 push 到 DockerHub,这样就只要一条 docker run 命令就部署好了 233333
    zicla
        12
    zicla  
    OP
       2018-01-16 15:12:38 +08:00
    @ztshia 谢谢鼓励支持^_^
    zicla
        13
    zicla  
    OP
       2018-01-16 15:13:45 +08:00
    @cy97cool 这个提议非常不错啊,我接下来去尝试一下
    cy97cool
        14
    cy97cool  
       2018-01-16 15:15:34 +08:00
    release 用的域名 tank.eyeblue.cn 没配 https 证书?

    下载的时候似乎也没有给出 Content-Length 不能估计下载完成时间
    zicla
        15
    zicla  
    OP
       2018-01-16 15:17:06 +08:00
    @cy97cool 大兄弟测试得很仔细啊。 对,还没有配置 https 证书; Content-Length 确实还没给出,在下一版中会 fix 这两个问题
    chen2016
        16
    chen2016  
       2018-01-16 15:23:03 +08:00 via Android
    手机体验不好
    zicla
        17
    zicla  
    OP
       2018-01-16 15:27:29 +08:00
    @chen2016 确实,前面只是稍带做了一下响应式,手机还没有进行过集中优化,后面的重头戏就是手机的体验了
    terrytw
        18
    terrytw  
       2018-01-16 15:29:59 +08:00
    @mokeyjay
    我这边没看到
    大概是你被劫持了
    cy97cool
        19
    cy97cool  
       2018-01-16 15:38:26 +08:00
    @terrytw 其实是我手动删掉的。。。
    terrytw
        20
    terrytw  
       2018-01-16 15:40:38 +08:00
    @cy97cool .....哈哈
    zicla
        21
    zicla  
    OP
       2018-01-16 15:42:39 +08:00
    这些来体验的小伙伴真的很皮,有一个上传色情图片的,有一个创建了十几层“新建文件夹”
    cnbattle
        22
    cnbattle  
       2018-01-16 15:43:51 +08:00 via Android
    收藏,有时间折腾了,正好也在学习 go
    mokeyjay
        23
    mokeyjay  
       2018-01-16 15:46:19 +08:00
    @terrytw #18
    @zicla #9 不,是有人创建了带色情 url 的文件夹……
    zachgenius
        24
    zachgenius  
       2018-01-16 16:21:22 +08:00
    不错!!!1
    nealwx
        25
    nealwx  
       2018-01-16 17:43:02 +08:00
    咦, 怎么登不进了
    fyibmsd
        26
    fyibmsd  
       2018-01-16 18:02:02 +08:00
    离线下载有吗
    zicla
        27
    zicla  
    OP
       2018-01-16 18:08:38 +08:00
    @nealwx 被其他皮孩子把密码给改了,我已经改回去了。123456
    zicla
        28
    zicla  
    OP
       2018-01-16 18:09:59 +08:00
    @fyibmsd 自己部署后,存在服务器上的东西就相当于已经离线下载好了,下载速度完全取决于你的服务器带宽了。
    shawn7
        29
    shawn7  
       2018-01-16 18:13:45 +08:00 via Android
    赞,晚上回去体验一下
    Hallujah
        30
    Hallujah  
       2018-01-16 18:33:07 +08:00 via Android
    看着挺好的,鼓励一下,加油。
    zicla
        31
    zicla  
    OP
       2018-01-16 18:43:00 +08:00
    @Hallujah 谢谢支持鼓励 ^_^
    zicla
        32
    zicla  
    OP
       2018-01-16 18:43:17 +08:00
    @shawn7 谢谢鼓励支持~
    SKull4
        33
    SKull4  
       2018-01-16 19:29:01 +08:00
    前排顶帖,支持爽哥
    natforum
        34
    natforum  
       2018-01-16 19:55:38 +08:00
    呲磁
    zicla
        35
    zicla  
    OP
       2018-01-16 19:57:50 +08:00
    @SKull4 老铁你也是贡献者啊,用你的 simba 啊
    Tink
        36
    Tink  
       2018-01-16 21:57:05 +08:00 via iPhone
    感觉挺好,极简至上
    closedevice
        37
    closedevice  
       2018-01-16 22:05:11 +08:00
    我想知道怎么一个人搞定全平台的
    zicla
        38
    zicla  
    OP
       2018-01-16 22:17:23 +08:00
    @closedevice 目标是全栈工程师嘛,我打主力,还有三个小伙伴协作完成的。
    zicla
        39
    zicla  
    OP
       2018-01-16 22:18:35 +08:00
    @Tink 对,特色就是小而精,没有那些花哨的功能,谢谢认同
    beiposhiming
        40
    beiposhiming  
       2018-01-16 22:18:39 +08:00 via iPhone
    不错!
    yxisenx
        41
    yxisenx  
       2018-01-16 23:10:21 +08:00 via Android
    安卓 7.0,Chrome63,文件名显示乱码
    zicla
        42
    zicla  
    OP
       2018-01-16 23:20:54 +08:00
    @yangbiaocc OK 先代你提一个 issue.
    zuoshoufantexi
        43
    zuoshoufantexi  
       2018-01-16 23:37:17 +08:00
    不错呀,有分享功能吗?
    zicla
        44
    zicla  
    OP
       2018-01-16 23:46:37 +08:00
    @zuoshoufantexi 有分享功能,不过仅限于公有文件(任何人都能访问)和私有文件(仅上传者可以访问),没有做提取码这种功能。如果后面该功能需求大的话,可以考虑增强。
    nciyuan
        45
    nciyuan  
       2018-01-16 23:50:08 +08:00 via Android
    我说,这位,您可真是没用过 V2 吗,回复是扣积分的,签到的那点可怜的分就够你一个主题,回复时请一次把话说完整,然后一个帖子可以回复多人,先艾特,然后写内容,空一行,下一个
    还有,建议您的 demo 服务器可以增加安全性,比如禁止修改密码,或者假改,于本贴发出之时密码错误无法登录
    majinjing3
        46
    majinjing3  
       2018-01-16 23:55:31 +08:00 via Android
    已 star,支持,看起来不错
    zicla
        47
    zicla  
    OP
       2018-01-17 01:38:40 +08:00
    @nciyuan 谢谢你的提醒,确实刚用 v2 不久。 另外,已经限制了 demo 账号的修改密码权限,目前已经可以正常登录了。

    @majinjing3 感谢支持~
    vefawn1
        48
    vefawn1  
       2018-01-17 03:23:09 +08:00 via Android
    感觉挺不错的样子。

    请楼主回答一下我两个问题:
    1,是否支持自动同步备份文件功能?
    2,网盘里的文件是否支持在线预览 /播放功能?
    mengyaoss77
        49
    mengyaoss77  
       2018-01-17 11:16:33 +08:00
    支持一下
    precisi0nux
        50
    precisi0nux  
       2018-01-17 11:19:06 +08:00
    非常棒,非常有学习价值,先 star 为敬。
    zicla
        51
    zicla  
    OP
       2018-01-17 12:18:48 +08:00
    @cy97cool Content-Length 的 Header 头目前已经加上了,可以预估下载时间啦。

    @vefawn1 1.由于目前没有专门做 Android 和 iOS 端,都是统一的 web 端,因此就没有同步备份文件的功能。2. 目前没有在线预览的功能,如果是图片的话,直接点开浏览器会默认进行预览。

    @mengyaoss77 @precisi0nux 多写支持。
    hoythan
        52
    hoythan  
       2018-01-17 14:24:02 +08:00
    随便一试就出一个 bug 根目录全选文件后选择移动到一个已经被选中移动的文件夹内,直接全部消失,啥都没了。
    NotNil1
        53
    NotNil1  
       2018-01-17 17:44:56 +08:00
    第一无法删除用户,说找不到 del 的 api ;
    第二安装到 linux 首页白屏,没有反应,需要什么环境支持吗,我的服务器上没啥环境。
    zicla
        54
    zicla  
    OP
       2018-01-17 19:33:56 +08:00
    @hoythan 确实有移动到自己就看不到的 bug,我先记录到 issue 中,应该今明天就能 fix 好。

    @ljtletters 第一个问题确实存在,原本是打算不能删除用户,只能禁用用户的,到后面这个功能做着做着就岔了,变成一会儿禁用一会儿删除了。我先记录到 issue 中,会尽快修复。第二个问题具体是怎样的?需要的环境就是一个 tank 安装包和一个 mysql 数据库就可以了。
    NotNil1
        55
    NotNil1  
       2018-01-18 10:36:46 +08:00
    @zicla 第二个问题我的日志也纸打印了一条,没有报错,我指的环境比如 php 什么的,我的是 centos7,几乎没啥东西。
    App started at http://localhost:80
    zicla
        56
    zicla  
    OP
       2018-01-18 14:13:15 +08:00
    @ljtletters 这里留言太贵了。。。你到 issue 中反馈这个问题,然后我帮你解决。
    longislet
        57
    longislet  
       2018-01-27 16:04:10 +08:00
    源码被 WindowsDefender 报毒。
    longislet
        58
    longislet  
       2018-01-27 16:06:19 +08:00
    报毒类型为 Trojan:Win32/Sprisky.U!cl
    zicla
        59
    zicla  
    OP
       2018-01-28 00:04:57 +08:00
    @longislet 这不应该啊,能看到是哪个文件报毒了吗?
    longislet
        60
    longislet  
       2018-01-29 10:05:26 +08:00 via Android
    @zicla 整个 zip 文件,把 zip 文件拉白后解压,发现所有 exe 都报毒...不知道巨硬怎么想的。
    zicla
        61
    zicla  
    OP
       2018-01-30 14:26:36 +08:00
    @cy97cool 特意告知,在你的建议后,认真研究 docker。目前 docker 功能目前已经支持了 这里是 docker 化的详细过程以及使用方法 https://blog.eyeblue.cn/home/article/510f9316-9ca1-40fe-b1b3-5285505a527d
    iiusky
        62
    iiusky  
       2019-01-18 10:33:59 +08:00
    支持- -种子下载和离线下载就牛逼了
    zicla
        63
    zicla  
    OP
       2019-01-18 21:37:32 +08:00
    @iiusky 那就是去干迅雷的节奏了😂,目前还只具有最基础的功能
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   902 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 20:08 · PVG 04:08 · LAX 12:08 · JFK 15:08
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.