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

275 Topics 2.5k Posts

Subcategories


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

    36 274
    36 Topics
    274 Posts
    BrutalBirdieB
    Hello @morgi and Welcome to the Cloudron Forum! I have many years of experience with Cloudron and hosting. Would be happy to help and can even offer a full monitoring solution that would notify you if something is happening or even before it gets critical. Including dashboard access to full statistics like Docker System, file system, Networking, System performance, website overview (selenium smoke tests etc.) and to some extend Cloudron API monitoring. This could also be extended if something else is needed. If you would like to discuss this further you can send me a dm in the forum. You can find more bout me here: https://keyoxide.org/3EFABCB708412AEE165EDC6C7B17D07087F79F9E https://www.hackradt.com/posts/1750792477727-about-me Feel free to contact me in the medium you like most. In keyoxide my Mail, Discord and Matrix/Element is verified. Also including my PGP key, if you'd like encrypted mail conversations. To be fair to everyone, tagging the @partner group. In case you need a full contract with SLA and response times, I would suggest you get in touch with @luckow (also a partner) His company and staff have many years of experience with Cloudron hosting and services all around Cloudron. ~Cheers
  • Cloudron CLI - Updates

    Pinned
    13
    0 Votes
    13 Posts
    69 Views
    girishG
    [5.15.0] decrypt-dir: option to disable filename decryption Add --env to install
  • App contributions hall of fame

    Pinned Moved
    42
    10 Votes
    42 Posts
    9k 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
    5k 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
    5k Views
    nebulonN
    I guess the current link would be https://docs.cloudron.io/packaging/tutorial/
  • Building custom packages

    Pinned
    6
    4 Votes
    6 Posts
    3k 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
    3k 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
    7k Views
    T
    @matbrgz added to the post at the top!
  • Installing custom Apps on Cloudron

    67
    7 Votes
    67 Posts
    8k Views
    girishG
    @timconsidine this is just my personal view and I haven't discussed with the team yet... I think it's a good idea to have a mechanism to add custom appstores/repos. Say, one can add TimsRepo to Cloudron. You (as a 3rd party) can then offer whatever apps you want there to others. This way Cloudron team is also not burdened with all sorts of specialized apps. I think this is an interesting concept to be explored because it allows service providers to provide custom and private apps. For example, say Agate/Renato which you have packaged to some extent. You could provide this to others. Maybe even some monetization mechanism for your effort. Atleast, I am quite open to exploring if this model would work
  • Install new custom app with environment variables?

    8
    1 Votes
    8 Posts
    95 Views
    E
    @girish said in Install new custom app with environment variables?: @ekevu123 cloudron install --env ENV1=1 ENV2=2 --location subdomain . Then, you can verify using cloudron env list. Thank you! I think this is the best solution for this problem.
  • Matrix WhatsApp Bridge

    12
    4 Votes
    12 Posts
    684 Views
    andreasduerenA
    Updated bridge to v0.12.3 https://git.due.ren/andreas/mautrix-whatsapp-cloudron
  • tcpPort routing

    routing ports
    3
    0 Votes
    3 Posts
    68 Views
    timconsidineT
    Thank you @James In the interim, I am attempting a workaround <can't find fingers-crossed emoji>
  • Failed to install app: 424 message: App purchase failed.

    10
    1 Votes
    10 Posts
    198 Views
    timconsidineT
    @girish thanks for looking into it all working now, so probably a glitch somewhere, not worth investigating further
  • [WIP] a Soulseek client with modern Web UI for Cloudron

    7
    3 Votes
    7 Posts
    407 Views
    SansGuidonS
    I've my Last.fm account since 2010, but nowadays I'm also scrobbling to https://listenbrainz.org/ as a backup in case Last.fm dies. I also aim to make my own scrobbler/stats independently from ListenBrainz and Last.fm, taking inspiration from https://coryd.dev/posts/2024/tracking-the-music-i-listen-to and https://sive.rs/ti
  • Custom subdomain per user

    4
    1 Votes
    4 Posts
    87 Views
    E
    Okay, thank you for the advise!
  • Trying to package Agate - A Gemini server

    15
    2 Votes
    15 Posts
    371 Views
    DidierMalenfantD
    Ok the docker issue is on their end. I'll wait until tomorrow to clean all the images on my repo up. I've posted about this app on the Wishlist section to see if there is any interest in putting in on the App Store.
  • XMPP Server - Prosody

    63
    4 Votes
    63 Posts
    8k Views
    D
    I'm happy to say that I've moved my XMPP server from NethServer to Cloudron. While this is probably not a common move, I am sharing some notes here in case it helps someone else. Also, perhaps this'll cause Cloudron to show up in a few more searches. Install XMPP on Cloudron using the steps above. A bit manual for now! Dump your ejabberd data (that's the XMPP server NethServer uses) with this command: /opt/ejabberd-20.04/bin/ejabberdctl --config-dir /etc/ejabberd dump /etc/ejabberd/xmpp_dump.txt Download this dump file locally For ease, clone the source for prosody to your local computer so you can utilize the migration tools and not install needless packages on Cloudron. You'll need to run ./configure and ./make - but you don't need to actually install it. Don't be a Lua noob. I spent a while struggling to get my Lua environment setup, and thought I needed to run the tools like lua ejabberd2prosody.lua but got lots of errors about dependencies missing. Once I figured out you need to execute it directly like ./ejabberd2prosody.lua things worked fine. run the ejabberd2prosody.lua script on your xmpp_dump.txt file: ./tools/ejabberd2prosody.lua ~/Desktop/xmpp_migrate/xmpp_dump.txt Create a migrator configuration (or use the one I've pasted below). It basically takes everything from the file data format and puts it into the sqlite format, since that's how the Cloudron prosody is configured. Docs: https://prosody.im/doc/migrator https://prosody.im/doc/storage   Run the migrator script: ./tools/migration/prosody-migrator.lua --config=./migrator.cfg.lua prosody_files database Turn off your Cloudron XMPP app Copy the resulting prosody.sqlite file into your Cloudron XMPP's /app/data folder. It will be in the /data folder under your local prosody directory. Turn on your Cloudron XMPP app Your bookmarks, rosters, etc. will now be transferred to your new server! This doesn't appear to move archive messages (mod_mam). Probably because most prosody servers aren't configured to store these permanently so they don't bother migrating them. I only noticed one issue while migrating. When I first ran the migrator script it gave me errors about topics being empty on some MUCs. I thought I was being smart and edited the code to handle the blanks. This caused me to be unable to join the MUCs on Prosody on certain XMPP clients because Prosody expects there to be a Topic for every MUC. Once I manually adjusted the MUC topics to be non-empty, the other clients started working fine. Another almost-issue is that Gajim needed to be restarted a few times to start using OMEMO properly. I think the other MUC issues may have thrown it into an error state. prosody_files { hosts = { -- each VirtualHost to be migrated must be represented ["domain.com"] = { "accounts"; "account_details"; "account_flags"; "account_roles"; "accounts_cleanup"; "auth_tokens"; "invite_token"; "roster"; "vcard"; "vcard_muc"; "private"; "blocklist"; "privacy"; "archive"; "archive_cleanup"; "archive_prefs"; "muc_log"; "muc_log_cleanup"; "persistent"; "config"; "state"; "cloud_notify"; "cron"; "offline"; "pubsub_nodes"; "pubsub_data"; "pep"; "pep_data"; "skeletons"; "smacks_h"; "tombstones"; "upload_stats"; "uploads"; }; ["conference.domain.com"] = { "accounts"; "account_details"; "account_flags"; "account_roles"; "accounts_cleanup"; "auth_tokens"; "invite_token"; "roster"; "vcard"; "vcard_muc"; "private"; "blocklist"; "privacy"; "archive"; "archive_cleanup"; "archive_prefs"; "muc_log"; "muc_log_cleanup"; "persistent"; "config"; "state"; "cloud_notify"; "cron"; "offline"; "pubsub_nodes"; "pubsub_data"; "pep"; "pep_data"; "skeletons"; "smacks_h"; "tombstones"; "upload_stats"; "uploads"; }; }; type = "internal"; -- the default file based backend path = "/home/user/code/prosody-build/prosody-0.12.4/data/"; } database { -- The migration target does not need 'hosts' type = "sql"; driver = "SQLite3"; database = "prosody.sqlite"; }
  • Cloudron base image 5

    4
    1 Votes
    4 Posts
    362 Views
    timconsidineT
    @girish that’s what I thought initially, but I checked both of those and was able to carry on working other prjects while waiting. I don’t understand it, and can only put it down to a docker weirdness. After a while I noticed that local docker desktop was asking to update, and after that I cleared the docker environment. Then all is back to normal (whatever that is). Phew
  • Docs ref Admin Notes and Checklist in Manifest

    4
    1 Votes
    4 Posts
    267 Views
    timconsidineT
    Either going blind or maybe a cached page because I didn’t see that. Or just rushing too much Thank you
  • Working on many apps in this list and others - who wants to collaborate ?

    Moved
    12
    5 Votes
    12 Posts
    933 Views
    marcusquinnM
    @charlesnw Cool, sounds good. CLoudron's a great way to discover and test all these amazing things to FOSS world kindly shares with humanity. OpenWeb UI has recently changed their license model, so that migh become an issue: https://forum.cloudron.io/post/106732 Also, LibreChat is just a ton easier to add all the models to and keep up to dat, as Open WebUI needs continual copy/pasting/checking for updates to tools, functions, models code. It's just time-expensive keeping on top of that with multiple instances, and often doesn't have all the features a model offers kept up to date.
  • Multi-Domain setup in one app

    Moved
    10
    0 Votes
    10 Posts
    760 Views
    E
    Thank you for checking, I really appreciate it! I had one domain with HostEurope and one with Porkbun. I will look into Minio, but since that's a completely new codebase, and I might need to extract additional logs from that to understand the difference, I might not be able to do that.