Review - DebianOS Install (w/Docker)
Opened this issue · 7 comments
Given the install instructions available at https://flowfuse.com/docs/install/docker/ go form a clean DebianOS image and install and setup FlowFuse using Docker.
Docker currently represented just shy of 30% of our EE deployments in self-hosted environments, and 35% of CE deployments.
Considerations
- Each step taken should be recorded
- Any frustrations/friction should be highlighted and documented
- The full process should be timed, ideally with rough timestamps along the too so that we understand where time is being spent.
Areas for Improvement
- #4574
- Insert other ideas here from this investigation
FlowFuse platform installation timeline using docker-compose approach:
Installation prerequisites:
- docker and docker-compose present
- domain configured to point to the testing server using an external DNS provider
Installation timeline:
- Download docker-compose - 47s
- Prepare flowfuse.yaml configuration file: 1m 8s
- Prepare docker-compose.yml configuration file: 2m
- Pull Node-RED image: 19s
- Startup: 31s
- Optional
- Configure https using Let's Encrypt : 4m30s
- Configure https with own TLS: 3m 35s
Total time:
- without TLS ~5m
- with TLS: ~9-10m
timeline
title Setup Task Durations with Time in Seconds
section Initial Steps - 235 seconds
Download docker-compose release: 47 seconds
Prepare flowfuse.yaml : 68 seconds
Prepare docker-compose.yml : 120 seconds
section HTTPS Configuration (optional)
Configure https using Let's Encrypt : 270 seconds
Configure https with own TLS: 215 seconds
section Run FlowFuse - 50 seconds
Pull Node-RED image : 19 seconds
Startup : 31 seconds
My thoughts:
- The requirement for a properly configured domain is purely technical stuff, this may discourage less technical people from trying out
- the whole configuration is error-prone - during my first attempt, I spent 5-6 minutes debugging the content of the
docker-compose.yaml
due to the single typo- (needs investigation) if the core app could use environmental variables as configuration parameters, this could probably be avoided
- (needs investigation) for
docker-compose.yaml
configuration we probably could use interpolation and.env
file - single, user-interactive binary/script as a wrapper for whole configuration steps can be also a solution
- (needs investigation) once docker-compose stack is up, we could somehow print information similar to the one we output in helm
- in the documentation, replace paragraphs like
Digital Ocean
orDisabling the default File nodes
(very specific and technical) with a drop-down FAQ ; leave installation as clean and simple as possible - paragraph First Run Setup duplicates with the First Run Setup page
- Wildcard TLS Certificate paragraph is missing detailed information about adjustments needed to
flowforge.yaml
file
My overall impression is that instructions are overwhelming for someone, who just want to try our software. As discussed, we could transform the docker installation page into a short quick start guide while moving configuration details elsewhere (FAQ).
Additionally, IMO whole installation documentation should be kept in the how-to approach with copy-and-paste commands instead of giving general instructions.
Example:
edit this file, replace example.com with your domain
instruction could be replaced with a single sed
command.
FlowFuse platform installation timeline using docker-compose approach.
Important note: between the previous and this evaluation, the installation process has been simplified. Due to this fact, approaches cannot be compared 1:1 .
Installation prerequisites:
- docker and docker-compose present
- domain configured to point to the testing server using an external DNS provider
Installation timeline:
- Download docker-compose and env files - 11s
- Prepare configuration files: 37s
- Startup: 1m 45s
- pulling all container images: 1m
- startup 45s
- Optional
- Configure https using Let's Encrypt: 13s
- Configure https with own TLS: 1m 8s
Total time:
- without TLS: 2m33s (~50% decrease)
- with:
- automatic TLS: 2m46s (~70% decrease)
- custom TLS: 3m41s (~60% decrease)
timeline
title Setup Task Durations with Time in Seconds
section Initial Steps - 48 seconds
Download docker-compose release: 11 seconds
Prepare configuration: 37 seconds
section HTTPS Configuration (optional)
Configure https using Let's Encrypt : 13 seconds
Configure https with own TLS: 68 seconds
section Run FlowFuse - 105 seconds
pulling all container images : 60 seconds
Startup : 45 seconds
@ppawlowski the "235 seconds" at the start there, where is that time then spent, as the two child items only add to 48 seconds?
Update: Thanks for fixing 😄
@ppawlowski the "235 seconds" at the start there, where is that time then spent, as the two child items only add to 48 seconds?
Forgot to change it while copying from the previous evaluation summary.
Interesting that actually, in the purple/yellow stages, you've saved a lot of time, but the Green went up by 2x?
Interesting that actually, in the purple/yellow stages, you've saved a lot of time, but the Green went up by 2x?
On the first run, I considered a Startup
as completed once docker compose reported the stack to be up and running. However, today I noticed, that when using automatic TLS certification generation some additional time is needed for certificates to be issued - I added note about it. So on the second run, the Startup
period is considered from creating the stack using docker compose till the application is accessible from the browser.
With own TLS or no TLS this time is shorter as there is no need to wait for certificates to generate.
Regarding images pull time - the new approach pulls more images in the background. Also, this part may be affected by the network and disk bandwidth.
BTW, in GH dark mode I see different colours ;)