התקנה אוטומטית

השיטה האוטומטית: סקריפט אחד מהאזור האישי מכין את כל השרת (מחסנית ווב Apache + PHP, מסד נתונים, כלי אבטחה, cron). לאחר מכן — פריסת הפאנל, הנפקת SSL והזנת הרישיון. עובד על Ubuntu/Debian: על VPS חדש מגדיר הכול מאפס, ועל שרת שכבר מוגדר — רק תוספות (פרופיל “שרת מוגדר”, שלב 01). כל הפקודות שלהלן — לפי הסדר, פשוט גללו מלמעלה למטה. על VPS חדש כל שלב מתאים ברצף; אם השרת כבר מוגדר או שמותקן עליו פאנל אירוח, חלק מהעבודה הסקריפט משאיר לכם במכוון — מה בדיוק, הוא כותב בסוף פעולתו (ניתוח הפלט — בשלב 01).

ערכי מציין־מקום בפקודות החליפו בשלכם: monitor.example.com — הדומיין שלכם; 203.0.113.10 — כתובת ה־IP האמיתית של השרת; /var/www/monitor — שורש הפאנל (היכן שנמצאים public/, assets/, config.php); סיסמת מסד הנתונים — בחרו משלכם.
הערכה המלאה (“הגנה מלאה”) מיועדת ל־VPS חדש. על Ubuntu/Debian נקייה היא מגדירה מערכת אבטחה מאפס — Fail2ban (jail.local), root-crontab, כללי UFW, קונפיג Apache. אם השרת כבר מוגדר (פאנל פעיל, אתרים, דואר, jail משלכם) — בחרו את הפרופיל “שרת מוגדר”: הוא מבצע רק שינויים תוספתיים ואינו נוגע בחומת האש, ב־Fail2ban, בדואר, ב־SSH וב־sysctl שלכם. בעת זיהוי פאנל אירוח הסקריפט עובר למצב זה בעצמו. לפני ההרצה הראשונה אפשר להפעיל הרצה יבשה (סימון באזור האישי) — היא תציג מה ייעשה, בלי לשנות דבר. על שרת פעיל, ליתר ביטחון, צרו תמונת מצב (snapshot).

01. פקודת ההגדרה האוטומטית מהאזור האישי

את הפקודה תמצאו באזור האישי שלכם my.arciveo.com ← מדור “הגדרת השרת” (זמין לאחר הפעלת Arcivéo Security Monitor). היא משויכת לחשבון שלכם ומכילה טוקן אישי.

הסקריפט מכין את השרת כולו: מחסנית ה-web ‏(Apache + PHP), בסיס הנתונים, כלים ל-SSL, מערך מלא של אמצעי הגנה ומשימות cron ‏(Lynis, SMART, debsums, Logwatch, דוח יומי, עדכון ipsum).

1) בחרו רמת הגנה (באזור האישי, לפני העתקת הפקודה):

  • הגנה מלאה (מומלץ) — UFW (חומת אש), Fail2ban, CrowdSec + bouncer, ipsum (רשימת חסימת IP), Suricata‏ (IDS/IPS), Falco, ModSecurity + OWASP CRS ‏(WAF), PSAD, mod_evasive (אנטי-DoS), AIDE (שלמות קבצים), debsums, ClamAV + maldet (אנטי-וירוס), Auditd, AppArmor, Monit, Lynis (ביקורת), Logwatch, עדכוני אבטחה אוטומטיים.
  • מוקלת — ל-VPS עם מעט זיכרון RAM: מערך בסיסי ללא רכיבים כבדים.
  • שרת מוגדר (פאנל אחסון) — לשרת שכבר פועל עם פאנל (HestiaCP וכדומה), אתרים ודואר: רק שינויים תוספתיים (התקנת כלים משלימה, cron, כללי sudo), בעוד חומת האש, Fail2ban, הדואר, SSH ו-sysctl נשארים כפי שהם. בשרת עם פאנל הסקריפט בוחר מצב זה בעצמו.
הרצה יבשה. באזור האישי אפשר לסמן “הרצה יבשה” — אז הפקודה רק תציג מה הסקריפט יתקין וישנה, ותסתיים מבלי לגעת בכלום. שימושי בשרת שכבר מוגדר: קודם הרצה יבשה, אחר כך הפעלה אמיתית ללא הסימון.

2) הריצו על השרת כ-root את הפקודה מהאזור האישי — היא נראית כך:

curl -fsSL "https://my.arciveo.com/install.php?token=YOUR_TOKEN" | sudo bash
שמרו את הפקודה בסוד — היא משויכת לחשבון שלכם. לקישור יש תוקף מוגבל; אם פג, לחצו באזור האישי על “קבל קישור חדש”.
לאחר ההגדרה האוטומטית שרת ה-web הוא Apache + PHP-FPM, וכלי האבטחה ומשימות ה-cron כבר מותקנים ופועלים “מהקופסה”.

3) קראו את הפלט בסוף — שם כתוב מה נותר עליכם. הסקריפט מסיים את פעולתו בבלוק בדיקות וברשימה “הלאה — התקנת הפאנל”. חלק מהשלבים הוא אינו מבצע במכוון: מה בדיוק — תלוי בפרופיל שנבחר ובמה שמצא על השרת. השוו לרשימה שלהלן — יש לבצע רק את הסעיפים שהשורות שלהם הופיעו בפלט שלכם.

  • Control panel detected (…) — האתר נוצר באמצעים של פאנל האירוח עצמו, והסקריפט אינו יוצר vhost. שלב 03, הענף “שרת עם פאנל אירוח”.
  • No vhost created (no domain given) — פרופיל “שרת מוגדר” ללא דומיין: vhost ללא שם היה הופך לאתר ברירת המחדל ומיירט את האתרים שלכם עצמם, ולכן הוא לא נוצר. שלב 03, הענף “יצירת vhost ידנית”.
  • sudo rules NOT written — הסקריפט לא הצליח לקבוע תחת איזה חשבון פועל הפאנל. זהו מצב רגיל: קבצי הפאנל מועלים רק לאחר ההגדרה האוטומטית, ועדיין לא היה לפי מה לקבוע. בלי הכללים האלה המודולים לא יראו את נתוני המערכת. שלב 04, הבלוק “sudo עבור שרת ה-web”.
  • ! Nginx does not read .htaccess — לפני Apache עומד Nginx, ולא ניתן היה לרשום את האיסור בקונפיג שלו אוטומטית. בצעו זאת בהכרח: אחרת data/, keys/, database/ ו-config.php נמסרים החוצה בעקיפת .htaccess. שלב 03, הבלוק “אם לפני Apache עומד Nginx”.
  • UFW installed but inactive — חומת האש מותקנת אך כבויה: בשרת מוגדר הסקריפט אינו מפעיל אותה בעצמו, כדי לא לנתק לכם את הגישה. הפעילו אותה בעצמכם, והקפידו לאפשר את פורט ה-SSH שלכם:
    sudo ufw allow OpenSSH # פורט SSH לא סטנדרטי: sudo ufw allow 2222/tcp sudo ufw allow 80,443/tcp sudo ufw enable
  • Fail2ban installed but not running — הפעילו: sudo systemctl enable --now fail2ban.
  • Database server present … but not running — הפעילו את מסד הנתונים לפני שלב 04: sudo systemctl enable --now mariadb (או mysql — תלוי במה שמותקן).
  • Certbot skipped — issue SSL in … — האישור מונפק במתג Let's Encrypt בפאנל האירוח; שלב 06 אינו נחוץ לכם.
אם בבלוק הבדיקות הכול תקין, השורה האחרונה היא All checks passed. סעיפים עם ! דורשים תשומת לב; הפרטים נרשמים ליומן, ואת נתיבו הסקריפט מדפיס ממש בסוף (Log: …).

02. דומיין ו-DNS

כדי לפתוח את הפאנל בכתובת כמו monitor.example.com ולקבל SSL בחינם, הדומיין צריך להצביע על השרת. בפאנל ניהול ה-DNS (אצל הרשם או חברת האחסון) צרו רשומת A:

סוג: A שם: monitor (תת-דומיין → monitor.example.com) או @ (שורש הדומיין → example.com) ערך: 203.0.113.10 ← ה-IP של השרת שלכם TTL: 3600

לאחר כמה דקות (לפעמים עד שעה) בדקו שהדומיין מצביע על השרת:

dig +short monitor.example.com # אמור להחזיר את ה-IP שלכם # או, אם אין dig: getent hosts monitor.example.com
אישור ה-SSL (שלב 06) מונפק רק לדומיין — לכן ה-DNS חייב להצביע על השרת לפני הנפקת האישור.

03. העלאת קבצי הפאנל

המקרה הרגיל (VPS חדש). ההגדרה האוטומטית כבר יצרה את ספריית הפאנל /var/www/monitor והגדירה את אתר Apache (DocumentRoot לשורש הפאנל, PHP-FPM, AllowOverride עבור .htaccess). בפלט הסקריפט זו השורה vhost … → DocumentRoot …. אין צורך ליצור בנפרד ספרייה ו-vhost — פשוט העלו את הקבצים והגדירו הרשאות.
שני מקרים שבהם vhost אינו נוצר — הסקריפט מודיע על כך במפורש בסוף פעולתו. אז בצעו קודם את הענף המתאים שלהלן, ורק אחר כך העלו את הקבצים.

הענף “שרת עם פאנל אירוח” (בפלט: Control panel detected (…)). באתרים בשרת כזה מנהל הפאנל, ולכן הסקריפט אינו יוצר vhost משלו במכוון — הוא היה נמחק כבר בבנייה מחדש הראשונה של הקונפיגים על ידי הפאנל. הסדר הוא כזה:

  1. הקימו דומיין ווב בפאנל האירוח (HestiaCP וכדומה) — ה-DocumentRoot שלה נשאר כפי שהוא.
  2. העלו את ההפצה במלואה אל public_html של אותו דומיין: לצד index.php, api/, assets/ צריכים להימצא גם קבצי השירות config.php, includes/, data/, tmp/, logs/, keys/, cron/, database/. אין צורך להוציא דבר אל מעל שורש האתר: תיקיות השירות סגורות בקובץ .htaccess שבהפצה, ותחת Nginx — באיסור שהסקריפט רשם בקונפיג הדומיין.
  3. ה-SSL מונפק במתג Let's Encrypt בפאנל עצמה — דלגו על שלב 06.
  4. הלאה — הרשאות (בהמשך שלב זה), מסד נתונים (שלב 04) ו-config.php (שלב 05). את הנתיבים בפקודות החליפו ב-/home/אקאונט/web/דומיין/public_html, ואת הבעלים — במשתמש של אותו דומיין במקום www-data.

הענף “יצירת vhost ידנית” (בפלט: No vhost created (no domain given)). זה קורה רק בפרופיל “שרת מוגדר”, כאשר הדומיין לא הועבר. הדרך הפשוטה ביותר — פשוט להריץ מחדש את הפקודה מהאזור האישי, תוך ציון הדומיין:

curl -fsSL "https://my.arciveo.com/install.php?token=YOUR_TOKEN&profile=existing" | sudo bash -s -- monitor.example.com

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

sudo mkdir -p /var/www/monitor # את סוקט PHP-FPM מזהים אוטומטית — גרסת PHP שונה משרת לשרת. PHPSOCK=$(ls -1 /run/php/php*-fpm.sock 2>/dev/null | head -1) sudo tee /etc/apache2/sites-available/arciveo-monitor.conf > /dev/null <<'EOF' <VirtualHost *:80> ServerName monitor.example.com DocumentRoot /var/www/monitor <Directory /var/www/monitor> Options -Indexes +FollowSymLinks AllowOverride All Require all granted </Directory> <FilesMatch "\.php$"> SetHandler "proxy:unix:__PHPSOCK__|fcgi://localhost" </FilesMatch> ErrorLog ${APACHE_LOG_DIR}/arciveo-monitor_error.log CustomLog ${APACHE_LOG_DIR}/arciveo-monitor_requests.log combined </VirtualHost> EOF sudo sed -i "s#__PHPSOCK__#${PHPSOCK}#" /etc/apache2/sites-available/arciveo-monitor.conf sudo a2ensite arciveo-monitor.conf sudo apache2ctl configtest sudo systemctl reload apache2
ServerName כאן הוא חובה. vhost ללא שם הופך לאתר ברירת המחדל של Apache ומתחיל לענות עבור דומיינים זרים על אותו שרת. מאותה סיבה אל תכבו את 000-default.conf בשרת מוגדר: ייתכן שהאתר הזה הוסב לאתר פעיל של מישהו — על VPS חדש המתקין מסיר אותו בעצמו, וכאן אין צורך לעשות זאת.
אם לפני Apache עומד Nginx (בפלט: ! Nginx does not read .htaccess). Nginx מגיש קבצים סטטיים ישירות מהדיסק ואינו קורא .htaccess — תיקיות השירות ייחשפו החוצה, אף ש-Apache סוגר אותן כראוי. הסקריפט הכין מראש קובץ עם איסורים; יש לכלול אותו בבלוק server{} של האתר שלכם ולטעון מחדש את Nginx:
include /etc/nginx/snippets/arciveo-deny.conf;
sudo nginx -t && sudo systemctl reload nginx # בדיקה: אמור להחזיר 403, ולא את תוכן הקובץ curl -sI https://monitor.example.com/config.php | head -1
קבצי הפאנל (ארכיון ההפצה) מורדים לאחר הרכישה באזור האישי my.arciveo.com ← “הורדות”. חלצו את הארכיון לפני ההעלאה לשרת.

העלו את תוכן ההפצה אל /var/www/monitor (כך שבתוכו יהיו public/, assets/, config.php וכו') — דרך SFTP/SCP (FileZilla / WinSCP) או בפקודת scp מהמחשב המקומי:

scp -r ./monitor/* deploy@203.0.113.10:/var/www/monitor/
כדי שהדומיין שלכם יירשם מיד ב-vhost (ServerName), מעבירים אותו לפקודת ההגדרה האוטומטית כבר בשלב 01: … | sudo bash -s -- monitor.example.com (או מציינים את הדומיין בשדה “דומיין הפאנל” באזור האישי). אם הדומיין לא הועבר — הפאנל עונה לכל מארח ולפי IP, ואת ServerName ירשום certbot בעת הנפקת SSL (שלב 06); אין צורך להתקין מחדש דבר.
הגדירו הרשאות לקבצים — זהו שלב חובה. אם העליתם תחת root או דרך SFTP, הקבצים שייכים ל-root, ושרת האינטרנט (www-data) לא יוכל לקרוא אותם — הפאנל ייפתח ריק או עם שגיאת 403 (ביומן: .htaccess unreadable / directory not executable). הפקודה למטה מתקנת זאת:
# מנרמלים את ההרשאות של כל שורש האתר: ספרייה שנוצרה על ידי root אינה נגישה # לשרת האינטרנט (www-data) — בלי זה הפאנל מחזיר עמוד ריק או 403. cd /var/www/monitor # את תיקיות העבודה יוצרים לפני chown — אחרת ספריות חדשות יישארו root:root # וב-chmod 750 שרת האינטרנט (www-data) לא יוכל לכתוב אליהן. sudo mkdir -p data/lynis data/logwatch tmp logs sudo chown -R www-data:www-data /var/www/monitor sudo find /var/www/monitor -type d -exec chmod 755 {} \; sudo find /var/www/monitor -type f -exec chmod 644 {} \; sudo chmod 640 /var/www/monitor/config.php sudo chmod 750 data tmp logs

פתחו לעצמכם העלאת קבצים ב-SFTP. אחרי הפקודה שלמעלה כל הקבצים שייכים ל-www-data, בעוד FileZilla / WinSCP מתחברים עם המשתמש שלכם — ואז ההעלאה נכשלת עם SSH_FX_PERMISSION_DENIED (Permission denied). בחרו באחת משתי האפשרויות.

אפשרות A — ACL עבור המשתמש שלכם בלבד (מומלץ). הרשאת כתיבה מקבלים רק אתם; שרת האינטרנט עדיין אינו יכול לדרוס את קוד הפאנל:

sudo apt install -y acl # הרשאת כתיבה למשתמש שלכם על כל תיקיית הפאנל: sudo setfacl -R -m u:deploy:rwX /var/www/monitor # אותו כלל כברירת מחדל — לקבצים ולתיקיות שייווצרו בהמשך: sudo setfacl -R -d -m u:deploy:rwX /var/www/monitor

אפשרות B — דרך הקבוצה www-data. פשוטה יותר, אבל הרשאת כתיבה לקבצי הפאנל מקבל גם שרת האינטרנט: אם תימצא חולשה ב-PHP יהיה אפשר להחליף את הקוד. סדר הפקודות חשוב — config.php ותיקיות העבודה נסגרות אחרונות:

sudo usermod -aG www-data deploy # כתיבה לקבוצה + setgid (הביט 2): קבצים שהועלו ב-SFTP נשארים # בקבוצה www-data — אחרת הפאנל לא יוכל לדרוס אותם. sudo find /var/www/monitor -type d -exec chmod 2775 {} \; sudo find /var/www/monitor -type f -exec chmod 664 {} \; sudo chmod 640 /var/www/monitor/config.php sudo chmod 2750 /var/www/monitor/data /var/www/monitor/tmp /var/www/monitor/logs
אחרי אפשרות B התחברו מחדש ב-FileZilla (שרת ← ניתוק, ואז כניסה מחדש) — הקבוצה החדשה נכנסת לתוקף רק בכניסה חדשה, ועד אז עדיין לא יהיו לכם הרשאות. בדיקה: id deploy — ברשימת הקבוצות צריכה להופיע www-data; ls -ld /var/www/monitor — הרשאות drwxrwsr-x, והאות s במקום x פירושה ש-setgid מוגדר.

04. מסד נתונים

צרו מסד נתונים ומשתמש, ולאחר מכן ייבאו את הסכמה. את בלוק מסד הנתונים מדביקים לטרמינל במלואו (sudo mysql נכנס כ-root דרך unix-socket — סיסמת root אינה נדרשת). monitor_db ו-monitor_user הם שמות לדוגמה, ניתן להגדיר שמות משלכם; זכרו את שם מסד הנתונים, המשתמש והסיסמה — תזינו אותם ב-config.php בשלב הבא:

# 1. מסד נתונים. שם המסד, המשתמש והסיסמה מוגדרים פעם אחת למטה ומוצבים בכל השורות. # הבלוק מודבק לטרמינל במלואו; sudo mysql נכנס כ-root דרך unix-socket # (סיסמת root אינה נדרשת). אל תשתמשו ב-`sudo mysql -u root -p` האינטראקטיבי # עם העתקה-הדבקה — בהדבקה שורות ה-SQL ילכו לשאילתת הסיסמה וייעלמו. DBNAME='monitor_db' # ← שם המסד, אפשר להשאיר DBUSER='monitor_user' # ← משתמש המסד, אפשר להשאיר DBPASS='CHOOSE_A_PASSWORD' # ← סיסמה, הגדירו משלכם sudo mysql <<SQL CREATE DATABASE IF NOT EXISTS $DBNAME CHARACTER SET utf8mb4; CREATE USER IF NOT EXISTS '$DBUSER'@'localhost' IDENTIFIED BY '$DBPASS'; GRANT ALL ON $DBNAME.* TO '$DBUSER'@'localhost'; FLUSH PRIVILEGES; SQL # בדיקה (אמורה להציג את $DBNAME): mysql -u "$DBUSER" -p"$DBPASS" -e "SHOW DATABASES;" # את שלושת הערכים האלה הזינו ב-config.php → DB_NAME, DB_USER, DB_PASS.
בדרך כלל אין צורך לייבא את הסכמה — הפאנל יוצר בעצמו את הטבלאות ואת החשבון admin בכניסה הראשונה מהדפדפן (מתוך database/db.sql), אם מסד הנתונים ריק.

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

# ייבוא הסכמה: cd /var/www/monitor && mysql -u "$DBUSER" -p"$DBPASS" "$DBNAME" < database/db.sql # בדיקה — אמורה להופיע רשימת הטבלאות: mysql -u "$DBUSER" -p"$DBPASS" "$DBNAME" -e "SHOW TABLES;"
אם המשתנים $DBNAME / $DBUSER / $DBPASS כבר “נשכחו” (סשן טרמינל חדש) — הציבו את הערכים בפקודה ידנית או הגדירו אותם מחדש באותן שלוש שורות מהבלוק שלמעלה.
sudo עבור שרת ה-web. בדרך כלל הכללים כבר נרשמו על ידי ההגדרה האוטומטית, והמודולים רואים את נתוני המערכת מיד. אבל אם בפלט הסקריפט הופיעה השורה sudo rules NOT written — לא היה לפי מה לקבוע את חשבון הפאנל (הקבצים עדיין לא הועלו), והכללים לא נוצרו. בלעדיהם מדורים כמו חומת האש, Fail2ban ו-CrowdSec יישארו ריקים. עכשיו, כשהקבצים במקומם, הריצו את הפקודה מהאזור האישי פעם נוספת, תוך ציון החשבון במפורש:
curl -fsSL "https://my.arciveo.com/install.php?token=YOUR_TOKEN&profile=existing" | sudo ARCIVEO_USER=www-data bash -s -- monitor.example.com
את www-data החליפו במשתמש שתחתיו פועל ה-PHP של האתר שלכם (בפאנל אירוח זה בדרך כלל בעל הדומיין). לראות אותו אפשר כך:
ps -o user= -C php-fpm8.3 | sort -u # הציבו את הגרסה שלכם # או: ps aux | grep -m3 '[p]hp-fpm'
בדיקה לאחר ההרצה החוזרת: הקובץ /etc/sudoers.d/monitor קיים ויש בו שורות עם המשתמש שלכם.

05. הגדרת config.php

config.php בשורש הפאנל (/var/www/monitor/config.php) — הקובץ היחיד שצריך לערוך ידנית. כל הגדרות הפאנל מוגדרות בו כקבועים define(). פתחו אותו בעורך:

sudo nano /var/www/monitor/config.php

הזינו את הערכים שלכם במקומות המודגשים; את השאר השאירו כפי שהוא:

// --- מסד נתונים (משלב 04) --- define('DB_HOST', 'localhost'); // להשאיר define('DB_NAME', 'db_name'); // מה שנוצר בשלב 04 define('DB_USER', 'user'); // מה שנוצר בשלב 04 define('DB_PASS', 'db_password'); // מה שהוגדר בשלב 04 define('DB_CHARSET', 'utf8mb4'); // להשאיר // --- אפליקציה --- define('APP_URL', 'https://monitor.example.com'); // כתובת הפאנל, ללא לוכסן בסוף define('TIMEZONE', 'Asia/Jerusalem'); // אזור הזמן שלכם // --- זמן ההפעלה (session) --- define('SESSION_LIFETIME', 28800); // חוסר פעילות עד כניסה חוזרת, שנ' (28800 = 8 ש')

מה לשנות:

  • DB_NAME, DB_USER, DB_PASS — בדיוק אותם שם מסד, משתמש וסיסמה שהגדרתם ביצירת מסד הנתונים בשלב 04 (אם השארתם את הדוגמאות — monitor_db / monitor_user). את DB_HOST ו-DB_CHARSET אל תיגעו.
  • APP_URL — הכתובת המלאה של הפאנל עם https://, ללא לוכסן בסוף וללא www. חייבת להתאים לדומיין שעליו אתם מפעילים את הרישיון (שלב 07), אחרת המפתח יידחה.
  • TIMEZONE — אזור הזמן שלכם (רשימה — timedatectl list-timezones). משפיע רק על אופן הצגת התאריכים בפאנל; על זמן ההפעלה של משימות cron אינו משפיע (שם חל אזור הזמן של המערכת).
  • SESSION_LIFETIME — אחרי כמה שניות של חוסר פעילות הפאנל יבקש כניסה מחדש (ברירת מחדל 8 שעות). לדוגמה 3600 = שעה, 86400 = יממה.
  • בלוק רישום השגיאות (display_errors, log_errors, error_log) — השאירו כברירת מחדל.

שמרו את הקובץ (Ctrl+O, Enter, ואז Ctrl+X) והפעילו מחדש את PHP-FPM — אחרת בגלל OPcache השינויים לא יחולו:

sudo systemctl restart php*-fpm
config.php — קובץ סודי (מכיל את סיסמת המסד). הוא נמצא בשורש הפאנל, שהוא גם שורש האתר, אך מוגן: הרשאות 640 (נקבעו בשלב 03) ואיסור מפורש ב-.htaccess הראשי. אל תעלו אותו למאגרים ציבוריים ואל תעבירו אותו לתמיכה עם סיסמה אמיתית.
ניתוח מפורט של כל הפרמטרים — ב-FAQ: “הקובץ config.php — כל הגדרות הפאנל”.

06. הנפקת SSL (HTTPS)

הפאנל פועל רק דרך HTTPS. סשן ההתחברות משתמש בעוגייה מאובטחת, ו-WebAuthn (2FA) פועל לפי התקן רק ב-HTTPS. דרך http:// לא תוכל להתחבר.
בשרת עם פאנל אירוח שלב זה אינו נחוץ (בפלט הסקריפט: Certbot skipped — issue SSL in …). האישור מונפק במתג Let's Encrypt על דומיין הווב בפאנל עצמה — וכך גם החידוש שלו נעשה על ידי הפאנל.

certbot והתוסף ל-Apache כבר הותקנו על ידי ההגדרה האוטומטית. ה-DNS של הדומיין כבר אמור להצביע לשרת (שלב 02). הנפקה בפקודה אחת:

sudo certbot --apache -d monitor.example.com

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

sudo certbot --apache -d monitor.example.com -d www.monitor.example.com
הוסיפו את השם השני רק אם קיימת גם עבורו רשומת A המצביעה על שרת זה (שלב 02). אחרת Let's Encrypt לא יוכל לאמת אותו ולא ינפיק את האישור כלל — כולל הדומיין הראשי.
מה certbot ישאל:
  1. Enter email address — כתובת האימייל שלך (לשם יגיעו התראות על פקיעת האישור).
  2. Terms of Service … (Y)es/(N)o — Y.
  3. Share email with the EFF … (Y)es/(N)o — לפי שיקול דעתך.
בהמשך certbot ינפיק את האישור לבד, יגדיר <VirtualHost *:443>, יגדיר הפניה http→https וחידוש אוטומטי. בסוף — Successfully enabled HTTPS.
אם ההנפקה נכשלת — ודא ש-dig +short monitor.example.com מחזיר את ה-IP של השרת ושהפורטים 80/443 פתוחים (sudo ufw allow 80,443/tcp).

לאחר ההנפקה: https://monitor.example.com נפתח עם מנעול, ו-http:// מפנה אל https://.

07. כניסה והגדרה ראשונית

פתחו https://monitor.example.com, היכנסו עם admin / useradmin ועברו על רשימת המשימות:

  1. החליפו את סיסמת admin — בקטע “משתמשים” בתפריט.
  2. הפעילו WebAuthn (2FA) — “מפתחות WebAuthn” ← רשמו מפתח/passkey (דורש HTTPS). רשמו מיד שניים: אם המפתח היחיד יאבד, לא ניתן יהיה להיכנס באמצעותו. פרטים נוספים.
  3. הגבילו גישה לפי IP — “הגדרות” ← “הגבלת גישה לפי IP” (הזינו את כתובת ה-IP שלכם לפני ההפעלה, אחרת תחסמו לעצמכם את הגישה).
  4. הזינו רישיון — קוד ההפעלה ARCIVEO-… מהאזור האישי, הפעילו אותו לדומיין שלכם והדביקו את המפתח ב“הגדרות” ← “רישיון”. פרטים נוספים.
  5. הגדירו התראות — Telegram ו/או דוא"ל ב“הגדרות”. פרטים נוספים.
  6. מחקו את תוכנת ההתקנה public/start_db.php, אם היא נותרה: היא מאפשרת לשחזר את מסד הנתונים ללא הרשאה. כל עוד הקובץ נמצא בשורש הפאנל או ב-public/, הפאנל מזהיר עליו בבאנר אדום.
  7. הריצו את הבדיקות הראשונות ידנית — אחרת חלק מהמדורים יישארו ריקים עד הלילה (ראו את הבלוק שלהלן).
מדוע “ביקורת Lynis” ו-“Logwatch” ריקים מיד בהתחלה. ההגדרה האוטומטית התקינה את הכלים והקימה משימות cron, אבל לא הריצה את הבדיקות עצמן — הן ירוצו לפי לוח הזמנים: Lynis ב-03:00, Logwatch ב-06:00, debsums ב-04:30, ClamAV ב-01:30. עד אז המדורים מציגים ביושר שעדיין אין דוחות. כדי לא לחכות יממה, הריצו אותן פעם אחת ידנית:
# ביקורת Lynis — הדוח הראשון (כמה דקות): sudo /usr/local/bin/lynis-scan.sh # דוח Logwatch ליממה: sudo /usr/local/bin/logwatch_daily.sh # שלמות החבילות (debsums) — בשרת גדול נמשך זמן רב: sudo /usr/local/bin/debsums-scan.sh
את Lynis אפשר להריץ גם ישירות מהפאנל — הכפתור “הרץ ביקורת” בעמוד “ביקורת Lynis”: הוא מריץ את אותו סקריפט ברקע ומעדכן את הדוח בעצמו. מכאן הכול ממשיך לפי לוח הזמנים, ואין צורך להריץ ידנית עוד.
הסריקה האנטי-וירוסית הראשונה (sudo /usr/local/bin/clamav-scan.sh) מעמיסה מאוד על הדיסק והמעבד ועשויה להימשך שעה ויותר — בשרת פעיל עדיף להמתין להרצה הלילית ב-01:30. המדורים “דיסקים (SMART)”, “ביצועים” ו“עדכוני אבטחה” מתמלאים מעצמם: כל 30 דקות, 5 דקות ופעם בשעה בהתאמה.
מוכן. מדריך לכל כלי — בFAQ.
אם דרוש בשרת הזה אתר נוסף עם דומיין משלו — ראו את ה-FAQ: “אתר שני בשרת הזה (עוד דומיין)”.