I'm about to test it on my vps-hosted Coolify which I run in addition to Cloudron. I'll check if that consumes a lot of resources or not. If that's a nice app, I might help to package it for Cloudron, if doable.

SansGuidon
Posts
-
AFFiNE - open-source Notion, Miro, Monday, Outline, Appflowy alternative -
Some struggles with Cloudron migrationThanks for the great feedback and I know my post could have been confusing, it was really written late at night
- your remark about the section about wildcard / dns makes sense, that was a pebkac as the first time I overlooked that section and forgot that I was directly concerned by this. However even on the second attempt, when I did point DNS to the right IP, things still got stucked. Because I had to configure my FW to let Cloudron traffic out in order for the dns resolution to work. Obvious you would say, but not at night in a rush and without much information.
- I admit mentioning Firewall in the migration/restore guide might be too much, but you could consider that in context of a migration to a new VPS provider, especially if this migration is not executed frequently by the operator, and in order to improve the overall migration experience, it makes actually sense to refresh the guide reader about the network requirements (open x ports), there could a link to the installation guide that covers the requirements for having specific ports open. When I find a migration guide I don't specifically think about reading the whole install guide as I assume the migration is a shorter version of the install. Also maybe not everyone is willing to rely solely on Cloudron config for the security. Hetzner gives lot more power to users and control, and Cloudron sometimes feels a bit too vague.
- As a power user (DevOps) and busy dad, Cloudron feels both nice or confusing/limited at times depending what I want to do.
- The mounts issues errors were for most related to network. The message must be clearer.
- I could use Hetzner for DNS but we have already a long term subscription with Hostinger for several domains so we are anyway still stuck a bit. Also I could argue that putting all my eggs on same provider is risky. I had an outage with Contabo in the past where both VPS and Backups location were impacted. this kind of situation is a pain in the ass.
I would assume this whole migration story is a mix of pebkac and unclear documentation, confusing UX, confusing error messages and missed automated checks opportunities. And I wanted to contribute this thread in the hope to open a debate about this
and improve the overall experience.
BTW all apps are up & running, I have yet to fix a few email settings, but that will have to wait til I'm back home
and fresh after a whole day YAMLing sigh
-
Some struggles with Cloudron migrationHey,
I'm still migrating my server from Contabo to Hetzner, so far the dashboard works but I'm not done yet and I had some struggles on the way:
-
I had restored Cloudron using a backup configuration downloaded from a previous instance, but the private key in the backup is somehow filled yet now valid and the error I got was "could not determine mount failure reason", which is not clear at all.
-
The restore guide is not super clear about that, but before the first restore operation, I forgot to point my.<domain>.<tld> to the new IP so I would never reach the new dashboard properly, Cloudron would remain in a non ready state. I noticed in the restore guide that forgetting to update the DNS record to the new IP could be disastrous so I just started afresh reinstall again. Until I face the same situation again despite having correctly pointed the DNS record to new IP. By checking the logs, I noticed that likely I had issues with ACME/DNS because my Firewall was blocking port 80. Once I fixed that, after some patience, I was able to reach the new Cloudron dashboard.
-
Apps restore are queued. So I know I have to point all apps DNS records to the new IP. As I'm using Hostinger, it's all manual, yet it's quick. But apps restore are still in queue.
-
Volumes were not reachable. I had a strong FireWall configuration applied to my new server and somehow Cloudron just does not handle that well, I just had some weird errors like "mount inactive could not determine mount failure reason" similar to https://forum.cloudron.io/topic/12692/backup-failed-backup-endpoint-is-not-active-could-not-determine-mount-failure-reason-failed-to-mount-inactive-could-not-determine-mount-failure-reason/2 when in fact it was just Hetzner preventing traffic through ports 22 and 23.
I'm still stuck with :
- sync dns failures.
- certs renewal is failing fully or partially.
- apps not restored so not available.
- most of services are not in ready state.
- some issues I didn't expect to have
# cloudron-support --troubleshoot Vendor: Hetzner Product: vServer Linux: 6.8.0-57-generic Ubuntu: noble 24.04 Processor: AMD EPYC-Milan Processor BIOS NotSpecified CPU @ 2.0GHz x 4 RAM: 15985236KB Disk: /dev/sda1 130G [OK] node version is correct [FAIL] Server has an IPv6 address but api.cloudron.io is unreachable via IPv6 (ping6 -q -c 1 api.cloudron.io) Instead of disabling IPv6 globally, you can disable it at an interface level. sysctl -w net.ipv6.conf.enp7s0.disable_ipv6=1 sysctl -w net.ipv6.conf.eth0.disable_ipv6=1 For the above configuration to persist across reboots, you have to add below to /etc/sysctl.conf net.ipv6.conf.enp7s0.disable_ipv6=1 net.ipv6.conf.eth0.disable_ipv6=1
I'll keep posting updates, I believe it's important to learn that despite the migration seems easy, there are some caveats that can force to stay hands on.
EDIT:
- After checking the install guide (not the migration not restore guide), I found more information about the recommended Networking/Firewall config: https://docs.cloudron.io/installation/#firewall-setup and https://docs.cloudron.io/installation/#install_1 this info was AFAIK not mentioned during the migration guide?
- I tuned the Firewall config of Hetzner to the recommended settings and restarted the instance. It turned out to be better for Cloudron:
also for apps restore (still in progress)
- Ok, after unblocking port 53, it seems now my apps are struggling to restore as DNS records pointing to IPV6 are expected, which i didn't provide. I'll fix the DNS setup to add the AAAA records pointing to the public ipv6.
- Apps start to restore as expected after adding all the AAAA records pointing to IPV6.
That's all, folks
TLDR; A few confusing guide steps, unclear error messages or prerequisites, inconsistent docs have led to more suffering than expected.
I wish however that this inspires some improvements in the platform and documentation.
Thanks for reading
-
-
Backup failed | Backup endpoint is not active: Could not determine mount failure reason. | Failed to mount (inactive): Could not determine mount failure reason.I just had the issue while attempting to migrate to a new Cloudron restore, at the step of restoring a full backup and this despite following exactly the steps in Cloudron guide for restoring backups.
I quickly solved it through:
- Reviewing unbound service status shows everything looked ok
- I had a doubt about the private key password being good, as the backup configuration didn't clarify that in the UI.
- I just put my private key password again, and attempted the restore button, this time it works.
So it's good to mention maybe in the guide that the private key password should be double checked even if using a preexisting backup configuration generated from the previous Cloudron instance.
-
Add Chromium to the package to support the beta featuresLooks like it's solved! Thanks @vladimir.d (https://git.cloudron.io/packages/uptime-kuma-app/-/commit/42c2f7a6d689ab08a1c05317fede770e8d72d6f0)
-
[App Store] only deadlinks on the Ghost page?Thanks @girish maybe automatic detection could be achieved with something like https://github.com/lycheeverse/lychee
-
Add Chromium to the package to support the beta featuresIn 2023, Uptime kuma was updated to support Chromium for one of the watches, which is reflected in the Cloudron package update here:
#4141 Added support for /snap/bin/chromium (Ubuntu's default Chromium path)
(https://forum.cloudron.io/topic/5388/uptime-kuma-package-updates/77)And Chromium appears effectively as one of the possible watches:
but I couldn't make this work as I don't know the path to chromium on the app as packaged in Cloudron.
Could it be that this was not mentioned yet and not implemented yet as part of Cloudron package? Or am I missing something?
I don't see any mention of Chromium in the packaging: https://git.cloudron.io/packages/uptime-kuma-app/-/blob/master/Dockerfile?ref_type=heads
And at runtime, when trying to configure Chromium in Uptime Kuma, the app complains the path to chromium is not found,
In the settings, trying to configure a path shows this if no valid path is given, I guess no default chromium instance is setup, but I might be wrong.
This could potentially be delivered as part of the package, as done for Changedetection maybe? https://git.cloudron.io/packages/changedetection-app/-/blob/master/Dockerfile?ref_type=heads
What do you think?
Thanks in advance for the great and hard work -
[App Store] only deadlinks on the Ghost page?I'm new to Ghost and wanted to experiment a bit, starting my Ghost journey from Cloudron.
Sadly, most of the links that should help me start with Ghost are dead. I'm able to find help otherwise but I think it's important to double check (automatically?) such links from Cloudron platform itself as part of a linter, maybe with something like changedetection or simply check for availability of the target pages.Thanks!
-
Shouldn't we get an alert when a service container fails / is unhealthy?I also face similar issues, with apps such as WordPress or Shaarli, which sometimes stop responding to requests, yet do not crash but appear unhealthy to Cloudron or to any monitoring tool. It become annoying to need to restart apps manually several times a week, to the point I had to script something to fix the missing monitoring / autorestart for the more fragile apps running on Cloudron. As discussed in some thread in Cloudron forum this kind of healthcheck must be part of the Cloudron platform ideally. See -> https://forum.cloudron.io/post/101225 for the thread I mentioned and the mitigation (script) I'm using.
-
App crashing frequently throws "500" error - PHP Fatal error: Allowed memory size of 134217728 bytes exhausted@girish As mentioned before, Shaarli hardcodes the memory limit in their init.php. I did not realize that Shaarli maintainer wasn't aware of that. Yet they suggest adjusting the way Cloudron packages Shaarli. https://github.com/shaarli/Shaarli/issues/2130#issuecomment-2726974132
Quoting the GitHub discussion:
@nodisc said in App frequently returns 500 error - PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (cloudron) #2130@SansGuidon wow, I had no idea this was actually in the code (and always has been), and on my setup (apache+php-fpm) it doesn't have any effect (memory_limit stays at 256M), but I suspect it does with Cloudron's setup which still uses the deprecated apache2+mod_php setup.
Before moving forward, I suggest that cloudron's packaging should be modernized to use php-fpm + apache mpm-event which has many advantagesThey suggest that we verify this by hacking the init.php of Shaarli and remove the ini_set but I can't do that as init.php is part of
/app/code
and I do not want to break Shaarli on my CloudronAny idea to move this forward?
-
Anyone added a custom app to their cloudron?I did once for my own app, giving examples is maybe not worth it as every app is its own beast. However I used LLM Prompt for such task.
After I came up with a basic Dockerfile and script (shell) for building/running my app, I created a giant prompt including all the key config files for my app, including also a copy of the whole relevant documentations from Cloudron for packaging any app, as well as some examples of already packaged Cloudron app with same tech (there are a few https://git.cloudron.io/cloudron/)Based on that, I could already have a very good starting point
My prompt was something like :
I have a Pythonic app for Cloudron, called <NAME> I'd like to package it for my Cloudron, I've already a Cloudron Docker registry. Here is my <config/something.conf> file <CODE HERE> Here is my requirements.txt file listing all my app dependencies <REQUIREMENTS.TXT CONTENT HERE> Here is my Dockerfile <DOCKERFILE CONTENT HERE> Here is my docker-compose file <DOCKER-COMPOSE CONTENT HERE> Here are examples of CloudronManifest.json for python apps: <INSERT EXAMPLE 1 HERE> <INSERT EXAMPLE 2 HERE> <INSERT EXAMPLE 3 HERE> ... Also the official cheatsheet for packaging apps in general for Cloudron <COPY CONTENT FROM https://docs.cloudron.io/packaging/cheat-sheet/ HERE> Another tutorial for packaging is : <COPY CONTENT FROM https://docs.cloudron.io/packaging/tutorial/ here, excluding the "Next steps" section at the end > Here are examples of start.sh scripts from other Python apps: <INSERT EXAMPLE 1 HERE> And <INSERT EXAMPLE 2 HERE> Now if you need more files examples from some python app, let me know which could help and I provide them. other stuff like start.sh? Please STOP and ask first for all the files you need to know before giving the full step by step guide to package my app. I'm interested into Cloudron addons, which one could fit my app for now?
Then the LLM asked me for more info, I filled the info, then I did lot of progress around packaging my app. It is far from being perfect, but if you are not wanting to waste time coding, at least be efficient while being lazy
-
App crashing frequently throws "500" error - PHP Fatal error: Allowed memory size of 134217728 bytes exhaustedSo far, no crash during the night
. I'm now testing if lowering the memory allocated to this app by Cloudron will make things worse. Like going back to something like 256M instead of 1G.
-
App crashing frequently throws "500" error - PHP Fatal error: Allowed memory size of 134217728 bytes exhausted@girish thanks for the package update, it might have improved the stability as despite sress testing the shaarli app after updating I didn't face the same error as before. I consider that if this resolves the problem it is a big victory, yet I prefer to not jump to conclusions for now, a good night is needed it the problem is not solved, I should soon get new alerts. Otherwise then I'll mark the issue as solved (hopefully)
-
App crashing frequently throws "500" error - PHP Fatal error: Allowed memory size of 134217728 bytes exhaustedThank you @girish
I've already pushed the memory limit up to 1G yesterday without help
What I did try is to edit php.ini with something likedisable_functions = ini_set auto_prepend_file = /app/data/init.php
and the
init.php
was a custom hack looking like<?php $original_ini_set = 'ini_set'; function ini_set($option, $value) { if ($option === 'memory_limit') { return false; } return call_user_func_array($GLOBALS['original_ini_set'], func_get_args()); } call_user_func($original_ini_set, 'memory_limit', '512M'); error_log("Prepend file loaded and memory_limit set to " . ini_get('memory_limit'));
I don't recall all the different versions of the setting I've tried as it was passed midnight but at some point I could work around the hardcoded memory limit of 128M as defined in Shaarli init.php. Yet that didn't solve the root cause
but even if I could see an effective increase of memory limit used by Shaarli at runtime, so completely ignoring what was hardcoded in init.php , that didn't improve the situation
-
App crashing frequently throws "500" error - PHP Fatal error: Allowed memory size of 134217728 bytes exhaustedmy Shaarli app on Cloudron frequently throws 500 while loading the frontend.
everytime this occurs I see this in Shaarli log:Mar 04 14:40:58 [Tue Mar 04 13:40:58.352043 2025] [php:error] [pid 46] [client 172.18.0.1:36306] PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 9235624 bytes) in /app/code/application/bookmark/BookmarkIO.php on line 93
I tried to increase the memory limit via Cloudron allocated resources and php.ini without improvement.
I've also opened an issue in Shaarli repo: https://github.com/shaarli/Shaarli/issues/2130 because this I/O intensive operation for loading such a small DB (9K links) is unbelievable.
I know CLoudron hardcodes this memory limit : https://git.cloudron.io/packages/shaarli-app/-/blob/master/Dockerfile?ref_type=heads#L31 so I first thought that my changes made to php.ini were not taken into account. I wonder also how to double check if those are really taken into account?Yet I also notice that Shaarli codebase contains a init.php file that hardcodes the memory limit to 128M : https://github.com/shaarli/Shaarli/blob/master/init.php#L18 so I also wonder if Cloudron php.ini makes sense.
Thanks for your help!
-
Cannot add Hetzner Storage Box via sshfsI also used a passphrase the first time I had to setup hetzner storage via sshfs, for me it's a best practice so I always put a passphrase.
-
Is there a permalink for filtering apps with certain tags?thank you @joseph
-
Request - show full changelog for CalibreWeb upgradesthanks for clarifying, now I'm less confused
!
-
Is there a permalink for filtering apps with certain tags?every day I'm opening my Cloudron dashboard and filtering all apps with a specific tag.
I'd like to avoid the manual filtering of apps associated with specific tags, for instance I would like a permalink with the tags as query parameters at the end of the apps URL, something like : https://my.cloudron.domain/#/apps?tags=cron,dailycheckDoes such thing exist or is it possible to implement it? I can alternatively make some user script for this as a workaround, but I'd like to get this kind of feature out of the box.
Thanks in advance
-
Request - show full changelog for CalibreWeb upgradesThe notification links to full changelog at https://github.com/janeczku/calibre-web/releases/tag/0.6.24 which contains
New features: Extract metadata of audiofiles during upload (mp3, opus, ogg, ogv, aac, ac3, aiff, asf, flac, m4a, m4b) Updated Pdf Viewer (pdf.js) Upload (multiple) book formats with progress and merge the corresponding metadata into the book on book edit page (also via drag'n drop #2252) Add cookie prefix environment variable to config to enable storing user credentials for multiple indstances on one server Implementation of sorting according to shelf added (#3003) Improved contrast for epub reader headline in dark modes (#3145) Enable python3.12 compatability (Migrate from iso639) Integrate the advocate project to simlify installations on newer python version (>3.9) on windows Set number of decimals of series_index shown everywhere to 2 digits Changed response code to opds download forbidden to 401 instead of 404 for opds downloads (improves anonymous browsing with guest has no download permission) libmagic binary files are now installed automatically on windows to simplify installation on windows Bug Fixes: Changed formating of float values. If value ends not with "0" tailing "0" are printed Fix for Kobo browser not downloading kepub files (#2990) Fix for cover size during kobo sync (#2523) Improved whitespace removal at start and end of strings for "unicode whitespaces" Shelf sort algorithm is now saved Music icon is now only visible once if more than one audio format available Fix for only last e-mail address is saved when specifying multiple e-reader mail addresses in user settings (#3130) Fix to generate thumbnails on gdrive Fix for metadata search results with amazon and google returning nothing Fix invalid database can not be saved for split library (#3131) Fix for Invalid cross-device link error during upload on very very(?) special drive configuration Fix Invalid amazon link for uk amazon store (#3151) Fix bookmarks button for safari browser (#3178) Fix Embedding metadata during convert not working on windows Fix Calibre convert parameters with spaces are not working (#3189) Import LDAP users from Microsoft Active Directory with special characters like "," and "[" is now working (#3186) Display error message if visiblity resticting custom column is not available and delete custom column related values on database change (#3190)
that's what I expect to see in the notification