RE:NODE

Valheim-ის სერვერის დაყენება Linux-ზე SteamCMD-ით

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


Valheim-ის გამოყოფილი სერვერი Linux-ზე ოთხი ნაბიჯია: დააყენე SteamCMD, შექმენი მომხმარებელი, რომელსაც სერვერის გარდა არაფერი ეკუთვნის, ჩამოტვირთე აპლიკაცია 896660 ანონიმური შესვლით და გაუშვი valheim_server.x86_64 თანმხლები start_server.sh-ის ასლით, რომელიც LD_LIBRARY_PATH-ს სერვერის საკუთარ linux64 საქაღალდეზე აყენებს, SteamAppId-ს კი - 892970-ზე. გახსენი UDP 2456 და 2457, შეფუთე სკრიპტი systemd unit-ში, რომელიც სერვერს SIGINT-ით აჩერებს, რომ გასვლისას შეინახოს, და მიიღებ სერვერს, რომელიც გადატვირთვებს უძლებს. მთელ პროცესს სუფთა Ubuntu-ზე ან Debian-ზე დაახლოებით თხუთმეტი წუთი სჭირდება, ხალხის პრობლემების უმეტესობა კი სამი წყაროდან მოდის: root-ით გაშვება, იმ სკრიპტის რედაქტირება, რომელსაც Steam გადააწერს, და პროცესის მოკვლა მისი გაჩერების ნაცვლად.

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

რა გჭირდება დაწყებამდე#

Valheim-ის სერვერი Unity-ის თამაშის 64-ბიტიანი Linux build-ია. ის ნებისმიერ თანამედროვე x86-64 დისტრიბუციაზე მუშაობს; Ubuntu 22.04 და 24.04 და Debian 12 ის არის, რასაც ხალხის უმეტესობა იყენებს და რასაც ქვემოთ მოცემული ბრძანებები გულისხმობს. ARM მანქანებს (Raspberry Pi, Ampere-ის ღრუბლოვანი ინსტანსები) მისი ნატიურად გაშვება არ შეუძლიათ - თავად SteamCMD მხოლოდ x86-ზეა, ხოლო სერვერის ემულაცია Box64-ით ჰობი პროექტია და არა ჯგუფისთვის ჰოსტინგის საშუალება.

რესურსიმინიმუმიკომფორტული 10 მოთამაშისთვის
RAM2 GB თავისუფალი4 GB თავისუფალი
CPU1 სწრაფი ბირთვი2 ბირთვი, მაღალი სიხშირით
დისკი3 GB დაყენებისთვის10 GB სამყაროებითა და backup-ებით
ქსელიUDP 2456-2457 ხელმისაწვდომიიგივე, მოთამაშეებამდე დაბალი დაყოვნებით

მეხსიერება ის მაჩვენებელია, რომელშიც ხალხი საპირისპირო მიმართულებით ცდება: თავად სერვერი მოკრძალებულია, მაგრამ იზრდება აღმოჩენილ სამყაროსთან და აშენებული ნაწილების რაოდენობასთან ერთად. რამდენი RAM სჭირდება Valheim-ის სერვერს ციფრებს სამყაროს ასაკისა და ჯგუფის ზომის მიხედვით გაძლევს. პატარა VPS-ზე გახსოვდეს, რომ ოპერაციული სისტემაც და SteamCMD-იც თავის წილს იღებს; 2 GB-იანი მანქანა, რომელზეც სხვა არაფერი მუშაობს, სამი მეგობრისთვის კარგია, ათისთვის კი ვიწრო.

ასევე გჭირდება sudo მანქანაზე და ტერმინალი, რომელშიც თავს კომფორტულად გრძნობ. თუ მანქანა სულ ახალია, ჯერ საფუძვლები გააკეთე - root-ის გარეშე შესვლა, SSH გასაღებები, განახლებები - რასაც პირველი საათი ახალ VDS-ზე ნაბიჯ-ნაბიჯ გადის.

SteamCMD-ის დაყენება Ubuntu-სა და Debian-ზე#

SteamCMD Valve-ის ბრძანების ხაზის Steam კლიენტია. ორივე დისტრიბუციას მისი პაკეტი აქვს, მაგრამ ის არქივის non-free ნაწილშია და 32-ბიტიან ბიბლიოთეკებს საჭიროებს, ამიტომ ჯერ ორი მოსამზადებელი ნაბიჯია.

Ubuntu-ზე ჩართე multiverse კომპონენტი და i386 არქიტექტურა:

bash
$ sudo add-apt-repository multiverse$ sudo dpkg --add-architecture i386$ sudo apt update$ sudo apt install steamcmd

Debian 12-ზე პაკეტი non-free-შია. დაამატე contrib non-free შენი წყაროების კომპონენტებში (/etc/apt/sources.list-ში ან, ახალ ინსტალაციებზე, /etc/apt/sources.list.d/debian.sources-ის Components: ხაზში), შემდეგ კი:

bash
$ sudo dpkg --add-architecture i386$ sudo apt update$ sudo apt install steamcmd

ინსტალერი გთხოვს, დაეთანხმო Steam-ის სალიცენზიო შეთანხმებას; გამოიყენე ისრიანი ღილაკები და Enter. ბინარი /usr/games/steamcmd-ში ხვდება, რომელიც ჩვეულებრივი მომხმარებლებისთვის ნაგულისხმევ PATH-შია, მაგრამ სკრიპტებსა და systemd unit-ებში ყოველთვის არა, ამიტომ ინტერაქტიული shell-ის გარდა ყველგან სრული გზა გამოიყენე.

რამდენიმე ბიბლიოთეკის დაყენება იმავდროულად ღირს. crossplay-ის backend-ი libatomic1-ს ტვირთავს, და მის გარეშე -crossplay-ით გაშვებული სერვერი გაშვებისას ბიბლიოთეკის არარსებობის შეცდომით ვარდება. მინიმალურ image-ებზე ხშირად ამბობენ, რომ libpulse0-იც საჭიროა, რადგან Unity-ის runtime მას აუდიოს გარეშეც უკავშირდება. არცერთი არაფერს აზიანებს:

bash
$ sudo apt install libatomic1 libpulse0 ca-certificates

თუ დისტრიბუციის პაკეტის გამოყენება არ გინდა, Valve-ის tarball-იც მუშაობს - ჩამოტვირთე steamcmd_linux.tar.gz, გახსენი სერვერის მომხმარებლის საშინაო საქაღალდეში და steamcmd-ის ნაცვლად გაუშვი ./steamcmd.sh. ბრძანებები იდენტურია. ზოგადი მექანიკა - რას აკეთებს +force_install_dir, რისთვის არსებობს validate, როგორ მუშაობს beta შტოები - SteamCMD-ის ახსნაშია.

ცალკე მომხმარებელი სერვერისთვის#

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

bash
$ sudo useradd --create-home --shell /bin/bash valheim$ sudo -iu valheim

აქედან systemd-ის განყოფილებამდე ყველაფერი ამ მომხმარებლით ხდება. სტრუქტურა, რომელსაც ეს პოსტი იყენებს:

გზარა ინახება იქ
/home/valheim/serverSteamCMD-ით დაყენებული სერვერი
/home/valheim/server/start_valheim.shგაშვების სკრიპტის შენი ასლი
/home/valheim/.config/unity3d/IronGate/Valheimშენახვის ნაგულისხმევი საქაღალდე: სამყაროები და სიის ფაილები
/home/valheim/SteamSteamCMD-ის საკუთარი ქეში და ლოგები

მნიშვნელოვანი შენახვის საქაღალდეა. თუ -savedir-ს არ გადასცემ, სერვერი სამყაროებს worlds_local-ში წერს იმ მომხმარებლის ~/.config/unity3d/IronGate/Valheim-ის ქვეშ, ვინც მას უშვებს, ხოლო adminlist.txt, bannedlist.txt და permittedlist.txt ერთი დონით მაღლა დევს. ერთხელ გაუშვი სერვერი სხვა მომხმარებლით და ის სიამოვნებით შექმნის სულ ახალ სამყაროს იმ მომხმარებლის საშინაო საქაღალდეში - ეს Linux-ზე „ჩემი სამყარო გაქრა“ ტიპის ყველაზე გავრცელებული ჩივილია. სად ინახავს Valheim თავის ფაილებს ორივე პლატფორმაზე ყველა გზას აღწერს.

აპლიკაცია 896660-ის ჩამოტვირთვა#

Valheim-ის გამოყოფილი სერვერი თამაშისგან ცალკე Steam აპლიკაციაა. სერვერი 896660-ია, თამაშის კლიენტი კი 892970. სერვერი ანონიმური შესვლით იტვირთება - არც Valheim-ის ფლობა გჭირდება და არც SteamCMD-ისთვის რაიმე ანგარიშის მიცემა.

bash
$ /usr/games/steamcmd +force_install_dir /home/valheim/server \    +login anonymous +app_update 896660 validate +quit

თანმიმდევრობა მნიშვნელოვანია: +force_install_dir +login-მდე უნდა იყოს, და თუ მათ ადგილს შეუცვლი, ახალი SteamCMD გაფრთხილებას ბეჭდავს. პირველი გაშვება ჯერ თავად SteamCMD-ს ანახლებს, რასაც შეიძლება ერთი წუთი დასჭირდეს და პროგრესის მთელი კედელი დაბეჭდოს, შემდეგ კი დაახლოებით 1-2 GB სერვერის ფაილებს ტვირთავს. წარმატება ასე მთავრდება:

code
Success! App '896660' fully installed.

თუ ხედავ Error! App '896660' state is 0x202 after update job-ს, დისკი სავსეა; 0x602 და მსგავსი კოდები ჩვეულებრივ დაყენების საქაღალდის უფლებების პრობლემას ან შეწყვეტილ ჩამოტვირთვას ნიშნავს. ჯერ იგივე ბრძანება ხელახლა გაუშვი - SteamCMD გაგრძელებს - და თუ განმეორდა, შეამოწმე df -h და საქაღალდის მფლობელი.

იგივე ბრძანება განახლების ბრძანებაცაა. გაუშვი ის ყოველთვის, როცა Valheim პატჩს იღებს, გაჩერებული სერვერით. validate თითოეულ ფაილს manifest-თან ადარებს, რაც უფრო ნელია, მაგრამ ასწორებს ყველაფერს, რაც ავარიამ ან უყურადღებო რედაქტირებამ დააზიანა; ის ასევე გადააწერს შენს ცვლილებებს იმ ფაილებში, რომლებიც სერვერს მოჰყვება, და სწორედ ამიტომ გეუბნება შემდეგი განყოფილება, რომ გაშვების სკრიპტი დააკოპირო. ჯგუფისთვის განახლების დრო - და რას ნიშნავს Incompatible version შეცდომა, როცა რამე არასწორად გააკეთე - Valheim-ის სერვერის განახლებაშია განხილული.

start_server.sh, LD_LIBRARY_PATH და SteamAppId#

ინსტალაციას გაშვების სკრიპტის ნიმუში მოჰყვება. მისი შიგთავსი, კომენტარების სიზუსტისა და იმის გათვალისწინებით, შეიცავს თუ არა ნიმუშის ხაზი უკვე -crossplay-ს (ეს build-ზეა დამოკიდებული), ასე გამოიყურება:

start_server.sh (as shipped)
#!/bin/bashexport templdpath=$LD_LIBRARY_PATHexport LD_LIBRARY_PATH=./linux64:$LD_LIBRARY_PATHexport SteamAppId=892970echo "Starting server PRESS CTRL-C to exit"# Tip: Make a local copy of this script to avoid it being overwritten by steam.# NOTE: Minimum password length is 5 characters & Password cant be in the server name.# NOTE: You need to make sure the ports 2456-2458 is being forwarded to your server./valheim_server.x86_64 -name "My server" -port 2456 -world "Dedicated" -password "secret"export LD_LIBRARY_PATH=$templdpath

მასში ორი ხაზი რეალურ საქმეს აკეთებს, და ორივე იმის მიზეზია, რომ valheim_server.x86_64-ის დამოუკიდებლად გაშვება ვერ ხერხდება.

LD_LIBRARY_PATH=./linux64 დინამიკურ linker-ს ეუბნება, რომ სერვერის საკუთარ linux64 საქაღალდეში ეძებოს, სადაც დევს steamclient.so, რომელიც სერვერს Steam-თან სალაპარაკოდ სჭირდება. მის გარეშე მიიღებ [S_API FAIL] SteamAPI_Init() failed-ს და სერვერს, რომელიც არასოდეს რეგისტრირდება. გაითვალისწინე, რომ გზა ფარდობითია: სკრიპტი მხოლოდ დაყენების საქაღალდიდან გაშვებისას მუშაობს, და სწორედ ამიტომ აყენებს ქვემოთ მოცემული systemd unit WorkingDirectory-ს.

SteamAppId=892970 Steam API-ს ეუბნება, რომელი თამაშია. დიახ, ეს კლიენტის აპლიკაციის id-ია და არა სერვერის - ასე ამოიცნობს Valheim-ის სერვერი თავს Steam-ისთვის, და მისი 896660-ზე შეცვლა ყველაფერს ამტვრევს.

სკრიპტში არსებული კომენტარი ის რჩევაა, რომელსაც უნდა მიჰყვე: გააკეთე ასლი. validate და ყოველი განახლება start_server.sh-ს თანმხლებ ვერსიაზე აბრუნებს, ამიტომ მასში შეტანილი ცვლილებები შემდეგ პატჩზე ქრება. შენი საკუთარი ასლი, შენი სახელით, გადარჩება:

/home/valheim/server/start_valheim.sh
#!/bin/bashcd "$(dirname "$0")"export LD_LIBRARY_PATH=./linux64:$LD_LIBRARY_PATHexport SteamAppId=892970exec ./valheim_server.x86_64 -nographics -batchmode \    -name "Longship Crew" -port 2456 -world "Midgard" \    -password "herring-barrel-42" -public 1 \    -saveinterval 900 -backups 4
bash
$ chmod +x /home/valheim/server/start_valheim.sh

ნიმუშთან შედარებით სამი ცვლილება შეგნებულია. cd "$(dirname "$0")" ფარდობით ბიბლიოთეკის გზას ამუშავებს, საიდანაც არ უნდა გამოიძახო სკრიპტი. -nographics -batchmode Unity-ის სტანდარტული დროშებია ეკრანის გარეშე მომუშავე პროცესისთვის; ნიმუში მათ ზოგჯერ გამოტოვებს და სერვერი მათ გარეშეც მუშაობს, მაგრამ ისინი Unity-ის runtime-ს უშლიან, გრაფიკის ინიციალიზაცია სცადოს მანქანაზე, რომელსაც ის არ აქვს. და exec shell-ს სერვერის პროცესით ანაცვლებს, ასე რომ SIGINT, რომელსაც systemd ან Ctrl+C აგზავნის, პირდაპირ Valheim-ს მიდის და არა shell-ს, რომელმაც შეიძლება ის აღარ გადასცეს. templdpath-ით ცეკვა გამოტოვე - ის მხოლოდ მაშინ აქვს მნიშვნელობა, როცა სკრიპტი source-ით იტვირთება და არა გაშვებით.

პირველი გაშვება და რა უნდა ეწეროს ლოგში#

პირველად სკრიპტი ხელით გაუშვი, valheim მომხმარებლით, რომ თვალი ადევნო:

bash
$ cd /home/valheim/server$ ./start_valheim.sh

ახალი სამყაროს პირველ გაშვებას ნებისმიერ შემდეგზე მეტი დრო სჭირდება, რადგან სამყარო იქმნება და ინახება. ხაზები, რომელთა ცნობაც ღირს, დაახლოებით იმ თანმიმდევრობით, რომლითაც ჩნდება:

code
Valheim version: l-0.xxx.xx (network version xx)Load world: Midgard (Midgard)Game server connectedSession "Longship Crew" with join code 483920 and IP 203.0.113.10:2456 is active

ვერსიის სტრიქონი პატჩის მიხედვით განსხვავდება; მნიშვნელოვანი ფორმაა. Load world შენი სამყაროს სახელით -world არგუმენტს ადასტურებს. თუ არსებულ სამყაროს ელოდი და სამაგიეროდ ახლის შექმნის შეტყობინებებს ხედავ, სახელი worlds_local-ში არსებულ ფაილს არ ემთხვევა - მთავრული ასოების ჩათვლით. Game server connected ნიშნავს, რომ Steam-ში რეგისტრაცია გამოვიდა; თუ ის არასოდეს ჩნდება, ზემოთ მოძებნე SteamAPI_Init-ის შეცდომები, რაც ნიშნავს, რომ ბიბლიოთეკის გზა ან SteamAppId არასწორია. შესვლის კოდი მხოლოდ -crossplay-ით ჩნდება.

გააჩერე Ctrl+C-ით და დაელოდე. პროცესის დასრულებამდე სამყაროს შენახვა უნდა დაინახო. სწორედ SIGINT-ზე შენახვის ეს ქცევაა მიზეზი, რის გამოც ამ პოსტში შემდგომ ყველაფერი ისეა მოწყობილი, როგორც არის. თუ სერვერი საერთოდ არ ეშვება, Valheim-ის სერვერი გაშვებისას ვარდება შეცდომებს ლოგის შეტყობინებების მიხედვით გადის.

Firewall და პორტები#

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

bash
$ sudo ufw allow 2456:2458/udp comment 'Valheim'$ sudo ufw status

მიაქციე ყურადღება ორწერტილს ufw-ის დიაპაზონის სინტაქსში და /udp-ს: TCP წესი Valheim-ისთვის არაფერს აკეთებს, და ეს ყველაზე გავრცელებული მიზეზია, რის გამოც სერვერი კარგად მუშაობს, მაგრამ ვერავინ პოულობს. ღრუბლოვან VPS-ზე ხშირად პროვაიდერის მართვის პანელში მეორე firewall-იცაა (security group), რომელსაც იგივე წესი სჭირდება. სახლში იგივე UDP დიაპაზონი როუტერზე მანქანის LAN მისამართზე გადაამისამართე. ufw firewall-ის სახელმძღვანელო აღწერს ნაგულისხმევ პარამეტრებს, რომლებიც დისტანციურ მანქანაზე ufw-ის ჩართვამდე უნდა დააყენო - ჩართე ის SSH-ის დაშვების გარეშე და საკუთარ თავს ჩაკეტავ.

თუ -port-ს შეცვლი, ყველაფერი მასთან ერთად გადაინაცვლებს: query პორტი ყოველთვის სათამაშო პორტს პლუს ერთია. ერთ მანქანაზე ორი სერვერის გაშვება ორ არაგადამფარავ დიაპაზონს ნიშნავს, მაგალითად 2456-2458 და 2466-2468. დეტალები Valheim-ის პორტების 2456-2458 ახსნაშია.

შეამოწმე შენი ქსელის გარედან: თამაშში IP-ით შეუერთდი your.address:2456-ით. თუ ეს მუშაობს და სერვერი საზოგადოების სიაში მაინც არ ჩანს, სერვერი წესრიგშია და სია ნელია - იხილე Valheim-ის სერვერი სიაში არ ჩანს.

გაშვება systemd სერვისად#

SSH სესიიდან გაშვებული სერვერი სესიასთან ერთად კვდება. tmux ან screen მას ცოცხლად ინახავს, მაგრამ არა გადატვირთვის შემდეგ, და არცერთი არ რესტარტავს მას ავარიის შემდეგ. systemd unit ორივეს აკეთებს და - სწორად მორგების შემთხვევაში - სუფთად აჩერებს.

/etc/systemd/system/valheim.service
[Unit]Description=Valheim dedicated serverWants=network-online.targetAfter=network-online.target[Service]Type=simpleUser=valheimGroup=valheimWorkingDirectory=/home/valheim/serverExecStartPre=/usr/games/steamcmd +force_install_dir /home/valheim/server +login anonymous +app_update 896660 +quitExecStart=/home/valheim/server/start_valheim.shKillSignal=SIGINTTimeoutStopSec=120Restart=on-failureRestartSec=15[Install]WantedBy=multi-user.target
bash
$ sudo systemctl daemon-reload$ sudo systemctl enable --now valheim$ journalctl -u valheim -f

ხაზები, რომლებსაც მნიშვნელობა აქვს:

  • KillSignal=SIGINT systemctl stop-ს Ctrl+C-ის მსგავსად აქცევს, ასე რომ სამყარო ინახება. ნაგულისხმევი SIGTERM იმავე სუფთა გათიშვას არ იძლევა გარანტიას, ხოლო როცა ვადა გადის, systemd SIGKILL-ს აგზავნის, რომელიც არაფერს ინახავს.
  • TimeoutStopSec=120 დიდ სამყაროს ჩაწერის დასასრულებლად დროს აძლევს. ნაგულისხმევი 90 წამი ჩვეულებრივ საკმარისია; მისი გაზრდა არაფერი ღირს.
  • ExecStartPre სერვერს ყოველ გაშვებაზე ანახლებს, ასე რომ Valheim-ის პატჩის შემდეგ რესტარტი აქტუალურ ვერსიამდე მიგიყვანს. ამოიღე ეს ხაზი, თუ BepInEx მოდებს იყენებ - პატჩის დღეს ავტომატური განახლება მოდებს ამტვრევს, სანამ მათი ავტორები დაეწევიან, ეს მომენტი კი შენ თავად უნდა აირჩიო. ის ასევე ყოველ გაშვებას ანელებს SteamCMD-ის შემოწმების დროით.
  • Restart=on-failure სერვერს ავარიის შემდეგ აბრუნებს, მაგრამ არა შეგნებული გაჩერების შემდეგ.

გამონატანი journal-ში მიდის, ასე რომ journalctl -u valheim სერვერის ლოგია, რომელშიც --since-ით და -g-ით შეგიძლია ძებნა. თუ ფაილი გირჩევნია, ამის ნაცვლად გაშვების ხაზს -logFile /home/valheim/valheim.log დაამატე. systemd სერვისები შენი აპლიკაციებისთვის unit-ებს უფრო სიღრმისეულად განიხილავს, MemoryMax=-ით რესურსების შეზღუდვის ჩათვლით.

ყოველკვირეული რესტარტისთვის საკმარისია timer ან root-ის cron ჩანაწერი, რომელიც მშვიდ საათზე systemctl restart valheim-ს უშვებს. რესტარტი დიდხანს მომუშავე სამყაროს მეხსიერების ზრდას ასუფთავებს და, ExecStartPre ხაზით, იმავდროულად განახლებებსაც იღებს.

Backup-ები, რომლებსაც ინსტალაცია არ გაძლევს#

სერვერის -backups დროშა სამყაროს მბრუნავ ასლებს სამყაროს გვერდით, იმავე დისკზე ინახავს. ეს ცუდი შენახვისგან დაცვაა და არა მკვდარი დისკისგან ან წაშლილი საქაღალდისგან. მთელი შენახვის საქაღალდე სადმე სხვაგან დააკოპირე, განრიგით:

bash
$ tar -czf /backup/valheim-$(date +%F).tar.gz \    -C /home/valheim/.config/unity3d/IronGate Valheim

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

თუ ამ ყველაფრის თავად გაშვება არ გინდა, პანელიანი ჰოსტი იმავეს ფორმის მიღმა აკეთებს: RE:NODE-ზე Startup ჩანართი შენი გაშვების ხაზის არგუმენტებს ინახავს, ორივე UDP პორტი გეგმასთან ერთად გამოიყოფა, Restart სუფთა გაჩერებას აგზავნის, რომ სამყარო შეინახოს, backup-ები კი მანქანის გარეთ მიდის და ერთი ღილაკით აღდგება.

FAQ#

უნდა ვფლობდე Valheim-ს სერვერის ჩამოსატვირთად?

არა. აპლიკაცია 896660 +login anonymous-ით იტვირთება. თამაშის ასლი სერვერზე სათამაშოდ გჭირდება და არა მის ჰოსტინგად.

რატომ სჭირდება სერვერს SteamAppId 892970, როცა მისი საკუთარი id 896660-ია?

სერვერი Steam API-ს თამაშის სახელით იყენებს, API კი თამაშს კლიენტის id-ით ამოიცნობს. 896660 მხოლოდ ის depot-ია, რომელსაც SteamCMD ტვირთავს. SteamAppId სხვა რამეზე დააყენე და Steam-ში რეგისტრაცია ჩავარდება.

შემიძლია start_server.sh პირდაპირ დავარედაქტირო?

შეგიძლია, მაგრამ შემდეგი app_update ... validate ან თამაშის პატჩი ორიგინალს დააბრუნებს და მასთან ერთად შენს პარამეტრებსაც წაშლის. შეინახე ასლი სხვა სახელით და ის გაუშვი.

სერვერი screen-ში ან tmux-ში უნდა გავუშვა?

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

როგორ დავამატო ადმინები Linux სერვერზე?

ჩაწერე თითოეული მოთამაშის ID ცალკე ხაზზე adminlist.txt-ში შენახვის საქაღალდეში, რომელიც valheim მომხმარებლისთვის ნაგულისხმევად ~/.config/unity3d/IronGate/Valheim-ია. ფაილი სერვერის მუშაობისას ხელახლა იკითხება. ID-ების ფორმატები, crossplay-ის პრეფიქსების ჩათვლით, Valheim-ის სიის ფაილების სახელმძღვანელოშია.

Linux სერვერი Windows-ისაზე უარესად მუშაობს?

ისე არა, რომ ჯგუფმა შეამჩნიოს. ორივე ერთი და იგივე Unity build-ია სხვადასხვა პლატფორმისთვის, ხოლო Linux-ს პატარა მანქანაზე ნაკლები ფონური დატვირთვა აქვს. Linux თუ Windows გეიმ სერვერებისთვის იმ შემთხვევებს განიხილავს, როცა პლატფორმას მართლაც აქვს მნიშვნელობა.