Kusanidi NextCloud + ONLYOFFICE kwenye seva sawa na Docker

Habari Habr! Ninawasilisha kwa mawazo yako tafsiri ya makala "Kusanidi NextCloud na ONLYOFFICE kwenye seva moja na Docker".

Ni vigumu kudharau thamani ya vyumba vya ofisi mtandaoni kama vile Hati za Google na hifadhi ya wingu katika maisha ya watu wanaozingatia teknolojia. Teknolojia imeenea sana hivi kwamba hata Microsoft, ambayo kwa muda mrefu imekuwa ikitawala soko la maombi ya ofisi, hivi karibuni imejikita katika kutengeneza programu ya wavuti ya Office 365 na kuwashawishi watumiaji kubadili mtindo wa usajili kwa kutumia huduma zao wenyewe. Tunawaalika wale ambao wana nia ya mchakato wa kufunga na kusanidi hifadhi yao wenyewe chini ya paka.

Wakati fulani uliopita tuliangalia suluhu za uhifadhi wa wingu na vyumba vya ofisi vya tovuti huria ambavyo vinaweza kutumwa kwa urahisi kwa matumizi katika biashara ndogo ndogo. Kichocheo kikuu cha kuweka hati zote mtandaoni ni kuweka makaratasi kwa kiwango cha chini na kutekeleza mazoea mazuri ya biashara licha ya kiwango kidogo cha miamala. Upande mwingine wa sarafu ni kwamba kukodisha seva ya wingu kutoa huduma hii sio salama kuliko kuihifadhi moja kwa moja kwenye majengo ya biashara, kwani huna njia yoyote ya kukagua ufikiaji wa kimwili kwa seva yako au trafiki. Kwa hivyo, programu ya usimbaji-mwisho-hadi-mwisho na programu huria pia inahitajika.

Kwa kuzingatia maelezo yote yanayopatikana kuhusu suluhu za chanzo huria, tulipata miradi miwili inayotumika (iliyo na ahadi kwenye hazina ya git kwa muda wa miezi 12 iliyopita) iliyotengenezwa kwa hifadhi ya wingu: NextCloud na OwnCloud, na ofisi pekee inayotumika ya ONLYOFFICE. Zana zote mbili za uhifadhi wa wingu zina takriban utendakazi sawa, na uamuzi wa kuchagua NextCloud ulitokana na kuwepo kwa ushahidi kwamba inaweza kuunganishwa na ONLYOFFICE kwa mwingiliano mzuri wa mtumiaji na programu. Walakini, tulipoanza kupeleka huduma, ukosefu wa habari juu ya kuunganisha huduma zilizo hapo juu ulionekana. Tulipata video 3 za mafunzo juu ya jinsi ya kujumuisha:

Hakuna video kati ya hizo tatu iliyojibu swali la kusakinisha huduma ya hati ya ONLYOFFICE kwenye seva halisi kama NextCloud iliyo na nginx iliyoshirikiwa. Badala yake, walitumia mbinu za utenganisho kama vile kutumia bandari tofauti kwa api ya huduma ya hati. Pendekezo lingine lilikuwa kupeleka seva tofauti kwa Huduma ya Hati, kusanidi mwenyewe mfano wa nginx uliojengwa katika Huduma ya Hati ili kusakinisha ufunguo wa ufikiaji (ufunguo wa ufikiaji unaojulikana awali ambao unathibitisha haki ya kufikia wingu la data) na vyeti vya TLS. Mbinu zilizo hapo juu zilizingatiwa kuwa sio salama na hazifanyi kazi vya kutosha, kwa hivyo tuliunganisha NextCloud, ONLYOFFICE na nginx ya kawaida ambayo hutenganisha maombi kwa majina ya kikoa kwa kutumia docker-compose. Hapa kuna maelezo ya hatua kwa hatua juu ya jinsi ya kuifanya.

Hatua ya 1: chombo cha nginx

Huu ni usanidi rahisi sana, lakini hatua hii inahitaji kazi kubwa zaidi ili kusanidi seva mbadala ya nyuma. Kwanza tuliunda usanidi wa kutunga docker kwa nginx:picha thabiti.

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

Hii huunda kontena iliyo na milango 80 na 443 wazi kwa umma, inapanga usanidi kwa nginx/nginx-vhost.conf , na inafafanua hifadhi ya vyeti vinavyotolewa kama vyeti vya kujitia saini au kutumia Let's encrypt's certbot in /nginx/certificates. Mahali hapa panapaswa kuwa na folda za office.yourdomain.com na cloud.yourdomain.com, zenye faili kamilichain1.pem na privkey1.pem katika kila msururu wa cheti na ufunguo wa faragha wa seva, mtawalia. Unaweza kusoma zaidi kuhusu jinsi ya kutengeneza cheti cha kujiandikisha hapa. www.akadia.com/services/ssh_test_certificate.html (kubadilisha jina la .key na .crt kwa .pem hufanya kazi bila kubadilisha muundo wa faili kwa nginx).

Baada ya hayo, tulifafanua faili ya vhost. Kwanza tunafafanua tabia ya bandari 80 kama njia rahisi ya kuelekeza kwa https, kwa sababu hatutaki kuruhusu trafiki yoyote ya http

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

Kisha tukaunda seva mbili pepe kwenye bandari 443 kwa huduma zetu:

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

Hatua ya 2: huduma ya hati

Sasa tunahitaji kuongeza chombo cha huduma ya hati kwenye docker-compose.yml yetu. Hakuna kitu maalum cha kusanidi hapa.

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

Lakini usisahau kuunganisha kontena ya nginx kwenye huduma ya hati:

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

Hatua ya 3: Wingu linalofuata

Kwanza, ongeza huduma mpya:

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

na ongeza kiunga kwa nginx:

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

Sasa ni wakati wa kupakia vyombo.

docker-compose up -d  

Baada ya muda, nginx itaanza kukuelekeza kwenye sehemu ya mbele ya NextCloud, ambayo ni ukurasa wa usanidi chaguo-msingi. Utahitaji kuingiza jina la mtumiaji na nenosiri la mtumiaji wako wa kwanza wa msimamizi na stakabadhi za hifadhidata ulizotoa katika docker-compose.yml Mara tu usanidi utakapokamilika, utaweza kuingia. Kwa upande wetu, kusubiri kulichukua karibu dakika moja na kuhitaji usasisho wa ziada wa ukurasa wa kuingia kabla ya kuingia kwenye huduma ya wingu.

Dirisha la mipangilio ya huduma ya NextCloudKusanidi NextCloud + ONLYOFFICE kwenye seva sawa na Docker

Hatua ya 4: Kuunganisha NextCloud na ONLYOFFICE

Katika hatua hii, utahitaji kusakinisha programu ya NextCloud, ambayo inaunganisha utendaji wa ONLYOFFICE. Wacha tuanze na paneli ya kudhibiti programu kwenye kona ya juu ya kulia ya menyu. Pata programu ya ONLYOFFICE (chini ya Ofisi na maandishi au kwa kutumia utafutaji), isakinishe na uiwashe.

Baada ya hapo nenda kwa Mipangilio kupitia menyu kwenye kona ya juu kulia na unapaswa kupata kipengee cha ONLYOFFICE kwenye menyu ya kushoto. Ingia ndani yake. Utahitaji kusajili anwani kama ilivyoonyeshwa hapa chini.

Mipangilio ya programu ya ujumuishajiKusanidi NextCloud + ONLYOFFICE kwenye seva sawa na Docker

Anwani ya kwanza inatumika kuunganisha kwa baadhi ya faili za js na css moja kwa moja kutoka kwa programu inayoendesha kwenye kivinjari (hili ndilo tunalohitaji kufungua ufikiaji wa huduma ya ONLYOFFICE kupitia nginx). Ufunguo wa siri hautumiki kwa sababu tunaamini safu ya kutengwa ya Docker zaidi ya ufunguo unaoendelea wa uthibitishaji. Anwani ya tatu inatumiwa na kontena ya NextCloud kuunganisha moja kwa moja kwenye API ya ONLYOFFICE, na hutumia jina la mpangishi wa ndani kutoka kwa Docker. Kweli, sehemu ya mwisho inatumiwa ili ONLYOFFICE iweze kutuma maombi kwa NextCloud API kwa kutumia anwani ya IP ya nje au anwani ya ndani ya Docker ikiwa unatumia mitandao ya Docker, lakini hii haitumiki kwa upande wetu. Hakikisha mipangilio yako ya ngome inaruhusu aina hizi za mwingiliano.

Baada ya kuokoa, NextCloud itajaribu uunganisho na, ikiwa kila kitu ni sahihi, itakuonyesha mipangilio inayohusiana na ushirikiano - kwa mfano, ni aina gani za faili zinaweza kuhaririwa na ushirikiano huu. Geuza kukufaa unavyoona inafaa.

Hatua ya mwisho: wapi kupata mhariri

Ukirudi kwenye folda zako za hifadhi ya wingu na ubofye "+" ili kuunda faili mpya, basi utakuwa na chaguo jipya la kuunda hati, lahajedwali au uwasilishaji. Kwa msaada wao, utaunda na mara moja utaweza kuhariri aina hizi za faili kwa kutumia ONLYOFFICE.

Menyu ya kuunda failiKusanidi NextCloud + ONLYOFFICE kwenye seva sawa na Docker

Nyongeza 1

Yaliyomo kamili ya docker-compose.yml yanaweza kupatikana hapa: https://pastebin.com/z1Ti1fTZ

Chanzo: mapenzi.com

Kuongeza maoni