Ti connetti al tuo VPS Windows in RDP, avvii un processo, chiudi la sessione… e qualche minuto dopo, il tuo server non risponde più, il tuo script si è fermato, oppure la connessione desktop remoto rifiuta di aprirsi. Il colpevole è quasi sempre lo stesso: la sospensione di Windows.
Questa guida spiega perché un VPS Windows entra in sospensione (anche se non avrebbe senso su un server remoto), e poi fornisce tre metodi complementari per disattivarla definitivamente: interfaccia grafica, script PowerShell e registro di Windows. Alla fine dell'articolo, il tuo VPS rimarrà attivo 24/7, anche con la sessione RDP chiusa.
Soluzione rapida in 30 secondi:
Apri PowerShell come amministratore sul tuo VPS e incolla:
powercfg /change standby-timeout-ac 0 powercfg /change monitor-timeout-ac 0 powercfg /change hibernate-timeout-ac 0 powercfg /hibernate off powercfg /setactive 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635cPoi riavvia. Dettagli, verifica e risoluzione dei problemi qui sotto.
Perché un VPS Windows va in sospensione (anche se non dovrebbe)
Un VPS è una macchina virtuale che gira su un hypervisor (KVM, VMware, Hyper-V). A differenza di un PC fisico, non ha schermo, né tastiera, né batteria. La sospensione non ha alcun senso funzionale… ma Windows non lo sa.
Quando installi Windows Server (o peggio, Windows 10/11 su un VPS, cosa che alcuni fanno), il sistema applica il suo piano di alimentazione predefinito, progettato per un workstation. Conseguenze:
- Dopo 15-30 minuti di inattività della sessione RDP, Windows considera che non ci sia "nessuno" e spegne lo schermo virtuale.
- Dopo ~1h, va in sospensione (
Sleep) o ibernazione (Hibernate) → l'OS sospende i thread, i servizi di rete rallentano, alcuni processi utente si bloccano. - Il servizio Desktop remoto (TermService) applica i propri timeout (
MaxIdleTime,MaxDisconnectionTime) che chiudono la sessione dopo inattività, liberando il desktop.
Su un VPS, il comportamento osservato è generalmente:
- ✗ Il server risponde sempre al ping (il kernel di rete rimane attivo).
- ✗ RDP rifiuta la connessione o mostra uno schermo nero.
- ✗ I tuoi script/servizi pianificati si interrompono.
- ✗ Le applicazioni GUI (bot, browser automatizzati, MetaTrader, OBS, ecc.) si mettono in pausa.
È per questo motivo che ogni messa in produzione su un VPS Windows inizia disattivando la sospensione. Vediamo come, in modo pulito e duraturo.
Requisiti
- Un VPS Windows attivo (Windows Server 2019, 2022, 2025 o Windows 10/11), ad esempio un VPS Windows OuiHeberg.
- Un accesso RDP al server con un account amministratore.
- 5-10 minuti.
Nota: Tutte le operazioni devono essere eseguite da una sessione RDP amministratore. Se utilizzi un account standard, alcune impostazioni saranno disabilitate.
Metodo 1 - Interfaccia grafica (raccomandata per principianti)
Passo 1.1 - Aprire le opzioni di alimentazione
- Premi
Windows + Rper aprire la finestra Esegui. - Digita
powercfg.cple poi premiInvio. - Si apre la finestra Opzioni di alimentazione.
Passo 1.2 - Scegliere il piano "Prestazioni elevate"
Nella lista dei piani, seleziona Prestazioni elevate.
Se non appare (cosa frequente su Windows Server con piano di alimentazione ridotto), ricrealo tramite PowerShell admin:
powercfg -duplicatescheme 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c
powercfg /setactive 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c
Passo 1.3 - Disattivare schermo e sospensione
- Clicca su Modifica le impostazioni del piano a destra del piano attivo.
- Imposta Spegni lo schermo su
Mai. - Imposta Metti il computer in sospensione su
Mai. - Clicca su Modifica le impostazioni di alimentazione avanzate.
Passo 1.4 - Impostazioni avanzate (la più importante)
Nella finestra avanzata, configura:
| Sezione | Parametro | Valore |
|---|---|---|
| Disco rigido | Arresta il disco rigido dopo | Mai (0 min) |
| Sospensione | Metti in sospensione dopo | Mai |
| Sospensione | Consenti la sospensione ibrida | Disattivato |
| Sospensione | Metti in ibernazione dopo | Mai |
| Sospensione | Consenti i timer di risveglio | Disattivare |
| USB | Impostazione di sospensione selettiva USB | Disattivato |
| Pulsanti e coperchio | Azioni quando si chiude il coperchio | Non fare nulla |
Clicca su Applica e poi su OK.
Passo 1.5 - Disattivare l'avvio rapido
- In Opzioni di alimentazione, clicca a sinistra su Scegli l'azione dei pulsanti di alimentazione.
- Clicca su Modifica impostazioni attualmente non disponibili.
- Deseleziona Attiva avvio rapido.
Metodo 2 - Script PowerShell (raccomandato per amministratori)
È il metodo più veloce e affidabile. Un solo blocco PowerShell sostituisce tutta la procedura grafica e garantisce la stessa configurazione su tutti i tuoi VPS.
Apri PowerShell come amministratore, copia e incolla l'intero script qui sotto:
# === OuiHeberg — VPS Windows: disattivazione completa della sospensione ===
# 1. Piano di alimentazione "Prestazioni elevate"
$highPerf = "8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c"
powercfg -duplicatescheme $highPerf 2>$null
powercfg /setactive $highPerf
# 2. Disattivare tutti i timeout (settore AC, l'unico valido su VPS)
powercfg /change standby-timeout-ac 0
powercfg /change monitor-timeout-ac 0
powercfg /change disk-timeout-ac 0
powercfg /change hibernate-timeout-ac 0
# 3. Disattivare l'ibernazione (libera anche hiberfil.sys = diversi GB)
powercfg /hibernate off
# 4. Disattivare i timer di risveglio
powercfg /setacvalueindex SCHEME_CURRENT SUB_SLEEP RTCWAKE 0
powercfg /setactive SCHEME_CURRENT
# 5. Disattivare lo screensaver per tutti gli utenti
reg add "HKCU\Control Panel\Desktop" /v ScreenSaveActive /t REG_SZ /d 0 /f
reg add "HKCU\Control Panel\Desktop" /v ScreenSaveTimeOut /t REG_SZ /d 0 /f
# 6. Disattivare i timeout RDP (sessione rimane aperta indefinitamente)
$rdp = "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp"
Set-ItemProperty -Path $rdp -Name "MaxIdleTime" -Value 0 -Type DWord
Set-ItemProperty -Path $rdp -Name "MaxDisconnectionTime" -Value 0 -Type DWord
Set-ItemProperty -Path $rdp -Name "MaxConnectionTime" -Value 0 -Type DWord
# 7. Disattivare l'avvio rapido (HiberbootEnabled)
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Power" /v HiberbootEnabled /t REG_DWORD /d 0 /f
Write-Host "`n✓ Configurazione applicata. Riavvio consigliato." -ForegroundColor Green
Salva questo script in C:\Scripts\disable-sleep.ps1 per poterlo riapplicare su qualsiasi nuovo VPS.
Metodo 3 - Editor del registro (per casi specifici)
Se desideri un controllo granulare o risolvere un conflitto GPO, modifica direttamente il registro.
Disattivare i timeout RDP
Windows + R → regedit → navigare verso:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp
Crea/modifica questi tre valori DWORD (32 bit):
| Nome | Tipo | Valore | Effetto |
|---|---|---|---|
MaxIdleTime | DWORD | 0 | Sessione mai chiusa per inattività |
MaxDisconnectionTime | DWORD | 0 | Sessione disconnessa rimane indefinitamente |
MaxConnectionTime | DWORD | 0 | Nessuna durata massima di connessione |
Disattivare l'avvio rapido tramite registro
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Power
Imposta HiberbootEnabled (DWORD) a 0.
Verifica: il tuo VPS è configurato correttamente?
Dopo le modifiche, riavvia il VPS (shutdown /r /t 0), riconnettiti, poi esegui questo script di verifica in PowerShell admin:
# === Verifica configurazione sospensione VPS ===
Write-Host "`n--- Piano di alimentazione attivo ---" -ForegroundColor Cyan
powercfg /getactivescheme
Write-Host "`n--- Timeout ---" -ForegroundColor Cyan
powercfg /query SCHEME_CURRENT SUB_SLEEP STANDBYIDLE | Select-String "Index"
powercfg /query SCHEME_CURRENT SUB_VIDEO VIDEOIDLE | Select-String "Index"
Write-Host "`n--- Ibernazione ---" -ForegroundColor Cyan
powercfg /availablesleepstates
Write-Host "`n--- Timeout RDP ---" -ForegroundColor Cyan
Get-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" |
Select-Object MaxIdleTime, MaxDisconnectionTime, MaxConnectionTime
Devi vedere:
- Piano attivo =
Prestazioni elevate(GUID8c5e7fda-…) - Tutti gli
Indexdei timeout a0x00000000 L'ibernazione non è stata abilitataMaxIdleTime,MaxDisconnectionTime,MaxConnectionTimea0
Se uno di questi punti non è conforme, vedere la sezione risoluzione dei problemi.
Risoluzione dei problemi - Il VPS continua a "bloccarsi"
Se nonostante la configurazione sopra il VPS rimane irraggiungibile dopo alcune ore, il problema proviene probabilmente da un'altra fonte rispetto alla sospensione. Ecco le cause più frequenti in ordine di probabilità.
1. Windows Update forza un riavvio
services.msc → trova Windows Update → verifica che il riavvio automatico non sia pianificato durante le tue ore critiche. Per rinviare:
reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" /v NoAutoRebootWithLoggedOnUsers /t REG_DWORD /d 1 /f
2. Attività pianificate di arresto/riavvio
taskschd.msc → Biblioteca del Pianificatore → verifica Microsoft\Windows\UpdateOrchestrator e Microsoft\Windows\Maintenance. Disattiva Reboot e RegularMaintenance se gestisci gli aggiornamenti manualmente.
3. Scheda di rete autorizzata a "risparmiare energia"
devmgmt.msc → Schede di rete → clic destro sull'interfaccia → Proprietà → scheda Gestione dell'alimentazione → deseleziona "Consenti al computer di spegnere questo dispositivo per risparmiare energia".
4. Politica di gruppo (GPO) che ripristina i timeout
Se il tuo VPS è unito a un dominio o se hai applicato delle GPO Local Group Policy, apri gpedit.msc e verifica:
Configurazione computer → Modelli di amministrazione → Componenti di Windows → Servizi Desktop remoto → Host di sessione Desktop remoto → Limiti di connessione
Disattiva (o imposta su Non configurato) tutte le politiche relative ai limiti di sessione. Poi esegui gpupdate /force.
5. Servizio TermService riavviato da aggiornamenti
Riapplicare lo script PowerShell metodo 2 ripristina le chiavi RDP dopo ogni aggiornamento maggiore di Windows. Pianificalo come attività mensile se necessario.
Per andare oltre: mantenere la sessione RDP attiva senza chiuderla
Anche con la sessione attiva, alcuni servizi (antivirus, telemetria) possono abbassare la priorità dei processi utente quando la sessione è "disconnessa ma aperta". Due suggerimenti:
Mantenere la sessione RDP "viva" lato client
Sul tuo PC locale (non sul VPS), crea un collegamento .rdp con queste opzioni:
keepalive interval:i:60
disconnection sound:i:0
Questo invia un ping RDP ogni 60 secondi e impedisce al box/NAT di interrompere la connessione.
Impedire lo schermo di blocco automatico
Ancora sul VPS, come admin:
reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v InactivityTimeoutSecs /t REG_DWORD /d 0 /f
reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows\Personalization" /v NoLockScreen /t REG_DWORD /d 1 /f
Checklist finale - 8 verifiche prima di chiudere la sessione
- Piano di alimentazione = Prestazioni elevate
-
standby-timeout-ac= 0 -
monitor-timeout-ac= 0 -
hibernate=off -
MaxIdleTime(registro RDP) = 0 - Avvio rapido disattivato
- Scheda di rete: "risparmiare energia" deselezionata
- VPS riavviato almeno una volta dopo configurazione
Se tutte le 8 caselle sono spuntate, il tuo VPS Windows rimarrà attivo 24/7.
FAQ - Sospensione di un VPS Windows
Perché un VPS Windows va in sospensione se non ha uno schermo?
Perché Windows applica il suo piano di alimentazione predefinito (progettato per un PC) senza tenere conto del fatto che la macchina è virtuale. I timeout dello schermo e della sospensione si applicano anche su un VPS senza dispositivo fisico, e il servizio Desktop remoto chiude la sessione dopo inattività.
Qual è il comando più veloce per impedire la sospensione di un VPS Windows?
Una sola riga in PowerShell come amministratore: powercfg /change standby-timeout-ac 0. Per una protezione completa, aggiungi powercfg /change monitor-timeout-ac 0, powercfg /hibernate off, e disattiva i timeout RDP nel registro.
Il mio VPS Windows non risponde più dopo alcune ore, è la sospensione?
Probabilmente, ma non solo. Controlla in quest'ordine: (1) piano di alimentazione, (2) timeout RDP MaxIdleTime, (3) attività pianificate Windows Update, (4) scheda di rete autorizzata a spegnersi. Lo script di verifica di questo articolo diagnostica le 4 cause in 5 secondi.
È necessario disattivare l'ibernazione su un VPS?
Sì. L'ibernazione è inutile su un VPS (nessuna batteria, nessuna RAM da salvare), e il file hiberfil.sys occupa l'equivalente della RAM del server sul disco. Il comando powercfg /hibernate off disattiva il meccanismo e libera immediatamente questo spazio.
Le modifiche sopravvivono a un riavvio?
Sì. I piani di alimentazione, il registro RDP e le impostazioni di avvio rapido sono persistenti. L'unica eccezione: un aggiornamento maggiore di Windows Server può ripristinare alcune chiavi del servizio Desktop remoto. Riapplica lo script PowerShell dopo ogni aggiornamento Feature Update.
Qual è la differenza tra standby-timeout-ac e standby-timeout-dc?
ac = rete elettrica (collegato), dc = batteria. Un VPS è sempre considerato "collegato" — solo ac conta. Modificarlo è sufficiente; dc può essere ignorato.
Questa procedura funziona su Windows Server 2025?
Sì. Tutti i comandi powercfg e le chiavi di registro elencate sono identici su Windows Server 2019, 2022 e 2025, così come su Windows 10 e 11. Solo l'interfaccia grafica è leggermente cambiata su Server 2025 (Impostazioni → Sistema → Alimentazione invece del Pannello di controllo).
Conclusione
Disattivare la sospensione di un VPS Windows richiede tre azioni complementari: piano di alimentazione Prestazioni elevate, timeout powercfg a zero, chiavi RDP del registro a zero. Lo script PowerShell del metodo 2 esegue tutte e tre le operazioni in 5 secondi e rimane valido su tutti i moderni Windows Server.
Una volta applicate queste impostazioni, il tuo VPS rimarrà attivo 24/7, i tuoi script gireranno senza interruzioni, e la tua sessione RDP riprenderà istantaneamente anche dopo diversi giorni.
Hai bisogno di un VPS Windows affidabile per ospitare un bot, un server applicativo o un ambiente di sviluppo? Scopri i VPS Windows OuiHeberg con Windows Server 2025 preinstallato, accesso RDP immediato, SSD NVMe e supporto 7 giorni su 7 basato in Francia.
