Overview
Upgrade from Node.js 18 LTS to Node.js 20 LTS for extended support and improved performance.
Current State
Proposed Change
- Target version: Node.js 20 LTS
- Support until: April 2027 (2+ years)
- Status: Active LTS (most stable)
Benefits
Extended Support
- Node 18: April 2026 (1.5 years)
- Node 20: April 2027 (2+ years)
- +12 months additional security patches and updates
Performance
- V8 engine: 10.1 → 11.3
- ~10-15% performance improvement
- Better ARM64 optimizations for Raspberry Pi 5
Security
- Latest OpenSSL 3.0.x patches
- Newer V8 security fixes
- Active LTS receives priority updates
Risks
Breaking Changes (Low Impact)
- V8 11.3 engine changes (minor)
- DNS resolution behavior (same as 18 → test needed)
- OpenSSL 3.0.x minor version (compatible)
Codebase Assessment
✅ Zero runtime dependencies
✅ Simple ES module usage
✅ No direct crypto/TLS usage
✅ Standard library only (fetch, dns, express)
✅ ARM64 Docker images available
Risk level: 🟢 Low (incremental from Node 18)
Testing Plan
Phase 1: Local Testing
# Change Dockerfile
FROM node:20
# Run tests
npm test
# Verify all 50 tests pass
Phase 2: Docker Build
docker build -t adsb2dd:node20-test .
docker run -p 49155:80 adsb2dd:node20-test
# Test API endpoint
curl "http://localhost:49155/api/dd?server=https://api.adsb.lol&rx=-35,138.7,50&tx=-35,138.6,50&fc=204.64"
Phase 3: Raspberry Pi 5 Deployment
cd /opt/adsb2dd
git pull
docker compose down
docker compose build
docker compose up -d
# Monitor for 24-48 hours
docker logs -f adsb2dd
Focus Areas
- ✅ All unit tests pass
- ⚠️ DNS resolution (SSRF protection working)
- ⚠️ HTTPS fetch to adsb.lol and tar1090
- ⚠️ ARM64 performance
- ⚠️ Memory usage patterns
Implementation
Simple Change
# Dockerfile
- FROM node:18
+ FROM node:20
That's it! No code changes needed.
Rollback Plan
# Quick revert if issues arise
git revert HEAD
git push
docker compose build && docker compose up -d
Recommendation
Proceed: The incremental risk from Node 18 → 20 is minimal, and the extended support window is valuable.
References
Related
Overview
Upgrade from Node.js 18 LTS to Node.js 20 LTS for extended support and improved performance.
Current State
Proposed Change
Benefits
Extended Support
Performance
Security
Risks
Breaking Changes (Low Impact)
Codebase Assessment
✅ Zero runtime dependencies
✅ Simple ES module usage
✅ No direct crypto/TLS usage
✅ Standard library only (fetch, dns, express)
✅ ARM64 Docker images available
Risk level: 🟢 Low (incremental from Node 18)
Testing Plan
Phase 1: Local Testing
Phase 2: Docker Build
Phase 3: Raspberry Pi 5 Deployment
Focus Areas
Implementation
Simple Change
That's it! No code changes needed.
Rollback Plan
Recommendation
Proceed: The incremental risk from Node 18 → 20 is minimal, and the extended support window is valuable.
References
Related