Menyiapkan NextCloud + ONLYOFFICE di server yang sama dengan Docker

Hai Habr! Saya persembahkan untuk perhatian Anda terjemahan artikel tersebut "Menyiapkan NextCloud dan ONLYOFFICE di satu server dengan Docker".

Sulit untuk meremehkan manfaat perangkat kantor online seperti Google Dokumen dan penyimpanan cloud dalam kehidupan orang-orang yang berorientasi pada teknologi. Teknologi telah menjadi begitu luas bahkan Microsoft, yang telah lama mendominasi pasar aplikasi perkantoran, baru-baru ini fokus pada pengembangan aplikasi web Office 365 dan membujuk pengguna untuk beralih ke model berlangganan untuk menggunakan layanan mereka sendiri. Kami mengundang mereka yang tertarik dengan proses instalasi dan konfigurasi penyimpanan mereka sendiri di bawah cat.

Beberapa waktu lalu kami melihat solusi penyimpanan cloud dan rangkaian web office open source yang dapat dengan mudah diterapkan untuk digunakan di perusahaan mikro. Motivasi utama untuk menjaga semua dokumentasi tetap online adalah meminimalkan dokumen dan menerapkan praktik bisnis yang baik meskipun volume transaksi rendah. Sisi sebaliknya adalah menyewa server cloud untuk menyediakan layanan ini kurang aman dibandingkan menyimpannya langsung di lokasi perusahaan, karena Anda tidak memiliki sarana apa pun untuk mengaudit akses fisik ke server atau lalu lintas Anda. Oleh karena itu, enkripsi ujung ke ujung dan perangkat lunak sumber terbuka juga diperlukan.

Dengan mempertimbangkan semua informasi yang tersedia tentang solusi sumber terbuka, kami menemukan dua proyek aktif (dengan komitmen di repositori git selama 12 bulan terakhir) yang dikembangkan untuk penyimpanan cloud: NextCloud dan OwnCloud, dan satu-satunya rangkaian kantor ONLYOFFICE yang aktif. Kedua alat penyimpanan cloud tersebut memiliki fungsi yang kurang lebih sama, dan keputusan untuk memilih NextCloud didasarkan pada adanya bukti bahwa alat tersebut dapat diintegrasikan dengan ONLYOFFICE untuk kenyamanan interaksi pengguna dengan perangkat lunak. Namun, ketika kami mulai menerapkan layanan tersebut, kurangnya informasi tentang pengintegrasian layanan di atas menjadi jelas. Kami menemukan 3 video tutorial tentang cara mengintegrasikan:

Tak satu pun dari ketiga video tersebut menjawab pertanyaan tentang menginstal layanan dokumen ONLYOFFICE di server fisik yang sama dengan NextCloud dengan nginx bersama. Sebaliknya, mereka menggunakan teknik pemisahan seperti menggunakan port terpisah untuk api layanan dokumen. Saran lainnya adalah menerapkan server terpisah untuk Layanan Dokumen, secara manual mengonfigurasi instance nginx yang ada di dalam Layanan Dokumen untuk memasang kunci akses (kunci akses yang sudah diketahui sebelumnya yang mengonfirmasi hak untuk mengakses cloud data) dan sertifikat TLS. Pendekatan di atas dianggap tidak aman dan tidak cukup efektif, jadi kami mengintegrasikan NextCloud, ONLYOFFICE, dan nginx umum yang memisahkan permintaan berdasarkan nama domain menggunakan docker-compose. Berikut adalah informasi langkah demi langkah tentang cara melakukannya.

Langkah 1: wadah nginx

Ini adalah pengaturan yang sangat sederhana, namun langkah ini memerlukan upaya paling besar untuk mengonfigurasi server proxy terbalik. Kami pertama kali membuat konfigurasi docker-compose untuk gambar 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

Hal ini akan membuat container dengan port 80 dan 443 terbuka untuk umum, memetakan konfigurasi ke nginx/nginx-vhost.conf , dan mendefinisikan penyimpanan sertifikat yang dihasilkan sebagai sertifikat yang ditandatangani sendiri atau menggunakan certbot Let's encrypt di /nginx/certificates. Lokasi ini harus berisi folder untuk office.domainanda.com dan cloud.domainanda.com, dengan masing-masing file fullchain1.pem dan privkey1.pem untuk rantai sertifikat dan kunci pribadi server. Anda dapat membaca selengkapnya tentang cara membuat sertifikat yang ditandatangani sendiri di sini. www.akadia.com/services/ssh_test_certificate.html (mengganti nama .key dan .crt menjadi .pem berfungsi tanpa mengubah struktur file untuk nginx).

Setelah itu, kami mendefinisikan file vhost. Kami pertama-tama mendefinisikan perilaku port 80 sebagai pengalihan sederhana ke https, karena kami tidak ingin mengizinkan lalu lintas http apa pun

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

Kami kemudian membuat dua server virtual pada port 443 untuk layanan 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: layanan dokumen

Sekarang kita perlu menambahkan wadah layanan dokumen ke docker-compose.yml kita. Tidak ada yang istimewa untuk dikonfigurasikan di sini.

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

Namun jangan lupa untuk menautkan container nginx ke layanan dokumen:

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

Langkah 3: BerikutnyaCloud

Pertama, tambahkan layanan baru:

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 tautan ke nginx:

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

Sekarang saatnya memuat kontainer.

docker-compose up -d  

Setelah beberapa saat, nginx akan mulai mengarahkan Anda ke front end NextCloud, yang merupakan halaman konfigurasi default. Anda harus memasukkan nama pengguna dan kata sandi untuk pengguna admin pertama Anda dan kredensial basis data yang Anda berikan di docker-compose.yml Setelah pengaturan selesai, Anda akan bisa masuk. Dalam kasus kami, penantiannya memakan waktu hampir satu menit dan memerlukan penyegaran tambahan pada halaman login sebelum kami dapat login ke layanan cloud.

Jendela pengaturan layanan NextCloudMenyiapkan NextCloud + ONLYOFFICE di server yang sama dengan Docker

Langkah 4: Menghubungkan NextCloud dan ONLYOFFICE

Pada langkah ini, Anda perlu menginstal aplikasi untuk NextCloud, yang menghubungkan fungsionalitas ONLYOFFICE. Mari kita mulai dengan panel kontrol aplikasi di pojok kanan atas menu. Temukan aplikasi ONLYOFFICE (di bawah Office & teks atau menggunakan pencarian), instal dan aktifkan.

Setelah itu buka Pengaturan melalui menu di pojok kanan atas dan Anda akan menemukan item ONLYOFFICE di menu sebelah kiri. Pergilah ke dalamnya. Anda harus mendaftarkan alamat seperti yang ditunjukkan di bawah ini.

Pengaturan aplikasi integrasiMenyiapkan NextCloud + ONLYOFFICE di server yang sama dengan Docker

Alamat pertama digunakan untuk menghubungkan ke beberapa file js dan css langsung dari aplikasi yang berjalan di browser (inilah yang kita perlukan untuk membuka akses ke layanan ONLYOFFICE melalui nginx). Kunci rahasia tidak digunakan karena kami lebih mempercayai lapisan isolasi Docker daripada kunci otentikasi persisten. Alamat ketiga digunakan oleh kontainer NextCloud untuk terhubung langsung ke ONLYOFFICE API, dan menggunakan nama host internal default dari Docker. Nah, kolom terakhir digunakan agar ONLYOFFICE dapat membuat permintaan kembali ke NextCloud API menggunakan alamat IP eksternal atau alamat Docker internal jika Anda menggunakan jaringan Docker, tetapi ini tidak digunakan dalam kasus kami. Pastikan pengaturan firewall Anda mengizinkan interaksi semacam ini.

Setelah menyimpan, NextCloud akan menguji koneksi dan, jika semuanya benar, akan menunjukkan kepada Anda pengaturan terkait integrasi - misalnya, jenis file apa yang dapat diedit dengan integrasi ini. Sesuaikan sesuai keinginan Anda.

Langkah terakhir: di mana menemukan editor

Jika Anda kembali ke folder penyimpanan cloud dan mengklik “+” untuk membuat file baru, maka Anda akan memiliki opsi baru untuk membuat dokumen, spreadsheet, atau presentasi. Dengan bantuan mereka, Anda akan membuat dan segera dapat mengedit jenis file ini menggunakan ONLYOFFICE.

Menu pembuatan fileMenyiapkan NextCloud + ONLYOFFICE di server yang sama dengan Docker

Tambahan 1

Konten lengkap docker-compose.yml dapat ditemukan di sini: https://pastebin.com/z1Ti1fTZ

Sumber: www.habr.com

Tambah komentar