Usare uno Storage Server per il tuo sito: immagini, download, archivi

Pubblicato il 7 min di lettura

Lo spazio su un server web è caro, quello su uno Storage Server no. Questo articolo mostra cosa si può spostare, quale protocollo funziona dal server web e come i file arrivano in sicurezza ai visitatori.

Su un server web lo spazio su disco è il bene più costoso. Sta su SSD NVMe veloci, costruite per database e PHP, e con ogni gigabyte diventa sensibilmente più caro. Nello stesso tempo lì ci sono cose che di quella velocità non avranno mai bisogno: foto originali, file video, archivi di download, vecchi backup.

Uno Storage Server costa una frazione di quel prezzo e si prende esattamente questo carico. Questo articolo mostra cosa conviene spostare, quale protocollo funziona dal server web, come i file arrivano in sicurezza ai visitatori e dove sono i limiti.

Cosa conviene spostare, e cosa no

Va sullo storageResta sul server web
Originali di immagini e videoAnteprime e versioni ritagliate
Archivi di download, file ISO, raccolte di PDFCSS, JavaScript, font
Dati grezzi, esportazioni, archivi di logIl database
Backup del sitoTutto ciò che serve a ogni visita di pagina

La linea di separazione è semplice: ciò che si legge raramente e si trasferisce una volta in blocco va sullo storage. Ciò che viene caricato a ogni visita di pagina resta dove è veloce.

Che cos'è uno Storage Server, e che cosa non è

Uno Storage Server è spazio di archiviazione in rete con account utente. Ti connetti con le credenziali e leggi o scrivi file. Non è uno storage a oggetti con indirizzi pubblici e non è una CDN.

In pratica significa: nel tuo sito non puoi collegare un'immagine direttamente allo storage, perché ogni accesso è autenticato. Il tuo server web preleva il file e lo inoltra, oppure generi tu stesso link di download a tempo limitato. Come si fa in modo pulito lo trovi più avanti.

Sembra una limitazione, ma ha un vantaggio: nessuno può prendersi i tuoi file indovinando indirizzi o passando un link a qualcun altro. L'accesso passa sempre dalla tua applicazione, e quindi dalle tue regole.

Lo schema che funziona nella pratica

Tre passaggi, non di più:

  1. Gli originali stanno sullo storage. Vengono caricati una volta e dopo si toccano raramente.
  2. Le versioni derivate nascono una volta e stanno sul server web. Quindi anteprime, varianti ritagliate, versioni compresse. Sono piccole, e servono a ogni visita di pagina.
  3. I download passano dalla tua applicazione. Un piccolo script verifica il permesso, preleva il file dallo storage e lo restituisce.

Chi ribalta lo schema e preleva le anteprime dallo storage a ogni visita si costruisce un sito lento. La latenza di rete per ogni file si somma, e una galleria con quaranta immagini aspetta quaranta volte.

Quale protocollo per quale caso

ProtocolloPortaBuono perRichiede
SMB / CIFS445Montare come directorypermessi di root sul server
SSHFS23Montare come directory, cifratopermessi di root sul server
SFTP23Accesso da PHP, script, trasferimentiporta 23 in uscita
WebDAV via HTTPS443Hosting condiviso, ambienti limitatisolo HTTPS
rsync23Sincronizzazione di directory grandiporta 23 in uscita
BorgBackup23Backup con deduplicazioneporta 23 in uscita

La decisione più importante non dipende dai gusti, ma dai tuoi permessi: su un server proprio monti lo storage come directory, e ogni applicazione può usarlo senza saperne niente. Come si fa lo spiega Montare lo Storage Server come unità di rete.

Su hosting condiviso non hai permessi di root, quindi il montaggio non è possibile. Lì la strada passa da WebDAV o SFTP dall'applicazione, e WebDAV è di solito la resistenza minore, perché la porta 443 non è praticamente mai bloccata.

Configurare l'accesso da PHP

Per SFTP basta una libreria di PHP puro, non serve nessuna estensione sul server:

composer require phpseclib/phpseclib:~3.0
use phpseclib3\Net\SFTP;

$sftp = new SFTP('u123456.storage.kernelhost.net', 23);
if (!$sftp->login('u123456-sub1', $passwort)) {
    throw new RuntimeException('Autenticazione non riuscita');
}

// Caricare il file
$sftp->put('/bilder/2026/original.jpg', '/tmp/upload.jpg', SFTP::SOURCE_LOCAL_FILE);

// Leggere il file
$inhalt = $sftp->get('/bilder/2026/original.jpg');

Per WebDAV basta perfino l'estensione curl già integrata:

$ch = curl_init('https://u123456.storage.kernelhost.net/bilder/2026/original.jpg');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_USERPWD        => 'u123456-sub1:' . $passwort,
    CURLOPT_TIMEOUT        => 30,
]);
$inhalt = curl_exec($ch);
curl_close($ch);

I due esempi usano un sotto-account, non l'account principale. Il perché lo spiega la sezione seguente.

Un sotto-account dedicato per ogni scopo

Ogni Storage Server consente fino a 100 sotto-account, e questo in ogni tariffa. Ognuno riceve:

  • una directory iniziale propria, dalla quale non può uscire,
  • una password propria,
  • permessi di protocollo propri, quindi per esempio solo SFTP e niente Samba.

Per un sito significa: un sotto-account per il server web, che può usare solo SFTP e vede solo /web, e un secondo per il backup, che vede solo /backup. Se un giorno il server web viene compromesso, chi attacca non arriva ai backup, perché quell'account non li conosce affatto.

Un limite esiste: un sotto-account non riceve una quota di spazio propria. Resta nella sua directory, ma da lì può riempire tutto lo storage della tariffa. Chi vuole limitare davvero i singoli utenti ha bisogno davanti di un'applicazione che se ne occupi. Collegare Nextcloud allo Storage Server mostra esattamente questo schema.

Consegnare i download in sicurezza

L'errore più frequente è lasciare che le credenziali arrivino al browser, per esempio con un link che contiene nome utente e password. La via corretta è che il tuo server apra la connessione e inoltri il file:

<?php
// Verificare il permesso prima che accada qualsiasi altra cosa
if (!nutzer_darf_datei($_GET['id'])) {
    http_response_code(403);
    exit;
}

$sftp = neue_verbindung();
$datei = $sftp->get(pfad_zu($_GET['id']));

header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="dokument.pdf"');
header('Content-Length: ' . strlen($datei));
echo $datei;

Con file molto grandi conviene leggere a blocchi invece di caricare tutto in memoria, altrimenti salta il limite di memoria di PHP. Per farlo imposta ob_end_flush() e restituisci il file pezzo per pezzo.

Chi si aspetta molti download in parallelo deve tenere presente anche che ogni download in corso occupa un processo PHP. Oltre un certo ordine di grandezza, una cosa del genere va dietro un server proprio e non dietro hosting condiviso.

Fare il backup del sito sullo storage

È il modo più semplice per iniziare, e rende subito. Con rsync trasferisci solo le modifiche:

rsync -az --delete -e "ssh -p 23" \
      /var/www/example.com/ \
      u123456-sub2@u123456.storage.kernelhost.net:/backup/web/

Per i backup con deduplicazione e cifratura BorgBackup è la scelta migliore, sullo storage è disponibile in modo nativo. In più ci sono gli snapshot dello storage stesso come secondo livello: a seconda della tariffa 10, 20, 30 o 40 snapshot manuali, più altrettanti automatici con ritmo giornaliero, settimanale e mensile.

La differenza rispetto al backup sullo stesso server è quella decisiva: un disco cancellato o cifrato porta con sé un backup locale, un backup su storage separato no.

Prima di iniziare: due interruttori

Nell'area clienti, sulla pagina dello Storage Server, trovi il pulsante "Impostazioni di accesso". Due cose devono essere giuste:

  • La Raggiungibilità esterna deve essere attiva, altrimenti il tuo server web non raggiunge lo storage attraverso internet.
  • Il protocollo desiderato deve essere abilitato, quindi Samba per SMB, SSH per SFTP e rsync, WebDAV per la via HTTPS.

Sui server appena ordinati tutto questo è attivo. Chi per motivi di sicurezza disattiva quello che non gli serve dovrebbe tenerlo a mente, perché è proprio questo, più tardi, la causa più frequente di "non funziona più".

Quale tariffa è quella giusta

TariffaSpazioSotto-accountSnapshotPrezzo
Storage-11 TB10010 più 10 automatici9,99 EUR
Storage-25 TB10020 più 20 automatici29,99 EUR
Storage-310 TB10030 più 30 automatici39,99 EUR
Storage-420 TB10040 più 40 automatici69,99 EUR

Tutti gli Storage Server si trovano in Germania, parlano FTP, FTPS, SFTP, SCP, Samba, WebDAV e WebDAVs, portano con sé rsync e BorgBackup in modo nativo e hanno IPv4 e IPv6. Non c'è nessun costo di attivazione, la fatturazione è su base PrePaid senza vincoli di durata. Puoi quindi iniziare con 1 TB e ingrandire più tardi, senza traslocare.

Un esempio di calcolo: 1 TB di spazio aggiuntivo su un server web costa, a seconda del provider, un multiplo di 9,99 euro al mese, e sta poi sulla stessa macchina del sito. Lo storage accanto non è solo più economico, è anche separato.

Domande frequenti

Posso inserire immagini nel mio sito direttamente dallo Storage Server?
Non con un link diretto nel tag dell'immagine. Uno Storage Server non è un server web pubblico, ogni accesso è autenticato. Il tuo server web preleva il file e lo inoltra, oppure generi link di download a tempo limitato. Per le anteprime la strada migliore è crearle una volta e tenerle in cache sul server web.
Quale protocollo conviene usare dal server web?
Su un server proprio con permessi di root, SMB o SSHFS è la via più comoda, perché lo spazio di archiviazione compare come una normale directory. Su hosting condiviso senza permessi di root non è possibile, e lì WebDAV via HTTPS è la strada di minore resistenza, perché la porta 443 non è praticamente mai bloccata.
Uno Storage Server sostituisce una CDN?
No. Una CDN distribuisce copie su molte sedi e le consegna direttamente ai visitatori. Uno Storage Server è un luogo di archiviazione in una sola sede, e ogni accesso è autenticato. Le due cose si completano: gli originali sullo storage, le versioni consegnate tramite server web o CDN.
Quanti sotto-account posso creare?
Fino a 100, in ogni tariffa. Ogni sotto-account ha una directory iniziale propria, una password propria e permessi di protocollo propri. Così il sito riceve un account che può usare solo SFTP e vede solo la sua directory, e il backup ne riceve uno separato.
Posso assegnare a un sotto-account uno spazio dedicato?
No, una quota per sotto-account non esiste. Un sotto-account resta nella sua directory, ma lì può occupare tutto lo spazio della tariffa. Chi vuole limitare i singoli utenti deve farlo nella propria applicazione.
Quanto è veloce l'accesso?
Molto buono per i file grandi in un unico blocco, dove il collo di bottiglia è la connessione del tuo server web. Per molti accessi piccoli uno dopo l'altro si aggiunge la latenza di rete per ogni file. Per questo originali e archivi stanno sullo storage, mentre le cose piccole caricate spesso, come le anteprime, stanno in una cache sul server web.
Le credenziali sono visibili nel browser?
Solo se lo costruisci male. La via corretta è che il server web apra la connessione e inoltri il file. Le credenziali restano così sul server e non compaiono né nel codice sorgente né in un indirizzo.
Posso usarlo anche per il backup del mio sito?
Sì, ed è il modo più semplice per iniziare. Con rsync o BorgBackup trasferisci solo le modifiche, e in più ci sono gli snapshot dello storage come secondo livello. A seconda della tariffa sono possibili da 10 a 40 snapshot, più altrettanti automatici.
Mi serve per questo un server proprio?
No. Funziona anche da hosting condiviso, in quel caso via WebDAV o SFTP da PHP. Solo il montaggio come unità richiede permessi di root, e quindi un server proprio.
Quanto costa?
Storage-1 con 1 TB costa 9,99 euro al mese, Storage-2 con 5 TB 29,99, Storage-3 con 10 TB 39,99 e Storage-4 con 20 TB 69,99. Senza costi di attivazione, su base PrePaid e senza vincoli di durata, sede in Germania.

Storage Server Webserver WebDAV SFTP Mediendateien Downloads Backup