NextCloud + ONLYOFFICE-in Docker ilə eyni serverdə qurulması

Hey Habr! Məqalənin tərcüməsini diqqətinizə təqdim edirəm "NextCloud və ONLYOFFICE-in Docker ilə bir serverdə qurulması".

Google Sənədlər və bulud yaddaşı kimi onlayn ofis paketlərinin texnologiya yönümlü insanların həyatındakı dəyərini qiymətləndirmək çətindir. Texnologiya o qədər geniş yayılıb ki, hətta ofis proqramları bazarında uzun müddət dominantlıq edən Microsoft bu yaxınlarda diqqətini Office 365 veb-proqramını inkişaf etdirməyə və istifadəçiləri öz xidmətlərindən istifadə etmək üçün abunə modelinə keçməyə inandırmağa yönəltdi. Pişik altında öz yaddaşının quraşdırılması və konfiqurasiyası prosesi ilə maraqlananları dəvət edirik.

Bir müddət əvvəl biz bulud saxlama həllərinə və mikro müəssisədə istifadə üçün asanlıqla tətbiq oluna bilən açıq mənbəli veb ofis paketlərinə baxdıq. Bütün sənədləri onlayn saxlamaq üçün əsas motivasiya sənədləşmə işini minimuma endirmək və əməliyyatların aşağı həcminə baxmayaraq yaxşı biznes təcrübələrini həyata keçirməkdir. Sikkənin əks tərəfi ondan ibarətdir ki, bu xidməti təmin etmək üçün bulud serverini icarəyə götürmək onu birbaşa müəssisənin ərazisində saxlamaqdan daha az təhlükəsizdir, çünki sizin serverinizə və ya trafikinizə fiziki girişi yoxlamaq üçün heç bir vasitəniz yoxdur. Buna görə də, uçdan-uca şifrələmə və açıq mənbə proqram təminatı da tələb olunur.

Açıq mənbə həlləri haqqında bütün mövcud məlumatları nəzərə alaraq, biz bulud saxlama üçün hazırlanmış iki aktiv layihə (son 12 ay ərzində git deposunda öhdəliklərlə) tapdıq: NextCloud və OwnCloud və yeganə aktiv ONLYOFFICE ofis dəsti. Hər iki bulud saxlama aləti təxminən eyni funksionallığa malikdir və NextCloud-u seçmək qərarı onun proqram təminatı ilə rahat istifadəçi qarşılıqlı əlaqəsi üçün ONLYOFFICE ilə inteqrasiya oluna biləcəyinə dair sübutların mövcudluğuna əsaslanır. Bununla belə, xidmətlərin tətbiqinə başlayanda yuxarıda göstərilən xidmətlərin inteqrasiyası ilə bağlı məlumatın olmaması aydın oldu. İnteqrasiya etmək üçün 3 təlim videosu tapdıq:

Üç videodan heç biri ONLYOFFICE sənəd xidmətinin paylaşılan nginx ilə NextCloud ilə eyni fiziki serverdə quraşdırılması sualına cavab vermədi. Bunun əvəzinə onlar sənəd xidməti api üçün ayrıca portlardan istifadə kimi ayırma üsullarından istifadə etdilər. Təklif olunan başqa bir seçim Document Service üçün ayrıca server yerləşdirmək, Document Service-də quraşdırılmış nginx instansiyasını əl ilə konfiqurasiya etmək idi. Yuxarıdakı yanaşmalar təhlükəsiz və kifayət qədər effektiv hesab edilmirdi, ona görə də biz NextCloud, ONLYOFFICE və docker-compose istifadə edərək sorğuları domen adlarına görə ayıran ümumi nginx-i inteqrasiya etdik. Bunu necə etmək barədə addım-addım məlumat buradadır.

Addım 1: nginx konteyneri

Bu, çox sadə quraşdırmadır, lakin bu addım əks proxy serveri konfiqurasiya etmək üçün ən çox iş tələb edir. Biz əvvəlcə nginx:stabil təsvir üçün docker-compose konfiqurasiyasını yaratdıq.

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, ictimaiyyət üçün açıq olan 80 və 443 portları olan konteyner yaradır, konfiqurasiyanı nginx/nginx-vhost.conf ilə əlaqələndirir və özü imzalanmış sertifikatlar kimi yaradılan sertifikatlar üçün mağazanı müəyyənləşdirir və ya /nginx/certificates-də Let's encrypt certbot-dan istifadə edir. Bu məkanda office.yourdomain.com və cloud.yourdomain.com üçün qovluqlar olmalıdır, hər birində müvafiq olaraq sertifikat zənciri və server şəxsi açarı üçün fullchain1.pem və privkey1.pem faylları olmalıdır. Öz-özünə imzalanmış sertifikatın necə yaradılacağı haqqında ətraflı oxuya bilərsiniz. www.akadia.com/services/ssh_test_certificate.html (.key və .crt-nin adının .pem-ə dəyişdirilməsi fayl strukturunu nginx üçün çevirmədən işləyir).

Bundan sonra vhost faylını təyin etdik. Biz əvvəlcə 80 nömrəli portun davranışını https-ə sadə yönləndirmə kimi təyin edirik, çünki biz heç bir http trafikinə icazə vermək istəmirik

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

Daha sonra xidmətlərimiz üçün 443 portunda iki virtual server yaratdıq:

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

Addım 2: sənəd xidməti

İndi biz docker-compose.yml-ə sənəd xidmət konteynerini əlavə etməliyik. Burada konfiqurasiya etmək üçün xüsusi bir şey yoxdur.

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

Ancaq nginx konteynerini sənəd xidmətinə bağlamağı unutmayın:

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

Addım 3: NextCloud

Əvvəlcə yeni xidmətlər əlavə edin:

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

və nginx-ə bir keçid əlavə edin:

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

İndi konteynerləri yükləmək vaxtıdır.

docker-compose up -d  

Bir müddət sonra nginx sizi standart konfiqurasiya səhifəsi olan NextCloud ön hissəsinə yönləndirməyə başlayacaq. Siz ilk inzibati istifadəçiniz üçün istifadəçi adı və parolu və docker-compose.yml saytında təqdim etdiyiniz verilənlər bazası etimadnaməsini daxil etməlisiniz. Quraşdırma tamamlandıqdan sonra siz daxil ola biləcəksiniz. Bizim vəziyyətimizdə gözləmə müddəti demək olar ki, bir dəqiqə çəkdi və bulud xidmətinə daxil ola bilməmişdən əvvəl giriş səhifəsinin əlavə yenilənməsi tələb olundu.

NextCloud xidmət parametrləri pəncərəsiNextCloud + ONLYOFFICE-in Docker ilə eyni serverdə qurulması

Addım 4: NextCloud və ONLYOFFICE-i birləşdirin

Bu addımda siz ONLYOFFICE funksionallığını birləşdirən NextCloud üçün proqram quraşdırmalı olacaqsınız. Menyunun yuxarı sağ küncündəki proqram idarəetmə panelindən başlayaq. ONLYOFFICE proqramını tapın (Office & text altında və ya axtarışdan istifadə etməklə), quraşdırın və aktivləşdirin.

Bundan sonra yuxarı sağ küncdəki menyu vasitəsilə Parametrlərə keçin və sol menyuda ONLYOFFICE elementini tapmalısınız. İçəri girin. Siz aşağıda göstərildiyi kimi ünvanları qeydiyyatdan keçirməlisiniz.

İnteqrasiya tətbiqi parametrləriNextCloud + ONLYOFFICE-in Docker ilə eyni serverdə qurulması

Birinci ünvan bəzi js və css faylları ilə birbaşa brauzerdə işləyən proqramdan əlaqə yaratmaq üçün istifadə olunur (nginx vasitəsilə ONLYOFFICE xidmətinə girişi açmaq üçün bu lazımdır). Gizli açardan istifadə edilmir, çünki biz davamlı autentifikasiya açarından daha çox Docker izolyasiya qatına etibar edirik. Üçüncü ünvan NextCloud konteyneri tərəfindən birbaşa ONLYOFFICE API-yə qoşulmaq üçün istifadə olunur və o, Docker-dən standart daxili host adından istifadə edir. Yaxşı, sonuncu sahə ondan istifadə olunur ki, ONLYOFFICE xarici IP ünvanından və ya Docker şəbəkələrindən istifadə edirsinizsə daxili Docker ünvanından istifadə edərək NextCloud API-yə geri sorğu göndərə bilsin, lakin bu bizim vəziyyətimizdə istifadə edilmir. Firewall parametrlərinizin bu cür qarşılıqlı əlaqəyə icazə verdiyinə əmin olun.

Yadda saxladıqdan sonra NextCloud əlaqəni yoxlayacaq və hər şey düzgündürsə, sizə inteqrasiya ilə bağlı parametrləri göstərəcək - məsələn, bu inteqrasiya ilə hansı növ faylları redaktə etmək olar. Uyğun gördüyünüz kimi fərdiləşdirin.

Son addım: redaktoru haradan tapmaq olar

Bulud saxlama qovluqlarınıza qayıtsanız və yeni fayl yaratmaq üçün “+” üzərinə klikləsəniz, sənəd, cədvəl və ya təqdimat yaratmaq üçün yeni seçiminiz olacaq. Onların köməyi ilə siz ONLYOFFICE-dən istifadə edərək bu tip faylları yaradacaq və dərhal redaktə edə biləcəksiniz.

Fayl yaratma menyusuNextCloud + ONLYOFFICE-in Docker ilə eyni serverdə qurulması

Əlavə 1

docker-compose.yml tam məzmununu burada tapa bilərsiniz: https://pastebin.com/z1Ti1fTZ

Mənbə: www.habr.com

Добавить комментарий