Degoog Docs

Degoog Environment variables

Configure your port, paths, and optional settings.

General

Variable Description Default
DEGOOG_PORT The port your server listens on. 4444
DEGOOG_BASE_URL Base path for serving Degoog behind a reverse proxy at a sub-path. The expected value is a path like /degoog. A full URL is also accepted - https://example.com/degoog behaves the same as /degoog since only the path portion is used. A bare domain with no sub-path (e.g. https://degoog.org) has no effect since there is no path to prepend. When unset, Degoog is served at the root / as usual.

Note: the OpenSearch XML descriptor always uses only the path portion of this value so that its URLs remain valid regardless of how the variable was set.
DEGOOG_SETTINGS_PASSWORDS A comma separated list of passwords for your Settings page. If you set this, users must enter one of these passwords to access your settings (unless you are using a middleware plugin as a gate).
DEGOOG_SETTINGS_PATH Custom path for the admin settings panel. On public instances the admin panel defaults to /admin; on private instances it defaults to /settings. Set this to a hard-to-guess string to make the admin panel undiscoverable (e.g. my-secret-panel-abc123). Leading slashes are stripped automatically. Works on all instance types regardless of password configuration.

Note: on public instances the admin panel at this path is only reachable if at least one password is also configured via DEGOOG_SETTINGS_PASSWORDS. Without a password it returns 404 with no hint that it exists.
DEGOOG_PUBLIC_INSTANCE Set this to a truthy value (like true or 1) to run your instance in read-only mode. /settings will only show theme and engine toggles without any tabs, and all server-side mutation APIs will return Unauthorized.

If you also set DEGOOG_SETTINGS_PASSWORDS, a password-protected admin panel becomes available at /admin (or your DEGOOG_SETTINGS_PATH value).
DEGOOG_DISTRUST_PROXY Controls whether Degoog trusts X-Forwarded-For, X-Real-IP and X-Forwarded-Proto headers for client IP, rate limiting, IP banning and HTTPS detection. Defaults to 1 (distrust), which is the safe choice when Degoog is exposed directly to the internet, since trusting these headers lets any client spoof their source IP and protocol. Set to 0 only when Degoog sits behind a reverse proxy (nginx, caddy, traefik, etc.) that you control and that strips or rewrites these headers on incoming requests. 1
DEGOOG_OUTGOING_ALLOWED_HOSTS Comma-separated allowlist of hostnames degoog is permitted to reach for outgoing requests (search engines, autocomplete providers, plugin fetches, image proxy). Wildcards like *.example.com are accepted. When unset, no hostname restriction is applied. Use this to harden an internet-exposed instance against SSRF or to keep traffic inside an internal network.
DEGOOG_VALKEY_URL Connection URL for an optional Valkey (or any RESP-compatible server: Redis, KeyDB, Dragonfly). When set, degoog uses it as a shared cache and cross-process invalidation bus so multiple replicas share search and autocomplete results and react to settings changes instantly. When unset, all caching stays per-process in memory. Example: redis://valkey:6379.
DEGOOG_CACHE_MAX_ENTRIES Maximum number of entries per in-memory cache namespace (search, autocomplete, and each extension cache). When the cap is reached, the least-recently-used entry is evicted on insert. This only bounds the in-process L1 cache; the shared Valkey cache (if configured) is governed by Valkey's own maxmemory policy. 1000
DEGOOG_CACHE_TTL_MS Default TTL (in milliseconds) for cached search responses and autocomplete suggestions. Applied when no shorter or type-specific TTL overrides it. 43200000 (12 hours)
DEGOOG_CACHE_SHORT_TTL_MS Short TTL (in milliseconds) used when a search returned with failed engines (so the user re-fetches sooner) and by short-lived extension caches such as AI summary and spell check. 120000 (2 minutes)
DEGOOG_CACHE_NEWS_TTL_MS TTL (in milliseconds) applied to news-type search responses. Shorter than the default since news goes stale fast. 1800000 (30 minutes)
DEGOOG_BETA_STORE Set to 1 to prefer the develop branch of all store repositories over main / master when cloning or pulling. Falls back silently to the default branch if develop does not exist on the remote. Intended for extension developers and nightly testers who want to track pre-release extensions without affecting other users.
DEGOOG_WIZARD Set to false to disable the first-run setup wizard regardless of the persisted state. Useful when provisioning instances via configuration management where the wizard would otherwise gate startup.
DEGOOG_DEFAULT_SEARCH_LANGUAGE Default ISO 639-1 language code applied to all searches when searches when no language is selected by the user (e.g. en, de, it). en-US
DEGOOG_I18N Forces the UI locale for all requests, overriding the Accept-Language header (e.g. en-US, fr-FR). When set, the same locale pipeline runs as normal - only the source changes. Unset or empty: Accept-Language is used as today.
LOG_LEVEL Controls the verbosity of server-side console output. Supported levels from most to least severe: fatal, error, warn, info, log, debug. Each level includes all levels of higher severity. Set to debug to print all messages, including plugin execution times. If you use docker you can view your logs with docker compose logs -f. info
LOG_TRANSLATION Set to true to enable translation-specific log output. This is a separate toggle from LOG_LEVEL and is off by default. Enable it when debugging missing keys, locale resolution misses, or broken locale files without polluting your regular debug output. false

Docker

Variable Description Default
PUID The user ID your container process runs as. You should set this to match your host user ID. 1000
PGID The group ID your container process runs as. You should set this to match your host group ID. 1000

Plugins, themes, engines

Variable Description Default
DEGOOG_DATA_DIR The root directory degoog uses for all on-disk state (plugins, themes, engines, transports, autocomplete providers, and the settings files). Override this when you want everything in one custom location; each individual path can still be overridden via its own variable below. data (relative to cwd)
DEGOOG_PLUGINS_DIR The directory where you load custom command and slot plugins. data/plugins
DEGOOG_THEMES_DIR The directory where you load custom themes. data/themes
DEGOOG_ENGINES_DIR The directory where you load custom search engine plugins. data/engines
DEGOOG_AUTOCOMPLETE_DIR The directory where you load custom autocomplete providers. data/autocomplete
DEGOOG_TRANSPORTS_DIR The directory where you load custom transports. data/transports
DEGOOG_PLUGIN_SETTINGS_FILE The path to the JSON file that stores per-extension settings (plugins, themes, engines, autocomplete providers, transports). data/plugin-settings.json
DEGOOG_SERVER_SETTINGS_FILE The path to the JSON file that stores instance-level settings (honeypot, public-instance flag, API secret, wizard status, and the per-instance identifier used to namespace the optional shared cache). data/server-settings.json
DEGOOG_DEFAULT_ENGINES_FILE Path to the JSON file storing default enabled/disabled engines data/default-engines.json
DEGOOG_BLOCKLIST_FILE Path to the JSON file storing the ip addresses blocklist data/blocklist.json
DEGOOG_SETTINGS_TOKENS_FILE Path to the JSON file storing settings tokens data/settings-tokens.json
DEGOOG_ALIASES_FILE The path to the JSON file where your custom bang command aliases are defined. data/aliases.json