嘿哈布爾! 我向您展示這篇文章的翻譯
很難低估 Google Docs 等在線辦公套件和雲存儲在技術型人們生活中的價值。 技術已經變得如此普遍,甚至連長期主導辦公應用程序市場的微軟最近也專注於開發 Office 365 Web 應用程序,並說服用戶改用訂閱模式來使用自己的服務。 我們邀請那些對在 cat 下安裝和配置自己的存儲過程感興趣的人。
不久前,我們研究了雲存儲解決方案和開源網絡辦公套件,它們可以輕鬆部署以供微型企業使用。 將所有文檔保留在網上的主要動機是盡量減少文書工作,並在交易量較低的情況下實施良好的業務實踐。 硬幣的另一面是,租用雲服務器來提供此服務比直接將其存儲在企業場所安全性較低,因為您沒有任何方法來審核對服務器或流量的物理訪問。 因此,還需要端到端加密和開源軟件。
考慮到有關開源解決方案的所有可用信息,我們發現了兩個針對雲存儲開發的活躍項目(過去 12 個月在 git 存儲庫中提交):NextCloud 和 OwnCloud,以及唯一活躍的 ONLYOFFICE 辦公套件。 這兩種雲存儲工具具有大致相同的功能,選擇 NextCloud 的決定是基於有證據表明它可以與 ONLYOFFICE 集成,以便用戶與軟件進行舒適的交互。 然而,當我們開始部署服務時,缺乏有關集成上述服務的信息就變得很明顯。 我們找到了 3 個有關如何集成的教程視頻:
www.youtube.com/watch?v=GAd-x_sP6ng www.youtube.com/watch?v=ceOld6P16wI www.youtube.com/watch?v=DvTXyl-OOZA
這三個視頻都沒有回答在與 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 文件。 您可以在此處閱讀有關如何生成自簽名證書的更多信息。
之後,我們定義了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雲服務設置窗口
第4步:連接NextCloud和ONLYOFFICE
在此步驟中,您需要安裝 NextCloud 應用程序,該應用程序連接 ONLYOFFICE 功能。 讓我們從菜單右上角的應用程序控制面板開始。 找到 ONLYOFFICE 應用程序(在 Office 和文本下或使用搜索),安裝並激活它。
之後,通過右上角的菜單進入“設置”,您應該在左側菜單中找到 ONLYOFFICE 項目。 進去吧。 您需要註冊如下所示的地址。
集成應用程序設置
第一個地址用於直接從瀏覽器中運行的應用程序鏈接到一些js和css文件(這是我們通過nginx開放訪問ONLYOFFICE服務所需要的)。 不使用密鑰是因為我們更信任 Docker 隔離層而不是持久身份驗證密鑰。 第三個地址由 NextCloud 容器用來直接連接到 ONLYOFFICE API,它使用 Docker 的默認內部主機名。 好吧,使用最後一個字段,以便 ONLYOFFICE 可以使用外部 IP 地址或內部 Docker 地址(如果您使用 Docker 網絡)向 NextCloud API 發出請求,但在我們的示例中沒有使用。 確保您的防火牆設置允許此類交互。
保存後,NextCloud 將測試連接,如果一切正確,將向您顯示與集成相關的設置 - 例如,此集成可以編輯哪些類型的文件。 根據您的需要進行定制。
最後一步:在哪裡可以找到編輯器
如果您返回雲存儲文件夾並單擊“+”創建新文件,那麼您將有一個新選項來創建文檔、電子表格或演示文稿。 在他們的幫助下,您將使用 ONLYOFFICE 創建並立即能夠編輯這些類型的文件。
文件創建菜單
加法1
docker-compose.yml 的完整內容可以在這裡找到:
來源: www.habr.com