bash · docker · coolify

node-check.sh

Projde všechny běžící Docker kontejnery na serveru, zjistí v nich verzi Node.js a porovná ji s nejnovějším vydáním dané řady na nodejs.org. Ukáže, kterým kontejnerům chybí bezpečnostní oprava a které běží na řadě po konci podpory.

Spuštění

Druhý příkaz vypíše i kontejnery bez Node.js. Spouštěj na serveru jako uživatel s přístupem k Dockeru (jinak přidej sudo před bash).

Rovnou spustit rebuild

Spouští se na serveru s Coolify jako root. Skript vypíše, které aplikace postaví, zeptá se a build zařadí přímo v Coolify (docker exec coolify php artisan tinker), bez API tokenu. Bez ptaní (cron) přidej --yes.

Stáhnout a spouštět lokálně

Nebo si skript nejdřív prohlédni — co pouštíš přes | bash, je dobré znát.

Co dělá

  1. Načte seznam běžících kontejnerů přes docker ps.
  2. V každém zkusí node -v (i nodejs, /usr/local/bin/node…). U distroless image bez shellu zkusí binárku /nodejs/bin/node napřímo.
  3. Jednou za běh stáhne seznam všech vydání z nodejs.org/dist/index.json. Ten u každého vydání říká, jestli šlo o bezpečnostní (security release). K tomu stáhne plán podpory jednotlivých řad z nodejs/Release.
  4. Pro řadu kontejneru (např. 22) zjistí nejnovější verzi, jestli od té nainstalované vyšla bezpečnostní oprava, a datum konce podpory.
  5. Místo technického jména kontejneru ukáže čitelný název aplikace z Coolify (bez UUID), u compose i název služby. Image postavené přímo Coolify označí jako (build).
  6. Vypíše tabulku seřazenou od problémů: ✗ chybí bezpečnostní oprava, ! řada po konci podpory, ↑ zastaralé (novější vydání bez bezpečnostních oprav), ✓ OK. Na konci je souhrn s počty.

Ukázka výstupu

  APLIKACE           NODE       NEJNOVĚJŠÍ  PODPORA DO      IMAGE
✗ frontend           22.23.3    22.23.4     2027-04-30      (build)
✗ n8n                24.20.0    24.22.1     2028-04-30      n8n:latest
! legacy-api         20.20.2    20.20.2     EOL 2026-04-30  node:20-alpine
↑ docs               26.11.1    26.12.1     2029-04-30      node:26-slim
✓ uptime-kuma        22.23.4    22.23.4     2027-04-30      uptime-kuma:2

2 bez bezpečnostní opravy, 1 bez podpory, 1 zastaralé, 1 OK

✗ Od nainstalované verze vyšlo bezpečnostní vydání (security release) — rebuild co nejdřív.
! Řada je po konci podpory, opravy už nevycházejí — rebuild nepomůže, je čas na upgrade na LTS.

Volby

--allVypíše i kontejnery, ve kterých Node.js není.
--rebuildU aplikací a služeb Coolify, kterým chybí bezpečnostní oprava nebo mají starší verzi, spustí force rebuild. Volá stejné funkce jako Coolify API, ale přímo přes tinker, takže token není potřeba. U služeb stáhne nové image. Každou aplikaci jen jednou, i když má víc kontejnerů. Řady po konci podpory nechá být, tam rebuild nepomůže. Pomůže jen u plovoucích tagů (node:22-alpine, :lts, :latest). U připnuté verze nebo nixpacks s pevnou verzí se postaví stejný Node.
--yesRebuild bez potvrzení. Bez terminálu (cron) je povinné.
COOLIFY_TOKENNepovinné. Když tinker selže (interní funkce se s updatem Coolify můžou změnit), skript zkusí Coolify API s tímto tokenem. COOLIFY_URL má výchozí hodnotu http://localhost:8000.
MIN_22Ruční minimální verze řady, např. MIN_22=22.23.4 ./node-check.sh podle security advisory. Cokoli pod ní se hlásí jako chybějící bezpečnostní oprava. Funguje pro každou řadu (MIN_24, MIN_26…).
exit 0Vše aktuální.
exit 1Něco je zastaralé, bez podpory nebo nejde ověřit — hodí se do cronu nebo monitoringu.
exit 2Na stroji není docker.

Požadavky