Menyediakan NextCloud + ONLYOFFICE pada pelayan yang sama dengan Docker

Hai Habr! Saya menyampaikan kepada perhatian anda terjemahan artikel itu "Menyediakan NextCloud dan ONLYOFFICE pada pelayan tunggal dengan Docker".

Sukar untuk memandang rendah nilai suite pejabat dalam talian seperti Dokumen Google dan storan awan dalam kehidupan orang yang berorientasikan teknologi. Teknologi telah menjadi begitu meluas sehinggakan Microsoft, yang telah lama menguasai pasaran aplikasi pejabat, baru-baru ini menumpukan pada membangunkan aplikasi web Office 365 dan memujuk pengguna untuk beralih kepada model langganan untuk menggunakan perkhidmatan mereka sendiri. Kami menjemput mereka yang berminat dalam proses memasang dan mengkonfigurasi storan mereka sendiri di bawah kucing.

Beberapa ketika dahulu kami melihat penyelesaian storan awan dan suite pejabat web sumber terbuka yang boleh digunakan dengan mudah untuk digunakan dalam perusahaan mikro. Motivasi utama untuk memastikan semua dokumentasi dalam talian adalah untuk memastikan kertas kerja pada tahap minimum dan melaksanakan amalan perniagaan yang baik walaupun jumlah transaksi yang rendah. Bahagian sebalik syiling ialah menyewa pelayan awan untuk menyediakan perkhidmatan ini adalah kurang selamat berbanding menyimpannya terus di premis perusahaan, kerana anda tidak mempunyai sebarang cara untuk mengaudit akses fizikal kepada pelayan atau trafik anda. Oleh itu, penyulitan hujung ke hujung dan perisian sumber terbuka juga diperlukan.

Dengan mengambil kira semua maklumat yang tersedia tentang penyelesaian sumber terbuka, kami menemui dua projek aktif (dengan komit dalam repositori git selama 12 bulan yang lalu) dibangunkan untuk storan awan: NextCloud dan OwnCloud, dan satu-satunya suite pejabat ONLYOFFICE yang aktif. Kedua-dua alat storan awan mempunyai fungsi yang hampir sama, dan keputusan untuk memilih NextCloud adalah berdasarkan kewujudan bukti bahawa ia boleh disepadukan dengan ONLYOFFICE untuk interaksi pengguna yang selesa dengan perisian. Walau bagaimanapun, apabila kami mula menggunakan perkhidmatan, kekurangan maklumat mengenai penyepaduan perkhidmatan di atas menjadi jelas. Kami menemui 3 video tutorial tentang cara mengintegrasikan:

Tiada satu pun daripada tiga video menjawab soalan memasang perkhidmatan dokumen ONLYOFFICE pada pelayan fizikal yang sama seperti NextCloud dengan nginx yang dikongsi. Sebaliknya, mereka menggunakan teknik pemisahan seperti menggunakan port berasingan untuk api perkhidmatan dokumen. Pilihan lain yang dicadangkan ialah menggunakan pelayan yang berasingan untuk Perkhidmatan Dokumen, mengkonfigurasi tika nginx yang dibina ke dalam Perkhidmatan Dokumen untuk memasang kunci akses (kunci akses yang telah diketahui yang mengesahkan hak untuk mengakses awan data) dan sijil TLS secara manual. Pendekatan di atas dianggap tidak selamat dan tidak cukup berkesan, jadi kami menyepadukan NextCloud, ONLYOFFICE dan nginx biasa, yang memisahkan permintaan mengikut nama domain, menggunakan docker-compose. Berikut adalah maklumat langkah demi langkah tentang cara melakukannya.

Langkah 1: bekas nginx

Ini adalah persediaan yang sangat mudah, tetapi langkah ini memerlukan kerja yang paling banyak untuk mengkonfigurasi pelayan proksi terbalik. Kami mula-mula mencipta konfigurasi docker-compose untuk imej nginx:stable.

version: '2'
services:
  nginx:
    image : nginx:stable
    restart: always
    volumes:
      - ./nginx/nginx-vhost.conf:/etc/nginx/conf.d/default.conf:ro
      - ./nginx/certificates:/mycerts 
    ports:
      - 443:443
      - 80:80

Ini mencipta bekas dengan port 80 dan 443 terbuka kepada orang ramai, memetakan konfigurasi kepada nginx/nginx-vhost.conf , dan mentakrifkan stor untuk sijil yang dijana sebagai sijil yang ditandatangani sendiri atau menggunakan certbot Mari menyulitkan dalam /nginx/certificates. Lokasi ini harus mengandungi folder untuk office.yourdomain.com dan cloud.yourdomain.com, masing-masing dengan fail fullchain1.pem dan privkey1.pem untuk rantai sijil dan kunci peribadi pelayan. Anda boleh membaca lebih lanjut tentang cara menjana sijil yang ditandatangani sendiri di sini. www.akadia.com/services/ssh_test_certificate.html (menamakan .key dan .crt kepada .pem berfungsi tanpa menukar struktur fail untuk nginx).

Selepas itu, kami menentukan fail vhost. Kami mula-mula menentukan tingkah laku port 80 sebagai ubah hala mudah ke https, kerana kami tidak mahu membenarkan sebarang trafik http

server {
    listen 80;
    location / {
        return 301
            https://$host$request_uri;
    }
}

Kami kemudian mencipta dua pelayan maya pada port 443 untuk perkhidmatan kami:

server {
    listen 443 ssl;
    server_name cloud.yourdomain.com ;
    root /var/www/html;

    ssl_certificate     /mycerts/cloud.yourdomain.com/fullchain1.pem;
    ssl_certificate_key /mycerts/cloud.yourdomain.com/privkey1.pem;
    ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers         HIGH:!aNULL:!MD5;

    location / {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_pass http://app:80;
    }
}
server {
    listen 443 ssl;
    server_name office.yourdomain.com;
    root /var/www/html;

    ssl_certificate     /mycerts/office.yourdomain.com/fullchain1.pem;
    ssl_certificate_key /mycerts/office.yourdomain.com/privkey1.pem;
    ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers         HIGH:!aNULL:!MD5;

    location / {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_pass http://onlyoffice:80;
    }
}

Langkah 2: perkhidmatan dokumen

Sekarang kita perlu menambah bekas perkhidmatan dokumen pada docker-compose.yml kami. Tiada apa-apa yang istimewa untuk dikonfigurasikan di sini.

services:
...
  onlyoffice:
    image: onlyoffice/documentserver
    restart: always

Tetapi jangan lupa untuk memautkan bekas nginx ke perkhidmatan dokumen:

services:
...
  nginx:
    ...
    depends_on:
      - onlyoffice

Langkah 3: NextCloud

Mula-mula, tambah perkhidmatan baharu:

services:
...
  db:
    image: mariadb
    command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
    restart: always
    volumes:
      - /data/nextcloud_db:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=#put some password here
      - MYSQL_PASSWORD=#put some other password here
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
  app:
    image: nextcloud
    depends_on:
      - db
      - onlyoffice
    restart: always

dan tambahkan pautan ke nginx:

services:
...
  nginx:
    ...
    depends_on:
      - app 

Kini tiba masanya untuk memuatkan bekas.

docker-compose up -d  

Selepas beberapa ketika, nginx akan mula mengalihkan anda ke bahagian hadapan NextCloud, yang merupakan halaman konfigurasi lalai. Anda perlu memasukkan nama pengguna dan kata laluan untuk pengguna pentadbiran pertama anda dan bukti kelayakan pangkalan data yang anda berikan dalam docker-compose.yml Setelah persediaan selesai, anda akan dapat log masuk. Dalam kes kami, menunggu mengambil masa hampir seminit dan memerlukan penyegaran tambahan halaman log masuk sebelum kami boleh log masuk ke perkhidmatan awan.

Tetingkap tetapan perkhidmatan NextCloudMenyediakan NextCloud + ONLYOFFICE pada pelayan yang sama dengan Docker

Langkah 4: Menyambung NextCloud dan ONLYOFFICE

Pada langkah ini, anda perlu memasang aplikasi untuk NextCloud, yang menghubungkan fungsi ONLYOFFICE. Mari kita mulakan dengan panel kawalan aplikasi di penjuru kanan sebelah atas menu. Cari apl ONLYOFFICE (di bawah Pejabat & teks atau menggunakan carian), pasang dan aktifkannya.

Selepas itu pergi ke Tetapan melalui menu di sudut kanan atas dan anda harus mencari item ONLYOFFICE di menu kiri. Pergi ke dalamnya. Anda perlu mendaftarkan alamat seperti yang ditunjukkan di bawah.

Tetapan aplikasi integrasiMenyediakan NextCloud + ONLYOFFICE pada pelayan yang sama dengan Docker

Alamat pertama digunakan untuk memaut ke beberapa fail js dan css terus daripada aplikasi yang berjalan dalam penyemak imbas (inilah yang kita perlukan untuk membuka akses kepada perkhidmatan ONLYOFFICE melalui nginx). Kunci rahsia tidak digunakan kerana kami lebih mempercayai lapisan pengasingan Docker daripada kunci pengesahan berterusan. Alamat ketiga digunakan oleh bekas NextCloud untuk menyambung terus ke API ONLYOFFICE, dan ia menggunakan nama hos dalaman lalai daripada Docker. Nah, medan terakhir digunakan supaya ONLYOFFICE boleh membuat permintaan kembali ke API NextCloud menggunakan alamat IP luaran atau alamat Docker dalaman jika anda menggunakan rangkaian Docker, tetapi ini tidak digunakan dalam kes kami. Pastikan tetapan tembok api anda membenarkan jenis interaksi ini.

Selepas menyimpan, NextCloud akan menguji sambungan dan, jika semuanya betul, akan menunjukkan kepada anda tetapan yang berkaitan dengan penyepaduan - contohnya, jenis fail yang boleh diedit oleh penyepaduan ini. Sesuaikan mengikut kesesuaian anda.

Langkah terakhir: di mana untuk mencari editor

Jika anda kembali ke folder storan awan anda dan klik pada β€œ+” untuk mencipta fail baharu, maka anda akan mempunyai pilihan baharu untuk mencipta dokumen, hamparan atau pembentangan. Dengan bantuan mereka, anda akan mencipta dan serta-merta dapat mengedit jenis fail ini menggunakan ONLYOFFICE.

Menu penciptaan failMenyediakan NextCloud + ONLYOFFICE pada pelayan yang sama dengan Docker

Tambahan 1

Kandungan penuh docker-compose.yml boleh didapati di sini: https://pastebin.com/z1Ti1fTZ

Sumber: www.habr.com

Tambah komen