GNU/Linux >> Belajar Linux >  >> Ubuntu

Cara Mengintegrasikan OnlyOffice dengan NextCloud di Ubuntu

Seperti yang mungkin Anda ketahui, Nextcloud adalah solusi penyimpanan cloud yang dihosting sendiri dan OnlyOffice adalah server dokumen kantor online yang dihosting sendiri. Tutorial ini akan menunjukkan kepada Anda cara mengintegrasikan OnlyOffice dengan Nextcloud , sehingga Anda dapat mengedit dokumen office (DOCX, XLSX, PPTX, dll.) langsung dari antarmuka web NextCloud.

Fitur Aplikasi Integrasi Nextcloud OnlyOffice

  • Editor teks berfitur lengkap tersedia online dengan semua fungsi editor desktop.
  • Fidelitas tampilan, konversi, pencetakan, dan paginasi 100%.
  • Ini memungkinkan Anda untuk menambahkan tautan, tabel, bagan, menyisipkan gambar, bentuk otomatis, rumus, objek teks dan memanipulasinya, membuat daftar berpoin atau bernomor.
  • Pengeditan kolaboratif waktu-nyata dengan rekan satu tim Anda:tampilkan perubahan secara instan atau setelah disimpan saja. Gunakan komentar dan obrolan bawaan untuk meninjau dan melacak perubahan.
  • Mendukung pengeditan dan penyimpanan file DOCX, XLSX, PPTX, TXT. Anda juga dapat menyimpan file dalam format lain seperti ODT, ODS, ODP, DOC, XLS, PPT, PPS, EPUB, RTF, HTML, HTM.
  • Sepenuhnya kompatibel dengan format Office Open XML:.docx, .xlsx, .pptx
  • Simpan file secara otomatis, jadi Anda tidak akan kehilangan pekerjaan.
  • Mendukung karakter Latin, CJK (Cina, Jepang, Korea).

Prasyarat

Server dokumen OnlyOffice membutuhkan setidaknya CPU 2 inti dan RAM 2GB. Untuk membuatnya berjalan lancar dengan Nextcloud, saya sarankan menggunakan server dengan CPU 4 inti dan RAM 4GB. Anda dapat membeli VPS yang kuat dari Contabo dengan biaya yang sangat murah. Jika ada banyak pengguna, Anda harus mempertimbangkan untuk meningkatkan spesifikasi server.

Contabo hanya memiliki pusat data di Jerman. Jika Anda memerlukan VPS yang dihosting di AS, saya sarankan Turnkey Internet, yang menawarkan CPU 4 inti, VPS RAM 8 GB seharga 9.99 USD/bulan.

Untuk menyelesaikan panduan ini, Anda harus memiliki server Nextcloud yang berfungsi. Jika Anda belum melakukannya, silakan baca artikel berikut untuk menyiapkan server Nextcloud terlebih dahulu.

  • Instal NextCloud di Ubuntu 18.04 dengan Nginx (LEMP Stack)

Kemudian baca instruksi berikut untuk mengintegrasikan OnlyOffice dan Nextcloud. Server dokumen OnlyOffice dan server Nextcloud dapat diinstal pada dua host yang berbeda Mari kita mulai.

Langkah 1:Instal ONLYOFFICE Document Server di Ubuntu

Server dokumen OnlyOffice bergantung pada PostgreSQL, Node.js, Server Redis, server RabbitMQ, dan Nginx. Langkah-langkah berikut diuji pada server Ubuntu 18.04 tetapi juga harus berlaku untuk distribusi Linux dalam keluarga Debian.

Instal PostgreSQL dari repositori Ubuntu

sudo apt install postgresql

Kemudian buat onlyoffice basis data.

sudo -i -u postgres psql -c "CREATE DATABASE onlyoffice;"

Buat onlyoffice pengguna.

sudo -i -u postgres psql -c "CREATE USER onlyoffice WITH password 'onlyoffice';"

Berikan izin.

sudo -i -u postgres psql -c "GRANT ALL privileges ON DATABASE onlyoffice TO onlyoffice;"

Catatan :Nama pengguna dan sandi harus onlyoffice .

Instal NodeJS dari repositori resmi

Server dokumen OnlyOffice memerlukan nodejs versi 8.12.0+, tetapi versi di repositori Ubuntu sudah usang, jadi kita perlu menginstal versi LTS terbaru (12.13.1) dari Node.js dari repositori upstream.

Tambahkan repositori Node.js.

curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -

Instal Node.js.

sudo apt install nodejs -y

Periksa versi Node.js.

node -v

Contoh keluaran:

v12.13.1

Instal server Redis dan Rabbitmq

sudo apt install redis-server rabbitmq-server

Periksa statusnya.

systemctl status redis-server

systemctl status rabbitmq-server

Anda akan melihat mereka aktif (berjalan) . Jika rabbitmq-server gagal memulai, itu sebagian besar karena memori rendah pada mesin atau nama host yang tidak valid. Server Redis mendengarkan 127.0.0.1:6379 . RabbitMQ mendengarkan 0.0.0.0:25672 dan 0.0.0.0:4369

Instal server dokumen OnlyOffice

Tambahkan repositori OnlyOffice dengan perintah berikut.

echo "deb http://download.onlyoffice.com/repo/debian squeeze main" | sudo tee /etc/apt/sources.list.d/onlyoffice.list

Impor kunci publik OnlyOffice.

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys CB2DE8E5

Perbarui indeks paket lokal dan instal server dokumen OnlyOffice. Perhatikan bahwa onlyoffice-documentserver paket akan menginstal nginx-extras sebagai dependensi, jadi jika server web Apache sedang berjalan, Anda harus menghentikannya terlebih dahulu.

sudo apt update

sudo apt install onlyoffice-documentserver

Selama proses instalasi, Anda akan diminta untuk memasukkan kata sandi PostgreSQL hanya untuk office. Masukkan “onlyoffice” (tanpa tanda kutip ganda).

Anda juga harus menerima persyaratan lisensi Microsoft untuk menginstal font inti TrueType dari Microsoft.

Blok server Nginx akan diinstal sebagai /etc/nginx/conf.d/ds.conf . (Ini sebenarnya adalah tautan simbolis ke /etc/onlyoffice/documentserver/nginx/ds.conf .) Server dokumen OnlyOffice adalah aplikasi web nodejs dan Nginx bertindak sebagai proxy terbalik. /var/www/onlyoffice/documentserver/ adalah direktori root web.

Setelah instalasi selesai, masukkan alamat IP publik server Anda di browser web, Anda akan melihat “Document Server sedang berjalan”

Untuk memeriksa nomor versi server dokumen, Anda dapat menggunakan perintah berikut.

apt search onlyoffice-documentserver

Contoh keluaran.

onlyoffice-documentserver/squeeze,now 5.4.1-39 amd64 [installed]
  online viewers and editors for text, spreadsheet and presentation files.

Langkah 2:Mengaktifkan HTTPS untuk Server Dokumen

Untuk menghubungkan NextCloud ke server dokumen OnlyOffice, yang terakhir harus berjalan dalam mode HTTPS (Baik server Nextcloud dan browser pengguna harus melakukan kontak dengan server dokumen). Langkah-langkah berikut menunjukkan cara mendapatkan dan menginstal sertifikat Let's Encrypt TLS.

Pertama, kita perlu mengedit file blok server OnlyOffice Nginx.

sudo nano /etc/nginx/conf.d/ds.conf

Kami menambahkan direktif server_name seperti di bawah ini. Jangan lupa untuk mengatur DNS A record untuk onlyoffice.your-domain.com .

include /etc/nginx/includes/http-common.conf;
server {
  listen 0.0.0.0:80;
  listen [::]:80 default_server;
  server_tokens off;
  server_name onlyoffice.your-domain.com;

  include /etc/nginx/includes/ds-*.conf;
}

Simpan dan tutup file. Muat ulang Nginx agar perubahan diterapkan.

sudo systemctl reload nginx

Kemudian instal klien certbot (Let's Encrypt) dan plugin Nginx.

sudo apt install certbot python3-certbot-nginx

Selanjutnya, jalankan perintah berikut untuk mendapatkan sertifikat TLS gratis menggunakan plugin Nginx.

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d onlyoffice.your-domain.com

Dimana:

  • --nginx :Gunakan plugin nginx.
  • --agree-tos :Menyetujui persyaratan layanan.
  • --redirect :Memaksa HTTPS dengan pengalihan 301.
  • --hsts : Tambahkan header Strict-Transport-Security ke setiap respons HTTP. Memaksa browser untuk selalu menggunakan TLS untuk domain. Mempertahankan dari SSL/TLS Stripping.
  • --staple-ocsp : Mengaktifkan Stapel OCSP. Respons OCSP yang valid ditempelkan ke sertifikat yang ditawarkan server selama TLS.

Dalam beberapa detik, Anda akan melihat pesan seperti di bawah ini, yang berarti sertifikat TLS berhasil diperoleh.

Kunjungi https://onlyoffice.your-domain.com di browser web untuk memverifikasi server dokumen OnlyOffice berjalan dengan benar dalam mode HTTPS.

Langkah 3:Instal Aplikasi Integrasi Nextcloud OnlyOffice

Masuk ke antarmuka web Nextcloud sebagai admin, lalu buka halaman Nextcloud Apps, klik tombol Office & Text tab di panel kiri. Anda akan menemukan aplikasi OnlyOffice. Unduh dan aktifkan.

Setelah itu, masuk ke halaman Nextcloud Settings, pilih ONLYOFFICE tab di panel kiri dan masukkan nama domain untuk OnlyOffice di bidang Alamat Layanan Pengeditan Dokumen.

Setelah menyimpan pengaturan di atas, Anda seharusnya dapat membuat dokumen, spreedsheets, dan file presentasi di dalam Nextcloud dengan mengklik tombol plus (+). Tab terpisah akan dibuka untuk pengeditan.

Anda juga akan melihat item baru bernama “Buka di OnlyOffice” di menu konteks dokumen kantor.

Menginstal OnlyOffice Document Server dan Nextcloud pada Host yang Sama

Server OnlyOffice Document menggunakan Nginx sebagai server web.

Jika Anda memiliki server Nextcloud yang berjalan dengan Nginx, maka tidak ada kerusakan pada server Nextcloud Anda saat menginstal OnlyOffice di mesin yang sama. Ini akan menghapus nginx-core dan instal nginx-extras paket, jadi akan ada sedikit waktu henti, tetapi konfigurasi Anda akan tetap utuh.

Jika Anda memiliki server Nextcloud yang berjalan dengan server web Apache, dan Anda ingin menginstal OnlyOffice pada mesin yang sama, maka Anda memiliki dua pilihan:

  1. Hentikan/hapus Apache, gunakan Nginx sebagai server web untuk Nextcloud dan OnlyOffice. Anda dapat menggunakan konfigurasi Nextcloud Nginx dalam tutorial ini.
  2. Konfigurasikan Nginx sebagai proxy terbalik untuk Apache.

Mengonfigurasi Nginx sebagai Proxy Terbalik untuk Apache

Jika Anda memilih rute kedua, maka Anda harus terlebih dahulu mengubah nomor port Apache sebelum Anda menginstal server dokumen OnlyOffice.

Edit ports.conf berkas.

sudo nano /etc/apache2/ports.conf

Temukan barisnya:

Listen 80

Ubah ke nomor port yang berbeda seperti 8180. Perhatikan bahwa Anda tidak boleh menggunakan 8080 di sini karena server dokumen OnlyOffice memerlukan port 8080 untuk memulai layanan dokumennya.

Listen 8180

Anda juga harus mengubah nomor port SSL karena nanti Nginx akan melakukan penghentian SSL. Temukan barisnya:

Listen 443

Ubah nomor port menjadi seperti 4433.

Listen 4433

Simpan dan tutup file. Selanjutnya, edit file host virtual untuk Nextcloud.

sudo nano /etc/apache2/sites-enabled/nextcloud.conf

Baris pertama harus seperti ini:

<VirtualHost *:80>

Ubah nomor port menjadi 8180.

<VirtualHost *:8180>

Kita juga harus menonaktifkan pengalihan HTTP ke HTTPS dengan menambahkan karakter komentar sebelum baris berikut. (Server Nextcloud Anda menggunakan koneksi HTTPS, kan?)

#RewriteEngine on
#RewriteCond %{SERVER_NAME} =nextcloud.your-domain.com
#RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent]

Dan ubah port mendengarkan SSL.

<VirtualHost *:443>

Ubah port di atas menjadi 4433. Simpan dan tutup file. Muat ulang konfigurasi Apache.

sudo systemctl reload apache2

Sekarang Apache mendengarkan pada port 8180 dan 4433. Kemudian kita dapat mengikuti petunjuk di atas untuk menginstal server dokumen OnlyOffice, yang akan menginstal Nginx dalam prosesnya.

Setelah server dokumen OnlyOffice dan Nginx diinstal, buat file blok server Nginx untuk permintaan proxy ke Apache.

sudo nano /etc/nginx/conf.d/nextcloud-proxy.conf

Tambahkan baris berikut ke file. Ganti nama domain dengan nama Anda sendiri. Jalur untuk ssl_certificate dan ssl_certificate_key adalah untuk Let's Encrypt sertifikat yang diterbitkan. Jika Anda menggunakan sertifikat yang dikeluarkan oleh CA lain, Anda harus memasukkan jalur Anda sendiri.

server {
        listen 80;
        server_name nextcloud.your-domain.com;
        return 301 https://$server_name$request_uri;
}

server {
        listen 443 ssl http2;
        server_name nextcloud.your-domain.com;

        ssl_certificate /etc/letsencrypt/live/nextcloud.your-domain.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/nextcloud.your-domain.com/privkey.pem;

        ssl_session_timeout 1d;
        ssl_session_cache shared:SSL:10m;
        ssl_session_tickets off;
        ssl_protocols TLSv1.1 TLSv1.2;

        add_header Strict-Transport-Security max-age=15768000;

        ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS';
        ssl_prefer_server_ciphers on;

        location / {
                proxy_pass http://127.0.0.1:8180;
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
}

location / {...} bagian mengalihkan semua permintaan ke server web Apache yang mendengarkan pada port 8180. Simpan dan tutup file. Kemudian uji konfigurasi Nginx.

sudo nginx -t

Muat ulang Nginx jika sintaksnya OK.

sudo systemctl reload nginx

Sekarang Anda seharusnya dapat mengunjungi server Nextcloud Anda seperti biasa, tanpa menambahkan nomor port di URL. Jika Anda menggunakan perintah cURL berikut untuk mengambil header HTTP, Anda akan melihat server front-end adalah Nginx.

curl -I https://nextcloud.your-domain.com

Contoh keluaran:

HTTP/1.1 302 Found
Server: nginx/1.11.9
Date: Tue, 14 Mar 2017 08:55:30 GMT
Content-Type: text/html; charset=UTF-8

Mengurangi Overhead DNS dan HTTPS

Jika Nextcloud dan OnlyOffice diinstal pada host yang sama, maka Nextcloud dan OnlyOffice dapat berbicara satu sama lain secara lokal, tanpa harus menanyakan nama DNS publik dan membuat koneksi HTTPS.

Pertama, Anda perlu membuat blok server Nginx yang mendengarkan host lokal untuk Nextcloud dan OnlyOffice. Untuk OnlyOffice, Anda dapat mengedit /etc/nginx/conf.d/ds.conf berkas

sudo nano /etc/nginx/conf.d/ds.conf

Dan tambahkan blok server berikut. Perhatikan bahwa blok server ini mendengarkan 127.0.0.1:80 dan menggunakan onlyoffice-document-server sebagai nama_server.

#HTTP host for internal services
server {
  listen 127.0.0.1:80;
  listen [::1]:80;
  server_name onlyoffice-document-server;
  server_tokens off;

  include /etc/nginx/includes/ds-*.conf;
}

Simpan dan tutup file. Kemudian Anda dapat mengedit file konfigurasi Nextcloud Nginx.

sudo nano /etc/nginx/conf.d/nextcloud.conf

Dan tambahkan blok server berikut. Itu juga mendengarkan di 127.0.0.1:80 dan menggunakan nextcloud sebagai nama_server.

server {
    listen 127.0.0.1:80;
    server_name nextcloud;

    # Add headers to serve security related headers
    add_header X-Content-Type-Options nosniff;
    add_header X-XSS-Protection "1; mode=block";
    add_header X-Robots-Tag none;
    add_header X-Download-Options noopen;
    add_header X-Permitted-Cross-Domain-Policies none;
    add_header Referrer-Policy no-referrer;

    #I found this header is needed on Ubuntu, but not on Arch Linux. 
    add_header X-Frame-Options "SAMEORIGIN";

    # Path to the root of your installation
    root /usr/share/nginx/nextcloud/;

    access_log /var/log/nginx/nextcloud.access;
    error_log /var/log/nginx/nextcloud.error;

    location = /robots.txt {
        allow all;
        log_not_found off;
        access_log off;
    }

    # The following 2 rules are only needed for the user_webfinger app.
    # Uncomment it if you're planning to use this app.
    #rewrite ^/.well-known/host-meta /public.php?service=host-meta last;
    #rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json
    # last;

    location = /.well-known/carddav {
        return 301 $scheme://$host/remote.php/dav;
    }
    location = /.well-known/caldav {
       return 301 $scheme://$host/remote.php/dav;
    }

    location ~ /.well-known/acme-challenge {
      allow all;
    }

    # set max upload size
    client_max_body_size 512M;
    fastcgi_buffers 64 4K;

    # Disable gzip to avoid the removal of the ETag header
    gzip off;

    # Uncomment if your server is build with the ngx_pagespeed module
    # This module is currently not supported.
    #pagespeed off;

    error_page 403 /core/templates/403.php;
    error_page 404 /core/templates/404.php;

    location / {
       rewrite ^ /index.php$uri;
    }

    location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)/ {
       deny all;
    }
    location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) {
       deny all;
     }

    location ~ ^/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|ocs-provider/.+|core/templates/40[34])\.php(?:$|/) {
       include fastcgi_params;
       fastcgi_split_path_info ^(.+\.php)(/.*)$;
       fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
       fastcgi_param PATH_INFO $fastcgi_path_info;
       #Avoid sending the security headers twice
       fastcgi_param modHeadersAvailable true;
       fastcgi_param front_controller_active true;
       fastcgi_pass unix:/run/php/php7.2-fpm.sock;
       fastcgi_intercept_errors on;
       fastcgi_request_buffering off;
    }

    location ~ ^/(?:updater|ocs-provider)(?:$|/) {
       try_files $uri/ =404;
       index index.php;
    }

    # Adding the cache control header for js and css files
    # Make sure it is BELOW the PHP block
    location ~* \.(?:css|js)$ {
        try_files $uri /index.php$uri$is_args$args;
        add_header Cache-Control "public, max-age=7200";
        # Add headers to serve security related headers (It is intended to
        # have those duplicated to the ones above)
        add_header X-Content-Type-Options nosniff;
        add_header X-XSS-Protection "1; mode=block";
        add_header X-Robots-Tag none;
        add_header X-Download-Options noopen;
        add_header X-Permitted-Cross-Domain-Policies none;
        add_header Referrer-Policy no-referrer;
        # Optional: Don't log access to assets
        access_log off;
   }

   location ~* \.(?:svg|gif|png|html|ttf|woff|ico|jpg|jpeg)$ {
        try_files $uri /index.php$uri$is_args$args;
        # Optional: Don't log access to other assets
        access_log off;
   }
}

Simpan dan tutup file. Uji konfigurasi Nginx, lalu muat ulang Nginx agar perubahan diterapkan.

sudo nginx -t

sudo systemctl reload nginx

Selanjutnya, kita perlu menambahkan catatan DNS lokal di /etc/hosts file seperti di bawah ini, sehingga server dapat menemukan alamat untuk onlyoffice-document-server dan nextcloud .

127.0.0.1 localhost onlyoffice-document-server nextcloud

Simpan dan tutup file.

Kita juga perlu mengedit config.php Nextcloud berkas.

sudo nano /usr/share/nginx/nextcloud/config/config.php

Tambahkan nextcloud dalam daftar domain tepercaya seperti di bawah ini.

  'trusted_domains' =>
  array (
    0 => 'nextcloud.linuxbabe.com',
    1 => 'nextcloud',
  ),

Simpan dan tutup file.

Sekarang kembali ke halaman pengaturan antarmuka web Nextcloud, klik advanced server settings , masukkan alamat internal untuk server dokumen OnlyOffice dan Nextcloud.

  • http://onlyoffice-document-server/
  • http://nextcloud/

Klik tombol Simpan tombol dan Anda selesai.

Cara Meng-upgrade OnlyOffice Document Server

Saat versi baru server dokumen OnlyOffice keluar, Anda cukup menggunakan manajer paket apt untuk meningkatkan ke versi baru.

sudo apt update;sudo apt upgrade

Perhatikan bahwa versi baru akan menggantikan penyesuaian Anda di /etc/nginx/conf.d/ds.conf mengajukan. Saya sarankan untuk mencadangkan file ini dengan perintah berikut, sehingga Anda dapat dengan mudah memulihkan konfigurasi khusus Anda.

cat /etc/nginx/conf.d/ds.conf | sudo tee /etc/nginx/conf.d/ds.conf.backup

Ubuntu
  1. Bagaimana mengintegrasikan Alfresco dengan ONLYOFFICE Online Editor di Ubuntu 14.04

  2. Cara Menginstal NextCloud 15 di Ubuntu 18.04

  3. Cara Mengintegrasikan Collabora Online dengan Nextcloud di Ubuntu 20.04

  1. Cara Mengatur Server FTP dengan VSFTPD di Ubuntu 20.04

  2. Cara Mengatur Server FTP dengan VSFTPD di Ubuntu 18.04

  3. Cara menginstal NextCloud 13 di Ubuntu 16.04

  1. Cara Menginstal Nextcloud dengan Nginx di Ubuntu 18.04 LTS

  2. Cara menginstal ONLYOFFICE 8.9.0 dengan Docker di Ubuntu

  3. Bagaimana mengintegrasikan ONLYOFFICE dengan Nextcloud