Palworld-ის dedicated სერვერის ადმინისტრირება ერთ პაროლზე და მის გამოყენების სამ გზაზე დადის. დააყენე AdminPassword PalWorldSettings.ini-ში და შეგიძლია თამაშის ჩატში აკრიფო /AdminPassword <შენი პაროლი>, რომ ბრძანებების ნაკრები გაიხსნას, დააკავშირო Source RCON კლიენტი პორტზე 25575, ან HTTP გამოძახებები გააკეთო REST API-ზე პორტზე 8212. ბრძანებების სია მოკლეა - დაახლოებით ათეული ჩანაწერი, არც cheat ბრძანებები და არც ნივთების spawn - მაგრამ ის მოიცავს განცხადებებს, kick-ს, ban-ს, teleport-ს, იძულებით შენახვასა და უკუთვლით გამორთვას, ანუ ყველაფერს, რაც ავტომატური restart სკრიპტს სჭირდება. ეს პოსტი მოიცავს სამივე გზას, player ID-ის ფორმატებს, რომლებიც განსაზღვრავს, იმუშავებს თუ არა kick-ი, და თავისებურებებს, რომლებიც Palworld-ის RCON-ს ყველა სხვა თამაშისგან განასხვავებს.
ადმინის პაროლის დაყენება#
ერთი ხაზი კონფიგში, გაჩერებულ სერვერზე:
OptionSettings=(...,AdminPassword="7Tz-quay-brindle",ServerPassword="...",...)მნიშვნელობისთვის სამი წესი. ის არ უნდა შეიცავდეს მძიმეს, დახურულ ფრჩხილს ან ორმაგ ბრჭყალს, რადგან მთელი კონფიგი არის ერთი მძიმით გამოყოფილი tuple ფრჩხილებში და ეს სიმბოლოები მას ადრე ამთავრებს. ის არ უნდა იყოს ServerPassword-ის ტოლი, რომელიც შესვლის პაროლია და ყველა მოთამაშემ იცის. და ის plaintext-ად ინახება ფაილში, რომელსაც ფაილებზე წვდომის მქონე ნებისმიერს შეუძლია წაიკითხოს, ამიტომ file manager-სა და SFTP წვდომას ადმინის წვდომად მიიჩნიე - subuser-ები და უმცირესი პრივილეგია ამ პრობლემის ფორმაა პანელზე. კონფიგის ფაილის დანარჩენი გასაღებ-გასაღებად განხილულია Palworld-ის სერვერის პარამეტრები-ში.
თამაშში გამოსაყენებლად დააჭირე Enter-ს ჩატის გასახსნელად და გააგზავნე:
/AdminPassword 7Tz-quay-brindleსერვერი პასუხობს, რომ ახლა ადმინი ხარ. ეს მდგომარეობა სესიის განმავლობაში გრძელდება და გათიშვისას იკარგება. ადმინების სია არ არსებობს, არც ადმინის დროშა თითო მოთამაშეზე, და არც გზა, ერთ ადამიანს ადმინობა პაროლის გადაცემის გარეშე მისცე. თუ ვინმე ჯგუფს ტოვებს, შეცვალე პაროლი და გადატვირთე.
ბრძანებების სია#
ჩატში ყოველ ბრძანებას წინ / უძღვის. RCON-ით და უმეტეს პანელის კონსოლში იმავე სიტყვას ასეთი დახრილი ხაზის გარეშე აგზავნი. სია მოკლეა და განზრახ.
| ბრძანება | რას აკეთებს |
|---|---|
Info | სერვერის ვერსია და სახელი |
ShowPlayers | CSV ყველასი, ვინც დაკავშირებულია, მათი ID-ებით |
Save | სამყაროს დისკზე ახლავე წერს |
Broadcast <message> | შეტყობინება ყველა დაკავშირებულ მოთამაშეს |
KickPlayer <id> | მოთამაშეს ათიშავს |
BanPlayer <id> | ათიშავს და ban სიაში ამატებს |
UnBanPlayer <id> | ban-ს იღებს (მხოლოდ ახალ build-ებში) |
TeleportToPlayer <id> | შენ მათთან გაგგზავნის |
TeleportToMe <id> | მათ შენთან გადმოგიგზავნის |
Shutdown <seconds> <message> | უკუთვლა, განცხადება, სუფთა გაჩერება |
DoExit | პროცესს დაუყოვნებლივ აჩერებს |
ეს არის მთელი სია. ნივთის spawn-ის, ამინდის შეცვლის, დროის დაყენების, მოთამაშის დაწინაურების ან გილდიის რედაქტირების ბრძანება არ არსებობს. ყველაფერი ზემოთ ჩამოთვლილის მიღმა სერვერის მხარეს მოდს საჭიროებს, Palworld-ის მოდინგის სცენა კი Valheim-ისას ან Minecraft-ისას გაცილებით უფრო თხელია, ამიტომ დაგეგმე ჩაშენებული ნაკრების გარშემო და არ იფიქრო, რომ plugin არსებობს.
ორი მათგანი ყურადღებას იმსახურებს. Shutdown 60 "Restarting for the weekly update" არის ის, რაზეც ავტომატიზაციას აგებ: ის ყველას აფრთხილებს, ელოდება, ინახავს და სუფთად გადის. DoExit ამათგან არაფერს აკეთებს, და თამაშზე, რომელიც დიდ სამყაროს ფაილს განუწყვეტლივ წერს, ასე ჩნდება შეწყვეტილი save. გამოიყენე Save, შემდეგ Shutdown, და DoExit შეინახე სერვერისთვის, რომელმაც პასუხის გაცემა შეწყვიტა.
Broadcast-ს დიდი ხნის თავისებურება აქვს: რამდენიმე build-ში ის შეტყობინებას ერთ ტოკენად აღიქვამს და RCON-ით გაგზავნისას პირველი გამოტოვების შემდეგ ყველაფერს აგდებს. თუ შენი განცხადებები ერთი სიტყვით მოდის, როგორც გამოსავალი, ჩასვი ქვედა ტირეები გამოტოვებების ნაცვლად, ან შეტყობინება REST API-ის announce endpoint-ით გააგზავნე, რომელსაც ეს პრობლემა არ აქვს.
Player ID-ები და რატომ არაფერი გააკეთა შენმა kick-მა#
ShowPlayers აბრუნებს მძიმით გამოყოფილ ტექსტს სათაურის მწკრივით:
name,playeruid,steamidOdin,1234567890,76561198012345678Freyja,0987654321,76561198087654321ეს ორი განსხვავებული იდენტიფიკატორია. playeruid თამაშის შიდა handle-ია და build-ებს შორის მნიშვნელობას იცვლის; steamid არის 17-ციფრიანი SteamID64, რომელსაც Steam-ის ეკოსისტემაში ყველაფერი იყენებს. მიმდინარე build-ები kick-ებისა და ban-ებისთვის პლატფორმის პრეფიქსიან ფორმას ელიან:
BanPlayer steam_76561198012345678KickPlayer steam_76561198012345678შიშველი SteamID64-ის ან playeruid-ის გადაცემა ყველაზე ხშირი მიზეზია, რის გამოც ban წარმატებულად ჩანს და მოთამაშე პირდაპირ უკან შემოდის. თუ ბრძანება საერთოდ არაფერს აბრუნებს, ესეც ჩვეულებრივ ID-ის ფორმატია და არა უფლებების პრობლემა. მნიშვნელობა ShowPlayers-იდან აკოპირე და არა მოთამაშისგან იკითხო, რადგან სახელი მძიმით ან არალათინური სიმბოლოთი CSV-საც ვერ გადაურჩება.
RCON-ის ჩართვა#
RCON არის Source პროტოკოლი: TCP კავშირი, ერთი პაროლი, ორივე მიმართულებით plaintext. ორი გასაღები რთავს მას, ხოლო ადმინის პაროლი არის RCON პაროლი.
OptionSettings=(...,RCONEnabled=True,RCONPort=25575,AdminPassword="...",...)გადატვირთე, შემდეგ დაელაპარაკე. ნებისმიერი Source RCON კლიენტი მუშაობს. mcrcon და gorcon-ის rcon-cli ორია, რომელსაც ჩვეულებრივ მიმართავენ:
$ rcon-cli --address 203.0.113.10:25575 --password '7Tz-quay-brindle' "ShowPlayers"$ mcrcon -H 203.0.113.10 -P 25575 -p '7Tz-quay-brindle' "Save" "Info"$ rcon-cli -a 203.0.113.10:25575 -p '7Tz-quay-brindle' \ "Broadcast Server_restarts_in_five_minutes"Palworld-ის იმპლემენტაცია სრულად სტანდარტული არ არის, და ღირს იმის ცოდნა, რომელი უცნაურობა შენია და რომელი - თამაშის:
- პასუხები შეიძლება ერთი პაკეტით დაგვიანებით მოვიდეს, ამიტომ კლიენტმა წინა ბრძანების პასუხი დაბეჭდოს. Minecraft-ისთვის დაწერილი კლიენტები ჩვეულებრივ უმკლავდებიან; ძალიან მარტივები - არა.
- არა-ASCII მოთამაშის სახელები ზოგ build-ში დამახინჯებული ბრუნდება, რადგან პასუხი ისე არ არის დაკოდირებული, როგორსაც პროტოკოლი ელის. ეს გამოსახვას ეხება და არა ბრძანებას.
Shutdownშეიძლება საერთოდ არ დააბრუნებდეს პასუხს, რადგან სერვერი გასასვლელისკენ მიდის. კლიენტი, რომელიც პასუხს ელოდება, გაჭედილი ჩანს. ეს მოსალოდნელია.
კიდევ ერთი რამ არის, რაც სხვა თამაშებიდან მოსულებს ამაკვირვებს: Palworld ბრძანებებს standard input-იდან არ კითხულობს. ShowPlayers-ის პანელის კონსოლში აკრეფა თავისთავად არაფერს აკეთებს, რადგან თამაში იქ არასოდეს იყურება. პანელის ზოგი image კონსოლს RCON-თან აკავშირებს, რომ თითქოს მუშაობდეს; თუ შენი არა, RCON ან REST API ერთადერთი გზაა. ეს ასევე ნიშნავს, რომ ავტომატური "გააგზავნე ეს კონსოლის ბრძანება" ამოცანა ფაქტობრივად RCON გამოძახებაა.
RCON-ს არ აქვს დაშიფვრა და მომხმარებლების ანგარიშები, ამიტომ ის არასოდეს უნდა იყოს ღია ინტერნეტიდან მისაწვდომი. ჩასვი firewall-ის წესის უკან, ან მიაღწიე SSH tunnel-ით იმ მანქანიდან, საიდანაც ადმინისტრირებ. RCON უსაფრთხოდ მინიმუმს მოიცავს, ხოლო firewall-ის წესები, რომლებსაც მნიშვნელობა აქვს - თავად წესს. პანელზე Network tab-ზე აკონტროლებ, რომელი პორტები არსებობს, და RCON ერთ-ერთი გამოყოფაა და არა რაღაც, რაც ჩუმად დაგავიწყდება.
REST API#
უფრო ახალი build-ები HTTP ადმინის API-ს აგზავნის, რომლის ავტომატიზაციაც RCON-ზე უფრო ადვილია და broadcast-ის თავისებურება არ აქვს. ორი გასაღები:
OptionSettings=(...,RESTAPIEnabled=True,RESTAPIPort=8212,AdminPassword="...",...)ავთენტიფიკაცია არის HTTP Basic მომხმარებლის სახელით admin და ადმინის პაროლით, როგორც პაროლი. Endpoint-ები /v1/api/-ის ქვეშაა:
| მეთოდი | გზა | დანიშნულება |
|---|---|---|
GET | /v1/api/info | ვერსია, სერვერის სახელი |
GET | /v1/api/players | დაკავშირებული მოთამაშეები ID-ებითა და ping-ით |
GET | /v1/api/settings | აქტიური პარამეტრები, ისე, როგორც სერვერმა გააანალიზა |
GET | /v1/api/metrics | სერვერის FPS, frame time, მოთამაშეების რაოდენობა, uptime |
POST | /v1/api/announce | შეტყობინების broadcast |
POST | /v1/api/kick | Kick user ID-ით |
POST | /v1/api/ban | Ban user ID-ით |
POST | /v1/api/unban | ban-ის მოხსნა |
POST | /v1/api/save | იძულებითი შენახვა |
POST | /v1/api/shutdown | უკუთვლით გამორთვა შეტყობინებით |
POST | /v1/api/stop | ახლავე გაჩერება |
$ curl -u admin:'7Tz-quay-brindle' http://203.0.113.10:8212/v1/api/metrics$ curl -u admin:'7Tz-quay-brindle' -H 'Content-Type: application/json' \ -d '{"message":"Restarting in 5 minutes"}' \ http://203.0.113.10:8212/v1/api/announce$ curl -u admin:'7Tz-quay-brindle' -H 'Content-Type: application/json' \ -d '{"userid":"steam_76561198012345678","message":"Griefing"}' \ http://203.0.113.10:8212/v1/api/banGET /v1/api/settings სიაში ყველაზე სასარგებლო გამოძახებაა და თითქმის არავინ იყენებს. ის აბრუნებს პარამეტრებს ისე, როგორც სერვერმა გააანალიზა, და ეს ერთადერთი საიმედო გზაა იმის გასაგებად, რომ შენს კონფიგის ფაილს სინტაქსური შეცდომა აქვს და ყველა rate ჩუმად 1.0-ზე დაბრუნდა. ნებისმიერი კონფიგის ცვლილების შემდეგ შეადარე იმას, რაც შენ გგონია, რომ დაწერე.
GET /v1/api/metrics აბრუნებს სერვერის frame rate-სა და frame time-ს მოთამაშეთა რაოდენობასთან ერთად. ჯანმრთელი Palworld სერვერი თავის სამიზნე frame rate-ზე დგას; რიცხვი, რომელიც საღამოობით ეცემა, სანამ მეხსიერება იზრდება, არის სიგნალი, რომელიც აღწერილია რატომ სჭირდება შენს Palworld სერვერს მეტი მეხსიერება, ვიდრე გგონია-ში, და ის უკეთესი ადრეული გაფრთხილებაა, ვიდრე იმის ლოდინი, რომ მოთამაშეები rubber-banding-ზე დაიჩივლებენ.
Ban-ები, ban სია და გლობალური სია#
Ban იწერება უბრალო ტექსტურ ფაილში save-ების გვერდით:
Pal/Saved/SaveGames/banlist.txtერთი ჩანაწერი ხაზზე, იმავე პრეფიქსიან ფორმაში, რომელსაც ბრძანებები იღებს. შეგიძლია ხელით შეცვალო გაჩერებულ სერვერზე, ასე იღებ ban-ს build-ზე, რომელსაც UnBanPlayer არ აქვს, და ასე ავსებ ახალ სერვერს არსებული სიით. სერვერის მუშაობისას შეტანილი ცვლილებები შეიძლება გადაიწეროს, რადგან სერვერი ფაილს ხელახლა წერს, როცა ვინმეს ban-ს უკეთებს.
არსებობს ქსელის მასშტაბის სიაც. BanListURL ნაგულისხმევად Pocketpair-ის გამოქვეყნებულ ban სიაზე მიუთითებს და სერვერი მას გაშვებისას იღებს. ორი პრაქტიკული შედეგი: შენი სერვერი იმ ban-ებს იმკვიდრებს, რომლებიც არ გაუკეთებია, და თუ URL მიუწვდომელია, სერვერი წარუმატებლობას log-ში წერს და განაგრძობს. BanListURL შეგიძლია შენ მიერ განთავსებულ უბრალო ტექსტურ სიაზე მიუთითო, იმავე ფორმატში, რომ ერთი ban სია რამდენიმე სერვერს გაუზიარო - სასარგებლოა, თუ ერთზე მეტს უშვებ და გინდა, რომ griefer-ი ორივედან გაქრეს.
Ban-ები პლატფორმის ანგარიშის მიხედვითაა და არა მისამართის. ვინმეს, ვისაც მეორე Steam ანგარიში აქვს, ban ვერ აჩერებს, და საბაზო თამაშში არაფერი აკეთებს IP ban-ებს. თუ სერვერს სამიზნედ იღებენ, ServerPassword უფრო ეფექტური ინსტრუმენტია, ვიდრე ban სია.
მოსაწყენი ნაწილების ავტომატიზაცია#
ყველაფერი, რაც Palworld სერვერზე ავტომატიზაციად ღირს, არის Save, გაფრთხილება და Shutdown. ღამის restart მეხსიერებას ბრტყელს ინახავს, განცხადება კი ის არის, რაც მოთამაშეებს ბაზაზე თავდასხმის დაკარგვისგან იცავს.
# 23:55 - five minute warning, save, then a clean countdown shutdown$ rcon-cli -a 127.0.0.1:25575 -p "$RCON_PASS" "Broadcast Nightly_restart_in_5_minutes"$ sleep 240$ rcon-cli -a 127.0.0.1:25575 -p "$RCON_PASS" "Save"$ rcon-cli -a 127.0.0.1:25575 -p "$RCON_PASS" "Shutdown 60 Nightly_restart"პაროლი შეინახე გარემოს ცვლადში და არა სკრიპტში - გარემოს ცვლადები და საიდუმლოები ხსნის, რატომ არ არის ეს მხოლოდ სისუფთავე. თუ cron ხაზს თავად წერ, cron გამოსახულებები ახსნილი ხუთ ველს შეიცავს; პანელზე Schedules tab იმავე გამოსახულებას იღებს და ამოცანებს მიმდევრობით უშვებს შორის დაყოვნებებით, ამიტომ გაფრთხილება, შენახვა და power action ერთი გრაფიკის სამი ნაბიჯი ხდება. Scheduled ამოცანები, რომლებიც ღირს ჩამოთვლის მცირე რაოდენობას, რომელსაც მართლა აქვს აზრი.
ერთი რამ, რასაც ავტომატიზაცია არ უნდა გაუკეთო: restart ტაიმერზე მოთამაშეების შემოწმების გარეშე. 23:00-ზე უკუთვლით გამორთვა თვეში სულ მცირე ერთხელ ვიღაცის საღამოს შუაგულს დაეცემა. ან აირჩიე საათი, როცა არავინ თამაშობს, ან restart მოთამაშეების რაოდენობით ამოძრავე, რომელსაც /v1/api/metrics გაძლევს.
პრობლემების გადაჭრა#
RCON პაროლს უარყოფს. ini-ში პაროლი შეიცავს მძიმეს, ფრჩხილს ან ბრჭყალს და კონფიგის parser-მა ადრე გაჩერდა, ამიტომ სერვერი ცარიელი ადმინის პაროლით მუშაობს. შეამოწმე GET /v1/api/settings ან კონფიგს კიდევ ერთხელ დახედე.
RCON უკავშირდება, ბრძანებები არაფერს აბრუნებს. ჩვეულებრივ, ერთით გადახრილი პასუხის ქცევაა. გააგზავნე ბრძანება ორჯერ და ნახე, პირველი პასუხი მეორე გამოძახებაზე მოდის თუ არა; თუ ასეა, ეს კლიენტია და არა სერვერი.
პორტი ღიაა, მაგრამ არაფერი პასუხობს. RCONEnabled=True მხოლოდ restart-ის შემდეგ ამოქმედდება, და ის TCP პორტია, თამაშის პორტი კი UDP, ამიტომ თამაშის პორტიდან გადმოკოპირებული firewall-ის წესი მას ვერ დაფარავს. Game server-ის პორტები ახსნილი ამ შეცდომის ზოგად ფორმას შეიცავს.
დაბანილი მოთამაშე ბრუნდება. არასწორი ID-ის ფორმა, მეორე ანგარიში, ან ban სია შენს ქვეშ ხელახლა იწერება. ban-ის შემდეგ შეამოწმე banlist.txt და დარწმუნდი, რომ ხაზი იქ steam_<id> ფორმითაა.
`/AdminPassword` ჩატში არაფერს ამბობს. პაროლი არ ემთხვევა, ან build-ზე ხარ, სადაც ჩატის პასუხი ჩახშობილია. სცადე /Info მაშინვე: თუ ვერსიის სტრიქონს იღებ, ადმინი ხარ.
Shutdown გაფრთხილებები მოთამაშეებამდე არ აღწევს. broadcast-ი გამოტოვებებზე იყოფა ბაგი. გამოიყენე ქვედა ტირეები ან REST announce endpoint.
FAQ#
მუშაობს Palworld-ის ადმინის ბრძანებები co-op-ში?
არა. ბრძანებების ნაკრები მხოლოდ dedicated სერვერზე არსებობს. თამაშის შიგნიდან მასპინძლობილ სამყაროს არ აქვს ადმინის პაროლი, RCON და REST API, და ეს ერთ-ერთი უკეთესი მიზეზია, ჯგუფის სამყარო dedicated სერვერზე გადაიტანო.
შემიძლია ვინმეს ადმინის უფლებები პაროლის გაზიარების გარეშე მივცე?
საბაზო თამაშში - არა. არსებობს ერთი საერთო AdminPassword და მოთამაშეზე ადმინების სია არ არსებობს, ამიტომ პრაქტიკული მიდგომაა, პაროლი ერთ-ორ ადამიანს დაუტოვო და ყველა დანარჩენს ის მისცე, რაც მათ რეალურად სჭირდებათ: პანელის subuser ანგარიში კონსოლზე წვდომით და სხვა არაფრით.
რა განსხვავებაა Shutdown-სა და DoExit-ს შორის?
Shutdown იღებს უკუთვლას წამებში და შეტყობინებას, აცხადებს, ინახავს და სუფთად გადის. DoExit პროცესს დაუყოვნებლივ ასრულებს გაფრთხილებისა და გარანტირებული შენახვის გარეშე. გამოიყენე DoExit მხოლოდ მაშინ, როცა სერვერმა სხვა არაფერზე პასუხის გაცემა შეწყვიტა.
RCON უკეთესია თუ REST API?
REST API, როცა შენს build-ს აქვს. ის აბრუნებს სტრუქტურულ JSON-ს, აქვს მომუშავე announce endpoint და /v1/api/settings-სა და /v1/api/metrics-ს RCON ეკვივალენტი არ აქვს. RCON-იც ღირს ჩართვად, რადგან მეტ არსებულ ინსტრუმენტს ესმის.
როგორ ვიპოვო მოთამაშის SteamID64?
გაუშვი ShowPlayers, სანამ ისინი დაკავშირებულია, და აიღე მესამე სვეტი. მათ ნუ სთხოვ: Steam-ის პროფილის გვერდზე ნაჩვენები რიცხვი იგივე მნიშვნელობაა, მაგრამ ხალხი vanity URL-ს ან 32-ბიტიან ფორმას ჩასვამს, და არცერთი არ მუშაობს.
ანელებს RCON-ის ჩართვა სერვერს?
არა. ეს უსაქმო TCP listener-ია, რომელიც არაფერს აკეთებს, სანამ კლიენტი არ დაუკავშირდება. ჩართვის ფასი უსაფრთხოების ზემოქმედებაა და არა წარმადობა, სწორედ ამიტომაა პასუხი, რომ ჩართე და firewall-ით დაიცავი და არა გამორთული დატოვე.




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