جدول محتوایی
SteamCMD
SteamCMD یک نسخه خط فرمان از سرویس گیرنده Steam است که با بازی هایی که از SteamPipe استفاده می کنند کار می کند. این به شما امکان می دهد بازی های سازگار را از طریق خط فرمان نصب و به روز کنید. اگر قصد دارید بازی های Steam را روی گیم سرور خود میزبانی کنید، نصب SteamCMD یک پیش نیاز است.
در این مقاله شما نحوه نصب و راه اندازی SteamCMD را در سرور مجازی خود خود یاد میگیرید. برای اطلاعات بیشتر و تنظیمات پیشرفته به صفحه ویکی SteamCMD Valve مراجعه کنید.
قبل از شروع :
- شما نیاز به یک سرور مجازی لینوکس (اوبونتو یا دبیان) دارید که میتوانید آن را از ایرانیکاسرور تهیه کنید.
- همچنین برای اجرای دائمی SteamCMD به ابزار screen نیاز دارید که میتوانید آن را با دستور زیر نصب کنید:
sudo apt install screen
پیکربندی فایروال با استفاده از iptable
1. برای اجرای قوانین جدید فایروال IPv4 و IPv6 خود، دو فایل به نامهای v4 و v6 در دایرکتوری اصلی خود ایجاد کنید.
فایل ~/v4 :
*filter # Allow all loopback (lo0) traffic and reject traffic # to localhost that does not originate from lo0. -A INPUT -i lo -j ACCEPT -A INPUT ! -i lo -s 127.0.0.0/8 -j REJECT # Allow ping. -A INPUT -p icmp -m state --state NEW --icmp-type 8 -j ACCEPT # Allow SSH connections. -A INPUT -p tcp -m state --state NEW --dport 22 -j ACCEPT # Allow the Steam client. -A INPUT -p udp -m udp --dport 27000:27030 -j ACCEPT -A INPUT -p udp -m udp --dport 4380 -j ACCEPT # Allow inbound traffic from established connections. # This includes ICMP error returns. -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # Log what was incoming but denied (optional but useful). -A INPUT -m limit --limit 3/min -j LOG --log-prefix "iptables_INPUT_denied: " --log-level 7 -A FORWARD -m limit --limit 3/min -j LOG --log-prefix "iptables_FORWARD_denied: " --log-level 7 # Reject all other inbound. -A INPUT -j REJECT -A FORWARD -j REJECT COMMIT
فایل ~/v6 :
*filter # Allow all loopback (lo0) traffic and reject traffic # to localhost that does not originate from lo0. -A INPUT -i lo -j ACCEPT -A INPUT ! -i lo -s ::1/128 -j REJECT # Allow ICMP. -A INPUT -p icmpv6 -j ACCEPT # Allow inbound traffic from established connections. -A INPUT -m state --state ESTABLISHED -j ACCEPT # Reject all other inbound. -A INPUT -j REJECT -A FORWARD -j REJECT COMMIT
Steam همچنین میتواند از چندین محدوده پورت برای اهداف مختلف استفاده کند، اما تنها در صورتی مجاز هستند که بازی(های) شما از آن خدمات استفاده کنند. برای اطلاعات بیشتر به این صفحه پشتیبانی Steam مراجعه کنید.
Steam در حال حاضر از بازی چند نفره فقط از طریق IPv4 پشتیبانی می کند، بنابراین یک سرور Steam فقط به قوانین پایه فایروال IPv6 نیاز دارد که در زیر نشان داده شده است.
2. قوانین را به فایروال خود وارد کنید تا فعال شوند:
sudo iptables-restore < ~/v4 sudo ip6tables-restore < ~/v6
3. iptables-persistent را نصب کنید. اگر این نرمافزار را نصب نکنید، قوانین فایروال شما بعد از راهاندازی مجدد سرور مجازی باقی نمیماند.
در دبیان یا اوبونتو از دستور زیر برای بررسی اینکه آیا iptables-persistent قبلاً نصب شده است استفاده کنید:
dpkg -l iptables-persistent
اگر dpkg نشان داد که هیچ پکیجی با چنین نامی وجود ندارد، باید پکیج iptables-persistent را نصب کنید:
apt-get install iptables-persistent
در طول نصب، دو بار از شما خواسته می شود. اولین درخواست این است که می پرسد آیا می خواهید قوانین IPv4 فعلی خود را ذخیره کنید.
دومین درخواست ذخیره قوانین پیکربندی شده برای IPv6 است.
پس از اتمام نصب، باید زیر شاخه iptables را ببینید. دستور ls /etc/iptables را اجرا کنید و ببینید که خروجی شما شبیه موارد زیر است:
rules.v4 rules.v6
4. اگر iptables-persistent قبلاً نصب شده بود، بسته را مجدداً پیکربندی کنید تا قوانین جدید شما را بشناسد:
sudo dpkg-reconfigure iptables-persistent
5. تأیید کنید که قوانین فایروال شما فعال هستند:
sudo iptables -vL
باید چنین خروجی را ببینید:
Chain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 0 0 ACCEPT all -- lo any anywhere anywhere 0 0 REJECT all -- !lo any localhost/8 anywhere reject-with icmp-port-unreachable 0 0 ACCEPT icmp -- any any anywhere anywhere state NEW icmp echo-request 0 0 ACCEPT tcp -- any any anywhere anywhere state NEW tcp dpt:ssh 0 0 ACCEPT udp -- any any anywhere anywhere udp dpts:27000:27030 0 0 ACCEPT udp -- any any anywhere anywhere udp dpt:4380 0 0 ACCEPT all -- any any anywhere anywhere state RELATED,ESTABLISHED 0 0 LOG all -- any any anywhere anywhere limit: avg 3/min burst 5 LOG level debug prefix "iptables_INPUT_denied: " 0 0 REJECT all -- any any anywhere anywhere reject-with icmp-port-unreachable Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 0 0 LOG all -- any any anywhere anywhere limit: avg 3/min burst 5 LOG level debug prefix "iptables_FORWARD_denied: " 0 0 REJECT all -- any any anywhere anywhere reject-with icmp-port-unreachable Chain OUTPUT (policy ACCEPT 60 packets, 8304 bytes) pkts bytes target prot opt in out source destination
6. اگر در آینده قوانین جدیدی را به فایروال خود وارد کنید، باید مطمئن شوید که iptables-persistent را دوباره پیکربندی کنید:
sudo dpkg-reconfigure iptables-persistent
پیکربندی فایروال با FirewallD
1. مجموعه قوانین خود را با دستورات زیر تنظیم کنید:
sudo firewall-cmd --zone="public" --add-service=ssh --permanent sudo firewall-cmd --zone="public" --add-forward-port=port=27000-27030:proto=udp:toport=1025-65355 --permanent sudo firewall-cmd --zone="public" --add-forward-port=port=4380:proto=udp:toport=1025-65355 --permanent sudo firewall-cmd --reload
2. فایروال را روشن کنید و قوانین خود را تأیید کنید:
sudo systemctl start firewalld sudo systemctl enable firewalld sudo firewall-cmd --zone="public" --list-all
نصب SteamCMD
SteamCMD را می توان از طریق مدیر پکیج توزیع شما یا از طریق روش دستی نصب کرد.
نصب SteamCMD از طریق پکیج منیجر به شما این امکان را میدهد که بهروزرسانیها و وصلههای امنیتی را راحتتر دانلود کنید، بنابراین اگر توزیع شما شامل بسته SteamCMD است، اکیداً توصیه میکنیم از این روش استفاده کنید. این پکیج برای اوبونتو و دبیان در دسترس است.
- Ubuntu 20.04
1. مخزن چندجهانی (multiverse) و معماری i386 را اضافه کنید:
sudo add-apt-repository multiverse sudo dpkg --add-architecture i386
2. برای اطمینان از نصب پکیجهای جدید، مخزن را به روز کنید:
sudo apt update
3. کتابخانه های 32 بیتی مورد نیاز steamcmd را نصب کنید:
sudo apt install lib32gcc1 lib32stdc++6 libc6-i386 libcurl4-gnutls-dev:i386 libsdl2-2.0-0:i386
4. پکیج steamcmd را نصب کنید:
sudo apt-get install steamcmd
نکته : در پنجره ظاهر شده ممکن است لازم باشد کلیدهای shift + tab را وارد کنید تا گزینه ok را انتخاب کنید.
5. یک symlink به فایل اجرایی steamcmd در یک مکان مناسب، مانند فهرست home خود ایجاد کنید:
cd ~ ln -s /usr/games/steamcmd steamcmd
- Debian
1. منطقه non-free را به مخازن موجود در لیست منابع خود اضافه کنید، زیرا بسته steamcmd فقط از این ناحیه در دسترس است. برای انجام این کار، فایل /etc/apt/sources.list خود را ویرایش کنید و non-free را در انتهای هر خط deb و deb-src قرار دهید، مانند این مثال:
فایل /etc/apt/sources.list :
deb http://mirrors.linode.com/debian stretch main non-free deb-src http://mirrors.linode.com/debian stretch main non-free ...
2. معماری i386 را اضافه کنید، لیست پکیج خود را به روز کنید و steamcmd را نصب کنید:
sudo dpkg --add-architecture i386 sudo apt update sudo apt-get install steamcmd
نکته : در پنجره ای که به دنبال دستور نصب steamCMD ظاهر می شود، ممکن است لازم باشد کلیدهای shift + tab را وارد کنید تا گزینه ok را انتخاب کنید.
3. یک symlink به فایل اجرایی steamcmd در یک مکان مناسب، مانند فهرست home خود ایجاد کنید:
cd ~ ln -s /usr/games/steamcmd steamcmd
اجرای SteamCMD
1. فایل اجرایی را در یک سشن screen اجرا کنید.
اگر SteamCMD را از مخازن نصب کرده اید:
screen ~/.steam/steamcmd/steamcmd.sh
بعد از اجری دستور بالا خروجی زیر را میبینید و وارد خط فرمان Steam> میشوید:
Redirecting stderr to '/home/steam/Steam/logs/stderr.txt' [ 0%] Checking for available updates... [----] Downloading update (0 of 7,013 KB)... [ 0%] Downloading update (1,300 of 7,013 KB)... [ 18%] Downloading update (3,412 of 7,013 KB)... [ 48%] Downloading update (5,131 of 7,013 KB)... [ 73%] Downloading update (6,397 of 7,013 KB)... [ 91%] Downloading update (7,013 of 7,013 KB)... [100%] Download complete. [----] Installing update... [----] Extracting package... . . . [----] Cleaning up... [----] Update complete, launching Steam... Redirecting stderr to '/home/steam/Steam/logs/stderr.txt' [ 0%] Checking for available updates... [----] Verifying installation... Steam Console Client (c) Valve Corporation -- type 'quit' to exit -- Loading Steam API...OK. Steam>
2. اکثر گیم سرور های Steam اجازه ورود anonymous را می دهند. شما می توانید این را برای عنوان خود با لیست سرورهای اختصاصی لینوکس Valve تأیید کنید.
برای ورود ناشناس:
login anonymous
برای ورود با نام کاربری Steam خود:
login example_user
چگونه می توانم گیم سرور SteamCMD خود را به روز کنم ؟
برای به روز رسانی سرور SteamCMD، مراحل زیر را دنبال کنید:
1. اگر SteamCMD از قبل در ال اجرا نیست یکی از دستورات زیر را وارد کنید:
steamcmd
یا
screen ~/.steam/steamcmd.sh
یا
screen ~/.steam/steamcmd/steamcmd.sh
2. به صورت ناشناس یا با حساب Steam خود (بسته به سرور بازی) وارد شوید:
login anonymous یا login $username
3. برنامه را بهروزرسانی کنید: ($app-id را با شماره/id برنامه بازی که میخواهید بهروزرسانی کنید جایگزین کنید.)
app_update $app-id
خروج از SteamCMD
خروج از سشن screen:
برای خروج از سشنی که در حال اجرای فرآیند Steam است بدون ایجاد اختلال در فرآیند استیم، Control+A و سپس Control+D را در صفحه کلید خود وارد کنید. بعداً می توانید با وارد کردن: screen -r به سنش screen بازگردید.
توقف SteamCMD:
برای متوقف کردن فرآیند Steam و حذف سشن صفحه نمایش خود، در خط فرمان Steam> دستور quit
را وارد کنید یا Control+C را در صفحه کلید خود وارد کنید.
جمع بندی
شما آماده نصب اولین گیم سرور Steam خود هستید. از اینجا، برخی از بازیها ممکن است به چند کتابخانه i386 یا قوانین فایروال بیشتر نیاز داشته باشند و بیشتر آنها نیاز به تغییر تنظیمات پیکربندی خود دارند. گیم سرور باید امکان دسترسی آسان مدیریتی را با کمترین وقفه برای بازیکنان فراهم کند. نرم افزار آن باید به طور مکرر به روز شود و ادامه بازی باید زمانی که سرور به درستی خاموش شود ذخیره شود.
در این آموزش نحوه نصب SteamCMD برای اجرای گیم سرور استیم را یاد گرفتید. اگر به یک سرور مجازی مخصوص گیم نیاز دارید، پیشنهاد میکنم از پلن های گیم سرور ما دیدن کنید.
با تشکر از مطالب خوبتون
ممنون بابت مطالب خوبتون
مهندس من همیشه سایت شمارو دنبال میکنم خدایش مطالبتون عالی هستند
مثل همیشه عالی و جذاب
مهندس من همیشه سایت شمارو دنبال میکنم خدایش مطالبتون عالی هستند
ممنون خدا قوت