להתקין שרת מיינקראפט על רספברי פיי

מיינקראפט הוא אחד המשחקים המרהיבים והמגניבים שיש. למה שלא תתנו לילדים שלכם להתנסות בשרת מיינקראפט על רספברי פיי?

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

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

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

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

הכנה להתקנה

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

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

sudo apt update
sudo apt install git build-essential

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

sudo raspi-config

וייפתח בפנינו מסך האפשרויות המוכר. נכנס לאפשרויות מתקדמות ומשם אל: GL Drive ואז נבחר GL (Fake KMS). אחר מכן נבצע ריסטרט ונתחבר שוב ב-SSH לשרת.

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

sudo apt install openjdk-8-jre-headless

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

java -version

מקבלים גרסה? מעולה. אפשר להמשיך. יש תקלה אחרת? זה הזמן לדוקטור גוגל.

פינת האבטחה – יצירת שם משתמש חדש

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

sudo useradd -r -m -U -d /opt/minecraft -s /bin/bash minecraft

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

אנו עוברים למשתמש minecraft כך:

sudo su - minecraft

אנו ניצור שתי תיקיות תחת תיקית המשתמש minecraft. אחת בשם tools והשניה בשם server:

mkdir ~/tools
mkdir ~/server

אפשר להתחיל בהתקנה.

התקנת כלי העזר mcrcon

mcrcon היא תוכנת עזר לניהול שרתי מיינקראפט שאנו נשתמש בה לא מעט, לניטור ובדיקת תקלות ושינוי פרמטרים בשרתים. אנו נתקין אותה בתיקית tools. קודם כל נוריד את התוכנה:

cd ~/tools && git clone https://github.com/Tiiffi/mcrcon.git

נכנס לתיקת mcrcon באמצעות:

cd mcrcon

ואז נתקין אותה באמצעות:

gcc -std=gnu11 -pedantic -Wall -Wextra -O2 -s -o mcrcon mcrcon.c

נבדוק שהיא עובדת באמצעות:

./mcrcon -h

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

התקנת שרת המיינקראפט

סוף סוף הגענו לרגע המאושר של התקנת שרת המיינקראפט! זה שרת מבוסס ג'אווה שאותו נתקין בתיקית server (הפתעה הפתעה). הדבר הכי חשוב הוא לבחור את גרסת השרת האחרונה מתוך האתר הרשמי של מיינקראפט פה. זה תמיד קישור ארוך שמשתנה בהתאם לגרסה האחרונה. בשעת כתיבת שורות אלו, הגרסה האחרונה של השרת היא 1.6.3 אז הקישור הוא לגרסה הזו והוא:
https://launcher.mojang.com/v1/objects/f02f4473dbf152c23d7d484952121db0b36698cb/server.jar

יש להכניס את כתובת הקישור אחרי ה wget ככה למשל:

cd ~/server && wget https://launcher.mojang.com/v1/objects/f02f4473dbf152c23d7d484952121db0b36698cb/server.jar

wget זה להוריד.

אחרי ההורדה המוצלחת, אנו נפעיל את שרת המיינקראפט לראשונה!

cd ~/server
java -Xms512M -Xmx768M -jar server.jar nogui

מייד אחרי ההפעלה, השרת יוצר שני קבצים ואז לא עובד! למה? כי צריכים לשנות קובץ אחד שהוא קובץ "אני מסכים לכל התנאים שלכם ומוסר לכם את בני בכורי לעולה". שם הקובץ הוא eula.txt והוא יהיה בתיקית server. כדי לאשר את התנאים, אנו נכנס לקובץ ונשנה את "אני מסכים לכל השיט שלכם" ל-true. נכנסים לעורך הטקסט nano ועורכים את הקובץ כך:

nano ~/server/eula.txt

והקובץ צריך להראות כך. במקום false לכתוב true.

#By changing the setting below to TRUE you are indicating your agreement to our EULA (https://account.mojang.com/documents/minecraft_eula).
eula=true

אנו נעדכן את קובץ ההגדרות כדי שידע לעבוד עם כלי העזר rcon. נכנס אליו באמצעות nano :

nano ~/server/server.properties

ונוודא שיש בו את ההגדרות האלו:

rcon.port=25575
rcon.password=secured-password
enable-rcon=true

וכמובן שה-secured password צריך להיות סיסמה אמיתית ולא הקשקוש הזה.

אפשר גם להוסיף או לשנות הגדרות אחרות. לרשימת כל ההגדרות אפשר להגיע לפה.

ועכשיו נריץ שוב את השרת והוא יעבוד!

java -Xms512M -Xmx768M -jar server.jar nogui

שימו לב לפלאגים (flags, ככה קוראים למה שיש אחרי ה-) XMX ו-XMS. הם קובעים את גודל הזכרון שיש לשרת. XMS זה גודל הזכרון ההתחלתי שמוקצה לשרת ו-XMX זה גודל הזכרון המקסימלי. ככל שהם יותר גדולים, כך השרת ירוץ יותר בקלות ויוכל להריץ יותר משתמשים אבל ביצועי הרספברי פיי יסבלו.

התחברות לקונסולה של שרת המיינקראפט עם כלי העזר rcon

כלי העזר rcon משמש אותנו להזנת פקודות ישירות לשרת המיינקראפט, אנו מריצים אותו כך:

/opt/minecraft/tools/mcrcon/mcrcon -H 127.0.0.1 -P 25575 -p strong-password -t

כדי לראות את הלוג של השרת בכל רגע נתון, אני מריץ tail על הלוג. ככה:

tail -f /opt/minecraft/server/logs/latest.log

השרת כסרוויס

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

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

אחרי כן, אנו ניצור קובץ בשם minecraft.service בתיקית /etc/systemd/system/ באמצעות הפקודה הזו:

sudo nano /etc/systemd/system/minecraft.service

אנו נכניס את הטקסט הזה לקובץ:

[Unit]
Description=Minecraft Server
After=network.target

[Service]
User=minecraft
Nice=1
KillMode=none
SuccessExitStatus=0 1
ProtectHome=true
ProtectSystem=full
PrivateDevices=true
NoNewPrivileges=true
WorkingDirectory=/opt/minecraft/server
ExecStart=/usr/bin/java -Xmx768M -Xms512M -jar server.jar nogui
ExecStop=/opt/minecraft/tools/mcrcon/mcrcon -H 127.0.0.1 -P 25575 -p secured-password stop

[Install]
WantedBy=multi-user.target

שימו לב לשנות את הסיסמה של ה mcrcon וגם את ההגדרות של ה-XMX וה-XMS לפי הצורך.

נשמור ונצא ואז נפעיל את השירות עם:

sudo systemctl daemon-reload
sudo systemctl start minecraft

את הסטטוס של הסרוויס (אם הוא פעיל או לא), אפשר לבדוק בכל עת פה:

sudo systemctl status minecraft

עכשיו נגרום לרספברי פיי להריץ את השירות ככה תמיד:

sudo systemctl enable minecraft

זה הכל!

ניהול השרת באמצעות mcrcon

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

/opt/minecraft/tools/mcrcon/mcrcon -H 127.0.0.1 -P 25575 -p secured-password -t

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

Logged in. Type 'quit' or 'exit' to quit.
>/op omrikus
Made omrikus a server operator
>/give omrikus command_block
Gave 1 [Command Block] to omrikus
>/give omrikus command_block 64
Gave 64 [Command Block] to omrikus
>/gamemod omrikus creative

פתיחת השרת אל העולם החיצון

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

אני לא מסביר במדריך זה איך לעשות זאת. אבל באמת גיגול קל של port forwrding יסייע.

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

פוסטים נוספים שכדאי לקרוא

פתרונות ומאמרים על פיתוח אינטרנט

נגישות טכנית – פודקאסט ומבוא

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

גלילה לראש העמוד