Hướng dẫn cài đặt Collabora Online trên Ubuntu và tích hợp với máy chủ Nextcloud

Hướng dẫn này sẽ chỉ cho bạn cách cài đặt Collabora Online trên Ubuntu và tích hợp nó với máy chủ Nextcloud hiện có mà không cần sử dụng Docker.
Trước đây mình có giới thiệu OnlyOffice cũng là một ứng dụng mã nguồn mở và có plugin để tích hợp vào Nextcloud, ở bài này mình tiếp tục giới thiệu một ứng dụng văn phòng trực tuyến khác để tích hợp vào Nextcloud. Đó là Collabora Online.

Giới thiệu

Collabora là gì

Collabora Online là bộ ứng dụng văn phòng trực tuyến nguồn mở dựa trên LibreOffice. Các tính năng của nó bao gồm:

  • Chỉnh sửa cơ bản
  • Độ trung thực cao, kết xuất WYSIWYG
  • Hỗ trợ định dạng tài liệu DOC, DOCX, PPT, PPTX, XLS, XLSX, ODF
  • Nhập và xem Visio, Publisher và hơn 100 ứng dụng khác
  • Chia sẻ file
    Collabora Online là một đóng góp lớn cho dự án LibreOffice. Tất cả các mã Collabora Online cuối cùng sẽ được đưa vào LibreOffice.

Điểm mạnh của Collabora Online

Hiện tại, ở máy chủ của mình đã gỡ OnlyOffice và chỉ còn cài đặt Collabora Online, vì một số lý do sau:

  • So sánh giữa Collabora và OnlyOffice thì mình không đề cập đến, tuy nhiên, ứng dụng Collabora đã được Nextcloud tích hợp với cái tên "Nextcloud Office", mình nghĩ Collabora Online sẽ nhận được sự hỗ trợ tốt hơn từ phía Nextcloud.
  • OnlyOffice hay Collabora Online tuy cũng đều hỗ trợ định dạng của Microsoft Office, tuy nhiên đến ngay cả các phiên bản Office khác nhau cũng không hiển thị được chuẩn xác nên OnlyOffice hay Collabora Online cũng không thể hơn được. Do đó việc hỗ trợ tốt hơn hay không với định dạng của Microsoft Office cũng không có ý nghĩa lắm.
  • Collabora Online hỗ trợ rất nhiều định dạng tệp, đặc biệt là hỗ trợ rất tốt định dạng ODF của LibreOffice, mà hiện tại mình chỉ còn sử dụng LibreOffice cho nhu cầu cá nhân => đây là lý do chính mà mình chuyển qua Collabora Online.

Yêu cầu hệ thống

  • Ubuntu Server (hiện mình đã nâng cấp lên 22.04)
  • LAMP (Apache2, MariaDB, PHP)
  • Nginx
  • Nextcloud
    Nextcloud và Collabora Online có thể cài đặt chung một server hoặc server riêng biệt cũng được. Tuy nhiên ở bài này mình sẽ hướng dẫn cài chung một server.

Cài đặt

Sau khi xác nhận các yêu cầu đã đầy đủ, chúng ta sẽ tiến hành cài đặt.

Bước 1: cài Collabora Online từ repo

Tùy hệ thống bạn chạy mà có các phiên bản khác nhau của Collabora Online.
Ubuntu 18.04

echo 'deb https://www.collaboraoffice.com/repos/CollaboraOnline/CODE-ubuntu1804 ./' | sudo tee /etc/apt/sources.list.d/collabora.list

Ubuntu 20.04

echo 'deb https://www.collaboraoffice.com/repos/CollaboraOnline/CODE-ubuntu2004 ./' | sudo tee /etc/apt/sources.list.d/collabora.list

Ubuntu 22.04

echo 'deb https://www.collaboraoffice.com/repos/CollaboraOnline/CODE-ubuntu2204 ./' | sudo tee /etc/apt/sources.list.d/collabora.list

Sau đó chạy lệnh sau để tải xuống và nhập khóa công khai Collabora Online, khóa này cho phép trình quản lý gói APT xác minh tính toàn vẹn của các gói được tải xuống từ kho lưu trữ này.

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 0C54D189F4BA284D

Vì kho lưu trữ này sử dụng kết nối HTTPS nên cần cài đặt gói apt-transport-https và ca-certificates để trình quản lý gói APT có thể thiết lập kết nối an toàn đến kho lưu trữ.

sudo apt install apt-transport-https ca-certificates

Cập nhập package và cài đặt

sudo apt update
sudo apt install coolwsd code-brand

Bước 2: cấu hình Collabora Online WebSocket Daemon

Sau khi cài đặt xong, bạn có thể kiểm tra trạng thái của coolwsd bằng lệnh

systemctl status coolwsd

Sẽ thấy trạng thái active là failed

Theo mặc định, coolwsd cho phép kết nối TLS. Tuy nhiên, nó không tìm thấy tệp chứng chỉ TLS, do đó khởi động không thành công. Tốt hơn hết là tắt TLS trong coolwsd và sử dụng TLS ở Reverse Proxy. Tệp cấu hình coolwsd được đặt tại /etc/coolwsd/coolwsd.xml. Tuy nhiên, đây là một tệp XML, không dễ đọc và chỉnh sửa. Chúng ta có thể sử dụng công cụ coolconfig để thay đổi cấu hình.

Chạy lệnh sau để tắt TLS trong coolwsd.

sudo coolconfig set ssl.enable false

Và kích hoạt ngưng TSL trong Reverse Proxy

sudo coolconfig set ssl.termination true

Theo mặc định, coolwsd chỉ cho phép các máy chủ đã biết truy cập dịch vụ của mình. Để cho phép Nextcloud truy cập dịch vụ, hãy chạy lệnh sau để thêm tên máy chủ Nextcloud của bạn vào whitelist.

sudo coolconfig set storage.wopi.host nextcloud.host-cua-ban.com

Bật tài khoản quản trị cho coolwsd với lệnh sau. Bạn sẽ cần cài tên đăng nhập và mật khẩu cho tài khoản quản trị này.

sudo coolconfig set-admin-password

Khởi động lại và kiểm tra. Nếu hiển thị trạng thái active là active thì Collabora Online đã sẵn sàng hoạt động.

Bước 3: cài đặt Reverse Proxy

Bạn có thể cài đặt ở cả Apache2 hoặc Nginx. Hệ thống của mình hiện sử dụng Nginx làm Reverse Proxy, đồng thời dùng SSL của Let's Encrypt và mình đã lấy sẵn chứng chỉ SSL rồi (click vào đây để xem thêm).
Tạo file Virtual Host

sudo nano /etc/nginx/sites-available/collabora.conf

Nhập vào nội dung sau

server {
	listen 443 ssl;
	server_name **domain-collabora-cua-ban**;
	error_log /var/log/nginx/collabora.error;

	ssl_certificate /etc/letsencrypt/live/**domain-collabora-cua-ban**/fullchain.pem;
	ssl_certificate_key /etc/letsencrypt/live/**domain-collabora-cua-ban**/privkey.pem;

	# static files
	location ^~ /browser {
		proxy_pass http://127.0.0.1:9980;
		proxy_set_header Host $http_host;
	}

	# WOPI discovery URL
	location ^~ /hosting/discovery {
		proxy_pass http://127.0.0.1:9980;
		proxy_set_header Host $http_host;
	}

	# Capabilities
	location ^~ /hosting/capabilities {
		proxy_pass http://127.0.0.1:9980;
		proxy_set_header Host $http_host;
	}

	# main websocket
	location ~ ^/cool/(.*)/ws$ {
		proxy_pass http://127.0.0.1:9980;
		proxy_set_header Upgrade $http_upgrade;
		proxy_set_header Connection "Upgrade";
		proxy_set_header Host $http_host;
		proxy_read_timeout 36000s;
	}

	# download, presentation and image upload
	location ~ ^/(c|l)ool {
		proxy_pass http://127.0.0.1:9980;
		proxy_set_header Host $http_host;
	}

	# Admin Console websocket
	location ^~ /cool/adminws {
		proxy_pass http://127.0.0.1:9980;
		proxy_set_header Upgrade $http_upgrade;
		proxy_set_header Connection "Upgrade";
		proxy_set_header Host $http_host;
		proxy_read_timeout 36000s;
	}
}

Chú ý: thay domain-collabora-cua-ban bằng thông tin chính xác.
Lưu và đóng file, kiểm tra lại

sudo nginx -t

Nếu không lỗi, reload lại Nginx

sudo systemctl reload nginx

Bước 4: tích hợp Collabora Online vào Nextcloud

Trong Nextcloud dashboard, vào phần Apps (https://nextcloud.example.com/settings/apps).
Tiếp theo, vào phần Office & Text, tìm Nextcloud Office app và click vào "Download and Enable" (Chú ý: tên ứng dụng Collabora Online đã được đổi tên thành Nextcloud Office)

Sau khi ứng dụng được vào, vào Nextcloud Settings -> Administration -> chọn Nextcloud Office. Mặc định, Nextcloud sử dụng "built-in CODE server", nó không được phù hợp lắm (mà mình cũng thử dùng tuy nhiên ...không cài được). Lựa chọn "Use your own server" và nhập vào domain của Collabora Online của bạn (chú ý: bao gồm cả https:// prefix) và nhấn Save.

Nếu hiển thị "Collabora Online server is reachable." như hình là chúng ta đã tích hợp thành công Collabora Online vào Nextcloud. Giờ bạn có thể tạo file mới hoặc upload file có sẵn lên để kiểm tra được rồi đó.

Trang quản trị của Collabora Online ở địa chỉ https://collabora.example.com/browser/dist/admin/admin.html. Bạn cần nhập tài khoản và mật khẩu quản trị đã tạo ở Bước 2

Collabora Online đã tích hợp được vào Nextcloud và sẵn sàng hoạt động rồi!!!

Chú ý:

  • Phần này chắc cũng ít người gặp nên mình tuy đã cài thành công nhưng khi tích hợp đều bị lỗi "could not establish connection to the collabora online server.". Nguyên nhân là do server mình đặt ở nhà, tuy nhiên modem lại không có chức năng để cấu hình được Hairpin NAT, mà mình cài NextCloud và Collabora Online chung một server, do đó NextCloud sẽ không thể kết nối được đến Collabora Online. Để có thể kết nối được, mình cần phải sửa file host
sudo nano /etc/hosts

và chèn thêm đoạn sau

127.0.0.1 domain-collabora-cua-ban
127.0.0.1 domain-nextcloud-cua-ban

Tham khảo