《蓝眼云盘》(Eyeblue Cloud Storage)

蓝眼云盘logo

English Version

蓝眼云盘(3.1.2)

在线Demo (体验账号: demo 密码:123456)

蓝眼云盘是蓝眼开源系列代表作品之一,致力于打造精致,优雅,简约的云盘。核心功能如下:

  1. 文件列表
  2. 文件/文件夹上传 + 拖拽上传
  3. 文件分享
  4. 文件监控统计
  5. 回收站
  6. 多用户
  7. WebDav
  8. 扫描磁盘任务
  9. 在线预览及自定义配置预览引擎

更多内容请移步至文档

软件截图

PC端截图

手机端截图

安装文档

Contribution

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

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

当然你可以加入钉钉群一起直接交流,在钉钉群中可以获取最新beta版本。

群号:23156361

License

MIT

Copyright (c) 2017-present, eyeblue.cn

Owner
蓝眼
专注于开源精致而优雅的软件
蓝眼
Comments
  • Create SECURITY.md

    Create SECURITY.md

    Hey there!

    I belong to an open source security research community, and a member (@veloideu) has found an issue, but doesn’t know the best way to disclose it.

    If not a hassle, might you kindly add a SECURITY.md file with an email, or another contact method? GitHub recommends this best practice to ensure security issues are responsibly disclosed, and it would serve as a simple instruction for security researchers in the future.

    Thank you for your consideration, and I look forward to hearing from you!

    (cc @huntr-helper)

  • Cannot get latest version: module contains a go.mod file, so module path should be github.com/eyebluecn/tank/v3

    Cannot get latest version: module contains a go.mod file, so module path should be github.com/eyebluecn/tank/v3

    Background

    The github.com/eyebluecn/tank uses Go modules and the current release version is v3. And it’s module path is "github.com/eyebluecn/tank", instead of "github.com/eyebluecn/tank/v3". It must comply with the specification of "Releasing Modules for v2 or higher" available in the Modules documentation. Quoting the specification:

    A package that has opted in to modules must include the major version in the import path to import any v2+ modules To preserve import compatibility, the go command requires that modules with major version v2 or later use a module path with that major version as the final element. For example, version v2.0.0 of example.com/m must instead use module path example.com/m/v2. https://github.com/golang/go/wiki/Modules#releasing-modules-v2-or-higher

    Steps to Reproduce

    GO111MODULE=on, run go get targeting any version >= v3.0.0 of the eyebluecn/tank:

    $ go get github.com/eyebluecn/[email protected]
    go: finding github.com/eyebluecn/tank v3.0.3
    go: finding github.com/eyebluecn/tank v3.0.3
    go get github.com/eyebluecn/[email protected]: github.com/eyebluecn/[email protected]: invalid version: module contains a go.mod file, so major version must be compatible: should be v0 or v1, not v3
    

    run go get github.com/eyebluecn/tank, the version will stuck in v1.0.5:

    $go get github.com/eyebluecn/tank
    go: downloading github.com/eyebluecn/tank v1.0.5
    go: github.com/eyebluecn/tank upgrade => v1.0.5
    

    SO anyone using Go modules will not be able to easily use any newer version of eyebluecn/tank.

    Solution

    1. Kill the go.mod files, rolling back to GOPATH.

    This would push them back to not being managed by Go modules (instead of incorrectly using Go modules). Ensure compatibility for downstream module-aware projects and module-unaware projects projects

    I see these dependencies in your go.mod file, which need modle awareness. So you'd better not use third-party tools(such as: Dep, glide, govendor…).

    github.com/robfig/cron/v3 v3.0.1
    

    You also need to update the import path to:

    import github.com/robfig/cron/…
    

    2. Fix module path to strictly follow SIV rules.

    Patch the go.mod file to declare the module path as github.com/eyebluecn/tank/v3 as per the specs. And adjust all internal imports. The downstream projects might be negatively affected in their building if they are module-unaware (Go versions older than 1.9.7 and 1.10.3; Or use third-party dependency management tools, such as: Dep, glide,govendor…).

    If you don't want to break the above repos. This method can provides better backwards-compatibility. Release a v2 or higher module through the major subdirectory strategy: Create a new v3 subdirectory (github.com/eyebluecn/tank/v3) and place a new go.mod file in that subdirectory. The module path must end with /v3. Copy or move the code into the v3 subdirectory. Update import statements within the module to also use /v3 (import "github.com/eyebluecn/tank/v3/…"). Tag the release with v3.x.y.

    3. Suggest your downstream module users to use hash instead of a version tag.

    If the standard rule of go modules conflicts with your development mode. Or not intended to be used as a library and does not make any guarantees about the API. So you can’t comply with the specification of "Releasing Modules for v2 or higher" available in the Modules documentation. Regardless, since it's against one of the design choices of Go, it'll be a bit of a hack. Instead of go get github.com/eyebluecn/tank@version-tag, module users need to use this following way to get the eyebluecn/tank: (1) Search for the tag you want (in browser) (2) Get the commit hash for the tag you want (3) Run go get github.com/eyebluecn/tank@commit-hash (4) Edit the go.mod file to put a comment about which version you actually used This will make it difficult for module users to get and upgrade eyebluecn/tank.

    [*] You can see who will be affected here: [2 module users, e.g., 0x1un/tank, gzy403999903/tank] https://github.com/search?l=&q=eyebluecn%2Ftank+filename%3Ago.mod&type=Code

    Summary

    You can make a choice to fix DM issues by balancing your own development schedules/mode against the affects on the downstream projects.

    For this issue, Solution 2 can maximize your benefits and with minimal impacts to your downstream projects the ecosystem.

    References

    • https://github.com/golang/go/wiki/Modules#semantic-import-versioning
    • https://golang.org/cmd/go/#hdr-Module_compatibility_and_semantic_versioning
    • https://github.com/golang/go/wiki/Modules#releasing-modules-v2-or-higher
  • 自定义预览引擎跳转链接格式支持

    自定义预览引擎跳转链接格式支持

    image

    文档里贴了 kkfileview 的链接 , 但是目前 kkfileview 的最新版需要 urlencode + base64encode 两步, 而自定义的预览引擎只做了urlencode, 是否可以配置化支持一下呢

    image

    https://tank-doc.eyeblue.cn/advance/preview.html https://kkfileview.keking.cn/zh-cn/docs/home.html

  • 希望回收站文件移动到其他位置

    希望回收站文件移动到其他位置

    我这里使用场景可能有点特殊:在内网里用 Samba/NFS 直接挂载驱动器,在外网使用蓝眼作为前端。 在这种场景下,直接挂载的场景就能够看到回收站里的内容,和网页中的内容不一致。 WebDAV 确实是一个好的替代方案,但是目前的 WebDAV 实现中,内网写入文件大约只有一个文件每秒,我的小文件又比较多,所以不是很方便。

    与此同时,这也可以解决 #112 。

    当然,从我个人角度来说,如果可以完全禁用回收站也是可以接受的。 不过即使我把回收站保留天数调整为 0,文件似乎还是会先进入回收站。

  • webdav功能有问题

    webdav功能有问题

    用的软件是zotero,同步文献用的webdav,用坚果云,nextcloud的webdav都正常,填入这个网盘的webdav地址就不行,如图 image 然后我用demo的webdav地址同样不行。 最后试了一下win10直接挂载远端vps的webdav, 能挂载上,也能读取数据, 但是往里面复制文件就有问题,哪怕新建文件也会报错 image 求解决,另外这个网盘网页响应速度真的好快,甩nextcloud几十条街哈哈

  • 上传文件缓存错误,提示bufio: buffer full

    上传文件缓存错误,提示bufio: buffer full

    系统:DietPi_VMware-x86_64-Buster V7.2 云盘:tank-3.1.2.linux-amd64 数据库:MariaDB Server version: 10.3.27 错误信息:[ERROR] 18:43:32 tank_router.go:98 panic on matter_controller.go:239 multipart: NextPart: bufio: buffer full 错误描述:使用管理员账号上传3.2G的文件,当文件上传到1G时进度条不动,过几秒钟后shell报错。

  • 软连接

    软连接

    建议增加对于软连接的支持,以方便在多个硬盘的场景下应用。 我现在使用的是3.1.2,直接使用ln -s在物理根目录下建立一个软连接,扫描之后会被认为成一个无拓展名的文件。 先在网页中建立一个文件夹,然后删除文件夹,用同名软连接代替,则可以正常从网页向被链接文件夹上传下载文件,但是扫描无法扫描到文件夹中的原有文件或者其他途径放进来的文件。

  • docker 版本 mapping volume 的問題

    docker 版本 mapping volume 的問題

    我的docker-compose 如下

    version: "3"
    services:
       db:
         image: mysql:5.7
         volumes:
           - ./mysql:/var/lib/mysql
         restart: always
         environment:
           MYSQL_ROOT_PASSWORD: tank123
           MYSQL_DATABASE: tank
           MYSQL_USER: tank
           MYSQL_PASSWORD: tank123
       tank:
         image: eyeblue/tank:3.0.5
         depends_on:
           - db
         ports:
           - "6010:6010"
         restart: always
         environment:
           TANK_MYSQL_PORT: 3306
           TANK_MYSQL_HOST: db
           TANK_MYSQL_SCHEMA: tank
           TANK_MYSQL_USERNAME: tank
           TANK_MYSQL_PASSWORD: tank123
           TANK_ADMIN_USERNAME: admin
           TANK_ADMIN_EMAIL: [email protected]
           TANK_ADMIN_PASSWORD: 123456
         volumes:
           - ./tank.json:/data/build/conf/tank.json
           - ./log:/data/log
           - ./matter:/data/matter
           #- ./data:/data
    
    

    我想要在該目錄底下直接能夠看到所有人上傳的檔案 可是在docker 主機上面看 log / matter 目錄底下永遠都是空的

    但是在容器裡面是可以找到我上傳的檔案的 請問該怎麼正確的設定 volume ?

    我嘗試加入最後一行,去export 整個 /data 但是啟動時會出錯

    ERROR: for tank_tank_1  Cannot start service tank: failed to create shim: OCI runtime create failed: runc create failed: unable to start container process: exec: "/data/build/tank": stat /data/build/tank: no such file or directory: unknown
    
    ERROR: for tank  Cannot start service tank: failed to create shim: OCI runtime create failed: runc create failed: unable to start container process: exec: "/data/build/tank": stat /data/build/tank: no such file or directory: unknown
    
  • Add SSL

    Add SSL

    eg:tank.json { "ServerPort": 6012, "MatterPath": "", "SSLCertFile":"C:/Workspaces/SSL/server.pem", "SSLKeyFile":"C:/Workspaces/SSL/server.key" }

The Container Storage Interface (CSI) Driver for Fortress Block Storage This driver allows you to use Fortress Block Storage with your container orchestrator

fortress-csi The Container Storage Interface (CSI) Driver for Fortress Block Storage This driver allows you to use Fortress Block Storage with your co

Jan 23, 2022
Cloud-Z gathers information and perform benchmarks on cloud instances in multiple cloud providers.

Cloud-Z Cloud-Z gathers information and perform benchmarks on cloud instances in multiple cloud providers. Cloud type, instance id, and type CPU infor

Jun 8, 2022
Openshift's hpessa-exporter allows users to export SMART information of local storage devices as Prometheus metrics, by using HPE Smart Storage Administrator tool

hpessa-exporter Overview Openshift's hpessa-exporter allows users to export SMART information of local storage devices as Prometheus metrics, by using

Jan 17, 2022
The GCP Enterprise Cloud Cost Optimiser, or gecco for short, helps teams optimise their cloud project costs.
The GCP Enterprise Cloud Cost Optimiser, or gecco for short, helps teams optimise their cloud project costs.

gecco helps teams optimise their cloud resource costs. Locate abandoned, idle, and inefficiently configured resources quickly. gecco helps teams build

Jan 9, 2022
An open-source, distributed, cloud-native CD (Continuous Delivery) product designed for developersAn open-source, distributed, cloud-native CD (Continuous Delivery) product designed for developers
An open-source, distributed, cloud-native CD (Continuous Delivery) product designed for developersAn open-source, distributed, cloud-native CD (Continuous Delivery) product designed for developers

Developer-oriented Continuous Delivery Product ⁣ English | 简体中文 Table of Contents Zadig Table of Contents What is Zadig Quick start How to use? How to

Oct 19, 2021
Cloud-gaming-operator - The one that manages VMs for cloud gaming built on GCE

cloud-gaming-operator GCE上に建てたクラウドゲーミング用のVMを管理するやつ 事前準備 GCEのインスタンスかマシンイメージを作成してお

Jan 22, 2022
Cloud-on-k8s- - Elastic Cloud on Kubernetes (ECK)

Elastic Cloud on Kubernetes (ECK) Elastic Cloud on Kubernetes automates the depl

Jan 29, 2022
An application-oriented unified storage layer for Golang.

storage An application-oriented unified storage layer for Golang. Goal Production ready High performance Vendor agnostic Features Widely services supp

Dec 21, 2022
Sample Driver that provides reference implementation for Container Object Storage Interface (COSI) API

cosi-driver-minio Sample Driver that provides reference implementation for Container Object Storage Interface (COSI) API Community, discussion, contri

Oct 10, 2022
topolvm operator provide kubernetes local storage which is light weight and high performance

Topolvm-Operator Topolvm-Operator is an open source cloud-native local storage orchestrator for Kubernetes, which bases on topolvm. Supported environm

Nov 24, 2022
An high performance and ops-free local storage solution for Kubernetes.
An high performance and ops-free local storage solution for Kubernetes.

Carina carina 是一个CSI插件,在Kubernetes集群中提供本地存储持久卷 项目状态:开发测试中 CSI Version: 1.3.0 Carina architecture 支持的环境 Kubernetes:1.20 1.19 1.18 Node OS:Linux Filesys

May 18, 2022
Carina: an high performance and ops-free local storage for kubernetes
Carina: an high performance and ops-free local storage for kubernetes

Carina English | 中文 Background Storage systems are complex! There are more and more kubernetes native storage systems nowadays and stateful applicatio

Dec 30, 2022
Container Storage Interface components for SPIFFE

SPIFFE CSI Driver WARNING: This project is in the "Development" phase of the SPIFFE Project Maturity Phases. A Container Storage Interface driver for

Jan 3, 2023
StaticBackend is a simple backend server API handling user mgmt, database, storage and real-time component
StaticBackend is a simple backend server API handling user mgmt, database, storage and real-time component

StaticBackend is a simple backend that handles user management, database, file storage, forms, and real-time experiences via channel/topic-based communication for web and mobile applications.

Jan 7, 2023
A set of components that can be composed into a highly available metric system with unlimited storage capacity
A set of components that can be composed into a highly available metric system with unlimited storage capacity

Overview Thanos is a set of components that can be composed into a highly available metric system with unlimited storage capacity, which can be added

Oct 20, 2021
Dynamically provisioning persistent local storage with Kubernetes

Local Path Provisioner Overview Local Path Provisioner provides a way for the Kubernetes users to utilize the local storage in each node. Based on the

Jan 4, 2023
Flash-metrics - Flash Metrics Storage With Golang

Flash Metrics Storage bootstrap: $ echo -e "max-index-length = 12288" > tidb.con

Jan 8, 2022
Imaginarium - A simple golang image storage engine

Imaginarium A simple golang image storage engine. Used to create and store diffe

Jan 10, 2022
A letsencrypt client that uses etcd as its storage.

letsencrypt-with-etcd This is a letsencrypt client that uses etcd as its storage. It stores your (automatically created) LetsEncrypt account in /letse

Jan 20, 2022