From 77aae9ab39342007c871e4f313dec06576281524 Mon Sep 17 00:00:00 2001 From: Huskydog9988 <39809509+Huskydog9988@users.noreply.github.com> Date: Tue, 10 Feb 2026 10:38:44 -0500 Subject: [PATCH 01/11] add discord and matrix links --- astro.config.mjs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/astro.config.mjs b/astro.config.mjs index 45c24df..3d3727e 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -22,6 +22,16 @@ export default defineConfig({ label: "GitHub", href: "https://github.com/Drop-OSS/", }, + { + icon: "discord", + label: "Discord", + href: "https://discord.gg/NHx46XKJWA", + }, + { + icon: "matrix", + label: "Matrix", + href: "https://matrix.to/#/%23drop-oss:matrix.org", + }, ], sidebar: [ { From 71a360c266756a2485850fe7eecbcca7cc88f527 Mon Sep 17 00:00:00 2001 From: Huskydog9988 <39809509+Huskydog9988@users.noreply.github.com> Date: Tue, 10 Feb 2026 11:42:40 -0500 Subject: [PATCH 02/11] update oidc redirct url docs --- src/content/docs/admin/authentication/oidc.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/content/docs/admin/authentication/oidc.md b/src/content/docs/admin/authentication/oidc.md index 0864771..5ce8194 100644 --- a/src/content/docs/admin/authentication/oidc.md +++ b/src/content/docs/admin/authentication/oidc.md @@ -42,4 +42,6 @@ A unprotected endpoint that returns a OIDC well-known JSON. Fetched on startup ## Redirect URL -Drop uses the `EXTERNAL_URL` environment variable to create the callback URL: `$EXTERNAL_URL/auth/callback/oidc`. +Drop uses the `EXTERNAL_URL` environment variable to create the callback URL: `$EXTERNAL_URL/api/v1/auth/odic/callback`. + +For example: if `EXTERNAL_URL` was set to `http://localhost:3000/`, then the redirect URL would be `http://localhost:3000/api/v1/auth/odic/callback`. From 8aef83c9684ee2cf892a976686f468e9f5284e5d Mon Sep 17 00:00:00 2001 From: Huskydog9988 <39809509+Huskydog9988@users.noreply.github.com> Date: Tue, 10 Feb 2026 11:55:33 -0500 Subject: [PATCH 03/11] document logout url --- src/content/docs/admin/authentication/oidc.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/content/docs/admin/authentication/oidc.md b/src/content/docs/admin/authentication/oidc.md index 5ce8194..78ba2f8 100644 --- a/src/content/docs/admin/authentication/oidc.md +++ b/src/content/docs/admin/authentication/oidc.md @@ -45,3 +45,7 @@ A unprotected endpoint that returns a OIDC well-known JSON. Fetched on startup Drop uses the `EXTERNAL_URL` environment variable to create the callback URL: `$EXTERNAL_URL/api/v1/auth/odic/callback`. For example: if `EXTERNAL_URL` was set to `http://localhost:3000/`, then the redirect URL would be `http://localhost:3000/api/v1/auth/odic/callback`. + +## Logout URL + +Drop supports OIDC back-channel logout, enabling the OIDC provider to logout users. Using the example above, the back-channel logout URL would be `http://localhost:3000/api/v1/auth/odic/logout`. From 1d17975f8bcdb857b1a642b3319c7c2818cd2bbc Mon Sep 17 00:00:00 2001 From: Huskydog9988 <39809509+Huskydog9988@users.noreply.github.com> Date: Tue, 10 Feb 2026 21:02:43 -0500 Subject: [PATCH 04/11] update prisma version --- src/content/docs/reference/build-server.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/content/docs/reference/build-server.mdx b/src/content/docs/reference/build-server.mdx index 1fdd805..98aac90 100644 --- a/src/content/docs/reference/build-server.mdx +++ b/src/content/docs/reference/build-server.mdx @@ -81,7 +81,7 @@ You will need to install: Use your Node.js package manager to install prisma, either to the local directory or globally: ```bash - npm install prisma@6.11.1 dotenv # dotenv is a requirement + npm install prisma@7.3.0 dotenv # dotenv is a requirement ``` Then, with your database running: From 9bbbafe8a8343fc5b014e65e188405e5552a7f93 Mon Sep 17 00:00:00 2001 From: Huskydog9988 <39809509+Huskydog9988@users.noreply.github.com> Date: Tue, 10 Feb 2026 21:12:17 -0500 Subject: [PATCH 05/11] clarify build instructions --- src/content/docs/reference/build-server.mdx | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/src/content/docs/reference/build-server.mdx b/src/content/docs/reference/build-server.mdx index 98aac90..418aec6 100644 --- a/src/content/docs/reference/build-server.mdx +++ b/src/content/docs/reference/build-server.mdx @@ -6,10 +6,10 @@ import { Steps } from "@astrojs/starlight/components"; The Drop server is compromised of the following components, and are built with the associated tools: -| Project | Tools | -| -------------- | ------------------------------- | -| Frontend & API | Node.js, `pnpm` | -| `torrential` | Rust (nightly) | +| Project | Tools | +| -------------- | --------------- | +| Frontend & API | Node.js, `pnpm` | +| `torrential` | Rust (nightly) | Then, to be run outside the Docker container, Drop needs the following: @@ -64,6 +64,10 @@ You will need to install: - Your copy of `torrential`, to somewhere in the [search path](#torrential-search-algorithm) - PostgreSQL +:::tip +Drop's [dockerfile](https://github.com/Drop-OSS/drop/blob/develop/Dockerfile) provides a great example on how to properly setup Drop's runtime environment. +::: + 1. ### Prepare your run directory You will need to copy the following files to your run directory: @@ -78,10 +82,14 @@ You will need to install: 3. ### Install `prisma` and run migrations - Use your Node.js package manager to install prisma, either to the local directory or globally: + Use your Node.js package manager to install drop's runtime dependencies: + + :::caution + Make sure the prisma version installed is the same version as defined in drop's `package.json`. + ::: ```bash - npm install prisma@7.3.0 dotenv # dotenv is a requirement + npm install prisma@7.3.0 dotenv # dotenv is required ``` Then, with your database running: From 2ecc94499eac4f1c9e0e9b4e48b0ae089a50367f Mon Sep 17 00:00:00 2001 From: Huskydog9988 <39809509+Huskydog9988@users.noreply.github.com> Date: Tue, 10 Feb 2026 21:23:30 -0500 Subject: [PATCH 06/11] advise people to use OIDC_WELLKNOWN --- src/content/docs/admin/authentication/oidc.md | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/content/docs/admin/authentication/oidc.md b/src/content/docs/admin/authentication/oidc.md index 78ba2f8..d34e725 100644 --- a/src/content/docs/admin/authentication/oidc.md +++ b/src/content/docs/admin/authentication/oidc.md @@ -8,7 +8,7 @@ OpenID Connect is a OAuth2 extension support by most identity providers. To configure OIDC, you must set the following environment variables: -| Variable | Usage | +| Variable | Description | | ------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------- | | `OIDC_CLIENT_ID` | Client ID from your identity provider. | | `OIDC_CLIENT_SECRET` | Client secret from your identity provider. | @@ -25,13 +25,19 @@ And then, you must configure **either**: #### Use `OIDC_WELLKNOWN` -A unprotected endpoint that returns a OIDC well-known JSON. Fetched on startup +A unprotected endpoint that returns a OIDC well-known JSON. Fetched on startup. + +For example if you used authentik, your OIDC well-known endpoint would be: `https://authentik.company/application/o//.well-known/openid-configuration`. --- #### Provide options individually -| Variable | Usage | +:::caution +Drop recommends using the OIDC well-known option **instead** of manually specifying each endpoint. This should only be used if your OIDC provider does not support the well-known format. +::: + +| Variable | Description | | -------------------- | ------------------------------------------------------------------------- | | `OIDC_AUTHORIZATION` | Authorization endpoint. Usually ends with `authorize`. | | `OIDC_TOKEN` | Token endpoint. Usually ends with `token`. | From 2b70396ee1caa5b9aca68c36afe45ccf5b39d82b Mon Sep 17 00:00:00 2001 From: Huskydog9988 <39809509+Huskydog9988@users.noreply.github.com> Date: Tue, 10 Feb 2026 21:47:43 -0500 Subject: [PATCH 07/11] basic OIDC guide --- astro.config.mjs | 1 + src/content/docs/admin/authentication/oidc.md | 2 +- .../docs/admin/guides/setting-up-oidc.mdx | 38 +++++++++++++++++++ 3 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 src/content/docs/admin/guides/setting-up-oidc.mdx diff --git a/astro.config.mjs b/astro.config.mjs index 3d3727e..6b590cc 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -59,6 +59,7 @@ export default defineConfig({ { slug: "admin/guides/creating-library" }, { slug: "admin/guides/import-game" }, { slug: "admin/guides/import-version" }, + { slug: "admin/guides/setting-up-oidc" }, ], }, { diff --git a/src/content/docs/admin/authentication/oidc.md b/src/content/docs/admin/authentication/oidc.md index d34e725..c7c9684 100644 --- a/src/content/docs/admin/authentication/oidc.md +++ b/src/content/docs/admin/authentication/oidc.md @@ -27,7 +27,7 @@ And then, you must configure **either**: A unprotected endpoint that returns a OIDC well-known JSON. Fetched on startup. -For example if you used authentik, your OIDC well-known endpoint would be: `https://authentik.company/application/o//.well-known/openid-configuration`. +For example if you used authentik, your OIDC well-known endpoint would be: `https://authentik.tld/application/o//.well-known/openid-configuration`. --- diff --git a/src/content/docs/admin/guides/setting-up-oidc.mdx b/src/content/docs/admin/guides/setting-up-oidc.mdx new file mode 100644 index 0000000..f0f2b24 --- /dev/null +++ b/src/content/docs/admin/guides/setting-up-oidc.mdx @@ -0,0 +1,38 @@ +--- +title: Setting up OIDC +--- + +## Authentik + +For this guide, `drop.tld` is used as a placeholder for your Drop instance's domain. Make sure to replace it with your actual domain. + +### In Authentik + +1. Go to the admin dashboard +1. In the applications section, click Create with Provider + Set any name and slug you want +1. Select OpenID Connect as the provider type +1. Configure the provider + - Copy the client ID, and secret, you'll need them for Drop + - Set the redirect as `Strict` and the URL to `https://drop.tld/api/v1/auth/odic/callback` + - Set the logout URL to `https://drop.tld/api/v1/auth/odic/logout` + - Make sure to set the logout URL as a `back-channel` logout in the dropdown +1. Configure everything else as you see fit + +### For Drop + +:::note +Make sure to replace the client ID, secret, and well-known url with your actual values. You can find the well-known URL in the provider's configuration page in Authentik. +::: + +For drop, the docker compose configuration would look like this: + +```yaml +services: + drop: + environment: + - OIDC_CLIENT_ID=authentik-client-id + - OIDC_CLIENT_SECRET=authentik-client-secret + - OIDC_ADMIN_GROUP=admin-group-name + - OIDC_WELLKNOWN=https://authentik.tld/application/o//.well-known/openid-configuration +``` From 1a53d9a648f1770598f4c88fb97e0ece55943d15 Mon Sep 17 00:00:00 2001 From: Huskydog9988 <39809509+Huskydog9988@users.noreply.github.com> Date: Wed, 11 Feb 2026 10:18:52 -0500 Subject: [PATCH 08/11] move oidc guide --- astro.config.mjs | 3 +-- .../docs/admin/{guides => going-further}/setting-up-oidc.mdx | 0 2 files changed, 1 insertion(+), 2 deletions(-) rename src/content/docs/admin/{guides => going-further}/setting-up-oidc.mdx (100%) diff --git a/astro.config.mjs b/astro.config.mjs index 6b590cc..f997dba 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -59,12 +59,11 @@ export default defineConfig({ { slug: "admin/guides/creating-library" }, { slug: "admin/guides/import-game" }, { slug: "admin/guides/import-version" }, - { slug: "admin/guides/setting-up-oidc" }, ], }, { label: "Going further", - items: [{ slug: "admin/going-further/importing-update" }], + autogenerate: { directory: "admin/going-further" }, }, { label: "Metadata", diff --git a/src/content/docs/admin/guides/setting-up-oidc.mdx b/src/content/docs/admin/going-further/setting-up-oidc.mdx similarity index 100% rename from src/content/docs/admin/guides/setting-up-oidc.mdx rename to src/content/docs/admin/going-further/setting-up-oidc.mdx From 7ef9b42cd0e2dc24bd9cf841fc1c5e41237874e4 Mon Sep 17 00:00:00 2001 From: Huskydog9988 <39809509+Huskydog9988@users.noreply.github.com> Date: Wed, 11 Feb 2026 10:51:11 -0500 Subject: [PATCH 09/11] allow more subheadings --- astro.config.mjs | 1 + 1 file changed, 1 insertion(+) diff --git a/astro.config.mjs b/astro.config.mjs index f997dba..bbe0e2c 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -16,6 +16,7 @@ export default defineConfig({ ], title: "Drop OSS", logo: { src: "./src/assets/wordmark.png", replacesTitle: true }, + tableOfContents: { minHeadingLevel: 2, maxHeadingLevel: 4 }, social: [ { icon: "github", From f34346e5ba8ad56a4ff332122c91e1a6e184f944 Mon Sep 17 00:00:00 2001 From: Huskydog9988 <39809509+Huskydog9988@users.noreply.github.com> Date: Wed, 11 Feb 2026 10:51:20 -0500 Subject: [PATCH 10/11] add robots.txt --- public/robots.txt | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 public/robots.txt diff --git a/public/robots.txt b/public/robots.txt new file mode 100644 index 0000000..2de1a22 --- /dev/null +++ b/public/robots.txt @@ -0,0 +1,4 @@ +User-agent: * +Allow: / + +Sitemap: https://docs-next.droposs.org/sitemap-index.xml \ No newline at end of file From dbdb7e765854e21851e686f68ac0e3015db07dcb Mon Sep 17 00:00:00 2001 From: Huskydog9988 <39809509+Huskydog9988@users.noreply.github.com> Date: Wed, 11 Feb 2026 11:02:15 -0500 Subject: [PATCH 11/11] note the reference docs --- src/content/docs/admin/going-further/setting-up-oidc.mdx | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/content/docs/admin/going-further/setting-up-oidc.mdx b/src/content/docs/admin/going-further/setting-up-oidc.mdx index f0f2b24..d663a56 100644 --- a/src/content/docs/admin/going-further/setting-up-oidc.mdx +++ b/src/content/docs/admin/going-further/setting-up-oidc.mdx @@ -2,6 +2,10 @@ title: Setting up OIDC --- +:::note +You can find reference information in the [OIDC authentication docs](/admin/authentication/oidc/). +::: + ## Authentik For this guide, `drop.tld` is used as a placeholder for your Drop instance's domain. Make sure to replace it with your actual domain.