From c6deb72929f4a04fe75da7b5bd854e31c55da342 Mon Sep 17 00:00:00 2001
From: dockerweb <dockerweb@vps-f58ca655.vps.ovh.net>
Date: Fri, 3 May 2024 14:10:31 +0000
Subject: [PATCH] add traefik integration

---
 .env.sample.       |  7 +++++--
 docker-compose.yml | 17 +++++++++--------
 traefik.yml        | 21 +++++++++++++++++++++
 3 files changed, 35 insertions(+), 10 deletions(-)
 create mode 100644 traefik.yml

diff --git a/.env.sample. b/.env.sample.
index de06e63..ef78c1a 100644
--- a/.env.sample.
+++ b/.env.sample.
@@ -1,7 +1,10 @@
-COMPOSE_FILE=docker-compose.yml:ports.yml
+COMPOSE_FILE=docker-compose.yml:ports.yml
+
+NAME=keycloak
+HOST=keycloak.xema.tetras-libre.fr
 
 # KeyCloak
 KC_ADMIN=admin
-KC_ADMIN_PASSWD=admin
+KC_ADMIN_PASSWD=admin
 
 RESTART=always
diff --git a/docker-compose.yml b/docker-compose.yml
index a65d278..cd6223b 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -1,12 +1,13 @@
-version: "3"
-
-services:
+version: "3"
+
+services:
     keycloak:
         image : quay.io/keycloak/keycloak:24.0.3
         container_name: keycloak
-        ports:
-            - 9090:8080
         environment:
-            - KEYCLOAK_ADMIN=admin
-            - KEYCLOAK_ADMIN_PASSWORD=admin
-        command: ["start-dev", "--import-realm"]
+            - KEYCLOAK_ADMIN=${KC_ADMIN}
+            - KEYCLOAK_ADMIN_PASSWORD=${KC_ADMIN_PASSWD}
+              # cf https://github.com/keycloak/keycloak/issues/11170 for below variable
+            - KC_HOSTNAME_URL=https://${HOST}
+            - KC_HOSTNAME_ADMIN_URL=https://${HOST}
+        command: ["start-dev", "--import-realm", "--verbose"]
diff --git a/traefik.yml b/traefik.yml
new file mode 100644
index 0000000..0db0950
--- /dev/null
+++ b/traefik.yml
@@ -0,0 +1,21 @@
+version: "3"
+
+services:
+  keycloak:
+    networks:
+      - default
+      - traefik
+    expose:
+      - 8080
+    labels:
+      - "traefik.enable=true"
+      - "traefik.docker.network=traefik"
+      - "traefik.http.routers.${NAME}.rule=Host(`${HOST}`)"
+      - "traefik.http.routers.${NAME}.tls.certresolver=myresolver"
+      - "traefik.http.routers.${NAME}.entrypoints=web,websecure"
+      - "traefik.http.routers.${NAME}.middlewares=hardening@docker"
+
+
+networks:
+  traefik:
+    external: true
-- 
GitLab