From 707e230761b5d88e2da7320815ce4fd2b0e710b9 Mon Sep 17 00:00:00 2001
From: superuserjr <80784472+turbodaemon@users.noreply.github.com>
Date: Tue, 10 Mar 2026 20:56:51 -0400
Subject: [PATCH 01/11] =?UTF-8?q?=F0=9F=93=9D=20docs(oidc):=20add=20Authen?=
=?UTF-8?q?tik=20token=20encryption=20and=20self-signed=20cert=20guidance?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- Warn that Encryption Key must be unset in Authentik provider settings
(Drydock does not support JWE tokens)
- Document INSECURE and CAFILE options for self-signed certificate setups
- Note that CAFILE requires the full certificate chain, not just the leaf
---
.../docs/current/configuration/authentications/oidc/index.mdx | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/content/docs/current/configuration/authentications/oidc/index.mdx b/content/docs/current/configuration/authentications/oidc/index.mdx
index e8d0d11c..060b2e0e 100644
--- a/content/docs/current/configuration/authentications/oidc/index.mdx
+++ b/content/docs/current/configuration/authentications/oidc/index.mdx
@@ -214,6 +214,10 @@ docker run \
+**Authentik token encryption** — In the Authentik provider's **Advanced protocol settings**, ensure the **Encryption Key** is unset ("Select an encryption key..."). Drydock does not support JWE (encrypted) tokens. If an encryption key is selected, Authentik will encrypt the ID token and Drydock will fail to validate it.
+
+**Self-signed certificates** — If your Authentik instance uses a self-signed certificate, use `DD_AUTH_OIDC_AUTHENTIK_INSECURE=true` to skip TLS verification for OIDC calls only (does not affect registry or webhook TLS). Alternatively, mount the CA certificate and use `DD_AUTH_OIDC_AUTHENTIK_CAFILE=/path/to/ca.pem`. For the CAFILE approach, ensure the PEM file contains the **full certificate chain** (not just the leaf certificate).
+
## How to integrate with Dex
Dex does not currently advertise `end_session_endpoint` in discovery metadata. Without an explicit `DD_AUTH_OIDC_DEX_LOGOUTURL`, `POST /auth/logout` clears only the local drydock session.
From 5e7a5b72ec9377ae0ea1930847a2efbc1aeb1e34 Mon Sep 17 00:00:00 2001
From: superuserjr <80784472+turbodaemon@users.noreply.github.com>
Date: Tue, 10 Mar 2026 22:46:46 -0400
Subject: [PATCH 02/11] =?UTF-8?q?=F0=9F=94=A7=20chore(demo):=20add=20frami?=
=?UTF-8?q?ng=20headers,=20OG=20image,=20favicons,=20and=20icon=20fix?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- Add CSP frame-ancestors header to allow embedding from drydock.codeswhat.com
- Add X-Frame-Options ALLOW-FROM as legacy fallback
- Add postMessage ping to parent frame on demo boot (iframe load detection)
- Add OG image, Twitter card meta tags, and full favicon set to demo index.html
- Fix Loki container using sh-grafana icon instead of sh-loki in seed data
---
apps/demo/index.html | 34 ++
apps/demo/public/apple-touch-icon.png | Bin 0 -> 24695 bytes
apps/demo/public/favicon-96x96.png | Bin 0 -> 8294 bytes
apps/demo/public/favicon.ico | Bin 0 -> 15086 bytes
apps/demo/public/favicon.svg | 17 +
apps/demo/public/og-image.png | Bin 0 -> 518510 bytes
apps/demo/public/site.webmanifest | 21 +
apps/demo/public/web-app-manifest-192x192.png | Bin 0 -> 27890 bytes
apps/demo/public/web-app-manifest-512x512.png | Bin 0 -> 170120 bytes
apps/demo/src/main.ts | 81 ++++
apps/demo/src/mocks/data/containers.ts | 360 ++++++++++++++++++
apps/demo/vercel.json | 19 +
12 files changed, 532 insertions(+)
create mode 100644 apps/demo/index.html
create mode 100644 apps/demo/public/apple-touch-icon.png
create mode 100644 apps/demo/public/favicon-96x96.png
create mode 100644 apps/demo/public/favicon.ico
create mode 100644 apps/demo/public/favicon.svg
create mode 100644 apps/demo/public/og-image.png
create mode 100644 apps/demo/public/site.webmanifest
create mode 100644 apps/demo/public/web-app-manifest-192x192.png
create mode 100644 apps/demo/public/web-app-manifest-512x512.png
create mode 100644 apps/demo/src/main.ts
create mode 100644 apps/demo/src/mocks/data/containers.ts
create mode 100644 apps/demo/vercel.json
diff --git a/apps/demo/index.html b/apps/demo/index.html
new file mode 100644
index 00000000..3076bfe2
--- /dev/null
+++ b/apps/demo/index.html
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
+
+ Drydock Demo — Interactive Container Update Monitoring
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/demo/public/apple-touch-icon.png b/apps/demo/public/apple-touch-icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..839ad65bd3134315ea0fdf65cf2f89859c88bcbc
GIT binary patch
literal 24695
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
literal 0
HcmV?d00001
diff --git a/apps/demo/public/favicon-96x96.png b/apps/demo/public/favicon-96x96.png
new file mode 100644
index 0000000000000000000000000000000000000000..900cd78dab18f3a0bbc2f26d68435a614cd8e503
GIT binary patch
literal 8294
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
\ No newline at end of file
diff --git a/apps/demo/public/og-image.png b/apps/demo/public/og-image.png
new file mode 100644
index 0000000000000000000000000000000000000000..7bbb6ab411936d2eff5ba65ff61f369fed8845c4
GIT binary patch
literal 518510
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