Docker کے ساتھ ایک ہی سرور پر NextCloud + ONLYOFFICE ترتیب دینا

ارے حبر! مضمون کا ترجمہ آپ کی توجہ میں پیش کرتا ہوں۔ "Docker کے ساتھ ایک ہی سرور پر نیکسٹ کلاؤڈ اور ONLYOFFICE ترتیب دینا".

ٹیک پر مبنی لوگوں کی زندگیوں میں Google Docs اور کلاؤڈ اسٹوریج جیسے آن لائن آفس سویٹس کی قدر کو کم کرنا مشکل ہے۔ ٹکنالوجی اس قدر پھیل چکی ہے کہ مائیکروسافٹ، جس نے آفس ایپلی کیشنز کی مارکیٹ پر طویل عرصے سے غلبہ حاصل کر رکھا ہے، نے حال ہی میں Office 365 ویب ایپلیکیشن تیار کرنے اور صارفین کو اپنی خدمات استعمال کرنے کے لیے سبسکرپشن ماڈل پر جانے کے لیے قائل کرنے پر توجہ مرکوز کی ہے۔ ہم ان لوگوں کو مدعو کرتے ہیں جو بلی کے نیچے اپنے اسٹوریج کو انسٹال کرنے اور ترتیب دینے کے عمل میں دلچسپی رکھتے ہیں۔

کچھ عرصہ پہلے ہم نے کلاؤڈ اسٹوریج سلوشنز اور اوپن سورس ویب آفس سویٹس کو دیکھا جنہیں آسانی سے مائیکرو انٹرپرائز میں استعمال کے لیے تعینات کیا جا سکتا ہے۔ تمام دستاویزات کو آن لائن رکھنے کا بنیادی محرک کاغذی کارروائی کو کم سے کم رکھنا اور لین دین کے کم حجم کے باوجود اچھے کاروباری طریقوں کو نافذ کرنا ہے۔ سکے کا دوسرا پہلو یہ ہے کہ اس سروس کو فراہم کرنے کے لیے کلاؤڈ سرور کو کرایہ پر لینا اسے براہ راست انٹرپرائز کے احاطے میں اسٹور کرنے سے کم محفوظ ہے، کیونکہ آپ کے پاس اپنے سرور یا ٹریفک تک جسمانی رسائی کا آڈٹ کرنے کا کوئی ذریعہ نہیں ہے۔ اس لیے اینڈ ٹو اینڈ انکرپشن اور اوپن سورس سافٹ ویئر کی بھی ضرورت ہے۔

اوپن سورس حل کے بارے میں تمام دستیاب معلومات کو مدنظر رکھتے ہوئے، ہمیں کلاؤڈ اسٹوریج کے لیے تیار کردہ دو فعال پروجیکٹس (گٹ ریپوزٹری میں پچھلے 12 مہینوں سے کمٹ کے ساتھ) ملے: نیکسٹ کلاؤڈ اور اوون کلاؤڈ، اور واحد فعال ONLYOFFICE آفس سوٹ۔ کلاؤڈ سٹوریج کے دونوں ٹولز میں تقریباً ایک جیسی فعالیت ہے، اور نیکسٹ کلاؤڈ کو منتخب کرنے کا فیصلہ ان شواہد کی موجودگی پر مبنی تھا کہ اسے سافٹ ویئر کے ساتھ صارف کے آرام دہ تعامل کے لیے ONLYOFFICE کے ساتھ مربوط کیا جا سکتا ہے۔ تاہم، جب ہم نے خدمات کی تعیناتی شروع کی، تو مذکورہ خدمات کو مربوط کرنے کے بارے میں معلومات کی کمی واضح ہوگئی۔ ہمیں 3 ٹیوٹوریل ویڈیوز ملے ہیں کہ کیسے انٹیگریٹ کیا جائے:

تینوں ویڈیوز میں سے کسی نے بھی مشترکہ nginx کے ساتھ نیکسٹ کلاؤڈ کی طرح ایک ہی فزیکل سرور پر ONLYOFFICE دستاویز سروس انسٹال کرنے کے سوال کا جواب نہیں دیا۔ اس کے بجائے، انہوں نے علیحدگی کی تکنیکوں کا استعمال کیا جیسے دستاویز سروس API کے لیے الگ پورٹس کا استعمال۔ ایک اور تجویز کردہ آپشن دستاویز سروس کے لیے علیحدہ سرور تعینات کرنا تھا، ایک رسائی کلید (ایک پہلے سے معلوم ایکسیس کلید جو ڈیٹا کلاؤڈ تک رسائی کے حق کی تصدیق کرتی ہے) اور TLS سرٹیفکیٹس کو انسٹال کرنے کے لیے دستاویز سروس میں بنائے گئے nginx مثال کو دستی طور پر ترتیب دینا تھا۔ مندرجہ بالا طریقوں کو محفوظ نہیں سمجھا جاتا تھا اور کافی موثر نہیں تھا، اس لیے ہم نے نیکسٹ کلاؤڈ، ONLYOFFICE اور ایک عام nginx کو مربوط کیا، جو ڈوکر کمپوز کا استعمال کرتے ہوئے ڈومین ناموں سے درخواستوں کو الگ کرتا ہے۔ اسے کیسے کرنا ہے اس کے بارے میں مرحلہ وار معلومات یہاں ہے۔

مرحلہ 1: nginx کنٹینر

یہ ایک بہت ہی آسان سیٹ اپ ہے، لیکن اس مرحلے میں ریورس پراکسی سرور کو کنفیگر کرنے کے لیے سب سے زیادہ کام کی ضرورت ہے۔ ہم نے پہلے nginx: stable image کے لیے 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 کا استعمال کرتے ہوئے تیار کردہ سرٹیفکیٹس کے لیے ایک اسٹور کی وضاحت کرتا ہے۔ اس مقام میں آفس.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: نیکسٹ کلاؤڈ

سب سے پہلے، نئی خدمات شامل کریں:

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 آپ کو نیکسٹ کلاؤڈ فرنٹ اینڈ پر ری ڈائریکٹ کرنا شروع کر دے گا، جو ڈیفالٹ کنفیگریشن پیج ہے۔ آپ کو اپنے پہلے انتظامی صارف کے لیے صارف نام اور پاس ورڈ اور docker-compose.yml میں فراہم کردہ ڈیٹا بیس کی اسناد درج کرنے کی ضرورت ہوگی، سیٹ اپ مکمل ہونے کے بعد، آپ لاگ ان کرنے کے قابل ہو جائیں گے۔ ہمارے معاملے میں، انتظار میں تقریباً ایک منٹ لگ گیا اور اس سے پہلے کہ ہم کلاؤڈ سروس میں لاگ ان کر سکیں لاگ ان پیج کو ایک اضافی ریفریش کی ضرورت ہے۔

نیکسٹ کلاؤڈ سروس کی ترتیبات کی ونڈوDocker کے ساتھ ایک ہی سرور پر NextCloud + ONLYOFFICE ترتیب دینا

مرحلہ 4: NextCloud اور ONLYOFFICE کو جوڑنا

اس مرحلے پر، آپ کو نیکسٹ کلاؤڈ کے لیے ایپلیکیشن انسٹال کرنے کی ضرورت ہوگی، جو ONLYOFFICE فعالیت کو مربوط کرتی ہے۔ آئیے مینو کے اوپری دائیں کونے میں ایپلیکیشن کنٹرول پینل کے ساتھ شروع کریں۔ ONLYOFFICE ایپ تلاش کریں (آفس ​​اور ٹیکسٹ کے تحت یا تلاش کا استعمال کرتے ہوئے)، اسے انسٹال اور فعال کریں۔

اس کے بعد اوپری دائیں کونے میں مینو کے ذریعے ترتیبات کی طرف جائیں اور آپ کو بائیں مینو میں ONLYOFFICE آئٹم مل جائے۔ اس میں جاؤ۔ آپ کو پتے رجسٹر کرنے کی ضرورت ہوگی جیسا کہ ذیل میں بتایا گیا ہے۔

انضمام کی درخواست کی ترتیباتDocker کے ساتھ ایک ہی سرور پر NextCloud + ONLYOFFICE ترتیب دینا

پہلا پتہ براؤزر میں چلنے والی ایپلیکیشن سے براہ راست کچھ js اور css فائلوں کو لنک کرنے کے لیے استعمال کیا جاتا ہے (یہ وہی ہے جو ہمیں nginx کے ذریعے ONLYOFFICE سروس تک رسائی کھولنے کی ضرورت ہے)۔ خفیہ کلید استعمال نہیں کی جاتی ہے کیونکہ ہم مستقل تصدیقی کلید سے زیادہ ڈوکر تنہائی پرت پر بھروسہ کرتے ہیں۔ تیسرا پتہ نیکسٹ کلاؤڈ کنٹینر کے ذریعہ ONLYOFFICE API سے براہ راست جڑنے کے لئے استعمال کیا جاتا ہے، اور یہ Docker سے ڈیفالٹ اندرونی میزبان نام استعمال کرتا ہے۔ ٹھیک ہے، آخری فیلڈ کا استعمال کیا جاتا ہے تاکہ ONLYOFFICE کسی بیرونی IP ایڈریس یا اندرونی Docker ایڈریس کا استعمال کرتے ہوئے NextCloud API پر واپس درخواستیں کر سکے اگر آپ Docker نیٹ ورک استعمال کر رہے ہیں، لیکن یہ ہمارے معاملے میں استعمال نہیں ہوتا ہے۔ یقینی بنائیں کہ آپ کی فائر وال کی ترتیبات اس قسم کے تعامل کی اجازت دیتی ہیں۔

محفوظ کرنے کے بعد، نیکسٹ کلاؤڈ کنکشن کی جانچ کرے گا اور، اگر سب کچھ درست ہے، تو آپ کو انضمام سے متعلق ترتیبات دکھائے گا - مثال کے طور پر، اس انضمام کے ذریعے کن فائلوں میں ترمیم کی جا سکتی ہے۔ اپنی مرضی کے مطابق بنائیں جیسا کہ آپ مناسب دیکھتے ہیں۔

آخری مرحلہ: ایڈیٹر کو کہاں تلاش کرنا ہے۔

اگر آپ اپنے کلاؤڈ اسٹوریج فولڈرز پر واپس جاتے ہیں اور ایک نئی فائل بنانے کے لیے "+" پر کلک کرتے ہیں، تو آپ کے پاس دستاویز، اسپریڈ شیٹ یا پریزنٹیشن بنانے کا ایک نیا آپشن ہوگا۔ ان کی مدد سے، آپ ONLYOFFICE کا استعمال کرتے ہوئے اس قسم کی فائلیں بنائیں گے اور فوری طور پر ان میں ترمیم کر سکیں گے۔

فائل بنانے کا مینوDocker کے ساتھ ایک ہی سرور پر NextCloud + ONLYOFFICE ترتیب دینا

ضمیمہ 1

docker-compose.yml کا مکمل مواد یہاں پایا جا سکتا ہے: https://pastebin.com/z1Ti1fTZ

ماخذ: www.habr.com

نیا تبصرہ شامل کریں