עדכון גרסה
עדכון Nodaro באירוח עצמי במשיכת אימג׳ חדש יותר, קיבוע על תג של גרסה, הכנה לגרסה ראשית עם גיבוי וחזרה לגרסה קודמת בשחזור הגיבוי.
עדכון הגרסה של Nodaro באירוח עצמי פירושו למשוך אימג׳ חדש יותר של האפליקציה ולהפעיל אותה מחדש. במערך השירותים המובנה, המיגרציות החדשות של מסד הנתונים מוחלות אוטומטית באתחול, כך שאין צורך להריץ שום דבר נוסף. לפני גרסה ראשית, קראו את עדכוני הגרסה וצרו גיבוי, כי אין דרך לחזור לגרסה קודמת.
תגי אימג׳
כל בנייה של הענף main מפרסמת את האימג׳ של האפליקציה, ghcr.io/nodaroai/nodaro-community, בתג latest ובתג של ה-commit שלה. כל שחרור גרסה מוסיף שלושה תגי גרסה.
| תג | משמעות |
|---|---|
vX.Y.Z, למשל v2.0.0 | בנייה אחת בדיוק, והתג אף פעם לא זז. קבעו עליו את ההתקנה כדי שהיא תישאר יציבה וזהה בייט אחר בייט. |
vX.Y | זז עם גרסאות התיקון של גרסה משנית אחת. |
vX | זז לאורך גרסה ראשית שלמה: תכונות ותיקונים מגיעים, שינויים שוברים אף פעם לא. |
latest | צמוד ל-main: כל שינוי שמוזג, בין שהוא שוחרר בגרסה ובין שלא, כולל גרסאות ראשיות. |
<sha> | commit אחד, והתג אף פעם לא זז. הדרך השנייה להבטיח שתקבלו בדיוק את אותה בנייה. |
בחרו את התג במשתנה NODARO_IMAGE בקובץ .env, למשל NODARO_IMAGE=ghcr.io/nodaroai/nodaro-community:v1.23.0.
עדכון ההתקנה
כדי לעדכן רק את האפליקציה:
docker compose -f docker-compose.community.yml pull nodaro
docker compose -f docker-compose.community.yml up -d nodaroכדי לעדכן גם את קובץ ה-Compose, את הסקריפטים שב-tools/ ואת השירותים המובנים:
git pull
docker compose -f docker-compose.community.yml pull
docker compose -f docker-compose.community.yml up -dאם אתם בונים את האימג׳ מקוד המקור, למשל עבור מהדורת Business, החליפו את pull ב-build. הפקודה pull הייתה מורידה את האימג׳ של מהדורת Community שפורסם.
המיגרציות נשמרות תואמות קדימה, עם טבלאות חדשות ועמודות נוספות. שינוי הרסני מצוין במפורש בעדכוני הגרסה. אם אתם צריכים להיזהר, קבעו את ההתקנה על תג או על commit.
לפני גרסה ראשית
גרסה ראשית משנה את המספר הראשון, למשל מ-v1 ל-v2. רק בגרסאות ראשיות מותר לשנות משתני סביבה, את הטופולוגיה של ה-Compose או התנהגות שאתם עשויים להסתמך עליה.
- קראו את עדכוני הגרסה ב-GitHub.
- צרו גיבוי עם
tools/community-backup.sh. ראו את הדף גיבוי ושחזור. - עדכנו, ואז בדקו את הדף
/setup: כל הכרטיסים צריכים להיות ירוקים.
חזרה לגרסה קודמת
אין דרך לבטל מיגרציות: מסד הנתונים מתקדם רק קדימה. כדי לחזור לגרסה קודמת:
- שחזרו את הגיבוי שיצרתם לפני העדכון:
tools/community-restore.sh <archive>. - קבעו את ההתקנה על האימג׳ הישן, למשל
NODARO_IMAGE=ghcr.io/nodaroai/nodaro-community:v1.25.1. תגיvX.Y.Zמלאים אף פעם לא זזים. - הפעילו את האפליקציה עם
docker compose -f docker-compose.community.yml up -d nodaro.
עם פרויקט Supabase מנוהל
כשמריץ המיגרציות כבוי, החילו את הקבצים החדשים שב-supabase/migrations/ לפי סדר שמות הקבצים, לפני שאתם מפעילים מחדש עם האימג׳ החדש. מיגרציה חסרה בדרך כלל לא עוצרת את ה-API, אבל היכולות שזקוקות לה מחזירות 500 עד שהטבלאות שלהן קיימות. ראו את הדף מסד נתונים.
איזו גרסה רצה אצלכם
הגרסה שרצה מוצגת בסרגל הצדדי של האפליקציה ובנתיב /health. לחצו על הגרסה כדי לקרוא את עדכוני הגרסה שלה. כשיש גרסה חדשה יותר, מופיעה נקודה אדומה ליד הגרסה. אז אותה תיבת דו־שיח מציגה את עדכוני הגרסה החדשים ביותר ואת פקודות השדרוג המדויקות, כשהגיבוי הוא השלב הראשון.
בדיקת העדכונים שולחת בקשה אנונימית אחת ביום ל-API של GitHub. אחרי בדיקה שנכשלה, Nodaro מנסה שוב אחרי 5 דקות, ואחר כך בתדירות הולכת ופוחתת, עד שבדיקה מצליחה.
| משתנה | ברירת מחדל | מה הוא עושה |
|---|---|---|
NODARO_UPDATE_CHECK | on | הערך off מכבה את הבדיקה לגמרי. אף בקשה לא יוצאת מההתקנה, הנתיב GET /v1/version מחזיר רק את הגרסה שרצה, והסרגל הצדדי מציג את הגרסה כטקסט רגיל. מיועד להתקנות מנותקות מהאינטרנט. |
NODARO_UPDATE_CHECK_TOKEN | ריק (אנונימי) | אסימון GitHub שהבדיקה משתמשת בו כדי לקרוא את רשימת הגרסאות הציבורית. הוא לא צריך אף הרשאה. |
GitHub מאפשר 60 בקשות אנונימיות בשעה לכל כתובת יציאה. התקנה עם כתובת משלה אף פעם לא צריכה אסימון. בהתקנה שחולקת את הכתובת שלה עם אחרים, ייתכן שזרים כבר מיצו את המכסה הזאת. אז תווית הגרסה חוזרת לגרסה המובנית, ורשימת עדכוני הגרסה נשארת ריקה עד שניסיון חוזר מצליח. שורת היומן [update-check] … read failed: HTTP 403 (rate limit: 0 of 60 left…) היא הסימן לכך. האסימון נשלח רק ל-api.github.com ולעולם לא נרשם ביומן.
קובץ ה-Compose לא מעביר את שני המשתנים האלה מהקובץ .env. הוסיפו אותם תחת environment: של השירות nodaro:
nodaro:
environment:
# ...the variables already listed...
NODARO_UPDATE_CHECK: "off"הפעילו מחדש כדי שהשינוי ייכנס לתוקף.
עדכון שרת מ-GitHub Actions
במאגר הקוד יש workflow לדוגמה, examples/deploy-host.yml, שמעדכן שרת Nodaro דרך SSH:
- העתיקו אותו למאגר הקוד שלכם, לתיקייה
.github/workflows/. - הגדירו את הסודות של מאגר הקוד
DEPLOY_HOST,DEPLOY_USERו-DEPLOY_SSH_KEY. - התאימו לשרת שלכם את תיקיית ההתקנה ואת פקודת ה-Compose שבסקריפט שלו.
- הריצו אותו ידנית מהלשונית Actions, ובחרו את תג האימג׳ לפריסה.
ה-workflow מתחבר לשרת, מריץ docker compose pull ו-docker compose up -d, מחכה עד 90 שניות לתשובה מ-/health, ואז מוחק שכבות ישנות של אימג׳ים. לעולם אל תתחילו פריסה לסביבת ייצור בעקבות push לענף, והשתמשו בשמות סודות נפרדים לכל סביבה.
שאלות נפוצות
איך מעדכנים Nodaro באירוח עצמי?
הריצו docker compose -f docker-compose.community.yml pull nodaro, ואחר כך docker compose -f docker-compose.community.yml up -d nodaro. במערך השירותים המובנה, המיגרציות של מסד הנתונים מוחלות אוטומטית באתחול.
על איזה תג אימג׳ כדאי לקבע את ההתקנה?
קבעו את ההתקנה על תג vX.Y.Z מלא כדי שהיא תישאר יציבה וזהה בייט אחר בייט. התג vX.Y מקבל את התיקונים של גרסה משנית אחת, התג vX מקבל תכונות ותיקונים בלי שינויים שוברים, והתג latest מתעדכן בכל שינוי שמוזג, כולל גרסאות ראשיות.
האם אפשר לחזור לגרסה קודמת?
לא ישירות, כי המיגרציות של מסד הנתונים מתקדמות רק קדימה. שחזרו את הגיבוי שיצרתם לפני העדכון, ואז קבעו את ההתקנה על התג של האימג׳ הישן. צרו גיבוי לפני כל גרסה ראשית.
איך יודעים שיש עדכון?
כשיש גרסה חדשה יותר, מופיעה נקודה אדומה ליד הגרסה בסרגל הצדדי של האפליקציה. לחצו על הגרסה כדי לראות את עדכוני הגרסה ואת פקודות השדרוג המדויקות. הבדיקה היא בקשה אנונימית אחת ביום ל-GitHub.
האם אפשר לכבות את בדיקת העדכונים בהתקנה מנותקת מהאינטרנט?
כן. הוסיפו את NODARO_UPDATE_CHECK עם הערך off תחת environment של השירות nodaro בקובץ docker-compose.community.yml. מאותו רגע אף בקשה לא יוצאת מההתקנה, והגרסה מוצגת כטקסט רגיל.
דפים קשורים
גיבוי ושחזור
תצורה
מסד נתונים
פתרון בעיות
עודכן לאחרונה
כניסה מאוחדת (SSO)
התחברות ל-Nodaro באירוח עצמי דרך ספק זהות מהימן: הגדירו את EXTERNAL_SSO_PROVIDERS, בחרו כללי קישור חשבונות ואפשרו התחברות רק דרך SSO.
הרחבת קיבולת
הרחיבו את Nodaro באירוח עצמי מעבר לקונטיינר אחד: פצלו את ה-API, את ה-workers ואת ה-orchestrator, וכווננו את המקביליות, את Redis ואת האחסון.