RE:NODE

Valheim RCON: დისტანციური ადმინისტრირება ჩაშენებული კონსოლის გარეშე

ავტორი RE:NODE-ის გუნდი
12 წუთის საკითხავი


ვანილის Valheim-ს RCON არ აქვს. dedicated server დისტანციური კონსოლის პორტს არ ხსნის და საკუთარ სტანდარტულ შეყვანაში აკრეფილ ბრძანებებსაც არ კითხულობს - ამიტომ ჰოსტინგის პანელის კონსოლი ლოგს აჩვენებს, მაგრამ kick-ს ან save-ს ვერ უშვებს. მოდიფიკაციის გარეშე სერვერის დისტანციური ადმინისტრირება სამი რამაა: თამაშში აკრეფილი ადმინის ბრძანებები მოთამაშისგან, რომელიც adminlist.txt-შია, სამი სიის ფაილის რედაქტირება (სერვერი მათ მუშაობისას ხელახლა კითხულობს) და თვითონ პროცესის მართვა - გაშვება, გაჩერება და restart - პანელიდან, SSH-ით ან Docker-იდან. თუ ნამდვილი დისტანციური ბრძანებები გჭირდება, BepInEx მოდი პაროლით დაცულ Source RCON მსმენელს ამატებს; RCON Next მიმდინარე ვარიანტია. ის მუშაობს, მაგრამ TCP პორტზე დაუშიფრავი ადმინის უკანა კარია და ისე უნდა მოეპყრო.

ეს გზამკვლევი თითოეულ ვარიანტს აღწერს, რისი გაკეთება შეუძლია და რისი არა, და როგორ აირჩიო.

რას გაძლევს ვანილის Valheim#

Minecraft-იდან ან Rust-იდან მოსულები ელიან სერვერის კონსოლს, რომელიც ბრძანებებს იღებს, და დისტანციურ პროტოკოლს, რომელიც იგივეს ქსელით აკეთებს. Valheim-ს არც ერთი არ აქვს. რაც აქვს:

ხელსაწყოსად მუშაობსრა შეუძლია
თამაშის კონსოლი (F5)დაკავშირებული ადმინის თამაშის კლიენტიkick, ban, unban, banned, save, ping, info და კიდევ რამდენიმე
adminlist.txtსერვერის შენახვის დირექტორიაწყვეტს, ვის შეუძლია ადმინის ბრძანებების გამოყენება
bannedlist.txtსერვერის შენახვის დირექტორიამოთამაშის ID-ებს კავშირს უკრძალავს
permittedlist.txtსერვერის შენახვის დირექტორიაარაცარიელობისას სერვერს მხოლოდ დაშვების სიით ხდის
გაშვების არგუმენტებიგაშვების ბრძანებასახელი, პაროლი, სამყარო, modifier-ები, შენახვის ინტერვალი
პროცესის სიგნალებიჰოსტისუფთა გაჩერება (რომელიც ინახავს), გაშვება, restart

ყოველი ადმინის მოქმედება, რაც ვანილის სერვერზე ოდესმე დაგჭირდება, ამ რიგებიდან ერთ-ერთში ეტევა. შეზღუდვა ისაა, რომ ბრძანებებს თამაშში ადამიანი სჭირდება. მოდის გარეშე სკრიპტიდან ღამის სამ საათზე save-ის ან kick-ის გაცემის გზა არ არსებობს.

ამ დიზაინს ერთი უპირატესობა აქვს: ვანილის Valheim სერვერზე ქსელური სერვისი, რომელიც ბრძანებებს იღებს, არ არსებობს, ამიტომ არაფერია გასატეხი. ყოველი დისტანციური ვარიანტი, რომელსაც ამატებ, ხსნის იმას, რაც დაკეტილი იყო.

თამაშში ადმინის კონსოლი#

ნამდვილი ადმინის კონსოლი კლიენტზეა. მოთამაშე, რომლის ID adminlist.txt-შია, მას F5-ით ხსნის - Steam-ში თამაშის გაშვების პარამეტრებში -console-ის დამატების შემდეგ, რაც ღილაკს ხსნის - და ბრძანებები იმ სერვერზე სრულდება, რომელთანაც დაკავშირებულია.

code
kick Ragnarban 76561198012345678unban 76561198012345678bannedsaveinfo

kick და ban იღებენ პერსონაჟის სახელს, IP-ს ან მომხმარებლის ID-ს; ID ყველაზე სანდოა, რადგან სახელები უნიკალური არ არის. save სამყაროს მაშინვე ინახავს, რაც ღირს ყველაფერ სარისკოს წინ. სრული სია, თითოეული ბრძანება dedicated server-ზე ნამდვილად რას აკეთებს, არის Valheim-ის ადმინის კონსოლის ბრძანებების ცნობარში.

ჩიტ ბრძანებები - devcommands, god, fly, spawn - ვანილის dedicated server-ზე ადმინებისთვისაც არ მუშაობს. Server Devcommands JereKuusela-სგან მათ ჩართავს, საკუთარ ბრძანებებს ამატებს, მაგალითად broadcast, და აქვს უფლებების კონტროლი, რომელმა ადმინებმა რა გამოიყენონ. ის მაინც თამაშის შიგნით ხელსაწყოა: ბრძანებების აკრეფას ვიღაც დაკავშირებული უნდა. Server Devcommands dedicated server-ზე მის დაყენებას აღწერს.

ადმინისტრირება სიების ფაილებით#

სიების ფაილები ვანილის Valheim-ში დისტანციურ ადმინისტრირებასთან ყველაზე ახლოსაა, რადგან მათი შეცვლა ნებისმიერი ადგილიდან შეგიძლია, სადაც ფაილის რედაქტირებაა შესაძლებელი, სერვერი კი ცვლილებას მუშაობისას იღებს.

bannedlist.txt
// Griefed the shared smelter, 2026-10-0276561198087654321// Crossplay server: platform-prefixed IDXbox_2535412345678901

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

  • მოთამაშის დისტანციური ban: დაამატე მისი ID bannedlist.txt-ში. ის შემდეგ კავშირს ბლოკავს. თუ ახლა ონლაინაა, ასევე გააგდე თამაშში ან სერვერი გადატვირთე - ნუ ივარაუდებ, რომ ფაილის რედაქტირება უკვე დაკავშირებულ მოთამაშეს ამოაგდებს.
  • სერვერის ცნობილ მოთამაშეებზე დაკეტვა: ჩადე ID-ები permittedlist.txt-ში. როგორც კი ფაილი რომელიმე ID-ს შეიცავს, მხოლოდ ამ მოთამაშეებს შეუძლიათ შესვლა. გასაწმენდად დააცარიელე.
  • ადმინის მინიჭება ან გაუქმება: შეცვალე adminlist.txt. მოთამაშეს, რომელიც დაკავშირებისას დააწინაურეს, კონსოლის ბრძანებების მისაღებად ხელახლა დაკავშირება შეიძლება დასჭირდეს.

crossplay სერვერზე ID-ები პლატფორმის პრეფიქსით იწერება (Steam_, Xbox_) და ბარე SteamID64, რომელიც მხოლოდ Steam-ის სერვერზე მუშაობს, არ დაემთხვევა. ზუსტი ფორმის მიღების სანდო გზაა, მოთამაშემ ერთხელ დაუკავშირდეს და ID სერვერის ლოგიდან დააკოპირო. ადმინის, ban-ისა და დაშვებულთა სიები ფორმატებსა და ფაილების ადგილს ყოველ პლატფორმაზე განმარტავს.

პანელის კონსოლები, SSH და systemd#

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

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

შენს Linux მანქანაზე SSH პლუს systemd იგივე კონტროლს გაძლევს:

bash
$ sudo systemctl stop valheim        # clean stop, world saved first$ sudo systemctl restart valheim$ journalctl -u valheim -f           # live log$ nano ~/.config/unity3d/IronGate/Valheim/bannedlist.txt

ბოლო გზა ნაგულისხმევი შენახვის დირექტორიაა სერვერისთვის, რომელიც Linux-ზე ამ მომხმარებლით გაშვებულია; თუ სერვერს -savedir-ით უშვებ, სიების ფაილები იმ საქაღალდეშია. Valheim-ის შენახვის დირექტორია და ფაილების ადგილები ყველა დაყენებისთვის ნაგულისხმევებს ჩამოთვლის.

unit სერვერს SIGINT-ით უნდა აჩერებდეს და ჩაწერისთვის დრო უნდა აძლევდეს, თორემ დისტანციური "restart" ნახევარსაათიან თამაშის დაკარგვად იქცევა. პარამეტრები არის Valheim-ის systemd სერვისად გაშვებაში.

ზოგი სერვერს tmux-ში ან screen-ში უშვებს, რომ "კონსოლზე მიუერთდეს". ეს ტერმინალში ლოგს და სუფთა გაჩერებისთვის Ctrl+C-ს გაძლევს, მაგრამ ბრძანებებს არა, იმავე მიზეზით, რაც ზემოთ. ეს სერვისის მიერ მოცემული ავტომატური restart-ების დაკარგვას არ ღირს.

Docker exec და კონტეინერი#

Docker-ში docker exec კონტეინერის შიგნით shell-ს გაძლევს, რაც ფაილებისთვის და პროცესის კონტროლისთვის გამოსადეგია, მაგრამ არა თამაშის ბრძანებებისთვის.

bash
$ docker compose logs -f valheim                     # the server log$ docker exec -it valheim bash                       # a shell in the container$ docker compose restart valheim                     # clean restart

lloesche/valheim-server image-ში სერვერი, განმაახლებელი და backup სამუშაო supervisord-ის ქვეშ მუშაობს, ამიტომ კონტეინერის შიგნით supervisorctl status თითოეულს აჩვენებს და supervisorctl restart valheim-server მხოლოდ თამაშს ხელახლა უშვებს. სიების ფაილები /config-შია, რომელიც ჰოსტიდან bind-mount-ითაა მიმაგრებული, ამიტომ ხშირად უფრო ადვილია მათი რედაქტირება პირდაპირ ჰოსტზე. თუ პროცესის სახელები არ ემთხვევა, შეამოწმე image-ის README.

დააყენე სერვისზე stop_grace_period წუთი ან ორი. Docker-ის ნაგულისხმევი ათი წამი დიდი სამყაროს შესანახად საკმარისი არ არის და docker compose down ან restart შემდეგ kill-ით მთავრდება. compose ფაილს სრულად ფარავს Valheim in Docker.

RCON მოდები: RCON Next#

თუ სერვერის ბრძანებები თამაშის გარედან უნდა გაუშვა - სკრიპტიდან, Discord ბოტიდან ან ვებ დაფიდან - გჭირდება მოდი, რომელიც დისტანციურ პროტოკოლს ამატებს. Thunderstore-ზე მიმდინარე ვარიანტია RCON Next ferrinius-ისგან, dedicated server-ის BepInEx plugin, რომელიც პაროლით ავტორიზებულ Source RCON მსმენელს ხსნის. ის AviiNL-ის BepInEx.rcon პროექტის ძველ rcon.dll-ს ცვლის; ორივე ერთდროულად ნუ გაუშვებ, ძველი ჯერ ამოიღე.

ის ორი ნაწილისგან შედგება. თვითონ RCON Next კავშირსა და შესვლას ამუშავებს, მაგრამ Valheim-ის ბრძანებებს თავისით არ ამატებს - ის ბრძანებებს აჩვენებს, რომლებსაც სხვა plugin-ები არეგისტრირებენ. თანმხლები plugin, RCON Next Valheim, სერვერის საკუთარ კონსოლის ბრძანებებს ამატებს, მაგალითად save. სხვა მოდებს მისი საშუალებით საკუთარი ბრძანებების რეგისტრაცია შეუძლიათ. ზუსტად რომელი ბრძანებებია ხელმისაწვდომი, დაყენებული ვერსიებისა და plugin-ებით განისაზღვრება, ამიტომ მიმდინარე სიისთვის წაიკითხე მოდის გვერდები და ნუ ივარაუდებ, რომ ბრძანება არსებობს.

დაყენება ჩვეულებრივ BepInEx ნიმუშს მიჰყვება: plugin-ები BepInEx/plugins-ში ჩადე, გაუშვი სერვერი ერთხელ კონფიგურაციის შესაქმნელად, გააჩერე, შეცვალე, ისევ გაუშვი. კონფიგურაციის ფაილია BepInEx/config/com.github.ferrinius.rcon-next.cfg:

com.github.ferrinius.rcon-next.cfg
[rcon-next]enabled = trueport = 2458password = a-long-random-string-nobody-will-guess
გასაღებინაგულისხმევიშენიშვნები
enabledfalseმსმენელი გამორთული რჩება, სანამ არ ჩართავ
port2458TCP და არა UDP
passwordChangeMeნაგულისხმევი უარყოფილია; მასთან მსმენელი არ ირთვება

თუ წინა plugin-ის ძველი nl.avii.plugins.rcon.cfg არსებობს, RCON Next პირველ გაშვებაზე მის პარამეტრებს იმპორტირებს. შეამოწმე შედეგი და არ ივარაუდო, რომ ძველი პაროლი გადმოვიდა.

ნებისმიერ Source RCON კლიენტს შეუძლია დაკავშირება. მაგალითად gorcon/rcon-cli-ით:

bash
$ rcon -a 203.0.113.10:2458 -p 'a-long-random-string-nobody-will-guess' save

პორტი TCP-ა, Valheim-ის საკუთარი პორტები კი UDP, ამიტომ მას საკუთარი firewall-ის წესი და გადამისამართება სჭირდება. მართულ ჰოსტზე მას საკუთარი პორტის გამოყოფა სჭირდება: გამოიყენე პორტი, რომელსაც ჰოსტი გაძლევს და ეს ნომერი ჩაწერე კონფიგურაციაში და არ ივარაუდო, რომ 2458 თავისუფალია. RE:NODE-ზე დამატებითი პორტები Network ჩანართზე ემატება.

RCON მოდის დაცვა#

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

  1. გამოიყენე გრძელი შემთხვევითი პაროლი. დააგენერირე; სერვერის პაროლი ხელახლა ნუ გამოიყენებ, რადგან მას ყველა მოთამაშე იცნობს.
  2. თუ შეგიძლია, ინტერნეტში ნუ გამოაჩენ. შეზღუდე პორტი firewall-ში მხოლოდ საჭირო მისამართებით ან VPN-ით ან SSH ტუნელით მიაღწიე.
  3. ამჯობინე ლოკალური კავშირები. ბოტს ან სკრიპტს იმავე მანქანაზე შეუძლია 127.0.0.1-თან დაკავშირება და მაშინ პორტი ღია აღარ უნდა იყოს.
  4. ამოიღე, როცა მის გამოყენებას წყვეტ. გამოუყენებელი ადმინის პორტი მხოლოდ რისკია და სარგებლის გარეშე.

SSH ტუნელი ტრაფიკს დაშიფრულს ინახავს და პორტს მსოფლიოსთვის დახურულს:

bash
$ ssh -N -L 2458:127.0.0.1:2458 valheim@203.0.113.10$ rcon -a 127.0.0.1:2458 -p 'the-password' save

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

ასევე გახსოვდეს მოვლის ფასი. ყოველი BepInEx plugin შეიძლება თამაშის განახლებაზე გაფუჭდეს, და RCON plugin, რომელიც არ იტვირთება, შენს დისტანციურ ადმინისტრირებას მიიყოლებს ზუსტად იმ დღეს, როცა შეიძლება დაგჭირდეს. ყოველთვის მომუშავე სარეზერვოდ თამაშის კონსოლი და სიების ფაილები დატოვე.

როცა დისტანციური ადმინისტრირება არ მუშაობს#

`F5` თამაშში არაფერს აკეთებს. კონსოლი კლიენტზე ჩართული არ არის. დაამატე -console Valheim-ის გაშვების პარამეტრებში Steam-ში (მარჯვენა დაწკაპუნება თამაშზე, Properties, Launch Options) და თამაში გადატვირთე. Game Pass-ისა და Xbox-ის მოთამაშეებს ექვივალენტი არ აქვთ, ამიტომ ადმინის უფლებები Steam-ზე მყოფს მიეცი.

კონსოლი იხსნება, მაგრამ ამბობს, რომ ადმინი არ ხარ. adminlist.txt-ში ID არ ემთხვევა იმ ფორმას, რომელსაც სერვერი ხედავს. crossplay სერვერზე მას Steam_ ან Xbox_ პრეფიქსი სჭირდება; მხოლოდ Steam-ის სერვერზე - ბარე SteamID64. დააკოპირე ის სერვერის ლოგის კავშირის ხაზიდან და არა პროფილის გვერდიდან აკრიფე, შემდეგ ხელახლა დაუკავშირდი.

ban არ დარჩა. ან ID არასწორი ფორმით იყო, როგორც ზემოთ, ან ფაილი არასწორ შენახვის დირექტორიაში შეიცვალა - სერვერი, რომელიც -savedir-ით გაეშვა, სიებს იქიდან კითხულობს და არა ნაგულისხმევი ადგილიდან. შეამოწმე, რომელ საქაღალდეშია სამყარო, რომელსაც სერვერი ნამდვილად ტვირთავს; სიების ფაილები worlds_local საქაღალდის გვერდითაა.

RCON კლიენტი ვერ უკავშირდება. იმუშავე გარეთკენ. enabled = true-ა და პაროლი ნაგულისხმევიდან შეიცვალა? წინააღმდეგ შემთხვევაში მსმენელი არ ირთვება და BepInEx ლოგი ამას ამბობს. plugin საერთოდ ჩაიტვირთა - მოძებნე BepInEx/LogOutput.log-ში. პორტი TCP-ზეა ღია და არა მხოლოდ UDP-ზე და ის პორტია, რომელიც შენმა ჰოსტმა ნამდვილად გამოგიყო? ჯერ თვითონ სერვერიდან სცადე 127.0.0.1; თუ იმუშავებს, პრობლემა ქსელშია და არა მოდში.

RCON უკავშირდება, მაგრამ ბრძანება უცნობია. RCON Next მხოლოდ იმ ბრძანებებს იცნობს, რომლებსაც დაყენებული plugin-ები არეგისტრირებენ. RCON Next Valheim-ის გარეშე save-ც კი აკლია. შეამოწმე, რომ ორივე plugin არის და ვერსიები ერთმანეთს ემთხვევა.

დისტანციურმა restart-მა პროგრესი დაკარგა. გაჩერება kill იყო. რაც restart-ს აგზავნის, უნდა აგზავნიდეს შეწყვეტას და ელოდებოდეს World saved-ს ლოგში, სანამ პროცესი გავა. ეს ჰოსტის ან სერვისის პარამეტრია და არა რამ, რასაც RCON ასწორებს.

რომელი ვარიანტი გამოიყენო#

უმეტეს ჯგუფს RCON საერთოდ არ სჭირდება.

სიტუაციარა გამოიყენო
მეგობრების სერვერი, ერთი-ორი ადმინითამაშის F5 კონსოლი და სიების ფაილები
ban-ი უნდა მიანიჭო სახლიდან მოშორებითშეცვალე bannedlist.txt პანელიდან, SFTP-თი ან SSH-ით
დაგეგმილი restart-ები და შენახვებისუფთა restart პანელიდან, systemd-იდან ან Docker-იდან - ის გამორთვისას ინახავს
Discord განცხადებებიwebhook მოდი, მაგალითად Discord Connector - RCON არ სჭირდება
ბოტი, რომელიც სერვერის ბრძანებებს უშვებსRCON Next RCON Next Valheim-თან ერთად, ლოკალურად მიბმული ან firewall-ის უკან
ბევრი ადმინი სხვადასხვა უფლებებითServer Devcommands თავისი უფლებების სიებით

დაგეგმილი restart-ები შემთხვევაა, რომლის გამოც ხალხი ყველაზე ხშირად ფიქრობს, რომ RCON სჭირდება, რადგან სხვა თამაშები restart-მდე save-ს უშვებენ. Valheim-ს ეს არ სჭირდება: სუფთა გაჩერება ინახავს. Valheim-ის დაგეგმილი restart-ები განმარტავს, როგორ ააგო ეს მოდის გარეშე.

RE:NODE-ზე სერვერი საკუთარ კონტეინერში მუშაობს, პანელის კონსოლი მის გამოტანას გადმოსცემს, კვების ღილაკები სუფთად აჩერებს, ფაილების მმართველი და SFTP სიების ფაილებისთვისაა, თითო სერვერის subuser-ებით - ამიტომ თანაადმინს კონსოლი და ფაილები შეგიძლია მისცე ბილინგზე წვდომის გარეშე. გზამკვლევების console განყოფილება აჩვენებს კონტროლებს.

FAQ#

აქვს Valheim-ს RCON?

ვანილის თამაშში - არა. dedicated server-ს დისტანციური კონსოლის პროტოკოლი და კონსოლის შეყვანა არ აქვს. RCON მხოლოდ BepInEx მოდიდან მოდის, მაგალითად RCON Next-იდან.

რატომ ვერ ვწერ ბრძანებებს ჩემი პანელის კონსოლში?

იმიტომ, რომ ვანილის Valheim სერვერი ბრძანებებს თავისი შეყვანიდან არ კითხულობს. პანელი სერვერის გამოტანას აჩვენებს და მისი გაჩერება და გაშვება შეუძლია, მაგრამ ბრძანებები თამაშში F5-ით უნდა აკრიფოს ჩამოთვლილმა ადმინმა, ან გაიგზავნოს RCON მოდით.

უნდა დააყენონ მოთამაშეებმა RCON მოდი?

არა. RCON Next მხოლოდ dedicated server-ზე მუშაობს. მოთამაშეები შეუცვლელი თამაშით უერთდებიან, ამიტომ ის crossplay-თან თავსებადია.

შემიძლია ვინმეს ban თამაშში შესვლის გარეშე?

დიახ. დაამატე მისი ID bannedlist.txt-ში, რომელსაც სერვერი მუშაობისას ხელახლა კითხულობს. ეს ხელახლა დაკავშირებას უკრძალავს; თუ ამ დროს ონლაინაა, გააგდე თამაშში ან სერვერი გადატვირთე, რომ ban მის სესიაზეც გავრცელდეს.

უსაფრთხოა RCON-ის ინტერნეტში გამოჩენა?

ნამდვილად არა. Source RCON დაუშიფრავია, ამიტომ პაროლი ქსელში აშკარა ტექსტით გადის. შეზღუდე პორტი ცნობილი მისამართებით, გაატარე SSH ტუნელით ან VPN-ით, ან დაუკავშირდი იმავე მანქანიდან.