Сервер 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 в режиме повышенной безопасности»).
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:порт.
