تعيين IP مخصص لا يعمل؟

مرحباً بالجميع،
مؤخرًا حاولت تثبيت Discourse على خادم Debian الخاص بي، وسار كل شيء على ما يرام باستثناء أنني لم أتمكن من الوصول إلى الموقع بسبب أنني حاولت تغيير المنفذ للوصول إليه، ولكن لم يظهر سوى Nginx، لذا اكتشفت المشكلة وحاولت تعيين عنوان IP مخصص مع شبكة مخصصة ستشير إلى شبكتي، لكنني لم أتمكن من الوصول إليها، واستمرت في إعطائي أخطاء، وهذا هو الخطأ الذي حصلت عليه:

./launcher start app --docker-args --network discourse_back --ip 192.168.1.4
x86_64 arch detected.
docker: Error response from daemon: network -i not found.
Your Docker installation is not working correctly

See: https://meta.discourse.org/t/docker-error-on-bootstrap/13657/18?u=sam

لقد جربت أيضًا قبل ذلك باستخدام hello-world ونجح الأمر:

docker run -it --network discourse_back --ip 192.168.1.4 hello-world

Hello from Docker!

. . .

هل لدى أي شخص فكرة عن كيفية إصلاح ذلك؟ شكرًا مقدمًا!

ربما جرب هذا:

 ./launcher start app --docker-args '--network discourse_back --ip 192.168.1.4'

إذًا، لقد تمكنت أخيرًا من تشغيله، ولكن الآن يظهر “Welcome to nginx” ولكنني أدخلت اسم المضيف الخاص بي “discourse.simonz.local” (وهو مكتوب أيضًا في app.yml عند

> DISCOURSE_HOSTNAME: discourse.simonz.local

هل فعلت شيئًا خاطئًا؟

لن يعمل خطاب الإنتاج بدون https.

ربما لديك خادم nginx آخر يعرض هذه الرسالة؟

يجب عليك إعداد تثبيت قياسي قبل تجربة شيء أكثر تعقيدًا.

إذا كنت تنوي أن تكون هذه النسخة متاحة على الإنترنت، فإن استخدام نطاق .local في app.yml سيتسبب في حدوث مشاكل. ربما يكون هذا شيئًا تنوي استخدامه فقط في المنزل أو للاختبار فقط، فقط اعتقدت أنه يستحق الذكر.

بافتراض أن شبكة Docker الخاصة بك تعمل بشكل صحيح، مما يجعل الحاوية قابلة للوصول على عنوان IP هذا من خارج الجهاز المضيف، ستحتاج أيضًا إلى DNS لتوجيه discourse.simonz.local إلى عنوان IP هذا.

يبدو أن ما يحدث هو أن النطاق يتم حله إلى الجهاز المضيف ولا تحدد المنفذ (على سبيل المثال، discourse.simonz.local:1234) عند محاولة الوصول إليه، لذلك يصل فقط إلى nginx بدلاً من حاوية docker.

إذا كنت تريد أن يكون Discourse متاحًا على منفذ مختلف، فربما لا تحتاج إليه على عنوان IP مختلف. إذا كنت تريده متاحًا على المنفذ القياسي، وكذلك nginx على المنفذ القياسي، فأنت بحاجة إلى DNS لتوجيهك إلى عنوان IP الصحيح أو تحتاج إلى nginx لعمل بروكسي لـ Discourse.

عادةً ما تعلن أنظمة .local عن نفسها بناءً على اسم المضيف الذي تم تكوينه. لا يحتاج Discourse حقًا إلى القيام بذلك عادةً، لذلك قد لا يكون لدى الحاوية أي شيء للقيام بذلك.

إذا كنت ترغب في اتباع مسار المنفذ القياسي، عنوان IP مختلف، DNS، فهذا خارج نطاق Discourse وسيتم إعداد ذلك اعتمادًا على عوامل مختلفة في شبكتك.

إذا كان هدفك هو مجرد توفير شيء ما في nginx بالإضافة إلى Discourse على نفس المضيف، فأنا أوصي بنهج البروكسي الموضح أعلاه. بينما لا يزال تثبيتًا غير مدعوم تقنيًا، إلا أنه إعداد أكثر شيوعًا وسيكون هناك المزيد من الأشخاص القادرين على المساعدة فيه.

سيعمل فقط على المنافذ القياسية.

لا ينبغي الوصول إليه عبر الإنترنت، بل يجب أن يكون في بيئة محلية لتجربته، والمنافذ صحيحة إلى حد كبير، وعنوان IP صحيح.

ألا يمكن أن يكون لدي شيئًا قيد التشغيل بالفعل على المنفذ 80 ولم أر خيارًا لتغيير عنوان IP الذي يجب استخدامه في التثبيت العادي؟

لقد تراجعت بالفعل عن هذا التغيير، ويعمل مرة أخرى على المنفذين العاديين 80 و 443

إذا كنت تعرف كيفية تشغيل وكيلك العكسي، فيمكنك تشغيله على اسم مضيف آخر. يتطلب HTTPS والمنافذ القياسية.

إذا كنت تقوم بإعداده محليًا مؤقتًا فقط لتجربته، فمن الأفضل تشغيل جهاز افتراضي بدلاً من محاولة تشغيله جنبًا إلى جنب مع nginx.

يمكن للجهاز الافتراضي الحصول على عنوان IP خاص به، ومن المحتمل أن يعطي نفسه عنوان .local تلقائيًا، ويمكنك إجراء تثبيت Discourse قياسي بداخله.

عند الانتهاء، تخلص من الجهاز الافتراضي ولن تحتاج إلى القلق بشأن التراجع عن أي تغييرات على nginx أو أي شيء آخر.

إعجاب واحد (1)

أنا أستخدم إصدار docker compose ويبدو أنه يأتي مع nginx وهو موجود بالفعل داخل جهاز افتراضي ولكني أحاول تشغيله بنفس الجهاز الافتراضي ولكن شيئًا واحدًا يخرج كـ ..1.3 (موقعي الآخر) والآخر كـ ..1.4 (discourse)

لقد أدركت للتو أنني قمت بالفعل بالتثبيت القياسي، وأريد فقط تغيير عنوان IP الذي يستجيب له. عنوان IP الافتراضي الخاص بي هو 192.168.1.3، ولكني أريد أن يستجيب إلى 192.168.1.4. كلا هذين العنوانين موجودان بالفعل في الجهاز ومُعدّان.

إذا كان الجهاز الافتراضي يحتوي على عنواني IP، فلن تحتاج إلى فعل أي شيء بعنوان IP الخاص بحاوية Docker، بل تحتاج فقط إلى توجيه جدار الحماية بحيث يذهب …1.3:80/443 إلى المضيف و …1.4:80/443 إلى حاوية Docker.

إذا كان هذا نظام Linux، فوفقًا لمعرفتي، فإن iptables و ufw هما الأكثر شيوعًا. ستحتاج على الأرجح إلى الرجوع إلى الوثائق أو السؤال في مجتمعاتهم للمساعدة في كيفية إعداد هذا التوجيه.

ما لم تكن بحاجة إلى اختبار هذا النوع من الإعداد حيث ترغب في تثبيت Discourse في النهاية، ما زلت أوصي بتشغيل جهاز افتراضي ثانٍ لهذه التجربة. أي تعقيدات تشغيل Discourse جنبًا إلى جنب مع برامج HTTP/HTTPS أخرى تختفي مع تشغيله داخل جهاز افتراضي خاص به.

حسنًا، شكرًا لك على أي حال، تمكنت من تشغيله ولكن لم أتلق أي رد، ربما أفسدت شيئًا ما، ولكن شكرًا على المساعدة، سأحاول مرة أخرى ربما سأحصل على نتيجة جديدة، شكرًا للجميع على المساعدة، أتمنى لكم يومًا رائعًا ^^