איך מתחילים שרת ביתי
Published on

איך מתחילים שרת ביתי

Authors

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

שלב ראשון: חומרה

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

אם המטרה היא Home Assistant

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

Home Assistant Container: אם כבר יש לכם שרת ביתי שרץ קונטיינרים (Docker), אפשר פשוט להרים עוד container אחד לצידם, בדיוק כמו כל שירות אחר בcompose. זה חוסך מכונה נוספת, וגם Zigbee dongle עובד מצוין, פשוט ממפים אותו (device passthrough) לתוך הcontainer בcompose. מה שכן אין לכם זה Supervisor, כלומר אין חנות add-ons מובנית, ותוספים תצטרכו להריץ בעצמכם כcontainer נפרד.

Home Assistant OS: מערכת הפעלה שלמה, ייעודית לHome Assistant, עם Supervisor וחנות add-ons מובנית. פה כן כדאי מכונה נפרדת, וההמלצה הרשמית היא Raspberry Pi 5, או Raspberry Pi 4 עם לפחות 2GB זכרון, וכרטיס microSD בדירוג ביצועים A2 (לא כל כרטיס, יש תווית ייעודית) של לפחות 32GB. אם בהמשך תרצו להוסיף Zigbee או Z-Wave, זה פשוט dongle USB שמתחבר למכונה, ואם תרצו לשלוט במכשירי אינפרא אדום ישנים (מזגן, טלוויזיה), יש לזה שדרנים ייעודיים (IR blaster).

בקצרה: יש לכם כבר שרת עם Docker? תתחילו עם Container. מקימים ממש בשביל Home Assistant, ורוצים גם Zigbee בעתיד? Raspberry Pi + Home Assistant OS.

איך מתחברים לשרת

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

אפשר להתחבר דרך טרמינל וSSH, אבל בפועל כבר שנים שאני מתחבר דרך VSCode. כתבתי על זה בהרחבה בפיתוח HomeAssistant עם Cursor וVSCode Remote Containers. בנוסף לטרמינל, אני יכול לראות גם את הקבצים, להתקין תוספים שעוזרים לי עם קונטיינרים ודאטהבייסים, ובעצם כל מה שאני צריך מהמחשב האישי שלי.

בונוס: Claude Code כשירות קבוע

אם אתם משתמשים בClaude Code, אפשר להריץ אותו כservice קבוע (למשל systemd) על השרת, במצב server מבוזר: claude remote-control. ברגע שהservice הזה רץ, השרת מופיע לכם כמכונה זמינה ברשימת המכונות בclaude.ai/code ובClaude Desktop, ואתם יכולים לפתוח ממנה session חדש בכל זמן, גם מהטלפון. מה שיפה בזה זה שהsession רץ פיזית על השרת, כלומר יש לו גישה ישירה לכל השירותים הפנימיים שלכם (מסדי נתונים, containers, קבצים), בלי שום VPN או tunnel נוסף.

איך פותחים לרשת (גישה מחוץ לבית)

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

יש שתי דרכים עיקריות שאני מכיר, ולכל אחת יתרונות וחסרונות משלה.

Cloudflare Tunnel + Zero Trust

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

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

Tailscale

Tailscale הוא כמו VPN. הוא מחבר את כל המכשירים הרשומים לתוך רשת אחת, ככה שאם התחברתי לחשבון שלי בTailscale גם בשרת וגם בפלאפון, הם זמינים אחד לשני על ידי כתובת IP. גם פה מדובר בcontainer שרץ אצלנו בשרת.

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

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

המלצה: לא לשים את הקונטיינרים האלה (Cloudflare, Tailscale) באותו stack שבו שמים את שאר האפליקציות. קרה לי שהורדתי stack מרחוק, ובטעות ירדו גם הקונטיינרים האלה, ולא הייתה לי דרך להחזיר אותם עד שהגעתי הביתה.

מסקנות

אין שרת ביתי "מושלם", ואין גם דרך אחת נכונה לחשוף אותו. תתחילו מהחומרה שיש לכם כבר בבית (או מRaspberry Pi ייעודי אם המטרה היא Home Assistant OS), תתחברו דרך VSCode או SSH, ותבחרו בין Cloudflare Tunnel לTailscale לפי הצורך שלכם: שירותים ספציפיים מול גישה מלאה לרשת.

תכתבו לי בתגובות איך השרת הביתי שלכם בנוי, ואיזו שיטה אתם משתמשים כדי להתחבר אליו מבחוץ.