官方教程寫的不夠詳細,特記錄一下。
1. 安裝docker及docker-compose
具體見本博客相關文章。
2.下載並修改一鍵安裝腳本
https://docs.seafile.com/d/cb1d3f97106847abbf31/files/?p=/docker/pro-edition/docker-compose.yml
1 version: '2.0' 2 services: 3 db: 4 image: mariadb:10.1 5 container_name: seafile-mysql 6 environment: 7 - MYSQL_ROOT_PASSWORD=db_dev # MySQL root 用戶的密碼 Requested, set the root's password of MySQL service. 8 - MYSQL_LOG_CONSOLE=true 9 volumes: 10 - /opt/seafile-mysql/db:/var/lib/mysql # 持久化存儲 MySQL 數據的 volumes 目錄 Requested, specifies the path to MySQL data persistent store. 11 networks: 12 - seafile-net 13 14 memcached: 15 image: memcached:1.5.6 16 container_name: seafile-memcached 17 entrypoint: memcached -m 256 18 networks: 19 - seafile-net 20 21 elasticsearch: 22 image: seafileltd/elasticsearch-with-ik:5.6.16 23 container_name: seafile-elasticsearch 24 environment: 25 - discovery.type=single-node 26 - bootstrap.memory_lock=true 27 - "ES_JAVA_OPTS=-Xms1g -Xmx1g" 28 ulimits: 29 memlock: 30 soft: -1 31 hard: -1 32 mem_limit: 2g 33 volumes: 34 - /opt/seafile-elasticsearch/data:/usr/share/elasticsearch/data # 持久化存儲 Elasticsearch 索引數據的 volumes 目錄Requested, specifies the path to Elasticsearch data persistent store. 35 networks: 36 - seafile-net 37 38 seafile: 39 image: docker.seafile.top/seafileltd/seafile-pro-mc:latest 40 container_name: seafile 41 ports: 42 - "80:80" 43 # - "443:443" # If https is enabled, cancel the comment. 44 volumes: 45 - /opt/seafile-data:/shared # 持久化存儲 Seafile 數據的 volumes 目錄 Requested, specifies the path to Seafile data persistent store. 46 environment: 47 - DB_HOST=db 48 - DB_ROOT_PASSWD=db_dev # Requested, the value shuold be root's password of MySQL service. 49 # - TIME_ZONE=Asia/Shanghai # Optional, default is UTC. Should be uncomment and set to your local time zone. 50 - SEAFILE_ADMIN_EMAIL=me@example.com # 管理員賬號Specifies Seafile admin user, default is 'me@example.com' 51 - SEAFILE_ADMIN_PASSWORD=asecret # Specifies Seafile admin password, default is 'asecret' 52 - SEAFILE_SERVER_LETSENCRYPT=false # Whether to use https or not 53 - SEAFILE_SERVER_HOSTNAME=example.seafile.com # Specifies your host name if https is enabled 54 depends_on: 55 - db 56 - memcached 57 - elasticsearch 58 networks: 59 - seafile-net 60 61 networks: 62 seafile-net:
根據您的實際環境修改該文件。尤其是以下幾項配置:
-
MySQL root 用戶的密碼 (MYSQL_ROOT_PASSWORD and DB_ROOT_PASSWD)
-
持久化存儲 MySQL 數據的 volumes 目錄 (volumes)
-
持久化存儲 Seafile 數據的 volumes 目錄 (volumes)
-
持久化存儲 Elasticsearch 索引數據的 volumes 目錄 (volumes)
3. 如果按照專業版的話
注冊帳號,打開seafile的英文網頁,去下載區,有如下信息
You can download pro editions from https://download.seafile.com/d/×××××××××/?p=/pro.
If you are deploying Seafile Pro with Docker, type docker login docker.seadrive.org
, then input username seafile
, password zj×××××dZ=u×××uWS
.
必須有此帳號登錄過程,不然第4步執行過程中會被拒絕。
4. 安裝
在 docker-compose.yml
文件所在的目下執行以下命令啟動 Seafile 服務
docker-compose up -d
根據網速不同,需要等待些許時間,等容器首次啟動時的初始化操作完成后,您就可以在瀏覽器上訪問http://seafile.example.com
來打開 Seafile 主頁。
Seafile 目錄結構
/shared
共享卷的掛載點,您可以選擇在容器外部存儲某些持久性信息.在這個項目中,我們會在外部保存各種日志文件和上傳數據。 這使您可以輕松重建容器而不會丟失重要信息。
-
/shared/seafile: Seafile 服務的配置文件,日志文件以及數據文件
-
/shared/seafile/logs: Seafile 服務運行產生的日志文件目錄。比如您可以在
/shared/seafile/logs/seafile.log
文件中看到 seaf-server 的日志 -
/shared/seafile/seafile-data: 如果您沒有配置S3或者OSS等對象存儲,那么用戶上傳的數據將會存放到該目錄下。
-
-
/shared/logs: 日志目錄
-
/shared/logs/var-log: 我們將容器內的
/var/log
鏈接到本目錄。您可以在/shared/logs/var-log/nginx/
中找到 nginx 的日志文件
-
-
/shared/ssl: 存放證書的目錄,默認不存在
備份和恢復
目錄結構
我們假設您的 seafile 數據卷路徑是 /opt/seafile-data
,並且您想將備份數據存放到 /opt/seafile-backup
目錄下。
您可以創建一個類似以下 /opt/seafile-backup
的目錄結構:
/opt/seafile-backup
---- databases/ 用來存放 MySQL 容器的備份數據
---- data/ 用來存放 Seafile 容器的備份數據
要備份的數據文件:
/opt/seafile-data/seafile/conf # configuration files
/opt/seafile-data/seafile/seafile-data # data of seafile
/opt/seafile-data/seafile/seahub-data # data of seahub
備份數據
步驟:
-
備份 MySQL 數據庫數據;
-
備份 Seafile 數據目錄;
-
備份數據庫:
# 建議每次將數據庫備份到一個單獨的文件中。至少在一周內不要覆蓋舊的數據庫備份。
cd /opt/seafile-backup/databases
docker exec -it seafile-mysql mysqldump -uroot --opt ccnet_db > ccnet_db.sql
docker exec -it seafile-mysql mysqldump -uroot --opt seafile_db > seafile_db.sql
docker exec -it seafile-mysql mysqldump -uroot --opt seahub_db > seahub_db.sql
-
備份 Seafile 資料庫數據:
-
直接復制整個數據目錄
cp -R /opt/seafile-data/seafile /opt/seafile-backup/data/
cd /opt/seafile-backup/data && rm -rf ccnet
-
使用 rsync 執行增量備份
rsync -az /opt/seafile-data/seafile /opt/seafile-backup/data/
cd /opt/seafile-backup/data && rm -rf ccnet
-
恢復數據
-
恢復數據庫:
docker cp /opt/seafile-backup/databases/ccnet_db.sql seafile-mysql:/tmp/ccnet_db.sql
docker cp /opt/seafile-backup/databases/seafile_db.sql seafile-mysql:/tmp/seafile_db.sql
docker cp /opt/seafile-backup/databases/seahub_db.sql seafile-mysql:/tmp/seahub_db.sql
docker exec -it seafile-mysql /bin/sh -c "mysql -uroot ccnet_db < /tmp/ccnet_db.sql"
docker exec -it seafile-mysql /bin/sh -c "mysql -uroot seafile_db < /tmp/seafile_db.sql"
docker exec -it seafile-mysql /bin/sh -c "mysql -uroot seahub_db < /tmp/seahub_db.sql"
-
恢復 seafile 數據:
cp -R /opt/seafile-backup/data/* /opt/seafile-data/seafile/