PrPlanIT/fairer-pages

Self-hosted error-page service that serves styled HTTP error pages per domain, shipping 64 themes and playlists that rotate between them, with low-code customisation so pages can be edited without touching the stack.

HTML

1

198 commits

updated Sep 15, 2026

See the code

See what people are saying

SourceMessageScoreDate

Fairer Pages — 60+ custom error pages for your self-hosted services, you can add your own themes and assign specific error page(s) as playlists for specific apps. (r/selfhosted)

I originally built Fairer Pages because I thought it would be neat to serve custom error pages, and also was curious if I could serve them more dynamically for fun. I've been running it for a while now and figured others might enjoy it — or get a kick out of it — in their own setups, with their own…

0

Sep 24, 2026

README

BANNER

Fairer Pages

A comprehensive error pages as a service workflow. Fairer Pages is open-source, ships with 64 themes, and it also has the ability to serve fairer-pages as playlists. You will have fine grain control over your fairer-pages for each and every domain. The design is low-code so it is easier for you to understand and add your flare! Let us see your custom fairer-pages!!!

GitHub GitLab license Open Issues Open PRs Contributors donate sponsor

release build Last Commit StageFreight

GHCR Docker pulls Harbor

latest updated size latest-dev updated size

Image contents

Base:

alpine 3.23.5

Packages:

gettext nginx py3-yaml python3

Features:

Fairer-Pages as a ServiceFairer-pages is deployable via docker and kubernetes, allowing you to deploy it in minutes and it is simple to add your own flair
ThemesAt the time of writing there are 64 Unique Themes, some sourced from other authors and tweaked/generated with AI.
Fairer-Code PersonalityThemes change context based on the error code encountered and configuration is simple so you can tweak everything to satisfaction. (Fairer Pages supports all codes from 4xx-5xx.)
PlaylistsPlaylists are collections of themes. Group themes by mood, purpose, or audience to curate error pages for every domain you control.
Hardened ContainerRuns non-root (UID 10000), read-only root filesystem, all capabilities dropped, no privilege escalation. Safe to put in front of your services.
Self-Contained DocumentationFairer Pages ships with a copy of the relevant documentation served within the container for convenience.

Documentation:

ThemesOverview / Gallery
PlaylistsGuide
DockerInstall Guide
KubernetesInstall Guide
NginxIntegration

Installation

docker run -d --name fairer-pages --restart always -p 8023:8080 prplanit/fairer-pages:latest

This project is near 100% HTML & JS, it should not be dependent on Docker/K8s, let alone NGINX. Feel free to explore this.

Usage

Error pages are served at /fairer-pages/ on the container (port 8080).

URL PatternDescription
/fairer-pages/<theme>/<code>.htmlSpecific theme
/fairer-pages/random/<code>.htmlRandom theme each time
/fairer-pages/playlist/<name>/<code>.htmlRandom from a named playlist

Examples:

URLResult
localhost:8023/fairer-pages/back2thefuture/404.htmlBack to the Future 404
example.com/fairer-pages/playlist/work/502.htmlRandom work-appropriate 502
example.com/fairer-pages/random/404.htmlRandom theme 404

Contributing

  • File issues with steps, logs, and versions.
  • Small, focused PRs are best (typos, fairer handling, UI polish).
  • Theme contributions are welcome!
  • Security-related PRs and hardening suggestions are especially appreciated if you notice anything that can be improved.

Disclaimer

The Software provided hereunder ("Software") is licensed "as-is," without warranties of any kind—express, implied, or whispered by mystical wisps. The Softwarer (yes, that's totally a word now) makes no promises about functionality, performance, compatibility, security, or availability—and absolutely no warranty of any sort. The developer shall not be held responsible, even if the software is clearly the reason your 404 page became more entertaining than your actual content, your users spent three hours clicking through every theme instead of buying anything, or your error pages gained sentience and started redirecting to Rick Astley videos.

If using this error page collection leads you down a rabbit hole of obsessive theme customization, breaks your carefully crafted nginx configs, or causes an uprising among your regex location blocks—sorry, still not liable. Also not liable if your random theme selector becomes so addictive it crashes your analytics or if your resource paths multiply like lightning bolts in a DeLorean. The developer likewise claims no credit for anything that actually goes right either. Any positive experiences are owed entirely to the unstoppable force that is the Open Source community.

Just don't blame me when your creative ways to cause errors in your environment for "testing" purposes inevitably backfires.

License

Distributed under the AGPL-3.0-only License. See LICENSING.md for commercial licensing.

docker
error-pages
self-hosted
themes
web

Contributors

SoFMeRight

198 commits

PrPlanIT/fairer-pages

Self-hosted error-page service that serves styled HTTP error pages per domain, shipping 64 themes and playlists that rotate between them, with low-code customisation so pages can be edited without touching the stack.

HTML

1

198 commits

updated Sep 15, 2026

See the code

See what people are saying

SourceMessageScoreDate

Fairer Pages — 60+ custom error pages for your self-hosted services, you can add your own themes and assign specific error page(s) as playlists for specific apps. (r/selfhosted)

I originally built Fairer Pages because I thought it would be neat to serve custom error pages, and also was curious if I could serve them more dynamically for fun. I've been running it for a while now and figured others might enjoy it — or get a kick out of it — in their own setups, with their own…

0

Sep 24, 2026

README

BANNER

Fairer Pages

A comprehensive error pages as a service workflow. Fairer Pages is open-source, ships with 64 themes, and it also has the ability to serve fairer-pages as playlists. You will have fine grain control over your fairer-pages for each and every domain. The design is low-code so it is easier for you to understand and add your flare! Let us see your custom fairer-pages!!!

GitHub GitLab license Open Issues Open PRs Contributors donate sponsor

release build Last Commit StageFreight

GHCR Docker pulls Harbor

latest updated size latest-dev updated size

Image contents

Base:

alpine 3.23.5

Packages:

gettext nginx py3-yaml python3

Features:

Fairer-Pages as a ServiceFairer-pages is deployable via docker and kubernetes, allowing you to deploy it in minutes and it is simple to add your own flair
ThemesAt the time of writing there are 64 Unique Themes, some sourced from other authors and tweaked/generated with AI.
Fairer-Code PersonalityThemes change context based on the error code encountered and configuration is simple so you can tweak everything to satisfaction. (Fairer Pages supports all codes from 4xx-5xx.)
PlaylistsPlaylists are collections of themes. Group themes by mood, purpose, or audience to curate error pages for every domain you control.
Hardened ContainerRuns non-root (UID 10000), read-only root filesystem, all capabilities dropped, no privilege escalation. Safe to put in front of your services.
Self-Contained DocumentationFairer Pages ships with a copy of the relevant documentation served within the container for convenience.

Documentation:

ThemesOverview / Gallery
PlaylistsGuide
DockerInstall Guide
KubernetesInstall Guide
NginxIntegration

Installation

docker run -d --name fairer-pages --restart always -p 8023:8080 prplanit/fairer-pages:latest

This project is near 100% HTML & JS, it should not be dependent on Docker/K8s, let alone NGINX. Feel free to explore this.

Usage

Error pages are served at /fairer-pages/ on the container (port 8080).

URL PatternDescription
/fairer-pages/<theme>/<code>.htmlSpecific theme
/fairer-pages/random/<code>.htmlRandom theme each time
/fairer-pages/playlist/<name>/<code>.htmlRandom from a named playlist

Examples:

URLResult
localhost:8023/fairer-pages/back2thefuture/404.htmlBack to the Future 404
example.com/fairer-pages/playlist/work/502.htmlRandom work-appropriate 502
example.com/fairer-pages/random/404.htmlRandom theme 404

Contributing

  • File issues with steps, logs, and versions.
  • Small, focused PRs are best (typos, fairer handling, UI polish).
  • Theme contributions are welcome!
  • Security-related PRs and hardening suggestions are especially appreciated if you notice anything that can be improved.

Disclaimer

The Software provided hereunder ("Software") is licensed "as-is," without warranties of any kind—express, implied, or whispered by mystical wisps. The Softwarer (yes, that's totally a word now) makes no promises about functionality, performance, compatibility, security, or availability—and absolutely no warranty of any sort. The developer shall not be held responsible, even if the software is clearly the reason your 404 page became more entertaining than your actual content, your users spent three hours clicking through every theme instead of buying anything, or your error pages gained sentience and started redirecting to Rick Astley videos.

If using this error page collection leads you down a rabbit hole of obsessive theme customization, breaks your carefully crafted nginx configs, or causes an uprising among your regex location blocks—sorry, still not liable. Also not liable if your random theme selector becomes so addictive it crashes your analytics or if your resource paths multiply like lightning bolts in a DeLorean. The developer likewise claims no credit for anything that actually goes right either. Any positive experiences are owed entirely to the unstoppable force that is the Open Source community.

Just don't blame me when your creative ways to cause errors in your environment for "testing" purposes inevitably backfires.

License

Distributed under the AGPL-3.0-only License. See LICENSING.md for commercial licensing.

docker
error-pages
self-hosted
themes
web

Contributors

SoFMeRight

198 commits

Languages

HTML

63.2%

CSS

32.7%

Shell

2.4%

JavaScript

1.4%