Error Pages
Friendly error pages instead of a bare 502.
In short
Error Pages serves a clear page for every common HTTP error behind your reverse proxy, plus a maintenance page you switch on and off while it runs. Five themes, four languages with automatic detection. No external requests, no cookies, no tracking.
- Who is it for?
- Anyone who runs websites or services behind a reverse proxy and wants to show visitors better error pages.
- Runs on
- DockerTraefikingress-nginxReverse proxy
- What does it cost?
- Nothing. The source is open, under the MIT license.
What it’s about
A backend goes down and your visitors see a bare line of text. Or no route matches and they get a default page nobody understands. It is not the end of the world, but it feels careless.
Error Pages is a small container that serves a clear page for every common error behind your reverse proxy. In your visitors’ language, with no setup and no data sent to third parties. On top of that there is a maintenance page you switch on while you work on something.
What it does
Pages
- Pages for 400 to 505, plus a generic page for any other 4xx or 5xx code.
- Five themes:
glass,terminal,classic,statusandclean. A random one on every load, if you like. - German, English, Polish and French, detected automatically and switchable on the page.
- Your own footer links and copyright, optionally with time, host and request ID.
- API clients get JSON or plain text instead of HTML.
Maintenance
- Switch the maintenance page on and off while it runs.
- Optionally with an end time. Visitors see when you expect to be back, and a
Retry-Afterheader is sent.
Privacy and accessibility
- No external requests, no cookies, no tracking.
- Every page is self-contained and arrives in a single request.
- Works without JavaScript, from 320 px wide, and respects reduced motion.
- A very small image that runs read-only and as a non-root user.
Getting started
To try it:
docker run -p 8080:8080 noixdev/error-pages
Then open, for example, http://localhost:8080/502.html. How to put Error Pages behind Traefik or another reverse proxy, and every option, is in the documentation. New themes and translations are welcome on GitHub.
Error Pages compared
We like the other tools too. Here they are, side by side and honest.
| Error Pages | tarampampam/error-pages | nginx default pages | Traefik without an error page service | |
|---|---|---|---|---|
| Designed pages for the common error codes | ✓yes | ✓yes | –no | –no |
| Choice of designs | 5 themes | 11 templates | –no | –no |
| Multilingual | 4 languages, detected automatically | 15+ languages | –no | –no |
| Maintenance page you switch at runtime | ✓yes | –no | only with your own config | only with your own config |
| Works without an extra container | –no | –no | ✓yes | ✓yes |
As of November 2026. No guarantee of accuracy; corrections welcome as an issue.
When something else fits better
Not every tool fits every job. In these cases we'd point you somewhere else ourselves:
When you need more templates or languages, or want to serve errors as XML too.
When error pages do not matter to you and you do not want to run another container.
Frequently asked questions
How do I get custom error pages in Traefik?
Run Error Pages as a container and attach Traefik's errors middleware to your routers. A low-priority catch-all router also shows the 404 page for anything nothing else matches.
Is Error Pages an alternative to tarampampam/error-pages?
Yes, both do the same basic job. Error Pages has fewer templates but comes with a maintenance page you switch while it runs.
How do I turn on the maintenance page?
With docker exec error-pages /error-pages maintenance on, optionally with --until and a time. While it is on, every 5xx page is replaced by the maintenance page.
Does the page load external fonts or scripts?
No. Styles, fonts and scripts travel inside the page. It arrives complete in a single request, even when everything behind it is down.
Which languages are there?
German, English, Polish and French. The language comes from the browser, from ?lang= or from the visitor's saved choice.
Does it work with ingress-nginx?
Yes. Proxies that pass the status in an X-Code header, such as the ingress-nginx custom error backend, are supported.
Something broken, or missing?
An issue in the repository is the quickest way. For wishes and questions too.
Open an issueRather ask directly?
Our Discord is where we help out, and so do other people who use the tool.
Join the DiscordFrom the logbook
- New project
New: Error Pages, self-hosted error pages
Friendly, fast error pages for your websites and services. With five themes, four languages and a maintenance page you can switch on and off.