From 45ef150e36944d456cc9440574b5ac75f2e4bbc1 Mon Sep 17 00:00:00 2001 From: Aidan Hilt <11202897+AidanHilt@users.noreply.github.com> Date: Mon, 16 Sep 2024 13:05:44 -0400 Subject: [PATCH] feat: add environment variable for API key (#831) * Added the ability to set the API key with the env var API_KEY * Adding debug statements * Updating * feat: adding env var for API key * feat: update * fix(settings/index.ts): remove a print statement that logs the API key to the console * Update en.json * docs: added documentation about API_KEY environment variable * feat: add a check to ensure API key always uses env var if provided * feat: always check the API_KEY env var at startup * chore: add back the gitkeeps under ./config, accidentally deleted in prev commit * chore: revert change made to docker-compose that was accidentally committed --- docs/using-jellyseerr/settings/general.md | 2 ++ server/lib/settings/index.ts | 12 +++++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/docs/using-jellyseerr/settings/general.md b/docs/using-jellyseerr/settings/general.md index 9cec9b9f3..61991ed0a 100644 --- a/docs/using-jellyseerr/settings/general.md +++ b/docs/using-jellyseerr/settings/general.md @@ -12,6 +12,8 @@ This is your Jellyseerr API key, which can be used to integrate Jellyseerr with If you need to generate a new API key for any reason, simply click the button to the right of the text box. +If you want to set the API key, rather than letting it be randomly generated, you can use the API_KEY environment variable. Whatever that variable is set to will be your API key. + ## Application Title If you aren't a huge fan of the name "Jellyseerr" and would like to display something different to your users, you can customize the application title! diff --git a/server/lib/settings/index.ts b/server/lib/settings/index.ts index 8c55d6c3d..074a4fcdc 100644 --- a/server/lib/settings/index.ts +++ b/server/lib/settings/index.ts @@ -611,7 +611,11 @@ class Settings { } private generateApiKey(): string { - return Buffer.from(`${Date.now()}${randomUUID()}`).toString('base64'); + if (process.env.API_KEY) { + return process.env.API_KEY; + } else { + return Buffer.from(`${Date.now()}${randomUUID()}`).toString('base64'); + } } private generateVapidKeys(force = false): void { @@ -648,6 +652,12 @@ class Settings { this.data = merge(this.data, parsedJson); + if (process.env.API_KEY) { + if (this.main.apiKey != process.env.API_KEY) { + this.main.apiKey = process.env.API_KEY; + } + } + this.save(); } return this;