diff --git a/modules/apps/gateway/cloud-init/service.yaml b/modules/apps/gateway/cloud-init/service.yaml
index da6eee5..dc6af6c 100644
--- a/modules/apps/gateway/cloud-init/service.yaml
+++ b/modules/apps/gateway/cloud-init/service.yaml
@@ -22,8 +22,7 @@ packages:
- git
- nfs-common
- curl
- - python3-flask
- - gunicorn
+ - nginx
write_files:
- path: /opt/environment/.env
@@ -38,9 +37,18 @@ write_files:
permissions: "0755"
content: |
${traefik-service}
-
+ - path: /usr/share/nginx/error-pages/502.html
+ permissions: "0644"
+ content: |
+ {nginx-error-502}
+ - path: /etc/nginx/sites-available/default
+ permissions: "0644"
+ content: |
+ {nginx-error-configuration}
runcmd:
- /opt/gateway/install-traefik.sh
+ - ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled
+ - systemctl start nginx.service
final_message: |
Base system ready for ${hostname}
\ No newline at end of file
diff --git a/modules/apps/gateway/lib/scripts/502.html b/modules/apps/gateway/lib/scripts/502.html
new file mode 100644
index 0000000..59a637a
--- /dev/null
+++ b/modules/apps/gateway/lib/scripts/502.html
@@ -0,0 +1,43 @@
+
+
+
+
+
+ Service unavailable
+
+
+
+
+
Le service n'est pas disponible.
+
+ Il est possible que le serveur soit éteint pour les raisons suivantes :
+
+ - Maintenance hebdomadaire (mise à jour des services ou sauvegarde).
+ - Le service n'est plus maintenu.
+
+
+
+
+
+
diff --git a/modules/apps/gateway/lib/scripts/default b/modules/apps/gateway/lib/scripts/default
new file mode 100644
index 0000000..efb7cb4
--- /dev/null
+++ b/modules/apps/gateway/lib/scripts/default
@@ -0,0 +1,10 @@
+server {
+ listen 8090;
+ server_name localhost;
+
+ error_page 502 /502.html;
+
+ location / {
+ root /usr/share/nginx/error-pages;
+ }
+}
\ No newline at end of file
diff --git a/modules/apps/gateway/main.tf b/modules/apps/gateway/main.tf
index d4df235..c8933f5 100644
--- a/modules/apps/gateway/main.tf
+++ b/modules/apps/gateway/main.tf
@@ -25,7 +25,8 @@ module "vm" {
proxmox_host_ip = var.proxmox_host_ip
traefik-service = indent(6, file("${path.module}/lib/services/traefik.service"))
install-traefik-script = indent(6, file("${path.module}/lib/scripts/install-traefik.sh"))
-
+ nginx-error-configuration = indent(6, file("${path.module}/lib/scripts/default"))
+ nginx-error-502 = indent(6, file("${path.module}/lib/scripts/502.html"))
env-file-content = indent(6, file("${path.module}/.env"))
}
)
diff --git a/templates/traefik.services.tpl b/templates/traefik.services.tpl
index 6ee0342..2b10a7d 100644
--- a/templates/traefik.services.tpl
+++ b/templates/traefik.services.tpl
@@ -17,6 +17,8 @@ http:
service: ${subservice.name}
tls:
certResolver: letsencrypt
+ middlewares:
+ - redirect-errors
%{~ endfor }
%{~ endfor }
nextcloud:
@@ -26,7 +28,8 @@ http:
service: nextcloud
tls:
certResolver: letsencrypt
-
+ middlewares:
+ - redirect-errors
rocket:
rule: "Host(`discussion.fefan.fr`)"
entryPoints:
@@ -34,7 +37,8 @@ http:
service: rocket
tls:
certResolver: letsencrypt
-
+ middlewares:
+ - redirect-errors
wiki:
rule: "Host(`benoit.mathieu.wiki`)"
entryPoints:
@@ -42,7 +46,8 @@ http:
service: wiki
tls:
certResolver: letsencrypt
-
+ middlewares:
+ - redirect-errors
vaultwarden:
rule: "Host(`vaultwarden.aldon.fr`)"
entryPoints:
@@ -50,7 +55,8 @@ http:
service: vaultwarden
tls:
certResolver: letsencrypt
-
+ middlewares:
+ - redirect-errors
keycloak:
rule: "Host(`keycloak.aldon.fr`)"
entryPoints:
@@ -58,6 +64,8 @@ http:
service: keycloak
tls:
certResolver: letsencrypt
+ middlewares:
+ - redirect-errors
services:
%{~ for _, service in services }
%{~ for _, subservice in service }
@@ -100,7 +108,21 @@ http:
servers:
- url: "http://192.168.1.34:8080"
+ error-handler-service:
+ loadBalancer:
+ passHostHeader: true
+ servers:
+ - url: "http://127.0.0.1:8090"
middlewares:
redirect-to-https:
redirectScheme:
- scheme: https
\ No newline at end of file
+ scheme: https
+ redirect-errors:
+ errors:
+ status:
+ - "500"
+ - "501"
+ - "503"
+ - "502"
+ service: error-handler-service
+ query: "/502.html"