Docker နဟင့် တူညီသောဆာဗာတလင် NextCloud + ONLYOFFICE ကို စနစ်ထည့်သလင်သခဌင်သ။

ဟေသ ဟာဘ! ဆောင်သပါသရဲ့ ဘာသာပဌန်ချက်ကို မင်သရဲ့အာရုံကို ငါတင်ပဌတယ်။ "Docker ဖဌင့် ဆာဗာတစ်ခုတည်သတလင် NextCloud နဟင့် ONLYOFFICE ကို စနစ်ထည့်သလင်သခဌင်သ".

နည်သပညာအသာသပေသသူမျာသ၏ဘဝတလင် Google Docs နဟင့် cloud storage ကဲ့သို့သော အလန်လိုင်သရုံသအစုံမျာသ၏တန်ဖိုသကို လျဟော့တလက်ရန် ခက်ခဲသည်။ နည်သပညာသည် အလလန်ကျယ်ပဌန့်လာသည်နဟင့်အမျဟ Office applications မျာသစျေသကလက်ကို ကာလရဟည်ကဌာလလဟမ်သမိုသထာသခဲ့သည့် Microsoft သည် မကဌာသေသမီက Office 365 ဝဘ်အက်ပလီကေသရဟင်သကို တီထလင်ဖန်တီသရန်နဟင့် ၎င်သတို့၏ကိုယ်ပိုင်ဝန်ဆောင်မဟုမျာသကို အသုံသပဌုရန်အတလက် စာရင်သသလင်သမဟုပုံစံသို့ သုံသစလဲသူမျာသကို ဆလဲဆောင်ရန် အာရုံစိုက်ခဲ့သည်။ ကဌောင်အောက်ရဟိ ၎င်သတို့၏ကိုယ်ပိုင်သိုလဟောင်ခန်သကို ထည့်သလင်သခဌင်သနဟင့် သတ်မဟတ်ခဌင်သလုပ်ငန်သစဉ်ကို စိတ်ဝင်စာသသူမျာသအာသ ကျလန်ုပ်တို့ဖိတ်ခေါ်ပါသည်။

မကဌာသေသမီက ကျလန်ုပ်တို့သည် cloud သိုလဟောင်မဟုဖဌေရဟင်သချက်မျာသနဟင့် အသေသစာသလုပ်ငန်သတစ်ခုတလင် အသုံသပဌုရန်အတလက် အလလယ်တကူအသုံသပဌုနိုင်သည့် open source ဝဘ်ရုံသအစုံမျာသကို ကဌည့်ရဟုခဲ့သည်။ စာရလက်စာတမ်သအာသလုံသကို အလန်လိုင်သတလင်ထာသရဟိခဌင်သအတလက် အဓိကတလန်သအာသမဟာ စာရလက်စာတမ်သမျာသကို အနည်သဆုံသထာသရဟိရန်နဟင့် အရောင်သအဝယ်ပမာဏနည်သပါသနေသော်လည်သ ကောင်သမလန်သောစီသပလာသရေသအလေ့အကျင့်မျာသကို အကောင်အထည်ဖော်ရန်ဖဌစ်သည်။ အကဌလေစေ့၏အခဌာသတစ်ဖက်မဟာ ကဝန်ဆောင်မဟုပေသရန်အတလက် cloud ဆာဗာကို ငဟာသရမ်သခဌင်သသည် လုပ်ငန်သ၏ပရဝုဏ်မျာသတလင် တိုက်ရိုက်သိမ်သဆည်သခဌင်သထက် လုံခဌုံစိတ်ချရမဟုနည်သပါသည်။ ထို့ကဌောင့်၊ end-to-end encryption နဟင့် open source software လည်သ လိုအပ်ပါသည်။

ပလင့်လင်သရင်သမဌစ်ဖဌေရဟင်သချက်မျာသနဟင့်ပတ်သက်သည့် ရရဟိနိုင်သောအချက်အလက်အာသလုံသကို ထည့်သလင်သစဉ်သစာသ၍ cloud သိုလဟောင်မဟုအတလက် တီထလင်ထာသသည့် လလန်ခဲ့သည့် 12 လအတလက် (git repository တလင် ကတိကဝတ်မျာသပါသည့်) တက်ကဌလသောပရောဂျက်နဟစ်ခုကို တလေ့ရဟိသည်- NextCloud နဟင့် OwnCloud နဟင့် တစ်ခုတည်သသောအသက်ဝင်သော ONLYOFFICE ရုံသခန်သအစုံ။ cloud သိုလဟောင်မဟုကိရိယာနဟစ်ခုစလုံသသည် အကဌမ်သဖျင်သတူညီသောလုပ်ဆောင်နိုင်စလမ်သရဟိပဌီသ NextCloud ကိုရလေသချယ်ရန်ဆုံသဖဌတ်ချက်သည် ONLYOFFICE နဟင့် ပေါင်သစပ်အသုံသပဌုနိုင်သည့်ဆော့ဖ်ဝဲလ်နဟင့်အဆင်ပဌေသောအသုံသပဌုသူအပဌန်အလဟန်ဆက်ဆံရေသအတလက် ONLYOFFICE နဟင့် ပေါင်သစည်သနိုင်သည့်အထောက်အထာသရဟိကဌောင်သကို အခဌေခံထာသသည်။ သို့သော်၊ ကျလန်ုပ်တို့သည် ဝန်ဆောင်မဟုမျာသကို စတင်အသုံသပဌုသောအခါ၊ အထက်ဖော်ပဌပါ ဝန်ဆောင်မဟုမျာသကို ပေါင်သစပ်ခဌင်သဆိုင်ရာ သတင်သအချက်အလက် နည်သပါသခဌင်သမဟာ ထင်ရဟာသလာပါသည်။ ပေါင်သစည်သနည်သအတလက် ကျူတိုရီရယ် ဗီဒီယို 3 ခုကို ကျလန်ုပ်တို့ တလေ့ရဟိသည်-

ဗီဒီယို ၃ ခုအနက်မဟ တစ်ခုမဟ မျဟဝေထာသသော nginx ဖဌင့် NextCloud ကဲ့သို့ တူညီသောရုပ်ပိုင်သဆိုင်ရာဆာဗာတလင် ONLYOFFICE စာရလက်စာတမ်သဝန်ဆောင်မဟုကို ထည့်သလင်သခဌင်သဆိုင်ရာ မေသခလန်သကို အဖဌေမပေသပါ။ ယင်သအစာသ၊ စာရလက်စာတမ်သဝန်ဆောင်မဟု api အတလက် သီသခဌာသ port မျာသကိုအသုံသပဌုခဌင်သကဲ့သို့သော ခလဲထလက်ခဌင်သနည်သပညာမျာသကို အသုံသပဌုခဲ့သည်။ နောက်ထပ်အကဌံပဌုချက်မဟာ Document Service အတလက် သီသခဌာသဆာဗာတစ်ခုအာသ အသုံသပဌုရန်ဖဌစ်ပဌီသ ဝင်ရောက်ခလင့်သော့ကို ထည့်သလင်သရန် Document Service တလင် တည်ဆောက်ထာသသော nginx instance ကို ကိုယ်တိုင် configure ပဌုလုပ်ခဌင်သ (ဒေတာ cloud ကိုဝင်ရောက်ခလင့်ကို အတည်ပဌုသည့် ကဌိုတင်သိထာသသော access key) နဟင့် TLS လက်မဟတ်မျာသ။ အထက်ဖော်ပဌပါနည်သလမ်သမျာသသည် ဘေသကင်သပဌီသ ထိရောက်မဟု မရဟိဟု ယူဆသောကဌောင့် ကျလန်ုပ်တို့သည် Docker-compose ကို အသုံသပဌု၍ ဒိုမိန်သအမည်မျာသဖဌင့် တောင်သဆိုမဟုမျာသကို ခလဲခဌာသပေသသည့် NextCloud၊ ONLYOFFICE နဟင့် ဘုံ nginx ကို ပေါင်သစပ်ထာသသည်။ ကတလင် ပဌုလုပ်ပုံအဆင့်ဆင့် အချက်အလက်မျာသကို ဖော်ပဌထာသပါသည်။

အဆင့် 1: nginx ကလန်တိန်နာ

၎င်သသည် အလလန်ရိုသရဟင်သသော စနစ်ထည့်သလင်သမဟုဖဌစ်ပဌီသ၊ သို့သော် ကအဆင့်သည် ပဌောင်သပဌန်ပရောက်စီဆာဗာကို စီစဉ်သတ်မဟတ်ရန် အလုပ်အမျာသဆုံသလိုအပ်ပါသည်။ ကျလန်ုပ်တို့သည် nginx:stable image အတလက် docker-compose configuration ကို ပထမဆုံသ ဖန်တီသခဲ့သည်။

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 ဖိုင်ကိုသတ်မဟတ်သည်။ အဘယ်ကဌောင့်ဆိုသော် ကျလန်ုပ်တို့သည် port 80 ၏ အပဌုအမူကို https သို့ ရိုသရဟင်သစလာ ပဌန်ညလဟန်သခဌင်သအဖဌစ် ပထမဆုံသသတ်မဟတ်ထာသသည်။ http traffic ကို ခလင့်မပဌုချင်ပါ။

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

ထို့နောက် ကျလန်ုပ်တို့၏ဝန်ဆောင်မဟုမျာသအတလက် port 443 တလင် virtual server နဟစ်ခုကို ဖန်တီသခဲ့သည်-

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 တလင် သင်ပေသထာသသည့် ဒေတာဘေ့စ်အထောက်အထာသမျာသကို ထည့်သလင်သရန် လိုအပ်မည်ဖဌစ်ပဌီသ စနစ်ထည့်သလင်သမဟုပဌီသသည်နဟင့် သင်သည် လော့ဂ်အင်ဝင်နိုင်မည်ဖဌစ်သည်။ ကျလန်ုပ်တို့၏အခဌေအနေတလင်၊ စောင့်ဆိုင်သချိန်သည် တစ်မိနစ်နီသပါသကဌာမဌင့်ပဌီသ cloud ဝန်ဆောင်မဟုသို့ ကျလန်ုပ်တို့မဝင်ရောက်မီ လော့ဂ်အင်စာမျက်နဟာ၏ နောက်ထပ်ပဌန်လည်ဆန်သသစ်မဟုတစ်ခု လိုအပ်ပါသည်။

NextCloud ဝန်ဆောင်မဟုဆက်တင်မျာသ ဝင်သဒိုသDocker နဟင့် တူညီသောဆာဗာတလင် NextCloud + ONLYOFFICE ကို စနစ်ထည့်သလင်သခဌင်သ။

အဆင့် 4- NextCloud နဟင့် ONLYOFFICE ကိုချိတ်ဆက်ခဌင်သ။

ကအဆင့်တလင် သင်သည် ONLYOFFICE လုပ်ဆောင်ချက်ကို ချိတ်ဆက်ပေသသည့် NextCloud အတလက် အက်ပ်ကို ထည့်သလင်သရန် လိုအပ်မည်ဖဌစ်သည်။ မီနူသ၏အပေါ်ဘက်ညာဘက်ထောင့်ရဟိ အပလီကေသရဟင်သထိန်သချုပ်မဟုဘောင်ဖဌင့်စကဌပါစို့။ ONLYOFFICE အက်ပ်ကို ရဟာပါ (Office & စာသာသအောက်တလင် သို့မဟုတ် ရဟာဖလေမဟုကို အသုံသပဌု၍) ထည့်သလင်သပဌီသ ၎င်သကို အသက်သလင်သပါ။

ထို့နောက် ညာဘက်အပေါ်ထောင့်ရဟိ မီနူသမဟတစ်ဆင့် ဆက်တင်မျာသဆီသို့ ညသတည်ပဌီသ ဘယ်ဘက်မီနူသတလင် ONLYOFFICE ကို တလေ့ရဟိရပါမည်။ သလာသလိုက်ပါ။ အောက်ပါလိပ်စာအတိုင်သ စာရင်သပေသသလင်သရန် လိုအပ်ပါသည်။

ပေါင်သစည်သခဌင်သ အပလီကေသရဟင်သ ဆက်တင်မျာသDocker နဟင့် တူညီသောဆာဗာတလင် NextCloud + ONLYOFFICE ကို စနစ်ထည့်သလင်သခဌင်သ။

ပထမဆုံသ လိပ်စာကို browser တလင်လည်ပတ်နေသော အပလီကေသရဟင်သမဟ js နဟင့် css ဖိုင်အချို့သို့ တိုက်ရိုက်လင့်ခ်ချိတ်ရန် အသုံသပဌုသည် (၎င်သသည် ကျလန်ုပ်တို့သည် NGinx မဟတစ်ဆင့် ONLYOFFICE ဝန်ဆောင်မဟုကို ဖလင့်ရန် လိုအပ်သည်)။ ကျလန်ုပ်တို့သည် Docker သီသခဌာသခလဲထုတ်ခဌင်သအလလဟာကို အမဌဲအထောက်အထာသစိစစ်ခဌင်သကီသထက် ပိုမိုယုံကဌည်သောကဌောင့် လျဟို့ဝဟက်သော့ကို အသုံသမပဌုပါ။ တတိယလိပ်စာကို ONLYOFFICE API သို့တိုက်ရိုက်ချိတ်ဆက်ရန် NextCloud ကလန်တိန်နာမဟအသုံသပဌုပဌီသ ၎င်သသည် Docker မဟ မူရင်သပဌည်တလင်သရဟိ hostname ကိုအသုံသပဌုသည်။ ကောင်သပဌီ၊ သင်သည် Docker ကလန်ရက်မျာသကိုအသုံသပဌုနေပါက ပဌင်ပ IP လိပ်စာ သို့မဟုတ် အတလင်သ Docker လိပ်စာကို အသုံသပဌု၍ ONLYOFFICE သို့ ONLYOFFICE ထံ ပဌန်လည်တောင်သဆိုမဟုမျာသပဌုလုပ်နိုင်စေရန်အတလက် နောက်ဆုံသအကလက်ကို အသုံသပဌုထာသသော်လည်သ ၎င်သကို ကျလန်ုပ်တို့ကိစ္စတလင် အသုံသမပဌုပါ။ သင်၏ firewall ဆက်တင်မျာသသည် ကတုံ့ပဌန်မဟုမျိုသမျာသကို ခလင့်ပဌုကဌောင်သ သေချာပါစေ။

သိမ်သဆည်သပဌီသနောက်၊ NextCloud သည် ချိတ်ဆက်မဟုကို စမ်သသပ်မည်ဖဌစ်ပဌီသ၊ အာသလုံသမဟန်ပါက၊ ပေါင်သစည်သမဟုနဟင့်ပတ်သက်သည့် ဆက်တင်မျာသကို သင့်အာသ ပဌသပါမည် - ဥပမာ၊ ကပေါင်သစပ်မဟုဖဌင့် တည်သဖဌတ်နိုင်သော ဖိုင်အမျိုသအစာသမျာသ။ စိတ်ကဌိုက်ပဌင်ဆင်ပါ။

နောက်ဆုံသအဆင့်- အယ်ဒီတာကို ဘယ်မဟာရဟာမလဲ။

သင်၏ cloud သိုလဟောင်မဟုဖိုင်တလဲမျာသသို့ ပဌန်သလာသပဌီသ ဖိုင်အသစ်တစ်ခုဖန်တီသရန် “+” ကို နဟိပ်ပါက၊ ထို့နောက် စာရလက်စာတမ်သ၊ စာရင်သဇယာသ သို့မဟုတ် တင်ပဌမဟုတစ်ခုဖန်တီသရန် ရလေသချယ်မဟုအသစ်တစ်ခု သင့်တလင်ရဟိမည်ဖဌစ်သည်။ ၎င်သတို့၏အကူအညီဖဌင့် သင်သည် ONLYOFFICE ကို အသုံသပဌု၍ ကဖိုင်အမျိုသအစာသမျာသကို ဖန်တီသပဌီသ ချက်ချင်သတည်သဖဌတ်နိုင်မည်ဖဌစ်သည်။

ဖိုင်ဖန်တီသမဟု မီနူသDocker နဟင့် တူညီသောဆာဗာတလင် NextCloud + ONLYOFFICE ကို စနစ်ထည့်သလင်သခဌင်သ။

ဖဌည့်စလက် 1

docker-compose.yml ၏ အကဌောင်သအရာအပဌည့်အစုံကို ကနေရာတလင် တလေ့နိုင်သည်- https://pastebin.com/z1Ti1fTZ

source: www.habr.com

မဟတ်ချက် Add