# רשימת בדיקות להתקנת Evolution API על שרת עצמי

מאת מערכת אוטומציה (otomatzia.com). סמנו כל שורה רק כשיש לה ראיה: פלט, תאריך או שם של מי שאישר.

## החלטה וסיכון
- [ ] השימוש הוא קו אישי או קו בוט בהסכמה, לא תיבת שירות ולא שליחה המונית.
- [ ] הבעלים של המספר אישרו בכתב לחבר אותו כמכשיר מקושר, ויודעים שזה חיבור לא רשמי עם סיכון להגבלה או חסימה.
- [ ] נבדק אם Cloud API הרשמי מתאים יותר (תבניות, נציגים, שליחה יזומה).

## שרת וחשיפה
- [ ] `docker compose config -q` עבר בלי שגיאות.
- [ ] `docker compose ps` מראה שרק ה־API מפורסם, ורק על הכתובת המקומית; Postgres ו־Redis בלי פורט ציבורי.
- [ ] `caddy validate` עבר, והדומיין עונה ב־HTTPS עם תעודה תקפה ממחשב חיצוני.
- [ ] ניסיון גישה ממחשב חיצוני לפורט 8080 בכתובת הציבורית נכשל.
- [ ] בקשה ל־`/instance/fetchInstances` בלי מפתח מחזירה 401, גם דרך הדומיין.

## גרסה וסודות
- [ ] תג Evolution נעוץ לגרסה יציבה בכתיב המדויק שב־Docker Hub (למשל `v2.3.7`), לא `latest` ולא תג RC.
- [ ] הגרסה בתשובת `GET /` תואמת לתג הנעוץ, והתאריך נרשם.
- [ ] המפתח הגלובלי והסיסמה חדשים, `chmod 600 .env` בוצע, והקובץ לא נמצא במאגר קוד.
- [ ] המפתח הגלובלי אצל הבעלים בלבד; משלבים מבחוץ קיבלו רק טוקן של המופע שלהם.

## מופע, Webhook וקבלה
- [ ] ה־QR נסרק מהקוד החי על מסך ה־Manager, לא מתמונה שמורה.
- [ ] המצב `open` ומספר הבעלים של המופע הוא המספר הצפוי, לפני כל שליחה.
- [ ] Webhook מוגדר לכל מופע, בלי `QRCODE_UPDATED`, והיעד בודק כותרת `Authorization`.
- [ ] היעד מוגן ושומר היסטוריה מוגבלת, כי גוף ה־webhook כולל את הטוקן של המופע.
- [ ] הודעה נכנסת, הודעה יוצאת, `MESSAGES_UPSERT` ו־`SEND_MESSAGE` נבדקו מול מספר שהסכים.

## שמירה, גיבוי ועדכון
- [ ] דגלי `DATABASE_SAVE_*` הוחלטו ותועדו, וניסוי ספירת `Message` לפני ואחרי הורץ על הקו הזה.
- [ ] טבלת `Media`, יעד ה־webhook והגיבויים נבדקו בנפרד לתוכן הודעות.
- [ ] גיבוי מוצפן יצא מהשרת, והסיסמה שמורה בנפרד מחוץ לשרת.
- [ ] שחזור למסד זמני (`restore_test`, או שם אחר אם המסד הזה כבר קיים) הראה ספירות תואמות, והתיקייה המפוענחת נמחקה.
- [ ] שחזור במקום (`I_UNDERSTAND=yes ./restore.sh`) מורץ רק אחרי בדיקת שחזור שעברה וגיבוי טרי, בידיעה שמה שנכתב אחרי הגיבוי יימחק ושה־Redis לא משוחזר.
- [ ] עדכון מתחיל בגיבוי, וחזרה לאחור היא שחזור מגיבוי ולא החלפת תג בלבד.
- [ ] יש ניטור שמתריע כשהמצב לא `open`, ומישהו מוגדר שמקבל את ההתראה.
