Journal indexDockup / field note
Note / self-host-flowise

How to Self-Host Flowise in 2026: Credentials, Storage and Public URLs

Self-host Flowise with correct ports, persistent storage, HTTPS, secrets, backups and upgrade checks. Learn how to fix when the encryption secret changes.

The shortest Flowise demo proves that a process listens on port 3000. Production needs stronger evidence. It must pass this scenario even after the container has been replaced: build a small chatflow, store a provider credential, call the prediction endpoint and continue the same session after a container replacement.

Flowise is being deployed for a clear purpose: visual builder for LLM chains and callable agents. Its most common deployment trap is that the encryption secret changes or the mounted data directory belongs to another UID, so public URL handling and durable state receive the same attention as image startup.

The production shape of Flowise

Separate four concerns for Flowise: ingress, the listener on 3000, durable state and supporting services or local capacity. The network contract for Flowise is a supported database when more than a disposable single-node setup is needed. Keep private endpoints on internal DNS, permit only required outbound calls and give Flowise a scoped service credential.

Run the known-good transaction — build a small chatflow, store a provider credential, call the prediction endpoint and continue the same session after a container replacement — before calling that separation complete. Measure parallel flow runs, document loaders, vector-store calls and memory consumed by custom nodes and keep the result with the deployment record. It provides both an acceptance criterion and the first capacity baseline.

Back up the state Flowise cannot recreate

Inventory every durable artifact: the Flowise database, credentials and uploaded documents. Mount /root/.flowise before bootstrap, write harmless sample data and replace the container to prove that path is actually persistent. Include configuration that changes how stored data is interpreted, not only the largest directory.

Set retention, copy backups off-host and run a clean-room restore. The Flowise drill is complete when flows, credentials and uploaded knowledge return, and an existing API client can run a restored flow. If snapshots are part of the plan, use PITR versus snapshot guidance to document what each mechanism can recover.

Do not give Flowise the whole host

Close the bootstrap window as soon as the first trusted administrator exists. Flowise's concrete trap is keeping default access open while flows contain provider secrets; the safer boundary is to protect the visual builder more strictly than prediction endpoints and never expose provider credentials to browser clients.

Generate FLOWISE_SECRETKEY_OVERWRITE once, keep it out of Git and preserve it with the recovery manifest because changing it can invalidate encrypted or signed application state. Private networking should carry dependency credentials, and roles inside Flowise should grant the smallest useful action. Keep sensitive request bodies and provider responses out of routine logs.

The Flowise release gate

Create a small, disposable Flowise fixture and keep it for every release. The fixture should exercise the real workflow: build a small chatflow, store a provider credential, call the prediction endpoint and continue the same session after a container replacement. Record the image digest, external hostname, dependency address and the expected result so a later operator can repeat the test without interpreting this guide.

Run the fixture three times. First, use the fresh deployment. Second, replace the container without touching durable state. Third, restore the backup into an empty environment. The third run passes only when flows, credentials and uploaded knowledge return, and an existing API client can run a restored flow. During each run, capture latency and resource use around parallel flow runs, document loaders, vector-store calls and memory consumed by custom nodes; this becomes the baseline for alerts rather than an arbitrary CPU percentage.

Finally, test the negative path deliberately: temporarily deny the test identity access to a supported database when more than a disposable single-node setup is needed. Confirm that Flowise fails visibly without corrupting state, restore the correct condition and repeat the successful transaction. A release record containing those four outcomes is stronger evidence than screenshots of a dashboard or a one-time curl response.

Launch Flowise with observable defaults

The first container should be easy to delete and recreate. Keep data off the writable layer, bind port 3000 only where the proxy can reach it and pass configuration at runtime.

docker run -d \
  --name flowise \
  --restart unless-stopped \
  -p 127.0.0.1:3000:3000 \
  -v flowise-data:/root/.flowise \
  -e FLOWISE_SECRETKEY_OVERWRITE=replace-with-a-long-random-value \
  flowiseai/flowise:latest

Pin the image after the initial test. Read the earliest startup error rather than the final restart message, verify each mount with docker inspect, and follow logs while you build a small chatflow, store a provider credential, call the prediction endpoint and continue the same session after a container replacement. That sequence distinguishes a bad image command from a dependency or permission problem.

Make the public origin unambiguous

The browser, API client and Flowise must agree on one origin. To make that true, set the application URL used by callbacks and embedded clients. Preserve the original host and protocol while keeping port 3000 unavailable as a competing public address.

The site-down troubleshooting guide helps distinguish an unreachable route from a responding application. That distinction matters here: the encryption secret changes or the mounted data directory belongs to another UID. Only the former is fixed by ingress changes; the latter needs Flowise logs, state or workload inspection.

Failure drills for Flowise

Use build a small chatflow, store a provider credential, call the prediction endpoint and continue the same session after a container replacement as the Flowise smoke test after every deployment. Its supporting metrics are parallel flow runs, document loaders, vector-store calls and memory consumed by custom nodes; alert where those resources approach a point that degrades the user action.

The main change risk is that component packages, database migrations and encrypted credentials can break when Flowise moves across releases. A safe release starts from a restorable snapshot and validates any one-way state change before traffic moves. When the encryption secret changes or the mounted data directory belongs to another UID, keep the failed container long enough to read its configuration and first error.

Where Dockup removes work for Flowise

For Flowise, Dockup is most useful at the boundary between an image and a durable service. It keeps the route to 3000, TLS, secret values and storage attached across container replacements, whether the compute belongs to Dockup or to your attached server.

Finish with application knowledge: set the application URL used by callbacks and embedded clients; connect and test a supported database when more than a disposable single-node setup is needed; and run this verification: build a small chatflow, store a provider credential, call the prediction endpoint and continue the same session after a container replacement. Keep the result as a deployment check so the next image update is judged by behavior rather than by container status.

Frequently asked questions

What does Flowise need for a production deployment?

Route the Flowise container on port 3000 through one HTTPS origin. The supporting network requirement is a supported database when more than a disposable single-node setup is needed. Do not call Flowise ready until you can build a small chatflow, store a provider credential, call the prediction endpoint and continue the same session after a container replacement.

Which Flowise data belongs in a backup?

Persist /root/.flowise and include the Flowise database, credentials and uploaded documents in the same recovery manifest. A clean Flowise restore passes only when flows, credentials and uploaded knowledge return, and an existing API client can run a restored flow.

Does Flowise require HTTPS behind a reverse proxy?

Use HTTPS for the public Flowise origin and keep port 3000 on the internal route. Apply the Flowise setting correctly: set the application URL used by callbacks and embedded clients. For Flowise, HTTPS protects credentials or user content in transit and keeps origin-sensitive client behavior consistent.

How should a Flowise upgrade be tested?

Restore current Flowise state into an isolated deployment, apply the candidate version and repeat its acceptance transaction. Pay particular attention because component packages, database migrations and encrypted credentials can break when Flowise moves across releases. Keep the previous Flowise image until its data-migration and rollback boundary are understood.