Seperti biasa ketimbang mengerjakan tugas pokok, malah gagal fokus nyoba ngerjain hal lain. Kali ini edisi penasaran karena udah dari lama saya dan kolega sudah beberapa kali nyoba install Collabora untuk diintegrasikan ke Nextcloud yang udah lama terpasang, dan selalu berakhir gagal. Atau lebih tepatnya menyerah, wkwk. karena jujur saja step-stepnya sangat panjang dan karena bukan pengguna linux (ubuntu) potensi error yang tidak terbaca sangat tinggi.
Tutorial dari belajarlinux.id sebenernya sudah cukup jelas. Bahkan dari semua tutorial yang beredar di jagat internet isinya sama saja apalagi yang bahasa Inggris. Tapi ternyata tidak seindah harapan, setelah dicoba integrasi malah muncul server down, padahal kalau dicek Collabora tetep berjalan dengan lancar. Kalau dicek di console browser akan muncul firefox gagal melakukan koneksi ke Collabora dengan status wss://
bad request.
Setelah 3 hari kerja, yes it was 3 foking days, coba sana sini, baca logs docker, munculah sesuatu yang mencurigation, dibanyak tutorial file confignya ditulis dengan loolwsd.xml sementara yang saya temukan di sistem setelah install adalah coolwsd.xml, usut punya usut di versi terbaru (Desember 2021) ternyata menggunakan nama service coolwsd.
pantes saja kalau dicek dengan https://
alias akses langsung dari browser tampat lancar, tapi kalo diakses dengan Nextcloud jadi error karena menggunakan protokol socket (wss://
). Dan masalah tersebut bisa diatasi dengan mengubah setting reverse proxy yang ada di Nginx. location lool menjadi cool.
server {
server_name office.domain.com;
access_log /var/log/nginx/office-co.access;
error_log /var/log/nginx/office-co.error;
location / {
proxy_pass https://localhost:9980;
access_log off;
proxy_set_header Host $host;
}
# static files
location ^~ /loleaflet {
proxy_pass https://localhost:9980;
proxy_set_header Host $http_host;
}
# WOPI discovery URL
location ^~ /hosting/discovery {
proxy_pass https://localhost:9980;
proxy_set_header Host $http_host;
}
# Capabilities
location ^~ /hosting/capabilities {
proxy_pass https://localhost:9980;
proxy_set_header Host $http_host;
}
# main websocket
location ~ ^/cool/(.*)/ws$ {
proxy_pass https://localhost: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 ~ ^/cool {
proxy_pass https://localhost:9980;
proxy_set_header Host $http_host;
}
# Admin Console websocket
location ^~ /cool/adminws {
proxy_pass https://localhost:9980;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $http_host;
proxy_read_timeout 36000s;
}
listen [::]:443 ssl ipv6only=on; # managed by Certbot
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/office.domain.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/office.domain.com/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
add_header Strict-Transport-Security "max-age=31536000" always; # managed by Certbot
ssl_trusted_certificate /etc/letsencrypt/live/office.domain.com/chain.pem; # managed by Certbot
ssl_stapling on; # managed by Certbot
ssl_stapling_verify on; # managed by Certbot
}
Dan berikut ini setting untuk docker-compose agar lebih yoi
version: '2'
services:
office:
image: collabora/code
container_name: office
restart: always
ports:
- 127.0.0.1:9980:9980
environment:
- domain=cloud.domain.com
- server_name=office.domain.com
- username=admin
- password=S3cR3t
security_opt:
- seccomp:unconfined
cap_add:
- MKNOD
- SYS_CHROOT
- FOWNER
Untuk SSL bisa install pakai certbot sekaligus plugin certbot-nginx dan langsung eksekusi
sudo snap install --classic certbot
sudo apt install python3-certbot-nginx
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email admin@domain.com -d office.domain.com
dan untuk nginx entah kenapa untuk reload setting lebih bener pake ini
nginx -s reload
Problematika Linux atau lebih tepatnya community edition
Karena semua dikerjakan dengan sukarela, sehingga kita tidak bisa taken for granted alias pake aja langsung, di tengah jalan setup pasti akan menemukan masalah bahkan ketika kamu sudah pernah melakukan setup yang sama. Proses troubleshooting ini sungguh melelahkan. Sama seperti perkataan developer utama Symfomy, kita tidak bisa protes seenaknya, ya kalau mau aplikasi X maju, berkontribusi dong.