Il server Counter-Strike 1.6 è un HLDS (Half-Life Dedicated Server, app SteamCMD 90) con il mod cstrike. È leggero: basta una piccola VPS. Fonti consultate: guide Vultr e Gentoo, di provider ed egg Pterodactyl; la wiki Valve non era raggiungibile, da verificare.
Installazione passo dopo passo
Prepara una macchina Linux (Ubuntu/Debian) o Windows; il server è molto leggero.
Crea un utente non root (steam) e installa SteamCMD con le librerie a 32 bit.
Installa HLDS con app_set_config 90 mod cstrike poi app_update 90 validate.
Ripeti app_update 90 validate più volte finché non scarica altro (particolarità nota di HLDS).
Modifica cstrike/server.cfg (strumento «Generatore di server.cfg per CS 1.6») e cstrike/mapcycle.txt (strumento «Editor di mapcycle.txt»).
Avvia hlds_run -game cstrike (o hlds.exe su Windows) con mappa e slot desiderati.
Apri 27015 UDP e TCP (e 27020 UDP per HLTV) in ufw, presso il provider e nel router.
Prova in locale (connect 127.0.0.1 nella console di gioco), poi da un'altra connessione.
Crea un servizio systemd e pianifica aggiornamenti e backup.
Prerequisiti
- Sistema: Linux (Ubuntu/Debian) o Windows. HLDS è un programma a 32 bit.
- Risorse: non fissate ufficialmente nelle fonti consultate. Una macchina da 1 vCPU e 1 GB di RAM basta in genere per 16-32 slot senza plugin pesanti (stima, da validare).
- Account: installazione anonima. Nelle fonti consultate non è citato alcun token GSLT per HLDS.
- Variante della community: ReHLDS (non ufficiale) è un'alternativa molto usata; questa guida copre l'HLDS di Valve.
Installazione locale su Windows
Decomprimi SteamCMD in C:\steamcmd, installa HLDS (ripeti l'aggiornamento finché non scarica altro) e avvia hlds.exe. Prova con connect 127.0.0.1 nella console di 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_dust2VPS Linux: utente e dipendenze
sudo adduser steam
sudo dpkg --add-architecture i386
sudo apt update
sudo apt install -y lib32gcc-s1 lib32stdc++6 steamcmd
su - steamVPS Linux: installazione di HLDS
Diverse guide (Vultr, Gentoo, provider) indicano che HLDS va aggiornato più volte: il secondo e il terzo comando ripetono app_update 90 validate. Il mod si sceglie con 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 +quitVPS Linux: primo avvio
Avvia hlds_run dalla cartella di installazione. Il server legge cstrike/server.cfg a ogni cambio mappa e cstrike/mapcycle.txt per la rotazione; cstrike/liblist.gam descrive il mod (vedi lo strumento «Editor di liblist.gam» per caricare Metamod).
cd /home/steam/hlds
./hlds_run -console -game cstrike +ip 0.0.0.0 +port 27015 +maxplayers 32 +map de_dust2Porte da aprire e firewall Linux (ufw)
Queste porte sono i valori usuali di HLDS (non confermati da una pagina ufficiale consultata). Per cambiare porta usa +port N nella riga di avvio e aprila al posto di 27015.
Apri solo ciò che serve e prova da un'altra connessione (non dal server stesso).
- 27015/udp: gioco (porta HLDS predefinita)
- 27015/tcp: RCON
- 27020/udp: HLTV (opzionale)
sudo ufw allow OpenSSH
sudo ufw allow 27015/udp
sudo ufw allow 27015/tcp
sudo ufw allow 27020/udp
sudo ufw enable
sudo ufw statusFirewall di Windows (netsh)
In un prompt dei comandi amministratore crea una regola in entrata per porta (oppure apri «Windows Defender Firewall con sicurezza avanzata»).
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=27020Firewall del provider e port forwarding (router)
Presso un provider (OVH, Hetzner, Scaleway…) apri le stesse porte anche nel firewall o «security group» del provider: ufw non basta se esiste un firewall a monte. In casa crea nel router un port forwarding (NAT) di ogni porta verso l'IP locale della macchina (fisso o riservato via DHCP).
Test: da un'altra connessione, aggiungi il server come «IP:porta» nel browser server di Counter-Strike 1.6 o in console. Se fallisce, controlla in ordine: servizio avviato, firewall locale, firewall del provider, port forwarding NAT.
Avvio automatico: servizio systemd
Crea /etc/systemd/system/cs16.service (come root) e abilitalo. Adatta utente e percorsi; leggi i log con 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: attività pianificata all'avvio
Su Windows un'attività pianificata avvia lo script .bat all'avvio del sistema (esegui il comando in un prompt amministratore).
schtasks /Create /TN "Counter-Strike 1.6 server" /TR "C:\hlds\start-cs16.bat" /SC ONSTART /RU SYSTEM /RL HIGHESTAggiornamenti, backup e riavvii pianificati
Ferma il servizio prima di aggiornare (stesso comando SteamCMD dell'installazione), esegui backup regolari di configurazione e dati e pianifica un riavvio giornaliero se il server peggiora nel tempo.
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 cs16Registrare e trovare il tuo server
Aggiungi il server su https://game-rank.com/jeux/counter-strike-1-6 per renderlo visibile alla community. In gioco usa il browser server o connettiti direttamente con IP:porta.
Risoluzione problemi: errori frequenti
- File mancanti o server che non parte dopo l'installazione: HLDS è noto per una prima installazione incompleta. Soluzione: ripeti app_update 90 validate (con app_set_config 90 mod cstrike) due o tre volte.
- Il server si blocca al cambio mappa: una mappa elencata in mapcycle.txt manca in cstrike/maps/. Soluzione: verifica che ogni .bsp esista o rimuovi la riga.
- Server non raggiungibile dall'esterno: il servizio gira ma nessuno si connette. Causa: porta chiusa (ufw, firewall del provider o NAT mancante). Soluzione: apri le porte elencate sui tre livelli e prova da un'altra connessione.
- Porta già in uso all'avvio: un'altra istanza occupa la porta. Soluzione: elenca i processi con ss -lunp | grep 27015, ferma la vecchia istanza o assegna una porta diversa con -port a ogni server.
- SteamCMD «Failed to install app» o download bloccato: causa frequente, disco pieno o permessi insufficienti sulla cartella. Soluzione: controlla df -h e il proprietario della cartella, poi ripeti il comando con validate (anche più volte).
- srcds_run: «No such file or directory» o libreria a 32 bit mancante: il server Source è a 32 bit. Soluzione: abilita l'architettura i386 (dpkg --add-architecture i386) e installa lib32gcc-s1 e lib32stdc++6.
Domande frequenti
- Qual è l'ID SteamCMD del server CS 1.6?
- HLDS è l'app 90; il mod si sceglie con +app_set_config 90 mod cstrike prima di +app_update 90 validate.
- Dove metto Metamod o AMX Mod X?
- Questi moduli della community vanno in cstrike/addons/ e Metamod si carica tramite la riga gamedll_linux (o gamedll) di cstrike/liblist.gam. Segui la documentazione della distribuzione scelta; lo strumento «Editor di liblist.gam» modifica quella riga.
- Posso avviare il server come root?
- Sconsigliato: crea un utente dedicato (ad es. steam) senza diritti di amministratore e installa e avvia il server con quello. Una falla nel server o in un plugin non compromette così l'intera macchina.
- Il mio server Counter-Strike 1.6 non compare nell'elenco: cosa controllare?
- Controlla prima che le porte siano aperte a ogni livello, che il server non sia in modalità LAN (sv_lan 0) e, se il gioco lo richiede, che sia fornito un token server (GSLT) valido. L'elenco Steam può impiegare qualche minuto ad aggiornarsi; nel frattempo connettiti con IP:porta.
