NextCloud + ONLYOFFICE-ի կարգավորում Docker-ի հետ նույն սերվերի վրա

Հե՜յ Հաբր։ Ձեր ուշադրությանն եմ ներկայացնում հոդվածի թարգմանությունը «NextCloud-ի և ONLYOFFICE-ի կարգավորումը մեկ սերվերի վրա Docker-ի միջոցով».

Դժվար է թերագնահատել առցանց գրասենյակային փաթեթների արժեքը, ինչպիսիք են Google Docs-ը և ամպային պահեստը տեխնոլոգիական ուղղվածություն ունեցող մարդկանց կյանքում: Տեխնոլոգիան այնքան տարածված է դարձել, որ նույնիսկ Microsoft-ը, որը երկար ժամանակ գերիշխում է գրասենյակային հավելվածների շուկայում, վերջերս կենտրոնացել է Office 365 վեբ հավելվածի մշակման և օգտատերերին համոզելու անցնել բաժանորդագրության մոդելին՝ սեփական ծառայություններից օգտվելու համար: Հրավիրում ենք նրանց, ովքեր հետաքրքրված են cat-ի տակ իրենց սեփական պահեստի տեղադրման և կազմաձևման գործընթացով:

Որոշ ժամանակ առաջ մենք նայեցինք ամպային պահեստավորման լուծումներին և բաց կոդով վեբ գրասենյակային փաթեթներին, որոնք հեշտությամբ կարող էին տեղակայվել միկրո ձեռնարկությունում օգտագործելու համար: Ամբողջ փաստաթղթերը առցանց պահելու հիմնական դրդապատճառը թղթաբանությունը նվազագույնի հասցնելն է և լավ բիզնես պրակտիկաների ներդրումը, չնայած գործարքների ցածր ծավալին: Մետաղադրամի հակառակ կողմն այն է, որ այս ծառայությունն ապահովելու համար ամպային սերվերի վարձակալումն ավելի քիչ անվտանգ է, քան այն ուղղակիորեն ձեռնարկության տարածքում պահելը, քանի որ դուք չունեք ձեր սերվերի կամ տրաֆիկի ֆիզիկական մուտքը ստուգելու որևէ միջոց: Հետևաբար, անհրաժեշտ է նաև ծայրից ծայր կոդավորում և բաց կոդով ծրագրակազմ:

Հաշվի առնելով բաց կոդով լուծումների մասին առկա բոլոր տեղեկությունները, մենք գտանք երկու ակտիվ նախագիծ (վերջին 12 ամիսների ընթացքում ստանձնած պարտավորություններով git պահեստում), որոնք մշակվել են ամպային պահեստավորման համար՝ NextCloud և OwnCloud, և միակ ակտիվ ONLYOFFICE գրասենյակային փաթեթը: Ամպային պահեստավորման երկու գործիքներն էլ մոտավորապես նույն ֆունկցիոնալությունն ունեն, և NextCloud-ն ընտրելու որոշումը հիմնված է ապացույցների առկայության վրա, որ այն կարող է ինտեգրվել ONLYOFFICE-ին՝ ծրագրաշարի հետ օգտատերերի հարմարավետ փոխգործակցության համար: Այնուամենայնիվ, երբ մենք սկսեցինք տեղակայել ծառայությունները, ակնհայտ դարձավ վերոնշյալ ծառայությունների ինտեգրման վերաբերյալ տեղեկատվության բացակայությունը: Մենք գտանք 3 ուսուցողական տեսանյութ, թե ինչպես ինտեգրվել.

Երեք տեսանյութերից և ոչ մեկը չպատասխանեց ONLYOFFICE փաստաթղթերի ծառայությունը նույն ֆիզիկական սերվերի վրա, ինչպես NextCloud-ը, ընդհանուր nginx-ով տեղադրելու հարցին: Փոխարենը, նրանք օգտագործեցին տարանջատման մեթոդներ, ինչպիսիք են փաստաթղթերի սպասարկման api-ի համար առանձին նավահանգիստների օգտագործումը: Առաջարկվող մեկ այլ տարբերակ էր առանձին սերվեր տեղադրել Document Service-ի համար՝ ձեռքով կարգավորելով Document Service-ում ներկառուցված nginx օրինակը՝ մուտքի բանալի (նախապես հայտնի մուտքի բանալի, որը հաստատում է տվյալների ամպ մուտք գործելու իրավունքը) և TLS վկայականներ տեղադրելու համար: Վերոնշյալ մոտեցումները համարվեցին ոչ անվտանգ և ոչ բավարար արդյունավետ, ուստի մենք ինտեգրեցինք NextCloud-ը, ONLYOFFICE-ը և ընդհանուր nginx-ը, որը բաժանում է հարցումներն ըստ տիրույթի անունների՝ օգտագործելով docker-compose-ը: Ահա քայլ առ քայլ տեղեկատվություն, թե ինչպես դա անել:

Քայլ 1. nginx կոնտեյներ

Սա շատ պարզ կարգավորում է, բայց այս քայլը պահանջում է առավելագույն աշխատանք՝ հակադարձ պրոքսի սերվերը կարգավորելու համար: Մենք նախ ստեղծեցինք docker-compose կոնֆիգուրացիան 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

Սա ստեղծում է կոնտեյներ 80 և 443 նավահանգիստներով, որոնք բաց են հանրության համար, քարտեզագրում է կազմաձևը nginx/nginx-vhost.conf-ին և սահմանում է պահոց վկայագրերի համար, որոնք ստեղծվել են որպես ինքնստորագրված վկայագրեր կամ օգտագործելով Let's encrypt-ի certbot-ը /nginx/certificates-ում: Այս տեղադրությունը պետք է պարունակի թղթապանակներ office.yourdomain.com և cloud.yourdomain.com համար, յուրաքանչյուրում fullchain1.pem և privkey1.pem ֆայլեր համապատասխանաբար վկայականների շղթայի և սերվերի մասնավոր բանալու համար: Դուք կարող եք կարդալ ավելին այն մասին, թե ինչպես ստեղծել ինքնստորագրված վկայագիր այստեղ: www.akadia.com/services/ssh_test_certificate.html (.key-ը և .crt-ը .pem-ի վերանվանումն աշխատում է առանց ֆայլի կառուցվածքը փոխարկելու nginx-ի համար):

Դրանից հետո մենք սահմանեցինք vhost ֆայլը: Մենք նախ սահմանում ենք 80 պորտի վարքագիծը որպես պարզ վերահղում դեպի https, քանի որ մենք չենք ցանկանում թույլատրել որևէ http տրաֆիկ

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

Այնուհետև մենք ստեղծեցինք երկու վիրտուալ սերվեր մեր ծառայությունների համար 443 նավահանգստում.

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. Փաստաթղթերի սպասարկում

Այժմ մենք պետք է ավելացնենք փաստաթղթերի սպասարկման կոնտեյները մեր docker-compose.yml-ում: Այստեղ կարգավորելու հատուկ բան չկա:

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

Բայց մի մոռացեք կապել nginx կոնտեյները փաստաթղթերի ծառայությանը.

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

Քայլ 3. Հաջորդ Cloud

Նախ, ավելացրեք նոր ծառայություններ.

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

և ավելացրեք հղում nginx-ին.

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

Այժմ ժամանակն է բեռնել բեռնարկղերը:

docker-compose up -d  

Որոշ ժամանակ անց nginx-ը կսկսի ձեզ վերահղել դեպի NextCloud ճակատ, որը լռելյայն կազմաձևման էջն է: Դուք պետք է մուտքագրեք ձեր առաջին ադմինիստրատիվ օգտատիրոջ օգտանունը և գաղտնաբառը և տվյալների բազայի հավատարմագրերը, որոնք դուք տրամադրել եք docker-compose.yml-ում Կարգավորումն ավարտվելուց հետո դուք կկարողանաք մուտք գործել: Մեր դեպքում սպասելը տևեց գրեթե մեկ րոպե և պահանջեց մուտքի էջի լրացուցիչ թարմացում, նախքան մենք կարողանայինք մուտք գործել ամպային ծառայություն:

NextCloud ծառայության կարգավորումների պատուհանNextCloud + ONLYOFFICE-ի կարգավորում Docker-ի հետ նույն սերվերի վրա

Քայլ 4. NextCloud-ի և ONLYOFFICE-ի միացում

Այս քայլում ձեզ հարկավոր է տեղադրել NextCloud հավելվածը, որը միացնում է ONLYOFFICE գործառույթը: Սկսենք մենյուի վերին աջ անկյունում գտնվող հավելվածի կառավարման վահանակից: Գտեք ONLYOFFICE հավելվածը (Office & text կամ որոնման միջոցով), տեղադրեք և ակտիվացրեք այն:

Դրանից հետո վերևի աջ անկյունում գտնվող մենյուի միջոցով գնացեք Կարգավորումներ և ձախ ցանկում պետք է գտնեք ONLYOFFICE տարրը: Անցեք դրա մեջ: Դուք պետք է գրանցեք ստորև նշված հասցեները:

Ինտեգրման հավելվածի կարգավորումներNextCloud + ONLYOFFICE-ի կարգավորում Docker-ի հետ նույն սերվերի վրա

Առաջին հասցեն օգտագործվում է որոշ js և css ֆայլեր կապելու համար անմիջապես բրաուզերում աշխատող հավելվածից (սա այն է, ինչ մեզ անհրաժեշտ է nginx-ի միջոցով ONLYOFFICE ծառայության մուտքը բացելու համար): Գաղտնի բանալին չի օգտագործվում, քանի որ մենք ավելի շատ վստահում ենք Docker մեկուսացման շերտին, քան մշտական ​​նույնականացման բանալիին: Երրորդ հասցեն օգտագործվում է NextCloud կոնտեյների կողմից՝ ուղղակիորեն ONLYOFFICE API-ին միանալու համար, և այն օգտագործում է Docker-ի լռելյայն ներքին հոսթի անունը: Դե, վերջին դաշտն օգտագործվում է, որպեսզի ONLYOFFICE-ը կարողանա հետ հարցումներ կատարել դեպի NextCloud API՝ օգտագործելով արտաքին IP հասցե կամ ներքին Docker հասցե, եթե դուք օգտագործում եք Docker ցանցեր, բայց դա չի օգտագործվում մեր դեպքում: Համոզվեք, որ ձեր firewall-ի կարգավորումները թույլ են տալիս այս տեսակի փոխազդեցությունները:

Պահելուց հետո NextCloud-ը կփորձարկի կապը և, եթե ամեն ինչ ճիշտ է, ձեզ ցույց կտա ինտեգրման հետ կապված կարգավորումները, օրինակ՝ ինչ տեսակի ֆայլեր կարող են խմբագրվել այս ինտեգրման միջոցով: Անհատականացրեք այնպես, ինչպես հարմար եք համարում:

Վերջնական քայլը. որտեղ գտնել խմբագրին

Եթե ​​վերադառնաք ձեր ամպային պահեստի թղթապանակներին և սեղմեք «+»՝ նոր ֆայլ ստեղծելու համար, ապա կունենաք փաստաթուղթ, աղյուսակ կամ ներկայացում ստեղծելու նոր տարբերակ: Նրանց օգնությամբ դուք կստեղծեք և անմիջապես կկարողանաք խմբագրել այս տեսակի ֆայլեր՝ օգտագործելով ONLYOFFICE-ը:

Ֆայլի ստեղծման ընտրացանկNextCloud + ONLYOFFICE-ի կարգավորում Docker-ի հետ նույն սերվերի վրա

Լրացում 1 թ

docker-compose.yml-ի ամբողջական բովանդակությունը կարելի է գտնել այստեղ. https://pastebin.com/z1Ti1fTZ

Source: www.habr.com

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