مرحبا يا هبر! أقدم إليكم ترجمة المقال
"إعداد NextCloud و ONLYOFFICE على خادم واحد مع Docker" .
من الصعب التقليل من فوائد حزم مجموعات المكاتب على الإنترنت مثل محرّر مستندات Google والتخزين السحابي في حياة الأشخاص الموجودين في مجال التكنولوجيا. أصبحت التقنيات واسعة الانتشار لدرجة أن Microsoft ، التي سيطرت على سوق تطبيقات المكاتب منذ فترة طويلة ، ركزت مؤخرًا على تطوير تطبيق Office 365 على الويب وإقناع المستخدمين بالانتقال إلى نموذج اشتراك باستخدام خدماتهم الخاصة. أولئك الذين يهتمون بعملية تثبيت وتكوين وحدات التخزين الخاصة بهم مدعوون للمشاركة.
منذ بعض الوقت ، قمنا بمراجعة حلول التخزين السحابي ومجموعة تطبيقات Office مفتوحة المصدر لتطبيقات الويب التي يمكن تنفيذها بسهولة للاستخدام في الشركات الصغيرة. الدافع الرئيسي لتخزين جميع الوثائق عبر الإنترنت هو تقليل حجم سير العمل الورقي وتنفيذ ممارسات العمل الإيجابية ، على الرغم من صغر حجم العمليات. الجانب الآخر للعملة هو أن استئجار خادم سحابي لتوفير هذه الخدمة أقل أمانًا من التخزين مباشرة في المبنى ، نظرًا لأنك لا تملك أي وسيلة لمراجعة الوصول الفعلي إلى الخادم أو حركة المرور الخاصة بك. وبالتالي ، فإن التشفير من طرف إلى طرف والبرامج مفتوحة المصدر مطلوبة أيضًا.
مع الأخذ في الاعتبار جميع المعلومات المتوفرة حول حلول المصادر المفتوحة ، وجدنا مشروعين حاليين (مع الالتزام في مستودعات بوابة على مدار الـ 12 شهرًا الماضية) مصممان للتخزين السحابي: NextCloud و OwnCloud ، ومجموعة المكتب النشطة الوحيدة ONLYOFFICE. كل من مرافق التخزين السحابية لها نفس الوظيفة تقريبًا ، وكان قرار اختيار NextCloud يعتمد على وجود أدلة على أنه يمكن دمجه مع ONLYOFFICE لتفاعل المستخدم المريح مع البرنامج. ومع ذلك ، عندما بدأنا نشر الخدمات ، أصبح نقص المعلومات حول تكامل الخدمات المذكورة أعلاه واضحًا. وجدنا 3 مقاطع فيديو تعليمية حول كيفية الدمج:
لم تتم الإجابة عن أي من مقاطع الفيديو الثلاثة على سؤال تثبيت خدمة مستند ONLYOFFICE على نفس الخادم الفعلي مثل NextCloud مع nginx المشترك. بدلاً من ذلك ، استخدموا تقنيات الفصل مثل استخدام منافذ منفصلة لخدمة مستند api. كان هناك خيار آخر مقترح وهو نشر خادم منفصل لخدمة المستندات مع التكوين اليدوي لمثيل nginx المضمن في خدمة المستندات لتثبيت مفتاح الوصول (مفتاح وصول معروف مسبقًا يؤكد الوصول إلى سحابة البيانات) وشهادات TLS. تم اعتبار الطرق المذكورة أعلاه غير آمنة وغير فعالة بما فيه الكفاية ، لذلك قمنا بدمج NextCloud و ONLYOFFICE و nginx الشائعة ، والتي تشارك الطلبات من خلال أسماء النطاقات ، باستخدام عامل ميناء - الإنشاء. فيما يلي معلومات تفصيلية حول كيفية القيام بذلك.
الخطوة 1: حاوية nginx
هذا تثبيت بسيط للغاية ، ولكن هذه الخطوة تتطلب العمل الأكثر لتكوين خادم الوكيل العكسي. أولاً ، أنشأنا تكوين عامل الإرساء لـ nginx: صورة ثابتة.
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 ، وتحديد مخزن الشهادات التي تم إنشاؤها كشهادات موقعة ذاتيًا أو باستخدام شهادة Let's Go Encrypt من / nginx / الشهادات. يجب أن يحتوي هذا الموقع على مجلدات لكل من 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: خدمة المستندات
نحتاج الآن إلى إضافة حاوية خدمة المستندات إلى عامل التحميل الخاص بنا. لا يوجد شيء خاص لتكوين هنا.
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 الخطوة 4: توصيل NextCloud و ONLYOFFICE
في هذه الخطوة ، ستحتاج إلى تثبيت تطبيق NextCloud ، الذي يربط وظيفة ONLYOFFICE. لنبدأ بلوحة تحكم التطبيق في الركن الأيمن العلوي من القائمة. ابحث عن تطبيق ONLYOFFICE (في قسم "Office & text" أو استخدم البحث) ، وقم بتثبيته وتنشيطه.
بعد ذلك ، انتقل إلى الإعدادات من خلال القائمة في الزاوية اليمنى العليا ، وسوف تحتاج إلى العثور على عنصر ONLYOFFICE في القائمة اليسرى. الذهاب الى ذلك. سوف تحتاج إلى تسجيل العناوين كما هو موضح أدناه.
يتم استخدام العنوان الأول للارتباط ببعض ملفات js و css مباشرةً من التطبيق الذي يتم تشغيله في المستعرض (وهذا هو السبب في أننا نحتاج إلى فتح الوصول إلى خدمة ONLYOFFICE عبر nginx). لا يتم استخدام المفتاح الخاص لأننا نثق في طبقة عزل Docker أكثر من مفتاح المصادقة الدائم. يتم استخدام العنوان الثالث بواسطة حاوية NextCloud للاتصال مباشرة بـ API ONLYOFFICE ، ويستخدم اسم المضيف الداخلي الافتراضي من Docker. حسنًا ، يتم استخدام الحقل الأخير حتى يتمكن ONLYOFFICE من تقديم طلبات مرة أخرى إلى واجهة برمجة تطبيقات NextCloud باستخدام عنوان IP خارجي أو عنوان Docker داخلي إذا كنت تستخدم شبكات Docker ، ولكن في حالتنا هذه ، لم يتم استخدام ذلك. تأكد من أن إعدادات جدار الحماية الخاص بك تسمح لهذه الأنواع من التفاعلات.
بعد الحفظ ، سيقوم NextCloud باختبار الاتصال ، وإذا كان كل شيء صحيحًا ، فسيظهر لك الإعدادات المتعلقة بالتكامل - على سبيل المثال ، ما هي أنواع الملفات التي يمكن تحريرها بواسطة هذا التكامل. تخصيص ما تراه مناسبا.
الخطوة الأخيرة: أين تبحث عن المحرر
إذا عدت إلى مجلدات التخزين السحابي وانقر على "+" لإنشاء ملف جديد ، فسيكون لك خيار جديد لإنشاء مستند أو جدول أو عرض تقديمي. من خلال مساعدتهم ، ستنشئ هذه الملفات وستتمكن من تعديلها على الفور باستخدام ONLYOFFICE.
إضافة 1
يمكن العثور على المحتويات الكاملة لـ docker-compose.yml هنا:
https://pastebin.com/z1Ti1fTZ