Marinara Engine की समस्याएँ सुलझाना
अपनी दिक्कत ढूँढें, फिर उसका हल अपनाएँ। ज़्यादातर समस्याएँ Marinara को उसके लॉन्चर (start.bat, start.sh या start-termux.sh) से दोबारा शुरू करने पर ठीक हो जाती हैं।
सबसे पहले ये आज़माएँ
- पेज को हार्ड रिफ़्रेश करें: Windows या Linux पर <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>R</kbd>, Mac पर <kbd>⌘</kbd>+<kbd>Shift</kbd>+<kbd>R</kbd>।
- सर्वर कंसोल (वह टर्मिनल विंडो जिसमें Marinara चलता है) में लाल एरर लाइनें देखें। असली दिक्कत आमतौर पर उन्हीं में लिखी होती है।
- मदद माँगनी हो तो पहले Debug mode (डीबग मोड) चालू करें। देखें ज़्यादा मदद पाना।
मेरा कैरेक्टर जवाब नहीं देता
इन्हें इसी क्रम में जाँचें।
- कोई टोस्ट (स्क्रीन के नीचे दिखने वाला छोटा संदेश) देखें। उसमें आमतौर पर समस्या लिखी होती है। देखें कनेक्शन और जेनरेशन की एरर।
- जाँचें कि चैट के पास अकाउंट और मॉडल है: Chat Settings (चैट सेटिंग्स) खोलें और कनेक्शन देखें। कोई न हो, तो Connections (कनेक्शन) में एक अकाउंट जोड़ें। देखें किसी AI प्रोवाइडर से कनेक्ट करना।
- जाँचें कि API कुंजी सही है और अकाउंट में क्रेडिट है। गलत कुंजी या खाली बैलेंस एक आम वजह है।
- मॉडल का नाम जाँचें। Ollama या LM Studio जैसे लोकल सर्वर के लिए यह भी देखें कि सर्वर चल रहा है।
- अपना संदेश दोबारा भेजें, या कोई दूसरा मॉडल चुनें।
अगर कुछ काम न आए, तो Debug mode चालू करें और सर्वर कंसोल पढ़ें। देखें ज़्यादा मदद पाना।
मोबाइल या दूसरे डिवाइस पर ऐप लोड नहीं होता
फ़ोन, टैबलेट या किसी दूसरे कंप्यूटर से Marinara नहीं खुल रहा?
ज़्यादातर इन तीन में से कोई एक वजह होती है:
- पता। डिफ़ॉल्ट रूप से सर्वर
127.0.0.1(सिर्फ़ यही कंप्यूटर) पर सुनता है। लॉन्चरHOST=0.0.0.0सेट कर देते हैं। अगर आपनेpnpm startसे शुरू किया है, तो पहले.envमेंHOST=0.0.0.0सेट करें। - नेटवर्क। दोनों डिवाइस एक ही Wi-Fi नेटवर्क पर होने चाहिए, और कोई फ़ायरवॉल पोर्ट को ब्लॉक न करे। डिफ़ॉल्ट पोर्ट
7860है, या जो आपनेPORTमें सेट किया हो। - लॉगिन। एक लॉगिन सेट करें। ब्लॉक किए गए डिवाइस पर सर्वर लॉग का एक बार वाला सेटअप कोड नए यूज़रनेम और पासवर्ड के साथ टाइप करें। Docker में कोड
docker logs <container> 2>&1 | grep "setup code"से ढूँढें। या ऐसे ब्राउज़र में जो पहले से साइन इन है, इसे Settings → Advanced → Access (सेटिंग्स → एडवांस्ड → एक्सेस) में सेट करें। हेडलेस सर्वर परssh -L 7860:127.0.0.1:7860 user@serverचलाएँ,http://localhost:7860खोलें और Settings इस्तेमाल करें। देखें रिमोट एक्सेस।
और वजहें:
- उसी मशीन पर प्रॉक्सी या टनल। उसी मशीन पर चल रही रिवर्स प्रॉक्सी या टनल को लॉगिन चाहिए। Tailscale से आने वाला सीधा ट्रैफ़िक डिफ़ॉल्ट रूप से भरोसेमंद माना जाता है। Tailscale Serve या Funnel और nginx का डिफ़ॉल्ट HTTP/1.0
proxy_passआगे भेजा गया ट्रैफ़िक गिने जाते हैं और उन्हें लॉगिन चाहिए। उसी होस्ट के Docker ब्रिज ट्रैफ़िक पर भरोसा सिर्फ़ तब तक रहता है, जब तक कोई लॉगिन,IP_ALLOWLISTयाTRUSTED_AUTH_PROXYसेट न हो। - इस कंप्यूटर के लिए कस्टम नाम।
/etc/hostsमें127.0.0.1से मैप किया गया नाम आगे भेजा गया माना जाता है। इसकी जगहlocalhost,127.0.0.1, मशीन का होस्टनेम या कोई*.localhostनाम इस्तेमाल करें। - Too many wrong passwords दिखे, तो 15 मिनट रुकें, फिर साइन इन करें। पासवर्ड भूल गए? Marinara चलाने वाले कंप्यूटर पर Marinara फ़ोल्डर में
node scripts/reset-login.mjsचलाएँ। Docker मेंdocker exec <container> node scripts/reset-login.mjsचलाएँ। सर्वर रीस्टार्ट करने पर भी डिवाइस फिर से कोशिश कर सकता है। - Untrusted request host दिखे, तो पब्लिक या रिवर्स-प्रॉक्सी डोमेन के लिए
.envमेंTRUSTED_HOSTSमें उसका पूरा होस्टनेम जोड़ें। सीधे IP पते स्वीकार होते रहते हैं। - उस डिवाइस से जोखिम वाले काम ब्लॉक हैं (बैकअप, डेटा मिटाना, अपडेट)। सर्वर के अपने कंप्यूटर पर Settings → Advanced → Admin Access (सेटिंग्स → एडवांस्ड → एडमिन एक्सेस) खोलें और Make admin secret पर क्लिक करें, या सर्वर की
.envमेंADMIN_SECRETसेट करें। दूसरे डिवाइस पर सीक्रेट Admin Access में टाइप करें और Save पर क्लिक करें।
रिमोट एक्सेस और अक्सर पूछे जाने वाले सवाल देखें। अगर अपडेट के बाद आप लॉक आउट हो गए थे, तो अपडेट के बाद लॉक आउट हो जाना देखें।
सेव ब्लॉक होना, या सेटिंग्स का टिक न पाना
सेव होता हुआ लगता है, पर पेज दोबारा लोड करने पर पुरानी वैल्यू लौट आती है। क्रॉस-साइट सुरक्षा (CSRF) उसे रोक रही है, क्योंकि वह इस ब्राउज़र पते पर भरोसा नहीं करती। आपको एक लाल बैनर दिखता है जो कहता है कि सेव चुपचाप फ़ेल हो जाएँगे, या Save blocked: missing CSRF header, Save blocked: cross-site request rejected या Save blocked: origin not trusted शीर्षक वाला टोस्ट दिखता है।
लूपबैक, प्राइवेट नेटवर्क पते, Tailscale और Docker ब्रिज अपने आप भरोसेमंद माने जाते हैं। ऐसा ज़्यादातर पब्लिक IP या डोमेन नाम पर होता है। उस पते को .env में CSRF_TRUSTED_ORIGINS में जोड़ें, एक से ज़्यादा हों तो कॉमा से अलग करके। बैनर में एक Copy (कॉपी करें) बटन है जो यह लाइन भर देता है। रीस्टार्ट की ज़रूरत नहीं है।
CSRF_TRUSTED_ORIGINS=http://203.0.113.10:7831,https://chat.example.comकनेक्शन और जेनरेशन की एरर
जेनरेशन की एरर स्क्रीन के नीचे टोस्ट के रूप में दिखती है। टोस्ट में वजह लिखी होती है, और वह इतनी देर टिकता है कि उसे कॉपी किया जा सके।
| संदेश या लक्षण | हल |
| No API connection configured for this chat | चैट के पास कोई अकाउंट नहीं है। Connections में एक अकाउंट जोड़ें, फिर उसे चैट के लिए चुनें। देखें किसी AI प्रोवाइडर से कनेक्ट करना। |
| मॉडल कोई पैरामीटर स्वीकार नहीं करता | Chat Settings → Advanced Parameters (चैट सेटिंग्स → एडवांस्ड पैरामीटर) खोलें और टोस्ट में बताए गए पैरामीटर के आगे वाला स्विच बंद करें। |
| मॉडल कहता है कि कोई पैरामीटर ज़रूरी है | उस पैरामीटर का स्विच चालू करें। |
| This model's chat template needs user and assistant messages to take turns | कुछ लोकल मॉडल, जैसे llama.cpp पर चलने वाले Mistral पर आधारित मॉडल, बारी-बारी से आने वाले संदेश ही स्वीकार करते हैं। Marinara लगातार आए संदेशों को आपस में मिला देता है और एक बार फिर कोशिश करता है। अगर फिर भी यह दिखे, तो Chat Settings → Advanced Parameters में Post-Processing Messages (संदेशों की पोस्ट-प्रोसेसिंग) को Single User Message (एक ही यूज़र संदेश) पर सेट करें, या मॉडल को कम सख्त चैट टेम्पलेट के साथ चलाएँ। |
| The AI returned an empty response. Try sending your message again. | दोबारा भेजें। बार-बार ऐसा हो, तो कोई दूसरा मॉडल या अकाउंट आज़माएँ। |
| A generation is already in progress for this chat | एक जवाब अभी स्ट्रीम हो रहा है। इंतज़ार करें, या Stop पर क्लिक करें, फिर दोबारा कोशिश करें। |
| No connections are marked for the random pool | रैंडम रूटिंग चालू है, पर पूल में कोई अकाउंट नहीं है। एक अकाउंट जोड़ें, या रैंडम रूटिंग बंद करें। |
| हर संदेश नेटवर्क एरर के साथ फ़ेल होता है, और आपका कंप्यूटर इंटरनेट तक सिर्फ़ किसी प्रॉक्सी के ज़रिए पहुँचता है | Marinara को उस प्रॉक्सी के बारे में बताएँ। देखें बाहर जाने वाली रिक्वेस्ट के लिए HTTP प्रॉक्सी। |
अपडेट के बाद
अपडेट के ठीक बाद आने वाली समस्याएँ, पहले आसान शब्दों में:
- स्क्रीन खाली है या पुरानी दिखती है: देखें खाली, पुरानी या पुराने वर्ज़न जैसी दिखने वाली स्क्रीन और अपडेट के बाद खाली पेज या JavaScript की जगह HTML मिलना।
- चैट या प्रीसेट गायब लगते हैं: देखें अपडेट के बाद डेटा गायब लगता है। आपका डेटा लगभग हमेशा डिस्क पर ही होता है।
- पुराने वर्ज़न पर लौटने के बाद चैट खाली दिखती हैं: देखें पुराने वर्ज़न पर जाने के बाद चैट में संदेश नहीं दिखते।
खाली, पुरानी या पुराने वर्ज़न जैसी दिखने वाली स्क्रीन
सर्वर चल रहा है, पर ब्राउज़र खाली पेज दिखाता है, या अपडेट के बाद ऐप पुराना दिखता है। ब्राउज़र ने वेब ऐप की एक कैश की हुई कॉपी रखी हुई है।
- हार्ड रिफ़्रेश करें।
- इससे बात न बने, तो Settings → Advanced → Updates (सेटिंग्स → एडवांस्ड → अपडेट) खोलें और Refresh App पर क्लिक करें।
Refresh App ब्राउज़र का सर्विस वर्कर (बैकग्राउंड में चलने वाली वह स्क्रिप्ट जो ऐप को कैश करती है) और कैश साफ़ करता है, फिर पेज दोबारा लोड करता है। यह आपका डेटा नहीं बदलता और सर्वर अपडेट नहीं करता। ऐप को खुद अपडेट करने के लिए Marinara Engine को अपडेट करना देखें।
अपडेट के बाद खाली पेज या JavaScript की जगह HTML मिलना
text/html टाइप के साथ "Failed to load module script" जैसी एरर का मतलब है कि ब्राउज़र ने ऐसी JavaScript फ़ाइल माँगी जो बिल्ड में मौजूद नहीं है। अपना डेटा मिटाने से यह ठीक नहीं होता।
- सर्वर रोकें।
start.bat,start.shयाstart-termux.shदोबारा चलाएँ। लॉन्चर शुरू होने से पहले अधूरी क्लाइंट फ़ाइलें दोबारा बिल्ड करता है। हाथ से किए गए इंस्टॉल में पहले रिपॉज़िटरी के रूट सेpnpm buildचलाएँ।- अगर पेज फिर भी खाली रहे, तो हार्ड रिफ़्रेश करें या प्राइवेट विंडो आज़माएँ।
फिर भी काम न बने, तो लॉन्चर आउटपुट के साथ फ़ेल होने वाली फ़ाइल का पूरा URL, HTTP स्टेटस, Content-Type और जवाब की पहली लाइन रिपोर्ट करें।
अपडेट के बाद डेटा गायब लगता है
कोई भी डेटा फ़ोल्डर न हटाएँ। Marinara अपना मौजूदा डेटा अपने डेटा फ़ोल्डर के अंदर storage फ़ोल्डर में रखता है। storage को packages/server/data/ और data/ में देखें। सर्वर शुरू होते समय वे फ़ोल्डर प्रिंट करता है जो उसने तय किए।
पुराने वर्ज़न पर जाने के बाद चैट में संदेश नहीं दिखते
Marinara के नए वर्ज़न हर चैट के रिकॉर्ड (संदेश, स्वाइप, यादें, इमेज) उसकी अपनी फ़ाइलों में रखते हैं, जिससे लंबी चैट तेज़ी से सेव होती हैं। पुराने वर्ज़न यह लेआउट नहीं पढ़ सकते, इसलिए चैट खाली दिखती हैं। डेटा अब भी डिस्क पर है।
Marinara साफ़ दिखने वाले डाउनग्रेड (पुराने वर्ज़न पर जाना) रोकता है। लॉन्चर ऐसा अपने आप होने वाला अपडेट छोड़ देता है जो किसी असंगत वर्ज़न पर ले जाए, और इन-ऐप अपडेटर ऐसी एरर दिखाता है जो इसी सेक्शन की ओर इशारा करती है।
अगर आपने अपडेट किया और फिर पुराने वर्ज़न पर लौट गए, तो अपडेट से पहले बनाया गया बैकअप रिस्टोर करें। देखें पुराने वर्ज़न पर वापस जाना। तकनीकी जानकारी नीचे है।
आपका डेटा अब स्टोरेज फ़ॉर्मैट 10 पर है। फ़ॉर्मैट 8, 9 और 10 में 3D अवतार की सेटिंग्स (पहले MMD, फिर GLB और FBX) और कनेक्शन के अकाउंट लिंक जुड़ते हैं, जिन्हें पुराने बिल्ड सुरक्षित तरीके से नहीं पढ़ सकते। अगर आपका डेटा फ़ॉर्मैट 8 या उससे नए फ़ॉर्मैट तक पहुँच चुका है, तो पुराना बिल्ड इस्तेमाल करने के लिए उस अपग्रेड से पहले बनाया गया पूरा बैकअप रिस्टोर करें। नीचे दी गई कमांड सिर्फ़ चैट फ़ाइलों के पुराने लेआउट को बदलती है। फ़ॉर्मैट का नंबर हाथ से न बदलें। देखें पुराने वर्ज़न पर वापस जाना।
फ़ॉर्मैट 8 से नीचे के डेटा के लिए चैट फ़ाइलों का लेआउट बदलें:
- Marinara सर्वर रोकें।
- Marinara फ़ोल्डर से यह चलाएँ:
node scripts/protect-launcher-data.mjs unshard- पुराने वर्ज़न पर जाएँ और उसे शुरू करें।
यह कमांड हर चैट की फ़ाइलों से सिंगल-फ़ाइल लेआउट फिर से बनाती है। कुछ भी मिटाया नहीं जाता। हर चैट की फ़ाइलें <table>.post-unshard-<timestamp> नाम के फ़ोल्डरों में बनी रहती हैं, और .pre-shard वाली मूल फ़ाइलें भी बनी रहती हैं। दोबारा अपग्रेड करने पर Marinara आपका डेटा वापस बदल देता है।
Docker या Podman में डेटा marinara-data वॉल्यूम में रहता है। कंटेनर रोकें, नीचे दी गई कमांड चलाएँ, फिर पुरानी इमेज शुरू करें:
docker compose run --rm marinara node scripts/protect-launcher-data.mjs unshardइंस्टॉल और लॉन्च की समस्याएँ
Termux: CANNOT LINK EXECUTABLE "node"
Termux cannot locate symbol या library ... not found के साथ CANNOT LINK EXECUTABLE "node" दिखाता है। Node.js को बाकी Termux के बिना अपग्रेड कर दिया गया है। तब Android ऐप Could not verify that this Marinara Android build can safely read your stored data दिखाकर रुक सकता है। इसकी वजह आपका डेटा नहीं है, और APK दोबारा इंस्टॉल करने से यह ठीक नहीं होता।
- Termux में यह चलाएँ:
pkg upgrade -y- Android ऐप में Install / Start Marinara पर टैप करें। हाथ से किए गए इंस्टॉल में
cd "$HOME/Marinara-Engine" && ./start-termux.shचलाएँ।
अगर अपग्रेड पूछे कि कोई कॉन्फ़िगरेशन फ़ाइल रखनी है या नहीं, तो अपनी फ़ाइल रखने के लिए Enter दबाएँ। मौजूदा लॉन्चर और Android ऐप यह अपग्रेड अपने आप चला देते हैं।
Termux: क्लाइंट बिल्ड करते समय JavaScript हीप कम पड़ना
Vite Reached heap limit या JavaScript heap out of memory के साथ रुक जाता है। अपडेट करें, फिर ./start-termux.sh दोबारा चलाएँ। क्लाइंट बिल्ड अपने अलग 1536 MiB हीप के साथ चलते हैं। यह डिवाइस की RAM के आधे तक सीमित रहता है, लेकिन 1280 MiB से कभी कम नहीं होता। NODE_OPTIONS में आपकी सेट की हुई हीप सीमा पहले लागू होती है, इसलिए पुराना 1024 MiB ओवरराइड हटा दें। दोबारा कोशिश करने से पहले दूसरे ऐप बंद करें। लगभग 3 GB से कम RAM वाले फ़ोन पर मेमोरी फिर भी कम पड़ सकती है। बिल्ड की गड़बड़ी ठीक करने के लिए अपनी चैट या प्रोफ़ाइल न मिटाएँ।
डेस्कटॉप: क्लाइंट की टाइप-चेकिंग के दौरान JavaScript हीप कम पड़ना
बिल्ड रुक जाता है और The client type-check needs about 2.5 GiB of Node.js heap दिखाता है। आपके NODE_OPTIONS में दी गई सीमा बहुत छोटी है, और आपकी सेट की हुई सीमा को बिल्ड वैसे ही रखता है। --max-old-space-size को 2560 या उससे ज़्यादा करें। अगर NODE_OPTIONS में --max-old-space-size-percentage है, तो उसकी जगह उसे बढ़ाएँ, क्योंकि वह दूसरे विकल्प पर भारी पड़ता है। या दोनों विकल्प हटा दें। फिर लॉन्चर दोबारा चलाएँ। आपके डेटा पर कोई असर नहीं पड़ता।
Termux: मल्टीप्लेयर गेस्ट फ़ाइल गायब है
शुरू होते समय packages/client/dist/multiplayer/guest.js गायब होने का संदेश आता है। Marinara अपडेट करें और ./start-termux.sh दोबारा चलाएँ, जो पूरा क्लाइंट बिल्ड चलाता है। मल्टीप्लेयर चालू करने की ज़रूरत नहीं है।
Termux: Marinara खोलते ही सर्वर रुक जाता है या Sharp लोड नहीं होता
Sharp वह इमेज लाइब्रेरी है जिसे Marinara थंबनेल और स्प्राइट के लिए इस्तेमाल करता है। Android पर यह WebAssembly फ़ॉलबैक के ज़रिए चलती है। Marinara अपडेट करें और लॉन्चर को डिपेंडेंसी दोबारा इंस्टॉल करने दें। अगर अपडेट कर पाने से पहले ही सर्वर रुक जाए, तो Termux में इंस्टॉल को हाथ से ठीक करें:
cd ~/Marinara-Engine
rm -f node_modules/.modules.yaml
SHARP_IGNORE_GLOBAL_LIBVIPS=1 pnpm --config.trustPolicy=off --config.confirmModulesPurge=false install --frozen-lockfile --prefer-offline
./start-termux.shआपकी चैट और सेटिंग्स पर कोई असर नहीं पड़ता। अगर Sharp फिर भी लोड न हो, तो Marinara इमेज प्रोसेसिंग बंद रखकर चलता रहता है। पहले से बने थंबनेल दिखते रहते हैं, नए थंबनेल की जगह पूरे आकार की इमेज इस्तेमाल होती है, और स्प्राइट बनाना और बिल्ट-इन तरीके से बैकग्राउंड हटाना उपलब्ध नहीं रहते। Sharp को किसी दूसरे वर्ज़न से न बदलें। रिपोर्ट के लिए पूरा एरर आउटपुट रखें।
स्टार्ट पूरा होने से पहले ब्राउज़र खुल जाता है
अपडेट करें और लॉन्चर से दोबारा शुरू करें। लॉन्चर ब्राउज़र तभी खोलता है जब सर्वर बताता है कि वह तैयार है। अगर स्टार्ट फ़ेल हो जाए, तो कोई टैब नहीं खुलता, इसलिए टर्मिनल की एरर सँभालकर रखें। ऐप खुद खोलना हो, तो AUTO_OPEN_BROWSER=false सेट करें।
Windows: pnpm इंस्टॉल करते समय EPERM या corepack सिग्नेचर एरर
pnpm वह पैकेज मैनेजर है जिससे Marinara अपना कोड इंस्टॉल करता है। EPERM: operation not permitted या corepack की सिग्नेचर एरर का मतलब है कि corepack, Node के इंस्टॉल फ़ोल्डर में लिख नहीं पाया। कोई एक उपाय आज़माएँ, फिर लॉन्चर दोबारा चलाएँ:
- अपने टर्मिनल पर राइट-क्लिक करें, Run as administrator चुनें, और लॉन्चर चलाएँ।
- pnpm खुद इंस्टॉल करें:
npm install -g pnpm@12.15.0 - एडमिनिस्ट्रेटर टर्मिनल में corepack अपडेट करें:
npm install -g corepack
pnpm वर्ज़न एरर, या 'pnpm' is not recognized
Marinara pnpm 12.15.0 इस्तेमाल करता है। लॉन्चर आपके लिए सही वर्ज़न ले आता है, और पहले pnpm के पुराने ग्लोबल वर्ज़न को बदलने की ज़रूरत नहीं है। Marinara अपडेट करें (अगर लॉन्चर न कर पाए, तो उसके फ़ोल्डर में git pull चलाएँ), फिर लॉन्चर दोबारा चलाएँ। फिर भी काम न बने, तो ठीक वही वर्ज़न इंस्टॉल करें और लॉन्चर दोबारा चलाएँ:
npm install -g pnpm@12.15.0Linux: इंस्टॉल के दौरान ERR_PNPM_ENAMETOOLONG
किसी पुराने इंस्टॉल ने लंबे फ़ोल्डर पथ पीछे छोड़ दिए हैं। Marinara फ़ोल्डर से यह चलाएँ:
rm -rf node_modules .pnpm .pnpm-storeफिर ./start.sh दोबारा चलाएँ। हाथ से किए गए इंस्टॉल में pnpm install चलाएँ।
इंस्टॉल में "Ignored build scripts: @google/genai" दिखता है
यह नोटिस नुकसान नहीं करता। pnpm approve-builds न चलाएँ, क्योंकि यह Marinara की ट्रैक की जाने वाली एक फ़ाइल बदल देता है। अगर अपडेट के बाद भी नोटिस दिखता रहे, तो Marinara फ़ोल्डर में node_modules/.modules.yaml हटा दें और लॉन्चर दोबारा चलाएँ।
इंस्टॉल के दौरान ERR_PNPM_TRUST_DOWNGRADE
यह लगभग हमेशा अधूरे इंस्टॉल की वजह से होता है। लॉन्चर दोबारा चलाएँ। हाथ से किए गए इंस्टॉल में Marinara फ़ोल्डर से यह चलाएँ:
pnpm --config.trustPolicy=off --config.confirmModulesPurge=false install --frozen-lockfileबिल्ट-इन मॉडल की समस्याएँ
Built-in model (बिल्ट-इन मॉडल) बिना API कुंजी के आपके कंप्यूटर पर चलता है। कुछ एरर संदेशों में इसे sidecar कहा जाता है। सेटअप के लिए बिल्ट-इन मॉडल का सेटअप देखें।
- Sidecar runtime install is disabled दिखे, तो अपने कंप्यूटर पर
.envमेंSIDECAR_RUNTIME_INSTALL_ENABLED=trueसेट करें। दूसरे डिवाइस से करना हो, तो पहले अपना एडमिन सीक्रेट Settings → Advanced → Admin Access में सेव करें। - दूसरे डिवाइस से मॉडल डाउनलोड या सेटअप फ़ेल होता है (नेटवर्क पते या Docker से)। उसके लिए भी एडमिन सीक्रेट चाहिए हो सकता है। आपके अपने कंप्यूटर पर इसकी ज़रूरत नहीं होती।
- साथ आई llama.cpp, MLX या uv फ़ाइल का आकार या SHA-256 मेल नहीं खाता। Marinara ने फ़ाइल को इस्तेमाल करने से पहले ही ठुकरा दिया है। Marinara अपडेट या दोबारा इंस्टॉल करें और फिर कोशिश करें। फ़ाइल को अनपैक, एडिट या बायपास न करें।
मेमोरी और सारांश
Memory Recall कुछ याद नहीं रखता
Memory Recall (मेमोरी रिकॉल) पिछले संदेशों में खोजता है और सबसे मिलते-जुलते संदेश वापस प्रॉम्प्ट में जोड़ देता है।
- Chat Settings → Memory Recall खोलें और पक्का करें कि Enable Memory Recall चालू है।
- Access memories for this chat खोलें। Memories for This Chat में हर चंक की स्थिति देखें।
- Waiting for vector का मतलब है कि याद अभी प्रोसेस हो रही है। रुकें, फिर दोबारा चैट करें।
- Embedding unavailable का मतलब है कि कोई एम्बेडिंग सोर्स काम नहीं कर रहा। कोई एम्बेडिंग अकाउंट सेट करें, या बिल्ट-इन मॉडल को लोड होने दें। हर चैट के लिए एक ही सोर्स इस्तेमाल करना हो, तो Connections के Defaults (डिफ़ॉल्ट) सेक्शन में Embeddings (एम्बेडिंग) के नीचे उसे चुनें।
कोई याद बनने से पहले कम से कम 5 नए संदेश चाहिए। रिकॉल सिर्फ़ वही यादें दिखाता है जो आपके नए संदेश से काफ़ी मिलती-जुलती हों, इसलिए यादें मौजूद होने पर भी कुछ न मिलना मुमकिन है।
Advanced Memory कहता है कि सीन पर ध्यान देना ज़रूरी है
Chat Settings बटन पर स्थिर बिंदु, या यह नोटिस कि Advanced Memory को समस्याएँ मिली हैं, बताता है कि कुछ सीन की यादें अस्पष्ट, पुरानी पड़ चुकी या गायब हैं।
- Chat Settings → Memory Recall खोलें, या नोटिस में Fix (ठीक करें) पर क्लिक करें।
- Fix पर क्लिक करें। यह सहायक मॉडल से हर वह सीन ठीक करता है जिसे ठीक किया जा सकता है, और आपके एडिट किए सारांश कभी नहीं बदलता।
- need your review (आपकी समीक्षा ज़रूरी) के नीचे हर सीन नंबर चुनें, Access memories for this chat में उसका टेक्स्ट और कैरेक्टर जाँचें, और Save correction (सुधार सेव करें) पर क्लिक करें।
अगर Fix किसी एरर पर रुक जाए, तो सहायक मॉडल का अकाउंट जाँचें, फिर Resume processing (प्रोसेसिंग फिर शुरू करें) या दोबारा Fix पर क्लिक करें। देखें मेमोरी की समस्याएँ ठीक करना।
सारांश नहीं बन रहे
सारांश के लिए एक चालू टेक्स्ट अकाउंट चाहिए।
- Roleplay: Chat Settings → Chat Summary (चैट सेटिंग्स → चैट सारांश) खोलें, पक्का करें कि अकाउंट सेट है, और पुरानी चैट की भरपाई के लिए Backfill Summary इस्तेमाल करें।
- Conversation: Automatic Summarization खोलें और फ़ेल हुए दिनों को दोबारा आज़माने के लिए Backfill इस्तेमाल करें।
- अगर आपकी चैट में एजेंट के लिखे को मंज़ूरी चाहिए, तो AI सारांश आपकी समीक्षा का इंतज़ार करता है।
- बार-बार फ़ेल होने वाला सारांश, जैसे गलत API कुंजी की वजह से, बाद में दोबारा आज़माया जाता है। अकाउंट ठीक करें, फिर Backfill इस्तेमाल करें।
डाउनलोड किए जाने वाले एजेंट की समस्याएँ
- Agent Organizer में कैटलॉग उपलब्ध नहीं। सर्वर चलाने वाले कंप्यूटर की, सिर्फ़ आपके ब्राउज़र की नहीं, HTTPS के ज़रिए Pasta-Devs/Marinara-Agents कैटलॉग तक पहुँच होनी चाहिए। इंस्टॉल हो चुके एजेंट ऑफ़लाइन भी काम करते रहते हैं। कनेक्शन ठीक करें, फिर Refresh या Try again (फिर कोशिश करें) पर क्लिक करें।
- इंस्टॉल किया हुआ मैप या कॉल नहीं दिखता। Marinara को पूरी तरह बंद करें और फिर से शुरू करें। ये पैकेज अगली बार शुरू होने तक Restart required में रहते हैं। Conversation गेम तुरंत चालू हो जाते हैं। इंस्टॉलेशन फ़ेल हुआ हो, तो कैटलॉग रिफ़्रेश करें और देखें कि गेम तैयार दिख रहा है। किसी चैट की Commands सेटिंग्स में गेम जोड़ना सिर्फ़ तब ज़रूरी है जब आप चाहें कि कैरेक्टर उसे खुद शुरू करें, उसकी मैन्युअल स्लैश कमांड के लिए नहीं।
- पहला पैकेज माइग्रेशन पूरा नहीं हो पाता।
data/capability-packagesया अपना चैट डेटा न हटाएँ। Marinara अगली बार शुरू होने पर दोबारा कोशिश करता है, और आपकी चैट के चुनाव सेव रहते हैं। data/capability-runtime-snapshotsयाdata/capability-packages/versionsबहुत बड़ा है। सफ़ाई की ज़रूरत नहीं है। Marinara शुरू होते समय पुरानी कॉपियाँ हटा देता है और हर एजेंट का मौजूदा और पिछला वर्ज़न रखता है।- पैकेज डाउनलोड ठुकरा दिया जाता है। चेकसम, फ़ाइल लिस्ट, Marinara वर्ज़न रेंज या आर्काइव पथ आधिकारिक कैटलॉग से मेल नहीं खाते। Marinara अपडेट करें, कैटलॉग रिफ़्रेश करें और दोबारा कोशिश करें। किसी आर्टिफ़ैक्ट को हाथ से डेटा फ़ोल्डर में न निकालें।
- अपडेट। एजेंट अपडेट शुरू होते समय कभी लागू नहीं होते। Marinara पहले पूछता है। Not now (अभी नहीं) इंस्टॉल किया हुआ वर्ज़न बनाए रखता है, और Update का विकल्प Agents → Agent Organizer (एजेंट → एजेंट ऑर्गनाइज़र) में मौजूद रहता है। फ़ेल हुआ अपडेट इंस्टॉल किए हुए वर्ज़न को उसकी जगह छोड़ देता है। जो सर्वर रनटाइम अपनी स्टार्टअप जाँच में फ़ेल हो, वह पिछले वर्ज़न पर लौट आता है।
Card Browser की समस्याएँ
Card Browser (कार्ड ब्राउज़र) पब्लिक कैरेक्टर साइटें खोजता है। इसे Characters (कैरेक्टर) या Personas (पर्सोना) पैनल के ऊपर मौजूद Download (डाउनलोड) बटन से खोलें।
- JannyAI Cloudflare ब्लॉक दिखाता है। चुनौती पूरी करने के लिए उसी ब्राउज़र में एक बार JannyAI साइट खोलें, फिर दोबारा कोशिश करें।
- रीस्टार्ट के बाद Pygmalion लॉगिन काम करना बंद कर देता है। यह सामान्य है। वह लॉगिन सिर्फ़ सर्वर की मेमोरी में रहता है। लॉगिन विंडो खोलें और अपना टोकन दोबारा पेस्ट करें।
- CharacterTavern नतीजों की जगह एक नोटिस दिखाता है। यह सामान्य है। उसकी नई वेबसाइट अब वह कनेक्शन नहीं देती जिसे Marinara इस्तेमाल करता था। character-tavern.com से कार्ड डाउनलोड करें और फ़ाइल इंपोर्ट करें।
मीडिया जेनरेशन की समस्याएँ
जटिल सीन में स्प्राइट का बैकग्राउंड ठीक से नहीं हटता
जेनरेट किए गए स्प्राइट आम तौर पर नेटिव ट्रांसपेरेंसी या सपाट बैकग्राउंड इस्तेमाल करते हैं, जिसे Marinara हटा देता है। फ़ोटो खींचा हुआ कमरा, बारीक नज़ारा, गहरी परछाइयाँ, या बैकग्राउंड से मिलते रंग होने पर वैकल्पिक AI फ़ॉलबैक की ज़रूरत पड़ सकती है:
pnpm backgroundremover:installफिर Marinara दोबारा शुरू करें और स्प्राइट जेनरेशन विंडो में Reapply Cleanup पर क्लिक करें। Marinara पहले बिल्ट-इन क्लीनअप आज़माता है और AI मॉडल तभी इस्तेमाल करता है जब किनारा एक-सा न दिखे। इंस्टॉल फ़ेल हो जाए तो:
- पक्का करें कि Python 3.9 से 3.11 इंस्टॉल है। नए वर्ज़न धीमे नेटिव बिल्ड करा सकते हैं।
pnpm backgroundremover:reinstallचलाएँ।- समस्या सुलझाते समय AI फ़ॉलबैक छोड़ने के लिए
.envमेंSPRITE_BACKGROUND_REMOVAL_ENGINE=builtinसेट करें।
Game Mode या Roleplay के स्टोरीबोर्ड नहीं दिखते
स्टोरीबोर्ड पूरे हो चुके नैरेशन को कीफ़्रेम इमेज और वैकल्पिक क्लिप में बदलते हैं। देखें Storyboard एजेंट गाइड और Game Mode: शुरुआत।
- Agents → Agent Organizer से Storyboard इंस्टॉल करें, फिर चैट के लिए Enable Agents और Enable Storyboards चालू करें।
- कीफ़्रेम के लिए इमेज अकाउंट चाहिए। क्लिप के लिए वीडियो अकाउंट भी चाहिए।
- Game, अपने आप: Chat Settings → Agents → Storyboards (चैट सेटिंग्स → एजेंट → स्टोरीबोर्ड) खोलें और पक्का करें कि Automatic Storyboard Illustrations चालू है। क्लिप के लिए Automatic Storyboard Animations चालू करें।
- मैन्युअल सीन वीडियो: Chat Settings → Gallery (चैट सेटिंग्स → गैलरी) खोलें, कोई इमेज जेनरेट या अपलोड करें, फिर Video या Animate इस्तेमाल करें। Videos टैब देखें।
- Roleplay: चैट में Storyboard एजेंट जोड़ें। Still images या Animations चुनें, Messages per episode सेट करें और इमेज अकाउंट चुनें। Manual only होने पर यह Chat Settings के Gallery सेक्शन में Create storyboard से चलता है।
- अगर सारे कैरेक्टर एक साथ रखने पर कस्टम प्रॉम्प्ट बेहतर काम करे, तो Use NovelAI Character Prompts बंद करें।
- धीमी सेवाओं पर टाइमआउट हो सकता है।
.envमेंIMAGE_GEN_TIMEOUT_MSयाVIDEO_GEN_TIMEOUT_MSबढ़ाएँ, फिर Marinara दोबारा शुरू करें। Outbound response exceeded 31457280 bytes: डिफ़ॉल्ट रूप से 30 MiB से बड़ा इमेज जवाब फ़ेल हो जाता है। जो ComfyUI फ़ाइलें वर्कफ़्लो और रेफ़रेंस इमेज को अपने अंदर रखती हैं, वे इतनी बड़ी हो सकती हैं।.envमेंIMAGE_GEN_MAX_RESPONSE_BYTESबढ़ाएँ और दोबारा शुरू करें, या ComfyUI में मेटाडेटा बंद करें।
Game Mode की वर्ल्ड जेनरेशन में JSON एरर दिखती है
अगर मॉडल टूटा हुआ JSON (संरचित टेक्स्ट) लौटाए, तो Marinara टर्न फेंकने के बजाय Repair JSON विंडो खोलता है।
- एडिटर में ब्रैकेट, कॉमा या फ़ील्ड ठीक करें। टेक्स्ट सही पार्स होने पर बैनर में JSON is valid. दिखता है।
- लेआउट सुधारने के लिए Format पर क्लिक करें।
- जवाब दोबारा जेनरेट किए बिना उसे इस्तेमाल करने के लिए Apply Repaired JSON पर क्लिक करें।
वॉइस, कॉल और TTS
- कॉल में कैरेक्टर नहीं बोलते। Text to Speech सेट नहीं है। Connections → Text to Speech (कनेक्शन → टेक्स्ट टू स्पीच) खोलें, इसे चालू करें, कोई सोर्स चुनें, अपनी कुंजी डालें, आवाज़ चुनें और सेव करें। जिस कैरेक्टर की कोई आवाज़ न हो, वह सिर्फ़ टेक्स्ट में दिखता है।
- बोलना "No audio after N s" के साथ रुक जाता है। आपका वॉइस सर्वर उससे धीमा है जितनी देर Marinara इंतज़ार करता है। लैपटॉप पर चलने वाले लोकल सर्वर में यह आम है।
Nआपका मौजूदा टाइमआउट है। Connections → Text to Speech में, या संदेश में बताए गए ऑडियो अकाउंट में, Request timeout (seconds) (रिक्वेस्ट टाइमआउट (सेकंड)) बढ़ाएँ। देखें रिक्वेस्ट टाइमआउट। - माइक्रोफ़ोन काम नहीं करता। Agents → Agent Organizer से Calls इंस्टॉल करें। फिर Connections → Speech to text (कनेक्शन → स्पीच टू टेक्स्ट) खोलें, On this device के नीचे Local speech model ढूँढें, कोई Whisper मॉडल चुनें और Download Whisper पर क्लिक करें। Firefox में यह ज़रूरी है, क्योंकि उसमें ब्राउज़र स्पीच रिकग्निशन नहीं है। Calls अनइंस्टॉल करने पर उसके Whisper मॉडल हट जाते हैं। आप अपना सर्वर भी इस्तेमाल कर सकते हैं: देखें अपना स्पीच-टू-टेक्स्ट सर्वर इस्तेमाल करना।
- Local Whisper is disabled in Lite mode का मतलब है कि lite इमेज लोकल स्पीच मॉडल नहीं चला सकती। पूरा इंस्टॉल इस्तेमाल करें।
रिमोट या नेटवर्क इंस्टॉल पर Music DJ का Spotify लॉगिन फ़ेल होता है
Music DJ एजेंट का Spotify मोड OAuth इस्तेमाल करता है। यह लॉगिन का एक हैंडऑफ़ है, जिसमें Spotify आपको एक कॉलबैक पते (रीडायरेक्ट URI) पर वापस भेजता है। Spotify सिर्फ़ https:// पते या http://127.0.0.1 स्वीकार करता है, और सादे नेटवर्क IP पते ठुकरा देता है।
- localhost पर एडिटर
127.0.0.1वाला कॉलबैक दिखाता है। उसे Spotify में रजिस्टर करें। - HTTPS पर एडिटर आपका HTTPS कॉलबैक दिखाता है। उसे रजिस्टर करें।
- अगर HTTPS अपस्ट्रीम पर ही खत्म हो जाता है और होस्ट मेल नहीं खाता, तो
.envमेंSPOTIFY_REDIRECT_URIको अपने पब्लिक कॉलबैक पते पर सेट करें। - सादे HTTP वाले नेटवर्क इंस्टॉल पर पॉपअप लोड नहीं हो पाता, पर उसके एड्रेस बार में सही कोड होता है। पूरा URL कॉपी करें, Connect बटन के नीचे Browser couldn't reach the callback? को फैलाएँ और उसे पेस्ट करें। URL 10 मिनट तक मान्य रहता है।
सबसे साफ़ हल यही है कि Marinara को HTTPS पर चलाया जाए।
स्टोरेज और डेटा
Restart Server के बाद सर्वर वापस नहीं आता
Marinara को start.bat, start-local.bat, start.sh, start-termux.sh या pnpm start से शुरू करें। ये सर्वर को उसके लॉन्चर से जोड़े रखते हैं और पुराने प्रोसेस के बंद होने के बाद नया शुरू करते हैं। ऐप के अंदर से रीस्टार्ट करने पर चार सेकंड बाद बचे हुए कनेक्शन बंद किए जाते हैं और आठ सेकंड बाद प्रोसेस ज़बरन बंद होता है। ज़बरन बंद होने से लंबित लिखने के काम बीच में रुक सकते हैं। सीधे node से चलाए गए प्रोसेस और डेवलपमेंट वॉचर बदले नहीं जाते: उन्हें खुद रोकें और फिर शुरू करें। Docker अपनी कंटेनर रीस्टार्ट नीति इस्तेमाल करता है। Windows पर लॉन्चर कंसोल में <kbd>Ctrl</kbd>+<kbd>C</kbd> दबाएँ और उसे बंद करने से पहले Shutdown complete का इंतज़ार करें।
जब तक पहला सर्वर चल रहा हो, उसी डेटा फ़ोल्डर पर दूसरा सर्वर शुरू न करें। पहले बचा हुआ प्रोसेस बंद करें।
स्टार्टअप कहता है कि कोई दूसरा प्रोसेस डेटा डायरेक्टरी इस्तेमाल कर रहा हो सकता है
किसी लोकल डेटा फ़ोल्डर में सिर्फ़ एक सर्वर लिख सकता है। अगर स्टार्टअप उस फ़ोल्डर के लिए Another Marinara Engine process ... may be using दिखाए, तो दूसरा Marinara प्रोसेस बंद करें और फिर से शुरू करें।
क्रैश के बाद या Docker वॉल्यूम खिसकाने के बाद स्टार्टअप The storage writer lease ... is incomplete or invalid दिखा सकता है, या ऐसे प्रोसेस का नाम दे सकता है जो अब मौजूद नहीं है।
- पक्का करें कि उस डेटा फ़ोल्डर को इस्तेमाल करने वाले सारे Marinara प्रोसेस और कंटेनर बंद हैं।
- सिर्फ़ एरर में बताया गया
.writer-leaseफ़ोल्डर हटाएँ। - Marinara रीस्टार्ट करें।
storageफ़ोल्डर या कोई टेबल फ़ाइल न हटाएँ।
जब डेटा फ़ोल्डर लोकल ड्राइव पर हो, तो Linux, Android, कंटेनर और Windows पर Marinara क्रैश हुए प्रोसेस की छोड़ी गई लीज़ अपने आप हटा देता है। नेटवर्क या शेयर्ड स्टोरेज, हटाई जा सकने वाली ड्राइव, और (Windows पर) क्रैश के बाद नया नाम पाए कंप्यूटर के लिए मैन्युअल स्टेप ही फ़ॉलबैक है।
बैकअप या एक्सपोर्ट पर 403 आता है
उसी कंप्यूटर के सेशन बिना एडमिन सीक्रेट के बैकअप बना सकते हैं। किसी दूसरे डिवाइस, नेटवर्क पते, Docker, या उसी कंप्यूटर पर चल रही प्रॉक्सी या टनल से आई रिक्वेस्ट को सीक्रेट चाहिए। इसे सर्वर के अपने कंप्यूटर पर Settings → Advanced → Admin Access में बनाएँ, या सर्वर पर ADMIN_SECRET सेट करें, फिर वही वैल्यू दूसरे डिवाइस पर Admin Access में सेव करें। लूपबैक पर भी इसे ज़रूरी करना हो, तो MARINARA_REQUIRE_ADMIN_SECRET_ON_LOOPBACK=true सेट करें। अगर REQUIRE_AUTH_FOR_LOOPBACK_PROXY=false है, तो आगे भेजे गए विज़िटर को भी लोकल छूट मिलती है। पब्लिक प्रॉक्सी या टनल के लिए इसे चालू रखें।
इंपोर्ट कहता है कि फ़ाइल पढ़ने लायक ZIP आर्काइव नहीं है
Marinara .charx कार्ड, .marinara पैकेज, एजेंट पैकेज और कस्टम एजेंट रिपॉज़िटरी को ZIP आर्काइव के रूप में पढ़ता है। जो आर्काइव खराब हो, या जिसकी सामग्री उसकी फ़ाइल लिस्ट से मेल न खाए, उसे Marinara The file is not a readable ZIP archive (या Could not read .marinara package) के साथ ठुकरा देता है। आम तौर पर इसकी वजह अधूरा डाउनलोड होती है: फ़ाइल दोबारा डाउनलोड करें। अगर आर्काइव आपने खुद बनाया है, तो उसे अपने सिस्टम के कंप्रेस करने वाले विकल्प, zip या 7-Zip से दोबारा बनाएँ।
Package contains too many files का मतलब है कि किसी एजेंट पैकेज या रिपॉज़िटरी में 8,192 से ज़्यादा फ़ाइलें हैं। .marinara package has too many entries का मतलब है कि किसी .marinara पैकेज में 8 से ज़्यादा फ़ाइलें हैं। फ़ालतू फ़ाइलें हटाएँ और फिर से कोशिश करें।
Conversation शेड्यूल या Noodle गलत टाइमज़ोन इस्तेमाल करते हैं, या Etc/Unknown दिखाते हैं
Conversation शेड्यूल के लिए Conversation Chat Settings या किसी कैरेक्टर के शेड्यूल एडिटर में Schedule timezone चुनें। Use device से यह रीसेट होता है।
Noodle या सर्वर के दूसरे कामों के लिए .env से कोई भी खाली TZ= लाइन हटाएँ और Marinara दोबारा शुरू करें, ताकि वह होस्ट का टाइमज़ोन इस्तेमाल करे। टाइमज़ोन खुद सेट करना हो, तो TZ=Europe/Warsaw जैसा IANA नाम इस्तेमाल करें।
Android की समस्याएँ
Android ऐप Connecting या Waiting for Server पर अटक जाता है
Android ऐप, Termux के ऊपर एक छोटा सा खोल है। Termux, Android का एक Linux टर्मिनल ऐप है, जो असली Marinara सर्वर चलाता है।
- Install / Start Marinara पर टैप करें।
- अगर Android, Termux इंस्टॉल करने को कहे, तो पूछे जाने पर मंज़ूरी दें।
- अगर Android, Termux में कमांड चलाने की अनुमति माँगे, तो अनुमति दें।
- लॉन्चर के सर्वर शुरू करने का इंतज़ार करें, फिर ऐप पर लौटें।
ऐप अपना निजी localhost क्रेडेंशियल बनाता है और अपने आप साइन इन करता है। आपको कभी कोई सीक्रेट पेस्ट नहीं करना पड़ता। CSRF_TRUSTED_ORIGINS में null, http://null या APK का सीक्रेट न जोड़ें।
यह भी पक्का करें कि ऐप और Termux एक ही पोर्ट इस्तेमाल करते हैं। डिफ़ॉल्ट 7860 है। अगर आपने ऐप किसी दूसरे पोर्ट के साथ बनाया है, तो Termux की .env में वही PORT सेट करें।
Android localhost लॉगिन पेज खोलता है या 401/503 लौटाता है
APK से मैनेज किए गए Termux इंस्टॉल localhost को हर इंस्टॉल के अलग निजी सीक्रेट से सुरक्षित करते हैं, और ऐप अपने आप साइन इन करता है। अगर ऐप के अंदर लॉगिन पेज दिखे, तो नया APK इंस्टॉल करें, फिर से Install / Start Marinara पर टैप करें और Termux का काम पूरा होने पर लौटें।
ऑरिजिन null का नाम लेने वाली एरर का मतलब है कि APK और सर्वर की जोड़ी पुरानी है। .env बदलने से यह ठीक नहीं हो सकता। APK और Marinara अपडेट करें।
उसी फ़ोन पर ब्राउज़र खोलने के लिए Android लॉन्चर में Open in browser (ब्राउज़र में खोलें) पर टैप करें, फिर Retry connection (कनेक्शन फिर आज़माएँ) पर। सर्वर रीस्टार्ट होने या सेशन खत्म होने के बाद इसे इसी तरह दोबारा खोलें। लॉन्चर पर लौटने के लिए Settings → General → App Behavior → Open Android launcher (app or browser) (सेटिंग्स → जनरल → ऐप का व्यवहार → Android लॉन्चर खोलें (ऐप या ब्राउज़र)) इस्तेमाल करें।
पुराने APK cat ~/.marinara-engine/android-secret से मिली वैल्यू के साथ /android-login पर साइन इन करते हैं। ब्राउज़र लिंक एक ही बार काम करता है और एक मिनट बाद एक्सपायर हो जाता है, इसलिए लॉन्चर से नया लिंक खोलें।
- 401: पेस्ट किया गया सीक्रेट या चैलेंज ठुकरा दिया गया।
/android-loginदोबारा लोड करें और मौजूदा वैल्यू पेस्ट करें। - 503: सर्वर को गलत फ़ॉर्मैट वाला सीक्रेट मिला।
./start-termux.shसे दोबारा शुरू करें। अगर लॉन्चर बताए कि उसकी सीक्रेट फ़ाइल गलत या खाली है, तो ऐप में Install / Start Marinara पर टैप करें, ताकि सीक्रेट फिर से बन जाए।
लोकल mari कमांड वही फ़ाइल अपने आप पढ़ती है। सीक्रेट को स्क्रीनशॉट और इश्यू रिपोर्ट से बाहर रखें।
Android अपडेट exit status 134 पर रुक जाता है
बिल्ड के किसी चरण में Android की मेमोरी खत्म हो गई। लॉन्चर दोबारा चलाएँ:
./start-termux.shफिर भी रुक जाए, तो दूसरे ऐप बंद करें, Termux दोबारा खोलें और फिर कोशिश करें।
Marinara चलते समय Termux बंद या रीस्टार्ट हो जाता है
सर्वर चलने के दौरान लॉन्चर wake lock माँगता है और हर सेशन को ~/.marinara-engine/logs/ में सेव करता है। अचानक रीस्टार्ट के बाद रिपोर्ट में सबसे नई server-*.log फ़ाइल जोड़ें। अगर फ़ाइल के अंत में Marinara या Node की एरर नहीं है, तो संभवतः Android या फ़ोन निर्माता ने Termux को बंद किया था।
Android सेटिंग्स में Termux को बैकग्राउंड में चलने दें और उसके लिए बैटरी ऑप्टिमाइज़ेशन हटाएँ। termux-wake-lock और termux-wake-unlock मानक Termux के साथ आते हैं। ये सेटिंग्स निर्माता के हर तरह के प्रोसेस किल को नहीं रोक सकतीं।
Termux को फ़ोरग्राउंड में लाने तक Marinara जवाब देना बंद कर देता है
चैट "Opening chat..." पर अटकी रहती हैं, ऐप Server unreachable बताता है, Support Diagnostics की कॉपी में सर्वर वाली फ़ील्ड पर Unreachable (request timed out) दिखता है, और Termux खोलते ही सब कुछ ठीक हो जाता है। Android के cached-app freezer ने Termux प्रोसेस को रोक दिया है। फ़ोन कनेक्शन तो स्वीकार कर लेता है, पर फ़्रीज़ हुआ सर्वर कभी जवाब नहीं देता। wake lock इसे नहीं रोकता। सेशन लॉग में एरर के बजाय फ़्रीज़ वाले समय के टाइमस्टैम्प में खाली अंतराल दिखता है।
Termux को बैटरी ऑप्टिमाइज़ेशन से छूट दें, उसे बैकग्राउंड में चलने की अनुमति दें, अगर आपका फ़ोन सपोर्ट करता है तो हाल के ऐप्स वाली स्क्रीन में Termux को लॉक करें, और उसकी नोटिफ़िकेशन दिखती रहने दें। फिर भी फ़्रीज़ होता रहे, तो Marinara इस्तेमाल करते समय Termux को फ़ोरग्राउंड में रखें या स्क्रीन चालू रखें।
डिपेंडेंसी इंस्टॉल करते समय Android अपडेट की जगह खत्म हो जाती है
अपडेट के दौरान अस्थायी रूप से बहुत जगह घिरने की वजह आमतौर पर pnpm का डिपेंडेंसी स्टोर होता है, खास तौर पर कई रिलीज़ के बाद या बीच में रुके रीइंस्टॉल के बाद। मौजूदा लॉन्चर पुराने पैकेज हटा देता है, और ऐप के अंदर होने वाले अपडेट सिर्फ़ Android वाले पैकेज इंस्टॉल करते हैं। अगर किसी पुराने लॉन्चर ने डिवाइस भर दी है, तो जगह खाली करें और फिर कोशिश करें:
cd Marinara-Engine
git pull --ff-only
pnpm store prune
./start-termux.shdata, storage या marinara-engine.db न हटाएँ, क्योंकि इनमें आपकी चैट और सेटिंग्स हो सकती हैं। फिर भी रुक जाए, तो Installing dependencies से आगे की लाइनें कॉपी करें और रिपोर्ट में फ़ोन की खाली जगह और मेमोरी भी बताएँ।
Android पर Stable और Staging के बीच बदलने पर इन-ऐप अपडेट फ़ेल होता है
चैनल बदलने पर लगभग पूरी डिपेंडेंसी दोबारा इंस्टॉल होती है, जो Termux के स्टोरेज पर धीमी होती है। इन-ऐप अपडेटर हर चरण को अतिरिक्त समय देता है। अगर अपडेट फिर भी फ़ेल हो, तो एरर फ़ेल हुए चरण का नाम बताती है और उसके आउटपुट का आखिरी हिस्सा दिखाती है। डिपेंडेंसी या लॉकफ़ाइल की असली एरर वहीं दिखती है। आप एरर के संकेत में दी गई कमांड से Termux में हाथ से भी अपडेट कर सकते हैं, या पहले जगह खाली कर सकते हैं:
cd Marinara-Engine
pnpm store prune
./start-termux.shDocker की समस्याएँ
वॉल्यूम माउंट पर कंटेनर की परमिशन एरर
- अपडेट के बाद नेम्ड वॉल्यूम:
docker compose pull && docker compose up -dचलाएँ। आधिकारिक इमेज शुरू होते समय ओनरशिप ठीक कर देती है। - बाइंड माउंट: होस्ट फ़ोल्डर को यूज़र और ग्रुप ID
1000के लिए लिखने योग्य बनाएँ, या नेम्ड वॉल्यूम इस्तेमाल करें। - Fedora या RHEL जैसे SELinux सिस्टम: वॉल्यूम माउंट में
:Zसफ़िक्स जोड़ें।
Raspberry Pi 4 पर Lite कंटेनर क्रैश होता है
अगर Raspberry Pi 4 या उस जैसे किसी ARM डिवाइस पर lite इमेज हर AI रिक्वेस्ट भेजते ही रीस्टार्ट हो जाए, तो एग्ज़िट कोड देखें। Exit 132 या SIGILL (CPU को ऐसा निर्देश मिला जिसे वह चला नहीं सकता) कुछ ARM चिप पर lite इमेज के Node बिल्ड की एक जानी-पहचानी अपस्ट्रीम गड़बड़ी की ओर इशारा करता है। उस डिवाइस पर सामान्य इमेज इस्तेमाल करें।
कोई Server Extension कहता है कि सपोर्टेड सैंडबॉक्स उपलब्ध नहीं है
Server Extensions और Professor Mari के रॉ शेल कमांड सिर्फ़ macOS Seatbelt या Linux Bubblewrap के साथ चलते हैं। नेटिव Linux होस्ट पर bwrap इंस्टॉल करें और Marinara दोबारा शुरू करें। आधिकारिक Docker इमेज में Bubblewrap शामिल है, लेकिन डिफ़ॉल्ट कंटेनर उसके नेस्टेड नेमस्पेस नहीं बना सकता, इसलिए Marinara ये सुविधाएँ बंद रखता है।
अगर आपको कंटेनर के ज़्यादा बड़े अधिकार मंज़ूर हैं, तो इसे docker-compose.yml के बगल में docker-compose.override.yml नाम से सेव करें, फिर कंटेनर दोबारा बनाएँ:
services:
marinara:
environment:
MARINARA_DOCKER_USER: root
cap_add:
- SYS_ADMIN
security_opt:
- apparmor=unconfinedWarning: सर्वर को SYS_ADMIN के साथ और बिना AppArmor प्रोफ़ाइल के root के रूप में चलाना अधिकारों में बड़ी बढ़ोतरी है। सिर्फ़ यह संदेश छिपाने के लिए इसे चालू न करें।
Docker की डिफ़ॉल्ट seccomp प्रोफ़ाइल जोड़ी गई क्षमताओं के हिसाब से ढल जाती है, इसलिए मौजूदा Docker पर seccomp=unconfined की ज़रूरत नहीं होनी चाहिए।
Windows, Android और दूसरे असमर्थित होस्ट Server Extension चलाने से मना कर देते हैं। Browser Extensions फिर भी अपने सैंडबॉक्स में चलते हैं।
एक्सटेंशन की समस्याएँ
Addons में External Extensions नहीं दिखता
यह सेक्शन तब तक छिपा रहता है जब तक दोनों गेट न खुल जाएँ।
- होस्ट की
.envमेंENABLE_EXTERNAL_EXTENSIONS=trueसेट करें। - थोड़ा रुकें, फिर Settings → Advanced → Danger Zone (सेटिंग्स → एडवांस्ड → डेंजर ज़ोन) खोलें, डेटा मिटाने वाले कंट्रोल से नीचे स्क्रॉल करें, और Allow third-party extension imports चालू करें।
अगर स्विच दबाया न जा सके, तो होस्ट का फ़्लैग अब भी false है या ऐप ने बदलाव नहीं देखा है। पक्का करें कि आपने वही चालू .env फ़ाइल बदली है जो सर्वर कॉन्फ़िगरेशन में बताई गई है। Docker पर यह आमतौर पर /app/data/.env होती है।
जब तक कोई भी गेट बंद है, बाहरी एक्सटेंशन के रिकॉर्ड न दिखते हैं, न चल सकते हैं। गेट दोबारा खोलने पर वे अपने आप चालू नहीं होते।
इंपोर्ट किया गया ब्राउज़र एक्सटेंशन दिखता तो है, पर काम नहीं करता
Settings → Addons → External Extensions (सेटिंग्स → ऐडऑन → बाहरी एक्सटेंशन) में उसे खोलें और Requested access पढ़ें। क्षमताओं की घोषणा के बिना वाले पुराने marinara.extension v1 पैकेज Full page access दिखाते हैं। सिर्फ़ उसी हैश को मंज़ूरी दें जिसे आपने खुद जाँचा हो और जिस पर आपको भरोसा हो।
क्षमताओं की खाली लिस्ट के साथ दोबारा एक्सपोर्ट किया गया पैकेज सुरक्षित सैंडबॉक्स एक्सटेंशन माना जाता है, और पेज के DOM पर निर्भर कोड काम नहीं करेगा। उसके मैनिफ़ेस्ट में full_page_access तभी जोड़ें जब आपको मंज़ूर हो कि उस कोड को पूरा पेज, ब्राउज़र स्टोरेज, नेटवर्क API और आपका सेशन मिल जाएगा।
फ़ुल पेज वाला एक्सटेंशन बंद करने के बाद अगर कोई टूलबार आइटम, ओवरले या लिसनर बचा रह जाए, तो Marinara दोबारा लोड करें। सफ़ाई पूरी होगी, इसकी गारंटी नहीं, क्योंकि पेज का कोड ऐसे असर छोड़ सकता है जिन्हें Marinara ट्रैक नहीं करता।
मल्टीप्लेयर कनेक्शन या टर्न की समस्याएँ
| लक्षण | हल |
| कंट्रोल उपलब्ध नहीं | सही Marinara की .env में MULTIPLAYER_ENABLED=true डालें, उसे रीस्टार्ट करें, फिर सेटिंग अलग से चालू करें। Android नेटिव रैपर जॉइन नहीं कर सकता। |
| होस्ट उपलब्ध नहीं | अलग और पहुँच में आने वाला HTTPS रूम पोर्ट, सही सर्टिफ़िकेट चेन और होस्टनेम, और निमंत्रण से मेल खाता फ़िंगरप्रिंट इस्तेमाल करें। TLS जाँच बंद न करें, भरोसेमंद ऑरिजिन में null न जोड़ें, सामान्य API बाहर न खोलें, और होस्ट का दिया हुआ क्लाइंट न खोलें। |
| मंज़ूरी का इंतज़ार | होस्ट को Players में आपको मंज़ूरी देनी होगी। मंज़ूरी से पहले आपको कोई इतिहास नहीं दिखता। निमंत्रण की समय-सीमा खत्म हो गई हो, तो नया माँगें। |
| डिस्कनेक्ट | अपना Marinara चालू रखें। सेशन चालू रहने तक यह उसी होस्ट से दोबारा जुड़ता है, और न भेजे गए ड्राफ़्ट बने रहते हैं। रीस्टार्ट के बाद फिर से जॉइन करें। वही पर्सोना नाम रखना हो, तो पहले होस्ट से अपनी पुरानी सीट हटाने को कहें। |
| Game इंतज़ार कर रहा है | Players खोलें। डिस्कनेक्ट हुए खिलाड़ी अपने आप पास नहीं होते। होस्ट Pass, Kick या Pause चुन सकता है। |
| जेनरेशन बीच में रुकी | राउंड दोबारा न भेजें। होस्ट सेव हुआ नैरेशन और स्थिति जाँचे, फिर रूम आगे बढ़ाए या बंद करे। मल्टीप्लेयर किसी अस्पष्ट रिक्वेस्ट को कभी दोबारा नहीं चलाता और दुनिया पर उसका असर दो बार लागू नहीं करता। |
| कमांड पर रोक या मीडिया गायब | रूम सिर्फ़ टेक्स्ट ले जाते हैं। कंपैटिबिलिटी तालिका देखें। किसी साथी की दी हुई फ़ाइल या एक्सटेंशन इंस्टॉल न करें। |
कनेक्शन एरर रिपोर्ट करते समय मोड, प्लैटफ़ॉर्म, दिखने वाली एरर और मंज़ूरी काम आई या नहीं, यह भी बताएँ। निमंत्रण, रूम के पासवर्ड, सेशन टोकन, निजी इतिहास या API कुंजियाँ पोस्ट न करें।
लॉगिन के पीछे Android Chrome पर PWA के रूप में इंस्टॉल करना फ़ेल होता है
HTTPS वाला पता इस्तेमाल करें, साइन इन करें, और Marinara अपडेट करने के बाद पेज रीलोड करें। ऐप अपना मैनिफ़ेस्ट क्रेडेंशियल के साथ माँगता है, इसलिए लॉगिन चालू रह सकता है। अगर इंस्टॉल का विकल्प अब भी उपलब्ध न हो, तो देखें कि आपकी प्रॉक्सी /manifest.json को लॉगिन पेज या एरर के बजाय JSON के रूप में भेजती है।
ज़्यादा मदद पाना
- Settings → Advanced → Message Tools (सेटिंग्स → एडवांस्ड → संदेश टूल) खोलें और Debug mode चालू करें। यह प्रॉम्प्ट और जवाब को सर्वर कंसोल में लॉग करता है।
- अपना ऑपरेटिंग सिस्टम, Node.js वर्ज़न और कंसोल से पूरी एरर का टेक्स्ट नोट करें।
- कुछ भी साझा करने से पहले API कुंजियाँ, एक्सेस टोकन, एडमिन सीक्रेट और निजी चैट की सामग्री हटा दें।
फिर कम्युनिटी से पूछें:
- खुले इश्यू पढ़ें।
- Discord जॉइन करें।
- ऊपर बताई जानकारी के साथ उन्हीं GitHub इश्यू में बग रिपोर्ट दर्ज करें।
मिलती-जुलती गाइड
- अक्सर पूछे जाने वाले सवाल
- सर्वर कॉन्फ़िगरेशन रेफ़रेंस
- रिमोट एक्सेस
- Marinara Engine को अपडेट करना
- किसी AI प्रोवाइडर से कनेक्ट करना
- बिल्ट-इन मॉडल का सेटअप
- Game Mode: शुरुआत
- सेटिंग्स का परिचय
GitHub से बने सोर्स आर्काइव के बाइट हमेशा एक जैसे रहेंगे, इसकी कोई गारंटी नहीं, भले ही उनके कमिट की सामग्री न बदले। मेल न खाने की समस्या को कभी इस तरह "ठीक" न करें कि यूज़र की मशीन पर दिखे बाइट स्वीकार कर लिए जाएँ या वेरिफ़िकेशन कमज़ोर कर दिया जाए। रनटाइम इनपुट दोबारा पिन करना सिर्फ़ रिव्यू किए गए Engine बदलाव में ही करें:
- कोई न बदलने वाला अपस्ट्रीम रिविज़न या रिलीज़ एसेट चुनें और अपस्ट्रीम के बदलाव रिव्यू करें।
- आर्टिफ़ैक्ट को किसी अस्थायी फ़ोल्डर में डाउनलोड करें, उसके बाइट की सटीक गिनती नोट करें, और उसका SHA-256 डाइजेस्ट अलग से निकालें।
runtime-integrity-manifest.tsमें रिविज़न, URL, साइज़ और डाइजेस्ट अपडेट करें। MLX के लिए Apple Silicon/Python 3.12 पर पिन किए गए uv वर्ज़न के साथpackages/server/src/assets/mlx-runtime-requirements.lockको उसकी.inफ़ाइल से दोबारा बनाएँ, हर डिपेंडेंसी बदलाव रिव्यू करें, औरrequirementsLockSha256अपडेट करें।pnpm regression:runtime-integrity,pnpm checkचलाएँ, और प्रभावित प्लैटफ़ॉर्म पर एक असली, साफ़ रनटाइम इंस्टॉलेशन करके देखें।- यूज़र से दोबारा कोशिश करने को कहने से पहले रिव्यू किया हुआ Engine अपडेट रिलीज़ करें। चेकसम को हाथ से बदलने का विकल्प न दें।