Add custom error pages and Nginx configuration for proxy module

- Introduced custom HTML error pages for various HTTP status codes (400, 401, 403, 404, 408, 429, 500, 502, 503, 504) in the proxy module.
- Created a .gitignore file to exclude non-HTML files in the error resources directory.
- Updated Nginx configuration to serve custom error pages for upstream errors.
- Added new Nginx configuration templates for handling HTTP and stream protocols.
- Implemented Wireguard configuration templates and associated variables for secure connections.
- Established Kubernetes resources for Stunnel and Wireguard, including deployment, service accounts, and config maps.
- Defined variables for the Stunnel and Wireguard modules to facilitate configuration.
- Created a new Wol Proxy module with Kubernetes resources for deployment and service management.
This commit is contained in:
2025-10-02 00:19:01 +02:00
parent 4d00986273
commit e6a3f3affd
62 changed files with 1517 additions and 99 deletions
@@ -0,0 +1 @@
!*.html
@@ -0,0 +1,40 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>400 - Bad Request</title>
<style>
* { box-sizing: border-box; }
body {
margin: 0;
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
background-color: #121212;
color: #ffffff;
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
text-align: center;
padding: 20px;
}
.container {
max-width: 500px;
}
.icon {
font-size: 80px;
margin-bottom: 20px;
color: #f39c12;
}
h1 { font-size: 2rem; margin-bottom: 10px; }
p { font-size: 1rem; color: #cccccc; }
</style>
</head>
<body>
<div class="container">
<div class="icon"></div>
<h1>400 - Bad Request</h1>
<p>Oops! The server couldn't understand your request.</p>
</div>
</body>
</html>
@@ -0,0 +1,40 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>401 - Unauthorized</title>
<style>
* { box-sizing: border-box; }
body {
margin: 0;
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
background-color: #121212;
color: #ffffff;
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
text-align: center;
padding: 20px;
}
.container {
max-width: 500px;
}
.icon {
font-size: 80px;
margin-bottom: 20px;
color: #f39c12;
}
h1 { font-size: 2rem; margin-bottom: 10px; }
p { font-size: 1rem; color: #cccccc; }
</style>
</head>
<body>
<div class="container">
<div class="icon">🔒</div>
<h1>401 - Unauthorized</h1>
<p>You need to log in to access this resource.</p>
</div>
</body>
</html>
@@ -0,0 +1,40 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>403 - Forbidden</title>
<style>
* { box-sizing: border-box; }
body {
margin: 0;
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
background-color: #121212;
color: #ffffff;
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
text-align: center;
padding: 20px;
}
.container {
max-width: 500px;
}
.icon {
font-size: 80px;
margin-bottom: 20px;
color: #f39c12;
}
h1 { font-size: 2rem; margin-bottom: 10px; }
p { font-size: 1rem; color: #cccccc; }
</style>
</head>
<body>
<div class="container">
<div class="icon">🚫</div>
<h1>403 - Forbidden</h1>
<p>You don't have permission to view this page.</p>
</div>
</body>
</html>
@@ -0,0 +1,40 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>404 - Page Not Found</title>
<style>
* { box-sizing: border-box; }
body {
margin: 0;
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
background-color: #121212;
color: #ffffff;
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
text-align: center;
padding: 20px;
}
.container {
max-width: 500px;
}
.icon {
font-size: 80px;
margin-bottom: 20px;
color: #f39c12;
}
h1 { font-size: 2rem; margin-bottom: 10px; }
p { font-size: 1rem; color: #cccccc; }
</style>
</head>
<body>
<div class="container">
<div class="icon">🔍</div>
<h1>404 - Page Not Found</h1>
<p>We couldn't find the page you're looking for.</p>
</div>
</body>
</html>
@@ -0,0 +1,40 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>408 - Request Timeout</title>
<style>
* { box-sizing: border-box; }
body {
margin: 0;
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
background-color: #121212;
color: #ffffff;
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
text-align: center;
padding: 20px;
}
.container {
max-width: 500px;
}
.icon {
font-size: 80px;
margin-bottom: 20px;
color: #f39c12;
}
h1 { font-size: 2rem; margin-bottom: 10px; }
p { font-size: 1rem; color: #cccccc; }
</style>
</head>
<body>
<div class="container">
<div class="icon"></div>
<h1>408 - Request Timeout</h1>
<p>The server took too long to respond. Try again later.</p>
</div>
</body>
</html>
@@ -0,0 +1,40 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>429 - Too Many Requests</title>
<style>
* { box-sizing: border-box; }
body {
margin: 0;
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
background-color: #121212;
color: #ffffff;
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
text-align: center;
padding: 20px;
}
.container {
max-width: 500px;
}
.icon {
font-size: 80px;
margin-bottom: 20px;
color: #f39c12;
}
h1 { font-size: 2rem; margin-bottom: 10px; }
p { font-size: 1rem; color: #cccccc; }
</style>
</head>
<body>
<div class="container">
<div class="icon">🚦</div>
<h1>429 - Too Many Requests</h1>
<p>You're making too many requests. Please slow down.</p>
</div>
</body>
</html>
@@ -0,0 +1,40 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>500 - Internal Server Error</title>
<style>
* { box-sizing: border-box; }
body {
margin: 0;
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
background-color: #121212;
color: #ffffff;
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
text-align: center;
padding: 20px;
}
.container {
max-width: 500px;
}
.icon {
font-size: 80px;
margin-bottom: 20px;
color: #f39c12;
}
h1 { font-size: 2rem; margin-bottom: 10px; }
p { font-size: 1rem; color: #cccccc; }
</style>
</head>
<body>
<div class="container">
<div class="icon">⚠️</div>
<h1>500 - Internal Server Error</h1>
<p>Something went wrong on our end. We're working on it.</p>
</div>
</body>
</html>
@@ -0,0 +1,40 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>502 - Bad Gateway</title>
<style>
* { box-sizing: border-box; }
body {
margin: 0;
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
background-color: #121212;
color: #ffffff;
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
text-align: center;
padding: 20px;
}
.container {
max-width: 500px;
}
.icon {
font-size: 80px;
margin-bottom: 20px;
color: #f39c12;
}
h1 { font-size: 2rem; margin-bottom: 10px; }
p { font-size: 1rem; color: #cccccc; }
</style>
</head>
<body>
<div class="container">
<div class="icon">🔌</div>
<h1>502 - Bad Gateway</h1>
<p>The server received an invalid response from upstream.</p>
</div>
</body>
</html>
@@ -0,0 +1,40 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>503 - Service Unavailable</title>
<style>
* { box-sizing: border-box; }
body {
margin: 0;
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
background-color: #121212;
color: #ffffff;
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
text-align: center;
padding: 20px;
}
.container {
max-width: 500px;
}
.icon {
font-size: 80px;
margin-bottom: 20px;
color: #f39c12;
}
h1 { font-size: 2rem; margin-bottom: 10px; }
p { font-size: 1rem; color: #cccccc; }
</style>
</head>
<body>
<div class="container">
<div class="icon">🛠️</div>
<h1>503 - Service Unavailable</h1>
<p>We're doing some maintenance. Please check back soon.</p>
</div>
</body>
</html>
@@ -0,0 +1,40 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>504 - Gateway Timeout</title>
<style>
* { box-sizing: border-box; }
body {
margin: 0;
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
background-color: #121212;
color: #ffffff;
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
text-align: center;
padding: 20px;
}
.container {
max-width: 500px;
}
.icon {
font-size: 80px;
margin-bottom: 20px;
color: #f39c12;
}
h1 { font-size: 2rem; margin-bottom: 10px; }
p { font-size: 1rem; color: #cccccc; }
</style>
</head>
<body>
<div class="container">
<div class="icon">📡</div>
<h1>504 - Gateway Timeout</h1>
<p>The upstream server didn't respond in time.</p>
</div>
</body>
</html>