Evaluate web UIs for our config commons #681
Reference in New Issue
Block a user
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Please post your candidates! We can organise ourselves to push this forward.
Many many people would benefit from having a web UI and it would be a big victory for your config commons approach.
/cc @3wordchant
We don't have anything to show yet but just dropping a note to say that MIR has been planning to work on developing a web UI. So far all we have built is this design doc:
Abra WebUI Design Proposal
Background
Co-op Cloud is a framework for managing dockerized web services. The framework allows specifying many different services as recipes in a way that makes them easy to manage through a standardized workflow.
abra is a command line tool which is used to manage Co-op Cloud services. It is maintained by the Co-op Cloud project, and is effectively the core of the Co-op Cloud ecosystem.
Goal
Create a web application which allows users to do the following:
Deploy a new app from a recipe
Review currently running apps and their status
Perform common maintenance operations on deployments like upgrading, configuring, etc
Requirements
The web application should:
Operate primarily as a wrapper for abra, and not duplicate or re-implement its features
Allow abra to be used from the CLI or the webUI interchangeably without losing state or context information
Be deployable as a Co-op Cloud service
Be fully browser-based, not requiring any additional client-side software
Be secure against unauthorized access
Stretch Goals
Possibilities for development beyond MVP
Support browsing recipes, and displaying recipe documentation contextually
Automatically perform standard initial server setup (install Docker, etc)
Provision servers on demand using OpenTF providers or similar
Manage git operations required to keep the abra config synced across multiple abra clients
Technical Notes
abra has an option ( -m) which provides all output as json. This could be parsed by the webUI.
To run abra, the web application backend must hold SSH keys for each Co-op Cloud server. This is a security risk.
Interface Sketch
Dashboard
Displays the output of `abra app ls`
A button runs `abra app ls -S` to update the dashboard with information on versions, deploy status, etc
Flags the following conditions with icons
Secrets are required but haven't been generated (link to Secrets)
App has an available upgrade (link to Upgrade App)
Links to other function interfaces
New App
Guided wizard for running `abra app new`
Prompts for
server
app name
version (optional)
Flows into Configure and Generate Secrets
Servers
Hostname
Port (if not default)
Username
SSH keys (pub and priv)
App Specific Functions
Configure App
Text-editor interface for modifying the config file ala `abra app config`
Flows into undeploy and redeploy app
Deploy/Undeploy App
Runs `abra app deploy` and/or `abra app undeploy`
Displays output from abra
Upgrade App
Displays current version and newer available versions
Displays upgrade notes contextually
Allows running `abra app upgrade`
Displays output from abra
Secrets
Runs `abra app secrets` commands
Displays output of `abra app secrets list` for a service
Prompts for
Displays secret output from abra
Logs
Command
Questions/Ideas
Awesome @marlon, thanks! I will add one note here for implementors who don't want to re-implement
abrabut also would like to get a bit closer to the metal than what-moffers. We do provide a public API: https://docs.coopcloud.tech/abra/hack/#using-the-abra-public-api This means that if you wrote the web app in golang (e.g. GOTTH stack), you could consume the API directly and have a very fine grained level of control over what can be done. This would also mean that the web hackers also start contributing toabra(while still maintaining their own web UI codebase), which would make us also more resilient. This is something for consideration!PS. I also think this might make the web UI self-bootstrap-able because you just have to download a binary to your server (like the
abrainstaller script) and it can get you docker / traefik / etc. wired up automagically from there. So you could be doing a sort ofcurl https://install.<name-for-web-ui>.coopcloud.tech | bash -s -- --bootstrapor something?https://komo.do/
List of Competitor/Comrade UIs created during kite flying