CCAI : Cloudron Custom App Installer
-
Note : creating a dedicated App Wishlist for the Cloudron Custom App Installer ("CCAI"), to avoid further "hijacking" of @Kubernetes thread in App Packaging forum category.
This app makes it easy for a Cloudron user to install a custom-packaged app without having to clone the repo locally, install docker locally, build the docker image and push to a docker repository, and install Cloudron CLI to make the installation.
This appeals to :
- cloudron users wanting to keep their local device clean of dev utilities
- cloudron users who are not technically comfortable with the manual clone/build/install process
It is not a 1-click install, given the need for user to login to their Cloudron instance, and enter app location, but it's as close as we're going to get.
Latest version v4.1.1 :
- adopts suggestion from @robi to allow list of available custom apps to grow w/o intervention (popup dialogue for user to add a custom app to a list for themselves and others to install)
- tightens the UI to allow more custom apps in the list
- adds Grid or List display mode for known custom apps
- improves page
responsive
UI for different window widths
git repo : https://git.cloudron.io/timconsidine/cloudron-customapp-installer
home page : https://ccai.appx.uk
This page is left running as a service for Cloudron users wanting to install custom apps in advance of this app (or another Cloudron-supported version) making it into the App Store.concept video : https://ccai-demo.appx.uk (but video needs an update for latest version UI and usage flow)
NB : the ability for an app packager to add their own custom app to the list without the site admin's involvement reinforces the NEED FOR CAUTION ON INSTALLING CUSTOM APPS.
- Check the app's reputation in the Cloudron forum
- Check the app packager reputation in the Cloudron forum.
TODO :
- add optional
keep me logged in for 15 minutes
to allow the user to install multiple custom apps without repeatedly logging in to their Cloudron instance. - update the concept video for latest UI and usage flow
DISCLAIMER :
- this app inherently carries some risks that a poorly-packaged app mucks up a Cloudron instance. However Cloudron's app-isolation principles mitigate this to a large degree.
- nevertheless, only use this app if you understand and accept the risks
- for these reasons, it is understandable that Cloudron may or may not want this kind of app in the AppStore
- [@]staff or any developer are welcome to fork or re-write this app to improve it and address these issues
-
Updated to v4.2.0 :
- user session persists for 15 minutes to allow multiple installs, then automatically cleared (addresses user walking away), or logs out if user presses
logout
button - N.B. this is a change from initial approach of auto-logout after an app installation
- fixed support for multiple concurrent users
Repo updated
TODO :
- update video walkthrough for new app flow
- user session persists for 15 minutes to allow multiple installs, then automatically cleared (addresses user walking away), or logs out if user presses
-
Yesterday, I tried out CCAI. Nice approach. Simple, flawless, straightforward. After installing CCAI on my own Cloudron instance, I noticed a discrepancy between the "App Catalog" on your instance and mine. What is your roadmap for synchronizing the catalog across all installed CCAI apps?
-
Yesterday, I tried out CCAI. Nice approach. Simple, flawless, straightforward. After installing CCAI on my own Cloudron instance, I noticed a discrepancy between the "App Catalog" on your instance and mine. What is your roadmap for synchronizing the catalog across all installed CCAI apps?
@luckow if CCAI is installed in another location, the app catalog will currently diverge as the data is drawn from /app/data/apps-config.json.
TBH I did not think about a “central” catalogue but that’s a nice idea as an option.
Let me think about how to implement.
Maybe a “Sync Catalogue” button.
But one-way or two-way ?
Maybe one way to start. -
T timconsidine referenced this topic
-
@luckow if CCAI is installed in another location, the app catalog will currently diverge as the data is drawn from /app/data/apps-config.json.
TBH I did not think about a “central” catalogue but that’s a nice idea as an option.
Let me think about how to implement.
Maybe a “Sync Catalogue” button.
But one-way or two-way ?
Maybe one way to start.@timconsidine how about a wget that grabs the master apps-config.json during any install/visit?
-
@timconsidine how about a wget that grabs the master apps-config.json during any install/visit?
-
If this app were available in the cloudron app store, it would make cloudron significantly, even exponentially more useful - as it would open up an entire universe of apps that the main cloudron team cannot / would not support.
The difference between iOs "walled garden" and the Android "sideload option". Android is far more ubiquitous as a result.
Obviously it comes with risks, and they should be well highlighted, however for those who understand and accept those risks a tool like this is just fantastic for enabling a plethora of new use cases on cloudron
If this app were deployed, we would also be incentivised to package up more apps, because the audience would be much much bigger
please do it! I would say it's even higher priorirty than our own app submissions (as we could easily use this tool to deploy them in the meanwhile)
-
@luckow @robi and anyone else interested
New version 4.3.0 pushed to git.cloudron.io/timconsidine/cloudron-customapp-installer :
- added button to import a catalogue to an instance running on your own URL : the default is to install from my hosted instance at
https://ccai.appx.uk
, but this value can be overridden so you can import from any instance of the app running under another name/URL - added trash icon to Grid and List views allowing an app to be removed from the running app's catalogue, if it is no longer needed or import does not work quite as expected
- added auto-backup of catalogue prior to a deletion (so admin user has access to previous versions if someone goes wild on deletions)
About deploying this :
- if you have already installed this app to your own Cloudron instance, make sure you backup the contents of your local apps-config.json because installing this version will wipe your instance.
About import :
- imports whatever is in ccai.appx.uk (or specified URL) catalogue, so I can't offer any assurances on this, as I can't watch the catalogue constantly, but will endeavour to keep an eye on it
- therefore continue to exercise caution on installing any apps listed in the catalogue
- the import process a "dedupe" function built in, so anything imported should not overwrite an existing entry that you may have added to your own catalogue
I'm in a quandary about adding authentication to the app.
Generally I should, but it gets in the way of keeping ccai.appx.uk as an open hosted resource.
I will think about an elegant way to handle this. - added button to import a catalogue to an instance running on your own URL : the default is to install from my hosted instance at
-
Authentication would be good. Probably not a good idea to normalise the act of entering admin creds onto another cloudron instance, it's an invitation for bad actors
-
Authentication would be good. Probably not a good idea to normalise the act of entering admin creds onto another cloudron instance, it's an invitation for bad actors
@nostrdev totally agree
The issue is I'm unsure about the approach strategically in terms of keeping the "hosted as a service" URL open and easy to make use of.
I can easily add http basic auth or use Cloudron proxyauth but communicating those creds has a raft of issues.
I can add proper user registration, but it kinda goes against the original principles of it being an anonymous utility. I don't really want to be maintaining user records or responsible for them, and it's a pain for users to create yet another username and password for this (because obviously they should not be using Cloudron login details).
Maybe I can add some kind of automated short duration one time code delivered by SMS or email. Doesn't help much but maybe one blocker to scripts without a person behind it.
Ideally auth would be handled best by the app being within the AppStore, but that's not in my hands.
Any clever ideas gratefully received.
Otherwise I might have to bite the bullet and implement a user registration system. -
I have thought deeply about adding auth or anti-bot measures.
My current conclusion is that anything I add (captcha, Cloudflare Turnstile, user registration in-app or via Keycloak) is going to :
- reduce the utility of this as a hosted app for easy use by those who don't want to install it themselves
- impact anyone who chooses to deploy the app to their own Cloudron with extra dependencies.
So at this point "the juice is not worth the squeeze".
I have however :- added some rate-limiting for catalogue entry deletions
- added static text to recommend using a dedicated cloudron user for use with this app
I will think about creating a locked-down version with auth for those who want to deploy it to their own Cloudron, while leaving the hosted version w/o auth (basically my risk on the catalogue, because the actual app installation process is secure already).
Hopefully once Cloudron 9 is out and settled down, the version with proper auth can make it suitable for App Store inclusion, and I will retire the open hosted-as-a- service version.
I will review this later, but leaving it here for now pending further ideas.