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


Skip to content
  • Glitchtip on Cloudron - Bug tracking

    App Wishlist
    2
    3
    2 Votes
    2 Posts
    245 Views
    A
    +1 Lack of GlitchTip (or any other Sentry alternative) is what prevents me from switching over to Cloudron from PikaPods currently.
  • Immich - Package Updates

    Pinned Immich
    216
    1 Votes
    216 Posts
    115k Views
    Package UpdatesP
    [1.94.0] Update immich to 2.3.1 Full Changelog Fixed an issue where the new version notification pop-up causes the web app to enter a rendering loop and freeze up. fix: supporter badge by @jrasm91 in #24012 fix: new update notification cause rendering loop by @alextran1502 in #24013 feat: Add random memories resource by @jpg0 in #20025 feat(mobile): Quick date picker in the search page by @exelix11 in #22653 feat: workflow foundation by @alextran1502 in #23621 feat(mobile): add to album from asset viewer by @happychriss in #23608 feat: maintenance mode by @insertish in #23431 feat(mobile): location edit from asset viewer by @bwees in #23925 feat: timeline e2e tests by @midzelis in #23895
  • Request: Include S3 Storage Module

    Solved Matrix (Synapse/Element)
    20
    5 Votes
    20 Posts
    5k Views
    andreasduerenA
    @nichu42 Would you mind sharing the cronjob? What is it calling?
  • Increase upload max size in Nextcloud

    Solved Support
    16
    0 Votes
    16 Posts
    3k Views
    S
    Okay, so after some testing I still don’t know why the changes in htaccess disappear. But on one server it works fine, and on the other it reports a 5 GB file size limit — no idea why. At least normal uploads in the web interface now work. However, all my previous tests failed because I was always testing with a shared link that has edit rights. With that, I still get a 413 error and the following message: BadRequest – Expected file size of 3099309687 bytes, but 0 bytes were read (from the Nextcloud client) and written (to the Nextcloud storage). This can be caused by a network issue on the sending side or a writing issue on the server side. So it seems that the upload limit only works for regular logged-in uploads, but not for uploads via share links. Any idea what might cause this difference? Guess this is a nextcloud issue.
  • Ente for cloudron, help for testing wanted.

    App Packaging & Development
    6
    8 Votes
    6 Posts
    288 Views
    andreasduerenA
    Updated Ente Package: andreasdueren/ente-cloudron:0.5.6 The cloudron image now bundles the full Families frontend and rewrites its links toward your self-hosted origin, includes billing-plan JSON so Museum can resolve subscriptions without manual DB edits. Families email invitations were patched to read apps.family (so they link to family.<your-domain> instead of family.ente.io).
  • PHP 8.5 added, shortly removing PHP 7.4 and 8.0

    LAMP
    2
    0 Votes
    2 Posts
    30 Views
    girishG
    PHP 7.4 and 8.0 are removed in the latest package.
  • LAMP - Package Updates

    Pinned LAMP
    57
    1 Votes
    57 Posts
    12k Views
    Package UpdatesP
    [5.0.0] Remove PHP 7.4 and 8.0 . Both of these have reached end of life If you use any of these obsolete PHP versions, first update the PHP version and then update the package
  • GPX file upload error

    Dawarich bug readonly
    21
    2 Votes
    21 Posts
    179 Views
    imc67I
    @luckow said in GPX file upload error: @imc67 What? Almost half the distance to the moon in 2023? Haha that’s impossible, I did a double check. I was in October on a car trip to Bavaria and somehow GPS was swapping many times between my home (NL) and location there, maybe because of bad GPS reception and VPN? I’ll have to manually correct them because this is nonsense of course.
  • Tandoor - Package Updates

    Pinned Tandoor
    61
    0 Votes
    61 Posts
    12k Views
    Package UpdatesP
    [1.9.4] Update recipes to 2.3.5 Full Changelog improved reliability of mealie importer #​4229 improved search query parameter binding for number fields like timescooked improved set time from meal type in ical export #​4236 improved remove empty default ingredient when pasting ingredients fixed url list import failing completely with one broken site #​4199 fixed fixed property calculation error breaking some recipes #​4232 #​4185 fixed print mode not displaying images fixed print mode showing external recipe dropdown fixed linked recipe data when copying a recipe #​4181 fixed navigation in help page not working on mobile
  • Cloudron 9.0 (beta) bug reports

    Pinned Discuss
    147
    1 Votes
    147 Posts
    7k Views
    d19dotcaD
    @luckow I reported this a couple weeks ago too. Hoping it gets fixed soon as it’s a bit hard to read.
  • Multi-irb commands are deprecated

    Discourse
    3
    3 Votes
    3 Posts
    38 Views
    H
    Fantastic - thank you, worked
  • Backups exiting with code 70

    Solved Support backups
    5
    1
    1 Votes
    5 Posts
    46 Views
    LanhildL
    @girish Increasing the task memory did it. Issue solved.
  • Newbie Question: Why Do We Need to Request Apps on Cloudron?

    Off-topic
    3
    3 Votes
    3 Posts
    57 Views
    jamesJ
    Hello @IniBudi @IniBudi said in Newbie Question: Why Do We Need to Request Apps on Cloudron?: This is a genuine newbie question, and I don’t have an IT background. I hope someone can shed some light on this for me. I will go into a bit of detail here, so be prepared for a wall of text. @IniBudi said in Newbie Question: Why Do We Need to Request Apps on Cloudron?: Why do we actually need to submit a request for an application to be added to Cloudron’s app installation list? Every app in the Cloudron App-Store is pre-vetted by the Cloudron team and comes with life-cycle testing before publishing updates to all the users of Cloudron to ensure as minimal friction as possible when using Cloudron and the apps available. This means, every app needs to be understood on an application and technical level by the Cloudron team and handled accordingly so the end-user of Cloudron has as minimal as possible issues with the apps. As you can imagine, these life-cycle tests don't just materialize out of thin air. From the understanding of the packaged application, the life-cycle tests are developed to ensure a seamless app update process. Let's take the Nextcloud app. For the Nextcloud app for each app update runs through the life-cycle test https://git.cloudron.io/packages/nextcloud-app/-/blob/master/test/test.js which needs to succeed before the app update is shipped to you the end-user. // no sso it('install app (NO SSO)', function () { execSync(`cloudron install --no-sso --location ${LOCATION}`, EXEC_ARGS); }); it('can get app information', getAppInfo); it('can login as admin', login.bind(null, adminUser, adminPassword)); it('can close wizard', closeWizard); it('can upload file', uploadFile.bind(null, adminUser, adminPassword)); it('can check file', checkFile.bind(null, 'sticker')); it('can download previously uploaded file', testFileDownload.bind(null, adminUser, adminPassword)); it('can logout', logout); it('uninstall app', async function () { await browser.get('about:blank'); // ensure we don't hit NXDOMAIN in the mean time execSync(`cloudron uninstall --app ${app.id}`, EXEC_ARGS); }); // sso it('install app (SSO)', function () { execSync(`cloudron install --location ${LOCATION}`, EXEC_ARGS); }); it('can get app information', getAppInfo); it('can login OIDC', loginOIDC.bind(null, username, password)); it('can close the wizard', closeWizard); it('can logout', logout); it('can login as admin', login.bind(null, adminUser, adminPassword)); it('can close wizard', closeWizard); it('can upload file', uploadFile.bind(null, adminUser, adminPassword)); it('can check file', checkFile.bind(null, 'sticker')); it('can download previously uploaded file', testFileDownload.bind(null, adminUser, adminPassword)); xit('can list users', listUsers); xit('has no setup warnings', checkSetupWarnings); it('can logout', logout); it('can restart app', function () { execSync(`cloudron restart --app ${app.id}`); }); it('can login OIDC', loginOIDC.bind(null, username, password)); it('can check file', checkFile.bind(null, 'Readme')); it('can logout', logout); it('can admin login', login.bind(null, adminUser, adminPassword)); it('can check file', checkFile.bind(null, 'sticker')); it('can download previously uploaded file', testFileDownload.bind(null, adminUser, adminPassword)); xit('can list users', listUsers); it('can logout', logout); it('backup app', function () { execSync(`cloudron backup create --app ${app.id}`); }); it('restore app', function () { const backups = JSON.parse(execSync(`cloudron backup list --raw --app ${app.id}`)); execSync('cloudron uninstall --app ' + app.id, EXEC_ARGS); execSync('cloudron install --location ' + LOCATION, EXEC_ARGS); getAppInfo(); execSync(`cloudron restore --backup ${backups[0].id} --app ${app.id}`, EXEC_ARGS); }); it('can login OIDC', loginOIDC.bind(null, username, password)); it('can check file', checkFile.bind(null, 'Readme')); it('can logout', logout); it('can admin login', login.bind(null, adminUser, adminPassword)); it('can check file', checkFile.bind(null, 'sticker')); it('can download previously uploaded file', testFileDownload.bind(null, adminUser, adminPassword)); xit('can list users', listUsers); xit('has no setup warnings', checkSetupWarnings); it('can logout', logout); it('move to different location', async function () { browser.manage().deleteAllCookies(); await browser.get('about:blank'); // ensure we don't hit NXDOMAIN in the mean time execSync(`cloudron configure --app ${app.id} --location ${LOCATION}2`, EXEC_ARGS); getAppInfo(); }); it('can login OIDC', loginOIDC.bind(null, username, password)); it('can check file', checkFile.bind(null, 'Readme')); it('can logout', logout); it('can admin login', login.bind(null, adminUser, adminPassword)); it('can check file', checkFile.bind(null, 'sticker')); it('can download previously uploaded file', testFileDownload.bind(null, adminUser, adminPassword)); xit('can list users', listUsers); xit('has no setup warnings', checkSetupWarnings); it('uninstall app', async function () { await browser.get('about:blank'); // ensure we don't hit NXDOMAIN in the mean time execSync(`cloudron uninstall --app ${app.id}`, EXEC_ARGS); }); // test update it('can install app for update', function () { execSync(`cloudron install --appstore-id com.nextcloud.cloudronapp --location ${LOCATION}`, EXEC_ARGS); }); it('can get app information', getAppInfo); it('can admin login', login.bind(null, adminUser, adminPassword)); it('can close the wizard', closeWizard); it('can upload file', uploadFile.bind(null, adminUser, adminPassword)); it('can logout', logout); it('can update', function () { execSync(`cloudron update --no-backup --app ${LOCATION}`, EXEC_ARGS); }); it('can login OIDC', loginOIDC.bind(null, username, password)); it('can close the wizard', closeWizard); it('can check file', checkFile.bind(null, 'Readme')); it('can logout', logout); it('can admin login', login.bind(null, adminUser, adminPassword)); xit('can close the wizard', closeWizard); it('can check file', checkFile.bind(null, 'sticker')); it('can download previously uploaded file', testFileDownload.bind(null, adminUser, adminPassword)); xit('has no setup warnings', checkSetupWarnings); // it('can logout', logout); it('uninstall app', async function () { await browser.get('about:blank'); // ensure we don't hit NXDOMAIN in the mean time execSync(`cloudron uninstall --app ${app.id}`, EXEC_ARGS); }); And this could still be considered a very broad life-cycle test. Since Nextcloud has the capability to be unpredictably on the end-user part. You can install 562 "apps" / "plugins" for Nextcloud which in turn would need their own life-cycle test again. But since each of these "plugins" again is custom code from somewhere and in an unknown multiplication with other "plugins" makes it impossible to predict and thus test. The more complex the app and more extendable the app itself, the harder it gets to maintain and the Cloudron team needs to find a good balance for each app. This all needs to be handled by the Cloudron team so the end-user, you, can simply install and update an app without worrying. From this angle it might be more understandable that simply adding a new app to the app-store is not actually that simple. @IniBudi said in Newbie Question: Why Do We Need to Request Apps on Cloudron?: Is it possible to add custom applications to Cloudron? If yes or no, is it something difficult for beginners or is there another reason behind it? Possible, yes. Difficult? Depends. The user @timconsidine developed a custom app installer https://forum.cloudron.io/topic/14231/ccai-cloudron-custom-app-installer available at https://ccai.appx.uk/ which makes the installation of already existing custom Cloudron apps easier for "newbie" users. already existing custom Cloudron apps? From my previous explanation about the technicality of Cloudron apps and just the life-cycle tests. Each Cloudron app needs to follow the Cloudron app packaging rules. A small glimpse into the rules that can make it difficult to package an application for Cloudron. All source-code most exist in /app/code and only backup worthy data (user-data) should be stored in /app/data /app/code is read-only to ensure the security, see https://docs.cloudron.io/security/#app-isolation-and-sandboxing Apps run with a read-only rootfs preventing attacks where the application code can be tampered with. Meaning, when packaging an app for Cloudron, the packaging developer needs to understand the application he is packaging to certain degree to ensure this. The more complex the app and more extendable the app itself, the more difficult it can be to package and maintain the app. Broadly spoken, you can't just take the source-code of e.g. Agno - python-based open-source alternative to n8n and just make it an app for Cloudron. I know that @BrutalBirdie started the Community Event - Workshop / Webinar - App Packaging initiative, which might be something for people like you.
  • 1 Votes
    2 Posts
    29 Views
    nebulonN
    This is currently not really on our roadmap, we will likely instead improve the filemanager more and keep surfer as minimal as possible.
  • Fider - Package Updates

    Pinned Fider
    8
    0 Votes
    8 Posts
    800 Views
    Package UpdatesP
    [1.4.0] Update fider to 0.31.0 Full Changelog Allow setting listen addr with HOST and METRICS_HOST by @dani in #1384 Allow resending signup verification email for pending tenants by @Copilot in #1378 Replace loose equality with strict equality in SignInControl by @Copilot in #1392 Email sign-in changed to use sign-in codes. by @mattwoberts in #1389 Better email formatting. by @mattwoberts in #1400
  • Update Umami from v2 to v3

    Umami
    4
    0 Votes
    4 Posts
    35 Views
    nebulonN
    @tvortex so this is solved then?
  • Unable to update because low space is reported...

    Solved Support ubuntu disk space update
    8
    1 Votes
    8 Posts
    41 Views
    B
    Sorry, my mistake... looked at the wrong server all along.... nothing is wrong with anything other than me
  • Postiz Isn't Responding

    Solved Postiz
    4
    0 Votes
    4 Posts
    21 Views
    I
    @nebulon said in Postiz Isn't Responding: Published a new package, you have to update to that first, otherwise the app won't even start up. Thank you @nebulon now its working normally.
  • not all email received

    Unsolved Support email spamhaus
    9
    1 Votes
    9 Posts
    135 Views
    girishG
    I am adding a feature upstream to prefer ipv4 over ipv6 - https://github.com/haraka/Haraka/pull/3502
  • Postiz - Package Updates

    Pinned Postiz
    70
    1 Votes
    70 Posts
    12k Views
    Package UpdatesP
    [1.25.3] Update postiz-app to 2.8.2 Full Changelog fix: Twitter/X thread finisher posting with HTML tags by @meysam81 in #1057 Basic Sentry Metric Functionality by @egelhaus in #1064