Compare commits

...

32 Commits

Author SHA1 Message Date
9f366eb8d6 Merge pull request 'removed uneccessary pipelines relevant parts' (#116) from dev into main
Reviewed-on: #116
2026-07-28 09:22:25 +00:00
gyurix
de0e5ae45d removed uneccessary pipelines relevant parts 2026-07-28 11:21:38 +02:00
27bd78b7f0 Merge pull request 'changed ENABLE_PERSISTENT_CONFIG variable into openwebui' (#115) from dev into main
Reviewed-on: #115
2026-07-18 20:38:59 +00:00
gyurix
a7e85af935 changed ENABLE_PERSISTENT_CONFIG variable into openwebui 2026-07-18 22:38:33 +02:00
8e32192383 Merge pull request 'setup crawl4ai correctly' (#114) from dev into main
Reviewed-on: #114
2026-07-18 12:31:33 +00:00
gyurix
88d63ab725 setup crawl4ai correctly 2026-07-18 14:31:14 +02:00
6279678f31 Merge pull request 'correcting searxng related parameters' (#113) from dev into main
Reviewed-on: #113
2026-07-18 12:20:22 +00:00
gyurix
8ca027dfc3 correcting searxng related parameters 2026-07-18 14:20:03 +02:00
47620b1139 Merge pull request 'dev' (#112) from dev into main
Reviewed-on: #112
2026-07-18 11:40:31 +00:00
gyurix
6ac1c69393 updated persistent config settings in openwebui 2026-07-18 13:40:00 +02:00
gyurix
e724d8b2e7 updated searxng configurations 2026-07-18 13:23:02 +02:00
ea11a0a0b2 Merge pull request 'fromatting' (#111) from dev into main
Reviewed-on: #111
2026-07-16 22:26:45 +00:00
gyurix
f53aebb8d3 fromatting 2026-07-17 00:26:17 +02:00
f16eb6ada7 Merge pull request 'formatting' (#110) from dev into main
Reviewed-on: #110
2026-07-16 22:21:28 +00:00
gyurix
16e9a2572d formatting 2026-07-17 00:21:08 +02:00
ac5dd75457 Merge pull request 'formatting errors' (#109) from dev into main
Reviewed-on: #109
2026-07-16 22:11:17 +00:00
gyurix
decc823119 formatting errors 2026-07-17 00:10:58 +02:00
c87763e7b1 Merge pull request 'formatting searxng settings' (#108) from dev into main
Reviewed-on: #108
2026-07-16 22:04:42 +00:00
gyurix
a41b7902ea formatting searxng settings 2026-07-17 00:04:21 +02:00
e4e5710317 Merge pull request 'correcting init in openwebui searxng content' (#107) from dev into main
Reviewed-on: #107
2026-07-16 21:55:50 +00:00
gyurix
10badeb218 correcting init in openwebui searxng content 2026-07-16 19:18:05 +02:00
5156345453 Merge pull request 'feat(openwebui): add SearXNG config and Pipelines API key' (#106) from dev into main
Reviewed-on: #106
2026-07-16 16:34:32 +00:00
gyurix
ba68e3cdd3 feat(openwebui): add SearXNG config and Pipelines API key
Added default SearXNG configuration files (settings.yml and limiter.toml) to the service startup command, enabling proper setup with user-agent, bind address, and rate limiting. Introduced a new required PIPELINES_API_KEY environment variable with auto-generation using openssl, ensuring pipeline authentication is configured out of the box.
2026-07-16 18:33:42 +02:00
de5b0f671a Merge pull request 'feat(openwebui): add web search config and pipelines secret' (#105) from dev into main
Reviewed-on: #105
2026-07-16 13:17:01 +00:00
gyurix
7ffb4a598a feat(openwebui): add web search config and pipelines secret
- Introduce `PIPELINES_API_KEY` in the secrets file to secure pipelines communication
- Replace hardcoded RAG and web search URLs with template variables, enabling flexible configuration
- Add new template variables (`ENABLE_WEB_SEARCH`, `WEB_SEARCH_ENGINE`, `WEB_LOADER_ENGINE`, `SEARXNG_QUERY_URL`, `EXTERNAL_WEB_LOADER_URL`) with defaults
- Include OpenWebUI secret env file in the service definition for consistent secret injection
- Set `ENABLE_PERSISTENT_CONFIG` to false to align with the parametrized deployment approach

These changes decouple service endpoints from the deployment template, allowing users to easily customize web search and RAG integrations without modifying service definitions.
2026-07-16 15:08:13 +02:00
6491f15702 Merge pull request 'feat(openwebui): integrate searxng and crawl4ai, rename containers for consistency' (#104) from dev into main
Reviewed-on: #104
2026-07-15 21:30:58 +00:00
gyurix
64fad037ae feat(openwebui): add CRAWL4AI_SECRET for Crawl4AI service
Add a new required secret key `SECRET_KEY` referencing `CRAWL4AI_SECRET` in the openwebui-secret configuration, and define the corresponding template entry with generation via `openssl hex 32`. This enables secure authentication for the Crawl4AI integration.
2026-07-15 13:52:05 +02:00
gyurix
8dc456dcda feat(openwebui): integrate searxng and crawl4ai, rename containers for consistency
Added new searxng and crawl4ai services with their secrets and environment variables for web search and crawling. Updated existing container names to use `-app` suffix and adjusted references. Added necessary directory creation for new services.
2026-07-15 13:37:21 +02:00
7d6b4f798d Merge pull request 'formatting roundcube template' (#103) from dev into main
Reviewed-on: #103
2026-07-14 14:08:54 +00:00
gyurix
a6a110ec5c formatting roundcube template 2026-07-14 16:08:26 +02:00
6b8c8ee80f Merge pull request 'keep short the descriptions' (#102) from dev into main
Reviewed-on: #102
2026-07-14 14:03:04 +00:00
gyurix
841c088f50 keep short the descriptions 2026-07-14 16:02:30 +02:00
4 changed files with 141 additions and 59 deletions
+11 -1
View File
@@ -5,12 +5,22 @@
"POSTGRES_PASSWORD": "#POSTGRES_PASSWORD",
"POSTGRES_ROOT_PASSWORD": "#POSTGRES_ROOT_PASSWORD"
},
"openwebuisearxng": {
"SEARXNG_SECRET": "#SEARXNG_SECRET"
},
"openwebuicrawl4ai": {
"CRAWL4AI_API_TOKEN": "#CRAWL4AI_API_TOKEN",
"SECRET_KEY": "#CRAWL4AI_SECRET"
},
"openwebuiapp": {
"WEBUI_ADMIN_NAME": "#WEBUI_ADMIN_NAME",
"WEBUI_ADMIN_EMAIL": "#WEBUI_ADMIN_EMAIL",
"WEBUI_ADMIN_PASSWORD": "#WEBUI_ADMIN_PASSWORD",
"WEBUI_SECRET_KEY": "#WEBUI_SECRET_KEY",
"OPENAI_API_KEY": "#OPENAI_API_KEY",
"DATABASE_URL": "postgres://#POSTGRES_USER:#POSTGRES_PASSWORD@openwebuipostgres-db:5432/#POSTGRES_DB"
"HF_TOKEN": "#HF_TOKEN",
"DATABASE_URL": "postgres://#POSTGRES_USER:#POSTGRES_PASSWORD@openwebuipostgres-db:5432/#POSTGRES_DB",
"EXTERNAL_WEB_SEARCH_API_KEY": "#SEARXNG_SECRET",
"EXTERNAL_WEB_LOADER_API_KEY": "#CRAWL4AI_API_TOKEN"
}
}
+55 -29
View File
@@ -24,7 +24,7 @@
],
"START_ON_BOOT": "false",
"ENTRYPOINT": "sh -c",
"CMD": "mkdir -p /etc/user/data/openwebui/data && mkdir -p /etc/user/data/openwebui/db && mkdir -p /etc/user/data/openwebui/pipelines && mkdir -p /etc/user/data/openwebui/qdrant",
"CMD": "mkdir -p /etc/user/data/openwebui/data && mkdir -p /etc/user/data/openwebui/db && mkdir -p /etc/user/data/openwebui/qdrant && mkdir -p /etc/user/data/openwebui/searxng && mkdir -p /etc/user/data/openwebui/crawl4ai && printf %s c2VydmVyOgogIGJpbmRfYWRkcmVzczogMC4wLjAuMAogIHBvcnQ6IDgwODAKICBsaW1pdGVyOiBmYWxzZQogIHB1YmxpY19pbnN0YW5jZTogZmFsc2UKc2VhcmNoOgogIGZvcm1hdHM6CiAgICAtIGh0bWwKICAgIC0ganNvbgp1aToKICBzdGF0aWNfdXNlX2hhc2g6IHRydWUKcmVkaXM6CiAgdXJsOiBmYWxzZQpvdXRnb2luZzoKICB1c2VyYWdlbnQ6IE1vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdpbjY0OyB4NjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS8xMzEuMC4wLjAgU2FmYXJpLzUzNy4zNgp1c2VfZGVmYXVsdF9zZXR0aW5nczoKICBlbmdpbmVzOgogICAgcmVtb3ZlOgogICAgICAtIGFobWlhCiAgICAgIC0gdG9yY2gKICAgICAgLSB3aWtpZGF0YQpib3RkZXRlY3Rpb246CiAgaXBfbGlzdHM6CiAgICBwYXNzX2lwOgogICAgICAtIDAuMC4wLjAvMAogICAgICAtIDo6LzA= | base64 -d > /etc/user/data/openwebui/searxng/settings.yml && printf %s W2JvdGRldGVjdGlvbi5pcF9saW1pdF0KbGlua190b2tlbiA9IGZhbHNlCg== | base64 -d > /etc/user/data/openwebui/searxng/limiter.toml",
"PRE_START": "null",
"POST_START": "null"
},
@@ -62,10 +62,10 @@
{
"IMAGE": "qdrant/qdrant:latest",
"UPDATE": "true",
"NAME": "openwebui-qdrant",
"NAME": "openwebuiqdrant-app",
"MEMORY": "1024M",
"NETWORK": "openwebui-net",
"SELECTOR": "openwebui-qdrant",
"SELECTOR": "openwebuiqdrant-app",
"VOLUMES": [
{
"SOURCE": "/etc/user/data/openwebui/qdrant",
@@ -93,43 +93,60 @@
"POST_START": "null"
},
{
"IMAGE": "ghcr.io/open-webui/pipelines:main",
"IMAGE": "searxng/searxng:latest",
"UPDATE": "true",
"NAME": "openwebui-pipelines",
"MEMORY": "1024M",
"NAME": "openwebuisearxng-app",
"MEMORY": "512M",
"NETWORK": "openwebui-net",
"SELECTOR": "openwebui-pipelines",
"SELECTOR": "openwebuisearxng-app",
"VOLUMES": [
{
"SOURCE": "/etc/user/data/openwebui/pipelines",
"DEST": "/app/pipelines",
"SOURCE": "/etc/user/data/openwebui/searxng",
"DEST": "/etc/searxng",
"TYPE": "rw"
}
],
"PORTS": [
{
"SOURCE": "null",
"DEST": "9099",
"DEST": "8080",
"TYPE": "tcp"
}
],
"ENVS": [
"ENV_FILES": [
"/etc/user/secret/openwebui/openwebui.json"
],
"EXTRA": "--restart always",
"DEPEND": [],
"START_ON_BOOT": "false",
"CMD": "null",
"PRE_START": "null",
"POST_START": "null"
},
{
"IMAGE": "unclecode/crawl4ai:latest",
"UPDATE": "true",
"NAME": "openwebuicrawl4ai-app",
"MEMORY": "1024M",
"NETWORK": "openwebui-net",
"SELECTOR": "openwebuicrawl4ai-app",
"VOLUMES": [
{
"OPENAI_API_BASE_URL": "#OPENAI_API_BASE_URL"
},
{
"VECTOR_DB": "qdrant"
},
{
"QDRANT_HOST": "openwebui-qdrant"
},
{
"QDRANT_PORT": "6333"
},
{
"QDRANT_URI": "http://openwebui-qdrant:6333"
"SOURCE": "/etc/user/data/openwebui/crawl4ai",
"DEST": "/app/data",
"TYPE": "rw"
}
],
"PORTS": [
{
"SOURCE": "null",
"DEST": "11235",
"TYPE": "tcp"
}
],
"ENV_FILES": [
"/etc/user/secret/openwebui/openwebui.json"
],
"EXTRA": "--restart always",
"DEPEND": [],
"START_ON_BOOT": "false",
@@ -159,6 +176,12 @@
}
],
"ENVS": [
{
"ENABLE_PERSISTENT_CONFIG": "false"
},
{
"HF_HUB_OFFLINE": "#DISABLE_HUGGINGFACE"
},
{
"OPENAI_API_BASE_URL": "#OPENAI_API_BASE_URL"
},
@@ -166,19 +189,22 @@
"VECTOR_DB": "qdrant"
},
{
"QDRANT_HOST": "openwebui-qdrant"
"QDRANT_URI": "http://openwebuiqdrant-app:6333"
},
{
"QDRANT_PORT": "6333"
"ENABLE_WEB_SEARCH": "#ENABLE_WEB_SEARCH"
},
{
"QDRANT_URI": "http://openwebui-qdrant:6333"
"WEB_SEARCH_ENGINE": "#WEB_SEARCH_ENGINE"
},
{
"ENABLE_RAG_PIPELINE": "True"
"WEB_LOADER_ENGINE": "#WEB_LOADER_ENGINE"
},
{
"RAG_PIPELINE_URL": "http://openwebui-pipelines:9099/v1"
"SEARXNG_QUERY_URL": "#SEARXNG_QUERY_URL"
},
{
"EXTERNAL_WEB_LOADER_URL": "#EXTERNAL_WEB_LOADER_URL"
}
],
"ENV_FILES": [
+71
View File
@@ -55,6 +55,42 @@
"advanced": "true",
"type": "password"
},
{
"description": "Hugging Face token",
"key": "HF_TOKEN",
"value": "",
"info": "Optional Hugging Face API token for TTS and model access features.",
"advanced": "true",
"type": "password"
},
{
"description": "Disable Hugging Face requests",
"key": "DISABLE_HUGGINGFACE",
"value": "1",
"info": "Set to 1 to disable all outgoing requests to huggingface.co at startup. Set to 0 or leave empty to allow Hugging Face access.",
"advanced": "true"
},
{
"description": "SearXNG secret key",
"key": "SEARXNG_SECRET",
"value": "",
"required": "true",
"generated": "openssl|hex|32"
},
{
"description": "Crawl4AI API token",
"key": "CRAWL4AI_API_TOKEN",
"value": "",
"required": "true",
"generated": "random|md5|24"
},
{
"description": "Crawl4AI secret key",
"key": "CRAWL4AI_SECRET",
"value": "",
"required": "true",
"generated": "openssl|hex|32"
},
{
"description": "Postgres database name",
"key": "POSTGRES_DB",
@@ -82,6 +118,41 @@
"value": "",
"required": "true",
"generated": "random|sha256|20"
},
{
"description": "Enable web search",
"key": "ENABLE_WEB_SEARCH",
"value": "true",
"info": "Optional web search enabling, keep it empty if you don't want it",
"advanced": "true"
},
{
"description": "Web search engine",
"key": "WEB_SEARCH_ENGINE",
"value": "searxng",
"info": "Optional web search engine Searxng, keep it empty if you don't want it or define any other if you have",
"advanced": "true"
},
{
"description": "External web search engine",
"key": "WEB_LOADER_ENGINE",
"value": "external",
"info": "If optional web search engine defined, keep it as is, otherwise keep it empty",
"advanced": "true"
},
{
"description": "Web",
"key": "SEARXNG_QUERY_URL",
"value": "http://openwebuisearxng-app:8080/search",
"info": "Optional web search engine Searxng, keep it empty if you don't want it",
"advanced": "true"
},
{
"description": "External web search engine",
"key": "EXTERNAL_WEB_LOADER_URL",
"value": "http://openwebuicrawl4ai-app:11235/crawl",
"info": "Optional crawl4ai application url, keep it as is, otherwise keep it empty",
"advanced": "true"
}
]
}
+3 -28
View File
@@ -6,54 +6,40 @@
"icon": "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHZpZXdCb3g9IjkuMTQgMTQxLjggNTczLjY1IDU3My42NSI+CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Ci5zdDB7ZmlsbC1ydWxlOmV2ZW5vZGQ7Y2xpcC1ydWxlOmV2ZW5vZGQ7ZmlsbDojNDA0RjU0O30KLnN0MXtmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZDtmaWxsOiNFNUU1RTU7fQouc3Qye2ZpbGwtcnVsZTpldmVub2RkO2NsaXAtcnVsZTpldmVub2RkO2ZpbGw6I0NDQ0NDQzt9Ci5zdDN7ZmlsbC1ydWxlOmV2ZW5vZGQ7Y2xpcC1ydWxlOmV2ZW5vZGQ7ZmlsbDojMzdCRUZGO30KPC9zdHlsZT4KPHBvbHlnb24gY2xhc3M9InN0MyIgcG9pbnRzPSI1ODIuNzksNTQ5Ljc3IDI5NS45NiwzODQuMSAyOTUuOTYsMjA3LjI3IDU4Mi43OSwzNzIuOTUgIi8+Cjxwb2x5Z29uIGNsYXNzPSJzdDAiIHBvaW50cz0iOS4xNCw1NDkuNzcgMjk1Ljk2LDM4NC4xIDI5NS45NiwyMDcuMjcgOS4xNCwzNzIuOTUgIi8+CjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik0yOTUuOTYsMTQxLjhjMTA5LjU2LDAsMTk4LjQxLDg4Ljg1LDE5OC40MSwxOTguNDFjMCwxMDkuNTYtODguODUsMTk4LjQxLTE5OC40MSwxOTguNDEgYy0xMDkuNTYsMC0xOTguNDEtODguODUtMTk4LjQxLTE5OC40MUM5Ny41NSwyMzAuNjUsMTg2LjQsMTQxLjgsMjk1Ljk2LDE0MS44Ii8+CjxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik0yOTUuOTYsMTQxLjhjMTA5LjYsMCwxOTguNDgsODguODUsMTk4LjQ4LDE5OC40MWMwLDEwOS41Ni04OC44OCwxOTguNDEtMTk4LjQ4LDE5OC40MQljLTYyLjkxLTQyLjM0LTg4Ljk0LTEyNy42NC04OC45NC0xOTguM1MyMzMuMDUsMTg0LjIyLDI5NS45NiwxNDEuOCIvPgo8cG9seWdvbiBjbGFzcz0ic3QzIiBwb2ludHM9IjU4Mi43OSwzNzIuOTUgMjk1Ljk2LDUzOC42MiAyOTUuOTYsNzE1LjQ1IDU4Mi43OSw1NDkuNzcgIi8+Cjxwb2x5Z29uIGNsYXNzPSJzdDAiIHBvaW50cz0iOS4xNCwzNzIuOTUgMjk1Ljk2LDUzOC42MiAyOTUuOTYsNzE1LjQ1IDkuMTQsNTQ5Ljc3ICIvPgo8L3N2Zz4K",
"fields": [
{
"title": "Domain",
"details": "The domain name where Roundcube webmail will be accessible. For example: mail.example.com",
"description": "Domain",
"key": "DOMAIN",
"value": "",
"required": "true"
},
{
"title": "IMAP Host",
"details": "The hostname of your IMAP email server for receiving emails. For example: imap.example.com or mail.example.com",
"description": "IMAP host",
"key": "DEFAULT_HOST",
"value": "",
"required": "true"
},
{
"title": "IMAP Port",
"details": "The port number used to connect to your IMAP server. Default is 993 for IMAP SSL/TLS connections.",
"description": "IMAP port",
"key": "DEFAULT_PORT",
"value": "993"
},
{
"title": "SMTP Server",
"details": "The hostname of your SMTP email server for sending emails. For example: smtp.example.com or mail.example.com",
"description": "SMTP server",
"key": "SMTP_SERVER",
"value": "",
"required": "true"
},
{
"title": "SMTP Port",
"details": "The port number used to connect to your SMTP server. Default is 465 for SMTP SSL/TLS connections, or 587 for STARTTLS.",
"description": "SMTP port",
"key": "SMTP_PORT",
"value": "465"
},
{
"title": "SMTP Username",
"details": "The username used to authenticate with the SMTP server. Often this is your full email address.",
"description": "SMTP username",
"key": "SMTP_USER",
"value": "",
"advanced": "true"
},
{
"title": "SMTP Password",
"details": "The password used to authenticate with the SMTP server for sending outgoing email.",
"description": "SMTP password",
"key": "SMTP_PASSWORD",
"value": "",
@@ -61,32 +47,27 @@
"type": "password"
},
{
"title": "Skip Host Validation",
"details": "Set to true to disable SSL certificate validation when connecting to IMAP/SMTP servers. Recommended to keep as false for security.",
"info": "Set to true to disable SSL certificate validation",
"description": "Skip host validation",
"key": "SKIP_HOST_VALIDATION",
"value": "false",
"advanced": "true"
},
{
"title": "Plugins",
"details": "Comma-separated list of Roundcube plugins to enable. Default includes calendar and password change plugins.",
"info": "Comma-separated list of Roundcube plugins to enable",
"description": "Plugins",
"key": "PLUGINS",
"value": "calendar,password",
"advanced": "true"
},
{
"title": "Upload Max Filesize",
"details": "Maximum allowed file size for email attachments. Use format like 5M, 10M, 25M, or 1G for larger limits.",
"info": "Maximum allowed file size for email attachments",
"description": "Upload max filesize",
"key": "UPLOAD_MAX_FILESIZE",
"value": "50M",
"advanced": "true"
},
{
"title": "Postgres Database Name",
"details": "The name of the PostgreSQL database that Roundcube will use to store contacts, preferences, and other data. This value is auto-generated.",
"description": "Postgres database name",
"key": "POSTGRES_DB",
"value": "",
@@ -94,8 +75,6 @@
"generated": "time|md5|8"
},
{
"title": "Postgres Username",
"details": "The username for connecting to the PostgreSQL database. This value is auto-generated for security.",
"description": "Postgres username",
"key": "POSTGRES_USER",
"value": "",
@@ -103,8 +82,6 @@
"generated": "time|md5|8"
},
{
"title": "Postgres User Password",
"details": "The password for the PostgreSQL database user. This value is auto-generated and should be kept secure.",
"description": "Postgres password for user",
"key": "POSTGRES_PASSWORD",
"value": "",
@@ -112,8 +89,6 @@
"generated": "random|md5|12"
},
{
"title": "Postgres Root Password",
"details": "The root/admin password for the PostgreSQL database. This value is auto-generated and should be kept secure.",
"description": "Postgres root user password",
"key": "POSTGRES_ROOT_PASSWORD",
"value": "",