कंटेनर से चलाना (Docker / Podman)

Marinara Engine को Docker या Podman के साथ कंटेनर में चलाएँ। कंटेनर यानी एक पैकेज, जिसमें ऐप और उसे चलने के लिए ज़रूरी सारी चीज़ें होती हैं, इसलिए आपको Node.js इंस्टॉल नहीं करना पड़ता। कम से कम सेटअप में Marinara चलाना हो, तो यहीं से शुरू करें।

शुरू करने से पहले

जिस कंप्यूटर पर Marinara चलेगा, उस पर इनमें से कोई एक इंस्टॉल करें:

नीचे इस्तेमाल हुए शब्द:

आधिकारिक इमेज ghcr.io/pasta-devs/marinara-engine पर हैं।

Marinara शुरू करना

प्रोजेक्ट में इस्तेमाल के लिए तैयार docker-compose.yml फ़ाइल है। Compose, Docker का वह हिस्सा है जो इस फ़ाइल को पढ़कर कंटेनर शुरू करता है। यही सुझाया गया तरीका है।

  1. टर्मिनल खोलें, यानी वह विंडो जिसमें कमांड टाइप करते हैं। अगर आपके पास Marinara का चेकआउट पहले से है, तो टर्मिनल उसी फ़ोल्डर में खोलें और अगले दो स्टेप छोड़ दें।
  2. प्रोजेक्ट की फ़ाइलें डाउनलोड करें।
   git clone https://github.com/Pasta-Devs/Marinara-Engine.git
  1. नया फ़ोल्डर खोलें।
   cd Marinara-Engine
  1. कंटेनर को बैकग्राउंड में शुरू करें।
   docker compose up -d

पहली बार चलाने पर ghcr.io/pasta-devs/marinara-engine:latest इमेज डाउनलोड होती है, जिसमें कुछ मिनट लग सकते हैं। काम पूरा होने पर टर्मिनल कंटेनर को Started दिखाता है।

  1. अपने ब्राउज़र में http://127.0.0.1:7860 खोलें। Marinara की होम स्क्रीन लोड हो जाती है।

अगर यह काम नहीं किया: हो सकता है कोई दूसरा प्रोग्राम पोर्ट 7860 इस्तेमाल कर रहा हो। कोई खाली पोर्ट चुनें, जैसे 8080। docker-compose.yml वाले फ़ोल्डर में ही .env नाम की फ़ाइल बनाएँ, उसमें PORT=8080 पंक्ति लिखें, फिर docker compose up -d दोबारा चलाएँ। Compose यह फ़ाइल हर बार पढ़ता है, इसलिए बाद के अपडेट में भी नया पोर्ट बना रहता है। फिर http://127.0.0.1:8080 खोलें। बाकी हल समस्या-समाधान में हैं।

Marinara बंद करना

यह कमांड उसी फ़ोल्डर से चलाएँ। यह कंटेनर को रोककर हटा देती है। आपका डेटा वॉल्यूम में बना रहता है।

docker compose down

Podman के साथ podman compose down इस्तेमाल करें।

आपका डेटा कहाँ रखा जाता है

Marinara आपकी चैट, कैरेक्टर, अपलोड, फ़ॉन्ट और डिफ़ॉल्ट बैकग्राउंड को marinara-data नाम के Compose वॉल्यूम में सादी फ़ाइलों के रूप में सेव करता है। Compose नाम के आगे प्रोजेक्ट फ़ोल्डर का नाम जोड़ देता है, इसलिए असली नाम PROJECT_marinara-data जैसा दिखता है। सही नाम और उसकी जगह पता करने के लिए:

docker volume ls --filter name=marinara-data
docker volume inspect PROJECT_marinara-data

PROJECT_marinara-data की जगह वह नाम लिखें जो पहली कमांड ने दिखाया।

पहली बार शुरू होने पर Marinara वॉल्यूम के अंदर /app/data/.env पर एक खाली सेटिंग्स फ़ाइल भी बना देता है। सर्वर की सेटिंग्स वहीं जोड़ें। वे रीस्टार्ट और इमेज अपडेट के बाद भी बनी रहती हैं। देखें सर्वर कॉन्फ़िगरेशन रेफ़रेंस।

कंटेनर हर बार शुरू होते समय डेटा फ़ोल्डर की ओनरशिप ठीक करता है, ताकि ऐप उसमें लिख सके। वह रूट के तौर पर शुरू होता है, ओनरशिप ठीक करता है, फिर नॉन-रूट यूज़र पर चला जाता है। यह वॉल्यूम पर भी काम करता है और आपके कंप्यूटर से माउंट किए गए फ़ोल्डर पर भी।

Marinara को दूसरे डिवाइस से खोलना

डिफ़ॉल्ट रूप से Compose सिर्फ़ इसी कंप्यूटर को Marinara तक पहुँचने देता है। इसे फ़ोन या किसी दूसरे कंप्यूटर पर खोलने के लिए पोर्ट को सभी इंटरफ़ेस पर पब्लिश करना होगा, और उससे पहले लॉगिन सेट करना होगा। Marinara को लॉगिन के बिना कभी अपने नेटवर्क पर न खोलें।

Docker Desktop, OrbStack और rootless Docker (रूट के बिना चलने वाला Docker) हर डिवाइस को एक ही गेटवे पते के रूप में दिखाते हैं। लॉगिन के बिना, सभी इंटरफ़ेस पर पब्लिश किया गया पोर्ट हर किसी को अंदर आने देता है। लॉगिन सेट होते ही इस कंप्यूटर से भी लॉगिन माँगा जाता है। देखें Tailscale और Docker बायपास।

  1. Marinara फ़ोल्डर में मौजूद docker-compose.yml को किसी टेक्स्ट एडिटर में खोलें।
  2. ports: लिस्ट में से 127.0.0.1: हटा दें।
   ports:
     - "${PORT:-7860}:7860"
  1. environment: लिस्ट में एक एडमिन सीक्रेट जोड़ें। अपनी खुद की लंबी, रैंडम वैल्यू इस्तेमाल करें।
   environment:
     - ADMIN_SECRET=another-long-random-value
  1. उसी लिस्ट में एक लॉगिन जोड़ें। अपना यूज़रनेम और एक लंबा, रैंडम पासवर्ड इस्तेमाल करें।
   - BASIC_AUTH_USER=your-username
   - BASIC_AUTH_PASS=another-long-random-password
  1. फ़ाइल सेव करें और कंटेनर रीस्टार्ट करें।
   docker compose up -d
  1. दूसरे डिवाइस पर http://YOUR_COMPUTER_IP:7860 खोलें। अगर आपने PORT सेट किया है, तो वही पोर्ट इस्तेमाल करें। पेज आपका लॉगिन माँगता है।

अगर आप BASIC_AUTH_USER और BASIC_AUTH_PASS छोड़ देते हैं, तो पेज इसकी जगह एक बार इस्तेमाल होने वाला सेटअप कोड माँगता है। उसे लॉग में ढूँढें, फिर पेज पर नए यूज़रनेम और पासवर्ड के साथ टाइप करें।

docker logs <container> 2>&1 | grep "setup code"

ऐप का लॉगिन बाद में किसी साइन इन किए हुए ब्राउज़र में Settings → Advanced → Access (सेटिंग्स → एडवांस्ड → एक्सेस) से बदल सकते हैं। पासवर्ड भूल जाएँ, तो docker exec <container> node scripts/reset-login.mjs चलाएँ। यह कमांड BASIC_AUTH_USER और BASIC_AUTH_PASS से बना लॉगिन नहीं बदलती। उन्हें compose फ़ाइल में बदलें और कंटेनर दोबारा बनाएँ।

Docker Desktop, OrbStack और rootless Docker पर लॉगिन Settings में सेट करने के लिए इसी कंप्यूटर पर Marinara को http://localhost:7860 पर खोलें। वहाँ IP अलाउलिस्ट डिवाइस में फ़र्क नहीं कर पाती, इसलिए लॉगिन इस्तेमाल करें। एक्सेस सीमित करने के दूसरे तरीकों के लिए, और एडमिन सीक्रेट क्या करता है यह जानने के लिए, देखें रिमोट एक्सेस: लॉगिन और IP अलाउलिस्ट।

Marinara अपडेट करना

कंटेनर खुद अपडेट नहीं होते। पहले बैकअप बनाएँ (देखें Marinara का बैकअप और रिस्टोर), फिर नई इमेज पुल करके रीस्टार्ट करें। यह कमांड उस फ़ोल्डर से चलाएँ जिसमें docker-compose.yml है:

docker compose pull && docker compose up -d

Podman के साथ इसकी जगह podman compose इस्तेमाल करें। ऐप में Settings → Advanced → Updates → Check for Updates (सेटिंग्स → एडवांस्ड → अपडेट → अपडेट जाँचें) इमेज टैग और यही कमांड दिखाता है। कंटेनर के लिए ऐप खुद अपडेट लागू नहीं कर सकता।

किसी पुराने रिलीज़ पर वापस जाने के लिए docker-compose.yml की image: वाली पंक्ति में उसका टैग लिखें, फिर docker compose up -d चलाएँ। उससे पहले पुराने वर्ज़न पर वापस जाना पढ़ें। नए बिल्ड का सेव किया हुआ डेटा पुराने बिल्ड नहीं खोल सकते।

इमेज टैग चुनना

टैगयह क्या है
latestस्थिर रिलीज़। docker-compose.yml यही इस्तेमाल करती है।
X.Y.Zएक तय वर्ज़न, जैसे ghcr.io/pasta-devs/marinara-engine:2.5.1।
stagingबिना रिलीज़ हुए कोड का अस्थिर टेस्ट बिल्ड। यह टूट सकता है, और हो सकता है कि आप अपना डेटा वापस किसी स्थिर बिल्ड पर न ले जा पाएँ।
liteएक छोटी इमेज। नीचे देखें।
X.Y.Z-litelite इमेज का एक तय वर्ज़न।

अगर आप staging चलाते हैं, तो अलग वॉल्यूम इस्तेमाल करें, ताकि यह आपके स्थिर डेटा में बदलाव न कर सके:

docker run -d --name marinara-staging \
  -p 127.0.0.1:7860:7860 \
  -v marinara-staging-data:/app/data \
  ghcr.io/pasta-devs/marinara-engine:staging

lite इमेज

lite इमेज Wolfi पर बनी है और उसका डाउनलोड छोटा है। Wolfi कंटेनर के लिए बना एक बेहद हल्का Linux बेस है। इसमें वे सुविधाएँ नहीं हैं जिनके लिए बड़ी लोकल फ़ाइलें चाहिए:

lite में नहीं हैक्या नहीं मिलेगा
बिल्ट-इन मॉडलअपने ही हार्डवेयर पर AI मॉडल नहीं चला सकते।
लोकल एम्बेडिंग मॉडलडिवाइस पर टेक्स्ट एम्बेडिंग नहीं बनतीं।
Memory Recall (सिमैंटिक सर्च)यह लोकल एम्बेडिंग मॉडल पर निर्भर है।
लोकल Whisper वॉइस इनपुटConversation कॉल के लिए स्पीच-टू-टेक्स्ट नहीं रहता।
अवतार का मूड पढ़ने वाला मॉडल2D और 3D Avatars भाव पहचानने वाले छोटे लोकल मॉडल की जगह शब्दों की एक लिस्ट से चेहरे चुनते हैं।

बाकी सब काम करता है: चैट, रोलप्ले, Game Mode, एजेंट, लोरबुक, कैरेक्टर और रिमोट AI सेवाएँ। AI सुविधाओं के लिए किसी बाहरी सेवा का अकाउंट जोड़ना ज़रूरी है। देखें किसी AI प्रोवाइडर से कनेक्ट करना।

docker run -d --name marinara-lite \
  -p 127.0.0.1:7860:7860 \
  -v marinara-data:/app/data \
  ghcr.io/pasta-devs/marinara-engine:lite

कुछ पुरानी lite इमेज Raspberry Pi 4 और उस जैसे ARM कंप्यूटर पर बाहर जाने वाली AI कॉल के दौरान SIGILL एरर (अवैध-निर्देश एरर) के साथ क्रैश हो जाती हैं। ऐसे डिवाइस पर सामान्य latest इमेज इस्तेमाल करें। ताज़ा जानकारी के लिए Marinara Engine की समस्याएँ सुलझाना देखें।

Podman

Podman वही इमेज चलाता है। ज़्यादातर कमांड में docker की जगह podman लिखें।

podman compose up -d

Compose के बिना एक कंटेनर चलाने के लिए:

podman run -d \
  -p 127.0.0.1:7860:7860 \
  -v marinara-data:/app/data \
  ghcr.io/pasta-devs/marinara-engine:latest

podman compose के लिए podman-compose हेल्पर चाहिए। इसे इनमें से किसी एक कमांड से इंस्टॉल करें:

sudo dnf install podman-compose
sudo apt install podman-compose
pip install podman-compose

पहली पंक्ति Fedora के लिए है, दूसरी Debian या Ubuntu के लिए, और तीसरी हर उस जगह काम करती है जहाँ pip हो।

इमेज खुद बनाना

डाउनलोड करने के बजाय सोर्स से बनाने के लिए:

docker build -t marinara-engine .
docker run -d -p 127.0.0.1:7860:7860 -v marinara-data:/app/data marinara-engine

lite इमेज बनाने के लिए lite बिल्ड फ़ाइल इस्तेमाल करें:

docker build -f Dockerfile.lite -t marinara-engine:lite .

समस्या-समाधान

पेज नहीं खुलता, या पोर्ट पहले से इस्तेमाल में है। Marinara शुरू करना में पोर्ट वाला हल देखें।

Marinara फ़ाइलें नहीं लिख पाता, या परमिशन एरर दिखती हैं। कंटेनर हर बार शुरू होते समय फ़ोल्डर की ओनरशिप ठीक करता है। कुछ होस्ट फ़ाइल सिस्टम पर यह मरम्मत नाकाम हो सकती है, और MARINARA_SKIP_DATA_CHOWN=true सेट करने पर इसे छोड़ दिया जाता है। एरर फिर भी आती रहें, तो डिफ़ॉल्ट marinara-data वॉल्यूम इस्तेमाल करें। सबसे भरोसेमंद यही है।

lite इमेज Raspberry Pi 4 पर क्रैश हो जाती है। सामान्य latest इमेज इस्तेमाल करें।

और मदद के लिए देखें Marinara Engine की समस्याएँ सुलझाना।

मिलती-जुलती गाइड