- آیا آمادهاید یک سرور Garry’s Mod پایدار، امن و کمتاخیر راهاندازی کنید؟
- انتخاب لوکیشن و پلن مناسب
- پیشنیازها و آمادهسازی سیستم
- دانلود و نصب SRCDS با SteamCMD
- پیکربندی سرور — server.cfg و پارامترهای اجرا
- اجرای سرور بهعنوان سرویس systemd
- فایروال، پورتها و امنیت شبکه
- 优化性能并降低延迟
- مدیریت مودها، Workshop و اتوماسیون دانلود
- آپدیت خودکار و بکاپ
- مانیتورینگ، لاگها و نگهداری
- نکات عملی برای مدیران و DevOps
- جمعبندی و پیشنهادات کلی
آیا آمادهاید یک سرور Garry’s Mod پایدار، امن و کمتاخیر راهاندازی کنید؟
در این راهنمای گامبهگام برای مدیران سرور، گیمرها و تیمهای DevOps، فرآیند کامل راهاندازی سرور Garry’s Mod (SRCDS) با استفاده از SteamCMD توضیح داده شده است. این مقاله شامل انتخاب لوکیشن مناسب، نصب و پیکربندی SRCDS، تنظیمات امنیتی مثل RCON و فایروال، بهینهسازی پینگ و سختافزار، مدیریت Workshop، اتوماسیون آپدیت و بکاپ و نکات عملی برای نگهداری و مانیتورینگ است.
انتخاب لوکیشن و پلن مناسب
انتخاب لوکیشن برای Garry’s Mod بسیار مهم است چون تجربه بازیکنان به پینگ وابسته است. برای بازیکنان در یک کشور خاص، نزدیکترین دیتاسنتر را انتخاب کنید: اروپا (فرانکفورت/لندن)، شمال آمریکا (نیویورک/شیکاگو)، غرب آمریکا (لسآنجلس)، آسیا (سنگاپور/توکیو)، استرالیا (سیدنی)، برزیل (سائوپائولو).
هدف پینگ زیر 80ms برای تجربه قابلقبول و زیر 60ms برای تجربه رقابتی توصیه میشود.
پیشنهاد سختافزار بر اساس تعداد بازیکن
- کوچک (تا 12 پلیر): 2 vCPU، 4GB RAM، SSD، پهنای باند 100Mbps.
- متوسط (12–32 پلیر): 4 vCPU، 8–16GB RAM، NVMe SSD، 1Gbps.
- بزرگ (بیش از 32 پلیر یا heavy addons): 6+ vCPU، 32GB+ RAM، NVMe، 1–10Gbps و سرور با I/O بالا.
برای کمترین تأخیر و حفاظت از حملات، از سرورهای گیمینگ اختصاصی یا سرورهای ضدDDoS استفاده کنید. برای توزیع فایلهای دانلود (map، addon) از CDN بهره ببرید تا پهنای باند کاهش یابد و دانلود سریعتر انجام شود.
پیشنیازها و آمادهسازی سیستم
推荐操作系统: Ubuntu 20.04/22.04 或者 Debian 11/12. دستورات زیر را بهعنوان کاربر با دسترسی sudo اجرا کنید تا سیستم بهروز و پیشنیازها نصب شوند.
sudo apt update && sudo apt upgrade -y
sudo apt install -y wget lib32gcc-s1 lib32stdc++6 ca-certificates screen tmux unzipاگر پکیج steamcmd در مخازن موجود باشد:
sudo apt install -y steamcmdدر غیر اینصورت نصب دستی SteamCMD:
sudo mkdir -p /opt/steamcmd
sudo chown $USER:$USER /opt/steamcmd
cd /opt/steamcmd
wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz
tar -xvzf steamcmd_linux.tar.gzایجاد کاربر غیرروت برای اجرای سرور:
sudo useradd -m -s /bin/bash gmod
sudo passwd gmod
sudo mkdir -p /home/gmod/server
sudo chown -R gmod:gmod /home/gmodدانلود و نصب SRCDS با SteamCMD
ورود به کاربر gmod و اجرای SteamCMD برای نصب سرور Garry’s Mod:
sudo su - gmod
/opt/steamcmd/steamcmd.sh +login anonymous +force_install_dir /home/gmod/server +app_update 4020 validate +quitبرای دانلود آیتمهای Workshop (مثال collection یا map):
/opt/steamcmd/steamcmd.sh +login anonymous +force_install_dir /home/gmod/server +app_update 4020 validate +workshop_download_item 4020 <WORKSHOP_ID> +quitبرای بارگذاری اتوماتیک یک collection هنگام راهاندازی SRCDS از پارامترهای زیر استفاده کنید:
+host_workshop_collection <COLLECTION_ID> +host_workshop_authkey <STEAM_WEB_API_KEY>پیکربندی سرور — server.cfg و پارامترهای اجرا
فایل کانفیگ پایه را در مسیر /home/gmod/server/garrysmod/cfg/server.cfg بسازید یا ویرایش کنید. مثال تنظیمات پایه:
hostname "My GMod Server"
rcon_password "PUT_A_STRONG_PASSWORD_HERE"
sv_password ""
sv_cheats 0
sv_lan 0
sv_allowdownload 1
sv_allowupload 1
sv_maxrate 30000
sv_minrate 5000
sv_timeout 120
sv_voiceenable 1
sv_pure 0
sv_region 3نکات پیکربندی:
- sv_maxrate 和 sv_minrate را بر اساس پهنای باند و تعداد بازیکنان تنظیم کنید.
- برای مدیریت مودها و دسترسی فایلها از workshop collection استفاده کنید تا بازیکنان بهطور خودکار فایلها را دانلود کنند.
نمونه پارامتر اجرای SRCDS:
cd /home/gmod/server
./srcds_run -game garrysmod +maxplayers 32 +map gm_flatgrass -tickrate 66 -port 27015 +host_workshop_collection <COLLECTION_ID> -autoupdateاجرای سرور بهعنوان سرویس systemd
برای مدیریت آسان و راهاندازی خودکار در بوت، یک سرویس systemd بسازید. مثال ایجاد فایل سرویس:
sudo tee /etc/systemd/system/gmod.service <<'EOF'
[Unit]
Description=Garry's Mod Server
After=network.target
[Service]
Type=simple
User=gmod
WorkingDirectory=/home/gmod/server
ExecStart=/home/gmod/server/srcds_run -game garrysmod +maxplayers 32 +map gm_flatgrass -tickrate 66 -port 27015
Restart=on-failure
RestartSec=10
LimitNOFILE=100000
[Install]
WantedBy=multi-user.target
EOFsudo systemctl daemon-reload
sudo systemctl enable gmod.service
sudo systemctl start gmod.service
sudo journalctl -u gmod.service -fفایروال، پورتها و امنیت شبکه
پورتهای معمول Garry’s Mod / SRCDS:
- UDP 27015 (بازی و query)
- TCP/UDP 27015 (RCON ممکن است TCP استفاده کند)
- UDP 27005 (Steam client)
مثال تنظیمات با UFW:
sudo ufw allow 27015/tcp
sudo ufw allow 27015/udp
sudo ufw allow 27005/udp
sudo ufw enableبرای محافظت در برابر DDoS از پلنهای سرور ضدDDoS استفاده کنید تا حملات شبکهای قبل از رسیدن به سرور فیلتر شوند.
优化性能并降低延迟
نکات کلیدی برای بهبود عملکرد سرور:
- لوکیشن نزدیک بازیکنان انتخاب کنید تا RTT پایین بیاید.
- از SSD/NVMe برای کاهش زمان بارگذاری map و افزایش I/O استفاده کنید.
- برای محاسبات فیزیک از CPU با فرکانس بالا استفاده کنید؛ GMod در بسیاری موارد به فرکانس تکهستهای وابسته است.
تنظیمات کرنل شبکه (مثال):
sudo sysctl -w net.core.rmem_max=26214400
sudo sysctl -w net.core.wmem_max=26214400همچنین sv_maxrate، tickrate و maxplayers را براساس منابع و تعداد بازیکنان بالانس کنید و مودهای سنگین را قبل از انتشار در سرور تست نمایید.
مدیریت مودها، Workshop و اتوماسیون دانلود
برای اضافه کردن مودها از Workshop از SteamCMD استفاده کنید:
/opt/steamcmd/steamcmd.sh +login anonymous +force_install_dir /home/gmod/server +workshop_download_item 4020 <WORKSHOP_ID> +quitپیشنهاد: از collection استفاده کنید و ID آن را در پارامتر +host_workshop_collection قرار دهید تا هنگام اجرای سرور، Steam آیتمها را دانلود کند.
برای نصب دستی addons کافی است فایلها را در garrysmod/addons قرار دهید و سرور را ریاستارت کنید.
آپدیت خودکار و بکاپ
یک اسکریپت ساده برای آپدیت SRCDS:
#!/bin/bash
systemctl stop gmod
/opt/steamcmd/steamcmd.sh +login anonymous +force_install_dir /home/gmod/server +app_update 4020 validate +quit
systemctl start gmodقرار دادن در کرون (مثال هر روز ساعت ۴ صبح):
sudo crontab -e
0 4 * * * /home/gmod/update_gmod.sh >> /var/log/gmod_update.log 2>&1بکاپ: از فولدرهای garrysmod/maps, garrysmod/addons و cfg بکاپ منظم بگیرید. از rsync یا snapshotهای زیرساخت ابری و object storage (S3-compatible) برای بازیابی سریع استفاده کنید.
مانیتورینگ، لاگها و نگهداری
لاگها در garrysmod/logs و systemd قابل مشاهدهاند. از logrotate برای چرخش لاگها استفاده کنید.
برای مانیتورینگ وضعیت سرور ابزارهایی مانند 普罗米修斯 + 格拉法纳 或者 Zabbix توصیه میشود تا CPU, RAM, network و packet loss را پایش کنید.
ریاستارت زمانبندی شده (مثلاً هر 6–12 ساعت) میتواند حافظه نشت و مشکلات ناشی از addons را کاهش دهد.
نکات عملی برای مدیران و DevOps
- ابتدا آپدیتها را در یک سرور staging تست کنید تا مشکلات مودها شناسایی شوند.
- از نام دامنه یا DNS برای سرور استفاده کنید تا تغییر IP سادهتر باشد؛ رکورد A برای server.example.com بسازید.
- برای فایلهای دانلود از CDN و برای دسترسی بالا از Load Balancer و BGP/Anycast استفاده کنید.
Best Practice: هنگام افزایش ظرفیت یا ارائه سرویس عمومی، از تقسیم ترافیک فایلها به CDN و طراحی توزیعشده استفاده کنید تا بار سرورها کاهش یابد و دسترسی بهتر شود.
جمعبندی و پیشنهادات کلی
با دنبال کردن این راهنما میتوانید یک سرور Garry’s Mod پایدار، امن و بهینه راهاندازی کنید؛ از نصب SRCDS با SteamCMD تا پیکربندی server.cfg، سرویس systemd، فایروال و محافظت ضدDDoS. برای عملکرد بهتر به لوکیشن، سختافزار مناسب و استفاده از CDN توجه کنید.









