RE:NODE

Valheim dedicated სერვერი Linux VPS-ზე: ზომიდან განახლებებამდე

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


Valheim-ის სერვერს Linux VPS-ზე სჭირდება x86-64 მანქანა ორი vCPU-თი, 4 GB მეხსიერებით ექვს მოთამაშემდე (6-8 GB ათისთვის ან მოდებისთვის), 20 GB ან მეტი SSD, Ubuntu LTS ან Debian და მოთამაშეებთან ახლოს მდებარეობა. სერვერი SteamCMD-ით დააყენე უპრივილეგიო მომხმარებლით, გახსენი UDP 2456 და 2457 როგორც VPS-ის საკუთარ firewall-ში (sudo ufw allow 2456:2457/udp), ისე პროვაიდერის ქსელის firewall-ში, თუ აქვს, და სერვერი გაუშვი systemd სერვისად და არა tmux-ში, რომ reboot გადაიტანოს და გაჩერებისას შეინახოს. შემდეგ ორი რამ განაახლე სხვადასხვა განრიგით: ოპერაციული სისტემა ავტომატურად, თამაში - შეგნებულად. სამუშაო სულ ეს არის; პოსტის დანარჩენი არგუმენტაცია, ზუსტი ბრძანებები და პრობლემებია, რომლებსაც VPS ამატებს და რომლებიც სახლის PC-ს ან თამაშის hosting-ს არ აქვს.

არის თუ არა VPS Valheim სერვერის სწორი სახლი?#

VPS გაძლევს მთელ Linux მანქანას ყოველთვიურ ფასად: root წვდომა, საჯარო IP და არავისი სხვის წესები. Valheim-ისთვის ეს ნიშნავს ნებისმიერ მოდს, ნებისმიერ გაშვების არგუმენტს, ნებისმიერ backup სქემას, რამდენიმე სამყაროს ერთ მანქანაზე და სერვერის გვერდით სხვა რამეს - Discord ბოტს, პატარა ვებსაიტს, რუკის დამთვალიერებელს.

ის შენ ადმინისტრატორსაც გხდის. ბირთვს არავინ განაახლებს, არავინ შეამჩნევს დისკის ავსებას, არავინ დაატრიალებს ლოგებს და არავინ აღადგენს სამყაროს, როცა დაზიანდება. თუ ეს ჰობის მსგავსად ჟღერს, VPS კარგი არჩევანია. თუ საქმედ - მართვადი თამაშის სერვერი იმავეს აკეთებს პანელით, და ფასის სხვაობა ადამიანების მოლოდინზე პატარაა. VPS vs VDS vs dedicated სერვერი განმარტავს, რას ქირაობ რეალურად.

ორი რამ, რაც ფულის გადახდამდე გამორიცხე:

  • ARM ინსტანციები. Valheim-ის dedicated სერვერი მხოლოდ x86-64 Linux-ისთვისაა აგებული. იაფი ARM პაკეტები, რომლებსაც ზოგი პროვაიდერი რეკლამობს, მას ნატიურად ვერ გაუშვებს, ემულაციის ფენებზე კი ჯგუფის სამყაროს არ ააშენებ. პაკეტის დეტალებში CPU-ს არქიტექტურა შეამოწმე.
  • Burstable ან მძიმედ გაზიარებული CPU. პაკეტები, რომლებიც ბირთვის ნაწილს „burst credits“-ით გაძლევენ, რამდენიმე წუთი კარგად მუშაობენ და მერე ანელებენ. Valheim-ის სიმულაცია მუდმივი დატვირთვაა და არა მოკლე აფეთქებები, ამიტომ კრედიტებს ამოწურავს და მერე ჩაიჭედება.

VPS-ის ზომა#

Valheim-ის სერვერი ერთ მთავარ thread-ზე ეყრდნობა, ამიტომ სწრაფი ბირთვი ბევრ ნელზე მნიშვნელოვანია, მაგრამ მეორე vCPU ღირს - შენახვა, ქსელი და SteamCMD განახლებები მთავარი thread-ის გარეთ ხდება, და ოპერაციულ სისტემასაც სადმე უნდა ეშვებოდეს. მეხსიერება გამოკვლეული სამყაროსთან და სამშენებლო ელემენტების რაოდენობასთან ერთად იზრდება; რუკაზე დატანილ სამყაროს ოთხი დიდი ბაზით ახალ seed-ზე ბევრად მეტი სჭირდება.

ქვემოთ მოცემული ციფრები მთელ VPS-ს ეხება, ამიტომ მოიცავს ოპერაციულ სისტემას, SSH-ს, firewall-ს და SteamCMD განახლებისას მეხსიერების მატებას - თამაშის თავზე დაახლოებით 0,5-1 GB.

ჯგუფიvCPUVPS-ის მეხსიერებადისკი
1-3 მოთამაშე, ახალი სამყარო24 GB20 GB
4-6 მოთამაშე, რამდენიმე ბაზა24-6 GB25 GB
7-10 მოთამაშე, დატანილი რუკა2-46-8 GB30 GB
მოდიფიცირებული, 10+ BepInEx მოდი48 GB30-40 GB

დისკის გამოყენება მოკრძალებულია: სერვერისთვის დაახლოებით 2 GB, სამყაროს ფაილი, რომელიც ჩვეულებრივ 20-დან 150 MB-მდე იზრდება, და backup-ები. ცხრილში დამატებითი ადგილი OS-ს, SteamCMD-ის cache-სა და ამავე მანქანაზე დაარქივებული backup-ების გონივრულ რაოდენობას ეთმობა. აირჩიე NVMe ან SSD; სამყაროს შენახვისას გაყინვა დისკზე ჩაწერაა.

მდებარეობა ნებისმიერ სპეციფიკაციაზე მნიშვნელოვანია. აირჩიე რეგიონი, რომელსაც ჯგუფის უმეტესობასთან ყველაზე დაბალი latency აქვს; ევროპული ჯგუფისთვის გერმანიის ან ნიდერლანდების data center ყოველთვის ამერიკის შეერთებულ შტატებში უფრო სწრაფ მანქანას დაჯაბნის. Valheim ცოტა bandwidth-ს იყენებს - ათეულიდან რამდენიმე ასეულ KB/s-მდე მოთამაშეზე - ამიტომ პაკეტის პორტის სიჩქარე არარელევანტურია. მეხსიერების ზრდაზე სამყაროს ცხოვრების განმავლობაში დეტალები რამდენი RAM სჭირდება Valheim სერვერს-შია.

გაზიარებულ ვირტუალიზაციაზე, როცა სერვერი უკვე მუშაობს და მოთამაშეები არიან, CPU steal შეამოწმე:

bash
$ vmstat 1 10# the last column, st, is time the hypervisor gave your vCPU to someone else

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

პირველი ნაბიჯები ახალ VPS-ზე#

Valheim-თან დაკავშირებულ რამეზე ადრე მანქანა ინტერნეტში დასატოვებლად უსაფრთხო გახადე. Ubuntu-ზე ან Debian-ზე, root-ით ან sudo მომხმარებლით:

bash
$ sudo apt update && sudo apt full-upgrade -y$ sudo adduser admin && sudo usermod -aG sudo admin# copy your SSH public key to the new user, log in with it, then:$ sudoedit /etc/ssh/sshd_config.d/50-hardening.conf
/etc/ssh/sshd_config.d/50-hardening.conf
PasswordAuthentication noPermitRootLogin no
bash
$ sudo sshd -t && sudo systemctl reload ssh

მიმდინარე სესია ღია დატოვე და სანამ დახურავ, ახალი შესვლა გამოსცადე; SSH კონფიგურაციაში შეცდომა გარეთ გაგაგდებს, VPS-ზე კი ეს პროვაიდერის rescue კონსოლს ნიშნავს. SSH სერვისს Ubuntu-სა და Debian-ზე ssh ჰქვია, უმეტეს სხვა დისტრიბუტივზე - sshd. გასაღებებს, fail2ban-სა და დანარჩენს SSH გასაღებები და გამაგრება მოიცავს.

თუ პაკეტს 4 GB ან ნაკლები აქვს, დაამატე პატარა swap ფაილი. სერვერს უფრო სწრაფს არ გახდის - თამაშის სერვერი, რომელიც swap-ზე გადადის, თამაშის სერვერია, რომელიც იჭედება - მაგრამ ბირთვს SteamCMD განახლებისას უმოქმედო მეხსიერების დასადებ ადგილს აძლევს სერვერის მოკვლის ნაცვლად:

bash
$ sudo fallocate -l 2G /swapfile$ sudo chmod 600 /swapfile$ sudo mkswap /swapfile && sudo swapon /swapfile$ echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

Linux swap და OOM killer განმარტავს, რა ხდება, როცა მეხსიერება მაინც ამოიწურება და რატომ კარგავს სამყარო ყველაფერს, რაც არ იყო შენახული.

შემდეგ დააყენე თავად სერვერი: SteamCMD, ცალკე valheim მომხმარებელი, აპი 896660 ანონიმური შესვლით და გამშვები სკრიპტის შენი საკუთარი ასლი. ეს თხუთმეტწუთიანი საქმეა, ნაბიჯ-ნაბიჯ აღწერილი Valheim სერვერის დაყენება Linux-ზე SteamCMD-ით-ში, ამიტომ აქ არ მეორდება.

პორტების გახსნა: ufw#

Valheim-ს ორი UDP პორტი სჭირდება: თამაშის პორტი, ნაგულისხმევად 2456, და მის ზემოთ მდგომი 2457, რომელიც Steam-ის სერვერის query-ებს პასუხობს. ორივე UDP-ა. TCP-ის წესი არაფერს აკეთებს.

Ubuntu-ზე ufw ყველაზე მარტივი firewall ინტერფეისია. SSH ჯერ დაუშვი, თორემ firewall-ის ჩართვა შენს კავშირს გაწყვეტს:

bash
$ sudo ufw allow OpenSSH$ sudo ufw allow 2456:2457/udp comment 'Valheim'$ sudo ufw default deny incoming$ sudo ufw default allow outgoing$ sudo ufw enable$ sudo ufw status verbose

OpenSSH აპლიკაციის პროფილია, რომელსაც ufw Ubuntu-ზე აწვდის; მინიმალურ Debian ინსტალაციაზე, სადაც ის არ არის, გამოიყენე sudo ufw allow 22/tcp ან პორტი, რომელზეც SSH გადაიტანე. თუ მეორე სამყაროს -port 2458-ით უშვებ, 2458:2459/udp ისიც დაამატე. თითოეული სერვერი თავის თამაშის პორტს და მომდევნოს იკავებს, ამიტომ სერვერები მინიმუმ ორი პორტით უნდა იყოს დაშორებული. რატომ ხსნიან ძველი გზამკვლევები ერთი სერვერისთვის 2458-საც, Valheim-ის პორტები 2456-2458 განმარტებაშია.

ზოგადი შაბლონები - default deny, SSH-ის შეზღუდვა, ლოგირება - ufw firewall-ის გზამკვლევშია.

პორტების გახსნა: iptables და nftables#

თუ ufw-ს არ იყენებ ან დისტრიბუტივი მას არ აწვდის, წესები პირდაპირ დაწერე. iptables-ით:

bash
$ sudo iptables -A INPUT -i lo -j ACCEPT$ sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT$ sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT$ sudo iptables -A INPUT -p udp --dport 2456:2457 -j ACCEPT$ sudo iptables -P INPUT DROP

რიგი მნიშვნელოვანია: SSH-ისა და დამყარებული კავშირების წესები უნდა არსებობდეს, სანამ ნაგულისხმევი პოლიტიკა DROP გახდება. ასე დაყენებული წესები reboot-ზე ქრება. Debian-სა და Ubuntu-ზე დააყენე iptables-persistent და შეინახე ისინი:

bash
$ sudo apt install iptables-persistent$ sudo netfilter-persistent save

მიმდინარე Debian-სა და Ubuntu-ზე iptables ბრძანება ჩვეულებრივ nftables-ზე თავსებადობის ფენაა. თუ nftables-ის პირდაპირ წერა გირჩევნია, ეკვივალენტური წესი inet filter ცხრილის input chain-ში არის:

/etc/nftables.conf (excerpt)
udp dport 2456-2457 accept

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

შესამოწმებლად, უსმენს თუ არა სერვერი:

bash
$ sudo ss -ulpn | grep valheim

უნდა ნახო UDP socket-ები 2456-ზე და 2457-ზე. UDP-ის გარედან ტესტირება TCP-ზე ნაკლებად მოწესრიგებულია - პორტების უმეტესი შემმოწმებელი მხოლოდ TCP-ს ესაუბრება, და დახურული UDP პორტი ხშირად იგივენაირად ჩანს, როგორც ღია, რომელმაც არ უპასუხა. პატიოსანი ტესტი მოთამაშის IP-ით შემოსვლაა, შემდეგ კი შემოწმება, ჩანს თუ არა სერვერი community სიაში.

tmux ან screen სერვისის წინააღმდეგ#

უმეტესი სწრაფი გზამკვლევი სერვერს tmux-ში ან screen-ში უშვებს, რომ გასვლის შემდეგაც მუშაობდეს:

bash
$ tmux new -s valheim$ ./start_valheim.sh# detach: Ctrl+b then d; come back with: tmux attach -t valheim$ screen -S valheim$ ./start_valheim.sh# detach: Ctrl+a then d; come back with: screen -r valheim

ეს კარგია ერთი საღამოს ტესტირებისთვის. არ არის კარგი სერვერისთვის, რომელსაც ჩართულს ტოვებ, იმის გამო, რასაც არ აკეთებს:

tmux / screensystemd სერვისი
გადაურჩება logout-სდიახდიახ
ჩატვირთვისას ირთვებაარადიახ
ჩავარდნის შემდეგ თავიდან ირთვებაარადიახ, ლიმიტით
სუფთა შენახვა გამორთვისასმხოლოდ თუ ხელით ჯერ გააჩერებდიახ, KillSignal=SIGINT-ით
ლოგი, რომელშიც ძებნა შეიძლებამხოლოდ scrollbackjournalctl
მიმაგრებადი კონსოლიდიახარა

სამყაროებს მეოთხე მწკრივი კარგავს. როცა VPS ბირთვის განახლებისთვის გადაიტვირთება, tmux სესია ყველაფერთან ერთად კვდება, და სამყარო ბოლო დროული შენახვის შემდეგ ყველაფერს კარგავს - ნაგულისხმევი -saveinterval-ით ოცდაათ წუთამდე. systemd unit სერვერს ჯერ SIGINT-ით აჩერებს, Valheim ინახავს და მხოლოდ შემდეგ ითიშება მანქანა.

მიმაგრებადი კონსოლი, ერთადერთი რამ, რასაც tmux სთავაზობს და systemd - არა, Valheim-ისთვის თითქმის არაფრად ღირს: dedicated სერვერი standard input-იდან ბრძანებებს არ კითხულობს. ადმინისტრატორის ბრძანებები თამაშის კლიენტის F5 კონსოლში იწერება. Valheim-ის გაშვება systemd სერვისად აგებს unit-ს, restart-ის პოლიტიკასა და timer-ებს. თუ tmux და მართვის ინსტრუმენტები გინდა, LinuxGSM-ის vhserver სერვერს tmux სესიაში ათავსებს საკუთარი update, backup და monitor ბრძანებებით.

განახლებების შენარჩუნება: OS და თამაში#

Valheim VPS-ზე განახლების ორი სახეობაა, და ისინი საპირისპირო მოპყრობას ითხოვენ.

ოპერაციულმა სისტემამ თავად უნდა განახლდეს. Ubuntu უსაფრთხოების განახლებებისთვის unattended-upgrades-ს ნაგულისხმევად რთავს; Debian-ზე დააყენე და გაუშვი sudo dpkg-reconfigure -plow unattended-upgrades. ბირთვის განახლებები მხოლოდ reboot-ის შემდეგ ამოქმედდება, unattended-upgrades კი არ ირთავს თავიდან, თუ არ უთხარი. მიეცი მას წყნარ საათზე გადატვირთვის უფლება:

/etc/apt/apt.conf.d/50unattended-upgrades (excerpt)
Unattended-Upgrade::Automatic-Reboot "true";Unattended-Upgrade::Automatic-Reboot-Time "05:00";

ეს უსაფრთხოა მხოლოდ იმიტომ, რომ სერვერი systemd სერვისად მუშაობს სუფთა გაჩერებით. tmux-ში სერვერით ავტომატური reboot პროგრესის ავტომატური დაკარგვაა. თუ ხელით გადატვირთვა გირჩევნია, ყოველ კვირას დაახლოებით შეამოწმე /var/run/reboot-required.

თამაში მაშინ უნდა განახლდეს, როცა შენ გადაწყვეტ. როცა Valheim patch-ს გამოუშვებს, მოთამაშეების კლიენტები Steam-ით ახლდებიან და სერვერი ზუსტად უნდა ემთხვეოდეს, თორემ ყველას Incompatible version ეჩვენება. განახლება ერთი SteamCMD ხაზია, valheim მომხმარებლით გაჩერებულ სერვერზე გაშვებული:

bash
$ sudo systemctl stop valheim$ sudo -u valheim /usr/games/steamcmd +force_install_dir /home/valheim/server \    +login anonymous +app_update 896660 validate +quit$ sudo systemctl start valheim

vanilla სერვერზე ამის ავტომატიზება შეგიძლია unit-ით, რომელიც ყოველ გაშვებამდე განახლებას უშვებს, ამიტომ restart patch-ს იღებს. მოდიფიცირებულზე - არა: patch-ები BepInEx მოდებს ტეხავს, სანამ ავტორები მათ თავიდან არ ააგებენ, და შენ არჩეული განახლება სერვერს ტოვებს, რომელიც ვერ ირთვება. validate ასევე start_server.sh-ს მიწოდებულ ვერსიაზე აბრუნებს, რის გამოც სერვერს საკუთარი ასლიდან უშვებ. ჯგუფებისთვის დრო და ვერსიების გადახრის პრობლემა Valheim სერვერის განახლება და ვერსიების შეუსაბამობის გასწორება-შია.

Backup-ები და ყოველდღიური შემოწმებები#

VPS-ზე ერთი დისკია, და Valheim-ის ჩაშენებული -backups ასლები მასზე სამყაროს გვერდით დევს. ისინი ცუდი შენახვისგან გიცავს და არა წაშლილი დირექტორიის, სავსე დისკის ან პროვაიდერის ინციდენტისგან. save დირექტორია განრიგით დააარქივე, სადაც შესაძლებელია სუფთა restart-ის შემდეგ, და არქივი მანქანიდან გადაიტანე - ობიექტების საცავში ან სხვა კომპიუტერზე. აღდგენას Valheim სერვერის backup-ები და სამყაროს დაზიანება მოიცავს, ხოლო თამაშის სერვერის backup-ები S3-ზე გვიჩვენებს, როგორ გაგზავნო არქივები სხვაგან. პროვაიდერის snapshot-ები სასარგებლო დამატებაა, მაგრამ snapshot, რომელიც სერვერის შენახვის შუაში გადაიღეს, ნახევრად ჩაწერილი სამყაროს snapshot-ია.

მოკლე რუტინა უმეტეს უბედურებას მოთამაშეებზე ადრე იჭერს:

bash
$ systemctl status valheim$ journalctl -u valheim --since today -g "Exception|Error"$ free -h$ df -h /$ uptime

კვირების განმავლობაში სამი ტენდენცია უყურე: მეხსიერება ლიმიტისკენ მიცოცავს (ყოველკვირეული restart ჩვეულებრივ მას თანაბრად ინახავს), დისკი backup-ებითა და ლოგებით ივსება, და საშუალო დატვირთვა მოთამაშეების თამაშისას შენს vCPU-ების რაოდენობას აღემატება. პირველი ორი იაფად გასწორდება. მესამე ნიშნავს უფრო დიდ პაკეტს ან სამყაროს, რომელმაც terraforming-ს გადააჭარბა. თუ ამ ინსტრუმენტებში ახალი ხარ, Linux-ის ბრძანებები სერვერის ადმინისტრატორებისთვის კარგი საწყისი წერტილია.

RE:NODE-ზე#

თუ მთელი მანქანა გინდა, RE:NODE-ს VDS ხაზი არის Intel i9-9900K გერმანიაში, 8 GB მეხსიერებიდან და 2 vCPU-დან, ხელით მოწყობილი 24 საათში; ამ პოსტში ყველაფერი მასზე ვრცელდება. თუ მხოლოდ Valheim სერვერი გინდა, თამაშის პაკეტები 2 GB-დან იწყება, გადახდიდან დაახლოებით ერთ წუთში მზადაა crossplay-ით ჩართული და ორივე UDP პორტით უკვე გამოყოფილი, და firewall-ის, სერვისისა და განახლებების სამუშაოს პანელით ანაცვლებს: სუფთა Stop და Restart, Schedules ჩანართი restart-ებისა და backup-ებისთვის და მანქანის გარეთ შენახული backup სლოტები.

FAQ#

რა არის ყველაზე პატარა VPS, რომელიც Valheim-ს უშვებს?

ორი vCPU და 4 GB მეხსიერება, x86-64-ზე, პატარა ჯგუფისთვის ახალ სამყაროზე. თამაში თავად ამ ზომაზე დაახლოებით 2 GB-ში მუშაობს; დანარჩენი ოპერაციული სისტემისა და SteamCMD განახლებებისთვის დასტოვებული ადგილია. 2 GB VPS მას უშვებს, მაგრამ სრულიად რეზერვის გარეშე.

რატომ ვერავინ უერთდება, თუმცა ufw პორტებს უშვებს?

შეამოწმე პროვაიდერის საკუთარი ქსელის firewall მათ ვებ კონსოლში - ის VPS-ის წინ დგას და ტრაფიკს ufw-მდე ბლოკავს. შემდეგ დაადასტურე, რომ წესები UDP-ზეა და არა TCP-ზე, და რომ ss -ulpn სერვერს ორივე პორტზე მოსმენისას აჩვენებს.

შემიძლია Valheim-ის გაშვება ARM VPS-ზე?

ნატიურად - არა. dedicated სერვერი მხოლოდ x86-64-ისთვისაა აგებული. ემულაციის ფენები არსებობს, მაგრამ ისინი წარმადობას ხარჯავენ და განახლებებთან ტყდებიან, ამიტომ გაზიარებული სამყაროს მყარი საფუძველი არ არის. აირჩიე x86-64 პაკეტი.

საკმარისია tmux, თუ ფრთხილი ვარ?

ის მუშაობს მანამ, სანამ VPS გაფრთხილების გარეშე არ გადაიტვირთება - პროვაიდერის მოვლის ფანჯარა ან ბირთვის განახლება - და სამყარო ბოლო შენახვის შემდეგ ყველაფერს არ დაკარგავს. systemd unit ათი ხაზი ჯდება და ამ რისკს აცილებს, ხოლო სასარგებლო არაფერს კარგავ, რადგან Valheim-ს stdin კონსოლი არ აქვს.

რამდენად ხშირად უნდა განვაახლო სერვერი?

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