Cloudron makes it easy to run web apps like WordPress, Nextcloud, GitLab on your server. Find out more or install now.


Skip to content

App Packaging & Development

App package development & help

241 Topics 2.3k Posts

Subcategories


  • Looking to collaborate? Post here if you need help or willing to offer help.

    32 Topics
    251 Posts
    P

    I am seeking some 1on1 assistance packaging a NodeJS app generated using Wappler.io into a Cloudron package

    If anyone is interested please send me a direct message and we can discuss compensation

    Best,
    Nick

  • App contributions hall of fame

    Pinned Moved
    42
    10 Votes
    42 Posts
    4k Views
    LanhildL

    @girish Missed that message. Yeah, Open WebUI is the one that made it to published. I've made several other things but they're mostly to learn packaging/tests (such as a standalone DB app, etc.)

  • Translators hall of fame

    Pinned Moved
    25
    15 Votes
    25 Posts
    2k Views
    nebulonN

    Public registration is off on that, but we do add language maintainers manually if needed. See https://docs.cloudron.io/i18n/#maintaining-translations

    Since we have native German speakers on the team, we are maintaining that internally, however you can suggest changes via the weblate instance for any strings and I will review those then.

  • Read first before starting to package an app

    Pinned
    10
    8 Votes
    10 Posts
    3k Views
    nebulonN

    I guess the current link would be https://docs.cloudron.io/packaging/tutorial/

  • Building custom packages

    Pinned
    6
    4 Votes
    6 Posts
    1k Views
    girishG

    @Grienauer

    We haven't yet had a case where different data directories of apps cannot be symlinked to a subdirectory /app/data . It keeps backup/restore logic simple if we limit to one folder. Do you have an app in mind which cannot do this?

    Usually, we manage to change apps to use supervisor and thus package multiple containers into one. I guess it's possible to implement this, we haven't yet.

  • Writing automated tests for packages

    Pinned
    12
    8 Votes
    12 Posts
    1k Views
    BrutalBirdieB

    @nebulon Yea I just wanted to reply never mind, I copied the tests from the alltube app which do not even use selenium so yeeaa my mistake.

    Now I took the nextcloud tests and will learn from them 🙂

  • Cloudron Non-App Store Packaged Apps

    Pinned
    27
    11 Votes
    27 Posts
    3k Views
    T

    @matbrgz added to the post at the top!

  • XMPP Server - Prosody

    33
    4 Votes
    33 Posts
    2k Views
    L

    I had AI look at this, but it wasn't very fruitful. It suggests using Cloudron's wildcards and, for Prosody, using its ACME plugin which can obtain certificates:"Let's dive into the specific technical challenges and potential solutions for using Prosody on Cloudron:

    Domain Flexibility with Prosody:
    Prosody is indeed more flexible than Snikket in this regard. You can configure Prosody to use different domains for XMPP addresses and the web portal. The key configuration options you'd need to focus on are: VirtualHost "example.com" -- XMPP domain configuration http_host = "chat.example.com" -- Web interface domain

    This separation isn't possible with Snikket's current setup.

    Certificate Handling:
    The core issue here is obtaining a certificate for example.com when your Cloudron app is hosted at chat.example.com. Prosody itself doesn't solve this, but there are potential workarounds:

    a) Use Cloudron's wildcard certificate: If Cloudron provides a wildcard cert for *.example.com, you could use this for both the chat subdomain and the main domain.

    b) Manual certificate injection: You could manually obtain a certificate for example.com and inject it into the Prosody container. This would require modifying the Cloudron app to allow for custom certificate paths:

    ssl = { certificate = "/path/to/custom/fullchain.pem"; key = "/path/to/custom/privkey.pem"; }

    c) ACME plugin: Prosody has an ACME plugin that can obtain certificates. You'd need to ensure the Cloudron app has the necessary permissions to write these certificates and that the DNS challenge is used instead of HTTP:

    plugin_paths = { "/usr/lib/prosody/modules" } modules_enabled = { "acme" } acme = { provider = "letsencrypt", challenge = "dns-01" } SRV Records:
    Cloudron should allow you to set custom DNS records. You'd need to add: _xmpp-client._tcp.example.com. IN SRV 0 5 5222 chat.example.com. _xmpp-server._tcp.example.com. IN SRV 0 5 5269 chat.example.com. Cloudron Integration:
    The existing GitHub repo is a start, but you'd need to modify it to: Allow for custom domain configuration Implement one of the certificate solutions mentioned above Possibly add a script to automatically update SRV records via Cloudron's API Reducing Overhead:
    Unlike Snikket, Prosody doesn't include a TURN/STUN server by default. You could either:
    a) Use an external TURN/STUN service
    b) Implement a lightweight TURN/STUN server as a separate Cloudron app

    To move forward:

    Fork the existing Cloudron-Prosody repo and start implementing these changes. Engage with Cloudron's development team about adding an option for apps to use the primary domain certificate. This would solve many of these issues at the platform level. Consider implementing a custom module for Prosody that interfaces with Cloudron's API for dynamic configuration and certificate management.

    This approach should address the specific technical challenges you're facing with implementing an XMPP server on Cloudron while taking advantage of Prosody's flexibility. The key will be integrating Prosody's configurability with Cloudron's app structure and API."

  • Can't install custom app anymore via CLI, constantly retrying

    Moved Solved
    3
    0 Votes
    3 Posts
    58 Views
    nebulonN

    Maybe a temporary issue with your private docker registry or otherwise. Lets see if next time we have more info to work with.

  • Downloading image fails, constantly retrying

    1
    0 Votes
    1 Posts
    14 Views
    No one has replied
  • Problems with Postgres Addon

    6
    0 Votes
    6 Posts
    113 Views
    E

    I solved the port issue as well.
    The problem occured when I tried to start an interactive shell, which counted as starting a second application inside the cloudron app, that's where the port conflict came from.

    If someone else is working with Elixir on Cloudron, you can start an interactive shell like this:
    /app/_build/prod/rel/APP/bin/APP remote

  • Installing custom Apps on Cloudron

    47
    7 Votes
    47 Posts
    3k Views
    C

    As a relatively new member of the Cloudron community (especially compared to @scooke) I can see both points of view. The current collection of apps is very eclectic, spanning both personal and business. And to a certain extent that reflects the wide range of our community - a strength.

    I do not envy @girish and team trying to please all of us. It is both thankless and impossible. But one person's "must have" app is another person's "who cares". The danger is losing members if their needs are not met with the applications they need or want.

    Perhaps having a simplified installation process would allow more people to customize their Cloudrons as desired. And yes, despite the warnings that you are on your own, I am sure that support questions will arise. And the spirit of the Cloudron team and the community to help will always prevail. As long as these questions are within reasonable limits, perhaps this will allow the platform to grow more valuable without being overwhelmed. I would suggest that custom-installed apps have its own topic area, especially if the results could be hidden from search engines to prevent prospective members getting the wrong impression about Cloudron's reliability per @scooke 's valid concerns.

    Finally, I am personally interested in a business-oriented, custom-app platform where Dockerized applications can be hosted in a well-thought out and architected environment like Cloudron. We are exploring several ideas along these lines, including adding some private applications we have created, others we have paid to license, and some that are open source. And these systems would require incremental Cloudrons - helping to grow the revenue stream. In the end, that's the idea, isn't it...

  • Crontab not running in custom LAMP

    Moved
    13
    1 Votes
    13 Posts
    260 Views
    girishG

    @alex-uxlabsmx should work now. there were a couple of issues in the crontab:

    '&' in the end of the cron line. this puts the command in the background. cronjobs are not run in background and instead run on a schedule. so, the '&' should be removed. 'source' command is a bash primitive. you have to wrap it in bash -c "source ... && anothercommand", for example

    seems to work after that.

  • read-only file system, rmdir '/dist'

    Moved
    8
    1 Votes
    8 Posts
    165 Views
    nebulonN

    I am not familiar with how nestjs works during startup, but something tries to wholesale rm the /dist folder. I guess it tries to rebuild the app on startup? You may have to copy the app from read-only to /run first thing in start.sh and then start the app and not symlink the folder? Just a guess though.

  • Update app : Read-only file system

    Moved Solved
    8
    1 Votes
    8 Posts
    215 Views
    J

    Glad you got it sorted out!

  • Langfuse packaging issue

    1
    0 Votes
    1 Posts
    39 Views
    No one has replied
  • How to package third-party apps, with example

    5
    1 Votes
    5 Posts
    181 Views
    E

    Thank you for the detailed response! Since this app doesn't run the LLM itself, the system requirements are less heavy.

    But wouldn't everything that wasn't attached to Cloudron just run inside the container? I mean, let's say I write a dockerfile for this app, but "forget" to use the postgres addon of cloudron. Wouldn't the app still run, but with the database inside the app, so it would be overwritten upon updating?

    Other than that, this app seems to have a sandbox container and one for vector databases, which couldn't be rebuilt easily in Cloudron.

  • App packaging tip for easier building

    4
    4 Votes
    4 Posts
    234 Views
    LanhildL

    @girish

    To make it more clear, I have made a template repository with all the files and scripts I usually use for my Cloudron apps.

    In the future, we might benefit from adopting such a strategy for the Cloudron CLI init script by using these files as a template/starter Cloudron app project. It'd make maintenance easier, more uniform, and make the process less daunting for new app devs.

    https://github.com/Lanhild/starter-cloudron

  • Multi-Stage Dockerfiles

    10
    5 Votes
    10 Posts
    612 Views
    girishG

    @Lanhild yup, we already started using multi-stage builds by now. For app store, you have to pin the images though. Using ":latest" is not good will have to be changed.

  • Question about app versions updates

    Solved
    4
    1 Votes
    4 Posts
    178 Views
    LanhildL

    Got it. Thanks for the answer!

  • App wishlist - raw data

    4
    3 Votes
    4 Posts
    233 Views
    E

    @girish scroll and copy > chatgpt