From 24129ea0f14c48e6f08ca1e30e50e60176439314 Mon Sep 17 00:00:00 2001 From: Ishaan Jaff Date: Thu, 13 Jun 2024 20:54:05 -0700 Subject: [PATCH] docs - custom logout url --- docs/my-website/docs/proxy/self_serve.md | 16 +++++++++++++++- docs/my-website/img/ui_logout.png | Bin 0 -> 27757 bytes 2 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 docs/my-website/img/ui_logout.png diff --git a/docs/my-website/docs/proxy/self_serve.md b/docs/my-website/docs/proxy/self_serve.md index 568e6541a..27fefc7f4 100644 --- a/docs/my-website/docs/proxy/self_serve.md +++ b/docs/my-website/docs/proxy/self_serve.md @@ -123,4 +123,18 @@ LiteLLM Enterprise: Enable [SSO login](./ui.md#setup-ssoauth-for-ui) 4. User can now create their own keys - \ No newline at end of file + + + +## Advanced +### Setting custom logout URLs + +Set `PROXY_LOGOUT_URL` in your .env if you want users to get redirected to a specific URL when they click logout + +``` +export PROXY_LOGOUT_URL="https://www.google.com" +``` + + + + diff --git a/docs/my-website/img/ui_logout.png b/docs/my-website/img/ui_logout.png new file mode 100644 index 0000000000000000000000000000000000000000..1b45ed06495875db804c784c3a8bf4023951e40b GIT binary patch literal 27757 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