Storage Server pro vlastní web: obrázky, soubory ke stažení, archivy

Publikováno 6 min čtení

Místo na webserveru je drahé, místo na Storage Serveru ne. Tento článek ukazuje, co všechno lze přesunout, který protokol z webserveru funguje a jak se soubory bezpečně dostanou k návštěvníkům.

Na webserveru je místo na disku to nejdražší, co máte. Leží na rychlých NVMe SSD, které jsou postavené pro databáze a PHP, a s každým gigabajtem citelně zdražuje. Zároveň tam leží věci, které tu rychlost nikdy nepotřebují: originály fotografií, videosoubory, archivy ke stažení, staré zálohy.

Storage Server stojí zlomek toho a sejme z webserveru přesně tuto zátěž. Tento článek ukazuje, co má smysl přesunout, který protokol z webserveru funguje, jak se soubory bezpečně dostanou k návštěvníkům a kde jsou hranice.

Co se vyplatí přesunout a co ne

Patří na úložištěZůstává na webserveru
Originály obrázků a videíNáhledy a ořezané verze
Archivy ke stažení, soubory ISO, sbírky PDFCSS, JavaScript, fonty
Nezpracovaná data, exporty, archivy logůDatabáze
Zálohy webuVšechno, co je potřeba při každém zobrazení stránky

Dělicí linie je jednoduchá: co se čte zřídka a přenese se jednou ve velkém, patří na úložiště. Co se načítá při každém zobrazení stránky, zůstává tam, kde je to rychlé.

Co Storage Server je a co není

Storage Server je síťové úložiště s uživatelskými účty. Připojíte se přístupovými údaji a čtete nebo zapisujete soubory. Není to objektové úložiště s veřejnými adresami a není to CDN.

V praxi to znamená: na svém webu nemůžete odkázat obrázek přímo na úložiště, protože každý přístup je přihlášený. Soubor si vyzvedne váš webserver a předá ho dál, nebo si sami vytvoříte časově omezené odkazy ke stažení. Jak na to čistě, stojí dál v textu.

Zní to jako omezení, má to ale výhodu: nikdo vám soubory nesebere tím, že uhodne adresu nebo pošle odkaz dál. Přístup vede vždy přes vaši aplikaci, a tedy přes vaše pravidla.

Vzor, který v praxi funguje

Tři kroky, víc to není:

  1. Originály leží na úložišti. Nahrajete je jednou a potom se jich jen zřídka dotknete.
  2. Odvozené verze vzniknou jednou a leží na webserveru. Tedy náhledy, ořezané varianty, komprimované verze. Jsou malé a jsou potřeba při každém zobrazení stránky.
  3. Stahování vede přes vaši aplikaci. Malý skript ověří oprávnění, vyzvedne soubor z úložiště a vydá ho.

Kdo to obrátí a náhledy si při každém zobrazení tahá čerstvě z úložiště, postaví si pomalý web. Doba odezvy sítě se u každého souboru sčítá a galerie se čtyřiceti obrázky čeká čtyřicetkrát.

Který protokol na jaký případ

ProtokolPortDobré naPotřebuje
SMB / CIFS445Připojení jako adresářroot práva na serveru
SSHFS23Připojení jako adresář, šifrovanéroot práva na serveru
SFTP23Přístup z PHP, skripty, přenosyodchozí port 23
WebDAV přes HTTPS443shared hosting, omezená prostředíjen HTTPS
rsync23Synchronizaci velkých adresářůodchozí port 23
BorgBackup23Zálohy s deduplikacíodchozí port 23

Nejdůležitější rozhodnutí nezávisí na vkusu, ale na vašich právech: na vlastním serveru připojíte úložiště jako adresář a každá aplikace ho může používat, aniž by o něm cokoli věděla. Jak na to, stojí v článku Připojení Storage Serveru jako síťového disku.

Na shared hostingu root práva nemáte, připojení jako adresář tím padá. Tam vede cesta přes WebDAV nebo SFTP z aplikace, a WebDAV je většinou menší odpor, protože port 443 není zablokovaný prakticky nikdy.

Nastavení přístupu z PHP

Pro SFTP stačí čistě PHP knihovna, žádné rozšíření na serveru není potřeba:

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('Přihlášení se nezdařilo');
}

// Nahrání souboru
$sftp->put('/bilder/2026/original.jpg', '/tmp/upload.jpg', SFTP::SOURCE_LOCAL_FILE);

// Čtení souboru
$inhalt = $sftp->get('/bilder/2026/original.jpg');

Pro WebDAV stačí dokonce vestavěné rozšíření curl:

$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);

Oba příklady používají podúčet, ne hlavní účet. Proč, stojí v další části.

Pro každý účel vlastní podúčet

Každý Storage Server dovoluje až 100 podúčtů, a to v každém tarifu. Každý dostane:

  • vlastní výchozí adresář, ze kterého se nedostane,
  • vlastní heslo,
  • vlastní povolení protokolů, tedy například jen SFTP a žádnou Sambu.

Pro web to znamená: jeden podúčet pro webserver, který smí jen SFTP a vidí jen /web, druhý pro zálohy, který vidí jen /backup. Pokud webserver někdo převezme, na zálohy se útočník nedostane, protože ten účet je vůbec nezná.

Jedna hranice tu je: podúčet nedostane vlastní kontingent místa. Zůstane ve svém adresáři, může tam ale zaplnit celé úložiště tarifu. Kdo chce jednotlivé uživatele skutečně omezit, potřebuje před úložiště aplikaci, která to převezme. Přesně tuto stavbu ukazuje Propojení Nextcloudu se Storage Serverem.

Bezpečný výdej souborů ke stažení

Nejčastější chybou je pustit přístupové údaje do prohlížeče, třeba odkazem s uživatelským jménem a heslem. Správné je, aby spojení navazoval váš server a soubor jen předal dál:

<?php
// Ověření oprávnění, dřív než se stane cokoli dalšího
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;

U velmi velkých souborů čtěte lépe po blocích, než abyste vše nahráli do paměti, jinak praskne limit paměti PHP. Použijte k tomu ob_end_flush() a vydávejte soubor po částech.

Kdo počítá s mnoha stahováními současně, měl by navíc pamatovat na to, že každé běžící stahování drží jeden proces PHP. Od určitého rozsahu patří něco takového za vlastní server, a ne za shared hosting.

Zálohování webu na úložiště

To je nejjednodušší začátek a hned něco přinese. S rsync přenesete jen změny:

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

Pro zálohy s deduplikací a šifrováním je lepší volbou BorgBackup, na úložišti je dostupný nativně. K tomu se jako druhá úroveň přidají snapshoty samotného úložiště: podle tarifu 10, 20, 30 nebo 40 ručních snapshotů a k nim stejný počet automatických v denním, týdenním a měsíčním rytmu.

Rozdíl proti záloze na tomtéž serveru je ten rozhodující: smazaný nebo zašifrovaný disk si vezme místní zálohu s sebou, zálohu na odděleném úložišti ne.

Než začnete: dva přepínače

V zákaznické sekci najdete u svého Storage Serveru tlačítko „Nastavení přístupu“. Dvě věci musí být v pořádku:

  • Dostupnost zvenčí musí být zapnutá, jinak se váš webserver k úložišti přes internet nedostane.
  • Požadovaný protokol musí být povolený, tedy Samba pro SMB, SSH pro SFTP a rsync, WebDAV pro cestu přes HTTPS.

U nově objednaných serverů je všechno z toho aktivní. Kdo z bezpečnostních důvodů vypne, co nepotřebuje, měl by pamatovat na to, že právě to je později nejčastější příčinou hlášky „už to nefunguje“.

Který tarif se hodí

TarifMístoPodúčtySnapshotyCena
Storage-11 TB10010 plus 10 automatických9,99 EUR
Storage-25 TB10020 plus 20 automatických29,99 EUR
Storage-310 TB10030 plus 30 automatických39,99 EUR
Storage-420 TB10040 plus 40 automatických69,99 EUR

Všechny Storage Servery stojí v Německu, mluví FTP, FTPS, SFTP, SCP, Samba, WebDAV a WebDAVs, přinášejí rsync a BorgBackup nativně a mají IPv4 i IPv6. Zřizovací poplatek žádný není, účtuje se na bázi PrePaid bez minimální doby trvání. Můžete tedy začít s 1 TB a později zvětšit, bez přestěhování.

Příklad pro srovnání: 1 TB místa navíc na webserveru stojí podle poskytovatele násobek 9,99 EUR měsíčně a leží pak na stejném stroji jako web. Úložiště vedle je nejen levnější, je také oddělené.

Časté dotazy

Mohu obrázky vložit do webu přímo ze Storage Serveru?
Ne přes přímý odkaz v tagu obrázku. Storage Server není veřejný webserver, každý přístup je přihlášený. Soubor si vyzvedne váš webserver a předá ho dál, nebo si vytvoříte časově omezené odkazy ke stažení. U náhledů je lepší cestou vytvořit je jednou a odložit si je na webserveru.
Který protokol mám z webserveru použít?
Na vlastním serveru s root právy je nejpohodlnější SMB nebo SSHFS, úložiště se pak objeví jako obyčejný adresář. Na shared hostingu bez root práv to nejde, tam je cestou nejmenšího odporu WebDAV přes HTTPS, protože port 443 není zablokovaný prakticky nikdy.
Nahradí Storage Server CDN?
Ne. CDN rozmístí kopie do mnoha lokalit a vydává je přímo návštěvníkům. Storage Server je odkládací místo v jedné lokalitě, jehož přístupy jsou přihlášené. Obojí se doplňuje: originály na úložišti, vydávané verze přes webserver nebo CDN.
Kolik podúčtů si mohu vytvořit?
Až 100, a to u každého tarifu. Každý podúčet má vlastní výchozí adresář, vlastní heslo a vlastní povolené protokoly. Web tak dostane účet, který smí jen SFTP a vidí jen svůj adresář, a záloha dostane oddělený.
Mohu podúčtu přidělit vlastní místo?
Ne, kvóta na podúčet neexistuje. Podúčet zůstane ve svém adresáři, může tam ale zabrat celé místo tarifu. Kdo chce omezit jednotlivé uživatele, musí to udělat ve vlastní aplikaci.
Jak rychlý je přístup?
U velkých souborů v jednom kuse velmi dobrý, úzkým hrdlem je konektivita vašeho webserveru. U mnoha malých přístupů za sebou se ke každému souboru přidá doba odezvy sítě. Proto na úložiště patří originály a archivy, ale často načítané drobnosti jako náhledy patří do mezipaměti na webserveru.
Jsou přístupové údaje vidět v prohlížeči?
Jen když to postavíte špatně. Správné je, aby spojení navazoval webserver a soubor jen předával dál. Přístupové údaje pak zůstanou na serveru a neobjeví se ani ve zdrojovém kódu, ani v adrese.
Mohu na to zálohovat i svůj web?
Ano, a je to nejjednodušší začátek. S rsync nebo BorgBackup přenesete jen změny, k tomu se jako druhá úroveň přidají snapshoty úložiště. Podle tarifu je možných 10 až 40 snapshotů a k nim stejný počet automatických.
Potřebuji k tomu vlastní server?
Ne. Funguje to i ze shared hostingu, tam přes WebDAV nebo SFTP z PHP. Root práva a tím i vlastní server potřebuje jen připojení jako disk.
Kolik to stojí?
Storage-1 s 1 TB stojí 9,99 EUR měsíčně, Storage-2 s 5 TB 29,99, Storage-3 s 10 TB 39,99 a Storage-4 s 20 TB 69,99. Bez zřizovacího poplatku, na bázi PrePaid a bez minimální doby trvání, lokalita Německo.

Storage Server Webserver WebDAV SFTP Mediendateien Downloads Backup