使用 Docker 在同一台服務器上設置 NextCloud + ONLYOFFICE

嘿哈布爾! 我向您展示這篇文章的翻譯 “使用 Docker 在單個服務器上設置 NextCloud 和 ONLYOFFICE”.

很難低估 Google Docs 等在線辦公套件和雲存儲在技術型人們生活中的價值。 技術已經變得如此普遍,甚至連長期主導辦公應用程序市場的微軟最近也專注於開發 Office 365 Web 應用程序,並說服用戶改用訂閱模式來使用自己的服務。 我們邀請那些對在 cat 下安裝和配置自己的存儲過程感興趣的人。

不久前,我們研究了雲存儲解決方案和開源網絡辦公套件,它們可以輕鬆部署以供微型企業使用。 將所有文檔保留在網上的主要動機是盡量減少文書工作,並在交易量較低的情況下實施良好的業務實踐。 硬幣的另一面是,租用雲服務器來提供此服務比直接將其存儲在企業場所安全性較低,因為您沒有任何方法來審核對服務器或流量的物理訪問。 因此,還需要端到端加密和開源軟件。

考慮到有關開源解決方案的所有可用信息,我們發現了兩個針對雲存儲開發的活躍項目(過去 12 個月在 git 存儲庫中提交):NextCloud 和 OwnCloud,以及唯一活躍的 ONLYOFFICE 辦公套件。 這兩種雲存儲工具具有大致相同的功能,選擇 NextCloud 的決定是基於有證據表明它可以與 ONLYOFFICE 集成,以便用戶與軟件進行舒適的交互。 然而,當我們開始部署服務時,缺乏有關集成上述服務的信息就變得很明顯。 我們找到了 3 個有關如何集成的教程視頻:

這三個視頻都沒有回答在與 NextCloud 相同的物理服務器上使用共享 nginx 安裝 ONLYOFFICE 文檔服務的問題。 相反,他們使用了分離技術,例如為文檔服務 API 使用單獨的端口。 另一個建議的選擇是為文檔服務部署單獨的服務器,手動配置文檔服務內置的 nginx 實例來安裝訪問密鑰(確認訪問數據云的權限的預先已知的訪問密鑰)和 TLS 證書。 上述方法被認為不安全且不夠有效,因此我們使用 docker-compose 集成了 NextCloud、ONLYOFFICE 和一個常見的 nginx(按域名分隔請求)。 以下是有關如何操作的分步信息。

第1步:nginx容器

這是一個非常簡單的設置,但這一步需要最多的工作來配置反向代理服務器。 我們首先為 nginx:stable 鏡像創建 docker-compose 配置。

version: '2'
services:
  nginx:
    image : nginx:stable
    restart: always
    volumes:
      - ./nginx/nginx-vhost.conf:/etc/nginx/conf.d/default.conf:ro
      - ./nginx/certificates:/mycerts 
    ports:
      - 443:443
      - 80:80

這將創建一個向公眾開放端口80 和443 的容器,將配置映射到nginx/nginx-vhost.conf ,並定義作為自簽名證書生成的證書存儲或使用/nginx/certificates 中的Let's encrypt 的certbot 生成的證書。 此位置應包含 office.yourdomain.com 和 cloud.yourdomain.com 的文件夾,其中分別包含用於證書鍊和服務器私鑰的 fullchain1.pem 和 privkey1.pem 文件。 您可以在此處閱讀有關如何生成自簽名證書的更多信息。 www.akadia.com/services/ssh_test_certificate.html (將 .key 和 .crt 重命名為 .pem 無需轉換 nginx 的文件結構)。

之後,我們定義了vhost文件。 我們首先將端口 80 的行為定義為簡單重定向到 https,因為我們不想允許任何 http 流量

server {
    listen 80;
    location / {
        return 301
            https://$host$request_uri;
    }
}

然後我們在端口 443 上為我們的服務創建了兩個虛擬服務器:

server {
    listen 443 ssl;
    server_name cloud.yourdomain.com ;
    root /var/www/html;

    ssl_certificate     /mycerts/cloud.yourdomain.com/fullchain1.pem;
    ssl_certificate_key /mycerts/cloud.yourdomain.com/privkey1.pem;
    ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers         HIGH:!aNULL:!MD5;

    location / {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_pass http://app:80;
    }
}
server {
    listen 443 ssl;
    server_name office.yourdomain.com;
    root /var/www/html;

    ssl_certificate     /mycerts/office.yourdomain.com/fullchain1.pem;
    ssl_certificate_key /mycerts/office.yourdomain.com/privkey1.pem;
    ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers         HIGH:!aNULL:!MD5;

    location / {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_pass http://onlyoffice:80;
    }
}

第二步:文件服務

現在我們需要將文檔服務容器添加到我們的 docker-compose.yml 中。 這裡沒有什麼特別需要配置的。

services:
...
  onlyoffice:
    image: onlyoffice/documentserver
    restart: always

但不要忘記將 nginx 容器鏈接到文檔服務:

services:
...
  nginx:
    ...
    depends_on:
      - onlyoffice

第三步:NextCloud

首先,添加新服務:

services:
...
  db:
    image: mariadb
    command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
    restart: always
    volumes:
      - /data/nextcloud_db:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=#put some password here
      - MYSQL_PASSWORD=#put some other password here
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
  app:
    image: nextcloud
    depends_on:
      - db
      - onlyoffice
    restart: always

並添加 nginx 的鏈接:

services:
...
  nginx:
    ...
    depends_on:
      - app 

現在是時候裝載集裝箱了。

docker-compose up -d  

一段時間後,nginx 將開始將您重定向到 NextCloud 前端,這是默認配置頁面。 您需要輸入第一個管理員用戶的用戶名和密碼以及您在 docker-compose.yml 中提供的數據庫憑據。設置完成後,您將能夠登錄。 在我們的例子中,等待時間將近一分鐘,並且需要額外刷新登錄頁面才能登錄雲服務。

Next雲服務設置窗口使用 Docker 在同一台服務器上設置 NextCloud + ONLYOFFICE

第4步:連接NextCloud和ONLYOFFICE

在此步驟中,您需要安裝 NextCloud 應用程序,該應用程序連接 ONLYOFFICE 功能。 讓我們從菜單右上角的應用程序控制面板開始。 找到 ONLYOFFICE 應用程序(在 Office 和文本下或使用搜索),安裝並激活它。

之後,通過右上角的菜單進入“設置”,您應該在左側菜單中找到 ONLYOFFICE 項目。 進去吧。 您需要註冊如下所示的地址。

集成應用程序設置使用 Docker 在同一台服務器上設置 NextCloud + ONLYOFFICE

第一個地址用於直接從瀏覽器中運行的應用程序鏈接到一些js和css文件(這是我們通過nginx開放訪問ONLYOFFICE服務所需要的)。 不使用密鑰是因為我們更信任 Docker 隔離層而不是持久身份驗證密鑰。 第三個地址由 NextCloud 容器用來直接連接到 ONLYOFFICE API,它使用 Docker 的默認內部主機名。 好吧,使用最後一個字段,以便 ONLYOFFICE 可以使用外部 IP 地址或內部 Docker 地址(如果您使用 Docker 網絡)向 NextCloud API 發出請求,但在我們的示例中沒有使用。 確保您的防火牆設置允許此類交互。

保存後,NextCloud 將測試連接,如果一切正確,將向您顯示與集成相關的設置 - 例如,此集成可以編輯哪些類型的文件。 根據您的需要進行定制。

最後一步:在哪裡可以找到編輯器

如果您返回雲存儲文件夾並單擊“+”創建新文件,那麼您將有一個新選項來創建文檔、電子表格或演示文稿。 在他們的幫助下,您將使用 ONLYOFFICE 創建並立即能夠編輯這些類型的文件。

文件創建菜單使用 Docker 在同一台服務器上設置 NextCloud + ONLYOFFICE

加法1

docker-compose.yml 的完整內容可以在這裡找到: https://pastebin.com/z1Ti1fTZ

來源: www.habr.com

添加評論