diff --git a/404.html b/404.html
new file mode 100644
index 0000000..2d31e58
--- /dev/null
+++ b/404.html
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+ Co-op Cloud, 404 Hello World!
+
+
diff --git a/abra.sh b/abra.sh
index 088f253..21574b9 100644
--- a/abra.sh
+++ b/abra.sh
@@ -1,3 +1,4 @@
export TRAEFIK_YML_VERSION=v12
export FILE_PROVIDER_YML_VERSION=v3
export ENTRYPOINT_VERSION=v2
+export NGINX_CONFIG_VERSION=v1
diff --git a/compose.yml b/compose.yml
index 054d09d..3fa6bd1 100644
--- a/compose.yml
+++ b/compose.yml
@@ -49,6 +49,26 @@ services:
- "traefik.http.routers.traefik.middlewares=security@file"
- "coop-cloud.${STACK_NAME}.version=1.0.0+v2.5.2"
+ web:
+ image: nginx:1.20.0
+ networks:
+ - proxy
+ configs:
+ - source: global_404
+ target: /usr/share/nginx/error-pages/404.html
+ - source: nginx_config
+ target: /etc/nginx/nginx.conf
+ labels:
+ - "traefik.enable=true"
+ - "traefik.http.services.error-pages-service.loadbalancer.server.port=80"
+ - "traefik.http.routers.error-router.rule=HostRegexp(`{host:.+}`)"
+ - "traefik.http.routers.error-router.entrypoints=web"
+ - "traefik.http.routers.error-route.priority=1"
+ - "traefik.http.routers.error-router.middlewares=error-pages-middleware"
+ - "traefik.http.middlewares.error-pages-middleware.errors.status=404"
+ - "traefik.http.middlewares.error-pages-middleware.errors.service=error-pages-service"
+ - "traefik.http.middlewares.error-pages-middleware.errors.query=/{status}.html"
+
networks:
proxy:
external: true
@@ -66,6 +86,13 @@ configs:
name: ${STACK_NAME}_entrypoint_${ENTRYPOINT_VERSION}
file: entrypoint.sh.tmpl
template_driver: golang
+ nginx_config:
+ name: ${STACK_NAME}_nginx_config_${NGINX_CONFIG_VERSION}
+ file: nginx.conf.tmpl
+ template_driver: golang
+ global_404:
+ name: ${STACK_NAME}_global_404_${GLOBAL_404_VERSION}
+ file: 404.html
volumes:
letsencrypt:
diff --git a/nginx.conf.tmpl b/nginx.conf.tmpl
new file mode 100644
index 0000000..3a58223
--- /dev/null
+++ b/nginx.conf.tmpl
@@ -0,0 +1,17 @@
+user www-data;
+
+events {
+ worker_connections 768;
+}
+
+http {
+ listen 80;
+ server_name localhost;
+
+ error_page 404 /404.html;
+
+ location / {
+ root /usr/share/nginx/error-pages;
+ internal;
+ }
+}