怎樣用 Docker 部署 Seafile 伺服器來託管你自己的文件同步和共享解決方案
首先,什麼是 Seafile ?
Seafile 是一個自託管文件同步程序,採用客戶端/伺服器模式,即你有筆記本、手機等多個設備,能夠連接到一個中心伺服器。
不像類似 Nextcloud 或 ownCloud 這些更流行的替代品一樣,Seafile 試圖遵循 「只做一件事,但是要做好」 的理念。同樣,Seafile 沒有內置額外的類似聯繫人或者日曆聚合的功能。
相反,Seafile 只專註於文件同步、共享及與之相關的事情,僅此而已。但正因為如此,它最終做的非常好。
使用 Docker 和 NGINX 部署 Seafile 伺服器
高級教程
我們的許多教程都是針對初學者的。這篇則不然,它是為那些經常鼓搗 DIY 項目和喜歡自託管的高級用戶設計的。這個教程假定你可以熟練的使用命令行,而且你至少對我們將要使用的程序有一定的了解。
雖然整個過程完全可以不使用 NGINX ,但是使用 NGINX 更加容易配置,而且在將來更加容易的自託管更多的服務。
如果你想完全使用 Docker 環境,你也可以 在 Docker 內部設置 NGINX ,但是它這會使事情變得更加複雜,並且不能夠帶來太多好處。同樣,在本教程里也不會涉及這些。
安裝設置 NGINX
在這個教程中,我會使用 Ubuntu,因此會使用 apt
來安裝軟體包。如果你使用 Fedora 或者一些其他非 Debian 發行版,請使用你的發行版的 包管理器。
NGINX 既是一個網頁瀏覽器,又是一個代理伺服器。它將起到 Seafile 伺服器和互聯網之間網路連接的作用,同時也使一些任務更容易處理。
要安裝 NGINX ,使用以下命令:
sudo apt install nginx
如果你想使用 HTTPS(也就是瀏覽器中的小掛鎖),你需要安裝 Certbot:
sudo apt install certbot python3-certbot-nginx
下一步,你需要設置 NGINX 來連接我們之後將要設置的 Seafile 實例。
首先,運行以下命令:
sudo nano /etc/nginx/sites-available/seafile.conf
鍵入下方的文本到文件中:
server {
server_name localhost;
location / {
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
重要: 將 server_name
一行的 localhost
替換為你要訪問你的伺服器的地址(比如 seafile.example.com
或者 192.168.0.0
)。不確定要輸入什麼嗎?
- 如果你只是為了測試,使用
localhost
。這個設置將 只允許你從你的電腦訪問伺服器 ,僅此而已。 - 如果你想通過你的本地 Wi-Fi 連接使用 Seafile(與你在同一 Wi-Fi 網路上),你應該鍵入 你的計算機 IP 地址。你也可以考慮 設置一個靜態 IP 地址,儘管這不是必須的。
- 如果你有一個公網 IP 地址,你知道它指向你的系統,就使用它。
- 如果你有一個域名(比如
example.com
、example.org
)和公網 IP 地址,更改你的 DNS 設置,將域名指向你的系統的 IP 地址。這也需要將公網 IP 指向你的系統。
現在你需要複製配置文件到 NGINX 的查找目錄中,然後重啟 NGINX :
sudo ln -s /etc/nginx/sites-available/seafile.conf /etc/nginx/sites-enabled/seafile.conf
sudo systemctl restart nginx
如果你要安裝 Cerbot,你也需要運行以下命令來設置 HTTPS :
sudo certbot
如果要重定向 HTTP 流量 到 HTTPS ,選擇 2
。
現在可以來確認我們目前設置的一切都是否正常工作。如果你訪問你的站點,你應該看到一個屏幕上寫著 502 Bad Gateway
字樣。
安裝 Docker 和 Docker Compose
現在要進入有趣的部分了!
首先,你需要安裝 Docker 和 Docker Compose 。Docker Compose 需要利用 docker-compose.yml
文件,這將使管理多個 Docker 容器 的 Seafile 需求變得更加容易。
Docker 和 Docker Compose 可以用以下的命令來安裝:
sudo apt install docker.io docker-compose
檢查 Docker 是否安裝並運行,運行以下命令:
sudo docker run --rm hello-world
如果你完全安裝成功,你應該在終端能看到這幾行文字:
如果你想避免在 docker
命令的開始添加 sudo
的話,你可以運行以下的命令將你自己添加到 docker
組:
sudo groupadd docker
sudo usermod -aG docker $USER
這個教程的其餘部分假定你已經運行了以上兩個命令。如果你沒有運行,在所有 docker
或 docker-compose
的命令都添加 sudo
。
安裝 Seafile 伺服器
這部分比之前部分明顯容易的多。你所需要做的是輸入一些文本到文件,然後運行一些命令。
打開一個終端,然後創建一個 Seafile 伺服器用來儲存內容的目錄,並進入目錄中:
mkdir ~/seafile-server && cd ~/seafile-server
轉到你創建的目錄然後運行以下命令:
nano docker-compose.yml
下一步,在彈出的窗口中鍵入以下文本內容:
version: '2.0'
services:
db:
image: mariadb
container_name: seafile-mysql
environment:
- MYSQL_ROOT_PASSWORD=password
- MYSQL_LOG_CONSOLE=true
volumes:
- ./data/mariadb:/var/lib/mysql
networks:
- seafile-net
memcached:
image: memcached
container_name: seafile-memcached
entrypoint: memcached -m 256
networks:
- seafile-net
seafile:
image: seafileltd/seafile-mc
container_name: seafile
ports:
- "8080:80"
volumes:
- ./data/app:/shared
environment:
- DB_HOST=db
- DB_ROOT_PASSWD=password
- TIME_ZONE=Etc/UTC
- SEAFILE_ADMIN_EMAIL=me@example.com
- SEAFILE_ADMIN_PASSWORD=password
- SEAFILE_SERVER_LETSENCRYPT=false
- SEAFILE_SERVER_HOSTNAME=docs.seafile.com
depends_on:
- db
- memcached
networks:
- seafile-net
networks:
seafile-net:
在保存文件之前,一些參數需要更改:
MYSQL_ROOT_PASSWORD
:更換強壯的密碼,你不必記住它,所以不要嘗試挑選簡單的密碼。如果你需要幫助生成一個,請使用 密碼生成器 。我建議使用 20 位字元長度並且避免使用任何的特殊字元(!@#$%^&*
等符號)。DB_ROOT_PASSWD
:更改你為MYSQL_ROOT_PASSWORD
設置的值 。SEAFILE_ADMIN_EMAIL
:設置管理員帳戶的電子郵件地址。SEAFILE_ADMIN_PASSWORD
:設置管理員帳戶密碼。避免與MYSQL_ROOT_PASSWORD
或者DB_ROOT_PASSWD
密碼相同。SEAFILE_SERVER_HOSTNAME
:在 NGINX 配置中設置 Seafile 的伺服器主機名。
完成之後,你可以運行 docker-compose
整個運行起來:
docker-compose up -d
可能需要花一到兩分鐘,取決於你的網速,因為需要拉下幾個 Seafile 需要運行的幾個容器。
完成以後,還需要幾分鐘來完成。你也可以通過以下命令來檢查運行狀態:
docker logs seafile
當完成了,你將會看到如下輸出:
下一步,你只需要在你的瀏覽器里鍵入你設置的 SEAFILE_SERVER_HOSTNAME
的地址,然後你應該看到登錄屏幕的頁面。
就這樣!現在一切功能齊全,準備用客戶端來使用。
安裝 Seafile 客戶端
Seafile 移動客戶端在 Google Play、F-Droid 和 蘋果商店 都是可用的。Seafile 也有 Linux、Windows 和 Mac 桌面客戶端可用,可在 此處 找到。
通過 seafile-gui
軟體包,可以在 Ubuntu 系統輕鬆獲得 Seafile :
sudo apt install seafile-gui
通過 seafile-client
軟體包 Seafile 也包含在 Arch 用戶的 AUR 包管理器中。
結語
請盡情探索客戶端及其所能提供的一切。我將在未來的一篇文章中詳細闡述 Seafile 客戶端的所有功能。(敬請期待 ?)
總的來說,如果有什麼錯誤,或者你有什麼問題,請在下方評論 – 我會盡我所能回應。
via: https://itsfoss.com/deploy-seafile-server-docker/
作者:Hunter Wittenborn 選題:lujun9972 譯者:hwlife 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive