Why self-host Flowise on a VPS
Flowise handles sensitive data: OpenAI/Anthropic API keys, vectorised internal documents, conversation history, the business logic of your agents. On the shared cloud version, these elements pass through infrastructure you do not control. On a dedicated VPS, the Flowise canvas, the database and the embeddings all stay with you. You keep control of versions (flows evolve fast between releases), of the connectors you enable, and of model billing since you plug in your own keys. A VPS also lets you expose flows as a REST API to integrate them into your own applications, with no quota imposed by a vendor.
The concrete benefits of a self-hosted Flowise
- Full confidentiality of prompts, API keys and indexed documents, which never leave your server.
- Inference endpoints exposed as a REST API with no third-party rate limit.
- Free choice of model (OpenAI, Anthropic, Mistral, or a local LLM via Ollama on the same network).
- Controlled persistence of flows and vector stores in Docker volumes that you back up.
- Update when you decide, without suffering a forced canvas migration.
- Predictable cost: a single monthly VPS price, no pricing per flow or per execution.
Hardware and software requirements
Flowise itself is lightweight, but real-world usage depends on embeddings and vector stores. Budget at least 2 vCPUs and 2 GB of RAM for testing, and 4 vCPUs / 4 to 8 GB of RAM if you index large documents or run several concurrent flows. Plan for 10 GB of disk for the containers and vector stores. On the software side: Docker and Docker Compose installed, a domain or subdomain (e.g. flowise.your-domain.com) pointing to the VPS IP, and port 443 open. Prepare the API keys of the LLM providers you intend to use ahead of time.
Deploy Flowise with Docker and HTTPS
Prepare the VPS and Docker
Connect via SSH, update the system then install Docker with curl -fsSL https://get.docker.com | sh. Check with docker compose version. Create a dedicated folder: mkdir -p /opt/flowise && cd /opt/flowise.
Write the docker-compose.yml
Define the service with the official flowiseai/flowise image, internal port 3000, a named volume ~/.flowise for persistence, and the FLOWISE_USERNAME and FLOWISE_PASSWORD variables to protect the admin interface from the very first start.
Start the container
Run docker compose up -d then docker compose logs -f to confirm that Flowise is listening. At this stage it responds locally on 127.0.0.1:3000, not exposed publicly, which is deliberate.
Configure the reverse proxy
Install Caddy or Nginx Proxy Manager. With Caddy, a single line in the Caddyfile is enough: flowise.your-domain.com { reverse_proxy localhost:3000 }. Caddy obtains and renews the Let's Encrypt certificate automatically.
Secure access and keys
Harden authentication, restrict port 3000 to the loopback in the firewall (ufw deny 3000), and add your LLM API keys directly in the Flowise interface (Credentials section) rather than in clear text in the compose file.
Test a flow and the API
Create a simple chatflow, publish it, then call its endpoint with curl -X POST https://flowise.your-domain.com/api/v1/prediction/<id> -d '{"question":"test"}' to validate the REST exposure.
For high-performance RAG flows with no external API cost, connect Flowise to an Ollama container running on the same VPS through the internal Docker network (http://ollama:11434). You thus combine embeddings and generation locally: no data leaves the server, and latency drops since everything travels over the host's private network.
The official documentation
For advanced configuration and tool-specific options, refer to the official Flowise documentation. This guide covers going live on a VPS; the vendor docs remain the reference for fine-tuning, major updates and specific use cases.