Questa guida generica prepara una macchina Linux (Ubuntu o Debian) o Windows Server per ospitare qualsiasi server di gioco: scelta dell'host, utente non root, chiavi SSH, firewall, fail2ban, SteamCMD, Docker, servizio systemd, monitoraggio e backup. Servono 1-2 ore; poi segui la guida all'installazione del tuo gioco.
Installazione passo dopo passo
Scegli host e piano (vedi «Scegliere un host») e ordina un VPS o dedicato con Ubuntu LTS o Debian stable.
Collegati via SSH con l'account root fornito e aggiorna il sistema.
Crea un utente non root con sudo; non eseguire mai un server di gioco come root.
Installa la tua chiave SSH pubblica e disattiva l'accesso root e con password.
Attiva il firewall ufw: nega tutto in ingresso, consenti SSH e poi le porte del gioco.
Installa fail2ban per bloccare i ripetuti tentativi di accesso SSH.
Installa SteamCMD (giochi Steam) o Docker (immagini della community) in base al gioco.
Installa il server di gioco con la guida del tuo gioco e apri le sue porte (strumento «Verificatore di porte»).
Crea un servizio systemd (o una sessione tmux) per avviare e riavviare automaticamente il server.
Configura monitoraggio (log, risorse) e backup pianificati e testati.
Scegliere host e piano
- VPS (da pochi euro al mese): sufficiente per un piccolo server; verifica che la CPU non sia troppo condivisa, perché la maggior parte dei giochi dipende da un core veloce.
- Dedicato: per più server o molti slot; scegli SSD/NVMe e una buona frequenza CPU.
- Criteri: posizione vicina ai giocatori (latenza), protezione anti-DDoS inclusa, traffico illimitato o quota sufficiente, firewall di rete («security group»), snapshot, supporto. Stima le risorse con il «Calcolatore di risorse del server».
Primo accesso e utente non root
Sostituisci 203.0.113.10 con l'IP del tuo server e gameadmin con il nome che preferisci:
ssh [email protected]
apt update && apt upgrade -y
adduser gameadmin
usermod -aG sudo gameadminChiavi SSH e hardening di sshd
Sul tuo computer: ssh-keygen -t ed25519 poi ssh-copy-id [email protected]. Prova l'accesso con chiave in un secondo terminale PRIMA di disattivare le password, poi crea /etc/ssh/sshd_config.d/99-hardening.conf (Ubuntu 22.04+, Debian 12):
# /etc/ssh/sshd_config.d/99-hardening.conf
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
# Apply: sudo sshd -t && sudo systemctl reload sshFirewall ufw
Consenti SSH prima di attivare ufw per non restare chiuso fuori. Poi aggiungi le porte del tuo gioco (esempio FiveM: 30120 TCP e UDP; le porte di ogni gioco sono nel Verificatore di porte; lo strumento «Regole firewall» genera i comandi). Replicale nel firewall di rete dell'host (OVH, Hetzner, Scaleway…: «security group»).
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow OpenSSH
sudo ufw allow 30120/tcp
sudo ufw allow 30120/udp
sudo ufw enable
sudo ufw status verbosefail2ban
fail2ban banna temporaneamente gli indirizzi che falliscono ripetutamente l'accesso. Crea /etc/fail2ban/jail.local (non modificare jail.conf):
# sudo apt install fail2ban
# /etc/fail2ban/jail.local
[sshd]
enabled = true
maxretry = 5
findtime = 10m
bantime = 1h
# sudo systemctl enable --now fail2ban
# sudo fail2ban-client status sshdSteamCMD (giochi Steam)
Installazione manuale dall'archivio ufficiale di Valve (come gameadmin, non root). Sostituisci APPID con l'ID del server dedicato del tuo gioco (vedi SteamDB o la guida del gioco). Alcuni server richiedono un account Steam invece di «anonymous»: consulta la documentazione del gioco.
sudo apt install -y lib32gcc-s1 curl ca-certificates
mkdir -p ~/steamcmd && cd ~/steamcmd
curl -sqL "https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz" | tar zxvf -
./steamcmd.sh +force_install_dir ~/server +login anonymous +app_update APPID validate +quitDocker (immagini della community)
Lo script di convenienza di Docker va bene per i test; in produzione segui l'installazione da repository apt su docs.docker.com. Dopo l'aggiunta al gruppo docker occorre riconnettersi. I container pubblicati con -p aggirano ufw: limitali anche con il firewall dell'host.
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo usermod -aG docker gameadmin
# log out, log back in, then:
docker run --rm hello-worldServizio systemd
Crea /etc/systemd/system/gameserver.service (adatta User, WorkingDirectory ed ExecStart allo script di avvio del tuo gioco), poi: sudo systemctl daemon-reload && sudo systemctl enable --now gameserver. Log: journalctl -u gameserver -f.
[Unit]
Description=Game server
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=gameadmin
WorkingDirectory=/home/gameadmin/server
ExecStart=/home/gameadmin/server/start.sh
Restart=on-failure
RestartSec=10
LimitNOFILE=65536
[Install]
WantedBy=multi-user.targetAlternativa: tmux
tmux mantiene attivo il server dopo la disconnessione SSH e dà accesso alla sua console (utile per i comandi). Stacca con Ctrl+B poi D. Non riavvia il server dopo un crash o un riavvio: in produzione preferisci systemd.
sudo apt install -y tmux
tmux new -s game
# inside tmux: run ./start.sh, then press Ctrl+B then D
tmux attach -t gameVariante Windows Server
Collegati con Desktop remoto (limita la porta 3389 al tuo IP o usa una VPN), installa SteamCMD o il server di gioco in C:\gameserver, apri le porte in PowerShell (amministratore) e avvia il server all'avvio con un'attività pianificata. Pianifica i riavvii di Windows Update per evitare interruzioni impreviste.
New-NetFirewallRule -DisplayName "Game UDP 27015" -Direction Inbound -Protocol UDP -LocalPort 27015 -Action Allow
New-NetFirewallRule -DisplayName "Game TCP 27015" -Direction Inbound -Protocol TCP -LocalPort 27015 -Action Allow
schtasks /Create /TN "GameServer" /TR "C:\gameserver\start.bat" /SC ONSTART /RU SYSTEM /RL HIGHEST /FHosting a casa: port forwarding
- Assegna un IP locale fisso alla macchina (prenotazione DHCP nel router).
- Nel router, inoltra (NAT) ogni porta del gioco, con il protocollo giusto, verso quell'IP locale.
- Apri anche il firewall della macchina. Testa dall'esterno (4G/5G), non dalla rete locale.
- Se il tuo operatore usa CGNAT (nessun IP pubblico dedicato), il port forwarding è impossibile: chiedi un IP pubblico o usa un VPS o un tunnel.
- Esporre il proprio IP personale comporta rischi (DDoS mirati): un VPS protetto è più sicuro per un server pubblico.
Note sugli attacchi DDoS
- Il firewall della macchina non basta contro un attacco volumetrico: la protezione deve avvenire a monte, presso l'host.
- Verifica cosa copre l'anti-DDoS del piano (protocolli UDP/gioco, modalità «gaming»): non è uguale per tutti gli host.
- Non divulgare l'IP di origine se usi proxy o tunnel; non esporre RCON né console web.
Monitoraggio
Comandi utili: log del servizio, porte realmente in ascolto (confronta con il firewall), carico CPU/RAM e spazio su disco. Per un monitoraggio continuo aggiungi uno strumento come Netdata o Prometheus, con avvisi su RAM e disco.
journalctl -u gameserver -f
sudo ss -lntup
htop
free -h
df -hBackup
Fai il backup di mondo e configurazione ogni giorno, conserva più versioni e copiale fuori dal server. Lo strumento «Generatore di script di backup» produce uno script completo con retention; esempio minimo (crontab):
30 4 * * * tar -czf /backups/gameserver-$(date +\%Y\%m\%d).tar.gz -C /home/gameadmin server && find /backups -name 'gameserver-*.tar.gz' -mtime +7 -deleteRisoluzione dei problemi
- I giocatori non riescono a connettersi: controlla il protocollo (UDP vs TCP), ufw, il firewall dell'host e che il server sia davvero in ascolto (sudo ss -lntup).
- «Permission denied (publickey)»: la chiave non è in ~/.ssh/authorized_keys dell'utente o i permessi sono troppo aperti (chmod 700 ~/.ssh, chmod 600 ~/.ssh/authorized_keys).
- Il server viene terminato («Killed», OOM): memoria insufficiente; controlla «dmesg | grep -i oom», aggiungi RAM o riduci slot e mod. Un file di swap limita i crash ma rallenta.
- Il servizio si riavvia in loop: leggi «journalctl -u gameserver -n 100»; controlla percorsi, permessi (il server deve appartenere a gameadmin) e librerie a 32 bit mancanti per SteamCMD.
- Il server non compare nell'elenco: la porta di query è bloccata o il server non è registrato; aggiungilo su game-rank.com/jeux per essere elencato.
Domande frequenti
- VPS o server dedicato per un server di gioco?
- Un VPS basta per un piccolo server o per provare. Passa a un dedicato per più server, molti slot o prestazioni stabili (niente vicini rumorosi).
- Ubuntu o Debian?
- Vanno bene entrambi e i comandi sono quasi identici. Scegli una versione supportata (Ubuntu LTS o Debian stable) e verifica la compatibilità indicata dall'editore del gioco.
- Devo davvero disattivare l'accesso root e con password?
- È fortemente consigliato: i server esposti ricevono migliaia di tentativi al giorno. Una chiave SSH e un utente non root eliminano gran parte del rischio; tieni una console di emergenza presso l'host.
- Docker o installazione diretta?
- L'installazione diretta con SteamCMD e systemd è la più semplice e meglio documentata dagli editori. Docker isola e facilita più server su una macchina, ma aggiunge un livello da capire (rete, volumi, firewall).
