Halo, Habr! Saya hadir untuk Anda terjemahan artikel
"Menyiapkan NextCloud dan ONLYOFFICE pada satu server dengan Docker" .
Sulit untuk meremehkan manfaat paket paket office online seperti Google Documents dan penyimpanan cloud dalam kehidupan orang yang berorientasi teknologi. Teknologi telah menjadi begitu luas sehingga bahkan Microsoft, yang telah lama mendominasi pasar aplikasi perkantoran, baru-baru ini berfokus pada pengembangan aplikasi web Office 365 dan meyakinkan pengguna untuk beralih ke model berlangganan menggunakan layanan mereka sendiri. Mereka yang tertarik dalam proses menginstal dan mengkonfigurasi penyimpanan mereka sendiri diundang ke kucing.
Beberapa waktu yang lalu, kami meninjau solusi penyimpanan cloud dan aplikasi web open source office suite yang dapat dengan mudah diimplementasikan untuk digunakan dalam usaha mikro. Motivasi utama untuk menyimpan semua dokumentasi online adalah untuk meminimalkan volume alur kerja kertas dan menerapkan praktik bisnis yang positif, meskipun volume operasinya kecil. Sisi lain dari koin adalah bahwa menyewa server cloud untuk menyediakan layanan ini kurang aman daripada menyimpan langsung di lokasi, karena Anda tidak memiliki sarana untuk mengaudit akses fisik ke server atau lalu lintas Anda. Akibatnya, enkripsi ujung ke ujung dan perangkat lunak sumber terbuka juga diperlukan.
Dengan mempertimbangkan semua informasi yang tersedia tentang solusi open source, kami menemukan dua proyek yang ada (dengan komitmen dalam repositori git selama 12 bulan terakhir) yang dirancang untuk penyimpanan cloud: NextCloud dan OwnCloud, dan satu-satunya office suite aktif ONLYOFFICE. Kedua alat untuk penyimpanan cloud memiliki fungsi yang sama, dan keputusan untuk memilih NextCloud didasarkan pada bukti yang dapat diintegrasikan dengan ONLYOFFICE untuk interaksi pengguna yang nyaman dengan perangkat lunak. Namun, ketika kami memulai penyebaran layanan, kurangnya informasi tentang integrasi layanan di atas menjadi jelas. Kami menemukan 3 video tutorial tentang cara mengintegrasikan:
Tidak satu pun dari tiga video menjawab pertanyaan tentang menginstal layanan dokumen ONLYOFFICE pada server fisik yang sama dengan NextCloud dengan nginx bersama. Sebagai gantinya, mereka menggunakan teknologi pemisahan seperti menggunakan port terpisah untuk layanan dokumen api. Opsi lain yang diusulkan adalah menggunakan server terpisah untuk layanan dokumen dengan konfigurasi manual instance nginx yang dibangun ke dalam layanan dokumen untuk menginstal kunci akses (kunci akses yang sebelumnya dikenal yang mengkonfirmasi akses ke cloud data) dan sertifikat TLS. Pendekatan di atas dianggap tidak aman dan tidak cukup efektif, oleh karena itu, kami mengintegrasikan NextCloud, ONLYOFFICE dan common nginx, yang membagikan permintaan berdasarkan nama domain, menggunakan komposisi docker. Berikut adalah informasi langkah demi langkah tentang cara melakukan ini.
Langkah 1: wadah nginx
Ini adalah instalasi yang sangat sederhana, tetapi langkah ini membutuhkan sebagian besar pekerjaan untuk mengonfigurasi server proxy terbalik. Pertama, kami membuat konfigurasi docker-compose untuk nginx: image stabil.
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 menciptakan wadah dengan port 80 dan 443 terbuka untuk akses publik, memetakan konfigurasi ke nginx / nginx-vhost.conf, dan mendefinisikan toko untuk sertifikat yang dihasilkan sebagai sertifikat yang ditandatangani sendiri atau menggunakan sertifikat Mari Pergi Enkripsi dari / nginx / sertifikat. Lokasi ini harus berisi folder untuk office.yourdomain.com dan cloud.yourdomain.com dengan file fullchain1.pem dan privkey1.pem di masing-masing untuk rantai sertifikat dan kunci pribadi server, masing-masing. Anda dapat membaca lebih lanjut tentang cara membuat sertifikat yang ditandatangani sendiri di sini
www.akadia.com/services/ssh_test_certificate.html (mengganti nama .key dan .crt ke .pem berfungsi tanpa mengubah struktur file untuk nginx).
Setelah itu, kami mendefinisikan file vhost. Pertama, kami mendefinisikan perilaku port 80 sebagai pengalihan sederhana ke https, sebagai kami tidak ingin mengizinkan lalu lintas http
server { listen 80; location / { return 301 https://$host$request_uri; } }
Kemudian kami 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 kami. Tidak ada yang istimewa untuk dikonfigurasikan di sini.
services: ... onlyoffice: image: onlyoffice/documentserver restart: always
Tapi jangan lupa mengaitkan wadah nginx dengan layanan dokumen:
services: ... nginx: ... depends_on: - onlyoffice
Langkah 3: NextCloud
Pertama, kami menambahkan 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 frontend 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 tentukan di docker-compose.yml. Setelah konfigurasi selesai, Anda dapat masuk. Dalam kasus kami, penantian berlangsung hampir satu menit dan memerlukan pembaruan tambahan dari halaman login sebelum kami dapat memasuki layanan cloud.
Jendela Pengaturan Layanan NextCloud Langkah 4: menghubungkan NextCloud dan ONLYOFFICE
Pada langkah ini, Anda perlu menginstal aplikasi untuk NextCloud, yang menghubungkan fungsi ONLYOFFICE. Mari kita mulai dengan panel kontrol aplikasi di sudut kanan atas menu. Temukan aplikasi ONLYOFFICE (di bagian βKantor & teksβ atau gunakan pencarian), instal dan aktifkan.
Setelah itu, buka Pengaturan melalui menu di sudut kanan atas, dan Anda perlu menemukan elemen ONLYOFFICE di menu sebelah kiri. Pergilah ke dalamnya. Anda harus mendaftarkan alamat seperti yang ditunjukkan di bawah ini.
Pengaturan Aplikasi Integrasi Alamat pertama digunakan untuk menautkan ke beberapa file js dan css langsung dari aplikasi yang berjalan di browser (inilah sebabnya kami perlu membuka akses ke layanan ONLYOFFICE via nginx). Kunci pribadi tidak digunakan karena kami percaya lapisan isolasi Docker lebih dari kunci otentikasi permanen. Alamat ketiga digunakan oleh wadah NextCloud untuk terhubung langsung ke API ONLYOFFICE, dan menggunakan nama host internal default dari Docker. Nah, bidang terakhir digunakan sehingga ONLYOFFICE dapat membuat permintaan kembali ke API NextCloud menggunakan alamat IP eksternal atau alamat Docker internal jika Anda menggunakan jaringan Docker, tetapi dalam kasus kami ini tidak digunakan. Pastikan pengaturan firewall Anda memungkinkan jenis interaksi ini.
Setelah menyimpan, NextCloud akan menguji koneksi dan, jika semuanya benar, akan menunjukkan kepada Anda pengaturan yang terkait dengan integrasi - misalnya, jenis file apa yang dapat diedit oleh integrasi ini. Sesuaikan sesuai keinginan Anda.
Langkah terakhir: di mana mencari editor
Jika Anda kembali ke folder penyimpanan cloud Anda dan mengklik "+" untuk membuat file baru, maka opsi baru akan tersedia bagi Anda untuk membuat dokumen, tabel, atau presentasi. Dengan bantuan mereka, Anda akan membuat dan segera dapat mengedit jenis file ini menggunakan ONLYOFFICE.
Penambahan 1
Isi lengkap dari docker-compose.yml dapat ditemukan di sini:
https://pastebin.com/z1Ti1fTZ