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:3000v 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=60sGOTENBERG_CHROMIUM_MAX_QUEUE_SIZE=20security_opt: seccomp=unconfined(nutné pro Chromium)