Potential Cloudron Theme/Dashboard
-
Hello all!
I've been developing/packaging what I think could be a new form of Cloudron apps, Themes (working title : ). The idea here is a simple Homepage that will display your installed Cloudron applications for easy access. You can see a working copy on my instance here! Be sure to hit space bar to toggle the menu.
Features include:
- Lightning fast loading - 97 Lighthouse Performance rating, all JS/CSS assets are local
- Toggle menu based on any key combination
- Background images from Unsplash or custom URL
- Quick link to Cloudron dashboard
- Use number keys to go directly to the first 9 apps listed when the menu is open
- Mobile friendly
- Caching of app images
- Security when it comes to your Cloudron API key and Unsplash ID
Note that this is NOT meant to replace the current Cloudron dashboard, but rather be a supplementary 'app browser'. When the menu is displayed in the Homepage App, there is a cog icon at the top right with the time stamp that will take you straight to your original Cloudron dashboard when you need full access to Backups, Logs, etc.
This app is based on the homepage-cloudron repo, which is based off of the homepage repo, both of which I am the author of. Happy to answer any questions! You can find the Cloudron packaged app here.
If this is interesting, I could work up some basic tests for this to eventually be included in the actual Cloudron App Store. Though it is important to note that for this to work properly, the setup requires creating a new Cloudron API key and updating the config.json file through the Terminal (not super user-friendly).
Thoughts/suggestions/notes welcome!
-
I really like the idea of a custom dashboard! Do you use the Cloudron API to get the list of apps and show the apps dynamically?
Over the years, we have received some requests for a more customizable dashboard. Since you are starting afresh, maybe you can consider some of these:
- Dark theme
- Custom app icons (https://git.cloudron.io/cloudron/box/-/issues/350)
- i18n/localization
- Allow user registration - we can provide APIs for this, if there is interest.
I don't know the scope of your project, but thought I will put some ideas here. For the Cloudron dashboard, we want to keep it for "admin" tasks and not for the end users of Cloudron.
-
Thanks @girish!
Do you use the Cloudron API to get the list of apps and show the apps dynamically?
Yep! Check out the code for that here.
For the Cloudron dashboard, we want to keep it for "admin" tasks and not for the end users of Cloudron.
That was exactly my thinking. The idea for Homepage is that it's an easy-access dashboard to open one's apps, but leave any admin tasks to the current built-in dashboard.
Great suggestions!
- Dark theme
It kind of already is? I mean the images pulled from Unsplash are random (by design) so it might be hard to only do dark images? Did you have anything in mind?
- Custom app icons (https://git.cloudron.io/cloudron/box/-/issues/350)
The issue you linked to mentions not custom icons, but custom links (which is actually what the original Homepage app consists of). Adding more custom links is definitely doable. I'm wondering what's a good way to go about letting the user put the apps in a specific order...
- i18n/localization
Neat! Again, there isn't a whole lot of text here besides the Unsplash attribution. But happy to try and localize that if people want to contribute translations. The clock/timestamp at the top right is configurable through the config.json file, so users can make that 24hour, am/pm, whatever they want.
- Allow user registration - we can provide APIs for this, if there is interest.
I think this is where it becomes a bit outside the scope of Homepage, as it's meant to just be a simple window to access one's installed (or external?) applications. Open to hearing more about your thoughts though.
-
@thetomester13 this is awesome! I love it.
I've been meaning to ask for something like this for ages and meanwhile you've not only gone and suggested pretty much exactly what I've been thinking, but you've gone and coded most of it up too - amazing!
-
@jdaviescoates thanks! Feel free to give it a spin and let me know if you have any thoughts or suggestions!
-
@girish Had a thought for the base Cloudron image/API to help make such a dashboard (and potentially others) more accessible to everyday users. At the moment, for Homepage to run properly, it requires the user create a new API key and insert it into the config.json file through the Terminal. The only calls needed by the application are the GET for
/api/v1/apps
and/api/v1/apps/{$cloudron_app_id}/icon
for getting the list of applications installed on this Cloudron instance and their respective icon files.The thought is what if the Cloudron API white-listed some calls to its own internal IP/URL? Not sure if this is a thing, but pretty much, if a call is made to the endpoints above (and potentially other 'harmless', non-destructive endpoints), and the referring URL is on the instance's own domain (i.e. the call to
my.cloudron.com/api/v1/apps
is coming fromhomepage.cloudron.com
) then it wouldn't necessarily need an API key.If this were implemented, then Homepage and future dashboard apps wouldn't need any user intervention in order to display all the Cloudron instance's installed applications and icons.
Just a thought! Happy to hear what you think of such a solution.
-
I very much like the idea for such a dashboard being installed as an app instead of trying to make the main/admin dashboard overly configurable or theme-able.
For app listing, we could add a new app addon type which gets a restricted access token to fetch app listings and meta information. However we have to see how that works with regards to the access controls. For future auditing reasons, it may be better to not add some whitelisting mechanism which circumvents token validation. I wonder if the mentioned APIs would be sufficient for a good dashboard?
-
I very much like the idea for such a dashboard being installed as an app instead of trying to make the main/admin dashboard overly configurable or theme-able.
Agreed! I like the idea of a new addon type that would give an app 'automatic access' (doesn't have to be configured by end user) to some API endpoints. I agree with @girish that read-only access would work, but even just the 2 endpoints I listed above would be a solid start. I could eventually see endpoints like 'Get Status' or streams from tasks or services being handy for such dashboards.
-
@thetomester13 said in Potential Cloudron Theme/Dashboard:
homepage-cloudron
Hey there @thetomester13, is this something I can try out? I understand the rudiments of building and installing custom apps, but not sure if I need to fork your repo, of just cloning it will work. I requested access on gitlab.
-
@BrentHueth absolutely it's something you can try out! You can simply clone the repo and then do a
cloudron build
andcloudron install
(there are some prerequisites to this, be sure to check the official Cloudron documentation). I gave you developer access to the repo in case you did want to contribute, just know that the git.cloudron repo is the Cloudron packaged app, you can find the actual application on Github here. -
@thetomester13 If I'm not your first thrilled user, well then I'm another
-
@BrentHueth that makes me happy
@murgero yes, this is similar to Heimdall, it's based off of this Github project of which I'm the author. This particular app is purposefully packaged for Cloudron in that you give it an API key and it will auto-populate with all of your Cloudron apps, so no custom links at the moment.
-
@thetomester13 That's pretty cool!! I'll have to give this a shot then Thanks!
-
@girish No package, it's a simple PHP script - just used the LAMP app. I'd be happy to package it though if there is enough demand for it. That said I do not want to take over this thread so if anyone wants it - start a new thread.