Skip to content

Gotenberg PDF microservice

Popis

Gotenberg = headless Chromium kontejner pro HTML-to-PDF konverzi. Pulse ho volá přes Docker network.

Lokace

  • Hub: hub-alfa /opt/gotenberg/docker-compose.yml
  • Prod: prod-alfa /opt/gotenberg/docker-compose.yml
  • Kontejner: s60-gotenberg (gotenberg/gotenberg:8)
  • Port: 127.0.0.1:3050 → 3000 (interní)
  • Network: s60-network (sdílená s pulse)

Veřejné URL (Tailscale only)

  • Hub: https://pdf.s60hub.cz (nginx, allow 100.64.0.0/10)
  • Prod: https://pdf.studio60.cz (nginx, allow 100.64.0.0/10)
  • Z internetu: 403 Forbidden

Pulse integrace

  • GOTENBERG_URL=http://s60-gotenberg:3000 v pulse .env (Docker network)
  • Fallback: lokální Puppeteer (pokud GOTENBERG_URL není nastaveno)
  • Až se Gotenberg přesune na jiný server → změnit na https://pdf.s60hub.cz / https://pdf.studio60.cz

Správa

# Start/restart
ssh root@<server> "cd /opt/gotenberg && docker compose up -d"

# Health check
ssh root@<server> "curl -s http://127.0.0.1:3050/health"

# Logs
ssh root@<server> "docker logs s60-gotenberg --tail 50"

# Update image
ssh root@<server> "cd /opt/gotenberg && docker compose pull && docker compose up -d"

Test z Tailscale

curl --resolve pdf.s60hub.cz:443:100.68.138.14 https://pdf.s60hub.cz/health
curl --resolve pdf.studio60.cz:443:100.78.87.88 https://pdf.studio60.cz/health

Konfigurace

  • GOTENBERG_API_TIMEOUT=60s
  • GOTENBERG_CHROMIUM_MAX_QUEUE_SIZE=20
  • security_opt: seccomp=unconfined (nutné pro Chromium)