Showing posts with label QNAP. Show all posts
Showing posts with label QNAP. 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。

2017/10/30

LXC Ubuntu 17.10 Desktop on QNAP NAS via Container Station


Ubuntu 17.10 在前幾天發行了,此版本是 Ubuntu 第一次使用 GNOME 當做預載的桌面系統。Doro 花了點時間將 Ubuntu 17.10 轉成 LXC Container,並能透過內建的網頁版 VNC 直接存取桌面系統,再包裝成能在 QNAP NAS 能直接使用的格式。隨後,此文將針對 gnome-shell 做了一些調效,並簡單試用了一下 snap 安裝殺手級應用 nextcloud。

Ubuntu 17.10 Desktop on LXC Container


在任意 QNAP x86 NAS 下開啓 Container Station,進入 Preference → Application Repository,將 Owner 改成 fcwu 後按下 Apply。


進入 Create Container 便能發現 Ubuntu 17.10 Desktop,按下 Install。


在 Port forwarding 的地方注意一下,看要使用那個 port 存取網頁 VNC 功能,這裡我用 port 5950。



經過好一陣子下載及建立,終於完成,進到剛才建立的 Container 直接按連結,便能看到 Ubuntu 桌面,預設的帳密為 ubuntu/ubuntu。


登入畫面已是 GDM,使用預設密碼 ubuntu 進入。


真的是 Ubuntu 17.10 喔。


開了幾個 App,點擊左上會把所有視窗給平鋪出來了,右邊目前有看到 2 個 workspace ,可以直接把視窗拉到不同的 workspace。


點擊左下角會出現目前有安裝的 Apps。


點擊正上方的日期,會有日曆以及通知。


右上則是音量,網路,設定等功能。


gnome-shell extension

gnome-shell 好玩的地方在很多 extension 可以安裝,我本身還是習慣以前的 Unity 使用方式,所以重新找了一些 extension。

要裝 extension 前建議先裝 Chrome or Chromium。


用 Chrome 開啟 https://extensions.gnome.org 會提示有些 packages 要安裝,按照指示 apt install chrome-gnome-shell 後,便可直接用該網站安裝 gnome-shell extensions。



我安裝了以下 extensions
  1. Dash to Dock - 左邊的 docker
  2. Frippery Move Clock - 時鐘移到右邊
  3. Gnome Global Application Menu - 整合 menu 至上方 panel
  4. Pixel Saver - title bar 放在 panel
  5. system-monitor - 系統資源監控
  6. User Themes - 方便安裝 themes


theme 的部分,我是直接 apt install gnome-tweak-tool numix-*,隨後再開 gnome-tweak-tool 來調整。

 


 安裝 Nextcloud


自從 Canonical 有了 snap,安裝這些應用真的很容易,指令就 snap install nextcloud,或是 UI 開 Ubuntu Software 也可點一點就裝完。



裝完後,第一次會要求你建立管理員帳號。



因為在 LXC Container 內使用,所以得進到 Container Station UI 上,設一下轉埠,我這裡用 18080。


從別台機器存取,nextcloud 會要求將此 IP/Domain 加入信任網域,照著指示在同台機器開那個網址便設定完成。



後記


要在 GNOME (wayland) 裡跑這種虛擬桌面真的有不少 know how,從 systemd, systemd-logind, xdummy or xvfb 選擇, novnc package, 以前桌面開在 tty7 現在是 tty1 for greeter, tty2… for session,LXC 權限究竟要開那些等等,整體來說是個很有趣的經驗。

2017/06/26

QNAP Browser Station: 免安裝直接使用 NAS 成連線跳板

太久沒寫文章,代表敝部門很久沒產品了嗎?其實不盡然,Container Station 現在是很多 App 的核心,這部分做了很多的努力,這些改進就留到下次想起來再寫。

這次是要介紹最近也是敝部門的新產品 Browser Station,2 個月內下載次數破萬(開心),這項產品的使用情境就是把 NAS 當跳板,像身處中國想用 FB,此時只有家裡有台 NAS 裝上 Browser Station 想連到那都可以,又或是說在家裡很想連到公司的某個網頁服務,這時只要確保你可以連到公司任一台 NAS,便可開啟虛擬的 Browser,讓你從 NAS 直接上網,使用起來像下圖,Chrome in Firefox


有在 follow 我的 github 的人,大概知道我有個星星很多的 project Docker VNC Ubuntu Desktop,原理大概就是那樣,Xvfb, x11vnc, noVNC 等等。

當然 QNAP 這版有一些特殊功能,像是

可打中文,輸入法是直接用外面的 (host)


視窗大小是可以隨意調整的 (不要以為這很好做,超難的)


複製貼上是必備的 


其他使用者的登入情境就不截圖了,就技術上還有 host 上該使用者可存取的 folder 會即時同步到 container 內,這用了 bindfs and inotify 來達成。

另外寫了個 Chrome extension 來替換原本的 Chrome 首頁。

一個有趣的 project...

2015/11/23

QNAP Ubuntu Station: 透過 NAS 上的 HDMI 輸出,使用 Ubuntu 桌面


今年年中敝部門第一項作品 Container Station 發佈後,年底第二項作品也終於要登場,Ubuntu Station。

QNAP NAS 是少數幾個有支援 HDMI 輸出的 NAS 品牌,過去公司開發了 HD Station,HD Station 針對了電視上使用的族群設計並結合一些常用應用程式,像 Kodi,YouTube TV。

Ubuntu Station 也是使用了 NAS HDMI 輸出,但輸出的是 Ubuntu 桌面,藉此讓 QNAP NAS 能有更多輕鬆的客制化方式。以下將對 Ubuntu Station 的功能做介紹。

完整的 Ubuntu 功能

此 Ubuntu 是由 LXC Ubuntu 14.04.3 (約 11 月初的版本) 客制化而成,原先 Ubuntu 可以使用的應用程式或套件管理系統 apt 皆能正常使用,因此過往在 NAS 很難安裝其他自由軟體在 NAS 上的問題也能迎刃而解。下圖是使用指令安裝 VLC 播放器的螢幕截圖:



除了一般的軟體外,QNAP 針對 DKMS (Ubuntu 內動態編譯 kernel module 的機制) 也有做修正;舉例來說若要安裝 VirtualBox ,按照官網說明即可安裝,與一般軟體不同的是,在安裝中會編譯 VirtualBox 需要的 kernel module (vbox*.ko) 並安裝至系統中,QNAP 有針對這個流程優化,下圖即是在 Ubuntu Station 使用 VirtualBox 安裝 Windows 7 的截圖:



整體來說 QNAP 在這裡是儘可能的減少客制化,以提供跟光碟安裝出來相同的使用情境。(其實 QNAP 做了不少 bug fixes)

QTS 網頁控制頁面

在第一次安裝只需在 QNAP NAS App Center 裡點選安裝 Ubuntu Station 即可,開啟 Ubuntu Station 網頁控制頁面,第一次使用時約需下載 700 MB root file system,以及從 Ubuntu repository 下載更新,完成安裝後網頁界面如下圖:



它除了可控制解析度,聲音來源,另外我們提供的網頁界面的 VNC 可直接遠端操作 Ubuntu。

資料匣同步

在 Ubuntu 內也有 /share 資料匣這部份完全跟 NAS shared folder 同步,此外開啟 Ubuntu 檔案總管 (nautilus),我們將 NAS shared folder 直接放在左邊的 Sidebar,讓使用者更容易操作 NAS 上的檔案,如下圖左上視窗,而在 NAS 上的 File Station 也多了個 Ubuntu 類別直接存取 Ubuntu 登入使用者的家目錄,如下圖右下:



藉此,像是 NAS 原本提供的服務,如 Backup Station 將可直接備份 Ubuntu 檔案到遠端電腦。

獨立 IP

原先在 LXC 網路設計是用 veth,這樣的網路架構對於要開 port 給別人存取的服務會很不方便,所以這部分 QNAP 故意改用 bridge 到 default gateway 的網卡,讓 Ubuntu 也能有跟 NAS 同一個網域的 IP。

LXC 原生效能,安全,硬體加速

LXC 提供了接近原生效能,也更安全,我想這 2 點不用多說。靠著原本 LXC 設計的架構 QNAP 授與它直接與 graphic 硬體存取能力,因此原本這張顯卡能提供多少的能力,在 Ubuntu Station 也能提供相同能力,下圖顯示了 glxinfo and VAAPI 的支援狀況:


總結

目前看來 Ubuntu Station 應能在 TS-X53A 推出時一同上市,而其它較新的機種(X51, X53, X70, X71...)應該在 12 月中一同支援。因為小弟家裡是 TVS-471,這台應該能得到更好的支援(誤)


最後我想學跟蛋黃哥一樣躺著說:好~累~喔~