怎樣用 Docker 部署 Seafile 服務(wù)器來托管你自己的文件同步和共享解決方案
首先,什么是 Seafile ?
Seafile 是一個自托管文件同步程序,采用客戶端/服務(wù)器模式,即你有筆記本、手機等多個設(shè)備,能夠連接到一個中心服務(wù)器。
不像類似 Nextcloud 或 ownCloud 這些更流行的替代品一樣,Seafile 試圖遵循 “只做一件事,但是要做好” 的理念。同樣,Seafile 沒有內(nèi)置額外的類似聯(lián)系人或者日歷聚合的功能。
相反,Seafile 只專注于文件同步、共享及與之相關(guān)的事情,僅此而已。但正因為如此,它最終做的非常好。
使用 Docker 和 NGINX 部署 Seafile 服務(wù)器
高級教程
我們的許多教程都是針對初學者的。這篇則不然,它是為那些經(jīng)常鼓搗 DIY 項目和喜歡自托管的高級用戶設(shè)計的。這個教程假定你可以熟練的使用命令行,而且你至少對我們將要使用的程序有一定的了解。
雖然整個過程完全可以不使用 NGINX ,但是使用 NGINX 更加容易配置,而且在將來更加容易的自托管更多的服務(wù)。
如果你想完全使用 Docker 環(huán)境,你也可以 ??在 Docker 內(nèi)部設(shè)置 NGINX?? ,但是它這會使事情變得更加復雜,并且不能夠帶來太多好處。同樣,在本教程里也不會涉及這些。
安裝設(shè)置 NGINX
在這個教程中,我會使用 Ubuntu,因此會使用 ??apt?
?? 來安裝軟件包。如果你使用 Fedora 或者一些其他非 Debian 發(fā)行版,請使用你的發(fā)行版的 包管理器。
NGINX 既是一個網(wǎng)頁瀏覽器,又是一個代理服務(wù)器。它將起到 Seafile 服務(wù)器和互聯(lián)網(wǎng)之間網(wǎng)絡(luò)連接的作用,同時也使一些任務(wù)更容易處理。
要安裝 NGINX ,使用以下命令:
sudo apt install nginx
如果你想使用 HTTPS(也就是瀏覽器中的小掛鎖),你需要安裝 ??Certbot??:
sudo apt install certbot python3-certbot-nginx
下一步,你需要設(shè)置 NGINX 來連接我們之后將要設(shè)置的 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?
?? 替換為你要訪問你的服務(wù)器的地址(比如 ??seafile.example.com?
?? 或者 ??192.168.0.0?
?)。不確定要輸入什么嗎?
- 如果你只是為了測試,使用 ?
?localhost?
? 。這個設(shè)置將 只允許你從你的電腦訪問服務(wù)器 ,僅此而已。 - 如果你想通過你的本地 Wi-Fi 連接使用 Seafile(與你在同一 Wi-Fi 網(wǎng)絡(luò)上),你應(yīng)該鍵入 ??你的計算機 IP 地址???。你也可以考慮 ??設(shè)置一個靜態(tài) IP 地址??,盡管這不是必須的。
- 如果你有一個公網(wǎng) IP 地址,你知道它指向你的系統(tǒng),就使用它。
- 如果你有一個域名(比如 ?
?example.com?
??、??example.org?
?)和公網(wǎng) IP 地址,更改你的 DNS 設(shè)置,將域名指向你的系統(tǒng)的 IP 地址。這也需要將公網(wǎng) IP 指向你的系統(tǒng)。
現(xiàn)在你需要復制配置文件到 NGINX 的查找目錄中,然后重啟 NGINX :
sudo ln -s /etc/nginx/sites-available/seafile.conf /etc/nginx/sites-enabled/seafile.conf
sudo systemctl restart nginx
如果你要安裝 Cerbot,你也需要運行以下命令來設(shè)置 HTTPS :
sudo certbot
如果要重定向 HTTP 流量 到 HTTPS ,選擇 ??2?
? 。
現(xiàn)在可以來確認我們目前設(shè)置的一切都是否正常工作。如果你訪問你的站點,你應(yīng)該看到一個屏幕上寫著 ??502 Bad Gateway?
? 字樣。
安裝 Docker 和 Docker Compose
現(xiàn)在要進入有趣的部分了!
首先,你需要安裝 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
如果你完全安裝成功,你應(yīng)該在終端能看到這幾行文字:
如果你想避免在 ??docker?
?? 命令的開始添加 ??sudo?
?? 的話,你可以運行以下的命令將你自己添加到 ??docker?
? 組:
sudo groupadd docker
sudo usermod -aG docker $USER
這個教程的其余部分假定你已經(jīng)運行了以上兩個命令。如果你沒有運行,在所有 ??docker?
?? 或 ??docker-compose?
?? 的命令都添加 ??sudo?
? 。
安裝 Seafile 服務(wù)器
這部分比之前部分明顯容易的多。你所需要做的是輸入一些文本到文件,然后運行一些命令。
打開一個終端,然后創(chuàng)建一個 Seafile 服務(wù)器用來儲存內(nèi)容的目錄,并進入目錄中:
mkdir ~/seafile-server && cd ~/seafile-server
轉(zhuǎn)到你創(chuàng)建的目錄然后運行以下命令:
nano docker-compose.yml
下一步,在彈出的窗口中鍵入以下文本內(nèi)容:
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:
在保存文件之前,一些參數(shù)需要更改:
- ?
?MYSQL_ROOT_PASSWORD?
??:更換強壯的密碼,你不必記住它,所以不要嘗試挑選簡單的密碼。如果你需要幫助生成一個,請使用 ??密碼生成器??? 。我建議使用 20 位字符長度并且避免使用任何的特殊字符(??!@#$%^&*?
? 等符號)。 - ?
?DB_ROOT_PASSWD?
??:更改你為 ??MYSQL_ROOT_PASSWORD?
? 設(shè)置的值 。 - ?
?SEAFILE_ADMIN_EMAIL?
?:設(shè)置管理員帳戶的電子郵件地址。 - ?
?SEAFILE_ADMIN_PASSWORD?
??:設(shè)置管理員帳戶密碼。避免與??MYSQL_ROOT_PASSWORD?
?? 或者 ??DB_ROOT_PASSWD?
? 密碼相同。 - ?
?SEAFILE_SERVER_HOSTNAME?
?:在 NGINX 配置中設(shè)置 Seafile 的服務(wù)器主機名。
完成之后,你可以運行 ??docker-compose?
? 整個運行起來:
docker-compose up -d
可能需要花一到兩分鐘,取決于你的網(wǎng)速,因為需要拉下幾個 Seafile 需要運行的幾個容器。
完成以后,還需要幾分鐘來完成。你也可以通過以下命令來檢查運行狀態(tài):
docker logs seafile
當完成了,你將會看到如下輸出:
下一步,你只需要在你的瀏覽器里鍵入你設(shè)置的 ??SEAFILE_SERVER_HOSTNAME?
? 的地址,然后你應(yīng)該看到登錄屏幕的頁面。
就這樣!現(xiàn)在一切功能齊全,準備用客戶端來使用。
安裝 Seafile 客戶端
Seafile 移動客戶端在 ??Google Play???、??F-Droid??? 和 ??蘋果商店??? 都是可用的。Seafile 也有 Linux、Windows 和 Mac 桌面客戶端可用,可在 ??此處?? 找到。
通過 ??seafile-gui?
? 軟件包,可以在 Ubuntu 系統(tǒng)輕松獲得 Seafile :
sudo apt install seafile-gui
通過 ??seafile-client?
? 軟件包 Seafile 也包含在 Arch 用戶的 AUR 包管理器中。
結(jié)語
請盡情探索客戶端及其所能提供的一切。我將在未來的一篇文章中詳細闡述 Seafile 客戶端的所有功能。(敬請期待 ??)
總的來說,如果有什么錯誤,或者你有什么問題,請在下方評論 – 我會盡我所能回應(yīng)。