[{"data":1,"prerenderedAt":175},["ShallowReactive",2],{"seo-verification":3,"blog-open-source-ai-stack-vps-ollama-openwebui-n8n-en":6},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"key":7,"data":8},"blog-open-source-ai-stack-vps-ollama-openwebui-n8n-en",{"id":9,"slug":10,"slugs":11,"title":15,"excerpt":16,"readTime":17,"views":18,"isPinned":19,"publishedAt":20,"updatedAt":21,"category":22,"categories":28,"featuredImage":30,"bgImage":31,"posterImage":32,"relatedSolution":33,"intro":36,"sections":37,"ctaTitle":115,"ctaBody":116,"ctaButton":117,"ctaUrl":118,"relatedPosts":119},359,"open-source-ai-stack-vps-ollama-openwebui-n8n",{"fr":12,"en":10,"ar":13,"es":14},"construire-stack-ia-open-source-vps","بيئة-ذكاء-اصطناعي-ذاتية-الاستضافة-vps","stack-ia-open-source-vps-ollama-openwebui-n8n","Open source AI stack on VPS: Ollama, Open WebUI and n8n","Assemble Ollama, Open WebUI and n8n on a single VPS: local LLM engine, chat interface and automation, 100% self-hosted without any cloud API.",8,0,false,"2026-09-18T00:00:00+00:00","2026-09-19T02:00:43+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},1,"Artificial Intelligence","intelligence-artificielle","bg-purple-500\u002F10 text-purple-400","ia",[29],{"id":23,"name":24,"slug":25,"color":26,"icon":27},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fconstruire-stack-ia-open-source-vps-poster.svg",{"categorySlug":34,"appSlug":35},"artificial-intelligence","open-webui","Ollama runs an LLM directly on your server. Open WebUI adds a multi-user chat interface on top of it. n8n connects both to your tools to automate AI pipelines — summaries, classification, content generation. All three are open source, each has an official Docker image, and their combined GitHub stars exceed 560,000: Ollama and n8n each approach 205,000 stars, Open WebUI exceeds 152,000. This combination is regularly cited on r\u002Fselfhosted as the most requested one for building a complete self-hosted AI pipeline in September 2026. This guide shows you how to assemble them on a single VPS and make them work together without sending a single token to a third-party cloud API.",[38,42,54,57,82,86,89,109,112],{"type":39,"title":40,"body":41},"h2","Why assemble this stack rather than using each tool separately","Ollama, Open WebUI and n8n are regularly cited together on r\u002Fselfhosted as the most requested combination for a complete self-hosted AI pipeline. The reason is straightforward: taken separately, each tool solves one third of the problem. Ollama exposes an OpenAI-compatible local API — but no interface for your users. Open WebUI provides that interface — but without automation. n8n orchestrates workflows — but without an embedded LLM engine, it must call an external paid API. All three together form an autonomous pipeline: inference stays on your machine, the chat is accessible from a browser, and your automations directly consume Ollama's local API via n8n's native HTTP Request node, without any third-party plugin and without per-token cost. All data — prompts, documents, conversation histories — stays in your Docker volumes, on your own infrastructure.",{"type":43,"title":44,"items":45},"ul","What the stack delivers concretely",[46,47,48,49,50,51,52,53],"**Private inference** — Mistral 7B, Llama 3, Phi-3 or any GGUF model runs locally; no prompt ever leaves your VPS.","**Multi-user chat interface** — Open WebUI exposes separate accounts, isolated histories and an endpoint compatible with Ollama's OpenAI API.","**Automation without plugins** — n8n consumes `http:\u002F\u002Follama:11434` via its native HTTP Request node; the n8n.io\u002Fintegrations documentation confirms no additional dependency is required.","**Predictable cost** — a single monthly VPS price replaces per-token fees from a cloud API; 8 GB of RAM is sufficient for Mistral 7B, Open WebUI and n8n in queue mode.","**Version control** — each tool updates independently; no forced migration imposed by a SaaS vendor.","**Full portability** — a `docker compose down && docker compose up` is enough to migrate the stack to a more powerful VPS; Docker volumes carry all state.","**Verified official Docker images** — `docker.io\u002Follama\u002Follama`, `ghcr.io\u002Fopen-webui\u002Fopen-webui` and `docker.io\u002Fn8nio\u002Fn8n` are maintained by each respective project.","**Secure internal mesh** — the three services communicate over a private Docker network; no LLM port is exposed publicly.",{"type":39,"title":55,"body":56},"Prerequisites: RAM, CPU and domain","RAM is the limiting factor. Ollama loaded with Mistral 7B consumes between 5 and 6 GB depending on the quantization chosen (documented in the Ollama repository). Open WebUI requires approximately 256 MB additionally. n8n in queue mode adds approximately 512 MB. The total therefore runs around 7 GB under light load, meaning an 8 GB RAM VPS handles the complete stack without active swap — a `{{vps.business.name}}` VPS at `{{vps.business.vcpu}}` vCPU and `{{vps.business.ram}}` is the reference profile for this configuration. For larger models (13B and above), count on 16 GB. On storage, plan at least 20 GB for Docker layers and models, more if you download several models in parallel. You will need a subdomain for each exposed service (for example `chat.your-domain.com` for Open WebUI and `n8n.your-domain.com` for n8n), Docker and Docker Compose installed, and port 443 open in your firewall.",{"type":58,"title":59,"steps":60},"steps","Deploy the stack with Docker Compose",[61,64,67,70,73,76,79],{"title":62,"body":63},"Prepare the VPS","Connect via SSH and install Docker if not already done: `curl -fsSL https:\u002F\u002Fget.docker.com | sh`. Verify that Docker Compose is available with `docker compose version`. Create a working directory: `mkdir -p \u002Fopt\u002Fia-stack && cd \u002Fopt\u002Fia-stack`.",{"title":65,"body":66},"Write the docker-compose.yml","Declare the three services in a single `docker-compose.yml` file on a shared internal network:\n\n```yaml\nservices:\n  ollama:\n    image: docker.io\u002Follama\u002Follama\n    volumes:\n      - ollama_data:\u002Froot\u002F.ollama\n    networks:\n      - ia\n    restart: unless-stopped\n\n  open-webui:\n    image: ghcr.io\u002Fopen-webui\u002Fopen-webui:main\n    environment:\n      - OLLAMA_BASE_URL=http:\u002F\u002Follama:11434\n    volumes:\n      - webui_data:\u002Fapp\u002Fbackend\u002Fdata\n    networks:\n      - ia\n    restart: unless-stopped\n\n  n8n:\n    image: docker.io\u002Fn8nio\u002Fn8n\n    environment:\n      - N8N_BASIC_AUTH_ACTIVE=true\n      - N8N_BASIC_AUTH_USER=admin\n      - N8N_BASIC_AUTH_PASSWORD=change-this-password\n      - WEBHOOK_URL=https:\u002F\u002Fn8n.your-domain.com\n    volumes:\n      - n8n_data:\u002Fhome\u002Fnode\u002F.n8n\n    networks:\n      - ia\n    restart: unless-stopped\n\nnetworks:\n  ia:\n    driver: bridge\n\nvolumes:\n  ollama_data:\n  webui_data:\n  n8n_data:\n```\n\nNo port is exposed on the host: the reverse proxy will be the only entry point.",{"title":68,"body":69},"Start the containers","Launch the stack: `docker compose up -d`. Verify that all three containers are running with `docker compose ps`. To view the logs of a service: `docker compose logs -f ollama`. At this point, no service is accessible from the outside.",{"title":71,"body":72},"Download a model into Ollama","Enter the Ollama container to fetch a model: `docker compose exec ollama ollama pull mistral`. The command downloads and quantizes the model into the `ollama_data` volume. Check the list of available models with `docker compose exec ollama ollama list`. Open WebUI will automatically detect the models present in Ollama at startup.",{"title":74,"body":75},"Configure the reverse proxy","Install Caddy or Nginx on the host to expose Open WebUI and n8n over HTTPS. With Caddy, two blocks suffice in your Caddyfile:\n\n```\nchat.your-domain.com {\n  reverse_proxy open-webui:8080\n}\n\nn8n.your-domain.com {\n  reverse_proxy n8n:5678\n}\n```\n\nCaddy obtains and renews Let's Encrypt certificates automatically. Ollama is not exposed directly — it remains accessible only from other containers via the `ia` network.",{"title":77,"body":78},"Create the Open WebUI administrator account","Open `https:\u002F\u002Fchat.your-domain.com` in your browser. On first access, Open WebUI prompts you to create an administrator account (email + password). This account is local to your instance — no data transits to an external service. You can then create additional accounts from the administration interface and select a default model from those listed by Ollama.",{"title":80,"body":81},"Connect n8n to the Ollama API","In n8n (`https:\u002F\u002Fn8n.your-domain.com`), create a workflow and add an **HTTP Request** node. Configure it as follows: method `POST`, URL `http:\u002F\u002Follama:11434\u002Fapi\u002Fgenerate`, JSON body `{\"model\": \"mistral\", \"prompt\": \"{{ $json.prompt }}\", \"stream\": false}`. n8n communicates with Ollama via the internal Docker network — no API key, no external quota. This node is native to n8n and documented on n8n.io\u002Fintegrations.",{"type":83,"title":84,"body":85},"tip","Tight RAM: load the model on demand","By default, Ollama keeps the model in memory for 5 minutes after the last request, then unloads it. This behavior is configurable via the `OLLAMA_KEEP_ALIVE` variable. On an 8 GB VPS, setting `OLLAMA_KEEP_ALIVE=0` frees RAM between scheduled n8n calls — useful if Open WebUI and n8n do not run simultaneously at full load. Conversely, `OLLAMA_KEEP_ALIVE=-1` keeps the model in memory permanently for responses without loading delay.",{"type":39,"title":87,"body":88},"Securing the stack before exposing it","A self-hosted AI stack handles sensitive data: prompts, workflow keys, conversation histories. Before any public exposure, verify three points. First, close Ollama's port 11434 on the host (`ufw deny 11434`) — it must only be accessible from the internal Docker network, never from the outside. An open LLM port exposes the generation API without authentication. Second, change the n8n authentication password in the environment variables; HTTP Basic authentication is enabled by default in the configuration above, but use a long and random password. Third, enable authentication in Open WebUI: by default, anyone reaching the URL can create an account — restrict registrations by disabling `ENABLE_SIGNUP` once your accounts are created. Docker volumes (`ollama_data`, `webui_data`, `n8n_data`) must be included in your regular backups; they contain the entire state of the stack.",{"type":90,"title":91,"headers":92,"rows":96},"comparison","VPS profiles for the stack",[93,94,95],"Profile","RAM","Recommended use case",[97,101,105],[98,99,100],"VPS Start","4 GB","Testing and development — lightweight models (Phi-3 Mini, Gemma 2B)",[102,103,104],"VPS Power","8 GB","Moderate use — Mistral 7B, one or two simultaneous users",[106,107,108],"VPS Business","16 GB","Full stack — Mistral 7B or Llama 3 8B, team, scheduled n8n workflows",{"type":39,"title":110,"body":111},"Use case: automating a summary pipeline with n8n","A concrete use case illustrates the value of the assembled stack. Imagine an n8n workflow triggered by a Webhook: it receives an article URL, fetches the text via an HTTP node, then sends it to Ollama for summarization. The HTTP Request node points to `http:\u002F\u002Follama:11434\u002Fapi\u002Fgenerate` with the `mistral` model and a prompt such as `Summarize this text in 3 key points: {{$json.text}}`. The response is parsed and sent to Slack, by email or stored in a database — depending on the subsequent nodes in the workflow. This type of pipeline — scraping → LLM → action — requires no external API key, runs continuously on your VPS, and consumes zero per-token cost. Other common pipelines: classifying incoming support tickets, generating product descriptions from raw spec sheets, or extracting entities from contract documents. In all these cases, the data never leaves your infrastructure. For more complex pipelines involving PDF documents or vector databases, you can add Flowise or LangFlow on the same Docker network, using Ollama as the common inference provider.",{"type":83,"title":113,"body":114},"Official documentation","Each tool has its reference documentation for advanced configuration: \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Follama\u002Follama\" target=\"_blank\" rel=\"noopener noreferrer\">Ollama on GitHub\u003C\u002Fa>, \u003Ca href=\"https:\u002F\u002Fdocs.openwebui.com\" target=\"_blank\" rel=\"noopener noreferrer\">Open WebUI documentation\u003C\u002Fa> and \u003Ca href=\"https:\u002F\u002Fdocs.n8n.io\" target=\"_blank\" rel=\"noopener noreferrer\">n8n documentation\u003C\u002Fa>. This guide covers assembly on a VPS; vendor docs remain the reference for advanced options, major updates and use cases specific to each tool.","Your AI stack on a ServOrbit VPS","A `{{vps.business.name}}` VPS (8 vCPU, 16 GB RAM, root access, dedicated IPv4) handles the complete Ollama + Open WebUI + n8n stack. European datacenters, NVMe SSD, on-demand vertical scalability. From `{{vps.start.price}}`\u002Fmonth.","View Cloud VPS plans","\u002Fvps-cloud",[120,138,152],{"id":121,"slug":122,"slugs":123,"title":127,"excerpt":128,"readTime":129,"views":18,"isPinned":19,"publishedAt":130,"updatedAt":131,"category":132,"categories":133,"featuredImage":30,"bgImage":31,"posterImage":135,"relatedSolution":136},11,"how-to-host-ollama-on-a-vps",{"fr":124,"en":122,"ar":125,"es":126},"heberger-ollama-vps","كيفية-استضافة-ollama-على-خادم-vps","como-alojar-ollama-en-un-vps","Hosting Ollama on a VPS: advanced operational guide","Advanced Ollama VPS setup: model management, nginx reverse proxy, API security, Q4_K_M\u002FQ8 quantization, CVE-2026-45672 Open WebUI and secure coupling.",9,"2026-06-09T00:00:00+00:00","2026-09-07T11:26:10+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},[134],{"id":23,"name":24,"slug":25,"color":26,"icon":27},"\u002Fblog\u002Fcovers\u002Fheberger-ollama-vps-poster.svg",{"categorySlug":34,"appSlug":137},"ollama",{"id":139,"slug":140,"slugs":141,"title":145,"excerpt":146,"readTime":129,"views":23,"isPinned":19,"publishedAt":147,"updatedAt":131,"category":148,"categories":149,"featuredImage":30,"bgImage":31,"posterImage":151,"relatedSolution":30},316,"open-webui-ollama-on-vps-multi-user-interface-for-local-llms",{"fr":142,"en":140,"ar":143,"es":144},"open-webui-ollama-vps","واجهة-ويب-open-webui-مع-ollama-على-vps-للفرق","open-webui-ollama-en-vps-interfaz-web-multiusuario-para-llm","Open-WebUI + Ollama on VPS: multi-user interface for local LLMs","Give your entire team a multi-user web interface for your Ollama models: RAG, model management, SSO via OpenID Connect — no cloud dependency.","2026-08-30T00:00:00+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},[150],{"id":23,"name":24,"slug":25,"color":26,"icon":27},"\u002Fblog\u002Fcovers\u002Fopen-webui-ollama-vps-poster.svg",{"id":153,"slug":154,"slugs":155,"title":159,"excerpt":160,"readTime":161,"views":162,"isPinned":19,"publishedAt":163,"updatedAt":164,"category":165,"categories":169,"featuredImage":30,"bgImage":31,"posterImage":171,"relatedSolution":172},3,"install-n8n-on-vps-with-docker-complete-2026-guide",{"fr":156,"en":154,"ar":157,"es":158},"installer-n8n-vps","تثبيت-n8n-على-vps-مع-docker-دليل-شامل-2026","instalar-n8n-en-vps-con-docker","Install n8n on VPS with Docker: complete 2026 guide","Deploy n8n on VPS with Docker, reverse proxy and HTTPS. Covers V8 crash, 502 nginx, npm migration and execution security (GHSA-vrv8-j27g-g7cr advisory, August 2026).",12,2,"2026-06-05T00:00:00+00:00","2026-09-08T22:00:02+00:00",{"id":162,"name":166,"slug":167,"color":168,"icon":167},"Automation","automatisation","bg-brand-action\u002F10 text-brand-action",[170],{"id":162,"name":166,"slug":167,"color":168,"icon":167},"\u002Fblog\u002Fcovers\u002Finstaller-n8n-vps-poster.svg",{"categorySlug":173,"appSlug":174},"automation-workflows","n8n",1789783568178]