2017-11-20

NextCloud 與 LibreOffice Online 整合

使用雲端服務通常都會想起 Google Drive, DropBox, OneDrive 之類
而 Google Drive 及 OneDrive 整合了文件編輯工具,可以在線上進行雲端文件分享及即時編輯

由於需要編譯 LibreOffice CoreLibreOffice Online ,先從套件庫下載及安裝編譯工具
在 Terminal 輸入
sudo apt-get build-dep libreoffice
見下文
但會出現沒有原始碼的錯誤

Linux Mint 到 /etc/apt/sources.list.d/official-package-repositories.list
Ubuntu 到 /etc/apt/sources.list
將原來的 deb 行數複製,新複製的行數的 deb 改為 deb-src
見下文
見下文
或透過指令加入原始碼檔案
software_source='/etc/apt/sources.list.d/official-package-repositories.list'
tmp_file='/tmp/'`basename "${software_source}"`

cp "${software_source}" "${tmp_file}"
cat "${software_source}" | sed -r 's/^deb /deb-src /g' >> "${tmp_file}"
sudo mv "${tmp_file}" "${software_source}"

見下文
或透過 軟件來源 (Software Source) 來添加原始碼

不論用甚麼方法,加入原始碼後,更新套件庫,在 Terminal 輸入
sudo apt-get update

然後可以在 Terminal 輸入
sudo apt-get build-dep libreoffice
安裝 LibreOffice 的編譯工具
由於 build-dep 只能將對應套件的編譯工具下載,卻不能編譯工具移除
若只是以試用態度安裝,最好先將編譯工具列表記下,或到 /var/log/apt 查看套件管理的歷史,否則要恢復下載編譯工具前的狀態會非常困難

除了套件庫的編譯工具外還需要 libkrb5-dev, nasm, libcap-dev, nodejs, npm, python-polib, jake 進行編譯
由於會使用 git 來下載原始碼因此亦需要安裝 git
在 Terminal 輸入
sudo apt-get install git libkrb5-dev nasm libcap-dev npm python-polib
sudo npm install -g jake
jakenpm 的套件,因此需要使用 npm 進行安裝

安裝 jake 後將 /usr/bin/nodejs 添加連結為 /usr/bin/node
在 Terminal 輸入
cd /usr/bin
sudo ln -s nodejs node
否則編譯 LibreOffice Online 時會出錯

先下載需要的來源,在 Terminal 輸入
#git clone https://github.com/pocoproject/poco --depth=1
website='https://pocoproject.org'
key='^.*The latest stable release is '
version=`curl "${website}" 2>/dev/null | grep "${key}" | sed -r "s/${key}"'(.+)\. .+$/\1/'`
wget "${website}/releases/poco-${version}/poco-${version}.tar.bz2" -O 'poco.tar.bz2'
tar jxvf 'poco.tar.bz2'
git clone git://anongit.freedesktop.org/libreoffice/core --depth=1 libreoffice/core
git clone git://anongit.freedesktop.org/libreoffice/online --depth=1 libreoffice/online
#git clone https://github.com/nextcloud/server --depth=1 nextcloud
wget 'https://download.nextcloud.com/server/releases/latest.tar.bz2' -O 'nextcloud.tar.bz2'
tar jxvf 'nextcloud.tar.bz2'
git clone 'https://github.com/nextcloud/richdocuments' --depth=1 nextcloud/apps/richdocuments
若沒有特殊需要,建議使用 git 下載來源時加入 --depth=1 來下載最新的 commit 來源,比較快
若沒有指定 --depth=1 將會比較所有版本,下載時間非常長
所有資源合計大約 1 GB

POCO 是一個開源的 C++ 的函式庫,簡化了以 C++ 開發網絡操作上的程序
由於需要使用具備 JSONWebSocketPOCO函式庫
但由預設套件庫提供的 libpoco-dev 並不包含兩者,因此需要從 POCO 的原始碼安裝

見下文
到 POCO 的目錄,開啟 Terminal 輸入
./configure --prefix='/opt/poco'
make
sudo make install
設定 POCO 的安裝位置於 /opt/poco ,並進行編譯,完成編譯後安裝 POCO
編譯及安裝時間大約 20分鐘

見下文
到 LibreOffice Core 的目錄,開啟 Terminal 輸入
./autogen.sh
./configure --prefix='/opt/libreoffice/core'
make
#sudo make install
使用 autogen.sh 建立預設的 configure 設定
設定 LibreOffice 的安裝位置於 /opt/libreoffice/core ,並盡行編譯
安裝 LibreOffice 與否並非必要,因為主要是將 LibreOffice 編譯後,讓 LibreOffice Online 使用 LibreOffice 的核心
但安裝 LibreOffice 並不影響往後操作,有需要亦可以安裝 LibreOffice
留意編譯時不能使用 Super User 權限
編譯時間大約 10小時,安裝時間大約 5分鐘
由於編譯的時間極長,若打算安裝 LibreOffice Core ,安裝前的設定務必詳細考慮,否則再次編譯是非常漫長

見下文
見下文
當編譯 LibreOffice Core 時在處理 CPPUnit 的過程可能建議系統安裝相關的套件
按需要安裝與否

見下文
由 LibreOffice Core 編譯完成的 LibreOffice

見下文
到 LibreOffice Online 的目錄,開啟 Terminal 輸入
libreoffice_core_source_path='/somewhere/libreoffice/core'
poco_install_path='/opt/poco'

./autogen.sh
./configure \
--prefix='/opt/libreoffice/online' \
--with-lokit-path="${libreoffice_core_source_path}/include" \
--with-lo-path="${libreoffice_core_source_path}/instdir" \
--with-poco-includes="${poco_install_path}/include" \
--with-poco-libs="${poco_install_path}/lib" \
--enable-silent-rules \
--enable-debug
sudo make
sudo chown -R "${USER}:${USER}" .
同樣使用 autogen.sh 建立預設的 configure 設定
設定 LibreOffice 的安裝位置於 /opt/libreoffice/online
編譯 LibreOffice Online 需要使用已編譯的 LibreOffice Core
加入 --with-lokit-path 指向已編譯的 LibreOffice Core 的 include 目錄
--with-lo-path 指向已編譯的 LibreOffice Core 的 instdir 目錄
還有剛才的 POCO
加入 --with-poco-includes 指向已安裝的 POCO 的 include
--with-poco-libs 指向已安裝的 POCO 的 lib
留意編譯時需要使用 Super User 權限,編譯完成後將 LibreOffice Online 檔案改回當前使用者的擁有權
編譯時間大約 30分鐘

當 LibreOffice Online 編譯完成,在 Terminal 輸入
libreoffice_online_install_path='/opt/libreoffice/online'

sudo mkdir '/etc/loolwsd'
sudo cp 'etc/'* '/etc/loolwsd'
sudo mkdir -p "${libreoffice_online_install_path}/var/cache/loolwsd"
sudo chmod 0777 "${libreoffice_online_install_path}/var/cache/loolwsd"
/etc 建立 loolwsd 目錄,並將由 LibreOffice Online 提供的證書複製至 /etc/loolwsd
在 LibreOffice Online 的安裝位置建立 var/cache/loolwsd 目錄,是安裝位置不是原始碼位置
並設定操作權限為 0777 讓 LibreOffice Online 運行時存放暫存資料

見下文
完成設定後輸入
make run
來運行 LibreOffice Online 服務
開啟瀏覽器到 https://localhost:9980 測試

見下文
由於使用 SSL ,而由 LibreOffice Online 提供的證書屬於自簽證書,瀏覽器通常會基於安全理由封鎖網頁

見下文
先按 Advanced
再按 Add Exception

見下文
將 https://localhost:9980 設定為安全例外
然後按 Confirm Security Exception

見下文
當 https://localhost:9980 列為安全例外後,重新整理頁面,便不會再封鎖網頁
頁面上亦會顯示 OK 表示 LibreOffice Online 正在正常運行

在安裝 NextCloud 前,需要先安裝 ApachePHPMySQL 等套件
還有 NextCloud 需要使用的 php-zipphp-gdphp-curl 等函式庫
由於需要使用 MySQL 亦可以安裝 PHPMyAdmin 協助資料庫存取的操作
在 Terminal 輸入
sudo apt-get -y install apache2 php libapache2-mod-php mysql-server php-mysql php-zip php-gd php-curl phpmyadmin
進行安裝

如有需要,可以建立 nextcloud 的資料庫及使用者
在 Terminal 輸入 mysql 指令後,輸入
CREATE USER 'nextcloud-admin'@'localhost' IDENTIFIED BY 'admin-password';
GRANT USAGE ON *.* TO 'nextcloud-admin'@'localhost';-- REQUIRE NONE WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;
CREATE DATABASE IF NOT EXISTS `nextcloud`;
GRANT ALL PRIVILEGES ON `nextcloud`.* TO 'nextcloud-user'@'localhost';
或透過 PHPMyAdmin 建立 nextcloud 的資料庫及使用者
nextcloud-adminadmin-password 可以自行修改

除了安裝 AMP 外,由於 LibreOffice Online 需要使用 SSL
因此在 Terminal 輸入
cd '/etc/apache2/sites-enabled'
sudo ln -s '../sites-available/default-ssl.conf'
sudo a2enmod ssl
使用由 Apache2 提供的預設的 SSL 設定
啟動 Apache 的 SSL模組

修改 /etc/apache2/sites-available/default-ssl.conf
SSLCertificateFile /etc/loolwsd/cert.pem
SSLCertificateKeyFile /etc/loolwsd/key.pem
SSLCertificateChainFile /etc/loolwsd/ca-chain.pem
SSLCertificateFileSSLCertificateKeyFile 修改為 LibreOffice Online 提供的 cert.pemkey.pem
及加入 SSLCertificateChainFile 指向 LibreOffice Online 提供的 ca-chain.cert.pem
不建議將預設的 default-ssl.conf 提供的 SSLCertificateFileSSLCertificateKeyFile 更改
建議將原本的 SSLCertificateFileSSLCertificateKeyFile 以備註忽略
再新加 SSLCertificateFileSSLCertificateKeyFile 確保可以復原預設值

修改後,在 Terminal 輸入
sudo service apache2 restart
重新啟動 Apache 服務

準備設定 NextCloud
將 LibreOffice Online 的 ca-chain.cert.pem 證書增添至 NextCloud 的 resources/config/ca-bundle.crt
再將整個 nextcloud 的擁有者及群組改為 www-data
並將整目錄移至 Apache 的 document root 中,例如 /var/www/html
在 Terminal 輸入
cat 'online/etc/ca-chain.cert.pem' >> 'resources/config/ca-bundle.crt'
sudo chown -R 'www-data:www-data' nextcloud
sudo mv nextcloud /var/www/html

開啟瀏覽器到 https://localhost/nextcloud

見下文
見下文
見下文
與瀏覽 LibreOffice Online 相同,需要先將 https://localhost 列為安全例外才能瀏覽

見下文
見下文
設定 NextCloud 的管理員帳戶、密碼、使用的資料庫登入帳戶等資料並安裝
安裝完成後,會自動以管理員帳戶登入 NextCloud

見下文
第一次登入 NextCloud 會顯示 NextCloud 的宣傳資料

見下文
顯示 NextCloud 檔案目錄,當中包括使用手冊及一些文件、影片、圖片範例

見下文
按下右上角的設定圖示,按下 Apps

見下文
在應用程式列表會顯示 NextCloud 中已安裝、已啟用、未啟用的應用程式
及亦可以通過 NextCloud App Store 下載由 NextCloud 提供的應用程式

見下文
尋找 Collabora Online 的應用程式,按 Enable
Collabora Online 即是剛才下載的 richdocuments 若已經下載並存放至 apps 的目錄,可以直接到未啟用的應用程式列表中找到
若剛才沒有下載亦可以在此下載及安裝

見下文
下載、安裝、啟用、停用應用程式等操作都需要 NextCloud 管理員帳戶權限

見下文
當 Collabora Online 由 Enable 變成 Disable 表示 Collabora Online 已啟用
按下右上角的設定圖示,按下 Admin

見下文
見下文
在 Collabora Online Server 輸入 https://localhost:9980 即 LibreOffice Online 的預設路徑位置
Collabora Online Server 需要使用相同的協定即相同是 HTTPHTTPS
另外 Collabora Online Server 可以連接其他 LibreOffice Online 的 Web Socket ,但暫時先以 localhost 示範

見下文
回到檔案目錄,按下新增圖示,可以在新增檔案中加入 OpenDocument Format 的文件格式

見下文
新增 OpenDocument Format 文件
顯示文件擁有人、歷史及版本管理

見下文
按下 Help > About 可以顯示 LibreOffice Core 及 LibreOffice Online 的版本

見下文
LibreOffice Online 中的文本編輯器 Writer

見下文
LibreOffice Online 中的試算表工具 Calc

見下文
LibreOffice Online 中的簡報工具 Impress

Collabora Online 會通過 LibreOffice Online 進行文件編輯
LibreOffice Online 基本上是直接將 LibreOffice 的版面直接顯示
但由於網頁限制,一些功能並不能執行,而操作上與 LibreOffice 相同

見下文
當沒有任何操作,逾時大約1分鐘,編輯畫面會暫時鎖定避免誤碰,並在使用回到操作版面按鍵後恢復編輯狀態

見下文
當 LibreOffice Online 在使用者正在編輯的狀態下停止運作,亦會將編輯畫面鎖定,等待 LibreOffice Online 重新啟動

見下文
若果由外部網絡連接至 NextCloud 會提出警告,需要管理員將外部連接加入至信任域名才能生效

見下文
當按下剛才的信任域名連結會以 localhost 並登入至 NextCloud 並提出是否將外部連接加入

見下文
不一定需要由 localhost 才能設定信任域名,以其他已列為信任域名登入 NextCloud
並到在 Admin 頁面的網址加上 trustDomain=ip-or-domainquery string 亦可以添加信任域名

見下文
除了經網頁設置,亦可以到 nextcloud/config/config.phptrusted_domains 加入

若需要讓外部 IP 都能通過 Collabora Online 運作 LibreOffice Online 便需要使用閣下的公共 IP 或域名,不能使用 localhost
需要修改 Collabora Online Server 的位置
若是自建伺服器便需要到 Router 設定能讓外部存取的連接埠及虛擬伺服器
查看閣下的公共 IP 可以在 Terminal 輸入
curl ifconfig.io

見下文
由於由 LibreOffice Online 提供的 SSL 證書,只能在 localhost 中使用 (連 127.0.0.1 都不能)
當通過 NextCloud 的 Collabora Online 運作 LibreOffice Online 會再出現錯誤畫面

見下文
在 Logging 中會顯示
SSL: ceritficate subject name 'localhost' does not match target host name 'ip-or-domain'

見下文
利用 openssl 指令建立自簽署證書
在 Terminal 輸入
openssl genrsa -out 'key.pem' 2048
openssl req -new -x509 -days 365 -key 'key.pem' -out 'cert.pem'
RSA 私鑰通常現在最少建議 2048 位元長度
建立公鑰證書,如果不特別設定,其他資料可以使用預設資料,唯獨 Common Name 需要與 IP域名 匹配

見下文
建立證書後
key.pemcert.pem 取代 /etc/loolwsd 中的 key.pemcert.pem
並將自建的 cert.pem 證書加添至 nextcloud/resources/config/ca-bundle.crt
輸入 Terminal
sudo cp 'key.pem' '/etc/loolwsd/key.pem'
sudo cp 'cert.pem' '/etc/loolwsd/cert.pem'
但留意,因為 nextcloud/resources/config/ca-bundle.crt 屬於 www-data
因此必須由 rootwww-data 才能使用 >>cert.pem 的內容導入至 nextcloud/resources/config/ca-bundle.crt

見下文
見下文
使用自簽證書的簽署

另外若不想出現 SSL警告,除左將網址列為例外,亦可以購買認證的證書,或使用 Let's Encrypt 建立得到認證的證書

在 Terminal 輸入
sudo apt-get install python-letsencrypt-apache
安裝支援 ApacheLet's Encrypt

再輸入
sudo letsencrypt --apache -d 'ip-or-domain'
Let's Encrypt 建立 經認證的證書

見下文
Let's Encrypt 建議使用者輸入電子郵件作為恢復遺失的鑰匙之用

見下文
若不打算提交電子郵件可以取消當前服務,並輸入
sudo letsencrypt --apache -d 'ip-or-domain' --register-unsafely-without-email
來建立證書

見下文
見下文
Let's Encrypt 需要同使用者條款

見下文
建立證書有
Easy - 允許使用 HTTP 及 HTTPS 存取網站
Secure - 令所有請求都誘導使用 HTTPS
由於在下只是測試,因此選擇較簡單的 Easy

見下文
顯示已完成建立屬於該 IP 或域名的證書

見下文
證書會存放於 /etc/letsencrypt/live/ip-or-domain 位置

見下文
該目錄中會存放著 privakey.pemcert.pemchain.pemfullchain.pem
同樣將 privakey.pemcert.pemfullchain.pem 分別取代 /etc/loolwsd 中的 key.pemcert.pemca-chain.cert.pem
並將自建的 fullchain.pem 證書加添至 nextcloud/resources/config/ca-bundle.crt
輸入 Terminal
loolwsd_path='/etc/loolwsd'
letsencrypt_path='/etc/letsencrypt/live'
cn='ip-or-domain'
sudo cp "${letsencrypt_path}/${cn}/privakey.pem" "${loolwsd_path}/key.pem"
sudo cp "${letsencrypt_path}/${cn}/cert.pem" "${loolwsd_path}/cert.pem"
sudo cp "${letsencrypt_path}/${cn}/fullchain.pem" "${loolwsd_path}/ca-chain.cert.pem"
同樣需要透過 rootwww-datafullchain.pem 的內容導入至 nextcloud/resources/config/ca-bundle.crt

見下文
Apache 伺服器及 LibreOffice Online 均使用由 Let's Encrypt 建立的證書
兩者都視為受認證的網頁,因此不會產生警告信息
但由 Let's Encrypt 建立的證書只有 30日 有效

注意事項

在下下載 POCO 及 NextCloud 不是使用 git clone 而是使用 wget
在下嘗試編譯由 git clone 下載的 POCO 不論有否使用 --depth=1 安裝 POCO 後
見下文
在編譯 LibreOffice Online 的流程上會出現 common/MessageQueue.cpp 錯誤

使用由 git clone 下載的 NextCloud 不論有否使用 --depth=1
開啟瀏覽器到 https://localhost/nextcloud
見下文
都會出現 Composer autoloader not found 錯誤,因為 nextcloud/3rdparty 沒有任何資料
需要到 nextcloud/3rdparty 目錄,開啟 Terminal 輸入
sudo git submodule update --init --depth=1
sudo chown -R www-data:www-data .
同樣使用 --depth=1 只獲取最新的 commit 減省時間
下載 3rdparty 資料後將擁有者改及群組為 www-data 後,重新整理頁面便會正常顯示

見下文
但由 git 下載的 NextCloud 的版面設計與由網頁下載的版面設計有些分別

見下文
若沒有有效的 SSL證書 ,開啟編譯後的 LibreOffice Online 的 loolwsd.xml,暫時將 SSL 設定為 false 關閉 SSL
但亦會令通訊資料沒有加密,容易被他人截取及閱讀,風險需要自行評估

見下文
WOPI 全稱 Web Application Open Platform Interface
由於受 WOPI 限制,未經許可的 host 不能經 NextCloud 的 Collabora Online 存取 LibreOffice Online
否則即使登入 NextCloud 當使用 LibreOffice Online 時會出現 Unauthorized WOPI host 錯誤
host 可以使用 Regex 來加入,若不限制 host 可以使用 .+ 來讓所有 host 都能存取 LibreOffice Online

見下文
這個情況花了在下不少時間處理
錯誤頁面只顯示 Internal Server ErrorRemote AddressRequest ID 根本完全不知道發生甚麼事
上網及 NextCloud 的官方網頁查資料都不知用甚麼關鍵字搜尋

見下文
然後到 NextCloud 的 AdminLogging 頁面
發現 SSL certification problem: self signed certification in certification chain 的錯誤
縮窄範圍尋找資料,最後才知道當 NextCloud 使用 SSL 時需要在 NextCloud 的 resources/config/ca-bundle.crt 添加新的證書

見下文
這個情況的出現是由於沒有將 https://localhost:9980 列為安全例外而發生
但當前狀態卻不能立即將 https://localhost:9980 列為安全例外

完成 NextCloud 及 LibreOffice Online 之後
在下才在 Launchpad 發現 POCO 的 PPA https://launchpad.net/~zosrothko/+archive/ubuntu/pocoproject
測試後發現支援 JSON 及 WebSocket ,但 PPA 版本為 1.7.8 而由原始碼編譯版本為 1.7.9p2 (以發佈時間計算)
在 Terminal 輸入
sudo add-apt-repository ppa:zosrothko/pocoproject
sudo apt-get update
sudo apt-get install libpoco-dev
便可以減省編譯 POCO 的時間
由套件庫下載的 POCO 的 include 及 lib 會存放於 /usr/include/usr/lib

見下文
另外在下編譯 LibreOffice Core 後安裝 LibreOffice Core
由於已編譯的 LibreOffice Core 的檔案總體積為 8.8 GB 但安裝的 LibreOffice Core 只有 1.2 GB
使用安裝的 LibreOffice Core 作為編譯 LibreOffice Online 的來源比較不佔空間
比較 ${libreoffice_core_install_path}/lib/libreoffice/sdk/include 與已編譯的 LibreOffice Core 的 include
${libreoffice_core_install_path}/lib/libreoffice 與已編譯的 LibreOffice Core 的 instdir
兩者都相似
便嘗試以 --with-lokit-path=${libreoffice_core_install_path}/lib/libreoffice/sdk/include
--with-lo-path=${libreoffice_core_install_path}/lib/libreoffice
進行 LibreOffice Online 編譯
但卻出現 --with-lokit-path 缺少 LibreOfficeKit 的錯誤
因此將已編譯的 LibreOffice Core 的 include/LibreOfficeKit 複製至 ${libreoffice_core_install_path}/lib/libreoffice/sdk/include

最後在下以
libreoffice_core_install_path='/opt/libreoffice/core'

./configure \
--prefix=/opt/libreoffice/online \
--with-lokit-path="${libreoffice_core_install_path}/lib/libreoffice/sdk/include" \
--with-lo-path="${libreoffice_core_install_path}/lib/libreoffice" \
--with-poco-includes='/usr/include' \
--with-poco-libs='/usr/lib' \
--enable-silent-rules \
--enable-debug
再進行編譯,最後成功了

見下文
同樣亦由於 LibreOffice Online 的體積問題
由於已編譯的 LibreOffice Online 的檔案總體積為 949 MB 但安裝的 LibreOffice Online 只有 55 MB (意想不到)
亦同樣進行安裝

安裝後到 LibreOffice Online 的安裝位置有 binetcshare 三個目錄
典型地 bin 目錄存放執行檔
bin 目錄中的 loolwsd 就是 LibreOffice Online 的主要服務指令
loolwsd 全稱 LibreOffice OnLine Web Socket Daemon

在 Terminal 執行
sudo ./loolwsd
見下文
loolwsd 可能基於安全理由 loolwsd 完全不能由 rootSuper User 執行
不過閣下能先編輯 wsd/LOOLWSD.cppDo not run as root. Please run as lool user. 更改成備註才編譯便可以以 rootSuper User 執行

但即使不以 root 或 Super User 執行
見下文
仍然卻出現錯誤

由於 LibreOffice Online 安裝後仍以編譯的目錄結構尋找資料,因此需要將 bin 目錄中的結構模仿與編譯的結構一樣
loolwsd 需要存取 loolwsd.xmldiscovery.xmlloleaflet/*test/data/*
在 Terminal 輸入
libreoffice_online_source_path='/source/of/libreoffice/online'
libreoffice_online_install_path='/opt/libreoffice/online'

cd "${libreoffice_online_install_path}/bin"
sudo ln -s '../etc/loolwsd/loolwsd.xml'
sudo ln -s '../share/loolwsd/discovery.xml'
sudo ln -s '../share/loolwsd/loleaflet'
sudo mkdir 'test'
sudo cp -R "${libreoffice_online_source_path}/test/data" 'test'
sudo cp -R "${libreoffice_online_source_path}/systemplate" '..'
將安裝建立的 loolwsd.xmldiscovery.xmlloleaflet 以相對路徑的 link 連接,再將編譯的 test/data 整個複製

見下文
仍然出現錯誤
原因是 LibreOffice Online 除了 loolwsd 還需要 loolforkit 來輔助執行

在 Terminal 輸入
sudo setcap cap_fowner,cap_mknod,cap_sys_chroot=ep loolforkit
loolforkit 繞過權限檢查,來使用 mknodchroot 功能,以讓 loolwsd 調用
見下文
還有錯誤,因為未加入 loolwsd 需要加入的參數

在 Terminal 輪入
libreoffice_core_install_path='/opt/libreoffice/core'
libreoffice_online_install_path='/opt/libreoffice/online'

"${libreoffice_online_install_path}/bin/loolwsd" \
--o:sys_template_path="${libreoffice_online_install_path}/systemplate" \
--o:child_root_path='/tmp' \
--o:lo_template_path="${libreoffice_core_install_path}/lib/libreoffice" \
--o:storage.filesystem[@allow]=true \
--disable-ssl
見下文
進行測試,終於正常運作

留意到在下使用 loolwsd 加入 --disable-ssl 的參數,這是一個快速設定而不需要修改 loolwsd.xml 不使用 SSL 的項目
若需要使用 SSL 只需要將 --disable-ssl 刪除
並加入 --o:ssl.key_file_path--o:ssl.cert_file_path--o:ssl.ca_file_path 並指向對應的證書檔案
若果 loolwsd.xml 已經設置好 SSL 的證書路徑,只需要不加入 --disable-ssl 即可

libreoffice_core_install_path='/opt/libreoffice/core'
libreoffice_online_install_path='/opt/libreoffice/online'
libreoffice_online_ssl_path='/etc/loolwsd'

"${libreoffice_online_install_path}/bin/loolwsd" \
--o:sys_template_path="${libreoffice_online_install_path}/systemplate" \
--o:child_root_path='/tmp' \
--o:lo_template_path="${libreoffice_core_install_path}/lib/libreoffice" \
--o:storage.filesystem[@allow]=true \
--o:ssl.key_file_path="${libreoffice_online_ssl_path}/key.pem" \
--o:ssl.cert_file_path="${libreoffice_online_ssl_path}/cert.pem" \
--o:ssl.ca_file_path="${libreoffice_online_ssl_path}/ca-chain.cert.pem"

見下文
除了以上參數,還有
--o:admin_console.username='your-username'--o:admin_console.password='your-password'
來啟用並設定 LibreOffice Online 的管理頁面的使用者登入帳戶及密碼 your-usernameyour-password 可以修改
--o:logging.file[@enable]=true--o:logging.level=trace 來啟用日誌資料
--port 來設定 LibreOffice Online 的使用連接埠,即不一定使用 9980



若果閣下是使用 Debian 10+Ubuntu 18.04+Linux Mint 19+ 等版本
由於 Debian 10+ 沒有 npm 套件,需要使用 nodesource.com 提供的套件,輸入
curl -sL 'https://deb.nodesource.com/setup_10.x' | sudo bash -
然後安裝 nodejs 套件,便會包含 npm 套件
較新版 Let's Encrypt 套件名為 python3-certbot-apache
需要輸入
sudo apt-get install python3-certbot-apache
由於已經使用包含 WebSocketJSONlibpoco-devLibreOffice 6.x
可以省卻編譯 POCOLibreOffice Development Edition 的時間,只需要編譯 LibreOffice Online 即可
但要留意當安裝 libpoco-dev ,還需要到 /usr/lib 的位置,將 libPoco*.so.* 的檔案立建 libPoco*d.so 的捷徑
cd '/usr/lib'
for f in 'libPoco'*'.so.'*; do
    sudo ln -s "${f}" `echo "${f}" | sed -r 's/\.so\..+$/d.so/g'`
done
而 LibreOffice 6.x 則 libreofficelibreoffice-devlibreofficekit-dev 都需要安裝才能讓 LibreOffice Online 運作

由於在下是以 VirtualBox 進行測試,使用 2 CPU4GB RAM 模擬,因此編譯使用的時間未必能與實際情況相同

沒有留言 :

張貼留言