502 Recovery - Invalid sidebar_position in cd.mdx
This incident report documents a new brain.id86.net 502 case where Docusaurus failed to start because of invalid frontmatter in one doc file.
Incident Summary
- Symptom:
brain.id86.netintermittently returned502 Bad Gateway. - Tunnel behavior: Cloudflare tunnel logs showed origin failures (
connect: connection refusedand laterlookup docusaurus ... no such hostduring restart windows). - Container behavior:
docusaurusrepeatedly restarted.
Root Cause Confirmed
Build logs showed a hard validation failure in one doc:
- File:
/app/docs/server/linux-server/02-Navigation-and-Filesystem/Listing/cd.mdx - Invalid frontmatter:
sidebar_position:
Docusaurus parsed this as null and aborted build with:
"sidebar_position" must be a number
Because startup runs docusaurus build && docusaurus serve, the app never reached serve, which kept the origin unavailable and caused 502.
Recovery Applied
Updated file on origin bind mount:
/opt/docker-data/apps/docusaurus/site/docs/server/linux-server/02-Navigation-and-Filesystem/Listing/cd.mdx
Change:
sidebar_position: 3
Then restarted container and observed successful compile and serve.
Validation
docusauruslogs showed:Generated static files in "build".Serving "build" directory at: http://0.0.0.0:3000/
docker psshowed stableUpstate (no restart loop).curl -I https://brain.id86.netreturned Cloudflare Access302redirect (expected protected route), not502.- No new
brain.id86.nettunnel origin errors after service stabilized.
Commands Used
# check public status
curl -I -m 20 https://brain.id86.net
# container status
sudo docker ps --format 'table {{.Names}}\t{{.Status}}\t{{.Ports}}'
# inspect origin/tunnel errors
sudo docker logs --tail 120 docusaurus
sudo docker logs --tail 120 cloudflared
# restart and monitor
sudo docker restart docusaurus
sudo docker logs --since 2m -f docusaurus
Prevention Notes
- Add MDX/frontmatter preflight before restart (
npm run buildin CI or pre-deploy script). - Keep startup flow resilient so existing build can still be served while new build is validating.
- Add a checklist rule: reject empty numeric frontmatter fields such as
sidebar_position:.