diff --git a/errorpage/Dockerfile b/errorpage/Dockerfile new file mode 100644 index 0000000..712656b --- /dev/null +++ b/errorpage/Dockerfile @@ -0,0 +1,5 @@ +FROM nginx:alpine +RUN rm -rf /usr/share/nginx/html/* +COPY html /usr/share/nginx/html +EXPOSE 80 +CMD ["nginx", "-g", "daemon off;"] diff --git a/errorpage/compose.yaml b/errorpage/compose.yaml new file mode 100644 index 0000000..c0c0783 --- /dev/null +++ b/errorpage/compose.yaml @@ -0,0 +1,19 @@ +services: + errorpage: + build: . + container_name: error-page + # ports: + # - 80 + networks: + - proxy + labels: + - "traefik.enable=true" + - "traefik.docker.network=proxy" + - "traefik.http.services.errorpage.loadbalancer.server.port=80" + # Error handler middleware + - "traefik.http.middlewares.error-pages.errors.status=400-599" + - "traefik.http.middlewares.error-pages.errors.service=errorpage" + - "traefik.http.middlewares.error-pages.errors.query=/{status}.html" +networks: + proxy: + external: true diff --git a/errorpage/html/403.html b/errorpage/html/403.html new file mode 100644 index 0000000..a9db107 --- /dev/null +++ b/errorpage/html/403.html @@ -0,0 +1,40 @@ + + + + + + + 403 // Forbidden + + + + + + + +
+
+

403

+

> Forbidden / Access Denied.

+
+ +
+ +
+

./error_message

+

You do not have permission to access this resource.

+
+

Check the System Status if you believe this is an + error.

+
+ + +
+ + + + \ No newline at end of file diff --git a/errorpage/html/404.html b/errorpage/html/404.html new file mode 100644 index 0000000..e766bae --- /dev/null +++ b/errorpage/html/404.html @@ -0,0 +1,39 @@ + + + + + + + 404 // Not Found + + + + + + + +
+
+

404

+

> Page Not Found / Lost in the Void.

+
+ +
+ +
+

./error_message

+

The page you are looking for does not exist or has been moved.

+
+

Check the System Status if you believe this is an error.

+
+ + +
+ + + + diff --git a/errorpage/html/500.html b/errorpage/html/500.html new file mode 100644 index 0000000..8d66073 --- /dev/null +++ b/errorpage/html/500.html @@ -0,0 +1,39 @@ + + + + + + + 500 // Server Error + + + + + + + +
+
+

500

+

> Internal Server Error / System Failure.

+
+ +
+ +
+

./error_message

+

Something went wrong on our end. We are working to fix it.

+
+

Check the System Status for more information.

+
+ + +
+ + + + \ No newline at end of file diff --git a/errorpage/html/502.html b/errorpage/html/502.html new file mode 100644 index 0000000..9df57c1 --- /dev/null +++ b/errorpage/html/502.html @@ -0,0 +1,39 @@ + + + + + + + 502 // Bad Gateway + + + + + + + +
+
+

502

+

> Bad Gateway / System Failure.

+
+ +
+ +
+

./error_message

+

The server received an invalid response from the upstream server.

+
+

Check the System Status for more information.

+
+ + +
+ + + + \ No newline at end of file diff --git a/errorpage/html/503.html b/errorpage/html/503.html new file mode 100644 index 0000000..7d618ab --- /dev/null +++ b/errorpage/html/503.html @@ -0,0 +1,39 @@ + + + + + + + 503 // Service Unavailable + + + + + + + +
+
+

503

+

> Service Unavailable / System Failure.

+
+ +
+ +
+

./error_message

+

The server is currently unable to handle the request due to maintenance or overload.

+
+

Check the System Status for more information.

+
+ + +
+ + + + \ No newline at end of file diff --git a/errorpage/html/504.html b/errorpage/html/504.html new file mode 100644 index 0000000..e24a8a4 --- /dev/null +++ b/errorpage/html/504.html @@ -0,0 +1,39 @@ + + + + + + + 504 // Gateway Timeout + + + + + + + +
+
+

504

+

> Gateway Timeout / System Failure.

+
+ +
+ +
+

./error_message

+

The server did not receive a timely response from the upstream server.

+
+

Check the System Status for more information.

+
+ + +
+ + + + \ No newline at end of file diff --git a/errorpage/html/assets/css/style.css b/errorpage/html/assets/css/style.css new file mode 100644 index 0000000..0aff0d2 --- /dev/null +++ b/errorpage/html/assets/css/style.css @@ -0,0 +1,167 @@ +/* hidden in a plain sight? */ +:root { + --bg-color: #050505; + --text-color: #e0e0e0; + --accent: #ffffff; + --dim: #666666; + --font-mono: 'Courier New', Courier, monospace; +} + +* { + box-sizing: border-box; + margin: 0; + padding: 0; +} + +body { + background-color: var(--bg-color); + color: var(--text-color); + font-family: var(--font-mono); + line-height: 1.6; + font-size: 16px; + padding: 2rem; +} + +a { + color: var(--text-color); + text-decoration: none; + border-bottom: 1px solid var(--dim); + transition: all 0.2s; +} + +a:hover { + background-color: var(--text-color); + color: var(--bg-color); + border-color: var(--text-color); +} + +.container { + max-width: 800px; + margin: 0 auto; +} + +/* TEXT */ +h1 { + font-size: 2.5rem; + text-transform: uppercase; + letter-spacing: -2px; + margin-bottom: 0.5rem; +} + +h2 { + font-size: 1.2rem; + margin-bottom: 1.5rem; + border-bottom: 1px solid var(--dim); + display: inline-block; + padding-right: 20px; +} + +.subtitle { + color: var(--dim); + margin-bottom: 2rem; +} + +hr { + border: 0; + border-top: 1px dashed var(--dim); + margin: 2rem 0; +} + +.comment { + color: var(--dim); + font-size: 0.9rem; + margin-left: 10px; +} + +/* SECTIONS */ +section { + margin-bottom: 3rem; +} + +/* LISTS */ +ul { + list-style: none; +} + +.link-list li { + margin-bottom: 0.8rem; + display: flex; + align-items: center; + gap: 15px; +} + +/* STACK GRID */ +.grid-2 { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 2rem; +} + +.skill-item { + display: flex; + justify-content: space-between; + margin-bottom: 0.5rem; +} + +.level { + font-weight: bold; +} + +.special .level { + color: var(--text-color); + text-shadow: 1px 0 0 red, -1px 0 0 blue; +} + +/* my dudes */ +.team-grid { + display: flex; + gap: 2rem; + flex-wrap: wrap; + margin-top: 1rem; +} + +.member { + text-align: center; + width: 100px; +} + +.avatar { + width: 80px; + height: 80px; + background-color: #222; + border: 2px solid var(--text-color); + margin: 0 auto 10px auto; + background-size: cover; +} + +/* if no avatar added: */ +.placeholder::before { + content: "?"; + display: flex; + align-items: center; + justify-content: center; + height: 100%; + font-size: 2rem; + color: var(--dim); +} + +/* REPOS */ +.repo-list li { + margin-bottom: 1rem; +} + +/* FOOTER */ +footer { + text-align: center; + color: var(--dim); + font-size: 0.8rem; +/* flag{why-are-you-here?} */ + margin-top: 4rem; +} +/* SMTH RESPONSIVE */ +@media (max-width: 600px) { + .grid-2 { + grid-template-columns: 1fr; + gap: 0; + } +}