我開源了一個私人云盤——藍眼雲盤

藍眼雲盤

在線Demo (體驗帳號: demo@tank.eyeblue.cn 密碼:123456)html

後端tank地址前端

前端tank-front地址vue

簡介

藍眼雲盤是 藍眼系列開源軟件 之一,也是藍眼系列其餘軟件的基礎服務軟件。藍眼博客具備如下幾大特點:mysql

1. 支持dockerlinux

  • 藍眼雲盤的docker鏡像已經發布到了Docker Hub,能夠一行指令運行。

2. 軟件體積小,跨平臺,運行簡單git

  • 藍眼雲盤安裝包 6M左右,在windows linux mac OS操做系統中都可安裝運行;
  • 藍眼雲盤爲綠色軟件,將安裝包解壓縮,修改配置文件後便可一行命令當即運行。

3. 使用方便,核心功能齊全github

  • 藍眼雲盤主要支持pc web端,同時手機web也具備不錯的響應性支持。
  • 藍眼雲盤實現了雲盤(如:百度雲盤微雲 )的核心功能:文件夾管理,文件管理,上傳文件,下載文件,文件分享等。
  • 藍眼雲盤提供能帳號管理系統,超級管理員能夠管理用戶,查看用戶文件,普通用戶只能查看本身的文件,修改本身的資料。上面提供的體驗帳號就是一個普通用戶的帳號。

4. 支持接口編程golang

  • 藍眼雲盤提供了編程接口,實現了雲存儲(如:七牛雲阿里雲OSS )的核心功能,可使用編程接口上傳文件,做爲其餘網站、系統、app的資源存儲器。能夠在下載圖片時對圖片作縮放裁剪處理,能夠有效地節省客戶端流量。
  • 藍眼系列開源軟件之二的《藍眼博客》 正是使用藍眼博客做爲第三方資源存儲器。藍眼博客中的全部圖片,附件均是存儲在藍眼雲盤中。

5. 先後端分離,文檔豐富web

  • 項目後端使用golang開發,前端使用vue套件開發。
  • 藍眼雲盤有詳細的後臺api文檔 ,對於學習前端的童鞋而言能夠快速部署一個正式而又具備豐富接口的後端供學習使用。
  • 後端技術棧使用 golang,沒有使用任何web框架;初始化安裝,生命週期控制,路由管理,路由匹配,日誌管理,依賴注入,錯誤處理,panic攔截,打包,安裝腳本等功能全採用純手動打造,綠色環保,所以代碼更精煉,更具備探討學習的價值。

若是您以爲藍眼雲盤對您有幫助,請不要吝惜您的star sql

軟件截圖

PC端截圖

手機端截圖

Docker方式運行

藍眼雲盤在運行時依賴mysql數據庫,所以最好的方式是使用docker-compose來運行,若是你對docker-compose不熟悉,能夠參考這篇文章:《Docker Compose 項目》

1.準備 docker-compose.yml 文件
docker-compose.yml描述了鏡像啓動的數據卷,環境變量,啓動方式,依賴項等。該文件位於項目的根目錄下,內容以下:

#docker-compose版本,這裏的3不要動
version: "3"
services:

   # 數據庫的鏡像信息
   # 使用mysql:5.7的鏡像
   db:
     image: mysql:5.7
     volumes:
       # 數據庫文件存放在宿主機的`~/data/mysql`位置,若是宿主機目錄不存在,則會自動建立
       - ~/data/mysql:/var/lib/mysql
     # 若是啓動失敗,則老是會重啓。由於鏡像有依賴的狀況,不停重啓能夠保證依賴項啓動成功後本身再運行
     restart: always
     environment:
       # 指定root密碼爲`tank123`,而且建立一個新數據庫`tank`,同時用戶名和密碼爲`tank` `tank123`
       MYSQL_ROOT_PASSWORD: tank123
       MYSQL_DATABASE: tank
       MYSQL_USER: tank
       MYSQL_PASSWORD: tank123

   # 藍眼雲盤的鏡像信息
   # 依賴 mysql:5.7 的鏡像
   tank:
     image: eyeblue/tank:1.0.2
     depends_on:
       - db
     ports:
       # 端口映射關係,宿主機端口:鏡像端口
       - "6010:6010"
     # 若是啓動失敗,則老是會重啓。由於鏡像有依賴的狀況,不停重啓能夠保證依賴項啓動成功後本身再運行
     restart: always
     environment:
       # mysql的端口
       TANK_MYSQL_PORT: 3306
       # Mysql的主機,和services的第一個節點一致。
       TANK_MYSQL_HOST: db
       # 數據庫
       TANK_MYSQL_SCHEMA: tank
       # 數據庫的用戶名
       TANK_MYSQL_USERNAME: tank
       # 數據庫的密碼
       TANK_MYSQL_PASSWORD: tank123
       # 超級管理員的暱稱。只能是英文或數字
       TANK_ADMIN_USERNAME: admin
       # 超級管理員郵箱,做爲登陸帳號
       TANK_ADMIN_EMAIL: admin@tank.eyeblue.cn
       # 超級管理員密碼,做爲登陸密碼
       TANK_ADMIN_PASSWORD: 123456
     volumes:
       # 日誌文件存放在宿主機的`~/data/tank/log`位置,若是宿主機目錄不存在,則會自動建立
       - ~/data/tank/log:/data/log
       # 上傳文件存放在宿主機的`~/data/tank/matter`位置,若是宿主機目錄不存在,則會自動建立
       - ~/data/tank/matter:/data/matter

2.運行項目
首先保證當前目錄是docker-compose.yml所在的目錄,而後執行如下指令便可運行藍眼雲盤:

$ docker-compose up -d

3.驗證

因爲數據庫啓動須要必定的時間,所以大約20s後,打開瀏覽器訪問http://127.0.0.1:6010,若是看到登陸界面則表示運行成功。

4.中止項目

方法一:使用如下命令來中止藍眼雲盤

$ docker-compose stop

方法二:固然你也能夠用中止容器的方式來中止藍眼雲盤

$ docker container ls

CONTAINER ID        IMAGE                COMMAND                  CREATED             STATUS              PORTS                    NAMES
f5f64735fc53        eyeblue/tank:1.0.2   "/go/bin/tank"           20 minutes ago      Up 13 seconds       0.0.0.0:6010->6010/tcp   tank_tank_1
3a859cad3e7e        mysql:5.7            "docker-entrypoint.s…"   20 minutes ago      Up 14 seconds       3306/tcp                 tank_db_1

$ docker container stop f5
$ docker container stop 3a

若是你比較關心如何使用docker來構建藍眼雲盤,請參考 《Docker 化你的開源項目》

常規安裝

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": "admin@tank.eyeblue.cn",
  //超級管理員密碼
  "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
  • github.com/disintegration/imaging
  • github.com/json-iterator/go
  • github.com/go-sql-driver/mysql
  • github.com/jinzhu/gorm
  • github.com/nu7hatch/gouuid

其中golang.org/x國內沒法下載,默認會經過git clone 的方式從 這裏下載。其他依賴項均會經過go get的方式下載。

  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

藍眼雲盤編程接口

快速使用Let's Encrypt開啓我的網站的https

Docker 化你的開源項目

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
相關文章
相關標籤/搜索