Linux中國

怎樣用 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.comexample.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

現在要進入有趣的部分了!

首先,你需要安裝 DockerDocker 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

這個教程的其餘部分假定你已經運行了以上兩個命令。如果你沒有運行,在所有 dockerdocker-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 PlayF-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

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國

    Linux中國

    DevOps 將去向何方?

    微軟、谷歌、亞馬遜、IBM 和甲骨文如今都在關注云上的 DevOps。這些大公司正在給企業提供 IT 自動化的服務。然而,DevOps 仍然在持續的演進中。DevSecOps、AIOps 和 NoOps 正在成為下一個流行詞。