لا يمكنني تشغيل discourse مرة أخرى

مرحبًا:
أنا أدير منصة Discourse منذ أشهر دون أي مشاكل.
اضطررت إلى إعادة ضبط الخادم، والآن لا أستطيع إعادة تشغيل Discourse.

/var/discourse# ./launcher rebuild app

التأكد من أن المُشغّل محدّث

جاري جلب الأصل

المُشغّل محدّث

cat: 80:80: الملف أو الدليل غير موجود

cat: 443:443: الملف أو الدليل غير موجود

cd /pups && git pull && /pups/bin/pups --stdin

/usr/bin/docker: تنسيق مرجعي غير صالح: يجب أن يكون اسم المستودع بأحرف صغيرة.

راجع '/usr/bin/docker run --help'.

cat: cids/app_bootstrap.cid: الملف أو الدليل غير موجود

يتطلب الأمر "docker rm" حجة واحدة على الأقل.

راجع 'docker rm --help'.

الاستخدام: docker rm [خيارات] حاوية [حاوية...]

إزالة حاوية واحدة أو أكثر

rm: لا يمكن إزالة 'cids/app_bootstrap.cid': الملف أو الدليل غير موجود

** فشل التمهيد ** يرجى التمرير للأعلى والبحث عن رسائل الخطأ السابقة، قد يكون هناك أكثر من خطأ.

قد يساعدك ./discourse-doctor في تشخيص المشكلة.

الأوامر “run” و “bootstrap” تؤديان نفس الوظيفة :frowning:

يقول Doctor:

./discourse-doctor 
DISCOURSE DOCTOR الأحد 16 فبراير 11:59:15 CET 2020
نظام التشغيل: Linux XXXXXXXXXXXX 3.16.0-7-amd64 #1 SMP Debian 3.16.59-1 (2018-10-03) x86_64 GNU/Linux


تم العثور على containers/app.yml

==================== إعدادات YML ====================
awk: خيار غير صالح: --field-separator=:
DISCOURSE_HOSTNAME=
awk: خيار غير صالح: --field-separator=:
SMTP_ADDRESS=
awk: خيار غير صالح: --field-separator=:
DEVELOPER_EMAILS=
awk: خيار غير صالح: --field-separator=:
SMTP_PASSWORD=
awk: خيار غير صالح: --field-separator=:
SMTP_PORT=
awk: خيار غير صالح: --field-separator=:
SMTP_USER_NAME=
awk: خيار غير صالح: --field-separator=:
LETSENCRYPT_ACCOUNT_EMAIL=

==================== معلومات Docker ====================
إصدار Docker: Docker version 18.06.3-ce, build d7080c1

عمليات Docker (docker ps -a)

معرف الحاوية   الصورة       الأمر             تم إنشاؤه         الحالة           المنافذ        الأسماء

==================== مشكلة خطيرة!!!! ====================
التطبيق غير قيد التشغيل!
جاري محاولة إعادة البناء
==================== سجل إعادة البناء ====================
التأكد من أن المُشغّل محدّث
جاري جلب الأصل
المُشغّل محدّث
cat: 80:80: الملف أو الدليل غير موجود
cat: 443:443: الملف أو الدليل غير موجود
cd /pups && git pull && /pups/bin/pups --stdin
/usr/bin/docker: تنسيق مرجعي غير صالح: يجب أن يكون اسم المستودع بأحرف صغيرة.
راجع '/usr/bin/docker run --help'.
cat: cids/app_bootstrap.cid: الملف أو الدليل غير موجود
يتطلب الأمر "docker rm" حجة واحدة على الأقل.
راجع 'docker rm --help'.

الاستخدام: docker rm [خيارات] حاوية [حاوية...]

إزالة حاوية واحدة أو أكثر
rm: لا يمكن إزالة 'cids/app_bootstrap.cid': الملف أو الدليل غير موجود
** فشل التمهيد ** يرجى التمرير للأعلى والبحث عن رسائل الخطأ السابقة، قد يكون هناك أكثر من خطأ.
قد يساعدك ./discourse-doctor في تشخيص المشكلة.
==================== نهاية سجل إعادة البناء ====================
فشل إعادة بناء التطبيق.

جاري التحقق من اسم النطاق الخاص بك . . .

نجح الاتصال بالمنفذ 443.
يجب عليك إزالة أي إضافات غير قياسية وإعادة البناء.
جاري محاولة إعادة تشغيل الحاوية الحالية . . . 

cat: 80:80: الملف أو الدليل غير موجود
cat: 443:443: الملف أو الدليل غير موجود
+ /usr/bin/docker run --shm-size=512m -d --restart=always '#<NoMethodError: undefined method `[]'\'' for false:FalseClass>' '#<NoMethodError: undefined method `[]'\'' for false:FalseClass>' -e LANG=en_US.UTF-8 -e RAILS_ENV=production -e UNICORN_WORKERS=4 -e UNICORN_SIDEKIQS=1 -e RUBY_GLOBAL_METHOD_CACHE_SIZE=131072 -e RUBY_GC_HEAP_GROWTH_MAX_SLOTS=40000 -e RUBY_GC_HEAP_INIT_SLOTS=400000 -e RUBY_GC_HEAP_OLDOBJECT_LIMIT_FACTOR=1.5 -e DISCOURSE_DB_SOCKET=/var/run/postgresql -e DISCOURSE_DB_HOST= -e DISCOURSE_DB_PORT= -e LETSENCRYPT_DIR=/shared/letsencrypt -e DISCOURSE_HOSTNAME=XXXXXXXXXXXX -e DISCOURSE_DEVELOPER_EMAILS=XXXXXXXXXXXX -e DISCOURSE_SMTP_ADDRESS=XXXXXXXXXXXX -e DISCOURSE_SMTP_PORT=587 -e DISCOURSE_SMTP_USER_NAME=XXXXXXXXXXXX -e DISCOURSE_SMTP_PASSWORD=XXXXXXXXXXXX -e DISCOURSE_SMTP_ENABLE_START_TLS=false -e LETSENCRYPT_ACCOUNT_EMAIL=XXXXXXXXXXXX '#<NoMethodError: undefined method `[]'\'' for false:FalseClass>' '#<NoMethodError: undefined method `[]'\'' for false:FalseClass>' -h vps659319-app -e DOCKER_HOST_IP=172.17.0.1 --name app -t '#<NoMethodError: undefined method `[]'\'' for false:FalseClass>' '#<NoMethodError: undefined method `[]'\'' for false:FalseClass>' -v /var/discourse/shared/standalone:/shared -v /var/discourse/shared/standalone/log/var-log:/var/log --mac-address 02:62:5b:d4:b7:80 local_discourse/app /sbin/boot
/usr/bin/docker: تنسيق مرجعي غير صالح: يجب أن يكون اسم المستودع بأحرف صغيرة.
راجع '/usr/bin/docker run --help'.
فشل إعادة تشغيل الحاوية.


==================== الإضافات ====================
          - git clone https://github.com/discourse/docker_manager.git
          - git clone https://github.com/discourse/discourse-plugin-linkedin-auth.git
          - git clone https://github.com/discourse/discourse-oauth2-basic.git
          - git clone https://github.com/discourse/discourse-solved.git
          - git clone https://github.com/discourse/discourse-voting.git
          - git clone https://github.com/discourse/discourse-assign.git
          - git clone https://github.com/discourse/discourse-staff-notes.git
          - git clone https://github.com/discourse/discourse-checklist.git
          - git clone https://github.com/discourse/discourse-social-share.git
          - git clone https://github.com/rcfox/Discourse-LinkedIn-Sharing-Button.git
          - git clone https://github.com/BeXcellent/discourse-allowiframe.git

تحذير:
يبدو أن لديك إضافات غير رسمية.
إذا كنت تواجه مشاكل، يجب عليك تعطيلها ومحاولة إعادة البناء مرة أخرى.

راجع https://github.com/discourse/discourse/blob/master/lib/plugin/metadata.rb للحصول على القائمة الرسمية.

========================================
إصدار Discourse في : غير موجود
إصدار Discourse في localhost: غير موجود


==================== معلومات الذاكرة ====================
الذاكرة العشوائية (RAM) (ميجابايت): 2009

             المجموع       المستخدم     الحر       المشترك     المخازن المؤقتة     المخزن المؤقت
الذاكرة:          1962       1819        142         45         86        586
-/+ المخازن المؤقتة/المخزن المؤقت:       1146        815
مساحة التبادل:         2047        190       1857

==================== فحص مساحة القرص ====================
---------- مساحة قرص نظام التشغيل ----------
نظام الملفات      الحجم  المستخدم المتاح النسبة% مرفق على
/dev/sda1        20G  9.1G  9.7G  49% /

==================== معلومات القرص ====================

القرص /dev/sdb: 50 GiB, 53687091200 بايت، 104857600 قطاع
الوحدات: قطاعات بـ 1 * 512 = 512 بايت
حجم القطاع (المنطقي/الفيزيائي): 512 بايت / 512 بايت
حجم الإدخال/الإخراج (الحد الأدنى/الأفضل): 512 بايت / 512 بايت
القرص /dev/sda: 20 GiB, 21474836480 بايت، 41943040 قطاع
الوحدات: قطاعات بـ 1 * 512 = 512 بايت
حجم القطاع (المنطقي/الفيزيائي): 512 بايت / 512 بايت
حجم الإدخال/الإخراج (الحد الأدنى/الأفضل): 512 بايت / 512 بايت
نوع تسمية القرص: dos
معرف القرص: 0x7f0953e7

الجهاز     التمهيد البدء      النهاية  القطاعات الحجم المعرف النوع
/dev/sda1  *     2048 41941883 41939836  20G 83 Linux

==================== نهاية معلومات القرص ====================

==================== اختبار البريد ====================
لإجراء اختبار شامل، احصل على عنوان من http://www.mail-tester.com/
أو أرسل ببساطة رسالة اختبار إلى نفسك.
عنوان البريد الإلكتروني لاختبار البريد؟ ('n' لتخطي) []: XXXXXXXXXXXX
جاري إرسال البريد إلى XXXXXXXXXXXX . . . 
خطأ: الحاوية غير موجودة: app

استبدال: SMTP_PASSWORD
استبدال: LETSENCRYPT_ACCOUNT_EMAIL
استبدال: DEVELOPER_EMAILS
استبدال: DISCOURSE_DB_PASSWORD
استبدال: جاري إرسال البريد إلى

==================== انتهى! ====================

يمكنك فحص مخرجات هذا السكربت باستخدام 
LESS=-Ri less /tmp/discourse-debug.txt

لكن أولاً، تأكد من أنك تعرف الأوامر الثلاثة الأولى أدناه!!!

الأوامر التي يجب معرفتها عند عرض الملف بالأمر السابق (المسمى 'less'): 
q              -- الخروج
/error<ENTER>  -- البحث عن كلمة 'error'
n              -- البحث عن التكرار التالي
g              -- الانتقال إلى بداية الملف
f              -- الانتقال للأمام صفحة واحدة
b              -- العودة صفحة واحدة
G              -- الانتقال إلى نهاية الملف

تأكد من أن الإعدادات التي حددها Doctor مملوءة بشكل صحيح وليست فارغة.

على سبيل المثال: DISCOURSE_HOSTNAME: mydomain.com (لاحظ أن الفاصل يجب أن يكون : وليس =)

يمكنك التحقق من الصيغة باستخدام أداة التحقق من YML عبر الإنترنت: http://www.yamllint.com/

لم يتم تعديل هذا الملف على الإطلاق… إنه نفس الملف كما كان عندما كانت الأمور تعمل بشكل صحيح :frowning:
لقد راجعت سطرًا بسطر، ولا توجد أخطاء…

إليك الملف:

## هذا قالب حاوية Docker المستقلة الشاملة لـ Discourse
##
## بعد إجراء أي تعديلات على هذا الملف، يجب عليك إعادة البناء
## /var/discourse/launcher rebuild app
##
## كن *حذرًا جدًا* عند التعديل!
## ملفات YAML حساسة للغاية للأخطاء في المسافات البادئة أو المحاذاة!
## قم بزيارة http://www.yamllint.com/ للتحقق من صحة هذا الملف عند الحاجة

templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  - "templates/web.ratelimited.template.yml"
  - "templates/web.socketed.template.yml"
## قم بإلغاء التعليق عن هذين السطرين إذا كنت ترغب في إضافة Lets Encrypt (https)
  - "templates/web.ssl.template.yml"
  - "templates/web.letsencrypt.ssl.template.yml"

## ما هي منافذ TCP/IP التي يجب أن تعرضها هذه الحاوية؟
## إذا كنت تريد لـ Discourse مشاركة منفذ مع خادم ويب آخر مثل Apache أو nginx،
## راجع https://meta.discourse.org/t/17247 للحصول على التفاصيل
#expose:#
  - "80:80"   # http
  - "443:443" # https

params:
  db_default_text_search_config: "pg_catalog.english"

  ## قم بتعيين db_shared_buffers إلى أقصى 25% من إجمالي الذاكرة.
  ## سيتم تعيينه تلقائيًا بواسطة bootstrap بناءً على ذاكرة الوصول العشوائي المكتشفة، أو يمكنك تجاوز ذلك
  db_shared_buffers: "256MB"

  ## يمكن أن يحسن أداء الفرز، لكنه يزيد من استخدام الذاكرة لكل اتصال
  #db_work_mem: "40MB"

  ## أي إصدار Git يجب أن تستخدمه هذه الحاوية؟ (الافتراضي: tests-passed)
  #version: tests-passed

env:
  LANG: en_US.UTF-8
  # DISCOURSE_DEFAULT_LOCALE: en

  ## كم عدد طلبات الويب المتزامنة المدعومة؟ يعتمد على الذاكرة وأنوية المعالج.
  ## سيتم تعيينه تلقائيًا بواسطة bootstrap بناءً على وحدات المعالجة المركزية المكتشفة، أو يمكنك تجاوز ذلك
  UNICORN_WORKERS: 4

  ## TODO: اسم النطاق الذي ستستجيب له هذه النسخة من Discourse
  ## مطلوب. لن يعمل Discourse مع عنوان IP عاري.
  DISCOURSE_HOSTNAME: 'XXXXXXXXXXXX'

  ## قم بإلغاء التعليق إذا كنت تريد بدء الحاوية بنفس
  ## اسم المضيف (خيار -h) المحدد أعلاه (الافتراضي "$hostname-$config")
  #DOCKER_USE_HOSTNAME: true

  ## TODO: قائمة عناوين البريد الإلكتروني المفصولة بفواصل سيتم تعيينها كمسؤول ومطور
  ## عند التسجيل الأولي، مثال 'user1@example.com,user2@example.com'
  DISCOURSE_DEVELOPER_EMAILS: 'XXXXXXXXXXXX'

  ## TODO: خادم البريد SMTP المستخدم للتحقق من الحسابات الجديدة وإرسال الإشعارات
  ## مطلوب عنوان SMTP واسم المستخدم وكلمة المرور
  ## تحذير: قد تسبب علامة '#' في كلمة مرور SMTP مشاكل!
  DISCOURSE_SMTP_ADDRESS: XXXXXXXXXXXX
  DISCOURSE_SMTP_PORT: 587
  DISCOURSE_SMTP_USER_NAME: XXXXXXXXXXXX
  DISCOURSE_SMTP_PASSWORD: "XXXXXXXXXXXX"
  DISCOURSE_SMTP_ENABLE_START_TLS: false           # (اختياري، الافتراضي true)

  ## إذا قمت بإضافة قالب Lets Encrypt، قم بإلغاء التعليق أدناه للحصول على شهادة SSL مجانية
  LETSENCRYPT_ACCOUNT_EMAIL: XXXXXXXXXXXX

  ## عنوان CDN http أو https لهذه النسخة من Discourse (مُعد للاستخراج)
  ## راجع https://meta.discourse.org/t/14857 للحصول على التفاصيل
  #DISCOURSE_CDN_URL: https://discourse-cdn.example.com

## حاوية Docker غير ذات حالة؛ يتم تخزين جميع البيانات في /shared
volumes:
  - volume:
      host: /var/discourse/shared/standalone
      guest: /shared
  - volume:
      host: /var/discourse/shared/standalone/log/var-log
      guest: /var/log

## تذهب الإضافات هنا
## راجع https://meta.discourse.org/t/19157 للحصول على التفاصيل
hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/discourse/docker_manager.git
          - git clone https://github.com/discourse/discourse-plugin-linkedin-auth.git
          - git clone https://github.com/discourse/discourse-oauth2-basic.git
          - git clone https://github.com/discourse/discourse-solved.git
          - git clone https://github.com/discourse/discourse-voting.git
          - git clone https://github.com/discourse/discourse-assign.git
          - git clone https://github.com/discourse/discourse-staff-notes.git
          - git clone https://github.com/discourse/discourse-checklist.git
          - git clone https://github.com/discourse/discourse-social-share.git
          - git clone https://github.com/rcfox/Discourse-LinkedIn-Sharing-Button.git
          - git clone https://github.com/BeXcellent/discourse-allowiframe.git

## أي أوامر مخصصة للتشغيل بعد البناء
run:
  - exec: echo "Beginning of custom commands"
  ## إذا كنت تريد تعيين عنوان البريد الإلكتروني 'From' لتسجيلك الأول، قم بإلغاء التعليق وتغيير:
  ## بعد الحصول على أول بريد إلكتروني للتسجيل، قم بإعادة التعليق على السطر. يجب تشغيله مرة واحدة فقط.
  #- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
  - exec: echo "End of custom commands"

جرب حذف أحرف ' في اسم المضيف ورسائل البريد الإلكتروني للمطورين

'XXXXXXXXXXXX'

لماذا تم تعليق الأمر؟

#expose:#
  - "80:80"   # http
  - "443:443" # https

يشرح هذا مخرجات الخطأ:

cat: 80:80: No such file or directory
cat: 443:443: No such file or directory

لكنني أحتاج إلى أن تظل تلك الأسطر موجودة!

اقرأ ما قلته. لقد أضفت #.

يجب أن يكون:

expose:
  - "80:80"   # http
  - "443:443" # https

لم أجعل الأمر بهذه البساطة، لأن شخصًا ما يحتاج إلى التفكير في كيفية حدوث مثل هذه الأخطاء إذا كان هذا صحيحًا؟