Valheim-ის გაშვება Pterodactyl პანელზე ოთხ რამეს მოითხოვს: nest-ში შემოტანილ Valheim egg-ს, node-ს, რომელზეც სერვერს ორი თანმიმდევრული პორტი აქვს გამოყოფილი (თამაშის პორტი და მის ზემოთ მდგომი, ორივე UDP-ზე მისაწვდომი), შევსებულ startup ცვლადებს - სერვერის სახელი, სამყაროს სახელი, პაროლი, რომელსაც არც ერთთან საერთო სიტყვა არ აქვს, და public ჩართული ან გამორთული - და ^C stop ბრძანებას, რათა პანელის Stop ღილაკმა SIGINT გააგზავნოს და container-ის გასვლამდე სამყარო შეინახოს. სამყაროები შემდეგ სერვერის ფაილ მენეჯერში container-ის home დირექტორიის ქვეშ ზის, მოდებისთვის კი ცალკე BepInEx egg გამოიყენება და არა შეცვლილი vanilla. თითქმის ყველა პრობლემა სამიდან ერთია: გამოყოფილია მხოლოდ ერთი პორტი, პაროლი, რომელსაც თამაში უარყოფს, ან სამყაროს სახელი, რომელიც ფაილს არ ემთხვევა.
პოსტი ორი ტიპის მკითხველისთვისაა: მათთვის, ვინც საკუთარ Pterodactyl პანელს უშვებს და Valheim-ს ამატებს, და მათთვის, ვინც Pterodactyl-ზე აგებული hosting-იდან Valheim სერვერს ქირაობს და უნდა გაიგოს, რას აკეთებს რეალურად Startup და Network ჩანართები.
როგორ უშვებს Pterodactyl Valheim სერვერს#
Pterodactyl-ს ორი ნახევარი აქვს. პანელი ვებ აპლიკაციაა, სადაც სერვერები, მომხმარებლები და პარამეტრები ცხოვრობს. Wings არის დემონი თითოეულ მანქანაზე (node-ზე), რომელიც Docker container-ებს ქმნის, უშვებს და აჩერებს, მათ კონსოლს გადასცემს და მათ ფაილებს აწვდის. თითო თამაშის სერვერი ერთი container-ია, რომლის მეხსიერების, CPU-სა და დისკის ლიმიტს პანელი ადგენს, და node-ზე მისი ფაილების volume-ით.
რას აკეთებს container, ამას egg განსაზღვრავს - JSON ფაილი, რომელიც ერთ თამაშს აღწერს. egg-ები nest-ებშია დაჯგუფებული. egg შეიცავს:
| ნაწილი | რისთვის არის Valheim-ისთვის |
|---|---|
| Docker image | გარემო, რომელშიც სერვერი მუშაობს, ჩვეულებრივ SteamCMD-ის მქონე Debian ან Ubuntu image |
| Install script | ერთხელ ცალკე installer container-ში გადის: SteamCMD ჩამოტვირთავს აპს 896660 |
| Startup command | valheim_server.x86_64 ხაზი, მნიშვნელობების ნაცვლად ცვლადებით |
| Variables | სახელი, სამყარო, პაროლი, public და ყველაფერი, რასაც egg ხსნის |
| Stop command | ^C, რომელსაც Wings SIGINT-ად აქცევს |
| Done string | ლოგის ხაზი, რომლითაც პანელი იგებს, რომ სერვერმა გაშვება დაასრულა |
კარგი egg ნიშნავს, რომ პანელზე არავის უწევს იცოდეს SteamCMD-ის არსებობა. ცუდი - რომ სერვერი ყოველ გაშვებაზე თავს თავიდან აყენებს ან ყოველ გაჩერებაზე კვდება. Pterodactyl egg-ები თამაშის სერვერებისთვის ფორმატს ზოგადად განიხილავს; ეს პოსტი მხოლოდ იმას ეხება, რაც Valheim-ისთვის მნიშვნელოვანია. თუ თავად Pterodactyl შენთვის ახალია, Pterodactyl პანელის განმარტება ფონს იძლევა.
Valheim egg-ის მოძიება და იმპორტი#
Pterodactyl Valheim egg-ს არ აწვდის. GitHub-ზე community egg-ების რეპოზიტორიას - ადრე parkervcp/eggs, ახლა pelican-eggs ორგანიზაციის ქვეშ - Valheim-ის საქაღალდე აქვს, ცალკე egg-ებით vanilla-სთვის, BepInEx-ისთვის და Valheim Plus-ისთვის. გამოიყენე vanilla, თუ მოდები არ გჭირდება; ვარიანტები ქვემოთ განიხილება.
Pterodactyl 1.x პანელზე იმპორტისთვის:
- რეპოზიტორიიდან ჩამოტვირთე egg-ის
.jsonფაილი. წაიკითხე - ეს შენი სერვერის install script-ია. - ადმინისტრატორის არეში გახსენი Nests, აირჩიე ან შექმენი nest („Valheim“ ან „Survival games“ nest მოწესრიგებულია) და გამოიყენე Import Egg.
- გახსენი იმპორტირებული egg და Docker image-ების სია, startup command და install script შეადარე იმას, რასაც ელოდები.
- შექმენი სერვერი ამ egg-ით. პანელი install script-ს გაუშვებს, შემდეგ სერვერი გასაშვებად მზადაა.
Installer container egg-ის სკრიპტს სერვერის volume-ით /mnt/server-ზე მიმაგრებულით უშვებს, გაშვებულ container-ში კი იგივე volume home დირექტორიაა, /home/container. პირველად დაყენებას რამდენიმე წუთი სჭირდება - Valheim-ის სერვერი დაახლოებით 2 GB-ია.
თუ Pelican-ს იყენებ, Pterodactyl-ის fork-ს, egg-ები მსგავსად შემოდის, მაგრამ პანელის სტრუქტურა განსხვავდება; იმპორტი სად არის, Pelican-ის დოკუმენტაციაში ნახე.
Startup ცვლადები და გამშვები ხაზი#
egg-ის startup command შაბლონია. ცვლადები {{NAME}} ფორმით იწერება და გაშვებისას თითოეული სერვერის მნიშვნელობებით იცვლება. გამარტივებული Valheim startup command ასე გამოიყურება - ცვლადების ზუსტი სახელები egg-ის ვერსიებს შორის განსხვავდება, ამიტომ შენი egg-ის გვერდზე ან სერვერის Startup ჩანართზე წაიკითხე:
./valheim_server.x86_64 -nographics -batchmode -name "{{SERVER_NAME}}" \ -port {{SERVER_PORT}} -world "{{WORLD}}" -password "{{PASSWORD}}" \ -public {{PUBLIC_SERVER}}რეალური egg-ები ამ ხაზამდე Valheim-ისთვის საჭირო გარემოს ამატებენ - LD_LIBRARY_PATH სერვერის linux64 საქაღალდეზე და SteamAppId=892970 - ან startup command-ში, ან Docker image-ის entrypoint-ში. რატომ არის ორივე საჭირო, SteamCMD-ის დაყენების გზამკვლევი განმარტავს.
{{SERVER_PORT}} egg-ის ცვლადი არ არის. მას Wings სერვერის primary allocation-ზე აყენებს, რის გამოც პორტი არასდროს ჩანს როგორც რედაქტირებადი ველი. სხვა ჩაშენებულ მნიშვნელობებს შორის არის SERVER_IP და SERVER_MEMORY.
ცვლადები, რომლებსაც Valheim egg ჩვეულებრივ ხსნის, როლის მიხედვით:
| ცვლადი | რას შეესაბამება | შენიშვნები |
|---|---|---|
| Server name | -name | ჩანს community სიაში; პაროლს არ უნდა შეიცავდეს |
| World name | -world | ფაილის სახელი worlds_local-ში, გაფართოების გარეშე, რეგისტრზე მგრძნობიარე |
| Password | -password | მინიმუმ 5 სიმბოლო; სახელთან ან სამყაროსთან საერთო სიტყვა არ უნდა ჰქონდეს |
| Public | -public | 1 სერვერს სიაში აჩვენებს, 0 მალავს |
| Auto update | (entrypoint) | ყოველ გაშვებაზე SteamCMD განახლებას უშვებს, თუ egg-ს აქვს |
| Extra arguments | ემატება ბოლოს | ზოგ egg-ს აქვს თავისუფალი ტექსტის ველი ისეთი დროშებისთვის, როგორიცაა -crossplay |
თითოეულ ცვლადს აქვს ვალიდაციის წესები, Laravel-ის სინტაქსით (მაგალითად required|string|min:5), და ორი დროშა: შეუძლიათ თუ არა მომხმარებლებს მისი ნახვა და შეუძლიათ თუ არა რედაქტირება. პანელის ადმინისტრატორი შენ წყვეტ, რომელი პარამეტრები ეკუთვნის მომხმარებელს. პაროლის მომხმარებლისთვის რედაქტირებად ველად გახდა min:5 წესით ticket-ების რაოდენობას ამცირებს; თავად startup command-ის დაბლოკილად დატოვება კი ბიბლიოთეკის გზის გაფუჭებას აჩერებს.
Valheim-ს კონფიგურაციის ფაილი არ აქვს, ამიტომ ის, რასაც egg არ ხსნის, egg-ის რედაქტირების გარეშე ვერ შეიცვლება. თუ შენს egg-ს crossplay-ის, სამყაროს მოდიფიკატორების ან შენახვის ინტერვალის ველი არ აქვს, ადმინისტრატორს შეუძლია მათთვის ცვლადები დაამატოს, ან startup command-ის ბოლოს ერთი თავისუფალი ტექსტის „additional arguments“ ცვლადი. დროშები და მათი ნაგულისხმევი მნიშვნელობები Valheim-ის გაშვების არგუმენტების ცნობარშია.
Allocation-ები: ორივე UDP პორტის სწორად გამოყოფა#
Pterodactyl-ში პორტი allocation-ია: IP-სა და პორტის წყვილი, რომელიც node-ზე იქმნება და ერთ სერვერს ენიჭება. Wings თითოეულ allocation-ს ერთდროულად TCP-ზეც და UDP-ზეც აქვეყნებს, ამიტომ პანელში პროტოკოლის პარამეტრი, რომელშიც შეცდომას დაუშვებ, არ არსებობს. არსებობს რაოდენობა, რომელშიც შეიძლება შეცდე.
Valheim თამაშის პორტსაც იკავებს და მის ზემოთ მდგომსაც. პირველს -port-ით ეუბნები; მეორე ავტომატურად მოჰყვება და ცალკე ვერ დაყენდება. ამიტომ Valheim სერვერს სჭირდება:
- Primary allocation თამაშის პორტზე, მაგალითად
2456. ეს ხდებაSERVER_PORT. - დამატებითი allocation უშუალოდ მომდევნო პორტზე,
2457, იმავე სერვერზე მიმაგრებული.
თუ მეორე allocation აკლია, სერვერი მაინც ირთვება და container-ის შიგნით 2457-ს მაინც იკავებს - მაგრამ გარედან მასთან ვერავინ მიაღწევს, რადგან Docker-მა ის არ გამოაქვეყნა. ჩვეულებრივი სიმპტომია სერვერი, რომელსაც მოთამაშეები IP-ით უერთდებიან, მაგრამ community სიაში არასოდეს ჩნდება, რადგან სია query პორტთან ლაპარაკობს. ამ სიმპტომის სხვა მიზეზები Valheim სერვერი სიაში არ ჩანს-შია.
ადმინისტრატორისთვის თანმიმდევრობა ასეთია: node-ის Allocation ჩანართზე დაამატე IP და დიაპაზონი, მაგალითად 2456-2465; სერვერის შექმნისას primary-დ აირჩიე 2456 და დამატებით allocation-ად დაამატე 2457. იმავე node-ზე მეორე Valheim სერვერისთვის დაიწყე 2458-დან, 2459 მის გვერდით. თითოეული სერვერის წყვილი თანმიმდევრული დატოვე - 2460-ზე allocation არაფერს აძლევს სერვერს, რომლის თამაშის პორტი 2458-ია.
node-ის საკუთარმა firewall-მაც უნდა გაუშვას ეს პორტები UDP-ზე, და მის წინ მდგარმა ნებისმიერმა cloud provider-ის firewall-მაც. ერთი ხაფანგი: Docker გამოქვეყნებული პორტებისთვის საკუთარ iptables წესებს წერს, და container-ებისკენ ტრაფიკი ufw-ის ჩვეულებრივ input წესებს არ გადის, ამიტომ ufw-ის წესების სია, რომელიც დახურულად გამოიყურება, შეიძლება არ იყოს დახურული, ხოლო ღია გამოიყურება - არა ის, რამაც რეალურად შეუშვა ტრაფიკი. გარედან გამოსცადე და წესების სიას ნუ ენდობი. პორტების არითმეტიკასა და ტესტირებას Valheim-ის პორტები 2456-2458 განმარტება მოიცავს.
Stop, done string და save-ები#
egg-ის კონფიგურაციაში ორი ხაზი წყვეტს, შეეწყობიან თუ არა პანელი და Valheim ერთმანეთს.
Stop command არის ის, რასაც პანელი აგზავნის, როცა ვინმე Stop-ს ან Restart-ს დააჭერს. უმეტეს თამაშში ეს კონსოლის ბრძანებაა, როგორიცაა stop ან quit. Valheim-ს stdin კონსოლი არ აქვს, ამიტომ მისი egg-ები ^C-ს იყენებენ, რომელსაც Wings ასე ხსნის: „გაუგზავნე პროცესს SIGINT“. ამ სიგნალს Valheim სუფთა გამორთვად აღიქვამს: ინახავს სამყაროს და გადის. თუ egg-ის stop command სხვაა, პანელი ელოდება, არაფერი ხდება და საბოლოოდ ვინმე Kill-ს აჭერს - რაც SIGKILL-ს აგზავნის და ბოლო შენახვის შემდეგ ყველაფერს კარგავს.
Done string არის სერვერის გამოტანის ხაზი, რომელსაც პანელი უთვალთვალებს, რათა სერვერი „starting“-დან „running“-ზე გადაიყვანოს. Valheim-ისთვის ის ჩვეულებრივ გაშვების ბოლოს ხაზია, მაგალითად ის, რომელიც აცხადებს, რომ თამაშის სერვერი Steam-ს დაუკავშირდა. თუ ის არასდროს ემთხვევა, სერვერი მუშაობს, მაგრამ სამუდამოდ „starting“-ში რჩება. რომელ ხაზებს და რა თანმიმდევრობით ბეჭდავს Valheim, Valheim სერვერის ლოგის ფაილის განმარტებაშია.
Valheim-ის ყველა სამყარო მეხსიერებაშია და ყოველ -saveinterval წამში იწერება (ნაგულისხმევად 1800). პანელის ღილაკები სწორად გამოყენებისას სუფთა შენახვას გაძლევს:
| პანელის მოქმედება | სიგნალი | ინახება თუ არა სამყარო |
|---|---|---|
| Stop | egg-ის stop command (^C იძლევა SIGINT-ს) | დიახ |
| Restart | Stop, შემდეგ start | დიახ |
| Kill | SIGKILL | არა |
| Container მეხსიერების ლიმიტს აღწევს | ბირთვი კლავს | არა |
Pterodactyl-ის upstream ნაგულისხმევი მეხსიერების ლიმიტზე მყოფ container-ს swap-ის საშუალებას აძლევს, გაჩერების ნაცვლად. ეს პროცესს ცოცხლად ინახავს სერვერის ნელი მუშაობის ფასად; ორივე შემთხვევაში მეხსიერება ისე გაზომე, რომ ლიმიტს არასდროს მიაღწიოს. რეალისტური ციფრები რამდენი RAM სჭირდება Valheim სერვერს-შია.
ფაილები: სად ცხოვრობს სამყარო ფაილ მენეჯერში#
ფაილ მენეჯერიც და SFTP-ც container-ის volume-ს აჩვენებს, რომელიც სერვერის თვალსაზრისით /home/container-ია. თამაში ამ საქაღალდეშია. Valheim-ის save დირექტორია, თუ egg -savedir-ს არ გადასცემს, Unity-ს ნაგულისხმევია home დირექტორიის ქვეშ:
/home/container/.config/unity3d/IronGate/Valheim/ worlds_local/Midgard.db worlds_local/Midgard.fwl adminlist.txt bannedlist.txt permittedlist.txtზოგი egg -savedir-ს სერვერის ძირში ხილულ საქაღალდეზე აყენებს, რომ ადვილი საპოვნელი იყოს; შეამოწმე შენი გამშვები ხაზი. წერტილით დაწყებულ საქაღალდეებს ფაილების სიაში ადვილად ვერ ამჩნევ, ამიტომ ადამიანები ზოგჯერ დაასკვნიან, რომ სამყარო გაქრა, სანამ ის .config-ში ზის.
ერთმოთამაშიანი სამყაროს ასატვირთად: გააჩერე სერვერი, ატვირთე როგორც .db, ისე .fwl worlds_local-ში, სამყაროს სახელის ცვლადს მიუთითე ფაილის სახელი გაფართოების გარეშე, შემდეგ გაუშვი და კონსოლში უყურე, როგორ იტვირთება სამყარო სახელით. SFTP-ით Wings ნაგულისხმევად პორტ 2022-ზე უსმენს და მომხმარებლის სახელი შენი პანელის მომხმარებლის სახელია, წერტილით სერვერის მოკლე ID-სთან შეერთებული; პანელი ორივეს სერვერის Settings გვერდზე აჩვენებს. სრული გზამკვლევი ლოკალური Valheim სამყაროს სერვერზე ატვირთვაშია.
პანელის backup-ები volume-ის არქივებია, ამიტომ save დირექტორიას შეიცავს. ადმინისტრატორებს შეუძლიათ გზების გამორიცხვა სერვერის ძირში .pteroignore ფაილით - თამაშის 2 GB ფაილების გამორიცხვა Valheim backup-ებს ზომის ნაწილამდე ამცირებს, რადგან SteamCMD მათ ყოველთვის თავიდან ჩამოტვირთავს.
BepInEx ვარიანტი და მოდები#
მოდებს სხვა თამაშის სერვერი არ სჭირდება; სჭირდება მისი გაშვების სხვა გზა. BepInEx Unity-ს doorstop loader-ით ებმება, რომელიც გარემოს ცვლადებით კონფიგურირდება, და BepInExPack-ის start_server_bepinex.sh მათ valheim_server.x86_64-ის გაშვებამდე აყენებს. vanilla egg binary-ს პირდაპირ უშვებს და BepInEx-ს არასდროს ტვირთავს, რამდენი მოდის ფაილიც არ უნდა ატვირთო.
community BepInEx egg ამას უმკლავდება: მისი install script სერვერთან ერთად Valheim-ის BepInExPack-ს ჩამოტვირთავს, startup კი doorstop ცვლადებს აყენებს. არსებული სერვერის მასზე გადაყვანას ადმინისტრატორი ადმინ არეში სერვერის Startup პარამეტრებში აკეთებს, egg-ის შეცვლით; შეამოწმე, იწვევს თუ არა egg-ის შეცვლა შენი პანელის ვერსიაზე reinstall-ს, და ჯერ backup გააკეთე.
BepInEx-ის ჩატვირთვის შემდეგ - მისი საკუთარი ხაზები კონსოლის დასაწყისში ჩნდება - მოდები .dll ფაილებია, რომლებიც BepInEx/plugins-ში ფაილ მენეჯერით ან SFTP-ით ეყრება, კონფიგურაციები კი პირველი გაშვების შემდეგ BepInEx/config-ში ჩნდება. Valheim Plus egg იგივენაირად მუშაობს, Valheim Plus-ით ჩაშენებულით; შეამოწმე, რომ მის მიერ ჩამოტვირთული build შენი თამაშის ვერსიას ემთხვევა, რადგან Valheim Plus რამდენიმე fork-ს გაივლის. წესები, რომელი მოდები სერვერზე მიდის, რომელი კლიენტზე და რომელი ორივეზე, Valheim-ის მოდები BepInEx-ით სერვერზე-შია. მოდიფიცირებულ სერვერზე ნებისმიერი auto-update ცვლადი გამორთე: Valheim-ის patch მოდების უმეტესობას ტეხავს, სანამ ისინი თავიდან არ აიგება.
Schedules: restart-ები და backup-ები Pterodactyl-ზე#
Pterodactyl-ის schedule-ები cron გამოსახულებას იღებს და ამოცანების სიას თანმიმდევრობით ასრულებს, თითოეულს არასავალდებულო დაყოვნებით: კონსოლის ბრძანების გაგზავნა, power action-ის შესრულება ან backup-ის შექმნა.
Valheim-ისთვის კონსოლის ბრძანების ამოცანა თითქმის უსარგებლოა - სერვერი stdin-იდან არაფერს კითხულობს და თამაშში გაფრთხილების broadcast-ის გზა არ არსებობს - ამიტომ schedule power action-ებისა და backup-ებისგან შედგება:
| ამოცანა | მოქმედება | დაყოვნება |
|---|---|---|
| 1 | Power action: restart | 0 |
| 2 | Create backup | 120 წამი |
გაუშვი ყოველკვირეულად წყნარ საათზე - 0 5 * * 1 არის ორშაბათი 05:00-ზე პანელის დროის სარტყელში. restart სერვერს სუფთად აჩერებს, ამიტომ ორი წუთის შემდეგ backup ახლად შენახულ სამყაროს იღებს. მეორე schedule, მხოლოდ backup ამოცანით, ყოველდღიური, დანარჩენ ექვს დღეს ფარავს. Restart-ის განრიგები, რომლებიც გვეხმარება განმარტავს, რატომ არის ყოველკვირეული Valheim-ისთვის საკმარისი, ხოლო cron გამოსახულებების განმარტება სინტაქსს მოიცავს.
RE:NODE-ზე#
RE:NODE Pterodactyl-სა და Wings-ზე საკუთარ პანელს უშვებს, ამიტომ ამ პოსტში ყველაფერი უშუალოდ ეხება. Valheim სერვერი ორივე UDP პორტით გამოყოფილი, crossplay-ით უკვე ჩართული და შენთვის გენერირებული პაროლით მოდის; Startup ჩანართი თამაშის ცვლადებს შეიცავს, Network ჩანართი კი ის ადგილია, სადაც პორტებს ამატებ ან შლი. მოდები ფაილ მენეჯერით ან SFTP-ით ეტვირთება - whitelist არ არსებობს. Backup სლოტები ყველა პაკეტშია და Schedules ჩანართი restart-ებსა და backup-ებს ზემოთ აღწერილი გზით უშვებს.
FAQ#
რატომ არ ჩანს ჩემი Valheim სერვერი Pterodactyl-ზე სერვერების სიაში?
ჩვეულებრივ იმიტომ, რომ გამოყოფილია მხოლოდ თამაშის პორტი. Valheim-ს Steam-ის query-ებისთვის მის ზემოთ მდგომი პორტიც სჭირდება, იმავე სერვერზე დამატებით allocation-ად მიმაგრებული. IP-ით შეერთებით დაადასტურე, რომ თავად სერვერი მუშაობს, შემდეგ დაამატე მეორე allocation და გადატვირთე.
უსაფრთხოა თუ არა პანელზე Stop სამყაროსთვის?
დიახ, თუ egg-ის stop command ^C-ია. მაშინ Wings SIGINT-ს აგზავნის და Valheim გასვლამდე ინახავს. Kill შენახვას გამოტოვებს. თუ Stop გაჭედილი ჩანს, Kill-ს წინ egg-ის stop command შეამოწმე.
შემიძლია crossplay-ის ჩართვა სტანდარტული egg-ით?
თუ egg crossplay-ის ან extra-arguments ცვლადს ხსნის, დიახ - დაამატე -crossplay. თუ არა, ადმინისტრატორმა egg-ში უნდა დაამატოს. მოთამაშეები მაშინ უერთდებიან ექვსციფრიანი კოდით, რომელიც ყოველ გაშვებაზე კონსოლში იბეჭდება.
სად ჩავდო Valheim-ის მოდები Pterodactyl სერვერზე?
BepInEx/plugins-ში, მაგრამ მხოლოდ BepInEx egg-ზე მყოფ სერვერზე. vanilla egg BepInEx-ს არასდროს ტვირთავს, ამიტომ ფაილები იგნორირდება. ჯერ egg შეცვალე, კონსოლში BepInEx-ის ხაზები დაადასტურე, შემდეგ ატვირთე მოდები.
რატომ ინსტალირდება ან ახლდება სერვერი ყოველ გაშვებაზე?
egg-ს ჩართული აქვს auto-update ცვლადი და მისი entrypoint გაშვებამდე SteamCMD-ს უშვებს. ეს vanilla სერვერებისთვის მოსახერხებელია და მოდიფიცირებულისთვის მავნე; თუ შენი egg ამას ხსნის, Startup ჩანართზე გამორთე.


