in Server Side

Install Collabora CODE dan kelemahan Developer/Community Edition

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

Wisdom of the Ancients

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.

Write a Comment

Comment