English
תנועה
נגישותפרטיות
סיפור הפרויקט07 / 152025 – היום

Launchpad

קובץ הגדרות אחד, ו-Launchpad מקים את השרת, מעלה את האפליקציות ושומר עליהן – גם ברשת בלי חיבור לאינטרנט.

תפקיד
יוזם ומפתח יחיד
ארגון
פרויקט אישי, בשימוש בתע״ץ (צה״ל)
תקופה
2025 – היום
סטטוס
הדור השני פרטי ועדיין בפיתוח

01 / האתגר

כל אפליקציית ווב צריכה בסוף לרוץ על שרת. צריך להתקין אותה, לדאוג שתעלה לבד אחרי הפעלה מחדש, שתענה בכתובת שלה ושתהיה מוגנת בתעודת אבטחה (המנעול בדפדפן). בעבודה ידנית זו רשימת משימות ארוכה, וב-Windows וב-Linux הצעדים שונים.

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

  • רשימת משימות ידנית ארוכה לכל שרת
  • צעדים שונים ב-Windows וב-Linux
  • ברשת סגורה אי אפשר להוריד כלום
  • עדכון שנכשל עלול להשאיר אתר מושבת

02 / מה בניתי

Launchpad קורא קובץ הגדרות אחד (config.json) שעונה על שבע שאלות פשוטות: איזו מערכת הפעלה, איזה סוג פריסה, אילו כלים צריך ומאיפה הם מגיעים, איך מכינים את הסביבה, אילו אפליקציות מריצים ואילו תעודות הן צריכות. מתוך הקובץ הזה הוא מתקין את הכלים, מגדיר כל אפליקציה כשירות שעולה לבד, מקים את שער הווב של nginx (נקודת הכניסה שמפנה כל כתובת לאפליקציה הנכונה) ומשיג את התעודות. אותו קובץ מתאים בלי שינוי גם ל-Windows וגם ל-Linux.

המפעילים עובדים מתפריט פשוט, וכל פעולה זמינה גם כפקודה לאוטומציה. כל פריסה מוגנת: לפני שהוא נוגע במשהו, Launchpad בודק שאין התנגשויות; אחרי הפריסה הוא שואל כל אפליקציה אם היא באמת עונה; ואם אחת מהן לא עונה, הוא מחזיר את הגרסה הקודמת.

איך זה נבנה

  1. אפריל 2025גרסה ציבורית ראשונהסקריפטים עם תפריט שמעלים אפליקציה אחת לשרת Windows או Linux, ופרסמתי אותם ב-GitHub לציבור.
  2. יולי 2025כמה אפליקציות בשרת אחדמנהל כמה אפליקציות לפי דומיין, תת-דומיין או תת-נתיב. קיבל את השם Launchpad, ארבעה מדריכים ורישיון MIT לקוד פתוח.
  3. נובמבר 2025ההגדרות עוברות לקבציםקובצי הגדרות JSON החליפו את רשימת האפליקציות שהייתה כתובה בתוך הסקריפטים.
  4. דצמבר 2025תכנון הדור הבאמסמך דרישות כתוב לרשתות סגורות, לכמה שרתים ולתעודות מוכנות מראש.
  5. יוני 2026נבנה מחדש עם Claude Codeמנוע Python אחד לשתי מערכות ההפעלה, שנבנה בעזרת Claude Code לפי הדרישות שלי. ביקורת מול הסקריפטים הישנים תיקנה 33 פערים.
  6. יולי 2026מוכן לייצורחמישה שלבי הקשחה, שכל אחד מהם נבחן מחדש בידי סוכני AI לביקורת. 310 בדיקות אוטומטיות שרצות על שתי מערכות ההפעלה.
  7. אוגוסט 2026שרת הייצור של תע״ץ הוקםLaunchpad הקים את שרת הייצור של הפלטפורמה מקובץ הגדרות אחד ומחבילה אחת, בלי חיבור לאינטרנט.

03 / דגשים

01

קובץ אחד לכל השרת

אילו כלים ואפליקציות, באילו כתובות ועם אילו תעודות – הכול בקובץ הגדרות אחד, שמתאים ל-Windows ול-Linux כאחד.

02

עובד ברשת סגורה

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

03

עדכון בטוח שמתבטל מעצמו

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

04

כתובות מאובטחות, בלי עבודה ידנית

משיג את התעודות שהופכות כל כתובת ווב למאובטחת, באינטרנט או ברשת פנימית, ומחדש אותן לפני שהן פגות.

05

משגיח אחרי הפריסה

בדיקה מתוזמנת מזהה שירות שנפל, תעודה שעומדת לפוג או הגדרות שהשתנו. היא מתריעה, ואם מותר – מתקנת בגבולות בטיחות.

06

הנדסה בעזרת AI

נבנה עם Claude Code לפי התכנון ותוכנית השלבים שלי. סוקרי AI בדקו כל שלב מחדש, ובדיקות אוטומטיות חייבות לעבור לפני שכל שינוי נכנס.

04 / מסכים

11 מסכים
המחשה של התפריט בדור השני: הכותרת Launchpad, שורת המצב "acme v3.0.0 · env: production · windows/native" ותשעת פריטי התפריט; לידו בחירת השירות והתפריט של שירות web, עם הפעלה, עצירה, הפעלה מחדש, סטטוס, יומנים, עדכון, הצגת הגדרות nginx, הסרה והפעולות הייעודיות של האפליקציה
01 המחשה של התפריט האמיתי. מימין: התפריט הראשי, ששורת המצב החיה שלו מציגה את הפרויקט, הגרסה, הסביבה והמערכת. משמאל: תפריט ניהול השירות של אפליקציה אחת, עם פעולות מחזור החיים הרגילות והפעולות הייעודיות שלה (עדכוני מסד נתונים, בניית אינדקס חיפוש מחדש, פתיחת מעטפת אפליקציה).
תהליך הפריסה בחמישה שלבים עם שתי התוצאות האפשריות, ושני קטעי טרמינל: בדיקה מקדימה שעצרה כי פורט 7700 היה תפוס, ובדיקת תקינות שנכשלה והוחזרה לאחור
02 בטוח מעצם התכנון: כל פריסה עוברת את אותם חמישה שלבים. קטעי הטרמינל הם ההודעות האמיתיות של הכלי: בדיקה מקדימה שעצרה לפני שנגעה במשהו, וגרסה חדשה שלא ענתה והוחלפה בקודמת.
הפריסה של פלטפורמת תע״ץ: חבילת גרסה לא מקוונת עם config.json, 13 תוכנות התקנה, חבילות Python ואפליקציות עוברת דרך bootstrap, env-setup ו-deploy לשרת ייצור Windows, שבו nginx מגיש שלוש כתובות HTTPS – לפורטל, לאתר הניהול שלו ולשירות הקבצים והמדיה (CDN) – לצד שני שירותים פנימיים
03 הקמת שרת הייצור של תע״ץ (אוגוסט 2026), כפי שמתואר בקובץ ההגדרות של הפלטפורמה עצמה: חבילת גרסה לא מקוונת מותקנת על שרת הייצור, שרת Windows עם שירותי NSSM ותעודות קיימות. nginx מגיש שלוש כתובות HTTPS: אתר הפורטל וה-API שלו, אתר ניהול התוכן, ואתר שירות הקבצים והמדיה (CDN) וה-API שלו. לצדם רצים שירות התראות פנימי ומנוע חיפוש. המפעילים מריצים את הפעולות הייעודיות של האפליקציות מהתפריט.
השוואה בין הדור הראשון לדור השני בשמונה שורות: קוד, הגדרות, מה הוא מריץ, בטיחות, תעודות, רשתות סגורות, אחרי הפריסה ואיכות
04 מסקריפטים למנוע: מה השתנה בין שני הדורות. את הדור השני בניתי עם Claude Code.
קטעי קוד: מימין רשימת האפליקציות שכתובה בתוך סקריפט ה-Windows ושוב בתוך סקריפט ה-Linux; משמאל שירות אחד שמוגדר בקובץ config.json
05 איך תוארו האפליקציות, אז והיום: ב-2025 רשימת האפליקציות ישבה בתוך כל סקריפט; ב-2026 קובץ config.json אחד מתאר שירות, את הנתיבים שלו ואת התעודה שלו.
מישור הבקרה שאחרי הפריסה: תזמון שמריץ מעבר מוגבל אחד שמתבונן, פועל ומתעד, עם ארבעה בלמים על הריפוי העצמי
06 אחרי הפריסה: מעבר מתוזמן, כל חמש דקות כברירת מחדל, בודק תקינות, את nginx, תוקף תעודות ושינויים בהגדרות, מחדש תעודות ומתעד הכול. הריפוי העצמי הוא לבחירה, ויש לו ארבעה בלמים: השהיה עד כמה כשלים ברצף, זמן המתנה בין תיקונים, מפסק שעוצר אחרי יותר מדי תיקונים, ותקרה למספר הפעולות בכל מעבר.
מבנה החבילה הלא מקוונת וחמישה כרטיסים שמראים איך כל צורך נפתר בלי רשת: כלי שרת, חבילות Python, תעודות, תמונות קונטיינר ו-Launchpad עצמו
07 בנוי לרשתות סגורות: מבנה החבילה הלא מקוונת מתוך התיעוד של הפרויקט, ואיך כל צורך נפתר בלי רשת.
עדויות איכות: 310 בדיקות אוטומטיות, 9 מתוך 9 משימות CI ירוקות, ורשימת משימות ה-CI על Ubuntu ועל Windows
08 נבדק על מכונות אמיתיות: כל שינוי עובר בקרות של סגנון קוד, טיפוסים וכיסוי בדיקות, בדיקות יחידה ב-Windows וב-Linux בשתי גרסאות Python, בדיקות אינטגרציה שמתקינות באמת nginx, systemd ו-NSSM, ובדיקות אריזה.
איך נבנה הדור השני: אני קובע את התכנון, Claude Code בונה, סוכני AI מבקרים מחדש כל שלב, בדיקות ו-CI שומרים על כל שינוי ואני ממזג; התוצאה הקימה את שרת הייצור של תע״ץ באוגוסט 2026
09 הנדסה בעזרת AI, בהכוונה שלי: אני כתבתי את מסמכי הדרישות ואת תוכנית השלבים, Claude Code כתב את הקוד (84 מתוך 86 עדכוני הקוד נושאים את שורת השותף שלו), סוכני ביקורת מבוססי AI בחנו מחדש כל שלב, ו-310 בדיקות ו-9 מתוך 9 משימות CI הכריעו מה אמזג.
המחשה של python launchpad.py --help עם 18 פקודות משנה והאפשרויות הכלליות
10 המחשה של העזרה בשורת הפקודה: 18 פקודות משנה, מ-status ו-deploy ועד backup, restore, reconcile ו-audit. טקסט העזרה לקוח מהקוד של הכלי עצמו.
ציר הזמן של שני הדורות: אפריל 2025 גרסה ציבורית ראשונה, יולי 2025 מנהל ריבוי אפליקציות, נובמבר 2025 קובצי הגדרות, דצמבר 2025 תכנון הדור הבא; יוני 2026 נבנה מחדש עם Claude Code, יולי 2026 מוכן לייצור, אוגוסט 2026 הקמת שרת הייצור של תע״ץ
11 שני הדורות של Launchpad, מסקריפטים ציבוריים ועד המנוע שהקים את שרת הייצור של תע״ץ.

05 / השפעה

6שרתים הוקמו
פחות מ-15 דק׳להקמת שרת, במקום יותר מ-5 שעות בעבודה ידנית
1קובץ הגדרות וחבילה אחת הקימו את שרת הייצור של תע״ץ באוגוסט 2026, ברשת שאין בה חיבור לאינטרנט
2מערכות הפעלה, Windows ו-Linux, מאותו קובץ הגדרות

Launchpad הפך את הקמת השרת מרשימת משימות ידנית ארוכה לתהליך אחד שאפשר לחזור עליו. בשני הדורות יחד הוא הקים 6 שרתים ב-4 רשתות נפרדות והעלה 20–25 אפליקציות ושירותים, כ-50 גרסאות בסך הכול. זה היה כלי פנימי לצוות שלי בתע״ץ ולשרתים הפרטיים שלי. הקמת שרת שלקחה בעבודה ידנית יותר מ-5 שעות לקחה עם Launchpad פחות מ-15 דקות.

באוגוסט 2026 הדור השני הקים את שרת הייצור של פלטפורמת תע״ץ: חמישה שירותים, שלוש כתובות ווב מאובטחות ו-13 כלי שרת, הכול מקובץ הגדרות אחד ומחבילה אחת, ברשת שאין בה חיבור לאינטרנט. לפני כן הריץ שם סקריפט Windows מהדור הראשון את האפליקציות של הפלטפורמה. בעזרת Claude Code, הדור השני נכתב בשלושה ימי עבודה, וכל שלב עבר ביקורת חוזרת ובדיקות לפני שמיזגתי אותו.

06 / התפקיד והטכנולוגיה

יזמתי את Launchpad ובניתי את שני הדורות: הרעיון, מבנה קובץ ההגדרות, הקוד ל-Windows ול-Linux, התיעוד והבדיקות. ב-2025 כתבתי ופרסמתי את הדור הראשון והשתמשתי בו כדי לארח את אפליקציות הווב שלי. ביוני 2026 בניתי מנוע פריסה בתוך הקוד של פלטפורמת תע״ץ, חילצתי אותו לכלי עצמאי שיכול לפרוס כל פרויקט, והקשחתי אותו בחמישה שלבים. באוגוסט 2026 הוא הקים את שרת הייצור של הפלטפורמה.

את הדור השני בניתי עם Claude Code כסוכן הקוד שלי: 84 מתוך 86 עדכוני הקוד נכתבו בשיתופו. אני כתבתי את הדרישות ואת תוכנית השלבים, הפעלתי סוכני AI לביקורת חוזרת של כל שלב, קבעתי בדיקות ו-CI כתנאי מעבר, ומיזגתי כל שינוי בעצמי. ה-AI האיץ את העבודה; ההחלטות והתוצאה שלי. הדור השני פרטי ועדיין בפיתוח.

טכנולוגיות

  • Python (ספרייה סטנדרטית בלבד)
  • nginx
  • NSSM
  • systemd
  • Docker / Podman compose
  • Let's Encrypt / Certbot
  • OpenSSL
  • JSON Schema
  • pytest
  • GitHub Actions
  • Batch ו-Bash (דור ראשון)
  • Claude Code
  • Waitress
  • Gunicorn
  • ruff
  • mypy
  • Gemini

איך זה בנוי

הדור הראשון נכתב ב-Batch של Windows וב-Bash של Linux: שני סקריפטים מקבילים עם תפריטים, שנשענים על nginx, על NSSM או systemd, על Waitress או Gunicorn ועל Certbot לתעודות. הדור השני הוא חבילת Python אחת שמשתמשת רק בספרייה הסטנדרטית, כך שאפשר להעתיק אותה לשרת לא מקוון ולהריץ. יש בו שכבה נפרדת לכל מערכת (ב-Windows עם NSSM, ב-Linux עם systemd, ו-Docker או Podman compose), JSON Schema לקובץ ההגדרות, 310 בדיקות אוטומטיות ותהליך GitHub Actions שמתקין באמת את nginx, את systemd ואת NSSM על מכונות נקיות. את הדור השני בניתי עם Claude Code לפי הדרישות ותוכנית השלבים שלי; סוכני ביקורת מבוססי AI בחנו מחדש כל שלב לפני שמיזגתי אותו, והפרויקט כולל מיומנות (skill) של Claude Code לכתיבת הגדרות פריסה. התעודות מגיעות מ-Let's Encrypt ברשת האינטרנט, וברשת פנימית הן תעודות קיימות או חתומות עצמית.

Launchpad צמח מסקריפטים שכתבתי לאפליקציות שלי למנוע שהקים שרת ייצור, ונבנה מהר עם Claude Code.

כשאני מוביל, בודק ואחראי לתוצאה.

פרקים