Showing posts with label docker. Show all posts
Showing posts with label docker. Show all posts

2018/03/01

Dropbox/Google Doc 替代方案:Nextcloud + ONLYOFFICE


為了達成無限制的 Dropbox 空間以及有些敏感的 Office 會希望放在自架的服務器上,準備台QNAP NAS 或任何有跑 Docker 的電腦,都可輕鬆用 Nextcloud + ONLYOFFICE架起有相同功能的服務。
 

功能

本文將完成以下這些功能。
  1. 使用 Nextcloud 取代 Dropbox 功能 
  2. 在 Nextcloud 內使用ONLYOFFICE直接開啟 Office 文件 
  3. 使用ONLYOFFICE支援多人同時編輯及Review 文件 
  4. 所有連線都用 HTTPS 維持安全性 
Nextcloud 有 Web 介面,使用起來似乎比 Dropbox 更強大



Nextcloud 也有各個平台可用的同步軟體,我有用 Mac, Linux and Android 上的同步軟體,用起來相當平順。



Nextcloud 裡可直接建立 Office 文件。



Nextcloud 裡可直接編輯投影片,可以打中文,但若原本投影片裡有字型是不支援的,會變方塊字。



當然 Nextcloud 裡也可直接編輯預覽 markdown 文件



ONLYOFFICE服務用起來跟 Google Doc 用起來差不多



多人編輯會用的 Comment 也有



分享文件的介面




環境

  1. QNAP NAS TVS-471 FW 4.3.4,配合 Container Station v1.8 
  2. 網路是用第四台 cable,有設定 port forwarding 到 NAS 80 and 443 port 
  3. Domain 是用 Google domain 管理,需將以下幾個 domain 都對應同一個對外 IP (A Record) 
    • nextcloud.your-domain.com 
    • onlyoffice.your-domain.com 
    • document.your-domain.com 
從 Container Station 上來看是 3 個 Apps,9 個容器。


安裝整合

設定 NAS 原本的port 80 and 443。我把它們分別調整到 444 and 81,並確定外網能直接存取到 NAS 的這兩個 ports。






開啟 Container Station → Create → Create Application 建立 3 個 Apps
記得將 your-domain.com 取代成你的真實網域。




等待建立完成,便可直接開啟 https://nextcloud.your-domain.comhttps://onlyoffice.your-domain.com 測試。接著再設定 Nextcloud 及 ONLYOFFICE 連線,請參考下圖:



所有安裝整合流程就這幾步,應該很容易吧!家裡的 NAS 終於比較有用了。

其他問題


ONLYOFFICE中文方塊字


中文顯示成方塊的原因是使用的字型沒有中文字型,或是用了中文字型但是該字型不在 ONLYOFFICE 容器裡。解決方法有二個方面
  1. 安裝中文字型 
  2. 將 template for new document 的預設 style 改成用中文字型 
先安裝中文字型,透過以下指令找到字型目錄


[~] # docker inspect onlyoffice_document_fonts
[
   {
       "CreatedAt": "2018-02-27T22:27:42+08:00",
       "Driver": "local",
       "Labels": {
           "com.docker.compose.project": "onlyoffice",
           "com.docker.compose.volume": "document_fonts"
       },
       "Mountpoint": "/share/CACHEDEV2_DATA/Container/container-station-data/lib/docker/volumes/onlyoffice_document_fonts/_data",
       "Name": "onlyoffice_document_fonts",
       "Options": {},
       "Scope": "local"
   }
]

再把字型放到紅字位置後,重開 document-server 容器即可,此時再瀏覽文件網有可能瀏覽器快取會造成字型沒被更新,記得去清瀏覽器快取。

而 template 部分,要分 Nextcloud,以及 ONLYOFFICE ,ONLYOFFICE 我在 Build ONLYOFFICE image 時放進去了,可參考 https://github.com/fcwu/docker-letsencrypt-nextcloud-onlyoffice/tree/master/onlyoffice/communityserver/root/var/www/onlyoffice/WebStudio/Products/Files/DocStore/newdocuments,已不需調整,Nextcloud 部分,則要進入 Nextcloud 容器後將 template 放到該容器的 /var/www/html/custom_apps/onlyoffice/assets/en/ 資料匣內。

備份


備份方式用一般容器備份方法即可,把 Docker Volume 都做異地備援。

NAS 執行問題


ONLYOFFICE 的 Document Server 裡的 RabbitMQ 無法順利在 QNAP NAS 運行,解決方法寫在 https://github.com/fcwu/docker-letsencrypt-nextcloud-onlyoffice/blob/master/onlyoffice/documentserver/Dockerfile

Let’s encrypt 運作方式


Let’s encrypt 取得 HTTPS domain 資訊是用 Docker 容器的 3 個環境變數
  • VIRTUAL_HOST=onlyoffice.your-domain.com
  • LETSERYPT_HOST=onlyoffice.your-domain.com
  • LETSERYPT_EMAIL=foo@bar.com
Let’s encrypt 容器會去監視容器生命週期,若發現有這些參數的容器被建立會向 Let’s encrypt 取得新的憑證,放入 certs volume 內,並修改 /etc/nginx/conf.d/default 內加入 virtual server 設定,再要求 nginx-proxy reload。原理上其實並不難,但因為原本這個服務的設計是針對容器,不是 docker-compose 服務,因此我特地加了一個 proxy network (https://github.com/fcwu/docker-letsencrypt-nextcloud-onlyoffice/blob/master/letsencrypt/docker-compose.yml#L37),而且要 export 出來的服務也將其 container 加入此 network,以確保 nginx-proxy 可連到 virtual server。

2015/08/17

QNAP Container Station in COSCUP





週六,有幸能在 COSCUP 分享用 QNAP Container Station 打造 CI 環境。投影片如下:



伴隨著即將 release 的 NAS Firmware 4.2,Container Station 也終於能一同發佈了。

Container Station 有許多獨家功能,像是
  1. 同時支援 ARM and x86 平台,最近出的 NAS 都有支援這個功能。
  2. 除了當紅炸子雞 Docker 外,我們還支援 LXC,LXC 更適合做 OS 的虛擬化。
  3. 自動偵測 Docker Image 裡的設定,大部分 Image 不用多做設定就能直接使用。
除此之外,為了廣大的開發者我們還提供了這些實用功能:
  1. 一鍵架設 Docker Registry,相信真的在用 Docker 的人都需要這個服務。
  2. Container Station 也可以存取已經架好的 Private Registry
  3. 用 Docker compose 來架 App Repository,而且也開放格式在 github 上。
  4. 可以輕易自己 fork 我們的 qnap-dev/container-app 來放你自己的 App,UI 上設一下就可擺脫 QNAP 的控制 (雖然我們很希望你提 PR 給我們)
  5. 進階使用者,我們已經為你提供直接存取 docker service 用到的 CA, Cert and Key,照著 UI 提示就行。
  6. 進階使用者,我們也提供了我們的 API,你可以輕易用 API 打造自己的工具。

此外,Container 也能跟原本 QNAP 獨家提供的 Virtualization (qemu-kvm) 也能結合應用。
以下影片是在 docker container 內,跑 qemu-kvm 的虛擬化,你只要給定 ISO 的位置,就可以輕易開出一台虛擬機,還附上了 HTML5 VNC 的功能,這種應用我想目前是拿來做 target under test 是還不錯方便。



最後,LXC 還有一些額外應用,COSCUP 現場,我們的攤位上,2 台電視上的 Ubuntu 是直接用 Container Station 內的 LXC container 輸出的,這個功能也讓你的 NAS 不再只是 NAS,說是台桌機也不為過,實際上我用 TS-471 拿來裝 Steam 玩遊戲,效果很不錯。




最後的最後,我相信我們產品是非常有趣且富競爭力,我們也還在徵人,辦公位址可以在忠孝新生捷運站附近或汐止,有 Python,Go,AngularJS/React 技能的人非常歡迎直接與我聯絡 dorowu_AT_qnap.com。