RE:NODE

სახელმძღვანელოები11 წუთის საკითხავი

Rust-ის გამოყოფილი სერვერი: ინსტალაცია და პორტები

დააყენე RustDedicated SteamCMD-ით, დაწერე მომუშავე გაშვების ხაზი, გახსენი სწორი პორტები და გაიარე პირველი ჩართვა და რუკის გენერაცია მოულოდნელობების გარეშე.

0 მკითხველი

Rust-ის გამოყოფილი სერვერი არის უფასო პროგრამა RustDedicated (Steam-ის აპლიკაცია 258550), რომელიც SteamCMD-ით ყენდება და თითქმის მთლიანად გაშვების ხაზზე ჩაწერილი +convar value წყვილებით კონფიგურირდება. მას სჭირდება ერთი UDP პორტი მოთამაშეებისთვის, query პორტი სერვერების სიისთვის, TCP პორტი RCON-ისთვის, 8-16 GB მეხსიერება რუკის ზომისა და მოთამაშეების რაოდენობის მიხედვით და ერთი სწრაფი CPU ბირთვი. პირველი გაშვება რუკას აგენერირებს - ამას წუთები სჭირდება და ეს სერვერის ცხოვრებაში ყველაზე მეხსიერებამტევადი მომენტია. ქვემოთ ყველაფერი ამ წინადადებების დეტალებია, იმ თანმიმდევრობით, რომლითაც დაგჭირდება.

რა არის RustDedicated და როგორ მუშაობს მისი ჰოსტინგი#

Facepunch სერვერს ცალკე Steam-აპლიკაციად აწვდის, გრაფიკისა და მენიუების გარეშე. ის მუშაობს Windows-ზე (RustDedicated.exe) და Linux-ზე (RustDedicated), და ორივე სრულფასოვანია: სათემო და ჰოსტინგზე გაშვებული სერვერების უმეტესობა Linux-ის ვერსიაზე მუშაობს. CS2-ისა და Unturned-ისგან განსხვავებით, Steam-ის game-server token-ის მოთხოვნა არ გჭირდება - Rust-ის სერვერი Steam-ის მთავარ სიაში თავად რეგისტრირდება.

სამი იდეა ხსნის თითქმის ყველაფერს იმის შესახებ, როგორ არის Rust-ის სერვერი აწყობილი:

  • identity საქაღალდე. +server.identity "main" ასახელებს საქაღალდეს server/-ის ქვეშ. რუკა, save, მოთამაშეების მონაცემთა ბაზები და კონფიგურაციის ფაილები სულ იქ ცხოვრობს. შეცვალე identity და სერვერი ახალ საქაღალდეში სრულიად ახალ სამყაროს დაიწყებს, ძველის წაშლის გარეშე.
  • convar-ები ბრძანების ხაზზე. პარამეტრები კონსოლის ცვლადებია (server.hostname, server.worldsize, decay.scale). მათ აყენებ გაშვების ხაზზე, წინ +-ით, server/<identity>/cfg/server.cfg-ში მის გარეშე, ან პირდაპირ კონსოლში. ზოგიერთს აზრი მხოლოდ გაშვებისას აქვს - პორტს, identity-ს, რუკას - და მათი ადგილი გაშვების ხაზია.
  • ყოველთვიური განახლება. ყოველი თვის პირველ ხუთშაბათს Facepunch კლიენტისა და სერვერის განახლებას ერთად უშვებს. სანამ არ განაახლებ, მოთამაშეები ვერ შემოვლენ და ძველი რუკა არ ჩაიტვირთება. ეს რიტმი ყველაფერს განსაზღვრავს, ინსტალაციის წესიდან დაწყებული მოდებით დამთავრებული. კალენდარი აღწერილია სტატიაში ყოველთვიური ფორსირებული wipe-ის განრიგი.

სერვერების სიას სამი ჩანართი აქვს, რომლებიც შენთვის მნიშვნელოვანია. Official სერვერები თავად Facepunch-ისაა. Community ვანილასავით მოთამაშე სერვერებისთვისაა. Modded არის ყველაფრისთვის, რაც გეიმპლეის ცვლის - gather rate-ები, kit-ები, stack-ის ზომები. სად აღმოჩნდები, ნაწილობრივ შენი არჩევანია, ნაწილობრივ კი იმაზეა დამოკიდებული, რას დააყენებ; წესებს ხსნის სტატია gather rate-ები და kit-ები modded სერვერზე.

მოთხოვნები და რესურსების მოხმარება#

Rust პოპულარულ survival თამაშებს შორის ერთ-ერთი ყველაზე მძიმე სათამაშოა ჰოსტინგისთვის. მეხსიერება იზრდება სამყაროს ზომასთან და იმასთან ერთად, რასაც მოთამაშეები აშენებენ, და ორივე wipe-ის ციკლის განმავლობაში იზრდება. ზომა wipe-მდე ბოლო დღისთვის შეარჩიე და არა პირველისთვის.

კონფიგურაციასამყაროს ზომაRAMCPU
მეგობრები, 10 მოთამაშემდე2000-30006-8 GB2 სწრაფი ბირთვი
პატარა საზოგადოება, 20-503000-35008-12 GB2-3 სწრაფი ბირთვი
აქტიური საზოგადოება, 75-1253500-425012-16 GB3-4 სწრაფი ბირთვი
დიდი modded, 150+4250-450016-24 GB4+ სწრაფი ბირთვი
  • CPU: სიმულაცია ძირითადად ერთ მთავარ ნაკადზე მიმდინარეობს, ამიტომ სიხშირე და ერთი ბირთვის წარმადობა განსაზღვრავს, რამდენ მოთამაშესა და entity-ს გაუძლებს სერვერი. დამატებითი ბირთვები ქსელს, შენახვასა და plugin-ების კომპილაციას ეხმარება და არა მთავარ ციკლს. უფრო ვრცელი არგუმენტი სტატიაშია CPU თუ RAM სათამაშო სერვერებისთვის.
  • დისკი: ინსტალაცია დაახლოებით 10 GB-ია და წლების განმავლობაში იზრდება. თითო wipe-ის save ფაილები ათობით ან რამდენიმე ასეულ MB-ს იკავებს, პლუს backup-ები. დაგეგმე 25-40 GB, რომ Oxide-ის ან Carbon-ის, ლოგებისა და რამდენიმე შენახული save-ისთვის თავისუფლად გეყოს.
  • ქსელი: თითო მოთამაშეზე მოკრძალებული, მაგრამ Rust პაკეტების დაკარგვაზე ცუდად რეაგირებს. ცენტრალურ ევროპაში მდგარი სერვერი კონტინენტს კარგად ემსახურება; სხვა კონტინენტზე მყოფი მოთამაშეები მანძილს მაინც იგრძნობენ, რაც არ უნდა ქნა.

ციფრები მიახლოებითია, რადგან ერთი და იმავე ზომის ორი სერვერი შეიძლება გიგაბაიტებით განსხვავდებოდეს იმის მიხედვით, რამდენს აშენებენ მოთამაშეები. რა განსაზღვრავს რეალურად ამ ციფრებს, აღწერილია სტატიაში სერვერის წარმადობა და entity-ების რაოდენობა, დაგეგმილი სტატია რამდენი RAM სჭირდება Rust-ის სერვერს კი ზომის შერჩევას უფრო ღრმად განიხილავს.

ინსტალაცია SteamCMD-ით#

მანქანაზე, რომელსაც თავად მართავ, სერვერს SteamCMD აყენებს და ანახლებს. ანონიმური შესვლა მუშაობს; Steam-ის ანგარიში, რომელსაც Rust ეკუთვნის, არ გჭირდება.

bash
$ mkdir -p /home/rust/server$ steamcmd +force_install_dir /home/rust/server +login anonymous \    +app_update 258550 validate +quit

არგუმენტების თანმიმდევრობას მნიშვნელობა აქვს: +force_install_dir უნდა მოდიოდეს +login-მდე, თორემ SteamCMD-ის მიმდინარე ვერსიები გაფრთხილებას გამოიტანს და შესაძლოა არასწორ ადგილას დააყენოს. validate ყოველ ფაილს manifest-თან ამოწმებს. ნელია, მაგრამ ნაწილობრივი განახლების ერთადერთი საიმედო გამოსწორებაა და wipe-ის დღეს სწორი ნაგულისხმევი არჩევანია. თავად ინსტრუმენტს დეტალურად განიხილავს სტატია SteamCMD-ის ახსნა.

Facepunch გამოშვების ვერსიასთან ერთად staging branch-საც აქვეყნებს. ეს შემდეგი თვის განახლებაა, ადრე, და სწორედ იქ ამოწმებ plugin-ებს ფორსირებულ wipe-მდე:

bash
$ steamcmd +force_install_dir /home/rust/staging +login anonymous \    +app_update 258550 -beta staging validate +quit

staging ცალკე დირექტორიაში დააყენე. გამოშვების კლიენტები staging სერვერს ვერ უერთდებიან და პირიქით, ამიტომ ეს სატესტო მაგიდაა და არა მეორე საჯარო სერვერი.

გაშვების ხაზი, პარამეტრი პარამეტრად#

ეს არის სრული გაშვების ხაზი Linux-ის სერვერისთვის. Windows-ზე ყველაფერი იგივეა, გარდა შესრულებადი ფაილის სახელისა და ხაზის გაგრძელების სიმბოლოებისა.

start.sh
#!/bin/bashcd /home/rust/serverexport LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$(pwd)/RustDedicated_Data/Plugins/x86_64./RustDedicated -batchmode -nographics -logfile - \  +server.identity "main" \  +server.port 28015 \  +server.queryport 28017 \  +rcon.port 28016 +rcon.web 1 +rcon.password "change-me-long-random" \  +app.port 28082 \  +server.level "Procedural Map" \  +server.seed 1234567 \  +server.worldsize 3500 \  +server.maxplayers 75 \  +server.hostname "Longship | EU | Biweekly" \  +server.description "Vanilla. Wipes every other Thursday. Discord in the URL." \  +server.url "https://example.com" \  +server.saveinterval 300
პარამეტრირას აკეთებს
-batchmode -nographicsUnity-ის დროშები: არც ფანჯარა, არც რენდერერი
-logfile -ლოგს ფაილის ნაცვლად სტანდარტულ გამოსავალზე წერს
+server.identityასახელებს server/-ის ქვეშ არსებულ საქაღალდეს, რომელშიც ეს სამყაროა
+server.portსათამაშო პორტი, რომელსაც მოთამაშეები უერთდებიან, UDP
+server.queryportპორტი, რომელსაც Steam-ის სია ეკითხება, UDP
+rcon.port, +rcon.web, +rcon.passwordდისტანციური კონსოლი WebSocket-ით
+app.portRust+ თანმხლები აპლიკაციის პორტი, TCP
+server.levelProcedural Map, Barren ან ფიქსირებული რუკა, მაგალითად HapisIsland
+server.seed, +server.worldsizeრომელი პროცედურული რუკა და რა ზომის
+server.maxplayersსლოტები; ზედმეტი მოთამაშეები რიგში ელოდებიან
+server.hostnameსახელი სიაში - ყველაზე ხშირად წაკითხული ტექსტი, რაც გაქვს
+server.saveintervalწამები სამყაროს შენახვებს შორის

რამდენიმე წესი საათებს გიზოგავს. ბრჭყალებში ჩასვი ნებისმიერი მნიშვნელობა, რომელშიც ჰარია. server.cfg-ის ხაზების წინ + არ დაწერო - ეს სინტაქსი მხოლოდ გაშვების ხაზისთვისაა. და რუკის განმსაზღვრელი convar-ები (level, seed, worldsize) გაშვების ხაზზე დატოვე, რომ რასაც სკრიპტში ხედავ, სწორედ ის იყოს, რამაც რუკა დააგენერირა. რისი ადგილიც კონფიგურაციის ფაილშია, აღწერილია სტატიაში server.cfg და convar-ები.

თუ +server.seed-ს გამოტოვებ, სერვერი თავად აირჩევს ერთს და ამ save-ისთვის მას გამოიყენებს. თუ მოგვიანებით seed-ს ან ზომას შეცვლი, სერვერი ახალ რუკას დააგენერირებს - ძველს არ გარდაქმნის.

პორტები და firewall#

პორტიპროტოკოლიდანიშნულება
28015UDPსათამაშო ტრაფიკი, ყენდება server.port-ით
28017UDPSteam-ის query სიისთვის, ყენდება server.queryport-ით
28016TCPRCON, WebSocket, როცა rcon.web 1
28082TCPRust+ თანმხლები აპლიკაცია, ყენდება app.port-ით

ზემოთ მოცემული ნომრები შეთანხმებაა და არა კანონი. მთავარია, რომ ყველა პორტი განსხვავებული იყოს და სწორი პროტოკოლით მისაწვდომი. ტიპური შეცდომებია სათამაშო პორტის მხოლოდ TCP-ით გახსნა, query პორტის RCON-თან დამთხვევა და query პორტის საერთოდ დავიწყება - ასეთ შემთხვევაში სერვერი პირდაპირი მიერთებით მუშაობს, სიაში კი არასოდეს ჩანს.

ნაგულისხმევად Rust+ პორტი სათამაშო პორტიდან გამოითვლება (28015 პლუს 67 იძლევა ნაცნობ 28082-ს), ამიტომ თუ სათამაშო პორტს გადაიტან, app.port ცხადად დააყენე ისეთ პორტზე, რომელიც ნამდვილად გაქვს. მიუწვდომელი app პორტი ზიანს არ აყენებს, გარდა იმისა, რომ თანმხლები აპლიკაცია ვერ დაწყვილდება - მოთამაშეები ამას შეამჩნევენ და გეტყვიან, რომ "Rust+ გაფუჭებულია". RCON ის პორტია, რომელზეც ყველაზე მეტად უნდა იფიქრო, რადგან ეს პაროლით დაცული ადმინისტრატორის ინტერფეისია ღია ინტერნეტში. სრული განხილვა სტატიაშია Rust RCON და WebRCON, query პორტების საფუძვლებს კი ხსნის სტატია სათამაშო სერვერის პორტების ახსნა.

მოთამაშეები F1 კონსოლიდან უერთდებიან ბრძანებით client.connect 203.0.113.10:28015, ან სიიდან, როცა სერვერი იქ გამოჩნდება. სიაში გამოჩენას ჩვეულებრივ გაშვებიდან რამდენიმე წუთი სჭირდება; პირდაპირი მიერთება მაშინვე მუშაობს.

პირველი ჩართვა და რუკის გენერაცია#

პირველი გაშვება მაჩვენებელი არ არის. სერვერი აღარაფერს ჩამოტვირთავს, მაგრამ მთელი პროცედურული რუკა უნდა დააგენერიროს: რელიეფი, ტოპოლოგია, monument-ები, გზები, მდინარეები, შემდეგ კი რესურსებისა და ცხოველების პოპულაციები. 3500-იან რუკაზე ამას სწრაფ CPU-ზე რამდენიმე წუთი სჭირდება; 4500-იანზე შეიძლება გაცილებით მეტი დასჭირდეს, ხანგრძლივი მონაკვეთებით, როცა ლოგი თითქოს არ მოძრაობს.

რას დაინახავ, დაახლოებით ამ თანმიმდევრობით:

  1. asset-ებისა და prefab bundle-ების ჩატვირთვა.
  2. რუკის გენერაციის შეტყობინებები, შემდეგ რუკის ფაილის ჩაწერა სახელით proceduralmap.<size>.<seed>.<version>.map.
  3. spawn პოპულაციების შევსება.
  4. სერვერის რეგისტრაცია Steam-ში და ხაზი, რომელიც ამბობს, რომ სერვერის გაშვება დასრულდა.

მხოლოდ ბოლო ნაბიჯის შემდეგ ღირს მიერთების ცდა. კლიენტის ადრე გაშვება timeout-ებს იწვევს, რომლებიც ქსელის პრობლემას ჰგავს.

აქ ორი რამ ფუჭდება უფრო ხშირად, ვიდრე სადმე სხვაგან. პირველი მეხსიერებაა: გენერაციას ცოტა ხნით უფრო მეტი სჭირდება, ვიდრე დასრულებულ რუკას, ამიტომ სერვერი, რომელიც თამაშისას კარგად მუშაობს, შეიძლება პირველი ჩართვისას მოკლან. თუ პირველი გაშვება კვდება, მეორე კი, უფრო პატარა worldsize-ით, წარმატებულია, მიზეზი ეს იყო. მეორე დისკია: გენერაცია რუკასა და პირველ save-ს წერს, ამიტომ თითქმის სავსე დისკი აქ ფუჭდება ყველაფერზე ადრე.

შემდგომი გაშვებები არსებულ .map და .sav ფაილებს ტვირთავს და გაცილებით სწრაფია. save იწერება ყოველ server.saveinterval წამში და სუფთა გათიშვისას quit ბრძანებით.

როგორ გახდე ადმინისტრატორი და პირველი საათი#

მიანიჭე საკუთარ თავს owner სტატუსი სერვერის კონსოლიდან შენი SteamID64-ით, შემდეგ კი ჩაწერე დისკზე:

code
ownerid 76561198012345678 "YourName" "server owner"server.writecfg

მინიჭების შემდეგ თავიდან შეუერთდი; auth level შესვლისას გამოიყენება. server.writecfg-ის გარეშე მინიჭება მხოლოდ მეხსიერებაში ცხოვრობს და შემდეგი რესტარტისას ქრება - ეს კლასიკური შეტყობინებაა "ჩემი ადმინი გაქრა". ბრძანებების სრული სია სტატიაშია Rust-ის ადმინისტრატორის ბრძანებები.

რისი გაკეთება ღირს პირველ საათში:

  1. დააყენე server.description, server.url და header სურათი, რომ სერვერის ინფორმაციის პანელი ცარიელი არ იყოს.
  2. გადაწყვიტე wipe-ის რიტმი და ჩაწერე ის hostname-ში.
  3. გადაწყვიტე, ვანილა იქნები თუ modded. თუ modded, დააყენე Oxide (uMod) ან Carbon კარების გაღებამდე და არა მერე.
  4. როცა სამყარო დაგენერირდება, identity საქაღალდის backup გააკეთე, რომ სუფთა საწყისი წერტილი გქონდეს.

გაშვება პანელზე ან საკუთარ მანქანაზე#

საკუთარ Linux-მანქანაზე გაშვების სკრიპტი systemd-ის ქვეშ ან tmux-ში ან screen-ში გაუშვი, რომ SSH სესიის დახურვას გადაურჩეს, და ციკლში ან რესტარტის პოლიტიკაში მოათავსე, რომ ავარიის შემდეგ თავიდან ჩაირთოს. Windows-ზე იგივეს აკეთებს .bat ფაილი goto ციკლით. ორივე შემთხვევაში განახლების პროცესი შენზეა: გაჩერება, SteamCMD, გაშვება.

Pterodactyl-ზე დაფუძნებულ პანელზე გაშვების ხაზს Startup ჩანართის ცვლადებიდან (hostname, სამყაროს ზომა, seed, პორტები) გიწყობენ, განახლება კი ჩვეულებრივ გაშვებისას ხდება. ბევრი Rust egg პანელის კონსოლს სტანდარტული შესასვლელის ნაცვლად WebRCON-ით მართავს, ამიტომ rcon.web-ის გამორთვამდე egg-ის შენიშვნები წაიკითხე.

RE:NODE-ის პანელი Pterodactyl-სა და Wings-ზეა აგებული. პორტები Network ჩანართზე ემატება და იშლება, სათამაშო და გარემოს ცვლადები Startup ჩანართზეა, Schedules ჩანართი კი cron გამოსახულებას უშვებს მოწესრიგებული ამოცანებით, მაგალითად backup-ით, რომელსაც რესტარტი მოსდევს. Rust მიმდინარე თამაშების კატალოგში არ არის, ამიტომ თუ გინდა, თავად გაუშვა ის ჩვენ მიერ მართულ აპარატურაზე, გულწრფელი ვარიანტია VDS ხაზი: მთელი მანქანა 8, 16 ან 24 GB მეხსიერებით, სადაც RustDedicated-ს ზუსტად ისე აყენებ, როგორც ზემოთაა აღწერილი.

პირველი გაშვების პრობლემების მოგვარება#

სერვერი Linux-ზე მაშინვე ითიშება. შეამოწმე ბიბლიოთეკების გზის ხაზი და ის, რომ RustDedicated შესრულებადია. გაუშვი ის ინსტალაციის დირექტორიიდან და არა სხვა ადგილიდან.

ირთვება, მაგრამ სიაში არასოდეს ჩანს. query პორტი დახურულია, არასწორი პროტოკოლითაა ან სხვა პორტის ნომერს ემთხვევა. ჯერ პირდაპირი მიერთებით შეამოწმე - თუ ის მუშაობს, საქმე query პორტშია.

მოთამაშეები იღებენ "Connection attempt failed"-ს. სათამაშო პორტი UDP-ით მიუწვდომელია, ან მოთამაშეები connect ბრძანებაში RCON ან query პორტს იყენებენ.

"Disconnected: Wrong connection protocol". სერვერისა და კლიენტის ვერსიები განსხვავდება. ყოველთვიური განახლების შემდეგ გაუშვი SteamCMD validate-ით და გადატვირთე; თუ staging-ზე ხარ, გამოშვების ვერსიაზე დაბრუნდი.

პირველ გაშვებას შეცდომის გარეშე კლავენ. რუკის გენერაციისას მეხსიერება. შეამცირე server.worldsize ან მიეცი მეტი მეხსიერება და თავიდან სცადე.

რესტარტის შემდეგ ახალი რუკა გაჩნდა. შეიცვალა seed, სამყაროს ზომა ან identity, ან განახლებამ save-ის ვერსია შეცვალა. .map ფაილის სახელი გეტყვის, რომელი seed-ითა და ზომით დააგენერირა სერვერმა ბოლოს.

FAQ#

რა ღირს Rust-ის სერვერის გაშვება?

პროგრამა უფასოა; მანქანაში იხდი. Rust-ს უმეტეს თამაშზე მეტი მეხსიერება სჭირდება - საჯარო სერვერისთვის 8 GB რეალისტური მინიმუმია, აქტიურისთვის კი 12-16 GB ნორმალურია - ამიტომ ის სათამაშო სერვერების ფასების ზედა ნაწილშია. ვარიანტებს ადარებს სტატია რა ღირს სათამაშო სერვერი.

შემიძლია Rust-ის სერვერის Windows-ზე გაშვება?

კი, Windows-ის ვერსია სრულად არის მხარდაჭერილი და ადმინისტრატორის ზოგიერთი ინსტრუმენტი მხოლოდ Windows-ზე მუშაობს. ჰოსტინგისთვის Linux უფრო გავრცელებულია, რადგან ოპერაციული სისტემისთვის ნაკლებ მეხსიერებას იყენებს და უფრო მარტივად ავტომატიზირდება.

მჭირდება Rust-ის ყიდვა სერვერის გასაშვებად?

არა. SteamCMD აპლიკაცია 258550-ს ანონიმური შესვლით ჩამოტვირთავს. თამაში შესაერთებლად გჭირდება და არა ჰოსტინგისთვის.

რამდენ მოთამაშეს იტევს Rust-ის სერვერი?

server.maxplayers-ს პატარა მკაცრი ზღვარი არ აქვს; რეალური ზღვარი CPU და მეხსიერებაა. კარგად შერჩეული სერვერი 100-200 მოთამაშეს უმკლავდება, მაგრამ სათემო სერვერების უმეტესობა 50-100 მოთამაშით და შესაბამისი სამყაროს ზომით უფრო ჯანსაღად მუშაობს.

რა განსხვავებაა server.port-სა და server.queryport-ს შორის?

server.port სათამაშო ტრაფიკს ატარებს. server.queryport Steam-ის სიის კითხვებს პასუხობს სახელის, რუკისა და მოთამაშეების რაოდენობის შესახებ. ისინი სხვადასხვა პორტი უნდა იყოს და ორივე UDP-ია.

რატომ იყენებს ჩემი Rust-ის სერვერი ყოველდღე მეტ მეხსიერებას?

მოთამაშეები აშენებენ, და ყოველი კედელი, ყუთი და deployable ობიექტი entity-ა, რომელსაც სერვერი მეხსიერებაში ინახავს. მოხმარება wipe-ის ციკლის განმავლობაში იზრდება და რუკის wipe-ისას ნულდება.


კომენტარები

სრულიად ანონიმურად: ანგარიშის, ელფოსტის და cookie-ის გარეშე. ინახება მხოლოდ სახელი, ტექსტი და დრო - სხვა არაფერი. ბმულების რაოდენობა ლიმიტირებულია.

0/2000