Evaluate web UIs for our config commons #681
Open
opened 2025-10-08 14:41:01 +00:00 by decentral1se
·
5 comments
Labels
Clear labels
abra
awaiting-feedback
backups
bug
build
ci/cd
community organising
contributing
coopcloud.tech
design
documentation
duplicate
enhancement
fedi
fedi-infra
finance
funding
good first issue
help wanted
installer
legal
performance
proposal
question
security
test
wontfix
Everything to do with abra
Ping/pong on comms
Something is not working
Go build related issues
Getting the robots into the mix
Opening this thing up
Contributors stuff
Our main website
Design thinking required
Let's write things together
This issue or pull request already exists
New feature
Democratic decision making
Money things
Anything related to grant funding
Easy start with development
Need some help
Installation related issues
Performance related
Large change which requires feedback & decisin making
More information is needed
Securing our shit
Unit or integration test suite
This won't be fixed
No labels
help wanted
Milestone
No items
No Milestone
Projects
Clear projects
No projects
Assignees
3wordchant
aadil (Aadil Ayub)
abra-bot (Abra Bot)
ammaratef45
amras (Sarma)
Apfelwurm
BornDeleuze
Brooke
carla
cas (Cassowary)
coopcloud
cyrnel
decentral1se (d1)
dede
devydave
fauno (fauno)
iexos
jade (Jade Ambrose)
jjsfunhouse
jmakdah2 (Jackie Makdah)
joe-irving (Joe Irving)
kawaiipunk (KawaiiPunk)
knoflook
kolaente
lambdabundesverband
linnealovespie (April)
moosemower
moritz
notplants
oxaliq (sorrel)
p4u1
pharaohgraphy (Andrew 🐦🔥❤️🔥✴️)
renovate-bot (Comrade Renovate Bot)
ripclap
simon
sixsmith (Sixsmith)
stevensting
trav (Trav Fryer)
val (val (he/him))
yksflip
Clear assignees
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: toolshed/organising#681
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
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
komodo v2 supports swarm: https://komo.do/docs/swarm