Search engine aggregator with a comprehensive plugin/extension system
See the code
Search aggregator that queries multiple engines and shows results in one place. You can add custom search engines, bang-command plugins, slot plugins (query-triggered panels above/below results or in the sidebar), and transports (custom HTTP fetch strategies like curl, FlareSolverr, or your own). The dream would be to eventually have a user made marketplace for plugins/engines.
Please check the documentation before raising issues, your questions may already have been answered.
By default the app will run on port 4444 with user 1000:1000, please check the documentation for a comprehensive list of env variables and various nuances.
mkdir -p ./data
sudo chown -R 1000:1000 ./data
Ready-to-use compose files live in docker-compose-examples/. Pick the one that fits:
| File | What it runs | When to use |
|---|---|---|
simple.yml | degoog only | Personal use, low-traffic |
valkey.yml | degoog + Valkey | Multi-replica or public instance with shared cache keeps settings and invalidation in sync |
postgres.yml | degoog + Postgres | Busy public instance with a large indexer - Postgres scales concurrent writes and FTS better than SQLite |
full.yml | degoog + Valkey + Postgres | High-traffic public instance - both shared cache and scalable indexer |
mcp.yml | degoog + degoog-mcp | Exposing Degoog to LLMs / MCP clients (Claude, Cursor, llama.cpp) next to the web UI |
# Set DEGOOG_SETTINGS_PASSWORDS before exposing this instance to the internet -
# an unlocked instance lets anyone install extensions, which runs code on the server.
podman run -d --name degoog -p 4444:4444 -v ./data:/app/data:Z -e DEGOOG_SETTINGS_PASSWORDS=changeme --restart unless-stopped ghcr.io/degoog-org/degoog:latest
[Unit]
Description=Degoog selfhosted search aggregator
Wants=network-online.target
After=network-online.target
[Container]
Image=ghcr.io/degoog-org/degoog:latest
AutoUpdate=registry
ContainerName=degoog
Environment=TZ=<Country/City>
Environment=PUID=1000
Environment=PGID=1000
# Set a password before exposing this instance to the internet - an unlocked
# instance lets anyone install extensions, which runs code on the server.
Environment=DEGOOG_SETTINGS_PASSWORDS=changeme
# Environment=DEGOOG_PUBLIC_INSTANCE=true # Add if public
UIDMap=+%U:@%U
Volume=<Path to config>:/app/data:Z
PublishPort=4444:4444
Network=degoog
[Service]
Restart=always
[Install]
WantedBy=default.target
# Set DEGOOG_SETTINGS_PASSWORDS before exposing this instance to the internet -
# an unlocked instance lets anyone install extensions, which runs code on the server.
docker run -d --name degoog -p 4444:4444 -v ./data:/app/data -e DEGOOG_SETTINGS_PASSWORDS=changeme --restart unless-stopped ghcr.io/degoog-org/degoog:latest
Degoog has a Nix flake including a package and NixOS module. Add it to your flake's inputs:
degoog = {
url = "github:degoog-org/degoog";
inputs.nixpkgs.follows = "nixpkgs";
};
Then, import and configure the module:
imports = [ inputs.degoog.nixosModules.default ];
services.degoog = {
enable = true;
configurePostgres = true;
environment = {
DEGOOG_UNIX_SOCKET = "/var/run/degoog/degoog.sock";
# Other environment variables can be found at https://degoog-org.github.io/docs/environment-variables.html
};
# Other option definitions can be found at https://github.com/degoog-org/degoog/blob/main/third-party/nix/module.nix
};
You'll need a .env file for your env variables and the following required dependencies:
git clone https://github.com/degoog-org/degoog.git
cd degoog
bun install
bun run build
bun run start
note: If HTTPS requests fail with certificate errors, install the ca-certificates package
The community Proxmox script exists, but it is currently marked as in development and not recommended for production use:
Some amazing people around the web decided to make their degoog instances available for everyone to use, and they 100% deserve a shout-out! Check out the full list here
Aside from the official store repo community members have been working hard on their own plugins and been sharing them with everyone who wants to enhance their degoog experience. You can find a bunch of them here.
Note: These have only been INITIALLY vetted, there is no way for me to keep an eye on them once they have been added to the community store repo. It's your own responsibility to make sure what you install on your system is safe.
Full customisation guide (plugins, themes, engines, transports, store, settings gate, aliases, env): documentation.
This project would have never existed if the amazing searxng developers hadn't had the idea first. This is my take on a heavily customisable search aggregrator, it's meant to be a more modular lighter alternative, you can add as much as you want to it, but the core will stay as simple as it gets.
Alternatives are what make the internet a fun place, let me share a few other aggregators you may want to try out, the beauty of open source is that there's no competition (or at least there shouldn't be, none of us do this shit for money after all).
| name | repo |
|---|---|
| searxng | https://github.com/searxng/searxng |
| 4get | https://git.lolcat.ca/lolcat/4get |
| OmniSearch | https://git.bwaaa.monster/omnisearch |
| LibreY | https://github.com/Ahwxorg/LibreY |
691 followers · starred Mar 2026
174 followers · starred May 2026
82 followers · starred Aug 2026
20 followers · starred Jun 2026
TypeScript
90.8%
SCSS
4.6%
HTML
1.9%
Python
1.1%
Search engine aggregator with a comprehensive plugin/extension system
See the code
Search aggregator that queries multiple engines and shows results in one place. You can add custom search engines, bang-command plugins, slot plugins (query-triggered panels above/below results or in the sidebar), and transports (custom HTTP fetch strategies like curl, FlareSolverr, or your own). The dream would be to eventually have a user made marketplace for plugins/engines.
Please check the documentation before raising issues, your questions may already have been answered.
By default the app will run on port 4444 with user 1000:1000, please check the documentation for a comprehensive list of env variables and various nuances.
mkdir -p ./data
sudo chown -R 1000:1000 ./data
Ready-to-use compose files live in docker-compose-examples/. Pick the one that fits:
| File | What it runs | When to use |
|---|---|---|
simple.yml | degoog only | Personal use, low-traffic |
valkey.yml | degoog + Valkey | Multi-replica or public instance with shared cache keeps settings and invalidation in sync |
postgres.yml | degoog + Postgres | Busy public instance with a large indexer - Postgres scales concurrent writes and FTS better than SQLite |
full.yml | degoog + Valkey + Postgres | High-traffic public instance - both shared cache and scalable indexer |
mcp.yml | degoog + degoog-mcp | Exposing Degoog to LLMs / MCP clients (Claude, Cursor, llama.cpp) next to the web UI |
# Set DEGOOG_SETTINGS_PASSWORDS before exposing this instance to the internet -
# an unlocked instance lets anyone install extensions, which runs code on the server.
podman run -d --name degoog -p 4444:4444 -v ./data:/app/data:Z -e DEGOOG_SETTINGS_PASSWORDS=changeme --restart unless-stopped ghcr.io/degoog-org/degoog:latest
[Unit]
Description=Degoog selfhosted search aggregator
Wants=network-online.target
After=network-online.target
[Container]
Image=ghcr.io/degoog-org/degoog:latest
AutoUpdate=registry
ContainerName=degoog
Environment=TZ=<Country/City>
Environment=PUID=1000
Environment=PGID=1000
# Set a password before exposing this instance to the internet - an unlocked
# instance lets anyone install extensions, which runs code on the server.
Environment=DEGOOG_SETTINGS_PASSWORDS=changeme
# Environment=DEGOOG_PUBLIC_INSTANCE=true # Add if public
UIDMap=+%U:@%U
Volume=<Path to config>:/app/data:Z
PublishPort=4444:4444
Network=degoog
[Service]
Restart=always
[Install]
WantedBy=default.target
# Set DEGOOG_SETTINGS_PASSWORDS before exposing this instance to the internet -
# an unlocked instance lets anyone install extensions, which runs code on the server.
docker run -d --name degoog -p 4444:4444 -v ./data:/app/data -e DEGOOG_SETTINGS_PASSWORDS=changeme --restart unless-stopped ghcr.io/degoog-org/degoog:latest
Degoog has a Nix flake including a package and NixOS module. Add it to your flake's inputs:
degoog = {
url = "github:degoog-org/degoog";
inputs.nixpkgs.follows = "nixpkgs";
};
Then, import and configure the module:
imports = [ inputs.degoog.nixosModules.default ];
services.degoog = {
enable = true;
configurePostgres = true;
environment = {
DEGOOG_UNIX_SOCKET = "/var/run/degoog/degoog.sock";
# Other environment variables can be found at https://degoog-org.github.io/docs/environment-variables.html
};
# Other option definitions can be found at https://github.com/degoog-org/degoog/blob/main/third-party/nix/module.nix
};
You'll need a .env file for your env variables and the following required dependencies:
git clone https://github.com/degoog-org/degoog.git
cd degoog
bun install
bun run build
bun run start
note: If HTTPS requests fail with certificate errors, install the ca-certificates package
The community Proxmox script exists, but it is currently marked as in development and not recommended for production use:
Some amazing people around the web decided to make their degoog instances available for everyone to use, and they 100% deserve a shout-out! Check out the full list here
Aside from the official store repo community members have been working hard on their own plugins and been sharing them with everyone who wants to enhance their degoog experience. You can find a bunch of them here.
Note: These have only been INITIALLY vetted, there is no way for me to keep an eye on them once they have been added to the community store repo. It's your own responsibility to make sure what you install on your system is safe.
Full customisation guide (plugins, themes, engines, transports, store, settings gate, aliases, env): documentation.
This project would have never existed if the amazing searxng developers hadn't had the idea first. This is my take on a heavily customisable search aggregrator, it's meant to be a more modular lighter alternative, you can add as much as you want to it, but the core will stay as simple as it gets.
Alternatives are what make the internet a fun place, let me share a few other aggregators you may want to try out, the beauty of open source is that there's no competition (or at least there shouldn't be, none of us do this shit for money after all).
| name | repo |
|---|---|
| searxng | https://github.com/searxng/searxng |
| 4get | https://git.lolcat.ca/lolcat/4get |
| OmniSearch | https://git.bwaaa.monster/omnisearch |
| LibreY | https://github.com/Ahwxorg/LibreY |
691 followers · starred Mar 2026
174 followers · starred May 2026
82 followers · starred Aug 2026
20 followers · starred Jun 2026
TypeScript
90.8%
SCSS
4.6%
HTML
1.9%
Python
1.1%