Indeks dnevnikaDockup / bilješka s terena
Note / self-host-gotenberg

Kako samostalno hostati Gotenberg 2026.: HTML-u-PDF, timeouti i fontovi

Implementirajte Gotenberg s ispravnim portom, trajnom pohranom, TLS-om, autentikacijom i sigurnosnim kopijama. Otklonite probleme kada zahtjevi u produkciji koriste pogrešno multipart polje.

Neuspjela implementacija Gotenberga ne mora uvijek dovesti do rušenja. Servis može posluživati login stranicu dok zahtjevi koriste pogrešno multipart polje ili konverzije premašuju proxy timeoute. Umjesto toga najprije provedite provjeru od početka do kraja: pošaljite HTML i assete kao multipart podatke, generirajte PDF, ponovite postupak s Office dokumentom i nakon svake konverzije provjerite health endpoint.

Ta provjera odgovara dokumentiranoj namjeni Gotenberga: HTTP servisu koji pretvara HTML, Markdown i Office datoteke u PDF. Također ranije otkriva nedostajuće dependencyje, pogrešne pretpostavke o proxyju i ephemeral podatke nego što to može učiniti uptime probe.

Portovi, procesi i privatni servisi

Nemojte dopustiti da Gotenberg image slučajno odredi produkcijsku arhitekturu. Image pokreće proces na portu 3000, no pohrana, routing i vanjski zahtjevi i dalje zahtijevaju pažljivo definirane lifecycleove. Lokalni runtime zahtjev podrazumijeva dovoljno CPU-a i memorije za Chromium i LibreOffice workere. Tu granicu testirajte prije izlaganja servisa, a zatim ponovno nakon zamjene containera.

Deployment je spreman za detaljnije testiranje kada može poslati HTML i assete kao multipart podatke, generirati PDF, ponoviti postupak s Office dokumentom i nakon svake konverzije provjeriti health endpoint. Pratite transakciju u logovima i nadzirite broj Chromium i LibreOffice procesa, privremeni disk, složenost dokumenata i proxy timeoute. Ta opažanja pokazuju izolira li trenutačna topologija odgovarajuću komponentu.

Učinite oporavak Gotenberga mjerljivim

Unutar standardnog Gotenberg imagea ne očekuje se writable application state. Nemojte čuvati trajne podatke aplikacije; umjesto backupiranja praznog container filesystema sačuvajte fontove, predloške i deployment konfiguraciju, uključujući pinani digest i provjerenu route konfiguraciju.

Izradite Gotenberg od nule na drugom hostu i provjerite mogu li se custom fontovi, predlošci i command flagovi reproducirati te generiraju li poznati dokumenti očekivani broj stranica. Ako dodate zasebnu bazu podataka, room server ili authentication layer, toj komponenti dodijelite vlastitog, jasno definiranog vlasnika oporavka. Vodič od Gita do produkcije pokazuje kako reproducibilan artifact zamjenjuje backup containera.

Uz release zabilježite rebuild naredbu i test očekivanog izlaza. Stateless plan oporavka uspješan je kada reproducira ponašanje iz pouzdanih ulaza; ne bi se trebao oslanjati na kopiranje neprozirnog containera koji je u radu.

Ograničite ovlasti koje ima Gotenberg

Vrijedna imovina u Gotenbergu jest code path koji obrađuje korisnički unos. Rizik specifičan za aplikaciju jest dopuštanje neograničenih javnih konverzija bez kontrola veličine i timeouta; u produkciji endpointi za konverziju trebaju ostati privatni ili prije prihvaćanja nepouzdanih datoteka primjenjivati kontrole veličine, ratea i timeouta.

Standardni container nema administratorsku tajnu, pa authentication pripada HTTPS ruti ako je servis privatan. Pinajte build, izbjegavajte široke filesystem mountove i ograničite broj Chromium i LibreOffice procesa, privremeni disk, složenost dokumenata i proxy timeoute. Poznatim testnim ulazom provjerite daje li posluživani build očekivani izlaz nakon svakog ažuriranja.

Gotenbergov release gate

Pretvorite Gotenberg smoke test u ponovljivu release naredbu ili kratki runbook. Njegov izlaz mora dokazati sljedeći rezultat: pošaljite HTML i assete kao multipart podatke, generirajte PDF, ponovite postupak s Office dokumentom i nakon svake konverzije provjerite health endpoint. Uz rezultat zabilježite verziju aplikacije, container digest, hostname rute i identifier testnih podataka.

Istu provjeru pokrenite nakon uobičajene zamjene containera i nakon vraćanja bez trajnih podataka aplikacije; fontove, predloške i deployment konfiguraciju zadržite drugdje. Restore je uspješan kada se custom fontovi, predlošci i command flagovi mogu reproducirati te poznati dokumenti generiraju s očekivanim brojem stranica. Usporedite trajanje i potrošnju povezane s brojem Chromium i LibreOffice procesa, privremenim diskom, složenošću dokumenata i proxy timeoutima; velika promjena zaslužuje istragu čak i kada završna radnja i dalje prolazi.

Zatim provedite siguran failure test: pošaljite bezopasan unos blizu ograničenja resursa ili formata povezanog s ovom granicom: zahtjevi koriste pogrešno multipart polje ili konverzije premašuju proxy timeoute. Potvrdite da Gotenberg prijavljuje grešku i vraća se u normalno stanje bez destruktivnih ručnih izmjena. Sačuvajte samo nužan, redigirani isječak loga. Ovaj gate u četiri dijela obuhvaća pokretanje, persistence, oporavak i obradu grešaka.

Učinite pokretanje Gotenberga reproducibilnim

Koristite naredbu koja izlaže svaki važan odabir. Ova baseline konfiguracija veže Gotenberg na loopback sučelje hosta, dodaje poznate data mountove i postavlja prvu potrebnu postavku. Prije izlaganja servisa potvrdite lokalni zahtjev: dovoljno CPU-a i memorije za Chromium i LibreOffice workere.

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

Zamijenite floating tagove testiranom verzijom ili digestom. Nakon pokretanja pregledajte docker logs --tail 200 gotenberg i potvrdite da proces sluša na portu 3000. Zatim izvršite Gotenberg acceptance radnju; odgovor root stranice ne može dokazati da cijeli scenarij uspijeva: pošaljite HTML i assete kao multipart podatke, generirajte PDF, ponovite postupak s Office dokumentom i nakon svake konverzije provjerite health endpoint.

Spriječite da uspjeh proxyja prikrije neuspjeh aplikacije

Odaberite konačni hostname Gotenberga prije nego što korisnici pohrane callbackove ili client postavke, a zatim API za konverziju izložite putem HTTPS-a ili privatne interne domene. Platformska ruta treba jednom terminirati TLS i usmjeriti promet na privatni port 3000.

Acceptance transakciju pokrenite izvana. Ako client nikada ne dođe do Gotenberga, za provjere DNS-a i certifikata koristite kontrolni popis za SSL validaciju. Ako zahtjev stigne do Gotenberga, ali koristi pogrešno multipart polje ili konverzije premašuju proxy timeoute, prestanite mijenjati proxy redirekcije i umjesto toga provjerite granicu specifičnu za aplikaciju.

Provjere kapaciteta i nadogradnje

Korisni indikator servisa za Gotenberg jest uspješan završetak radnje „pošaljite HTML i assete kao multipart podatke, generirajte PDF, ponovite postupak s Office dokumentom i nakon svake konverzije provjerite health endpoint”. Taj rezultat kombinirajte s brojem Chromium i LibreOffice procesa, privremenim diskom, složenošću dokumenata i proxy timeoutima; zelena root stranica ne govori ništa o kompatibilnosti izlaza ni iscrpljenju resursa.

Prije zamjene imagea uzmite u obzir sljedeći rizik: API rute, Chromium flagovi i ponašanje LibreOfficea mogu se promijeniti između glavnih verzija Gotenberga. Reprezentativne ulaze i granične slučajeve testirajte na obje verzije, a stari digest zadržite dok kandidat ne prođe testove. Ako zahtjevi koriste pogrešno multipart polje ili konverzije premašuju proxy timeoute, prije promjene postavki ruta ili pohrane provjerite format zahtjeva, ponašanje klijenta i runtime logove.

Gdje Dockup uklanja dio posla za Gotenberg

One-click Gotenberg predložak trebao bi sadržavati image digest, port 3000, health timing, domenu i TLS. Budući da je osnovni servis stateless, Dockup ga može izravno ponovno izraditi na Dockup computeu ili priključenom računalu, bez pretvaranja praznog volumea u backup.

Nakon pokretanja izložite API za konverziju putem HTTPS-a ili privatne interne domene. Dockup bi trebao sačuvati Gotenberg runtime postavke dok operator potvrđuje ovaj lokalni zahtjev: dovoljno CPU-a i memorije za Chromium i LibreOffice workere. Potvrdite ovaj rezultat: pošaljite HTML i assete kao multipart podatke, generirajte PDF, ponovite postupak s Office dokumentom i nakon svake konverzije provjerite health endpoint. Svako kasnije stateful proširenje mora definirati vlastiti mount, secret i restore test, umjesto da tiho mijenja značenje osnovnog predloška.

Često postavljana pitanja

Što je Gotenbergu potrebno za produkcijski deployment?

Gotenberg container usmjerite preko porta 3000 kroz jedan HTTPS origin. Lokalni runtime zahtjev podrazumijeva dovoljno CPU-a i memorije za Chromium i LibreOffice workere. Nemojte Gotenberg smatrati spremnim dok ne možete poslati HTML i assete kao multipart podatke, generirati PDF, ponoviti postupak s Office dokumentom i nakon svake konverzije provjeriti health endpoint.

Koji Gotenbergovi podaci pripadaju sigurnosnoj kopiji?

Standardni Gotenberg image nema obavezan mount za podatke aplikacije. Sačuvajte njegovu deployment konfiguraciju, a povezano stanje sigurnosno kopirajte zasebno; oporavak je uspješan kada se custom fontovi, predlošci i command flagovi mogu reproducirati te poznati dokumenti generiraju s očekivanim brojem stranica.

Zahtijeva li Gotenberg HTTPS iza reverse proxyja?

Za javni Gotenberg origin koristite HTTPS, a port 3000 zadržite na internoj ruti. Ispravno primijenite Gotenbergovu postavku: API za konverziju izložite putem HTTPS-a ili privatne interne domene. Za Gotenberg HTTPS štiti vjerodajnice ili korisnički sadržaj tijekom prijenosa i održava dosljedno ponašanje klijenta ovisno o originu.

Kako treba testirati nadogradnju Gotenberga?

Candidate Gotenberg image postavite uz trenutačni i ponovite acceptance transakciju s poznatim ulazom. Obratite posebnu pozornost jer se API rute, Chromium flagovi i ponašanje LibreOfficea mogu promijeniti između glavnih verzija Gotenberga. Standardni container nema migraciju podataka, stoga zadržite prethodni digest dok ne prođu provjere izlaza i kompatibilnosti.