Complete Docker deployment guide for Flowise using docker-compose.
| Requirement | Details |
|---|---|
| Docker | Docker Engine 20+ or Docker Desktop |
| Docker Compose | Docker Compose v2+ |
| RAM | 4GB minimum, 8GB+ recommended |
| Disk | 10GB minimum, 20GB+ recommended |
git clone https://github.com/FlowiseAI/Flowise.git
cd Flowise/docker
cp .env.example .env
# Edit .env with your settings
docker compose up -d
# Check container status
docker compose ps
# View logs
docker compose logs -f flowise
# Access web interface
# http://localhost:3000
version: '3.8'
services:
flowise:
image: flowise/flowise:latest
container_name: flowise
restart: always
ports:
- "3000:3000"
volumes:
- ./flowise-data:/root/.flowise
environment:
- PORT=3000
- DATABASE_TYPE=sqlite
- DATABASE_PATH=/root/.flowise/database.sqlite
networks:
- flowise-network
networks:
flowise-network:
driver: bridge
version: '3.8'
services:
flowise:
image: flowise/flowise:latest
container_name: flowise
restart: always
ports:
- "3000:3000"
volumes:
- ./flowise-data:/root/.flowise
environment:
- PORT=3000
- DATABASE_TYPE=postgres
- DATABASE_HOST=postgres
- DATABASE_PORT=5432
- DATABASE_NAME=flowise
- DATABASE_USER=flowise
- DATABASE_PASSWORD=flowise-password
depends_on:
postgres:
condition: service_healthy
networks:
- flowise-network
postgres:
image: postgres:15-alpine
container_name: flowise-postgres
restart: always
volumes:
- ./postgres-data:/var/lib/postgresql/data
environment:
- POSTGRES_DB=flowise
- POSTGRES_USER=flowise
- POSTGRES_PASSWORD=flowise-password
networks:
- flowise-network
healthcheck:
test: ["CMD-SHELL", "pg_isready -U flowise"]
interval: 30s
timeout: 10s
retries: 3
networks:
flowise-network:
driver: bridge
volumes:
postgres-data:
version: '3.8'
services:
flowise:
image: flowise/flowise:latest
container_name: flowise
restart: always
ports:
- "3000:3000"
volumes:
- ./flowise-data:/root/.flowise
environment:
- PORT=3000
- REDIS_HOST=redis
- REDIS_PORT=6379
- REDIS_PASSWORD=redis-password
depends_on:
- redis
networks:
- flowise-network
redis:
image: redis:7-alpine
container_name: flowise-redis
restart: always
command: redis-server --requirepass redis-password
volumes:
- ./redis-data:/data
networks:
- flowise-network
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 30s
timeout: 10s
retries: 3
networks:
flowise-network:
driver: bridge
| Variable | Description | Default |
|---|---|---|
PORT |
API server port | 3000 |
DATABASE_TYPE |
Database type | sqlite |
| Variable | Description | Example |
|---|---|---|
DATABASE_PATH |
SQLite database path | /root/.flowise/database.sqlite |
DATABASE_HOST |
PostgreSQL/MySQL host | localhost |
DATABASE_PORT |
Database port | 5432 |
DATABASE_NAME |
Database name | flowise |
DATABASE_USER |
Database user | flowise |
DATABASE_PASSWORD |
Database password | secure-password |
| Variable | Description | Default |
|---|---|---|
DISABLE_TELEMETRY |
Disable telemetry | false |
BASIC_AUTH_USERNAME |
Basic auth username | - |
BASIC_AUTH_PASSWORD |
Basic auth password | - |
STORAGE_TYPE |
Storage type | local |
STORAGE_PATH |
Storage path | /root/.flowise/storage |
REDIS_HOST |
Redis host | localhost |
REDIS_PORT |
Redis port | 6379 |
REDIS_PASSWORD |
Redis password | - |
LOG_LEVEL |
Logging level | info |
| Volume | Purpose | Location |
|---|---|---|
flowise-data |
Application data | ./flowise-data/ |
postgres-data |
PostgreSQL data | ./postgres-data/ |
redis-data |
Redis data | ./redis-data/ |
# Backup all data
tar -czf flowise-backup-$(date +%Y%m%d).tar.gz \
flowise-data/ postgres-data/ redis-data/
# Backup application data only
tar -czf flowise-app-backup.tar.gz flowise-data/
Default (localhost only):
ports:
- "127.0.0.1:3000:3000"
All interfaces (⚠️ use with firewall):
ports:
- "0.0.0.0:3000:3000"
Nginx configuration:
server {
listen 443 ssl http2;
server_name flowise.example.com;
ssl_certificate /etc/ssl/certs/flowise.example.com.crt;
ssl_certificate_key /etc/ssl/private/flowise.example.com.key;
location / {
proxy_pass http://localhost:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
environment:
- BASIC_AUTH_USERNAME=admin
- BASIC_AUTH_PASSWORD=secure-password
# Firewall rules
sudo ufw allow from 192.168.1.0/24 to any port 3000
sudo ufw deny 3000/tcp
# Check logs
docker compose logs flowise
# Check resources
docker stats
# Restart services
docker compose restart
# Check PostgreSQL status
docker compose ps postgres
# View PostgreSQL logs
docker compose logs postgres
# Verify connection
docker compose exec postgres psql -U flowise -d flowise -c "SELECT 1"
# Find process using port 3000
lsof -i :3000
# Change port in docker-compose.yml
ports:
- "3001:3000"
# Pull latest image
docker compose pull flowise
# Restart with new version
docker compose up -d flowise
# Verify version
docker compose exec flowise cat /app/package.json | grep version
# Stop current version
docker compose down
# Restore backup
tar -xzf flowise-backup-YYYYMMDD.tar.gz
# Start with previous version
docker compose up -d
Any questions?
Feel free to contact us. Find all contact information on our contact page.