1. 程式人生 > >Docker搭建企業內部私有云盤/開源網盤系統

Docker搭建企業內部私有云盤/開源網盤系統

轉載來源:https://manual-cn.seafile.com/deploy/deploy_with_docker.html

 

Docker搭建企業內部私有云盤/網盤系統

 

快速搭建

# 執行下面,等會兒開啟http://127.0.0.1:80即可
docker run -d --name seafile \
  -e SEAFILE_SERVER_HOSTNAME=127.0.0.1 \
  -v ~/docker/seafile:/shared \
  -p 8028:80 \
  seafileltd/seafile:latest

 

關於

  • Docker 是一個可以打包應用以及依賴包到一個可移植的容器中,以更輕量的方式執行Linux應用程式, 這比傳統的虛擬機器要更快.

  • Docker 可以讓您在伺服器上更輕鬆的部署以及更新 Seafile服務.

  • 在映象中會使用 Seafile 團隊推薦的配置作為預設配置.

如果您並不熟悉 Docker 的命令,請參考docker文件.

注意:本文件僅包含了在 docker 下部署 Seafile 開源版的方法,如果您想要在 docker 下部署 Seafile 專業版,請參考用 Docker 部署 Seafile-Pro 服務

 

快速開始

執行 Seafile 服務容器:

docker run -d --name seafile \
  -e SEAFILE_SERVER_HOSTNAME=seafile.example.com \
  -v /opt/seafile-data:/shared \
  -p 80:80 \
  seafileltd/seafile:latest

第一次執行會進行初始化,等待幾分鐘然後通過訪問http://seafile.example.com檢視 Seafile 的Web介面.

這條命令會將宿主機上的/opt/seafile-data目錄掛載到 Seafile 容器中,你可以在這裡找到日誌或其他的資料檔案.

 

更多配置選項

自定義管理員使用者名稱和密碼

預設的管理員賬號以及密碼分別為[email protected]asecret.你可以通過設定容器的環境變數來改變初始化時生成的管理員的賬號和密碼.

例如:

docker run -d --name seafile \
  -e SEAFILE_SERVER_HOSTNAME=seafile.example.com \
  -e [email protected] \
  -e SEAFILE_ADMIN_PASSWORD=a_very_secret_password \
  -v /opt/seafile-data:/shared \
  -p 80:80 \
  seafileltd/seafile:latest

如果您忘記了管理員密碼,你可以新增一個新的管理員賬號,然後通過這個新的管理員賬號重置之前的管理員密碼.

向Let's encrypt申請SSL證書

如果您設定SEAFILE_SERVER_LETSENCRYPTtrue, 那麼容器會自動根據設定的主機名向Let's encrypt申請SSL證書

例如:

docker run -d --name seafile \
  -e SEAFILE_SERVER_LETSENCRYPT=true \
  -e SEAFILE_SERVER_HOSTNAME=seafile.example.com \
  -e [email protected] \
  -e SEAFILE_ADMIN_PASSWORD=a_very_secret_password \
  -v /opt/seafile-data:/shared \
  -p 80:80 \
  -p 443:443 \
  seafileltd/seafile:latest

如果你想使用已經擁有的SSL證書:

  • 建立/opt/seafile-data/ssl目錄, 並將你的證書以及私鑰放入這個目錄中.
  • 假設您的網站名稱為seafile.example.com, 那麼您的證書名稱必須為seafile.example.com.crt,而且您的私鑰名稱必須為seafile.example.com.key

修改 Seafile 服務的配置

Seafile 服務的配置會存放在/shared/seafile/conf目錄下,你可以根據 Seafile 手冊修改配置

修改之後需要重啟容器.

docker restart seafile

查詢日誌

Seafile 服務的日誌會存放在/shared/logs/seafile目錄下, 由於是將/opt/seafile-data掛載到/shared,所以同樣可以在宿主機上的/opt/seafile-data/logs/seafile目錄下找到.

系統日誌會存放在/shared/logs/var-log目錄下.

新增新的管理員

確保您的容器正在執行,然後輸入以下命令:

docker exec -it seafile /opt/seafile/seafile-server-latest/reset-admin.sh

然後根據提示輸入使用者名稱以及密碼即可

 

目錄結構

/shared

共享卷的掛載點,您可以選擇在容器外部儲存某些永續性資訊.在這個專案中,我們會在外部儲存各種日誌檔案和上傳目錄。 這使您可以輕鬆重建容器而不會丟失重要資訊。

  • /shared/db: mysql服務的資料目錄
  • /shared/seafile: Seafile 服務的配置檔案以及資料檔案
  • /shared/logs: 日誌目錄
    • /shared/logs/var-log: 我們將容器內的/var/log掛載到本目錄.您可以在shared/logs/var-log/nginx/中找到nginx的日誌檔案
    • /shared/logs/seafile: Seafile 服務執行產生的日誌檔案目錄.比如您可以在 shared/logs/seafile/seafile.log檔案中看到seaf-server的日誌
  • /shared/ssl: 存放證書的目錄,預設不存在

 

升級 Seafile 服務

升級到 Seafile 服務的最新版本:

docker pull seafileltd/seafile:latest
docker rm -f seafile
docker run -d --name seafile \
  -e SEAFILE_SERVER_LETSENCRYPT=true \
  -e SEAFILE_SERVER_HOSTNAME=seafile.example.com \
  -e [email protected] \
  -e SEAFILE_ADMIN_PASSWORD=a_very_secret_password \
  -v /opt/seafile-data:/shared \
  -p 80:80 \
  -p 443:443 \
  seafileltd/seafile:latest

如果您是使用launcher指令碼的最先一批使用者,您應該參考從舊的結構升級.

 

垃圾回收

在 seafile 中,當檔案被刪除時,組成這些檔案的塊資料不會立即刪除,因為可能有其他檔案也會引用這些塊資料(用於去重功能的實現)。為了真正刪除無用的塊資料,還需要額外執行"GC"程式。GC 會自動檢測到哪些資料塊不再被任何檔案所引用,並清除它們。

GC 指令碼被放在docker容器的 /scripts 目錄下。執行 GC 的方法很簡單:docker exec seafile /scripts/gc.sh。對於社群版來說,該程式會暫停 Seafile 服務,但這是一個相對較快的程式,一旦程式執行完成,Seafile 服務也會自動重新啟動。而專業版提供了線上執行 GC 的功能,不會暫停 Seafile 服務。

 

問題排查方法

如果你執行的過程中碰到問題,可以執行"docker logs"、"docker exec"等docker命令來尋找更多的錯誤資訊.

docker logs -f seafile
# or
docker exec -it seafile bash

 

安裝客戶端 

fedora/redhat等作業系統上安裝客戶端

$ wget -O /etc/yum.repos.d/copr-pkerling-seafile.repo https://copr.fedorainfracloud.org/coprs/pkerling/seafile/repo/epel-7/pkerling-seafile-epel-7.repo yum install seafile
$ sudo yum install seafile-client-qt
$ sudo seaf-cli -h 

Mac OSX上安裝客戶端

直接在官網上下載,官網:www.seadisk.com

 

安裝完畢後設置同步目錄

# 設定同步盤,設定同步盤後,網盤上特定目錄,和Linux目錄上將自動同步
$ seaf-cli sync -l ebc6374b-b39c-4671-b0e6-2836a28c4729 -s http://192.168.1.99:8028 -d /home/DevOps/DevOps -u [email protected]

# 下面這個是seaDrive的配置
$ curl -d "[email protected]" -d "password=*******" https://www.seadisk.com:8028/api2/auth-token/