راه اندازی NextCloud + ONLYOFFICE در همان سرور با Docker

هی هابر! ترجمه مقاله را مورد توجه شما قرار می دهم "تنظیم NextCloud و ONLYOFFICE روی یک سرور واحد با Docker".

دست کم گرفتن ارزش مجموعه‌های اداری آنلاین مانند Google Docs و فضای ذخیره‌سازی ابری در زندگی افراد فناوری‌گرا سخت است. فناوری آنقدر گسترده شده است که حتی مایکروسافت که مدت هاست بر بازار برنامه های اداری تسلط داشته است، اخیراً بر توسعه برنامه وب آفیس 365 و متقاعد کردن کاربران برای تغییر به یک مدل اشتراک برای استفاده از خدمات خود متمرکز شده است. ما از علاقه مندان به مراحل نصب و پیکربندی فضای ذخیره سازی خود تحت cat دعوت می کنیم.

مدتی پیش راه‌حل‌های ذخیره‌سازی ابری و مجموعه‌های اداری وب منبع باز را بررسی کردیم که می‌توانستند به راحتی برای استفاده در یک شرکت کوچک مستقر شوند. انگیزه اصلی برای آنلاین نگه داشتن تمام اسناد، به حداقل رساندن کاغذبازی و اجرای شیوه های تجاری خوب با وجود حجم کم تراکنش ها است. روی دیگر سکه این است که اجاره یک سرور ابری برای ارائه این سرویس، امنیت کمتری نسبت به ذخیره مستقیم آن در محل شرکت دارد، زیرا شما هیچ وسیله ای برای بررسی دسترسی فیزیکی به سرور یا ترافیک خود ندارید. بنابراین، رمزگذاری سرتاسر و نرم افزار منبع باز نیز مورد نیاز است.

با در نظر گرفتن تمام اطلاعات موجود در مورد راه حل های منبع باز، دو پروژه فعال (با تعهدات در مخزن git در 12 ماه گذشته) که برای ذخیره سازی ابری توسعه یافته اند پیدا کردیم: NextCloud و OwnCloud و تنها مجموعه اداری فعال ONLYOFFICE. هر دو ابزار ذخیره سازی ابری تقریباً عملکرد یکسانی دارند و تصمیم برای انتخاب NextCloud بر اساس شواهدی مبنی بر ادغام آن با ONLYOFFICE برای تعامل راحت کاربر با نرم افزار است. با این حال، زمانی که ما شروع به استقرار سرویس ها کردیم، کمبود اطلاعات در مورد یکپارچه سازی سرویس های فوق آشکار شد. ما 3 فیلم آموزشی در مورد نحوه ادغام پیدا کردیم:

هیچ یک از سه ویدیو به سؤال نصب سرویس اسناد ONLYOFFICE روی همان سرور فیزیکی NextCloud با nginx مشترک پاسخ نداد. در عوض، آنها از تکنیک های جداسازی مانند استفاده از پورت های جداگانه برای api سرویس اسناد استفاده کردند. پیشنهاد دیگر این بود که یک سرور جداگانه برای Document Service مستقر کنید و نمونه nginx را به صورت دستی پیکربندی کنید تا یک کلید دسترسی (کلید دسترسی از قبل شناخته شده که حق دسترسی به ابر داده را تأیید می کند) و گواهی های TLS نصب کند. رویکردهای فوق امن و به اندازه کافی مؤثر نبودند، بنابراین NextCloud، ONLYOFFICE و یک nginx مشترک را ادغام کردیم که درخواست‌ها را بر اساس نام دامنه با استفاده از docker-compose جدا می‌کند. در اینجا اطلاعات گام به گام در مورد نحوه انجام آن وجود دارد.

مرحله 1: ظرف nginx

این یک راه اندازی بسیار ساده است، اما این مرحله بیشترین کار را برای پیکربندی سرور پروکسی معکوس نیاز دارد. ما ابتدا پیکربندی docker-compose را برای تصویر nginx:stable ایجاد کردیم.

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 ترسیم می‌کند، و یک فروشگاه برای گواهی‌های تولید شده به عنوان گواهی‌های خودامضا یا با استفاده از certbot Let's encrypt در /nginx/certificates تعریف می‌کند. این مکان باید شامل پوشه‌هایی برای office.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: 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راه اندازی NextCloud + ONLYOFFICE در همان سرور با Docker

مرحله 4: اتصال NextCloud و ONLYOFFICE

در این مرحله باید اپلیکیشن NextCloud را نصب کنید که قابلیت ONLYOFFICE را به هم متصل می کند. بیایید با کنترل پنل برنامه در گوشه سمت راست بالای منو شروع کنیم. برنامه ONLYOFFICE را (در زیر Office & متن یا با استفاده از جستجو) پیدا کنید، آن را نصب و فعال کنید.

پس از آن از طریق منوی گوشه سمت راست بالا به تنظیمات بروید و باید مورد ONLYOFFICE را در منوی سمت چپ پیدا کنید. برو داخلش شما باید آدرس های زیر را ثبت کنید.

تنظیمات برنامه یکپارچه سازیراه اندازی NextCloud + ONLYOFFICE در همان سرور با Docker

آدرس اول برای پیوند مستقیم به برخی از فایل های js و css از برنامه در حال اجرا در مرورگر استفاده می شود (این همان چیزی است که برای باز کردن دسترسی به سرویس ONLYOFFICE از طریق nginx نیاز داریم). کلید مخفی استفاده نمی شود زیرا ما به لایه ایزوله Docker بیشتر از کلید تأیید اعتبار دائمی اعتماد داریم. آدرس سوم توسط ظرف NextCloud برای اتصال مستقیم به API ONLYOFFICE استفاده می شود و از نام میزبان داخلی پیش فرض Docker استفاده می کند. خوب، آخرین فیلد استفاده می‌شود تا ONLYOFFICE بتواند با استفاده از یک آدرس IP خارجی یا یک آدرس Docker داخلی، درخواست‌هایی را به NextCloud API ارسال کند، اگر از شبکه‌های Docker استفاده می‌کنید، اما این مورد در مورد ما استفاده نمی‌شود. مطمئن شوید که تنظیمات فایروال شما اجازه این نوع تعاملات را می دهد.

پس از ذخیره، NextCloud اتصال را آزمایش می کند و اگر همه چیز درست باشد، تنظیمات مربوط به ادغام را به شما نشان می دهد - به عنوان مثال، چه نوع فایل هایی را می توان با این ادغام ویرایش کرد. به دلخواه خود را سفارشی کنید.

مرحله آخر: کجا می توان ویرایشگر را پیدا کرد

اگر به پوشه‌های ذخیره‌سازی ابری خود برگردید و برای ایجاد یک فایل جدید روی "+" کلیک کنید، گزینه جدیدی برای ایجاد یک سند، صفحه گسترده یا ارائه خواهید داشت. با کمک آنها، می توانید این نوع فایل ها را با استفاده از ONLYOFFICE ایجاد کنید و بلافاصله قادر به ویرایش آن ها باشید.

منوی ایجاد فایلراه اندازی NextCloud + ONLYOFFICE در همان سرور با Docker

مکمل 1

محتوای کامل docker-compose.yml را می توانید در اینجا بیابید: https://pastebin.com/z1Ti1fTZ

منبع: www.habr.com

اضافه کردن نظر