Flowise is a visual builder for LLM apps—chatbots, RAG, “agent” style workflows—without having to wire everything together from scratch. The easiest way to run it reliably (and keep your data) is Docker + a persistent volume.
This tutorial shows a pragmatic “works on day 1” setup on Zo Computer: bring it up, keep it running across restarts, and lock it down enough that you’re not leaving an open admin UI lying around.
Prerequisites
A Zo Computer (any plan where you can run Docker workloads).
Docker installed and working.
A place to store persistent app data (we’ll use a Docker volume).
If you don’t already have Docker set up on your Zo, start with Zo’s Sites/Services docs. ^1
Step 1: Create a Flowise project folder
Pick a folder you’ll remember. I’m using Projects/flowise.
mkdir -p ~/Projects/flowise
cd ~/Projects/flowise
Step 2: Create a Docker Compose file
Flowise’s official Docker Compose template is heavily parameterized. We’ll use the same image, but keep the config minimal while still:
exposing port 3000
persisting data
enabling basic app-level protection
Create docker-compose.yml:
services:
flowise:
image: flowiseai/flowise:latest
restart: unless-stopped
environment:
- PORT=3000
# Basic protection for the UI (works with Flowise’s app-level auth setup)
- FLOWISE_USERNAME=admin
- FLOWISE_PASSWORD=change-me
# Persist Flowise state (SQLite DB, uploaded files, etc.)
- DATABASE_PATH=/root/.flowise
- BLOB_STORAGE_PATH=/root/.flowise/storage
- LOG_PATH=/root/.flowise/logs
- SECRETKEY_PATH=/root/.flowise
ports:
- "3000:3000"
volumes:
- flowise_data:/root/.flowise
volumes:
flowise_data:
Notes:
This is a simplified version of Flowise’s official Docker Compose setup. ^4
Flowise documents both a quick-start (npm) path and Docker paths; Docker is generally simpler to keep always-on. ^2
For production deployments, Flowise also has a newer email/password auth system and additional security-related environment variables (JWT secrets, cookie settings, etc.). ^3
Step 3: Start Flowise
docker compose up -d
Verify it’s healthy:
docker ps --format 'table {{.Names}}\t{{.Status}}\t{{.Ports}}'
You should see the container exposing 0.0.0.0:3000->3000/tcp.
Step 4: Open Flowise in your browser
On Zo, you typically open services from within Zo’s browser environment.
Open:
http://localhost:3000
Flowise’s docs describe the default UI being available on port 3000 after starting. ^2
If you enabled FLOWISE_USERNAME / FLOWISE_PASSWORD, you’ll be prompted for credentials.
Step 5: Sanity-check with a tiny workflow
A fast way to prove everything works:
Create a new chatflow.
Add a chat model node (OpenAI / Anthropic / Ollama, etc.).
Connect it to a chat output node.
Click “Test” and send a prompt.
If you want a fully self-hosted stack, pair Flowise with a local LLM running on your Zo (for example via Ollama) and point Flowise at it.
Step 6: Upgrades and maintenance
To update Flowise to the latest image:
docker compose pull
docker compose up -d
If something looks off after an update, restart cleanly:
docker compose down
docker compose up -d
Because we mounted a persistent volume (flowise_data), your flows and settings survive container restarts.
Step 7: Basic hardening (worth doing)
Change the default password.
Keep it private unless you know what you’re doing. If you later publish it to the internet, add real auth and treat it like any other web app.
If you deploy behind a reverse proxy, review Flowise’s auth docs (JWT settings, cookie security flags,
APP_URL, etc.). ^3
Summary
You now have Flowise running on your Zo as a persistent, restart-safe service:
managed via Docker Compose
accessible at http://localhost:3000
with data persisted in a Docker volume
From here, the practical next step is connecting it to your preferred model provider (hosted API or local LLM) and building one reusable “agent workflow” you actually use.