מדריך: קחו את זה לשלב הבא – Docker compose על גבי Synology NAS

קחו את זה לשלב הבא: איך להשתמש ב-docker compose על גבי Synology NAS

10:45
  /     

מדריך: קחו את זה לשלב הבא – Docker compose על גבי Synology NAS

את Docker הכרנו בסדרת המאמרים של אביב מוסטקי ושל זיו רוזנפלד : איך להתקין Pie-hole על Synology NAS, או –איך עושים בדיקת SpeedTest באופן אוטומטי ואיך לעדכן את כל ה-docker images שלכם באופן קבוע.

אז הבנו את הפרנציפ, אפשר להריץ על גבי Synology NAS כמעט כל דבר דרך Docker שמשמש כמעט כמו מכונה וירטואלית. תוכנות רבות שלא זמינות רשמית על גבי Synology מסיבות שונות ומשונות, ובעיקר תוכנות שרת, זמינות בסיוע של docker. כל מה שצריך להתקין זה את חבילת Docker ואז דרכה את התוכנה הספציפית. הדוגמא של זיו היתה שימוש ב-pie-hole, תוכנת שרת Open source שמאפשרת לכם לפתוח שרת DNS סטנדרטי שמסוגל לסנן אתרי פרסום וכך לאפשר לכם לחסום פרסומות ברמה רשתית של כל הבית או כל המשרד.

אפשר כמובן לפתוח שרתי MYSQL (שלא זמינים ב-Synology), או וורדפרס (שקיים אבל רק בגרסא מותאמת, כך שהוא לא בדיוק 1:1 הגרסא הפתוחה) וכו'.

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

לשם כך קיים docker-compose.

דוגמא: התקנת Teslamate על גבי ה-NAS

לטובת הניסוי הזה, התקנתי את Teslamate. למי שיש לו רכב טסלה, הוא בוודאי שם לב שהרכב עצמו שומר סטטיסטיקות רק 50ק"מ אחורה, וגם הם מוגבלות במידה רבה. ב-AppStore קיימות אפליקציות שיש להן שרת שמחובר לחשבון שלכם (אתם צריכים לספק להם גישה מלאה לחשבון טסלה שלכם), שרות שעבורו נדרש תשלום חודשי, כמובן.

Teslamate הוא שרת חינמי לחלוטין, אבל כפי שכתוב כאן, הוא שרת לכל דבר. הוא כמובן מופיע ברגיסטרי של Docker אך לא תצליחו להתקין אותו לבד, הסיבה? הוא דורש מספר רב של שירותים: Postgres (שרת SQL), mosquito (שירות messaging MQTT) ו-Grafana (שרת גרפים ודשבורדים).

איך מתקינים את Teslamate?

דבר ראשון צריך להוריד קובץ הגדרות מסוג yml. אפשר לערוך אותו בכל עורך טקסט פשוט.

כאן יש קובץ docker-compose.yml לדוגמא, הורידו אותו ל-NAS.

תערכו את הקובץ ותחליפו את הנתונים הבאים:

  • סיסמא של ה-DB: תחליפו מ-yourpass לסיסמא שלכם
  • תחליפו את הכתובת של ה-NAS (בקובץ לדוגמא זה 10.0.0.111) לכתובת האמיתית של ה-Synology NAS ברשת הביתית שלכם.

בשביל השלב הבא נדרשים התנאים הבאים:

  1. תוודאו שמותקן לכם Docker ב-NAS
  2. תוודאו שה-SSH שלכם דלוק ופעיל (אפשר לכבות אותו בתום התהליך).

כנסו ל-SSH (אני משתמש בתוכנת Putty של Windows לטובת הפעולה) על ידי הרצת פקודת putty 10.0.0.111 (תחליפו את המספר בכתובת ה-IP של ה-NAS שלכם בבית).

תתבקשו לספק שם משתמש, תשתמשו בשם המשתמש הרגיל שלכם (חייב להיות Admin של ה-NAS). אחרי זה תריצו את הפקודה sudo – i ושוב תצטרכו לספק את הסיסמא שלכם.

השלב הבא הוא לעבור לספריה של Docker:

cd /volume1/@docker

(אני מניח שהדוקר שלכם אכן מותקן על גבי Volume1 או לא שנו ל-Volume עליו הוא מותקן).

מדריך: קחו את זה לשלב הבא – Docker compose על גבי Synology NAS

עכשיו נדרש להעתיק את הקובץ yml שערכתם לספריה הזו. במקרה שלי, שמתי את הקובץ למשל ב-share בשם Clouddrives ולכן הפקודה תהיה:

cp /volume1/Clouddrives/docker-compose.yml /volume1/@docker

מדריך: קחו את זה לשלב הבא – Docker compose על גבי Synology NAS

בשלב הבא אפשר להרים את השרת בעזרת הפקודה:

docker-compose up -d

בשלב הזה, המערכת תתקין את כל ה-docker images הנדרשים, תגדיר אותם ותרים את השרתים. אם הכל תקין, תוכלו לראות את הכל תחת ממשק Docker ב-NAS.

מדריך: קחו את זה לשלב הבא – Docker compose על גבי Synology NAS

Teslamate – איך זה עובד?

כפי שכתוב בקובץ ה-yml, המערכת מותקנת בפורט 4000 של השרת (במקרה שלי כתובת פנימית 10.0.0.111 אצלכם זה הכתובת של ה-NAS שלכם). תדרשו לספק credentials,  ניתן בעזרת אפליקציית Auto for Tesla לייצר קוד token שאותו ניתן להכניס במקום שם משתמש וסיסמא.

מדריך: קחו את זה לשלב הבא – Docker compose על גבי Synology NAS

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

מדריך: קחו את זה לשלב הבא – Docker compose על גבי Synology NAS

מדריך: קחו את זה לשלב הבא – Docker compose על גבי Synology NAS

לא אכנס לכל הדשבורדים הזמינים (יותר מדי מידע פרטי).

איך מעדכנים את החבילות אוטומטית?

אז התקנו את Teslamate דרך docker-compose אבל איך אנחנו מוודאים שהכל מעודכן לגרסא האחרונה כל הזמן של כל אחד מה-docker images?

לשם כך, ניתן להשתמש במדריך העדכון  האוטומטי של Docker images של אביב מוסטקי.

  1. נכנסים ל-control panel
  2. נכנסים ל Task scheduler
  3. יוצרים Task חדש בשם Update docker-compose
  4. שם משתמש: root
    מדריך: קחו את זה לשלב הבא – Docker compose על גבי Synology NAS
  5. מחליטים על schedule (אני הגדרתי פעם בשבוע)
    מדריך: קחו את זה לשלב הבא – Docker compose על גבי Synology NAS
  6. ועכשיו נותר רק הפעולה שאנחנו רוצים להריץ:

cd /volume1/@docker
docker-compose pull
docker-compose up -d

מדריך: קחו את זה לשלב הבא – Docker compose על גבי Synology NAS

זהו, עכשיו פעם בשבוע כל ה-docker images יקבלו עדכון אוטומטי.

אם אתם רוצים להריץ פקודה בתוך אחד ה-images (למשל Grafana) אפשר ממש להריץ bash בתוך ה-image עצמו:

docker exec -it docker_grafana_1 /bin/bash

לשרשור תגובות לחץ כאן