مجله ایرانیکاسرورآموزش سرور، هاست، وردپرس و شبکه
آموزشی

ساخت سرور Vintage Story؛ آموزش نصب Mods، تنظیم Whitelist و بکاپ World

ساخت سرور Vintage Story؛ آموزش نصب Mods، تنظیم Whitelist و بکاپ World Vintage Story Server یک سرور اختصاصی برای بازی Vintage Story است که به شما اجازه می‌دهد دنیای بقا، اکتشاف و ساخت‌وساز خود…

ساخت سرور Vintage Story؛ آموزش نصب Mods، تنظیم Whitelist و بکاپ World
خلاصه سریع این آموزش

ساخت سرور Vintage Story؛ آموزش نصب Mods، تنظیم Whitelist و بکاپ World Vintage Story Server یک سرور اختصاصی برای بازی Vintage Story است که به شما اجازه می‌دهد دنیای بقا،…

۲۶ دقیقه مطالعه ۰ دیدگاه ۱۲ آبان ۱۴۰۵ آخرین به‌روزرسانی

فهرست مطالب

ساخت سرور Vintage Story؛ آموزش نصب Mods، تنظیم Whitelist و بکاپ World

Vintage Story Server یک سرور اختصاصی برای بازی Vintage Story است که به شما اجازه می‌دهد دنیای بقا، اکتشاف و ساخت‌وساز خود را به‌صورت آنلاین و چندنفره اجرا کنید. در این بازی، بازیکنان می‌توانند منابع استخراج کنند، ابزار بسازند، کشاورزی کنند و در دنیایی با آب‌وهوا، فصل‌ها و سیستم‌های پیچیده بقا زندگی کنند.

برای ساخت سرور Vintage Story نیازی به اجرای نسخه گرافیکی بازی روی سرور نیست. می‌توانید فایل‌های Dedicated Server را روی یک سرور مجازی لینوکس نصب کنید و از طریق تنظیمات JSON، دستورات مدیریتی و Modهای دلخواه، محیط بازی را کنترل کنید.

با این حال، سه موضوع در مدیریت این بازی اهمیت ویژه‌ای دارند: سازگاری Modها با نسخه بازی، تنظیم Whitelist برای ورود بازیکنان و تهیه Backup مطمئن از World. اشتباه در هرکدام از این بخش‌ها ممکن است باعث خطای اتصال، اجرا نشدن سرور یا آسیب به اطلاعات ذخیره‌شده شود.

در این آموزش، نصب Vintage Story Dedicated Server روی Ubuntu، ساخت سرویس systemd، تنظیم serverconfig.json، مدیریت Modها، اضافه کردن بازیکنان به Whitelist، تنظیم پورت 42420، انتقال Save، بکاپ‌گیری و آپدیت ایمن سرور را مرحله‌به‌مرحله بررسی می‌کنیم.

Vintage Story Dedicated Server چیست و چه کاربردی دارد؟

Vintage Story یک بازی Survival و Sandbox است که روی بقا، طبیعت، ساخت ابزار، صنایع دستی و پیشرفت تدریجی بازیکن تمرکز دارد. برخلاف یک بازی چندنفره که World تنها با حضور میزبان فعال است، Dedicated Server به‌صورت مستقل روی یک سیستم اجرا می‌شود.

با راه‌اندازی سرور اختصاصی می‌توانید:

  • یک World دائمی برای دوستان یا جامعه بازیکنان ایجاد کنید.
  • تعداد بازیکنان و دسترسی آن‌ها را مدیریت کنید.
  • سرور را عمومی یا خصوصی نگه دارید.
  • با Whitelist فقط به کاربران مجاز اجازه ورود بدهید.
  • Modهای جدید برای Gameplay، موجودات، ابزارها و ساخت‌وساز نصب کنید.
  • قوانین World و تنظیمات بقا را تغییر دهید.
  • از اطلاعات بازی نسخه پشتیبان تهیه کنید.
  • سرور را بدون نیاز به باز بودن بازی روی کامپیوتر شخصی اجرا کنید.

Vintage Story دارای بسته اختصاصی سرور برای Linux است و می‌توان آن را بدون نصب محیط گرافیکی روی Ubuntu یا Debian اجرا کرد.

منابع سخت‌افزاری موردنیاز Vintage Story Server

میزان منابع لازم به تعداد بازیکنان، اندازه World، فاصله دید، تعداد Chunkهای فعال و Modهای نصب‌شده بستگی دارد.

برای مثال، زمانی که چند بازیکن هم‌زمان در مناطق ناشناخته حرکت می‌کنند، سرور باید Chunkهای جدید تولید کند. این عملیات ممکن است فشار بیشتری به CPU و دیسک وارد کند.

جدول منابع پیشنهادی

نوع سرور RAM پیشنهادی CPU پیشنهادی کاربرد
آزمایشی ۴ گیگابایت ۲ vCPU نصب و تست با تعداد محدود بازیکن
خصوصی کوچک ۶ تا ۸ گیگابایت ۲ تا ۴ vCPU بازی چندنفره با Modهای سبک
سرور فعال ۱۲ تا ۱۶ گیگابایت ۴ تا ۶ vCPU سریع بازیکنان بیشتر و Modهای متنوع
سرور عمومی سنگین ۲۴ تا ۳۲ گیگابایت یا بیشتر ۶ تا ۸ vCPU یا بیشتر World بزرگ و فعالیت هم‌زمان گسترده

این مقادیر پیشنهاد اولیه برای ظرفیت‌سنجی هستند، نه حداقل رسمی تضمین‌شده. برای انتخاب نهایی باید مصرف واقعی سرور را هنگام تولید Chunk، فعالیت بازیکنان و اجرای Modها اندازه‌گیری کنید.

چرا SSD یا NVMe پیشنهاد می‌شود؟

Vintage Story اطلاعات World را در فایل‌های ذخیره‌سازی نگهداری می‌کند. تولید مناطق جدید، ذخیره تغییرات و تهیه Backup می‌توانند عملیات خواندن و نوشتن زیادی ایجاد کنند.

استفاده از SSD یا NVMe می‌تواند زمان انتظار مربوط به دیسک را کاهش دهد. همچنین بهتر است فضای کافی برای چند نسخه Backup و رشد تدریجی World در نظر بگیرید.

چه سیستم‌عاملی مناسب است؟

برای این آموزش از Ubuntu Server استفاده می‌کنیم. نصب روی Debian نیز با تغییرات جزئی امکان‌پذیر است.

پیش از نصب، معماری پردازنده را بررسی کنید:

uname -m

اگر خروجی x86_64 است، باید بسته Linux x64 بازی را دریافت کنید. برای ARM64 از راهنمای مخصوص همان معماری استفاده کنید؛ زیرا پشتیبانی و سازگاری بعضی Modهای کدنویسی‌شده ممکن است متفاوت باشد.

پیش‌نیاز مهم: نسخه .NET

Vintage Story از .NET استفاده می‌کند؛ اما نسخه Runtime موردنیاز در طول توسعه بازی تغییر کرده است.

برای نمونه، مستندات قدیمی نسخه 1.20 به .NET 7 اشاره می‌کنند، در حالی که مستندات توسعه نسخه 1.22 مهاجرت پروژه به .NET 10 را توضیح می‌دهند.

بنابراین نسخه .NET را بر اساس بسته سروری که واقعاً دانلود می‌کنید انتخاب کنید و از نصب کورکورانه نسخه‌های قدیمی خودداری کنید.

برای مشاهده Runtimeهای نصب‌شده:

dotnet --list-runtimes

اگر دستور پیدا نشد یا Runtime لازم موجود نبود، نسخه مناسب را از وب‌سایت رسمی Microsoft .NET نصب کنید. بعضی بسته‌های اجرایی نیز ممکن است وابستگی‌های موردنیاز را همراه خود داشته باشند؛ بنابراین خروجی اجرای فایل سرور را هم بررسی کنید.

آموزش نصب Vintage Story Dedicated Server روی Ubuntu

در این روش، فایل‌های برنامه و اطلاعات World را در دو مسیر جداگانه نگهداری می‌کنیم:

  • مسیر برنامه: /opt/vintagestory/server
  • مسیر اطلاعات: /var/lib/vintagestory

این جداسازی هنگام آپدیت اهمیت زیادی دارد؛ زیرا می‌توانید فایل‌های برنامه را جایگزین کنید، بدون اینکه پوشه Save و Modها را حذف کنید.

مرحله اول: نصب ابزارهای اولیه

از طریق SSH به Ubuntu متصل شوید و دستورات زیر را اجرا کنید:

sudo apt update

sudo apt install -y wget curl tar ca-certificates jq

مرحله دوم: ساخت کاربر مخصوص بازی

بهتر است سرور بازی را با کاربر root اجرا نکنید. یک حساب سیستمی مستقل بسازید:

sudo useradd --system --user-group --home-dir /var/lib/vintagestory --shell /usr/sbin/nologin vintagestory

sudo mkdir -p /opt/vintagestory/server
sudo mkdir -p /var/lib/vintagestory

sudo chown -R vintagestory:vintagestory /opt/vintagestory /var/lib/vintagestory

اگر کاربر vintagestory از قبل وجود دارد، دستور ساخت کاربر را دوباره اجرا نکنید.

مرحله سوم: دریافت فایل رسمی Dedicated Server

به صفحه دانلود رسمی Vintage Story بروید و در بخش فایل‌های دیگر، بسته Linux Server با پسوند tar.gz را انتخاب کنید.

نام بسته معمولاً ساختاری شبیه نمونه زیر دارد:

vs_server_linux-x64_VERSION.tar.gz

به‌جای VERSION باید شماره نسخه واقعی بسته قرار بگیرد.

لینک دانلود نسخه انتخابی را کپی کنید و از الگوی زیر استفاده کنید:

cd /tmp

wget -O vintagestory-server.tar.gz "PASTE_OFFICIAL_DOWNLOAD_URL_HERE"

عبارت PASTE_OFFICIAL_DOWNLOAD_URL_HERE باید با لینک واقعی دانلود جایگزین شود. از استفاده از لینک‌های نسخه قدیمی صرفاً به دلیل وجود آن‌ها در آموزش‌های اینترنتی خودداری کنید.

مرحله چهارم: استخراج فایل‌ها

فایل دانلودشده را بررسی و استخراج کنید:

tar -tzf /tmp/vintagestory-server.tar.gz | head

sudo tar -xzf /tmp/vintagestory-server.tar.gz -C /opt/vintagestory/server

sudo chown -R vintagestory:vintagestory /opt/vintagestory/server

قبل از استخراج، مطمئن شوید فایل از منبع رسمی دریافت شده است. در نصب اولیه، پوشه مقصد باید خالی باشد.

مرحله پنجم: بررسی فایل اجرایی

وارد پوشه نصب شوید:

cd /opt/vintagestory/server

ls -lah

بسته به نسخه، فایل VintagestoryServer یا VintagestoryServer.dll را مشاهده خواهید کرد.

برای اجرای مبتنی بر .NET، دستور اصلی به شکل زیر است:

dotnet VintagestoryServer.dll --dataPath /var/lib/vintagestory

این دستور را باید با دسترسی کاربر مخصوص بازی اجرا کنید، نه root. در مرحله بعد آن را داخل سرویس systemd قرار می‌دهیم.

اجرای دائمی Vintage Story Server با systemd

اگر سرور را فقط در یک نشست SSH اجرا کنید، ممکن است پس از قطع نشست، فرایند نیز متوقف شود. استفاده از systemd امکان راه‌اندازی خودکار هنگام روشن شدن سرور و مدیریت وضعیت سرویس را فراهم می‌کند.

ساخت سرویس

فایل زیر را ایجاد کنید:

sudo nano /etc/systemd/system/vintagestory.service

محتوای زیر را وارد کنید:

[Unit]
Description=Vintage Story Dedicated Server
Wants=network-online.target
After=network-online.target

[Service]
Type=simple
User=vintagestory
Group=vintagestory
WorkingDirectory=/opt/vintagestory/server
ExecStart=/usr/bin/dotnet /opt/vintagestory/server/VintagestoryServer.dll --dataPath /var/lib/vintagestory
Restart=on-failure
RestartSec=10
TimeoutStopSec=120
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target

این سرویس برای بسته‌ای نوشته شده که VintagestoryServer.dll را با dotnet اجرا می‌کند. اگر بسته شما فقط فایل اجرایی مستقل دارد، ExecStart را با مسیر همان فایل هماهنگ کنید.

همچنین اگر dotnet در مسیر متفاوتی نصب شده، مسیر آن را با دستور command -v dotnet بررسی کنید.

فعال‌سازی سرویس

sudo systemctl daemon-reload

sudo systemctl enable --now vintagestory

بررسی وضعیت

sudo systemctl status vintagestory --no-pager

برای مشاهده Log زنده:

sudo journalctl -u vintagestory -f

اگر سرویس خطای Runtime یا فایل گمشده نمایش داد، قبل از هر تغییر دیگر، مسیر اجرایی و نسخه .NET را بررسی کنید.

نکته: در این روش، systemd برای راه‌اندازی و نظارت استفاده می‌شود. برای اجرای تعاملی دستورات مدیریتی می‌توانید از کنسول تعاملی بازی یا روش رسمی server.sh استفاده کنید. سرویس ساده systemd به‌تنهایی یک رابط ارسال فرمان به Console فراهم نمی‌کند.

تنظیم فایل serverconfig.json در Vintage Story

فایل serverconfig.json تنظیمات اصلی سرور را نگهداری می‌کند. این فایل معمولاً پس از اولین اجرای موفق سرور در مسیر DataPath ساخته می‌شود.

در ساختار آموزشی ما، مسیر آن عبارت است از:

/var/lib/vintagestory/serverconfig.json

قبل از ویرایش تنظیمات

ابتدا سرور را متوقف کنید:

sudo systemctl stop vintagestory

از فایل تنظیمات یک کپی تهیه کنید:

sudo cp /var/lib/vintagestory/serverconfig.json /var/lib/vintagestory/serverconfig.json.bak

تنظیمات اصلی

نمونه زیر بخشی از کلیدهای رایج را نمایش می‌دهد. این قطعه را جایگزین کل فایل نکنید؛ بلکه مقادیر موجود در فایل تولیدشده توسط نسخه خودتان را ویرایش کنید.

{
  "ServerName": "Iranica Vintage Story",
  "ServerDescription": "Iranica Survival World",
  "Port": 42420,
  "MaxClients": 16,
  "AdvertiseServer": false,
  "Upnp": false,
  "WhitelistMode": "default",
  "PassTimeWhenEmpty": false
}

این نمونه یک JSON مستقل معتبر است، اما فایل واقعی serverconfig.json کلیدهای بسیار بیشتری دارد که باید حفظ شوند.

گزینه کاربرد
ServerName نام سرور
ServerDescription توضیحات سرور
Port پورت ارتباط بازیکنان
MaxClients حداکثر بازیکنان هم‌زمان
AdvertiseServer نمایش در فهرست عمومی
WhitelistMode محدود کردن ورود کاربران
PassTimeWhenEmpty عبور زمان بازی در نبود بازیکنان
ModPaths مسیر جست‌وجوی Modها
SaveFileLocation مسیر فایل World

اعتبارسنجی فایل JSON

پس از ویرایش، ساختار JSON را بررسی کنید:

jq empty /var/lib/vintagestory/serverconfig.json

اگر دستور بدون خطا تمام شود، فایل از نظر نحوی JSON معتبر است. این بررسی تضمین نمی‌کند تمام کلیدها و مقادیر با نسخه بازی سازگار باشند.

پس از بررسی، سرور را دوباره اجرا کنید:

sudo systemctl start vintagestory

آموزش فعال‌سازی Whitelist در Vintage Story Server

Whitelist فهرستی از بازیکنان مجاز است. وقتی این قابلیت فعال باشد، تنها حساب‌هایی که در فهرست مجاز قرار گرفته‌اند می‌توانند وارد سرور شوند.

از نسخه 1.20 به بعد، در Dedicated Serverهای Vintage Story حالت پیش‌فرض Whitelist فعال است. این موضوع برای امنیت سرور خصوصی مفید است، اما ممکن است باعث شود مدیر سرور تصور کند مشکل اتصال یا Firewall وجود دارد.

اضافه کردن بازیکن به Whitelist

در کنسول مدیریتی سرور، دستور زیر را اجرا کنید:

/player PlayerName whitelist on

عبارت PlayerName را با نام دقیق حساب Vintage Story بازیکن جایگزین کنید.

برای مثال:

/player Amir whitelist on

برای اضافه کردن یک بازیکن نیازی به Restart سرور نیست.

حذف دسترسی Whitelist

برای غیرفعال کردن مجوز ورود بازیکن:

/player Amir whitelist off

بررسی وضعیت Whitelist بازیکن

/player Amir whitelist

تغییر حالت کلی Whitelist

برای فعال کردن اجباری Whitelist:

/serverconfig WhitelistMode on

برای بازگرداندن رفتار پیش‌فرض:

/serverconfig WhitelistMode default

برای غیرفعال کردن محدودیت Whitelist:

/serverconfig WhitelistMode off

هشدار امنیتی: برای سرور خصوصی بهتر است Whitelist فعال بماند. غیرفعال کردن آن می‌تواند امکان تلاش برای ورود کاربران ناشناس را افزایش دهد.

چرا ویرایش دستی فایل Whitelist پیشنهاد نمی‌شود؟

طبق راهنمای بازی، مدیریت Whitelist با دستورات داخلی ساده‌تر و مطمئن‌تر از دستکاری مستقیم داده‌های کاربران است.

بهتر است به‌جای ساخت فایل Whitelist فرضی یا ویرایش داده‌های ذخیره‌شده، از دستور رسمی /player استفاده کنید.

دستورات ادمین Vintage Story Server

بعد از ساخت سرور، باید برای حساب خود دسترسی مدیریت تعریف کنید.

دادن دسترسی ادمین

در کنسول سرور:

/op Amir

نام Amir صرفاً نمونه است.

در روش راه‌اندازی با server.sh رسمی، می‌توانید فرمان را از طریق ابزار مدیریت آن ارسال کنید؛ اما در روش systemd ساده این مقاله، باید از کنسول تعاملی یا روش مدیریتی سازگار استفاده شود.

دستورات کاربردی

دستور کاربرد
/list clients نمایش بازیکنان متصل
/stats مشاهده آمار عملکرد سرور
/autosavenow ذخیره فوری World
/genbackup ساخت Backup از World فعال
/serverconfig maxclients 16 تعیین ظرفیت بازیکنان
/serverconfig advertise 0 عدم نمایش در فهرست عمومی
/stop توقف صحیح سرور

این دستورات را در کنسول مدیریتی بازی وارد کنید، نه مستقیماً در Bash لینوکس.

آموزش نصب Mods روی Vintage Story Server

یکی از قابلیت‌های مهم Vintage Story پشتیبانی از Modها است. Mod می‌تواند آیتم‌ها، بلوک‌ها، موجودات، سیستم‌های ساخت‌وساز یا قوانین Gameplay را تغییر دهد.

برای دریافت Modها از Vintage Story Mod DB استفاده کنید.

انواع Modها

نوع Mod محل اجرا نکته
Server-side سرور منطق سمت سرور را تغییر می‌دهد
Client-side کلاینت بازیکن برای رابط کاربری یا قابلیت‌های محلی استفاده می‌شود
Universal سرور و کلاینت ممکن است هر دو سمت به فایل Mod نیاز داشته باشند

از نسخه‌های جدید بازی، بسیاری از Modهای Server-side و Universal هنگام اتصال بازیکن از طریق سیستم خودکار مدیریت Mod دریافت می‌شوند. این قابلیت برای تمام Modهای Client-side تضمین نشده است.

مرحله اول: ساخت پوشه Mods

در ساختار نصب ما:

sudo mkdir -p /var/lib/vintagestory/Mods

sudo chown -R vintagestory:vintagestory /var/lib/vintagestory/Mods

مرحله دوم: تنظیم ModPaths

سرور را متوقف کنید و فایل serverconfig.json را باز کنید.

کلید ModPaths را پیدا کنید و مسیر پوشه Mods را به آن اضافه کنید:

"ModPaths": [
  "Mods",
  "/var/lib/vintagestory/Mods"
]

این قطعه باید در ساختار اصلی JSON قرار بگیرد و کاماهای قبل و بعد آن مطابق فایل واقعی تنظیم شوند.

نکته مهم: مسیر اولیه Mods را حذف نکنید؛ زیرا ممکن است برای بارگذاری فایل‌های پایه بازی موردنیاز باشد.

مرحله سوم: دانلود Mod سازگار

وارد صفحه Mod موردنظر شوید و موارد زیر را بررسی کنید:

  • نسخه Vintage Story پشتیبانی‌شده.
  • نوع Mod: Server-side، Client-side یا Universal.
  • وابستگی به Modهای دیگر.
  • نسخه پایدار و تاریخ آخرین آپدیت.
  • توضیحات سازنده درباره نصب و حذف.

فایل ZIP مربوط به Mod را دریافت کنید.

مرحله چهارم: انتقال فایل ZIP

فایل ZIP را در پوشه Mods قرار دهید:

/var/lib/vintagestory/Mods/

در حالت معمول نیازی به استخراج ZIP نیست، مگر اینکه سازنده Mod دستور دیگری ارائه کرده باشد.

بعد از انتقال، مالکیت فایل‌ها را اصلاح کنید:

sudo chown -R vintagestory:vintagestory /var/lib/vintagestory/Mods

مرحله پنجم: اجرای مجدد و بررسی Log

sudo systemctl restart vintagestory

sudo journalctl -u vintagestory -n 100 --no-pager

در Log به دنبال پیام‌های مربوط به بارگذاری Modها، Dependency و Exception بگردید.

نصب Mod با دستور moddb

Vintage Story ابزار مدیریتی /moddb را نیز ارائه می‌دهد.

برای مشاهده Modهای نصب‌شده:

/moddb list

برای جست‌وجو:

/moddb search example

برای نصب، از Mod ID واقعی و نسخه بازی سازگار استفاده کنید:

/moddb install MOD_ID GAME_VERSION

عبارت‌های MOD_ID و GAME_VERSION جایگزین مقادیر واقعی هستند.

دستورات /moddb باید در کنسول مدیریتی بازی اجرا شوند. پس از نصب یا حذف Mod، مطابق نیاز آن Mod سرور را Restart کنید.

رفع مشکل ناسازگاری Mods در Vintage Story

بسیاری از مشکلات سرورهای Modded به ناسازگاری نسخه Mod با بازی یا وابستگی‌های ناقص مربوط می‌شوند.

۱. نسخه بازی را بررسی کنید

برای مثال، Mod ساخته‌شده برای نسخه 1.20 لزوماً با نسخه 1.22 سازگار نیست.

حتی اگر فایل Mod بدون خطا بارگذاری شود، ممکن است بعضی قابلیت‌های آن هنگام ورود بازیکن یا بارگذاری World دچار مشکل شوند.

۲. وابستگی‌ها را نصب کنید

بعضی Modها برای اجرا به Library یا Mod دیگری نیاز دارند.

اگر Log پیام Missing Dependency نمایش داد، صفحه رسمی Mod را بررسی و وابستگی موردنیاز را نصب کنید.

۳. چند Mod را هم‌زمان آپدیت نکنید

بهتر است ابتدا Backup بگیرید و Modها را به‌صورت مرحله‌ای آپدیت کنید.

اگر پس از آپدیت مشکل ایجاد شد، با این روش راحت‌تر می‌توانید Mod مسئول را شناسایی کنید.

۴. Modهای مربوط به World Generation را با احتیاط تغییر دهید

بعضی Modها بلوک‌ها، آیتم‌ها، موجودات یا قوانین تولید World را تغییر می‌دهند.

حذف چنین Modهایی از یک World فعال ممکن است باعث ایجاد آیتم‌های ناشناخته، از بین رفتن محتوای سفارشی یا ناسازگاری داده‌ها شود.

قبل از حذف، توضیحات سازنده را مطالعه کنید و Backup قابل بازیابی داشته باشید.

۵. مشکل دانلود Mod سمت بازیکن

در اتصال به سرور Modded، بازی می‌تواند Modهای پشتیبانی‌شده را برای Client دریافت کند.

اگر Client همچنان نسخه قدیمی یک Mod را نگه داشته، ممکن است لازم باشد پوشه مربوط به Modهای همان سرور در ModsByServer پاک‌سازی شود تا فایل‌ها دوباره دریافت شوند.

این کار باید روی Client و با اطمینان از انتخاب پوشه درست انجام شود؛ نه با حذف پوشه Mods اصلی سرور.

پورت Vintage Story Server و تنظیم Firewall

پورت پیش‌فرض Vintage Story برابر 42420 است.

برای اجرای سرور عمومی، باید دسترسی شبکه به این پورت فراهم باشد.

باز کردن پورت در UFW

در Ubuntu:

sudo ufw allow 42420/tcp

sudo ufw allow 42420/udp

قبل از فعال کردن UFW روی VPS، مطمئن شوید دسترسی SSH شما مجاز است. برای مثال، اگر SSH روی پورت 22 اجرا می‌شود، Rule آن باید از قبل وجود داشته باشد.

این دستورات Ruleهای پورت بازی را اضافه می‌کنند و به‌تنهایی UFW را فعال نمی‌کنند.

بررسی وضعیت Firewall

sudo ufw status numbered

بررسی Listen بودن پورت

sudo ss -lntup | grep 42420

اگر خروجی مناسب نمایش داده نشد، ابتدا وضعیت سرویس و مقدار Port در serverconfig.json را بررسی کنید.

وجود پورت در خروجی ss به معنی دسترسی قطعی از اینترنت نیست؛ Firewall ارائه‌دهنده VPS یا تنظیمات شبکه نیز ممکن است ارتباط را محدود کنند.

اتصال بازیکنان

بازیکنان می‌توانند از بخش Multiplayer بازی، آدرس IP یا دامنه سرور را همراه با پورت وارد کنند.

نمونه آدرس:

YOUR_SERVER_IP:42420

YOUR_SERVER_IP باید با IP عمومی واقعی سرور جایگزین شود.

World و فایل Save در Vintage Story کجا ذخیره می‌شوند؟

اطلاعات World در Vintage Story معمولاً در یک فایل با پسوند .vcdbs ذخیره می‌شوند.

این فایل می‌تواند شامل اطلاعات مهمی درباره دنیای بازی، تغییرات بازیکنان و بخش‌های ذخیره‌شده World باشد.

در ساختار این مقاله، مسیر معمول Save به شکل زیر است:

/var/lib/vintagestory/Saves/default.vcdbs

مسیر دقیق را باید از مقدار SaveFileLocation در serverconfig.json بررسی کنید.

پیدا کردن فایل World

در Linux:

sudo find /var/lib/vintagestory -type f -name "*.vcdbs"

برای مشاهده مسیر تنظیم‌شده:

jq -r '.WorldConfig.SaveFileLocation' /var/lib/vintagestory/serverconfig.json

انتقال World از Single Player به Dedicated Server

اگر قبلاً در حالت Single Player یک World ساخته‌اید، می‌توانید آن را به Dedicated Server منتقل کنید.

مراحل کلی عبارت‌اند از:

  1. بازی و سرور را متوقف کنید.
  2. از World فعلی Backup بگیرید.
  3. فایل .vcdbs را از سیستم شخصی به سرور منتقل کنید.
  4. فایل را در پوشه Saves قرار دهید.
  5. مقدار SaveFileLocation را با نام فایل هماهنگ کنید.
  6. مالکیت فایل را به کاربر vintagestory بدهید.
  7. سرور را اجرا کنید و World را بررسی کنید.

برای مثال، اگر نام فایل IranicaWorld.vcdbs باشد، مقدار مسیر می‌تواند چنین باشد:

"SaveFileLocation": "/var/lib/vintagestory/Saves/IranicaWorld.vcdbs"

این مقدار باید داخل بخش WorldConfig فایل اصلی قرار بگیرد.

آموزش Backup گرفتن از World در Vintage Story

تهیه Backup برای سرورهای Vintage Story اهمیت زیادی دارد؛ زیرا World ممکن است حاصل ساعت‌ها بازی، ساخت‌وساز و پیشرفت بازیکنان باشد.

بهتر است از دو نوع Backup استفاده کنید: نسخه پشتیبان داخلی بازی برای World و نسخه پشتیبان کامل از اطلاعات و تنظیمات سرور.

روش اول: Backup با دستور داخلی بازی

در کنسول مدیریتی سرور:

/genbackup

این دستور از Save فعلی یک نسخه پشتیبان ایجاد می‌کند و طبق مستندات بازی می‌تواند بدون توقف سرور اجرا شود.

برای تعیین نام اختصاصی، در نسخه‌هایی که این قابلیت را پشتیبانی می‌کنند:

/genbackup before-update

مسیر خروجی Backup را از پیام کنسول و تنظیمات نسخه نصب‌شده بررسی کنید.

روش دوم: Backup کامل فایل‌ها در Linux

برای تهیه نسخه سازگار از تمام داده‌ها، ابتدا سرور را به‌صورت صحیح متوقف کنید:

sudo systemctl stop vintagestory

سپس پوشه Backup را بسازید:

sudo mkdir -p /var/backups/vintagestory

برای تهیه آرشیو:

sudo tar -czf "/var/backups/vintagestory/vs-$(date +%Y%m%d-%H%M%S).tar.gz" -C /var/lib vintagestory

این دستور از پوشه اطلاعات سرور شامل Save، تنظیمات و Modهای موجود در DataPath نسخه پشتیبان تهیه می‌کند.

پس از تکمیل Backup، سرویس را دوباره اجرا کنید:

sudo systemctl start vintagestory

بررسی فایل Backup

برای مشاهده آرشیوهای ساخته‌شده:

sudo ls -lh /var/backups/vintagestory/

برای بررسی فهرست محتویات یک آرشیو مشخص:

tar -tzf /var/backups/vintagestory/YOUR_BACKUP_FILE.tar.gz | head -30

YOUR_BACKUP_FILE باید با نام واقعی فایل جایگزین شود.

برای اطمینان بیشتر، یک بار بازیابی آزمایشی روی سرور جداگانه انجام دهید. وجود فایل ZIP یا tar.gz به‌تنهایی تضمین نمی‌کند که اطلاعات قابل بازیابی هستند.

بازیابی World از Backup

برای بازیابی، ابتدا سرور را متوقف کنید و از وضعیت فعلی نیز Backup بگیرید.

سپس فایل‌های آرشیو را در یک پوشه موقت استخراج کنید و پس از بررسی ساختار، فایل‌های موردنیاز را به مسیر DataPath منتقل کنید.

بهتر است بدون بررسی محتویات آرشیو، کل آن را مستقیماً روی World فعال استخراج نکنید.

پس از بازیابی، مالکیت فایل‌ها را بررسی کرده و سرور را اجرا کنید.

چند نسخه Backup نگه داریم؟

برای سرور فعال، یک برنامه نمونه می‌تواند شامل Backup روزانه، نسخه هفتگی و نگهداری یک نسخه خارج از ماشین اصلی باشد.

تعداد نسخه‌ها باید با ظرفیت ذخیره‌سازی و اهمیت World هماهنگ شود. برای Worldهای بزرگ، رشد حجم Backup را مرتب بررسی کنید.

آپدیت Vintage Story Server بدون حذف World و Mods

در Vintage Story، آپدیت فایل‌های برنامه باید از داده‌های World جدا انجام شود.

طبق راهنمای رسمی، هنگام نصب نسخه جدید Linux بهتر است فایل‌های قدیمی برنامه را با فایل‌های نسخه جدید جایگزین کنید و از ترکیب فایل‌های چند نسخه متفاوت جلوگیری کنید.

اما اگر Save داخل پوشه برنامه قرار گرفته باشد، حذف فایل‌های قدیمی می‌تواند باعث از دست رفتن اطلاعات شود.

به همین دلیل، در این آموزش DataPath را خارج از پوشه برنامه قرار دادیم.

مرحله اول: بررسی نسخه جدید

به اخبار و تغییرات رسمی Vintage Story مراجعه کنید و Release Notes نسخه جدید را بخوانید.

سازگاری Modها و Runtime موردنیاز را بررسی کنید.

مرحله دوم: تهیه Backup

قبل از Update از World، تنظیمات و Modها Backup بگیرید.

اگر Modهای زیادی دارید، فهرست نسخه‌های نصب‌شده را نیز نگهداری کنید.

مرحله سوم: توقف سرور

sudo systemctl stop vintagestory

مرحله چهارم: آماده‌سازی نسخه جدید در پوشه جدا

به‌جای استخراج نسخه جدید روی فایل‌های قدیمی، ابتدا پوشه جداگانه بسازید:

sudo mkdir -p /opt/vintagestory/server-new

sudo tar -xzf /tmp/vintagestory-server.tar.gz -C /opt/vintagestory/server-new

این دستور فرض می‌کند آرشیو جدید و معتبر را قبلاً دانلود کرده‌اید.

پس از بررسی فایل‌های نسخه جدید، می‌توانید با برنامه‌ریزی و حفظ نسخه قبلی برای Rollback، مسیر سرویس را به پوشه جدید تغییر دهید.

در این روش نیازی به حذف یا جایگزینی پوشه /var/lib/vintagestory نیست.

مرحله پنجم: بررسی Modها

قبل از اجرای نسخه جدید، Modهای ناسازگار را شناسایی کنید.

اگر Mod مهمی هنوز با نسخه جدید سازگار نیست، بهتر است Update را تا انتشار نسخه مناسب آن Mod به تعویق بیندازید.

مرحله ششم: راه‌اندازی و تست

پس از هماهنگ کردن مسیر ExecStart با نسخه جدید و اجرای systemctl daemon-reload، سرور را Start کنید و Logها را بررسی کنید.

سپس با یک Client سازگار وارد شوید و عملکرد World، موجودات، بلوک‌ها و Modها را آزمایش کنید.

برای Rollback، فقط برگرداندن فایل اجرایی کافی نیست؛ اگر نسخه جدید ساختار Save را تغییر داده باشد، باید Backup سازگار قبل از Update را نیز بازیابی کنید.

بهینه‌سازی مصرف RAM و CPU سرور Vintage Story

اگر Vintage Story Server با تعداد بازیکنان کم هم کند اجرا می‌شود، باید مصرف منابع را بررسی کنید.

۱. تعداد Chunkهای فعال را کنترل کنید

هرچه بازیکنان مناطق بیشتری را هم‌زمان بارگذاری کنند، فشار روی حافظه و پردازنده بیشتر می‌شود.

گزینه MaxChunkRadius می‌تواند در محدود کردن شعاع Chunkهای بارگذاری‌شده نقش داشته باشد.

مقادیر را به‌صورت تدریجی تغییر دهید و تأثیر آن‌ها را روی تجربه بازیکنان اندازه‌گیری کنید.

۲. مصرف Modها را بررسی کنید

Modهایی که موجودات، ساختارها یا محاسبات مداوم اضافه می‌کنند ممکن است مصرف منابع را افزایش دهند.

اگر پس از نصب یک Mod مصرف CPU بالا رفت، آن را روی World آزمایشی بررسی کنید.

۳. مصرف حافظه فرایند را مشاهده کنید

در Linux:

free -h

ps -eo pid,comm,%cpu,%mem,rss --sort=-rss | head -15

برای بررسی وضعیت سرویس:

systemctl status vintagestory --no-pager

۴. وضعیت دیسک را بررسی کنید

df -h

du -sh /var/lib/vintagestory

اگر فضای دیسک کم شده است، اندازه World و Backupها را بررسی کنید. فایل‌های Backup را بدون اطمینان از داشتن نسخه سالم دیگر حذف نکنید.

۵. عملکرد سرور را از داخل بازی بررسی کنید

دستور زیر اطلاعاتی درباره عملکرد و وضعیت سرور نمایش می‌دهد:

/stats

برای تشخیص مشکل واقعی، آمار بازی را در کنار مصرف CPU، RAM و دیسک بررسی کنید.

رفع مشکلات رایج Vintage Story Server

مشکل علت احتمالی راه‌حل
سرور اجرا نمی‌شود Runtime ناسازگار یا مسیر اشتباه بررسی dotnet و Log سرویس
بازیکن نمی‌تواند وارد شود Whitelist فعال افزودن نام کاربری به Whitelist
سرور در فهرست نیست AdvertiseServer غیرفعال بررسی تنظیمات نمایش عمومی
اتصال Timeout می‌شود Firewall یا پورت بسته بررسی پورت 42420
Mod بارگذاری نمی‌شود ModPaths اشتباه یا ناسازگاری نسخه بررسی مسیر و Dependency
Client هنگام اتصال خطا می‌دهد Mod ناسازگار یا دانلود ناقص بررسی Modهای Client و Server
World قبلی نمایش داده نمی‌شود SaveFileLocation اشتباه بررسی مسیر فایل vcdbs
سرور RAM زیادی مصرف می‌کند Chunkهای فعال یا Modهای سنگین پایش منابع و تنظیمات
مشکل پس از آپدیت ناسازگاری Mod یا Save بررسی Log و Backup قبلی
خطای JSON ساختار نامعتبر فایل تنظیمات اعتبارسنجی با jq

چرا سرور اجرا می‌شود اما هیچ بازیکنی نمی‌تواند وارد شود؟

ابتدا Whitelist را بررسی کنید. در نسخه‌های جدید، Dedicated Server به‌صورت پیش‌فرض ورود کاربران غیرمجاز را محدود می‌کند.

اگر نام کاربری در Whitelist قرار دارد، پورت، نسخه Client و Modهای موردنیاز را بررسی کنید.

چرا بعد از نصب Mod سرور Crash می‌کند؟

ممکن است Mod با نسخه بازی سازگار نباشد یا به یک Dependency نیاز داشته باشد.

Log را بررسی کنید و Mod جدید را در یک محیط آزمایشی غیرفعال کنید. برای World اصلی، بدون Backup اقدام به حذف Modهای محتوایی نکنید.

چرا بعد از آپدیت World قبلی باز نمی‌شود؟

ابتدا مقدار SaveFileLocation را بررسی کنید.

اگر مسیر صحیح است، احتمال ناسازگاری نسخه جدید با Modهای قبلی یا تغییر ساختار Save را بررسی کنید.

در این شرایط، قبل از هر عملیات تعمیر یا تبدیل داده، از فایل World یک کپی مستقل تهیه کنید.

سؤالات متداول درباره Vintage Story Server

آیا Vintage Story Dedicated Server روی Linux اجرا می‌شود؟

بله. Vintage Story بسته اختصاصی Linux Server ارائه می‌دهد و می‌توانید آن را روی Ubuntu یا Debian اجرا کنید.

آیا برای ساخت سرور Vintage Story به SteamCMD نیاز داریم؟

خیر. فایل‌های Dedicated Server از طریق صفحه دانلود رسمی Vintage Story دریافت می‌شوند و نصب آن مانند بعضی بازی‌های SteamCMDمحور نیست.

پورت پیش‌فرض Vintage Story چیست؟

پورت پیش‌فرض 42420 است. برای اتصال بازیکنان باید دسترسی شبکه و Firewall متناسب با تنظیمات سرور فراهم باشد.

چرا بازیکنان نمی‌توانند وارد سرور شوند؟

یکی از علت‌های رایج فعال بودن Whitelist است. در Dedicated Serverهای نسخه 1.20 به بعد، Whitelist به‌صورت پیش‌فرض فعال است.

چگونه یک بازیکن را به Whitelist اضافه کنیم؟

از دستور /player PlayerName whitelist on در کنسول مدیریتی استفاده کنید.

آیا برای اضافه کردن بازیکن به Whitelist باید سرور Restart شود؟

خیر. اضافه کردن بازیکن از طریق دستور رسمی معمولاً بدون Restart اعمال می‌شود.

چگونه در Vintage Story ادمین شویم؟

در کنسول مدیریتی از دستور /op PlayerName استفاده کنید و نام حساب خود را جایگزین کنید.

Mods سرور Vintage Story کجا قرار می‌گیرند؟

Modها در پوشه‌ای قرار می‌گیرند که در ModPaths فایل serverconfig.json تعریف شده است. در این آموزش از /var/lib/vintagestory/Mods استفاده کردیم.

آیا باید ZIP مربوط به Mod را استخراج کنیم؟

در بیشتر موارد خیر. فایل ZIP را در پوشه Mods قرار دهید، مگر اینکه سازنده Mod دستور دیگری ارائه کرده باشد.

آیا Modها به‌صورت خودکار برای بازیکنان دانلود می‌شوند؟

بسیاری از Modهای Server-side و Universal از طریق سیستم دریافت خودکار بازی مدیریت می‌شوند؛ اما این قابلیت برای تمام Modهای Client-side تضمین نشده است.

فایل Save بازی Vintage Story چه پسوندی دارد؟

World معمولاً در فایلی با پسوند .vcdbs ذخیره می‌شود. مسیر دقیق آن را می‌توانید در SaveFileLocation مشاهده کنید.

چگونه بدون توقف سرور Backup بگیریم؟

دستور /genbackup برای ساخت نسخه پشتیبان از World فعال طراحی شده است و طبق مستندات می‌تواند هنگام اجرای سرور استفاده شود.

آیا آپدیت Vintage Story باعث حذف World می‌شود؟

اگر فایل‌های World و برنامه را جدا نگه دارید و فقط فایل‌های برنامه را با نسخه جدید جایگزین کنید، احتمال حذف ناخواسته داده‌ها کاهش می‌یابد. با این حال، پیش از Update باید Backup تهیه شود.

چرا بعد از آپدیت Modها کار نمی‌کنند؟

ممکن است نسخه جدید بازی API یا ساختارهایی را تغییر داده باشد که Mod به آن‌ها وابسته است. باید نسخه سازگار Mod را دریافت کنید.

برای Vintage Story Server چقدر RAM لازم است؟

برای یک سرور کوچک می‌توان با منابع متوسط شروع کرد، اما مقدار مناسب به تعداد بازیکنان، Modها و فعالیت World بستگی دارد. ظرفیت نهایی را بر اساس مصرف واقعی تعیین کنید.

جمع‌بندی

برای ساخت Vintage Story Server روی Linux، ابتدا فایل رسمی Dedicated Server را دانلود کنید و آن را با DataPath جداگانه اجرا کنید. سپس تنظیمات اصلی را در serverconfig.json انجام دهید و در صورت نیاز سرویس systemd بسازید.

برای مدیریت دسترسی بازیکنان از Whitelist استفاده کنید. در نسخه‌های جدید Vintage Story، این قابلیت به‌صورت پیش‌فرض در Dedicated Server فعال است و باید نام کاربران مجاز را اضافه کنید.

برای نصب Modها، نسخه سازگار با بازی را از Vintage Story Mod DB دریافت کنید و فایل‌ها را در مسیر Mods قرار دهید. پیش از آپدیت یا حذف Modهای مهم، حتماً از World نسخه پشتیبان تهیه کنید.

همچنین برای محافظت از اطلاعات، از دستور /genbackup و Backup کامل پوشه DataPath استفاده کنید. جدا نگه داشتن فایل‌های برنامه و Save یکی از مهم‌ترین اقدامات برای آپدیت ایمن سرور است.

منابع و مستندات معتبر

برای بررسی نصب Linux، مدیریت Whitelist، ساختار Modها، تنظیمات سرور و Backup از مستندات و راهنماهای زیر استفاده شده است.

۱. Vintage Story Wiki — Dedicated Server Guide

راهنمای راه‌اندازی Dedicated Server، ساخت DataPath، نصب Linux، مدیریت Modها و Whitelist.

مشاهده راهنمای Dedicated Server

۲. Vintage Story Wiki — Multiplayer Server Setup

مستندات تنظیم سرور چندنفره، پورت 42420، اجرای Linux و تنظیمات اولیه.

مطالعه راهنمای سرور چندنفره

۳. Vintage Story Wiki — Server Config

مرجع کلیدهای serverconfig.json، تنظیمات WhitelistMode، MaxClients، ModPaths و WorldConfig.

مشاهده مستندات Server Config

۴. Vintage Story Wiki — Server Commands

فهرست دستورات مدیریت کاربران، Whitelist، ModDB، ذخیره World و تهیه Backup.

مشاهده دستورات رسمی سرور

۵. Vintage Story Mod Database

مرجع اصلی دانلود Modها و بررسی نسخه‌های سازگار و وابستگی‌ها.

ورود به Vintage Story Mod DB

۶. Vintage Story Wiki — Adding Mods

آموزش نصب Mod، دریافت خودکار فایل‌ها هنگام اتصال و مدیریت ModsByServer.

مطالعه راهنمای نصب Mod

۷. Vintage Story — Official Downloads

صفحه رسمی دریافت نسخه‌های بازی و فایل‌های Dedicated Server برای سیستم‌عامل‌های مختلف.

دریافت فایل رسمی سرور Vintage Story

۸. Microsoft — .NET Downloads

مرجع رسمی دریافت Runtime مناسب برای اجرای بسته‌های مبتنی بر .NET.

مشاهده نسخه‌های .NET

اشتراک‌گذاری مقاله
گفت‌وگو درباره آموزش

دیدگاه‌ها (۰)

هنوز دیدگاهی ثبت نشده است.

دیدگاه یا سؤال خود را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *