Saját Prerender szerver Dockerben: prerender-alpine
A keresőmotorok és a linkelőnézetek gyakran üres oldalt látnak, ha egy oldal JavaScripttel renderelődik. A Prerender ezt úgy oldja meg, hogy headless Chromiumban rendereli az oldalt, és a botoknak a kész HTML-t adja. Ezzel a konténerrel saját magad futtathatod, csak környezeti változókkal konfigurálva.
Ez a tvanro/prerender-alpine forkja. Jelenleg Prerender 5.21.6, Chromium 142, Node 22 és Alpine 3.22 van benne.
Mit ad hozzá a fork?
- Konfiguráció környezeti változókkal: basic auth, domain engedély- és tiltólista, Chrome kapcsolók, proxy és a böngésző időnkénti újraindítása. Nem kell saját
server.js. - Biztonságos plugin sorrend: a hozzáférés-ellenőrzés a cache előtt fut, így gyorsítótárazott oldalt sem kap meg az a kliens, akit egyébként elutasítana.
/healthvégpont és DockerHEALTHCHECK, így a Docker és a Portainer mutatja, hogy a konténer egészséges-e.- Szabályos leállás
SIGTERMjelre (docker stop, Kubernetes). - Reprodukálható buildek commitolt lockfile-lal, rögzített Node és Alpine verziókkal.
- Módosítás nélkül működő docker-compose fájl, Portainerhez is.
Gyors kezdés
Ehhez a forkhoz nincs publikált image, ezért forrásból kell buildelni:
git clone https://github.com/Silureth/prerender-alpine.git
cd prerender-alpine
cp .env.example .env # állítsd be az ALLOWED_DOMAINS-t stb.
docker compose up -d --build
A Prerender ezután a 127.0.0.1:3000 címen figyel, így csak az ugyanazon a gépen futó reverse proxy éri el:
curl http://127.0.0.1:3000/health
curl 'http://127.0.0.1:3000/render?url=https://www.example.com/'
Portainerben adj hozzá egy stacket a repóból (https://github.com/Silureth/prerender-alpine, compose útvonal: docker-compose.yml), és állítsd be a szükséges környezeti változókat.
Leggyakoribb beállítások
| Változó | Mit csinál? |
|---|---|
ALLOWED_DOMAINS | Vesszővel elválasztott hostnevek. Minden más domain 404-et kap. |
BASIC_AUTH_USERNAME / _PASSWORD | Ha mindkettő meg van adva, bekapcsolja a basic auth-ot. |
BROWSER_FORCE_RESTART_PERIOD | Ennyi ms után újraindítja a Chromiumot, terhelés alatt is. Hosszan futó példányokhoz a 3600000 jó érték. |
BLOCK_RESOURCES | Kihagyja a képeket, betűtípusokat és analitikát a gyorsabb renderelésért. |
PAGE_LOAD_TIMEOUT | Maximális renderelési idő ms-ban (alapértelmezés: 20000). |
A README minden változót felsorol (angolul).
Gyorsítótárazás
Az ajánlott gyorsítótár az nginx proxy_cache a konténer előtt. Lemezre menti az oldalakat, túléli az újraindítást, és egy oldalt csak egyszer renderel, ha egyszerre több bot kéri. A README-ben van egy teljes nginx konfiguráció, egy titkos fejléccel egyes oldalak frissítéséhez.