Docker бағдарламасымен бір серверде NextCloud + ONLYOFFICE орнату

Эй Хабр! Назарларыңызға мақаланың аудармасын ұсынамын «NextCloud және ONLYOFFICE қызметтерін Docker көмегімен бір серверде орнату».

Google Docs және бұлтты сақтау сияқты онлайн-офистік топтамалардың технологияға бағытталған адамдардың өміріндегі құндылығын бағаламау қиын. Технологияның кең таралғаны сонша, тіпті кеңсе қолданбалары нарығында ұзақ уақыт бойы үстемдік етіп келе жатқан Microsoft корпорациясы жақында Office 365 веб-қосымшасын әзірлеуге және пайдаланушыларды өз қызметтерін пайдалану үшін жазылым үлгісіне ауысуға көндіруге назар аударды. Біз мысық астындағы өз қоймасын орнату және конфигурациялау процесіне қызығушылық танытқандарды шақырамыз.

Біраз уақыт бұрын біз бұлтты сақтау шешімдерін және микро-кәсіпорында пайдалану үшін оңай орналастыруға болатын ашық бастапқы веб-офис жинақтарын қарастырдық. Барлық құжаттаманы желіде ұстаудың басты мотивациясы - құжат айналымын барынша азайту және транзакциялардың төмен көлеміне қарамастан жақсы бизнес тәжірибесін енгізу. Монетаның екінші жағы мынада, бұл қызметті қамтамасыз ету үшін бұлттық серверді жалға алу оны тікелей кәсіпорынның аумағында сақтаудан гөрі қауіпсіз емес, өйткені сізде серверге немесе трафикке физикалық қол жеткізуді тексерудің ешқандай құралы жоқ. Сондықтан түпкілікті шифрлау және ашық бастапқы бағдарламалық қамтамасыз ету де қажет.

Ашық бастапқы шешімдер туралы барлық қолжетімді ақпаратты ескере отырып, біз бұлтты сақтау үшін әзірленген екі белсенді жобаны (соңғы 12 айдағы git репозиторийінде жасалған) таптық: NextCloud және OwnCloud және жалғыз белсенді ONLYOFFICE кеңсе жиынтығы. Бұлтты сақтау құралдарының екеуінің де шамамен бірдей функционалдығы бар және NextCloud таңдау туралы шешім пайдаланушының бағдарламалық құралмен ыңғайлы әрекеттесуі үшін оны ONLYOFFICE-пен біріктіруге болатын дәлелдердің болуына негізделген. Алайда, біз қызметтерді енгізуді бастаған кезде, жоғарыда аталған қызметтерді біріктіру туралы ақпараттың жоқтығы көрінді. Біз біріктіру жолы туралы 3 оқулық бейнені таптық:

Үш бейненің ешқайсысы ONLYOFFICE құжат қызметін ортақ nginx көмегімен NextCloud сияқты физикалық серверде орнату туралы сұраққа жауап бермеді. Оның орнына олар құжат қызметі API үшін бөлек порттарды пайдалану сияқты бөлу әдістерін пайдаланды. Тағы бір ұсыныс қол жеткізу кілтін (деректер бұлтына қол жеткізу құқығын растайтын алдын ала белгілі кіру кілті) және TLS сертификаттарын орнату үшін Document Service ішіне орнатылған nginx данасын қолмен конфигурациялай отырып, Document Service үшін бөлек серверді орналастыру болды. Жоғарыда аталған тәсілдер қауіпсіз емес және жеткілікті тиімді емес деп саналды, сондықтан біз NextCloud, ONLYOFFICE және docker-compose көмегімен сұрауларды домен атаулары бойынша бөлетін жалпы nginx біріктірдік. Мұнда мұны қалай жасау керектігі туралы қадамдық ақпарат берілген.

1-қадам: nginx контейнері

Бұл өте қарапайым орнату, бірақ бұл қадам кері прокси серверді конфигурациялау үшін көп жұмысты қажет етеді. Біз алдымен nginx:stable кескіні үшін docker-compose конфигурациясын жасадық.

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 картасына салады және өздігінен қол қойылған сертификаттар ретінде жасалған немесе /nginx/certificates ішінде Let's encrypt's certbot көмегімен жасалған сертификаттар үшін қойманы анықтайды. Бұл жерде сәйкесінше сертификаттар тізбегі мен сервердің жеке кілті үшін әрқайсысында fullchain1.pem және privkey1.pem файлдары бар office.yourdomain.com және cloud.yourdomain.com қалталары болуы керек. Өздігінен қол қойылған сертификатты жасау жолы туралы толығырақ мына жерден оқи аласыз. 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-қадам: NextCloud

Алдымен жаңа қызметтерді қосыңыз:

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 қызметінің параметрлері терезесіDocker бағдарламасымен бір серверде NextCloud + ONLYOFFICE орнату

4-қадам: NextCloud және ONLYOFFICE қосу

Бұл қадамда ONLYOFFICE функционалдығын қосатын NextCloud қолданбасын орнату қажет. Мәзірдің жоғарғы оң жақ бұрышындағы қолданбаларды басқару тақтасынан бастайық. ONLYOFFICE қолданбасын табыңыз (Office & мәтін астында немесе іздеу арқылы), оны орнатыңыз және іске қосыңыз.

Содан кейін жоғарғы оң жақ бұрыштағы мәзір арқылы Параметрлерге өтіңіз және сол жақ мәзірден ONLYOFFICE элементін табуыңыз керек. Оған кіріңіз. Төменде көрсетілгендей мекенжайларды тіркеуіңіз қажет.

Интеграциялық қолданба параметрлеріDocker бағдарламасымен бір серверде NextCloud + ONLYOFFICE орнату

Бірінші мекенжай кейбір JS және CSS файлдарына тікелей браузерде жұмыс істейтін қолданбадан сілтеме жасау үшін пайдаланылады (бұл бізге nginx арқылы ONLYOFFICE қызметіне кіруді ашу үшін қажет). Құпия кілт пайдаланылмайды, себебі біз тұрақты аутентификация кілтіне қарағанда Docker оқшаулау деңгейіне көбірек сенеміз. Үшінші мекенжайды NextCloud контейнері ONLYOFFICE API интерфейсіне тікелей қосылу үшін пайдаланады және ол Docker әдепкі ішкі хост атын пайдаланады. Соңғы өріс ONLYOFFICE сыртқы IP мекенжайын немесе Docker желілерін пайдалансаңыз, ішкі Docker мекенжайын пайдаланып NextCloud API интерфейсіне кері сұраулар жасай алуы үшін пайдаланылады, бірақ бұл біздің жағдайда қолданылмайды. Брандмауэр параметрлері осындай өзара әрекеттесуге мүмкіндік беретініне көз жеткізіңіз.

Сақтағаннан кейін NextCloud қосылымды тексереді және бәрі дұрыс болса, интеграцияға қатысты параметрлерді көрсетеді - мысалы, осы біріктіру арқылы қандай файлдар түрлерін өңдеуге болады. Қалағаныңызша реттеңіз.

Соңғы қадам: редакторды қайдан табуға болады

Егер сіз бұлтты сақтау қалталарына оралсаңыз және жаңа файл жасау үшін «+» түймесін бассаңыз, сізде құжат, электрондық кесте немесе презентация жасаудың жаңа опциясы болады. Олардың көмегімен сіз ONLYOFFICE көмегімен файлдардың осы түрлерін жасайсыз және бірден өңдей аласыз.

Файл жасау мәзіріDocker бағдарламасымен бір серверде NextCloud + ONLYOFFICE орнату

Қосымша 1

docker-compose.yml толық мазмұнын мына жерден табуға болады: https://pastebin.com/z1Ti1fTZ

Ақпарат көзі: www.habr.com

пікір қалдыру