דילוג לתוכן
תיעוד Nodaro
תיעודמדריך הרכיביםמודליםתבניותסוכני AI (MCP)מפתחיםאירוח עצמימחקרהשוואות

פתרון בעיות

פתרון בעיות נפוצות ב-Nodaro באירוח עצמי, החל מהדף ‎/setup: תסמינים ותיקונים לשגיאות הפעלה, לפורטים, ל-CORS, למיגרציות, לאחסון, לתורים ולמפתחות.

בדף הזה מפורטות הבעיות הנפוצות ביותר ב-Nodaro באירוח עצמי, כל אחת עם התסמין שלה והתיקון שלה. התחילו מהדף /setup, שמציג את רובן במבט אחד.

מתחילים בדף /setup

בכל התקנה באירוח עצמי יש מסך תקינות שמתעדכן בזמן אמת, בכתובת http://<your-host>/setup. לא צריך להתחבר כדי לפתוח אותו. הוא מציג רק אם כל חלק קיים ועובד, ואף פעם לא מציג סוד.

  • כרטיסים למסד הנתונים, ל-Redis, לאחסון, למפתח ההצפנה ולמפתחות הספק, בירוק או באדום. לכרטיס של מסד הנתונים יש מצב משלו: מיגרציות חסרות.
  • רמז בכל כרטיס שנכשל, עם שמות המשתנים שצריך לבדוק.
  • עדכון בזמן אמת: הדף בודק שוב כל 5 שניות.

כשהדף מציג ה-API אינו נגיש, שרת הווב פועל אבל ה-API לא עונה. בדקו את יומני הקונטיינר עם docker compose -f docker-compose.community.yml logs -f, ובדקו ששום דבר לא חוסם את פורט 3000.

ההתקנה לא עולה

Missing or invalid env vars (משתני סביבה חסרים או לא תקינים) בהפעלה. ההודעה מפרטת את המשתנים שלא עברו את בדיקת התקינות. הסיבות הנפוצות הן SUPABASE_SERVICE_ROLE_KEY ריק ו-INTERNAL_ORCHESTRATOR_SECRET שקצר מ-32 תווים.

port is already allocated (הפורט כבר תפוס) ב-docker compose up. מערך השירותים חושף במארח רק שני פורטים: הפורט 3000 לאפליקציה והפורט 9001 לקונסולת MinIO, שזמינה רק דרך ממשק ה-loopback. Redis ומסד הנתונים אף פעם לא משתמשים בפורט של המארח. שנו את צד המארח במיפוי המתנגש בקובץ docker-compose.community.yml, למשל "3001:3000". אם מדובר בפורט של האפליקציה, הגדירו גם את PUBLIC_URL בהתאם.

המיגרציות נכשלו באתחול. היומן של האפליקציה מציין את הקובץ המדויק. ה-API מסרב לעלות מול מסד נתונים שהמיגרציות הוחלו עליו רק בחלקן. תקנו את הסיבה והריצו שוב docker compose -f docker-compose.community.yml up: על קבצים שכבר הוחלו מדלגים.

password authentication failed for user "supabase_auth_admin" (אימות הסיסמה של המשתמש נכשל) ביומנים של שירות ההתחברות. ה-volume db-data ישן יותר מהגדרת התפקידים של מסד הנתונים, או ששיניתם את POSTGRES_PASSWORD אחרי ההפעלה הראשונה. הסיסמאות של התפקידים נקבעות לפי POSTGRES_PASSWORD רק בהפעלה הראשונה. מחקו את ה-volume עם docker compose -f docker-compose.community.yml down -v, מה שמוחק את הנתונים שלכם, או שנו את הסיסמאות של התפקידים ידנית, כשאתם מחוברים כ-supabase_admin.

בניית ה-Docker נכשלת בהורדה או באימות של ארכיון ה-ffmpeg. זה רלוונטי רק כשאתם בונים את האימג׳ בעצמכם. ה-Dockerfile מקבע בנייה סטטית מסוימת של ffmpeg לכל ארכיטקטורה, עם ARG FFMPEG_TARBALL_URL_* ו-ARG FFMPEG_TARBALL_SHA256_*, כי אודיו ווידאו מרונדרים משתנים בין גרסה לגרסה של ffmpeg. הורדה שנכשלה או סכום ביקורת שלא תואם עוצרים את הבנייה, במקום לשנות את הפלט שלכם בלי שתשימו לב. הבנייה המקובעת היא גרסה של nodaroai/ffmpeg-static ב-GitHub: ffmpeg המקורי עם תיקון אחד במתזמן, שנבנה מקוד המקור, וקוד המקור והרישיונות שלו מפורסמים לצידו. בחרו גרסה שפורסמה, ועדכנו גם את הכתובת וגם את ה-SHA-256, בשתי הארכיטקטורות. התייחסו לזה כאל שדרוג אמיתי של ffmpeg, ובדקו אחר כך את הפלט המרונדר שלכם.

באימג׳ נמצאים הרישיונות של הקובץ הבינארי של ffmpeg, בתיקייה /usr/local/share/doc/ffmpeg-static/: LICENSE, SOURCE, LINK-TRACE.txt ותיקיית LICENSES/ עם נוסח הרישיון של כל ספרייה שמקושרת סטטית. הקובץ הבינארי של ffmpeg מופץ ברישיון GPL-3.0-or-later, וקוד המקור שלו מפורסם כקבצים מצורפים לאותה גרסה.

הדפדפן מציג שגיאות

העורך מופיע, אבל נשאר ריק או מציג ״טוען…״ בלי סוף. פתחו את הקונסולה של הדפדפן.

  • שגיאות CORS: ראו את הפריט הבא.
  • שגיאות התחברות: פתחו את /config.js בהתקנה שלכם. הקובץ צריך לציין כתובת Supabase שהדפדפן שלכם יכול להגיע אליה, PUBLIC_URL/supabase במערך השירותים המובנה, ואת מפתח ה-anon. הקונטיינר כותב את הקובץ באתחול מתוך PUBLIC_URL, FRONTEND_SUPABASE_URL ו-SUPABASE_ANON_KEY: תקנו אותם והפעילו מחדש.

שגיאות CORS בדפדפן. הכתובת http://localhost:3000 והכתובת שב-PUBLIC_URL מורשות תמיד, ולכן השגיאה אומרת שפתחתם את האפליקציה ב-origin אחר, כמו כתובת ברשת המקומית או פורט אחר. הגדירו את PUBLIC_URL ל-origin הזה, או רשמו origins נוספים ב-CORS_ORIGIN, מופרדים בפסיקים, למשל CORS_ORIGIN=http://192.168.1.20:3000. אחר כך הריצו docker compose -f docker-compose.community.yml up -d.

הכפתור עריכה ב-NodarCut, או הכפתור עריכה בתוצאת וידאו באפליקציה, מציג חלונית במקום העורך. עורך הווידאו שמתארח אצל Nodaro מאפשר הטמעה רק מ-http://localhost:3000. ב-origin אחר, הריצו עורך משלכם והגדירו את FREECUT_URL. ראו את הסעיף עורכי וידאו ואודיו בדף תצורה.

הכפתור עריכה בתוצאת אודיו לא עושה כלום, או מציג חלונית במקום העורך. Nodaro לא מארח עורך אודיו. הריצו AudioMass משלכם והגדירו את AUDIOMASS_URL.

מסד נתונים

מיגרציה נכשלת עם "relation … does not exist" (הטבלה … לא קיימת). מיגרציה רצה שלא לפי הסדר. החילו את הקבצים שב-supabase/migrations/ לפי סדר שמות הקבצים, למשל בעורך ה-SQL של Supabase. אפשר להריץ כל אחד מהם שוב על מסד נתונים שהוא כבר הוחל עליו.

קריאה חוזרת של OAuth נכשלת עם 500. הטבלאות של אפליקציות OAuth חסרות, כי מיגרציה מסוימת לא הוחלה. החילו את כל המיגרציות לפי סדר שמות הקבצים. ראו את הדף מסד נתונים.

ה-API עולה מחדש בלולאה. ה-API לא מצליח להגיע ל-Postgres. זה צפוי כל עוד מסד הנתונים לא פועל. כש-Postgres חוזר לפעול, הריצו docker compose -f docker-compose.community.yml restart nodaro.

אחסון

העלאות נכשלות במערך השירותים המובנה. פתחו את קונסולת MinIO בכתובת http://localhost:9001. פרטי הגישה שמוגדרים כברירת מחדל נמצאים בקובץ ה-Compose.

העלאות ל-Cloudflare R2 נכשלות עם 401 או 403. ודאו שלאסימון ה-API יש הרשאת Object Read & Write (קריאה וכתיבה של אובייקטים) על ה-bucket. אם יש דומיין מותאם אישית לפני R2, בדקו גם את הגדרת הגישה הציבורית של ה-bucket: Nodaro נותן לדפדפן כתובות מדיה ציבוריות, ולכן קריאה מה-bucket חייבת לעבוד בלי אימות.

כל בקשה לאחסון נכשלת עם שגיאת הרשאה או שגיאת נקודת קצה. הגדירו את R2_REGION לאזור של שירות האחסון. AWS, DigitalOcean Spaces ו-Supabase מקומי דוחים את ברירת המחדל auto, והשגיאה שלהם לא מזכירה את האזור.

כל העלאה נכשלת אחרי שהגדרתם את STORAGE_OBJECT_ACL. למפתחות האחסון אין הרשאה להגדיר ACL לאובייקטים. השאירו את המשתנה ריק, אלא אם שירות האחסון שלכם לא מקבל מדיניות bucket.

[storage] failed to create bucket (יצירת ה-bucket נכשלה) ביומן האתחול עם R2. לא מזיק. אסימונים של R2 לא יכולים ליצור buckets, וה-bucket שלכם כבר קיים.

הרצות ורכיבים

תהליכים נכנסים לתור, אבל אף פעם לא מתחילים לרוץ. בדקו את היומנים עם docker compose -f docker-compose.community.yml logs nodaro. ה-orchestrator מקבל את העבודה שלו מ-Redis, ולכן כש-Redis לא נגיש, שום דבר לא רץ. בדקו את REDIS_URL והריצו docker compose -f docker-compose.community.yml exec redis redis-cli ping, שאמור להחזיר PONG.

רכיב נכשל עם Missing API key (חסר מפתח API). הרכיב קורא לספק שאין לו מפתח. הוסיפו את המפתח בדף /setup או בקובץ .env. ראו את הדף מפתחות ספק.

תמונות ווידאו עובדים, אבל כל יכולות הטקסט נכשלות. המשתנה KIE_API_BASE_URL מצביע על פרוקסי שמעביר רק את נתיבי המדיה. ראו את הסעיף העברת התעבורה לספקים דרך פרוקסי משלכם בדף מפתחות ספק.

הדבקת מפתח או חיבור ל-Nodaro Cloud נכשלים עם EncryptionKeyMissingError. להתקנה אין מפתח הצפנה. עם פרויקט Supabase מנוהל, הגדירו את NODARO_ENCRYPTION_KEY לערך של 64 תווים הקסדצימליים, שמתקבל מהפקודה openssl rand -hex 32.

מפתחות הספק מוצגים כ-missing (חסר) אחרי שחזור. מסד הנתונים שוחזר בלי מפתח ההצפנה שמתאים לו. ראו את הדף גיבוי ושחזור.

רכיב נכשל עם 503 nodaro_connection_required. הרכיב הזה בלעדי ל-Nodaro, והוא צריך חיבור ל-Nodaro Cloud. ראו את הדף חיבור ל-Nodaro Cloud.

הרצות דרך Nodaro Cloud נכשלות עם Token expired (האסימון פג). האסימון של החיבור תקף 90 ימים, והתוקף שלו פג. לחצו על ניתוק, ואז על חיבור.

הרצות דרך Nodaro Cloud נכשלות עם 402 instance_cap_reached. ההתקנה הגיעה לתקרת ההוצאה החודשית שלה. העלו את התקרה ב-app.nodaro.ai, תחת חיוב › מופעים מחוברים.

הרצות תקינות מסומנות Execution orphaned (הרצה יתומה). שתי התקנות חולקות מסד נתונים אחד, עם מופעי Redis נפרדים. תנו לכל התקנה ערך RUNTIME_ENV משלה. ראו את הדף הרחבת קיבולת.

רכיב רינדור תלת־ממד Pro נכשל עם 503 SCENE_CAPABILITY_UNAVAILABLE. רכיב רינדור תלת־ממד Pro רץ על שירות בנייה ש-Nodaro מארח, והוא לא חלק מהמהדורות לאירוח עצמי. הרכיב אף פעם לא עובר בשקט למנוע רינדור אחר. השתמשו ברכיבים יצירת סצנת תלת־ממד ורינדור וידאו, שרצים על השרת שלכם.

התחברות ו-MCP

נתיבי ה-SSO מחזירים 404 unknown_provider. לא מוגדר ספק. בדקו את EXTERNAL_SSO_PROVIDERS, ובמערך השירותים של Compose, הוסיפו אותו תחת environment: של השירות nodaro. ראו את הדף כניסה מאוחדת (SSO).

כל קריאה ל-API נדחית עם 403 sso_required. פרופיל הממשק מאפשר רק SSO, והחשבון לא נוצר או קושר דרך SSO. ראו את הסעיף שיטות התחברות בדף מהדורות ופרופילי ממשק.

הבקשות של לקוח MCP נדחות עם 405 wrong_mcp_host. הלקוח משתמש בכתובת הראשית של האפליקציה. תנו לו במקומה את הכתובת של מארח ה-MCP שלכם. ראו את הדף MCP בהתקנה באירוח עצמי.

עדכונים

תווית הגרסה מציגה רק את הגרסה המובנית, ורשימת עדכוני הגרסה ריקה. בדיקת העדכונים לא מצליחה לקרוא מ-GitHub. שורת היומן [update-check] … read failed: HTTP 403 (rate limit: 0 of 60 left…) אומרת שכתובת היציאה שלכם כבר מיצתה את המכסה האנונימית של GitHub. הגדירו את NODARO_UPDATE_CHECK_TOKEN. ראו את הדף עדכון גרסה.

קבלת עזרה

אם עדיין נתקעתם, פתחו Issue ב-GitHub וצרפו את יומני ה-Docker של קונטיינר האפליקציה.

שאלות נפוצות

מאיפה מתחילים כש-Nodaro באירוח עצמי לא עובד כמו שצריך?

פתחו את הדף ‎/setup בהתקנה שלכם. הדף מציג בזמן אמת כרטיסים ירוקים או אדומים למסד הנתונים, ל-Redis, לאחסון, למפתח ההצפנה ולמפתחות הספק, עם רמז לכל כרטיס שנכשל, ולא צריך להתחבר כדי לפתוח אותו.

מה המשמעות של השגיאה "port is already allocated" (הפורט כבר תפוס) ב-docker compose up?

תוכנה אחרת במחשב שלכם משתמשת בפורט 3000 או 9001. שנו את צד המארח במיפוי הזה בקובץ docker-compose.community.yml, למשל ל-"3001:3000", והגדירו את PUBLIC_URL בהתאם.

למה העורך נשאר ריק או במצב טעינה בלי סוף?

פתחו את הקונסולה של הדפדפן. שגיאות CORS אומרות שה-origin שבו פתחתם את האפליקציה לא מורשה, ולכן הגדירו את PUBLIC_URL או את CORS_ORIGIN. שגיאות התחברות אומרות שהקובץ ‎/config.js מציין כתובת Supabase או מפתח anon שהדפדפן לא יכול להשתמש בהם.

למה התהליכים שלי אף פעם לא מתחילים לרוץ?

ה-orchestrator מקבל את העבודה שלו מ-Redis. בדקו את היומנים עם docker compose logs nodaro, בדקו את REDIS_URL, והריצו docker compose exec redis redis-cli ping, שאמור להחזיר PONG.

איפה אפשר לקבל עזרה בהתקנה באירוח עצמי?

פתחו Issue ב-github.com/nodaroai/app.nodaro.ai וצרפו את יומני ה-Docker של קונטיינר האפליקציה.

עודכן לאחרונה

בדף הזה