NextCloud + ONLYOFFICE ni Docker bilan bir xil serverda sozlash

Hey Xabr! E'tiboringizga maqolaning tarjimasini taqdim etaman "NextCloud va ONLYOFFICE-ni Docker bilan bitta serverda sozlash".

Google Docs va bulutli saqlash kabi onlayn ofis to'plamlarining texnologiyaga yo'naltirilgan odamlar hayotidagi ahamiyatini e'tiborsiz qoldirish qiyin. Texnologiya shunchalik keng tarqaldiki, hatto ofis ilovalari bozorida uzoq vaqt hukmronlik qilgan Microsoft ham yaqinda Office 365 veb-ilovasini ishlab chiqishga va foydalanuvchilarni o'z xizmatlaridan foydalanish uchun obuna modeliga o'tishga ko'ndirishga e'tibor qaratdi. Biz mushuk ostida o'zlarining saqlash joylarini o'rnatish va sozlash jarayoniga qiziquvchilarni taklif qilamiz.

Bir muncha vaqt oldin biz bulutli saqlash yechimlari va ochiq manbali veb-ofis to'plamlarini ko'rib chiqdik, ularni mikrokorxonada foydalanish uchun osongina joylashtirish mumkin. Barcha hujjatlarni onlayn saqlashning asosiy motivatsiyasi - bu hujjatlarni minimal darajada ushlab turish va tranzaktsiyalar hajmining pastligiga qaramay, yaxshi biznes amaliyotlarini amalga oshirishdir. Tanganing ikkinchi tomoni shundaki, ushbu xizmatni taqdim etish uchun bulutli serverni ijaraga olish uni to'g'ridan-to'g'ri korxona hududida saqlashdan ko'ra xavfsizroqdir, chunki sizning serveringizga yoki trafikingizga jismoniy kirishni tekshirish uchun hech qanday vositangiz yo'q. Shu sababli, uchdan uchgacha shifrlash va ochiq kodli dasturiy ta'minot ham talab qilinadi.

Ochiq kodli yechimlar haqidagi barcha mavjud ma’lumotlarni hisobga olgan holda biz bulutli saqlash uchun ishlab chiqilgan ikkita faol loyihani (so‘nggi 12 oy davomida git repozitoriyasida majburiyatlari bilan) topdik: NextCloud va OwnCloud va yagona faol ONLYOFFICE ofis to‘plami. Ikkala bulutli saqlash vositalari ham taxminan bir xil funksionallikka ega va NextCloud-ni tanlash toʻgʻrisidagi qaror uni ONLYOFFICE bilan dasturiy taʼminot bilan qulay foydalanuvchi oʻzaro aloqasi uchun integratsiyalashuvi mumkinligi haqidagi dalillar mavjudligiga asoslanadi. Biroq, biz xizmatlarni joylashtirishni boshlaganimizda, yuqoridagi xizmatlarni birlashtirish bo'yicha ma'lumotlarning etishmasligi aniq bo'ldi. Qanday qilib integratsiya qilish bo'yicha 3 ta o'quv videosini topdik:

Uchta videoning hech biri ONLYOFFICE hujjat xizmatini umumiy nginx bilan NextCloud bilan bir xil jismoniy serverga o'rnatish haqidagi savolga javob bermadi. Buning o'rniga ular hujjat xizmati api uchun alohida portlardan foydalanish kabi ajratish usullaridan foydalanganlar. Yana bir taklif Document Service uchun alohida serverni oʻrnatish, Document Service ichiga oʻrnatilgan nginx namunasini kirish kaliti (maʼlumotlar bulutiga kirish huquqini tasdiqlovchi oldindan maʼlum boʻlgan kirish kaliti) va TLS sertifikatlarini oʻrnatish uchun qoʻlda sozlash edi. Yuqoridagi yondashuvlar xavfsiz va yetarlicha samarali emas deb hisoblangan, shuning uchun biz NextCloud, ONLYOFFICE va docker-compose yordamida so‘rovlarni domen nomlari bo‘yicha ajratuvchi umumiy nginx-ni birlashtirdik. Buni qanday qilish kerakligi haqida asta-sekin ma'lumot.

1-qadam: nginx konteyneri

Bu juda oddiy sozlash, lekin bu qadam teskari proksi-serverni sozlash uchun eng ko'p mehnat talab qiladi. Biz dastlab nginx: barqaror tasvir uchun docker-compose konfiguratsiyasini yaratdik.

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

Bu 80 va 443 portlari hamma uchun ochiq bo'lgan konteyner yaratadi, konfiguratsiyani nginx/nginx-vhost.conf ga ko'rsatadi va o'z-o'zidan imzolangan sertifikatlar sifatida yaratilgan sertifikatlar uchun do'konni belgilaydi yoki /nginx/certificates ichida Let's encrypt's certbot-dan foydalanadi. Bu manzilda office.yourdomain.com va cloud.yourdomain.com papkalari bo‘lishi kerak, ularning har birida tegishli ravishda sertifikat zanjiri va server shaxsiy kaliti uchun fullchain1.pem va privkey1.pem fayllari bo‘lishi kerak. O'z-o'zidan imzolangan sertifikatni qanday yaratish haqida ko'proq ma'lumotni bu erda o'qishingiz mumkin. www.akadia.com/services/ssh_test_certificate.html (.key va .crt nomini .pem ga o‘zgartirish nginx uchun fayl strukturasini o‘zgartirmasdan ishlaydi).

Shundan so'ng biz vhost faylini aniqladik. Biz birinchi navbatda 80-portning harakatini https-ga oddiy yo'naltirish sifatida belgilaymiz, chunki biz hech qanday http trafikiga ruxsat berishni xohlamaymiz

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

Keyin biz xizmatlarimiz uchun 443-portda ikkita virtual server yaratdik:

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;
    }
}

2-qadam: hujjat xizmati

Endi biz docker-compose.yml ga hujjat xizmat ko'rsatish konteynerini qo'shishimiz kerak. Bu erda sozlash uchun maxsus narsa yo'q.

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

Lekin nginx konteynerini hujjat xizmatiga ulashni unutmang:

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

3-qadam: NextCloud

Birinchidan, yangi xizmatlarni qo'shing:

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

va nginx ga havola qo'shing:

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

Endi konteynerlarni yuklash vaqti keldi.

docker-compose up -d  

Biroz vaqt o'tgach, nginx sizni standart konfiguratsiya sahifasi bo'lgan NextCloud old qismiga yo'naltirishni boshlaydi. Siz birinchi ma'muriy foydalanuvchi uchun foydalanuvchi nomi va parolni va docker-compose.yml da taqdim etgan ma'lumotlar bazasi hisob ma'lumotlarini kiritishingiz kerak bo'ladi O'rnatish tugallangach, tizimga kirishingiz mumkin bo'ladi. Bizning holatlarimizda kutish deyarli bir daqiqa davom etdi va bulut xizmatiga kirishimizdan oldin kirish sahifasini qo'shimcha yangilashni talab qildi.

NextCloud xizmatini sozlash oynasiNextCloud + ONLYOFFICE ni Docker bilan bir xil serverda sozlash

4-qadam: NextCloud va ONLYOFFICE-ni ulash

Ushbu bosqichda siz ONLYOFFICE funksiyasini bog'laydigan NextCloud ilovasini o'rnatishingiz kerak bo'ladi. Menyuning yuqori o'ng burchagidagi dastur boshqaruv panelidan boshlaylik. ONLYOFFICE ilovasini toping (Office & text ostida yoki qidiruv yordamida), uni o'rnating va faollashtiring.

Shundan so'ng yuqori o'ng burchakdagi menyu orqali Sozlamalarga o'ting va chap menyuda ONLYOFFICE bandini topishingiz kerak. Unga kiring. Quyida ko'rsatilgan manzillarni ro'yxatdan o'tkazishingiz kerak bo'ladi.

Integratsiya dasturi sozlamalariNextCloud + ONLYOFFICE ni Docker bilan bir xil serverda sozlash

Birinchi manzil ba'zi JS va CSS fayllariga to'g'ridan-to'g'ri brauzerda ishlaydigan dasturdan ulanish uchun ishlatiladi (bu nginx orqali ONLYOFFICE xizmatiga kirishni ochishimiz kerak). Maxfiy kalit ishlatilmaydi, chunki biz doimiy autentifikatsiya kalitiga qaraganda Docker izolyatsiya qatlamiga ko'proq ishonamiz. Uchinchi manzil NextCloud konteyneri tomonidan to'g'ridan-to'g'ri ONLYOFFICE API-ga ulanish uchun ishlatiladi va u Docker-dan standart ichki xost nomidan foydalanadi. Xo'sh, oxirgi maydon ONLYOFFICE tashqi IP-manzil yoki Docker tarmoqlaridan foydalanayotgan bo'lsangiz, ichki Docker manzili yordamida NextCloud API-ga qayta so'rov yuborishi uchun ishlatiladi, ammo bu bizning holatlarimizda ishlatilmaydi. Xavfsizlik devori sozlamalari bunday shovqinlarga ruxsat berishiga ishonch hosil qiling.

Saqlagandan so'ng, NextCloud ulanishni sinab ko'radi va agar hamma narsa to'g'ri bo'lsa, sizga integratsiya bilan bog'liq sozlamalarni ko'rsatadi - masalan, ushbu integratsiya orqali qanday turdagi fayllarni tahrirlash mumkin. O'zingizga mos sozlang.

Yakuniy qadam: muharrirni qaerdan topish mumkin

Agar siz bulutli saqlash papkalariga qaytsangiz va yangi fayl yaratish uchun “+” tugmasini bossangiz, hujjat, jadval yoki taqdimot yaratish uchun yangi imkoniyatga ega boʻlasiz. Ularning yordami bilan siz ONLYOFFICE yordamida ushbu turdagi fayllarni yaratasiz va darhol tahrirlay olasiz.

Fayl yaratish menyusiNextCloud + ONLYOFFICE ni Docker bilan bir xil serverda sozlash

Qoʻshimcha 1

Docker-compose.yml ning to‘liq mazmunini bu yerda topishingiz mumkin: https://pastebin.com/z1Ti1fTZ

Manba: www.habr.com

a Izoh qo'shish