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á
- Načte seznam běžících kontejnerů přes
docker ps. - V každém zkusí
node -v(inodejs,/usr/local/bin/node…). U distroless image bez shellu zkusí binárku/nodejs/bin/nodenapřímo. - 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 znodejs/Release. - Pro řadu kontejneru (např.
22) zjistí nejnovější verzi, jestli od té nainstalované vyšla bezpečnostní oprava, a datum konce podpory. - 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). - 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
| --all | Vypíše i kontejnery, ve kterých Node.js není. |
| --rebuild | U 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. |
| --yes | Rebuild bez potvrzení. Bez terminálu (cron) je povinné. |
| COOLIFY_TOKEN | Nepovinné. 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_22 | Ruč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 0 | Vše aktuální. |
| exit 1 | Něco je zastaralé, bez podpory nebo nejde ověřit — hodí se do cronu nebo monitoringu. |
| exit 2 | Na stroji není docker. |
Požadavky
- bash 4+,
docker,curl,awka přístup k Docker socketu - odchozí HTTPS na
nodejs.orgaraw.githubusercontent.com