Add environment variables to make it easy for anyone to host

This commit is contained in:
Gabriel Brown 2025-02-28 11:50:53 -06:00
parent 69239287b2
commit c75f426065
4 changed files with 100 additions and 48 deletions

20
.env.example Normal file
View File

@ -0,0 +1,20 @@
# All environment variables must be prefixed with VITE_ to be seen by client.
# Self-hosted Services URLs.
VITE_BANG_URL="https://bang."
VITE_GITEA_URL="https://git."
VITE_SEARXNG_URL="https://search."
VITE_OPENWEBUI_URL="https://chat."
# Set default bang here. For example "g" would be Google.
# Google is the default if you don't set this.
# 's' is for your searxng instance, replacing startpage
VITE_DEFAULT_BANG="s"
# SPECIFIC MODELS FOR OPENWEBUI
# Local
VITE_LLAMA_MODEL="llama3.1" # !llama
VITE_DEEPSEEK_MODEL="deepseek-r1:8b" # !r1
# Remote
VITE_OPENAI_MODEL="gpt-4o-mini" # !openai
VITE_CLAUDE_MODEL="anthropic/claude-3.5-sonnet" # !claude

5
.gitignore vendored
View File

@ -22,3 +22,8 @@ dist-ssr
*.njsproj
*.sln
*.sw?
# ENV
.env
.env*
!.env.example

View File

@ -1,113 +1,139 @@
// This file was (mostly) ripped from https://duckduckgo.com/bang.js
const SEARXNG_URL = import.meta.env.VITE_SEARXNG_URL as string;
const GITEA_URL = import.meta.env.VITE_GITEA_URL as string;
const OPENWEBUI_URL = import.meta.env.VITE_OPENWEBUI_URL as string;
const LLAMA_MODEL = import.meta.env.VITE_LLAMA_MODEL.replace(":", "%3A") as string;
const DEEPSEEK_MODEL = import.meta.env.VITE_DEEPSEEK_MODEL.replace(":", "%3A") as string;
const OPENAI_MODEL = import.meta.env.VITE_OPENAI_MODEL as string;
const CLAUDE_MODEL = import.meta.env.VITE_CLAUDE_MODEL.replace("/", "%2F") as string;
export const bangs = [
{
c: "Online Services",
d: "search.gibbyb.com",
d: SEARXNG_URL,
r: 0,
s: "GibbyB",
s: "Searxng",
sc: "Search",
t: "sg",
u: "https://search.gibbyb.com/?q={{{s}}}",
t: "s",
u: `${SEARXNG_URL}/?q={{{s}}}`,
},
{
c: "Tech",
d: "git.gibbyb.com",
d: GITEA_URL,
r: 0,
s: "Gitea",
sc: "Cryptocurrency",
t: "tea",
u: "https://git.gibbyb.com/?repo-search-query={{{s}}}",
u: `${GITEA_URL}/?repo-search-query={{{s}}}`,
},
{
c: "AI",
d: "chat.gibbyb.com",
d: OPENWEBUI_URL,
r: 0,
s: "GibbyB",
s: "OpenWebUI",
sc: "AI",
t: "ai",
u: "https://chat.gibbyb.com/?q={{{s}}}",
u: `${OPENWEBUI_URL}/?q={{{s}}}`,
},
{
c: "AI",
d: "chat.gibbyb.com",
d: OPENWEBUI_URL,
r: 0,
s: "GibbyB",
s: "OpenWebUI",
sc: "AI",
t: "claude",
u: "https://chat.gibbyb.com/?models=anthropic%2Fclaude-3.5-sonnet&q={{{s}}}",
t: "c",
u: `${OPENWEBUI_URL}/?q={{{s}}}`,
},
{
c: "AI",
d: "chat.gibbyb.com",
d: OPENWEBUI_URL,
r: 0,
s: "GibbyB",
s: "OpenWebUI",
sc: "AI",
t: "llama",
u: "https://chat.gibbyb.com/?models=llama3.1&q={{{s}}}",
u: `${OPENWEBUI_URL}/?models=${LLAMA_MODEL}&q={{{s}}}`,
},
{
c: "AI",
d: "chat.gibbyb.com",
d: OPENWEBUI_URL,
r: 0,
s: "GibbyB",
sc: "AI",
t: "r17b",
u: "https://chat.gibbyb.com/?models=deepseek-r1%3A7b&q={{{s}}}",
},
{
c: "AI",
d: "chat.gibbyb.com",
r: 0,
s: "GibbyB",
s: "OpenWebUI",
sc: "AI",
t: "r1",
u: "https://chat.gibbyb.com/?models=deepseek-r1%3A8b&q={{{s}}}",
u: `${OPENWEBUI_URL}/?models=${DEEPSEEK_MODEL}&q={{{s}}}`,
},
{
c: "AI",
d: "chat.gibbyb.com",
d: OPENWEBUI_URL,
r: 0,
s: "GibbyB",
s: "OpenWebUI",
sc: "AI",
t: "r132b",
u: "https://chat.gibbyb.com/?models=deepseek-r1%3A32b&q={{{s}}}",
t: "r1-7b",
u: `${OPENWEBUI_URL}/?models=deepseek-r1%3A7b&q={{{s}}}`,
},
{
c: "AI",
d: "chat.gibbyb.com",
d: OPENWEBUI_URL,
r: 0,
s: "GibbyB",
s: "OpenWebUI",
sc: "AI",
t: "r1-32b",
u: `${OPENWEBUI_URL}/?models=deepseek-r1%3A32b&q={{{s}}}`,
},
{
c: "AI",
d: OPENWEBUI_URL,
r: 0,
s: "OpenWebUI",
sc: "AI",
t: "claude",
u: `${OPENWEBUI_URL}/?models=${CLAUDE_MODEL}&q={{{s}}}`,
},
{
c: "AI",
d: OPENWEBUI_URL,
r: 0,
s: "OpenWebUI",
sc: "AI",
t: "openai",
u: `${OPENWEBUI_URL}/?models=${OPENAI_MODEL}&q={{{s}}}`,
},
{
c: "AI",
d: OPENWEBUI_URL,
r: 0,
s: "OpenWebUI",
sc: "AI",
t: "o3-mini",
u: "https://chat.gibbyb.com/?models=o3-mini&q={{{s}}}",
u: `${OPENWEBUI_URL}/?models=o3-mini&q={{{s}}}`,
},
{
c: "AI",
d: "chat.gibbyb.com",
d: OPENWEBUI_URL,
r: 0,
s: "GibbyB",
s: "OpenWebUI",
sc: "AI",
t: "o1",
u: "https://chat.gibbyb.com/?models=o1&q={{{s}}}",
u: `${OPENWEBUI_URL}/?models=o1&q={{{s}}}`,
},
{
c: "AI",
d: "chat.gibbyb.com",
d: OPENWEBUI_URL,
r: 0,
s: "GibbyB",
s: "OpenWebUI",
sc: "AI",
t: "4o-mini",
u: "https://chat.gibbyb.com/?models=gpt-4o-mini&q={{{s}}}",
u: `${OPENWEBUI_URL}/?models=gpt-4o-mini&q={{{s}}}`,
},
{
c: "AI",
d: "chat.gibbyb.com",
d: OPENWEBUI_URL,
r: 0,
s: "GibbyB",
s: "OpenWebUI",
sc: "AI",
t: "4o",
u: "https://chat.gibbyb.com/?models=gpt-4o&q={{{s}}}",
u: `${OPENWEBUI_URL}/?models=gpt-4o&q={{{s}}}`,
},
{
c: "AI",
@ -98415,7 +98441,7 @@ export const bangs = [
r: 12469,
s: "startpage.com",
sc: "Search",
t: "s",
t: "startpage",
u: "http://startpage.com/do/metasearch.pl?query={{{s}}}",
},
{

View File

@ -18,7 +18,7 @@ function noSearchDefaultPageRender() {
<input
type="text"
class="url-input"
value="https://bang.gbrown.org?q=%s"
value="${import.meta.env.VITE_BANG_URL}?q=%s"
readonly
/>
<button class="copy-button">
@ -41,7 +41,7 @@ function noSearchDefaultPageRender() {
</tr>
<tr>
<td><b>Engine URL:</b></td>
<td>https://bang.gbrown.org?q=%s</td>
<td>${import.meta.env.VITE_BANG_URL}?q=%s</td>
</tr>
<tr>
<td><b>Alias:</b></td>
@ -113,7 +113,8 @@ function noSearchDefaultPageRender() {
});
}
const LS_DEFAULT_BANG = localStorage.getItem("default-bang") ?? "sg";
const envDefaultBang = import.meta.env.VITE_DEFAULT_BANG ?? "g";
const LS_DEFAULT_BANG = localStorage.getItem("default-bang") ?? envDefaultBang;
const defaultBang = bangs.find((b) => b.t === LS_DEFAULT_BANG);
function getBangredirectUrl() {