Сервер Counter-Strike 1.6 — це HLDS (Half-Life Dedicated Server, app SteamCMD 90) з модом cstrike. Він легкий: вистачить невеликого VPS. Джерела: гайди Vultr і Gentoo, гайди хостингів та яйця Pterodactyl; вікі Valve була недоступна — звірте.
Покрокове встановлення
Підготуйте машину з Linux (Ubuntu/Debian) або Windows; сервер дуже легкий.
Створіть користувача без root (steam) і встановіть SteamCMD з 32-бітними бібліотеками.
Встановіть HLDS командами app_set_config 90 mod cstrike та app_update 90 validate.
Повторюйте app_update 90 validate кілька разів, доки нічого не завантажуватиметься (відома особливість HLDS).
Відредагуйте cstrike/server.cfg (інструмент «Генератор server.cfg для CS 1.6») і cstrike/mapcycle.txt (інструмент «Редактор mapcycle.txt»).
Запустіть hlds_run -game cstrike (або hlds.exe у Windows) з потрібною мапою та слотами.
Відкрийте 27015 UDP і TCP (і 27020 UDP для HLTV) в ufw, у провайдера й на роутері.
Перевірте локально (connect 127.0.0.1 у консолі гри), потім з іншого підключення.
Створіть службу systemd і заплануйте оновлення та бекапи.
Вимоги
- ОС: Linux (Ubuntu/Debian) або Windows. HLDS — 32-бітна програма.
- Ресурси: в вивчених джерелах офіційно не задані. Машини з 1 vCPU і 1 ГБ ОЗУ зазвичай вистачає на 16–32 слоти без важких плагінів (оцінка, потребує перевірки).
- Облікові записи: встановлення анонімне. У вивчених джерелах для HLDS токен GSLT не згадується.
- Варіант спільноти: ReHLDS (неофіційний) — широко використовувана альтернатива; цей гайд описує HLDS від Valve.
Локальне встановлення у Windows
Розпакуйте SteamCMD у C:\steamcmd, встановіть HLDS (повторюйте оновлення, доки нічого не завантажується) і запустіть hlds.exe. Перевірте connect 127.0.0.1 у консолі Counter-Strike 1.6.
cd C:\steamcmd
steamcmd +force_install_dir C:\hlds +login anonymous +app_set_config 90 mod cstrike +app_update 90 validate +quit
steamcmd +force_install_dir C:\hlds +login anonymous +app_update 90 validate +quit
cd C:\hlds
hlds.exe -console -game cstrike +maxplayers 32 +map de_dust2Linux VPS: користувач і залежності
sudo adduser steam
sudo dpkg --add-architecture i386
sudo apt update
sudo apt install -y lib32gcc-s1 lib32stdc++6 steamcmd
su - steamLinux VPS: встановлення HLDS
У кількох гайдах (Vultr, Gentoo, хостинги) сказано, що HLDS потрібно оновлювати кілька разів: друга і третя команди повторюють app_update 90 validate. Мод обирається командою app_set_config 90 mod cstrike.
steamcmd +force_install_dir /home/steam/hlds +login anonymous +app_set_config 90 mod cstrike +app_update 90 validate +quit
steamcmd +force_install_dir /home/steam/hlds +login anonymous +app_update 90 validate +quit
steamcmd +force_install_dir /home/steam/hlds +login anonymous +app_update 90 validate +quitLinux VPS: перший запуск
Запускайте hlds_run з папки встановлення. Сервер читає cstrike/server.cfg під час кожної зміни мапи та cstrike/mapcycle.txt для ротації; cstrike/liblist.gam описує мод (для завантаження Metamod див. інструмент «Редактор liblist.gam»).
cd /home/steam/hlds
./hlds_run -console -game cstrike +ip 0.0.0.0 +port 27015 +maxplayers 32 +map de_dust2Порти для відкриття та брандмауер Linux (ufw)
Це звичайні значення HLDS (не підтверджені вивченою офіційною сторінкою). Щоб змінити порт, використовуйте +port N у рядку запуску й відкрийте його замість 27015.
Відкривайте лише необхідне й перевіряйте з іншого підключення (не з самого сервера).
- 27015/udp: гра (порт HLDS за замовчуванням)
- 27015/tcp: RCON
- 27020/udp: HLTV (необов'язково)
sudo ufw allow OpenSSH
sudo ufw allow 27015/udp
sudo ufw allow 27015/tcp
sudo ufw allow 27020/udp
sudo ufw enable
sudo ufw statusБрандмауер Windows (netsh)
У командному рядку адміністратора створіть вхідне правило для кожного порту (або відкрийте «Брандмауер Windows Defender у режимі підвищеної безпеки»).
netsh advfirewall firewall add rule name="Counter-Strike 1.6 27015 UDP" dir=in action=allow protocol=UDP localport=27015
netsh advfirewall firewall add rule name="Counter-Strike 1.6 27015 TCP" dir=in action=allow protocol=TCP localport=27015
netsh advfirewall firewall add rule name="Counter-Strike 1.6 27020 UDP" dir=in action=allow protocol=UDP localport=27020Брандмауер провайдера та проброс портів (роутер)
У хостера (OVH, Hetzner, Scaleway…) відкрийте ті самі порти й у брандмауері або «security group» провайдера: ufw недостатньо, якщо є зовнішній брандмауер. Вдома налаштуйте на роутері проброс (NAT) кожного порту на локальну IP-адресу машини (статичну або зарезервовану через DHCP).
Перевірка: з іншого підключення додайте сервер як «IP:порт» у браузері серверів Counter-Strike 1.6 або в консолі. Якщо не виходить, перевірте по черзі: чи запущено службу, локальний брандмауер, брандмауер провайдера, NAT.
Автозапуск: служба systemd
Створіть /etc/systemd/system/cs16.service (від root) і ввімкніть його. Підставте свого користувача та шляхи; логи — journalctl -u cs16 -f.
[Unit]
Description=Counter-Strike 1.6 dedicated server
After=network-online.target
Wants=network-online.target
[Service]
User=steam
WorkingDirectory=/home/steam/hlds
ExecStart=/home/steam/hlds/hlds_run -console -game cstrike +ip 0.0.0.0 +port 27015 +maxplayers 32 +map de_dust2
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target
# then:
# sudo systemctl daemon-reload
# sudo systemctl enable --now cs16Windows: завдання планувальника під час запуску
У Windows завдання планувальника запускає ваш .bat під час старту системи (виконайте команду в командному рядку адміністратора).
schtasks /Create /TN "Counter-Strike 1.6 server" /TR "C:\hlds\start-cs16.bat" /SC ONSTART /RU SYSTEM /RL HIGHESTОновлення, резервні копії та планові перезапуски
Зупиняйте службу перед оновленням (та сама команда SteamCMD, що й під час встановлення), регулярно робіть бекап конфігурації та даних і плануйте щоденний перезапуск, якщо сервер із часом деградує.
sudo systemctl stop cs16
steamcmd +force_install_dir /home/steam/hlds +login anonymous +app_update 90 validate +quit
sudo systemctl start cs16
# backup
tar czf ~/cs16-$(date +%F).tar.gz -C /home/steam/hlds cstrike/server.cfg cstrike/mapcycle.txt cstrike/liblist.gam cstrike/addons cstrike/banned.cfg cstrike/listip.cfg
# daily restart at 05:00 (root crontab: sudo crontab -e)
0 5 * * * systemctl restart cs16Додавання та пошук сервера
Додайте сервер на https://game-rank.com/jeux/counter-strike-1-6, щоб його побачила спільнота. У грі шукайте його в браузері серверів або підключайтеся напряму за IP:порт.
Усунення несправностей: часті помилки
- Бракує файлів або сервер не стартує після встановлення: HLDS відомий неповним першим встановленням. Рішення: повторіть app_update 90 validate (разом з app_set_config 90 mod cstrike) два-три рази.
- Сервер зависає під час зміни мапи: мапа з mapcycle.txt відсутня в cstrike/maps/. Рішення: перевірте наявність кожного .bsp або видаліть рядок.
- Сервер не видно ззовні: служба працює, але ніхто не може підключитися. Причина: закритий порт (ufw, брандмауер провайдера або немає NAT). Рішення: відкрийте перелічені порти на всіх трьох рівнях і перевірте з іншого підключення.
- Порт зайнятий під час запуску: порт утримує інший екземпляр. Рішення: перегляньте процеси командою ss -lunp | grep 27015, зупиніть старий екземпляр або задайте кожному серверу свій порт через -port.
- SteamCMD «Failed to install app» або завантаження зависло: часта причина — заповнений диск або брак прав на теку. Рішення: перевірте df -h і власника теки, потім повторіть команду з validate (за потреби кілька разів).
- srcds_run: «No such file or directory» або немає 32-бітної бібліотеки: сервер Source — 32-бітна програма. Рішення: увімкніть архітектуру i386 (dpkg --add-architecture i386) і встановіть lib32gcc-s1 та lib32stdc++6.
Поширені запитання
- Який ідентифікатор SteamCMD сервера CS 1.6?
- HLDS — це app 90; мод обирається командою +app_set_config 90 mod cstrike перед +app_update 90 validate.
- Куди ставити Metamod або AMX Mod X?
- Ці модулі спільноти кладуться в cstrike/addons/, а Metamod завантажується рядком gamedll_linux (або gamedll) у cstrike/liblist.gam. Дотримуйтеся документації обраної збірки; інструмент «Редактор liblist.gam» змінює цей рядок.
- Чи можна запускати сервер від root?
- Не рекомендується: створіть окремого користувача (наприклад, steam) без прав адміністратора й встановлюйте та запускайте сервер від нього. Тоді вразливість сервера чи плагіна не скомпрометує всю машину.
- Мій сервер Counter-Strike 1.6 не відображається в списку: що перевірити?
- Спочатку перевірте, що порти відкриті на всіх рівнях, сервер не в режимі LAN (sv_lan 0) і, якщо гра вимагає, вказано дійсний токен сервера (GSLT). Список Steam може оновлюватися кілька хвилин; поки підключайтеся за IP:порт.
