راهاندازی سرور CS2: سرور اختصاصی Counter-Strike 2 روی لینوکس با SteamCMD
یک سرور Counter-Strike 2 برای بازی با دوستان یا انجمن خود روی Ubuntu 24.04 راهاندازی کنید: SteamCMD، فایلهای سرور، Game Server Login Token، فایل server.cfg، حالتهای بازی، فایروال، سرویس systemd و بهروزرسانی خودکار.
وقتی سرور Counter-Strike 2 خودتان را دارید، تنظیمات مسابقه، چرخش نقشهها و اینکه چه کسی میتواند وارد شود را خودتان تعیین میکنید. برای مسابقه خصوصی با دوستان، تمرین تیمی یا سرور انجمن، مطمئنترین راه این است که سرور را روی یک سرور لینوکسی اجرا کنید که همیشه روشن میماند. در این راهنما یک سرور اختصاصی (dedicated) CS2 را با ابزارهای رسمی Valve روی Ubuntu 24.04 راهاندازی میکنیم.
خلاصه: فایلهای سرور CS2 (App ID 730) را با SteamCMD به صورت ناشناس دانلود میکنید، از Steam یک Game Server Login Token میگیرید و برنامه سرور
cs2را با پارامترهای مناسب حالت بازی اجرا میکنید. فایلهای سرور حجیم هستند؛ دستکم ۶۰ گیگابایت فضای خالی دیسک کنار بگذارید.
چه مقدار منابع لازم است؟
- دیسک: فایلهای سرور CS2 دهها گیگابایت فضا میگیرند (هنگام نگارش این مطلب بیش از ۳۵ گیگابایت) و با هر بهروزرسانی بزرگتر میشوند. هنگام بهروزرسانی به فضای موقت هم نیاز است. دستکم ۶۰ گیگابایت و ترجیحاً ۸۰ گیگابایت یا بیشتر اختصاص دهید. دیسک NVMe بارگذاری نقشهها را سریعتر میکند.
- RAM: برای یک سرور رقابتی یا deathmatch با ۱۰ تا ۱۲ بازیکن، ۴ گیگابایت شروع راحتی است. اگر از افزونه استفاده میکنید، ممکن است به مقدار بیشتری نیاز داشته باشید.
- پردازنده: سرور CS2 در محاسبات tick به کارایی تکهسته متکی است و به تأخیر بسیار حساس است. روی سروری با پردازنده اشتراکی ممکن است در ساعات شلوغ با لگ و گیر کردن روبهرو شوید؛ سروری با پردازنده اختصاصی انتخاب کنید.
۱. سیستم را آماده کنید
با SSH به سرور متصل شوید. SteamCMD به کتابخانههای ۳۲ بیتی نیاز دارد، پس معماری i386 را فعال و بستههای لازم را نصب میکنیم:
sudo dpkg --add-architecture i386
sudo apt update && sudo apt upgrade -y
sudo apt install -y lib32gcc-s1 lib32stdc++6 curl tmux
سرور را با root اجرا نکنید. یک کاربر جداگانه بسازید:
sudo adduser --disabled-password --gecos "" cs2
۲. SteamCMD را نصب کنید
SteamCMD ابزار خط فرمان Valve برای دانلود و بهروزرسانی فایلهای سرور است. به کاربر cs2 بروید و بسته رسمی را دانلود کنید:
sudo -iu cs2
mkdir -p ~/steamcmd && cd ~/steamcmd
curl -sqL "https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz" | tar zxvf -
۳. فایلهای سرور CS2 را دانلود کنید
فایلهای سرور CS2 از همان App ID خود بازی (730) استفاده میکنند و با ورود ناشناس قابل دانلود هستند:
~/steamcmd/steamcmd.sh +force_install_dir /home/cs2/cs2-ds +login anonymous +app_update 730 validate +quit
بسته به سرعت اتصال، دانلود ممکن است بیش از چند دقیقه طول بکشد. پس از پایان کار باید سطر Success! App '730' fully installed. را ببینید. اگر خطا گرفتید، معمولاً اجرای دوباره همان دستور کافی است؛ SteamCMD از همان جایی که متوقف شده ادامه میدهد.
کتابخانهای را که سرور برای اتصال به Steam لازم دارد، به جایی که انتظارش را دارد لینک کنید. اگر این مرحله را انجام ندهید، سرور ممکن است هنگام اجرا خطای steamclient.so بدهد:
mkdir -p ~/.steam/sdk64
ln -sf ~/steamcmd/linux64/steamclient.so ~/.steam/sdk64/steamclient.so
۴. یک Game Server Login Token (GSLT) بگیرید
برای اینکه سرور شما در اینترنت دیده شود و بازیکنان بتوانند به آن وصل شوند، به یک GSLT نیاز دارید. در مرورگر با حساب Steam خود به نشانی steamcommunity.com/dev/managegameservers بروید، 730 را به عنوان App ID وارد کنید و با افزودن یک یادداشت، توکن بسازید. Steam برای این صفحه چند شرط را در حساب شما بررسی میکند (برای مثال حساب نباید محدود باشد و باید شماره تلفن به آن متصل باشد). کد بلندی را که ساخته میشود کپی کنید؛ در مراحل بعد آن را به جای TOKEN قرار میدهید. توکن را با هیچکس به اشتراک نگذارید.
۵. فایل server.cfg را بسازید
تنظیمات سرور در فایل game/csgo/cfg/server.cfg نگهداری میشود:
nano ~/cs2-ds/game/csgo/cfg/server.cfg
یک پیکربندی پایه:
hostname "Benim CS2 Sunucum"
sv_password ""
rcon_password "GucluBirRconSifresi"
sv_lan 0
sv_cheats 0
mp_autoteambalance 1
اگر در sv_password رمزی بنویسید، سرور فقط برای کسانی باز است که رمز را میدانند؛ این برای مسابقههای خصوصی کاربردی است. rcon_password به شما امکان میدهد سرور را از داخل بازی از راه دور مدیریت کنید؛ حتماً رمز قویای انتخاب کنید.
۶. پورت را در فایروال باز کنید
سرور CS2 به طور پیشفرض از پورت 27015 استفاده میکند. ترافیک بازی از طریق UDP و RCON از طریق TCP منتقل میشود. به کاربر خودتان برگردید (exit) و اجرا کنید:
sudo ufw allow OpenSSH
sudo ufw allow 27015/udp
sudo ufw allow 27015/tcp
sudo ufw enable
۷. سرور را اجرا کنید
اجرای آزمایشی نخست را در یک نشست tmux انجام میدهیم:
sudo -iu cs2
tmux new -s cs2
~/cs2-ds/game/bin/linuxsteamrt64/cs2 -dedicated -usercon -port 27015 +game_type 0 +game_mode 1 +map de_dust2 +sv_setsteamaccount TOKEN +exec server.cfg
به جای TOKEN کدی را که در مرحله ۴ گرفتید بنویسید. در کنسول باید سطرهایی ببینید که نشان میدهند نقشه بارگذاری شده و اتصال به Steam برقرار شده است. با Ctrl+B و سپس D از نشست خارج شوید؛ سرور به کار خود ادامه میدهد.
برای اتصال به بازی، کنسول توسعهدهنده را در CS2 باز کنید (از بخش Settings > Game فعال میشود) و connect SUNUCU_IP:27015 را با IP سرور خود بنویسید. اگر رمز گذاشتهاید، ابتدا دستور password SIFRE را وارد کنید.
حالتهای بازی
حالت بازی با ترکیب پارامترهای game_type و game_mode تعیین میشود:
| حالت | game_type | game_mode |
|---|---|---|
| Casual | 0 | 0 |
| رقابتی (Competitive) | 0 | 1 |
| Wingman | 0 | 2 |
| مسابقه تسلیحاتی (Arms Race) | 1 | 0 |
| Deathmatch | 1 | 2 |
برای مثال، برای یک سرور deathmatch در دستور اجرا از +game_type 1 +game_mode 2 استفاده کنید.
۸. سرویس systemd و بهروزرسانی خودکار
وقتی Valve بازی CS2 را بهروز میکند، بازیکنان نمیتوانند به سرورهایی که نسخه قدیمی دارند وصل شوند. به همین دلیل بهروزرسانی سرور پیش از هر بار اجرا راهحل کاربردیای است. ابتدا سرور داخل tmux را ببندید (tmux attach -t cs2 و سپس نوشتن quit)، بعد با کاربر خودتان فایل سرویس را بسازید:
sudo nano /etc/systemd/system/cs2.service
[Unit]
Description=Counter-Strike 2 sunucusu
After=network-online.target
Wants=network-online.target
[Service]
User=cs2
WorkingDirectory=/home/cs2/cs2-ds
ExecStartPre=/home/cs2/steamcmd/steamcmd.sh +force_install_dir /home/cs2/cs2-ds +login anonymous +app_update 730 +quit
ExecStart=/home/cs2/cs2-ds/game/bin/linuxsteamrt64/cs2 -dedicated -usercon -port 27015 +game_type 0 +game_mode 1 +map de_dust2 +sv_setsteamaccount TOKEN +exec server.cfg
Restart=on-failure
RestartSec=15
TimeoutStartSec=0
[Install]
WantedBy=multi-user.target
TimeoutStartSec=0 جلوی لغو شدن اجرا توسط systemd را در بهروزرسانیهای طولانی میگیرد. سرویس را فعال کنید:
sudo systemctl daemon-reload
sudo systemctl enable --now cs2
sudo journalctl -u cs2 -f
وقتی بهروزرسانی جدیدی منتشر شود، دستور sudo systemctl restart cs2 ابتدا سرور را بهروز میکند و سپس آن را دوباره اجرا میکند. در صورت تمایل میتوانید این دستور را با cron هر شب در ساعتی که بازیکنان کمتری آنلاین هستند اجرا کنید.
نکتهای کوتاه درباره افزونهها
برای منوی مدیریت، آمار یا حالتهای سفارشی از زیرساختهای افزونهای استفاده میشود که انجمن توسعه داده است، مانند Metamod:Source و CounterStrikeSharp. چون نحوه نصب این ابزارها با بهروزرسانیهای بازی مرتب تغییر میکند، مستندات رسمی خودشان را دنبال کنید و پس از یک بهروزرسانی بزرگ CS2 صبر کنید تا نسخه سازگار افزونهها منتشر شود.
سرورهای بازی TürkiyeVPS برای CS2
سرور CS2 هم به فضای دیسک و هم به کارایی تکهسته نیاز دارد. پکیجهای سرور بازی ما با vCPU اختصاصی روی Intel Core i5-10400F، رم تضمینی، دیسک ۶۰ تا ۱۰۰ گیگابایتی، آدرس IPv4 اختصاصی و دسترسی root ارائه میشوند؛ برای CS2 پکیجی با ۴ گیگابایت RAM و ۸۰ گیگابایت دیسک شروع راحتی است. سرورها در استانبول قرار دارند و تأخیر برای بازیکنان داخل ترکیه پایین است. چون فضای دیسک پکیجهای استاندارد VPS ما کم است، این پکیجها برای CS2 مناسب نیستند. برای بازیهای دیگر، راهنماهای راهاندازی سرور FiveM و راهاندازی سرور ماینکرفت را هم ببینید.
سوالات متداول
آیا راهاندازی سرور CS2 رایگان است؟
نرمافزار سرور CS2 و GSLT رایگان هستند. فقط هزینه ماشینی را میپردازید که سرور روی آن اجرا میشود. روی رایانه خودتان هم میتوانید سرور راه بیندازید، اما با خاموش شدن رایانه، سرور هم خاموش میشود.
سرور CS2 چند گیگابایت دیسک لازم دارد؟
فایلهای سرور دهها گیگابایت فضا میگیرند و با بهروزرسانیها بزرگتر میشوند. با در نظر گرفتن فضای لازم برای بهروزرسانی، دستکم ۶۰ گیگابایت و ترجیحاً ۸۰ گیگابایت یا بیشتر اختصاص دهید.
سرورم در فهرست دیده نمیشود یا بازیکنان نمیتوانند وصل شوند؛ چه کنم؟
ابتدا با sudo ufw status بررسی کنید که پورت 27015 UDP باز باشد. سپس مطمئن شوید که در دستور اجرا از یک GSLT معتبر استفاده کردهاید و تنظیم sv_lan 0 برقرار است. در پایان، دستور app_update 730 را دوباره اجرا کنید تا مطمئن شوید سرور بهروز است.
آیا میتوانم سرور 128 tick راهاندازی کنم؟
CS2 به جای تنظیمات قدیمی نرخ tick از سیستمی به نام «sub-tick» استفاده میکند؛ لازم نیست مانند CS:GO نرخ tick را انتخاب کنید. آنچه واقعاً بر تجربه بازی اثر میگذارد، پایداری پردازنده سرور و تأخیر تا بازیکنان است.
اینها را هم بخوانید
اگر برنامهها روی VPS با رم ۵۱۲ مگابایت یا ۱ گیگابایت مدام بسته میشوند، swap اولین کمک است. افزودن swap در او...
ربات شما نباید با خاموش شدن لپتاپ از کار بیفتد. آموزش قدمبهقدم اجرای ربات تلگرام پایتون بهصورت ۲۴ ساعته رو...
میخواهید سرور Metin2 راه بیندازید اما نمیدانید VPS کافی است یا VDS لازم دارید؟ پردازندهٔ اشتراکی و اختصاصی،...