From 120ffaaf2c971f8a2f099579b024a77a72f75cba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=B6rdle=20Bot?= Date: Thu, 27 Nov 2025 11:26:27 +0100 Subject: [PATCH] docs: update docker config and docs for white labeling --- Dockerfile | 28 ++++++++++++++++++++++++++++ README.md | 2 ++ WHITE_LABEL.md | 32 ++++++++++++++++++++++++++++++++ docker-compose.example.yml | 13 +++++++++++++ 4 files changed, 75 insertions(+) diff --git a/Dockerfile b/Dockerfile index 14923bc..1210498 100644 --- a/Dockerfile +++ b/Dockerfile @@ -40,6 +40,34 @@ ENV NEXT_TELEMETRY_DISABLED 1 ENV DATABASE_URL="file:./dev.db" RUN node_modules/.bin/prisma generate +# White Label Build Arguments +ARG NEXT_PUBLIC_APP_NAME +ARG NEXT_PUBLIC_APP_DESCRIPTION +ARG NEXT_PUBLIC_DOMAIN +ARG NEXT_PUBLIC_TWITTER_HANDLE +ARG NEXT_PUBLIC_PLAUSIBLE_DOMAIN +ARG NEXT_PUBLIC_PLAUSIBLE_SCRIPT_SRC +ARG NEXT_PUBLIC_THEME_COLOR +ARG NEXT_PUBLIC_BACKGROUND_COLOR +ARG NEXT_PUBLIC_CREDITS_ENABLED +ARG NEXT_PUBLIC_CREDITS_TEXT +ARG NEXT_PUBLIC_CREDITS_LINK_TEXT +ARG NEXT_PUBLIC_CREDITS_LINK_URL + +# Pass env vars to build +ENV NEXT_PUBLIC_APP_NAME=$NEXT_PUBLIC_APP_NAME +ENV NEXT_PUBLIC_APP_DESCRIPTION=$NEXT_PUBLIC_APP_DESCRIPTION +ENV NEXT_PUBLIC_DOMAIN=$NEXT_PUBLIC_DOMAIN +ENV NEXT_PUBLIC_TWITTER_HANDLE=$NEXT_PUBLIC_TWITTER_HANDLE +ENV NEXT_PUBLIC_PLAUSIBLE_DOMAIN=$NEXT_PUBLIC_PLAUSIBLE_DOMAIN +ENV NEXT_PUBLIC_PLAUSIBLE_SCRIPT_SRC=$NEXT_PUBLIC_PLAUSIBLE_SCRIPT_SRC +ENV NEXT_PUBLIC_THEME_COLOR=$NEXT_PUBLIC_THEME_COLOR +ENV NEXT_PUBLIC_BACKGROUND_COLOR=$NEXT_PUBLIC_BACKGROUND_COLOR +ENV NEXT_PUBLIC_CREDITS_ENABLED=$NEXT_PUBLIC_CREDITS_ENABLED +ENV NEXT_PUBLIC_CREDITS_TEXT=$NEXT_PUBLIC_CREDITS_TEXT +ENV NEXT_PUBLIC_CREDITS_LINK_TEXT=$NEXT_PUBLIC_CREDITS_LINK_TEXT +ENV NEXT_PUBLIC_CREDITS_LINK_URL=$NEXT_PUBLIC_CREDITS_LINK_URL + RUN npm run build # Production image, copy all the files and run next diff --git a/README.md b/README.md index c5ba1e3..6193f73 100644 --- a/README.md +++ b/README.md @@ -109,6 +109,8 @@ Das Ziel ist es, den Song mit so wenigen Hinweisen wie möglich zu erraten und d Das Projekt ist für den Betrieb mit Docker optimiert. +👉 **[White Labeling mit Docker? Hier klicken!](WHITE_LABEL.md#docker-deployment)** + 1. **Vorbereitung:** Kopiere die Beispiel-Konfiguration: ```bash diff --git a/WHITE_LABEL.md b/WHITE_LABEL.md index 1524d8e..f608cac 100644 --- a/WHITE_LABEL.md +++ b/WHITE_LABEL.md @@ -65,3 +65,35 @@ To replace the logo and icons: 1. Replace `public/favicon.ico`. 2. Replace `public/icon.png` (if it exists). 3. Update `app/manifest.ts` if you have custom icon paths. +3. Update `app/manifest.ts` if you have custom icon paths. + +## Docker Deployment + +When deploying with Docker, please note that **Next.js inlines `NEXT_PUBLIC_` environment variables at build time**. + +This means you cannot simply change the environment variables in `docker-compose.yml` and restart the container to change the branding. You must **rebuild the image**. + +### Using Docker Compose + +1. Create a `.env` file with your custom configuration: + ```bash + NEXT_PUBLIC_APP_NAME="My Music Game" + NEXT_PUBLIC_THEME_COLOR="#ff0000" + # ... other variables + ``` + +2. Ensure your `docker-compose.yml` passes these variables as build arguments (already configured in `docker-compose.example.yml`): + ```yaml + services: + hoerdle: + build: + context: . + args: + NEXT_PUBLIC_APP_NAME: ${NEXT_PUBLIC_APP_NAME} + # ... + ``` + +3. Build and start the container: + ```bash + docker compose up --build -d + ``` diff --git a/docker-compose.example.yml b/docker-compose.example.yml index 5337d37..917e796 100644 --- a/docker-compose.example.yml +++ b/docker-compose.example.yml @@ -4,6 +4,19 @@ services: build: context: . dockerfile: Dockerfile + args: + NEXT_PUBLIC_APP_NAME: ${NEXT_PUBLIC_APP_NAME} + NEXT_PUBLIC_APP_DESCRIPTION: ${NEXT_PUBLIC_APP_DESCRIPTION} + NEXT_PUBLIC_DOMAIN: ${NEXT_PUBLIC_DOMAIN} + NEXT_PUBLIC_TWITTER_HANDLE: ${NEXT_PUBLIC_TWITTER_HANDLE} + NEXT_PUBLIC_PLAUSIBLE_DOMAIN: ${NEXT_PUBLIC_PLAUSIBLE_DOMAIN} + NEXT_PUBLIC_PLAUSIBLE_SCRIPT_SRC: ${NEXT_PUBLIC_PLAUSIBLE_SCRIPT_SRC} + NEXT_PUBLIC_THEME_COLOR: ${NEXT_PUBLIC_THEME_COLOR} + NEXT_PUBLIC_BACKGROUND_COLOR: ${NEXT_PUBLIC_BACKGROUND_COLOR} + NEXT_PUBLIC_CREDITS_ENABLED: ${NEXT_PUBLIC_CREDITS_ENABLED} + NEXT_PUBLIC_CREDITS_TEXT: ${NEXT_PUBLIC_CREDITS_TEXT} + NEXT_PUBLIC_CREDITS_LINK_TEXT: ${NEXT_PUBLIC_CREDITS_LINK_TEXT} + NEXT_PUBLIC_CREDITS_LINK_URL: ${NEXT_PUBLIC_CREDITS_LINK_URL} user: root restart: always ports: