← Zpět na všechny články blogu

Necháte AI napsat váš web? Pozor na tyhle 3 technické chyby při nasazení

Iveta Zlatníčková
Iveta Zlatníčková Aktualizováno 25. 6. 2026 – 14 min. čtení

AI nástroje jako Cursor, Lovable nebo Bolt vám dokážou napsat fungující kód během jediného odpoledne. Nadšení je obrovské – a zcela oprávněné. Vystřízlivění však přichází ve chvíli, kdy chcete projekt přenést na vlastní doménu a ukázat ho světu. Právě fáze nasazení (deploymentu) je totiž momentem, kde pohoří překvapivé množství skvěle vypadajících projektů.

Buďme upřímní: AI generátory netuší, kam váš web nasadíte. Generují kód, který perfektně šlape na localhostu, a předpokládají, že o zbytek se postará někdo jiný. A ve většině případů jste tím „někým jiným“ právě vy.

V tomto článku si projdeme tři technické chyby, které u webů generovaných umělou inteligencí vídáme nejčastěji. Každá z nich dokáže v lepším případě shodit web na pár hodin, v tom horším vás připraví o data, klienty nebo peníze. Přitom všem třem scénářům předejdete během několika minut pozornosti.

TL;DR:

  • #1 Exponované API klíče v kódu nebo repozitáři – AI boti je proskenují a zneužijí během několika minut.
  • #2 Špatně zvolený typ hostingu – Next.js s SSR na běžném sdíleném webhostingu prostě nerozběháte.
  • #3 Jednostránková aplikace (SPA) bez serverového fallbacku – stačí, aby uživatel aktualizoval stránku na /o-nas, a místo obsahu uvidí chybu 404.

Před ostrým nasazením přitom stačí jeden rychlý checklist, kterým všem těmto přešlapům bezpečně předejdete.

Zvukový souhrn

Freelo - Nástroj na řízení úkolů a projektů

Přidej se, pozvi svůj tým a klienty, rozděl práci a sleduj, jak se úkoly dají do pohybu.

Chyba č. 1: API klíče a secrets v kódu nebo v repu

#1 Exponované API klíče aneb tichá katastrofa v přímém přenosu

Jde o nejnebezpečnější přešlap z celé trojice. Nezpůsobí totiž okamžitý výpadek, ale tichou finanční katastrofu. Když AI generuje funkci volající API od OpenAI nebo Stripe, často vloží citlivý klíč přímo do .js souboru s komentářem typu „zde doplňte svůj klíč“. Kód poslušně vyplníte, commitnete do gitu a publikujete na GitHubu jako veřejný repozitář. V tu chvíli začíná odpočet – automatizovaní scrappeři totiž pročesávají veřejný kód po desítkách za vteřinu a váš klíč najdou řádově za pár minut.

Stejně rafinované nebezpečí hrozí, když citlivá data nechtěně propašujete do výsledného frontendového balíčku. AI generátory bezmyšlenkovitě používají proměnné jako:

  • NEXT_PUBLIC_OPENAI_KEY 
  • nebo VITE_OPENAI_API_KEY

Netuší totiž, že prefixy jako NEXT_PUBLIC_ (u Next.js) nebo VITE_ (u Vite) slouží přesně k tomu, aby se daná hodnota natvrdo zabalila do klientského JavaScriptu. Každý návštěvník vašeho webu si pak váš soukromý klíč může přečíst v prohlížeči přes obyčejné zobrazení zdrojového kódu stránky.

Jak to vypadá v praxi:

// ŠPATNĚ — klíč v repu i ve frontendu

const apiKey = "sk-proj-abc123...";

const res = await fetch("https://api.openai.com/v1/chat", {

  headers: { Authorization: "Bearer " + apiKey }

});

A jak to spravit? 

  1. Klíče přesuňte na server. 
  2. Volání placeného API (OpenAI, Stripe nebo e-mailových služeb) vždy provádějte přes vlastní backendový endpoint, který jako jediný dané tajemství zná. Frontend pak zavolá váš endpoint a ten se bezpečně spojí s finálním API. 
  3. Pokud máte naše VPS, proměnné prostředí (environment variables) si pohodlně naklikáte přímo v administračním panelu (přes PHP-FPM pool nebo Git Deploy). Nemusíte se tak vůbec hrabat v souborech přes SSH. Navíc každá doména u nás běží pod vlastním Linux uživatelem, takže případný únik přihlašovacích údajů v jedné aplikaci neohrozí ty ostatní.

Soubor .env patří do .gitignore. Vždycky. Bez výjimek. Ještě než uděláte první commit, raději si to bleskově ověřte příkazem:

cat .gitignore | grep .env

Důsledně také rozlišujte mezi veřejnými a serverovými proměnnými. Prefixy jako `NEXT_PUBLIC_*` a `VITE_*` jsou stoprocentně veřejné. Patří do nich pouze URL adresa endpointu, klientské klíče nebo veřejné identifikátory. Hesla, service role klíče a API tokeny do nich nikdy nevkládejte.

Pokud už klíč v repozitáři jednou byl (byť jen o jediný commit zpátky), okamžitě ho v dané službě zneplatněte a vygenerujte nový. Smazat soubor a udělat nový commit nestačí – klíč navždy zůstane zapsaný v historii Gitu. Pro skutečné vyčištění historie poslouží nástroj `git filter-repo`, případně nás kontaktujte a my vám s tím pomůžeme.

Tři rychlé tipy na závěr:

  • Zapněte si secret scanning – GitHub i GitLab umí klíče v kódu rozpoznat a varují vás dřív, než commit vůbec projde.
  • Kontrolujte, co pushujete – než cokoli odešlete do světa, projděte si vygenerovaný kód a hledejte řetězce začínající na `sk-`, `pk_live`, `Bearer` nebo jakýkoli podezřele náhodný řetězec delší než 20 znaků.
  • Většinu úniků zachytíte už touto jednoduchou kontrolou.

#2 Špatně zvolený typ hostingu pro daný stack

Druhá chyba sice nezpůsobí únik dat, ale spolehlivě vámi zničí víkend a sežere nejvíc nervů. 

Scénář je pokaždé stejný: stáhnete hotový projekt z Boltu (nebo jiného podobného nástroje), nahrajete soubory přes FTP na klasický sdílený webhosting, otevřete doménu a… vidííte buď čistě bílou obrazovku, nebo strohý výpis složek Index of /. 

VPS Centrum

Vyzkoušejte zdarma naši aplikaci pro správu serveru a domén. Budete si připadat jako zkušený administrátor.

Co se stalo?

AI nástroje totiž bez explicitního zadání vygenerují jen kód, který k životu nutně potřebuje neustále běžící serverové prostředí (tzv. Node.js proces). Řeč je o technologiích jako Next.js s SSR, Remix nebo Nuxt. Klasický sdílený webhosting je na ně krátký. Kombinace serveru Apache a PHP umí pouze servírovat statické soubory a spouštět PHP skripty. Nic víc.

Rychlá diagnostika – jaký stack vlastně máte?

Podívejte se do vygenerovaných souborů a zkontrolujte, na čem váš web stojí:

  • Máte jen index.html, style.css, script.js (Plain HTML) – stačí jakýkoliv běžný webhosting.
  • package.json + vite.config.* + složka src/ (Vite SPA) – stačí webhosting (nahráváte až hotovou složku po buildu).
  • package.json + next.config.* bez output: ‚export‘ (Next.js SSR) – potřebujete VPS s Node.js.
  • package.json + next.config.* s output: ‚export‘ (Next.js statický) – stačí webhosting (nahráváte čisté statické soubory).
  • package.json + astro.config.* s @astrojs/node (Astro SSR) – potřebujete VPS s Node.js.
  • package.json + astro.config.* s output: ‚static‘ (Astro statický) – stačí webhosting po buildu.
  • package.json + server.ts nebo server.js v rootu (Vlastní Node server) – potřebujete VPS.
  • Složka supabase/, @supabase/* v package.json (Frontend + Supabase backend) – záleží na frontendu, samotná databáze běží v cloudu.
  • Potřebujete n8n, OpenClaw nebo AI workflow bez vlastního kódu – tedy VPS s instalací na jeden klik.

Jak to spravit?

Pokud váš web vyžaduje SSR (Next.js, Remix, Nuxt): Zapomeňte na sdílený hosting a běžte rovnou do VPS s podporou Node.js. V našem VPS Centru dostanete aplikaci na server bleskově přes Git Deploy se staging prostředím, přičemž produkční build spustíte automaticky v post-deploy příkazu. SSL certifikát navíc panel vyřeší sám. Samotný Node.js proces pak na pozadí snadno udržíte v chodu pomocí nástrojů pm2 nebo systemd. Přesný návod na nasazení Next.js aplikací najdete v naší dokumentaci.

Pokud máte jednostránkovou aplikaci bez backendu (Vite + React, vanilla JS, Astro ve statickém módu): Spusťte lokálně sestavení produkční verze pomocí příkazu npm run build a na sdílený webhosting nahrajte pouze obsah nově vzniklé složky dist/ – nikdy tam nenahrávejte celý projekt i se zdrojovými kódy.

Pokud tápete, zkuste přepnout Next.js do statického módu: Upravte soubor next.config.js následovně:

JavaScript

module.exports = {

  output: 'export'

};

Pokud build na vašem počítači úspěšně projde a aplikace nevyužívá žádné serverové funkce, máte vyhráno. Výstup můžete bez obav nahrát na klasický hosting.

Jednoduché pravidlo, když vás technické detaily nezajímají: Má-li projekt jakoukoli vlastní backendovou logiku, potřebujete VPS. AI generátory si rády backend domýšlejí samy, takže odpověď na otázku „potřebuji VPS?“ bývá v éře AI vývoje téměř vždy ano.

Dva tipy pro bezpečný start:

  • Pozor na cenu cloudu: Projekty z Lovable a Bolt defaultně míří na cloudové stacky (Supabase + hostovaný frontend), kde se měsíční účet může snadno přehoupnout až přes tisícovku. Naše VPS startuje na 432 Kč měsíčně a máte pod absolutní kontrolou jak svá data, tak celé prostředí serveru.
  • Nepodceňujte staging prostředí: Git Deploy v našem VPS Centru plně podporuje testovací (staging) větev. Web nejdříve nasadíte na skrytou subdoménu, vše si v klidu naklikáte, a teprve až máte jistotu, přehodíte ho do ostré produkce. Pro vibe codované projekty, kde AI dokáže jedním řádkem přinést nečekané anomálie, je to naprostá nutnost.

Vyzkoušejte si naše VPS na 7 dní zdarma – Kompletně bez závazků a bez nutnosti zadávat platební kartu.

#3 SPA bez serverového fallbacku 404 po refreshi

Tento přešlap má až zákeřně plynulý průběh: web šlape jako hodinky, proklikávání sekcí funguje bez jediného zádrhelu a vy slavíte úspěch. Jenže pak někdo stránku aktualizuje kdekoli mimo domovskou doménu a prohlížeč nekompromisně vrátí chybovou hlášku 404 Not Found. Úplně stejný scénář nastane ve chvíli, kdy se kdokoli pokusí poslat přímý odkaz ve tvaru vasedomena.cz/o-nas svému známému.

Kde je zakopaný pes? 

Směrování (routing) jednostránkových aplikací (SPA) se odehrává výhradně uvnitř prohlížeče, nikoli na serveru. Když uživatel kliká na odkazy v menu, React Router (nebo Vue Router) pouze kosmeticky mění URL adresu pomocí JavaScriptu. Webový server o tomto pohybu nemá ani tušení. 

Jakmile ale uživatel stránku refreshne, prohlížeč se zachová standardně – pošle na server přímý požadavek na adresu /o-nas. A jelikož server v dané složce žádný fyzický soubor o-nas.html nenajde, logicky vrátí krutou pravdu v podobě kódu 404.

Řešení? Server musí pro neexistující soubory vrátit index.html

Pro Apache (sdílený webhosting) přidejte do rootu .htaccess:

RewriteEngine On

RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule . /index.html [L]

Na webhostingu Váš Hosting je mod_rewrite zapnutý defaultně, .htaccess bude fungovat bez dalšího nastavení.

Pro nginx (na VPS) do server bloku:

location / {

  try_files $uri $uri/ /index.html;

}

Bez tohoto kroku jakýkoli refresh nebo přímý odkaz znamená 404 a uživatel se k vám už nevrátí.

Expertní bonus: Na identický problém často narazíte u webů, kde AI bezmyšlenkovitě nasadí takzvaný hash routing (poznáte ho podle adresy ve tvaru /#/o-nas). Tento přístup sice potíž s refreshem elegantně obchází – protože vše, co se nachází za symbolem #, je pro server absolutně neviditelné, ale v moderním webdesignu jde o medvědí službu. 

Hash routing je totiž pro SEO naprosto nevhodný a vyhledávače jako Google ho indexují s obrovskou nevolí. Pokud chcete organickou návštěvnost a neprůstřelné SEO, držte se vždy „čistého“ history routingu a nezapomeňte na správně nakonfigurovaný serverový fallback.

Finální checklist před nasazením: Pět minut, které vám ušetří dny agonie

Než poprvé odmávnete spuštění projektu do světa, projděte si tento rychlý tahák. Berte ho jako předletovou kontrolu pilota:

  • git status v bezpečí: Žádné .env, žádné secrets.json, žádné natvrdo zapsané klíče – prověřte, že máte soubor .env spolehlivě zapsaný v .gitignore.
  • Čistý build: Příkaz npm run build projde na vašem počítači lokálně bez jediné chyby a na výstupu vyprodukuje validní složku dist/ nebo build/.
  • Typologie webu: Víte přesně, jaký typ aplikace vám pod rukama vznikl (statika, SSR, nebo full-stack)? Podle toho si vyberte správný typ hostingu.
  • Pravidlo fallbacku: Pokud hostujete jednostránkovou (SPA) aplikaci na klasickém sdíleném webhostingu, zkontrolujte, že máte v kořenovém adresáři nakonfigurovaný soubor .htaccess s funkčním přesměrováním.
  • Zabezpečení na klik: HTTPS běží na plné obrátky? U Váš Hosting je SSL certifikát Let’s Encrypt (včetně wildcard verzí) automatickou součástí každého tarifu.
  • Záchranná síť: Máte vyřešené zálohy? U Váš Hosting děláme automatické denní zálohy databází v základu. Když vám tedy AI v záchvatu kreativního kódu rozbije produkci, v klidu se vrátíte v čase.
  • Úniky dat zažehnány: Projeďte kód vyhledávačem a ověřte, že v něm nesvítí řetězce jako Bearer, sk- nebo pk_live mimo chráněné .env prostředí.

Vývoj webů s umělou inteligencí je jízda. Dokáže vám ušetřit stovky hodin nudného psaní kódu, ale otevírá dveře chybám, které dříve zkušení senioři hlídali automaticky. Nepodceňujte tedy přípravu prostředí.

Bonus: Tyto chyby fatálně poškozují vaši viditelnost ve vyhledávačích

Tři zmíněné přešlapy nejsou jen izolovaný technický problém. Každý z nich vám tvrdě sráží SEO – a v nastupující éře optimalizace pro AI vyhledávání (GEO) to platí dvojnásob.

  • Vystavené klíče: Můžou vést k okamžitému zablokování účtu u API poskytovatele. V horším případě k úplné likvidaci webu.
  • Nevhodný hosting: Výsledkem je bílá obrazovka. Roboti Googlu i AI vyhledávačů narazí na zeď a neindexují vůbec nic.
  • Chyba 404 po refreshi: Vyhledávací boti při přímém pokusu o vstup na podstránku narazí na chybu. Vaše sekce tak zmizí z výsledků vyhledávání, i když interní prolinkování zdánlivě funguje.

Proto jsme do VPS Centra nasadili pokročilou analytiku, která rozlišuje LLM boty, Google boty a organické návštěvníky. V grafech tak na první pohled odlišíte běžné návštěvníky od provozu, který generují ChatGPT, Claude, Perplexity, Gemini, Cohere, ByteSpider nebo Apple Intelligence. Hned víte, jestli vás AI vyhledávače skutečně procházejí. A pokud ne, máte jasný signál, že je čas zkontrolovat robots.txt a strukturu obsahu. Tohle vám žádný jiný český hosting neukáže.

VPS Centrum navíc nonstop hlídá dostupnost serveru a když se něco pokazí, okamžitě vám pošle e-mail. Když se vám tedy uprostřed noci sesype Node.js proces, dozvíte se to dřív než vaši zákazníci.

Chcete jít ještě dál a připravit projekt tak, aby vás AI sama doporučovala? Mrkněte na náš článek GEO místo SEO: co musí váš web umět, aby vás AI začala doporučovat.

Časté dotazy

Jak poznám, že je v mém AI-generovaném repu vystavený klíč?

Projděte kód a hledejte řetězce začínající sk-, pk_live, Bearer nebo prefixy NEXT_PUBLIC_ a VITE_ u proměnných, které vypadají jako tajné. Zkontrolujte i historii gitu: i smazaný commit klíč prozradí.

Funguje nasazení na sdílený hosting i pro Next.js?

Jen v režimu statického exportu (output: ‚export‘). S SSR a API routami potřebujete VPS s Node.js.

Co dělat, když se mi po nahrání zobrazí jen prázdná stránka?

V devíti z deseti případů jste nahráli zdrojový kód místo dist/ z buildu. Sestavte projekt (npm run build) a nahrajte výstupní složku.

Stačí pro SPA .htaccess na sdíleném hostingu, nebo potřebuji VPS?

.htaccess stačí. Sdílený hosting s Apache umí URL rewrite. Důležité je, aby měl mod_rewrite zapnutý (většina českých hostingů ano).

Můžu úniku klíče předejít už v AI generátoru?

Můžete promptem zdůraznit, že chcete API klíče řešit přes server-side endpoint a že žádný NEXT_PUBLIC_* ani VITE_* nesmí obsahovat tajemství. Na samotnou AI se ale nespoléhejte. Zkontrolovat to musíte sami.

Zůstaňte s námi v kontaktu

Jednou za měsíc posíláme souhrn novinek. Nemusíte se bát, spamovat vás nebudeme a odhlásit se můžete kdykoliv...

Karel Dytrych
Tým Váš Hosting
Vyzkoušejte náš trial na týden zdarma

Garance 14denní záruky vrácení peněz

Vyzkoušejte server na týden zdarma

Vyzkoušet server

Je váš web připravený na éru AI?

Stáhněte si praktický checklist

Jak přežít v éře GEO