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 მოთამაშისთვის |
|---|---|---|
| RAM | 2 GB თავისუფალი | 4 GB თავისუფალი |
| CPU | 1 სწრაფი ბირთვი | 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 არქიტექტურა:
$ sudo add-apt-repository multiverse$ sudo dpkg --add-architecture i386$ sudo apt update$ sudo apt install steamcmdDebian 12-ზე პაკეტი non-free-შია. დაამატე contrib non-free შენი წყაროების კომპონენტებში (/etc/apt/sources.list-ში ან, ახალ ინსტალაციებზე, /etc/apt/sources.list.d/debian.sources-ის Components: ხაზში), შემდეგ კი:
$ 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 მას აუდიოს გარეშეც უკავშირდება. არცერთი არაფერს აზიანებს:
$ 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-თი გაუშვა.
$ sudo useradd --create-home --shell /bin/bash valheim$ sudo -iu valheimაქედან systemd-ის განყოფილებამდე ყველაფერი ამ მომხმარებლით ხდება. სტრუქტურა, რომელსაც ეს პოსტი იყენებს:
| გზა | რა ინახება იქ |
|---|---|
/home/valheim/server | SteamCMD-ით დაყენებული სერვერი |
/home/valheim/server/start_valheim.sh | გაშვების სკრიპტის შენი ასლი |
/home/valheim/.config/unity3d/IronGate/Valheim | შენახვის ნაგულისხმევი საქაღალდე: სამყაროები და სიის ფაილები |
/home/valheim/Steam | SteamCMD-ის საკუთარი ქეში და ლოგები |
მნიშვნელოვანი შენახვის საქაღალდეა. თუ -savedir-ს არ გადასცემ, სერვერი სამყაროებს worlds_local-ში წერს იმ მომხმარებლის ~/.config/unity3d/IronGate/Valheim-ის ქვეშ, ვინც მას უშვებს, ხოლო adminlist.txt, bannedlist.txt და permittedlist.txt ერთი დონით მაღლა დევს. ერთხელ გაუშვი სერვერი სხვა მომხმარებლით და ის სიამოვნებით შექმნის სულ ახალ სამყაროს იმ მომხმარებლის საშინაო საქაღალდეში - ეს Linux-ზე „ჩემი სამყარო გაქრა“ ტიპის ყველაზე გავრცელებული ჩივილია. სად ინახავს Valheim თავის ფაილებს ორივე პლატფორმაზე ყველა გზას აღწერს.
აპლიკაცია 896660-ის ჩამოტვირთვა#
Valheim-ის გამოყოფილი სერვერი თამაშისგან ცალკე Steam აპლიკაციაა. სერვერი 896660-ია, თამაშის კლიენტი კი 892970. სერვერი ანონიმური შესვლით იტვირთება - არც Valheim-ის ფლობა გჭირდება და არც SteamCMD-ისთვის რაიმე ანგარიშის მიცემა.
$ /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 სერვერის ფაილებს ტვირთავს. წარმატება ასე მთავრდება:
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-ზეა დამოკიდებული), ასე გამოიყურება:
#!/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-ს თანმხლებ ვერსიაზე აბრუნებს, ამიტომ მასში შეტანილი ცვლილებები შემდეგ პატჩზე ქრება. შენი საკუთარი ასლი, შენი სახელით, გადარჩება:
#!/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$ 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 მომხმარებლით, რომ თვალი ადევნო:
$ cd /home/valheim/server$ ./start_valheim.shახალი სამყაროს პირველ გაშვებას ნებისმიერ შემდეგზე მეტი დრო სჭირდება, რადგან სამყარო იქმნება და ინახება. ხაზები, რომელთა ცნობაც ღირს, დაახლოებით იმ თანმიმდევრობით, რომლითაც ჩნდება:
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-ებსაც ფარავს, რომლებიც მესამეს იყენებდნენ:
$ 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 ორივეს აკეთებს და - სწორად მორგების შემთხვევაში - სუფთად აჩერებს.
[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$ sudo systemctl daemon-reload$ sudo systemctl enable --now valheim$ journalctl -u valheim -fხაზები, რომლებსაც მნიშვნელობა აქვს:
KillSignal=SIGINTsystemctl stop-ს Ctrl+C-ის მსგავსად აქცევს, ასე რომ სამყარო ინახება. ნაგულისხმევიSIGTERMიმავე სუფთა გათიშვას არ იძლევა გარანტიას, ხოლო როცა ვადა გადის, systemdSIGKILL-ს აგზავნის, რომელიც არაფერს ინახავს.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 დროშა სამყაროს მბრუნავ ასლებს სამყაროს გვერდით, იმავე დისკზე ინახავს. ეს ცუდი შენახვისგან დაცვაა და არა მკვდარი დისკისგან ან წაშლილი საქაღალდისგან. მთელი შენახვის საქაღალდე სადმე სხვაგან დააკოპირე, განრიგით:
$ 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 გეიმ სერვერებისთვის იმ შემთხვევებს განიხილავს, როცა პლატფორმას მართლაც აქვს მნიშვნელობა.


