Bi Docker re li ser heman serverê NextCloud + ONLYOFFICE saz bikin

Hey Habr! Wergera gotarê pêşkêşî we dikim "Sazkirina NextCloud û ONLYOFFICE li ser yek serverek bi Docker re".

Zehmet e ku meriv nirxa guncanên nivîsgeha serhêl ên mîna Google Docs û hilanîna cloudê di jiyana mirovên teknolojiyê de kêm bike. Teknolojî ew qas berbelav bûye ku tewra Microsoft, ku demek dirêj di bazara sepanên nivîsgehê de serdest e, di van demên dawî de balê dikişîne ser pêşxistina sepana webê Office 365 û razîkirina bikarhêneran ku ji bo karanîna karûbarên xwe veguherînin modelek abonetiyê. Em kesên ku bi pêvajoya sazkirin û mîhengkirina depoya xwe ya di binê pisîkê de eleqedar in vedixwînin.

Demek berê me li çareseriyên hilanînê ewr û suiteyên nivîsgeha webê ya çavkaniya vekirî nihêrî ku dikarin bi hêsanî ji bo karanîna di pargîdaniyek mîkro de werin bicîh kirin. Motivasyona sereke ya girtina hemî belgeyên serhêl ev e ku ew kaxez bi kêmî ve bihêle û tevî qebareya kêm danûstendinan pratîkên karsaziya baş bicîh bîne. Aliyê din ê drav ev e ku kirêkirina serverek cloudê ji bo peydakirina vê karûbarê kêmtir ewledar e ji hilanîna wê rasterast li ser cîhên pargîdaniyê, ji ber ku hûn rêgezek kontrolkirina gihîştina laşî ya server an seyrûsefera we tune. Ji ber vê yekê, şîfrekirina dawî-bi-dawî û nermalava çavkaniya vekirî jî hewce ne.

Li gorî hemî agahdariya berdest di derbarê çareseriyên çavkaniya vekirî de, me du projeyên çalak (bi pabendbûna di depoya git ya 12 mehên borî de) ku ji bo hilanîna cloudê hatine pêşve xistin dîtin: NextCloud û OwnCloud, û yekane komika nivîsgeha ONLYOFFICE ya çalak. Her du amûrên hilanîna ewr bi qasî heman fonksiyonê hene, û biryara hilbijartina NextCloud li ser bingeha hebûna delîlan bû ku ew dikare bi ONLYOFFICE re ji bo danûstendinek bikarhênerek rehet a bi nermalavê re were yek kirin. Lêbelê, dema ku me dest bi belavkirina karûbaran kir, nebûna agahdariya li ser yekkirina karûbarên jorîn diyar bû. Me 3 vîdyoyên dersê yên li ser meriv çawa yekbûyî dît:

Yek ji sê vîdyoyan bersiv neda pirsa sazkirina karûbarê belgeya ONLYOFFICE li ser heman servera laşî ya wekî NextCloud bi nginxek hevpar. Di şûna wê de, wan teknîkên veqetandinê yên wekî karanîna portên cihêreng ji bo api karûbarê belgeyê bikar anîn. Pêşniyarek din ev bû ku ji bo Karûbarê Belgeyê serverek veqetandî were danîn, bi desta mînaka nginx ya ku di Karûbarê Belgeyê de hatî çêkirin mîheng bike da ku mifteyek gihîştinê (bişkojek gihîştina pêş-naskirî ku mafê gihîştina ewrê daneyê piştrast dike) û sertîfîkayên TLS saz bike. Nêzîkatiyên jorîn ne ewledar û bi têra xwe ne bi bandor hatin hesibandin, ji ber vê yekê me NextCloud, ONLYOFFICE û nginxek hevpar a ku bi karanîna docker-compose daxwazan bi navên domainê ji hev vediqetîne yek kirin. Li vir agahdariya gav-gav li ser meriv wê çawa bike.

Gav 1: konteynir nginx

Ev sazûmanek pir hêsan e, lê ev gav xebata herî zêde hewce dike ku servera proxy berevajî mîheng bike. Me pêşî veavakirina docker-compose ji bo wêneya nginx: stabîl çêkir.

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

Ev konteynirek bi benderên 80 û 443 ve ji gel re vekirî diafirîne, veavakirinê li ser nginx/nginx-vhost.conf nexşe dike, û ji bo sertîfîkayên ku wekî sertîfîkayên xwe-îmzakirî têne hilberandin an jî bi karanîna Let's certbot-ê di /nginx/sertîfîkayan de têne şîfrekirin, depoyek destnîşan dike. Divê ev cîh peldankên ji bo office.yourdomain.com û cloud.yourdomain.com, bi pelên fullchain1.pem û privkey1.pem di her yekê de ji bo zincîra sertîfîkayê û mifteya taybet a serverê, hebe. Hûn dikarin li vir bêtir bixwînin ka meriv çawa sertîfîkayek xwe-îmzakirî çêdike. www.akadia.com/services/ssh_test_certificate.html (navê .key û .crt bi .pem veguherandin bêyî veguhertina avahiya pelê ji bo nginx dixebite).

Piştî wê, me pelê vhost diyar kir. Em pêşî tevgera port 80-ê wekî beralîkirina hêsan a https-ê destnîşan dikin, ji ber ku em naxwazin rê bidin tu trafîka http

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

Dûv re me ji bo karûbarên xwe du serverên virtual li port 443 afirandin:

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

Gav 2: karûbarê belgeyê

Naha divê em konteynera karûbarê belgeyê li docker-compose.yml xwe zêde bikin. Tiştek taybetî tune ku li vir were mîheng kirin.

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

Lê ji bîr nekin ku konteynera nginx bi karûbarê belgeyê ve girêdin:

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

Gav 3: Cloud Next

Pêşîn, karûbarên nû zêde bikin:

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

û girêdanek li nginx zêde bikin:

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

Niha dema barkirina konteyniran hatiye.

docker-compose up -d  

Piştî demekê, nginx dê dest bi verastkirina we ber bi dawiya pêşiyê NextCloud, ku rûpela veavakirina xwerû ye, bike. Pêdivî ye ku hûn navê bikarhêner û şîfreya bikarhênerê xweya rêveberê yekem û pêbaweriyên databasê yên ku we di docker-compose.yml de dane binivîsin Dema ku sazkirin qediya, hûn ê karibin têkevinê. Di doza me de, li bendê hema hema hûrdemek girt û berî ku em karibin têkevin karûbarê ewr de nûvekirinek din a rûpela têketinê hewce bû.

Paceya mîhengên karûbarê NextCloudBi Docker re li ser heman serverê NextCloud + ONLYOFFICE saz bikin

Gav 4: Girêdana NextCloud û ONLYOFFICE

Di vê gavê de, hûn ê hewce bikin ku serîlêdana ji bo NextCloud saz bikin, ku fonksiyona ONLYOFFICE girêdide. Ka em bi panela kontrolê ya serîlêdanê ya li goşeya rastê ya jorîn a menuyê dest pê bikin. Serlêdana ONLYOFFICE (li binê Office & nivîsê an lêgerînê bikar bînin) bibînin, wê saz bikin û çalak bikin.

Piştî wê bi rêya menuya li goşeya rastê ya jorîn ve serî li Mîhengan bidin û divê hûn di menuya çepê de tiştê ONLYOFFICE bibînin. Biçe nav wê. Hûn hewce ne ku navnîşanên ku li jêr têne destnîşan kirin tomar bikin.

Mîhengên serîlêdana entegrasyonêBi Docker re li ser heman serverê NextCloud + ONLYOFFICE saz bikin

Navnîşana yekem ji bo girêdana hin pelên js û css rasterast ji serîlêdana ku di gerokê de tê xebitandin tê bikar anîn (ev tiştê ku em hewce ne ku bi riya nginx ve gihandina karûbarê ONLYOFFICE vekin). Mifteya nehênî nayê bikar anîn ji ber ku em ji bişkoja verastkirina domdar bêtir bi qata veqetandina Docker bawer dikin. Navnîşana sêyemîn ji hêla konteynera NextCloud ve tê bikar anîn da ku rasterast bi ONLYOFFICE API-ya ONLYOFFICE ve were girêdan, û ew navê mêvandarê navxweyî yê xwerû ji Docker bikar tîne. Welê, qada paşîn tê bikar anîn da ku ONLYOFFICE dikare bi karanîna navnîşanek IP-ya derveyî an navnîşek Docker-a hundurîn serlêdanan li NextCloud API-yê bike heke hûn torên Docker bikar tînin, lê ev di doza me de nayê bikar anîn. Piştrast bikin ku mîhengên dîwarê we destûrê dide van celeb danûstandinan.

Piştî tomarkirinê, NextCloud dê pêwendiyê biceribîne û, ger her tişt rast be, dê mîhengên têkildarî yekbûnê nîşanî we bide - mînakî, çi celeb pelan dikarin ji hêla vê entegrasyonê ve werin sererast kirin. Wekî ku hûn guncan dibînin xweş bikin.

Pêngava dawî: li ku derê meriv edîtorê bibîne

Ger hûn vegerin peldankên hilanîna ewr a xwe û li ser "+" bikirtînin da ku pelek nû biafirînin, wê hingê hûn ê vebijarkek nû hebin ku hûn belgeyek, pelgeyek an pêşkêşî biafirînin. Bi alîkariya wan, hûn ê bi karanîna ONLYOFFICE-ê biafirînin û tavilê karibin van celeb pelan biguherînin.

Menuya çêkirina pelanBi Docker re li ser heman serverê NextCloud + ONLYOFFICE saz bikin

Pêvek 1

Naveroka tevahî ya docker-compose.yml dikare li vir were dîtin: https://pastebin.com/z1Ti1fTZ

Source: www.habr.com

Add a comment