Index denníkaDockup / poznámka z terénu
Note / self-host-gotenberg

Ako hostovať Gotenberg vo vlastnej réžii v roku 2026: HTML do PDF, timeouty a fonty

Nasadenie Gotenberg so správnym portom, trvalým úložiskom, TLS, autentifikáciou a zálohami. Riešenie problémov, keď požiadavky v produkcii používajú nesprávne multipart pole.

Neúspešné nasadenie Gotenberg nemusí vždy skončiť pádom. Služba môže zobrazovať prihlasovaciu stránku, zatiaľ čo požiadavky používajú nesprávne multipart pole, alebo konverzie prekračujú timeouty proxy. Namiesto toho začnite end-to-end kontrolou: odošlite HTML a assety ako multipart dáta, vygenerujte PDF, zopakujte to s dokumentom Office a po každej konverzii skontrolujte health endpoint.

Táto kontrola zodpovedá deklarovanému účelu Gotenberg: ide o HTTP službu, ktorá konvertuje HTML, Markdown a súbory Office do PDF. Zároveň odhalí chýbajúce závislosti, nesprávne predpoklady o proxy a efemérne dáta skôr než probe dostupnosti.

Porty, procesy a privátne služby

Nenechajte image Gotenberg náhodou určovať produkčnú architektúru. Image poskytuje proces na porte 3000, no úložisko, routing a externé požiadavky si stále vyžadujú premyslené životné cykly. Lokálnou runtime požiadavkou je dostatočná rezerva CPU a pamäte pre workery Chromium a LibreOffice. Túto hranicu otestujte pred vystavením služby a znova po nahradení kontajnera.

Nasadenie je pripravené na podrobnejšie testovanie, keď dokáže odoslať HTML a assety ako multipart dáta, vygenerovať PDF, zopakovať to s dokumentom Office a po každej konverzii skontrolovať health endpoint. Sledujte transakciu v logoch a monitorujte počet procesov Chromium a LibreOffice, dočasné miesto na disku, komplexnosť dokumentov a timeouty proxy. Tieto pozorovania ukážu, či aktuálna topológia izoluje správny komponent.

Zabezpečte merateľnosť obnovy Gotenberg

V štandardnom image Gotenberg sa neočakáva zapisovateľný aplikačný stav. Neuchovávajte trvalé aplikačné dáta; namiesto zálohovania prázdneho súborového systému kontajnera uchovávajte fonty, šablóny a konfiguráciu nasadenia vrátane pripnutého digestu a skontrolovanej konfigurácie routingu.

Vytvorte Gotenberg od začiatku na inom hoste a overte, že vlastné fonty, šablóny a command flagy je možné reprodukovať a že známe dokumenty sa vykreslia s očakávaným počtom strán. Ak pridáte samostatnú databázu, room server alebo autentifikačnú vrstvu, priraďte tomuto komponentu vlastného explicitného vlastníka obnovy. Príručka od Git repozitára po produkčné nasadenie ukazuje, ako reprodukovateľný artefakt nahrádza zálohu kontajnera.

Príkaz na rebuild a test so známym výstupom zaznamenajte spolu s release. Stateless plán obnovy je úspešný vtedy, keď reprodukuje správanie z dôveryhodných vstupov; nemal by závisieť od kopírovania nepriehľadného bežiaceho kontajnera.

Obmedzte oprávnenia Gotenberg

Najcennejším aktívom v Gotenberg je code path, ktorý spracúva vstup používateľa. Rizikom špecifickým pre aplikáciu je povolenie neobmedzených verejných konverzií bez limitov veľkosti a timeoutov; v produkcii by konverzné endpointy mali zostať privátne alebo by sa pred povolením nedôveryhodných súborov mali vynútiť limity veľkosti, rate limitingu a timeoutov.

Štandardný kontajner nemá administrátorské tajomstvo, takže autentifikácia patrí na HTTPS route, ak je služba privátna. Pripnite build, vyhnite sa širokým mountom súborového systému a obmedzte počet procesov Chromium a LibreOffice, dočasné miesto na disku, komplexnosť dokumentov a timeouty proxy. Pomocou známeho testovacieho vstupu overte, že obsluhovaný build po každej aktualizácii vytvára očakávaný výstup.

Release gate pre Gotenberg

Premeňte smoke test Gotenberg na opakovateľný release príkaz alebo krátky runbook. Jeho výstup musí preukázať tento výsledok: odošlite HTML a assety ako multipart dáta, vygenerujte PDF, zopakujte to s dokumentom Office a po každej konverzii skontrolujte health endpoint. Spolu s výsledkom zaznamenajte verziu aplikácie, digest kontajnera, hostname route a identifikátor testovacích dát.

Rovnakú kontrolu spustite po bežnej výmene kontajnera a po obnove bez trvalých aplikačných dát; fonty, šablóny a konfiguráciu nasadenia uchovávajte inde. Obnova bola úspešná, keď je možné reprodukovať vlastné fonty, šablóny a command flagy a keď sa známe dokumenty vykreslia s očakávaným počtom strán. Porovnajte časovanie a spotrebu súvisiacu s počtom procesov Chromium a LibreOffice, dočasným miestom na disku, komplexnosťou dokumentov a timeoutmi proxy; výrazná zmena si zaslúži preverenie, aj keď finálna akcia stále prejde.

Následne vykonajte bezpečné zlyhanie: odošlite neškodný vstup blízko limitu zdrojov alebo formátu súvisiaceho s touto hranicou: požiadavky používajú nesprávne multipart pole alebo konverzie prekračujú timeouty proxy. Overte, že Gotenberg chybu správne signalizuje a bez deštruktívnych manuálnych úprav sa vráti do normálneho stavu. Uchovajte iba nevyhnutný, redigovaný výpis z logu. Tento štvorčlenný gate pokrýva štart, persistenciu, obnovu a spracovanie zlyhaní.

Zabezpečte reprodukovateľný štart Gotenberg

Použite príkaz, ktorý explicitne uvádza každú dôležitú voľbu. Tento základný variant viaže Gotenberg na loopback hostiteľa, pridáva známe dátové mounty a poskytuje prvé požadované nastavenie. Pred vystavením služby potvrďte lokálnu požiadavku: dostatočnú rezervu CPU a pamäte pre workery Chromium a LibreOffice.

docker run -d \
  --name gotenberg \
  --restart unless-stopped \
  -p 127.0.0.1:3000:3000 \
  gotenberg/gotenberg:8

Plávajúce tagy nahraďte otestovanou verziou alebo digestom. Po štarte skontrolujte docker logs --tail 200 gotenberg a potvrďte, že proces počúva na porte 3000. Potom vykonajte akciu akceptačného testu Gotenberg; odpoveď na root stránke nedokazuje, že celý scenár funguje: odošlite HTML a assety ako multipart dáta, vygenerujte PDF, zopakujte to s dokumentom Office a po každej konverzii skontrolujte health endpoint.

Zabráňte tomu, aby úspech proxy maskoval zlyhanie aplikácie

Finálny hostname Gotenberg vyberte ešte predtým, ako používatelia uložia callbacky alebo nastavenia klienta, a potom konverzné API vystavte cez HTTPS alebo privátnu internú doménu. Platform route by mala ukončiť TLS raz a smerovať na privátny port 3000.

Akceptačnú transakciu spustite externe. Ak sa klient nikdy nedostane ku Gotenberg, použite checklist validácie SSL na kontrolu DNS a certifikátu. Ak požiadavka dorazí ku Gotenberg, ale používa nesprávne multipart pole alebo konverzie prekračujú timeouty proxy, prestaňte meniť proxy redirecty a skontrolujte hranicu špecifickú pre aplikáciu.

Kontroly kapacity a aktualizácie

Užitočným indikátorom služby Gotenberg je úspešné dokončenie akcie „odoslať HTML a assety ako multipart dáta, vygenerovať PDF, zopakovať to s dokumentom Office a po každej konverzii skontrolovať health endpoint“. Tento výsledok skombinujte s počtom procesov Chromium a LibreOffice, dočasným miestom na disku, komplexnosťou dokumentov a timeoutmi proxy; zelená root stránka nič nehovorí o kompatibilite výstupu ani vyčerpaní zdrojov.

Pred nahradením image zohľadnite toto riziko: API routes, flagy Chromium a správanie LibreOffice sa môžu medzi hlavnými verziami Gotenberg zmeniť. Reprezentatívne aj hraničné vstupy otestujte proti obom verziám a starý digest si ponechajte, kým kandidát neprejde testami. Ak požiadavky používajú nesprávne multipart pole alebo konverzie prekračujú timeouty proxy, pred zmenou nastavení route alebo úložiska skontrolujte formát požiadavky, správanie klienta a runtime logy.

Ako Dockup zjednodušuje prácu s Gotenberg

Jednokliková šablóna Gotenberg by mala obsahovať digest image, port 3000, časovanie health kontroly, doménu a TLS. Keďže základná služba je stateless, Dockup ju môže priamo znovu vytvoriť na výpočtovej infraštruktúre Dockup alebo na pripojenom stroji bez predstierania, že prázdny volume je záloha.

Po spustení vystavte konverzné API cez HTTPS alebo privátnu internú doménu. Dockup by mal zachovať runtime nastavenia Gotenberg, zatiaľ čo operátor overí túto lokálnu požiadavku: dostatočnú rezervu CPU a pamäte pre workery Chromium a LibreOffice. Overte tento výsledok: odošlite HTML a assety ako multipart dáta, vygenerujte PDF, zopakujte to s dokumentom Office a po každej konverzii skontrolujte health endpoint. Každé neskoršie rozšírenie so stavom musí deklarovať vlastný mount, secret a test obnovy namiesto tichej zmeny významu základnej šablóny.

Často kladené otázky

Čo Gotenberg potrebuje na produkčné nasadenie?

Smerujte kontajner Gotenberg na porte 3000 cez jeden HTTPS origin. Lokálnou runtime požiadavkou je dostatočná rezerva CPU a pamäte pre workery Chromium a LibreOffice. Gotenberg neoznačujte za pripravený, kým nedokážete odoslať HTML a assety ako multipart dáta, vygenerovať PDF, zopakovať to s dokumentom Office a po každej konverzii skontrolovať health endpoint.

Ktoré dáta Gotenberg patria do zálohy?

Štandardný image Gotenberg nemá povinný mount s aplikačnými dátami. Uchovávajte jeho konfiguráciu nasadenia a všetok pripojený stav zálohujte samostatne; obnova je úspešná, keď je možné reprodukovať vlastné fonty, šablóny a command flagy a keď sa známe dokumenty vykreslia s očakávaným počtom strán.

Vyžaduje Gotenberg HTTPS za reverse proxy?

Pre verejný origin Gotenberg použite HTTPS a port 3000 ponechajte na internej route. Nastavenie Gotenberg aplikujte správne: konverzné API vystavte cez HTTPS alebo privátnu internú doménu. V prípade Gotenberg HTTPS chráni prihlasovacie údaje alebo obsah používateľov pri prenose a zachováva konzistentné správanie klienta závislé od originu.

Ako testovať aktualizáciu Gotenberg?

Kandidátny image Gotenberg nasaďte vedľa aktuálneho a zopakujte akceptačnú transakciu so známym vstupom. Venujte mimoriadnu pozornosť tomu, že API routes, flagy Chromium a správanie LibreOffice sa môžu medzi hlavnými verziami Gotenberg zmeniť. Štandardný kontajner nemá migráciu dát, preto si ponechajte predchádzajúci digest, kým neprejdú kontroly výstupu a kompatibility.