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


Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Bookmarks
  • Search
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Brand Logo

Cloudron Forum

Apps | Demo | Docs | Install
canadaduaneC

canadaduane

@canadaduane
About
Posts
45
Topics
10
Shares
0
Groups
0
Followers
0
Following
0

Posts

Recent Best Controversial

  • Sponsoring Vikunja Features
    canadaduaneC canadaduane

    Just FYI our company (relm.us) is sponsoring some new feature development in Vikunja that may help others here:

    1. Image previews: when attaching an image-type file to a task, a thumbnail of the image will be visible (currently, only the filename/description is shown).
    2. Cover image on kanban cards: you will be able to promote a kanban card's attached image to the "cover", so that you can see the image in "kanban" mode. This is similar to the way Trello does it.
    3. The large "Vikunja" logo/branding in anonymous/read-only mode will be optional.

    Vikunja's developer, Konrad, estimates these features will be ready by end of year (i.e. at the next release).

    Best,
    Duane Johnson
    CEO/developer Relm.US

    Vikunja

  • First try app packaging : librechat - issue with postgresql extention (pgvector)
    canadaduaneC canadaduane

    I have a working setup, based on @Valexico 's work here:

    github.com/canadaduane/librechat-cloudron
    https://github.com/halecraft/librechat-cloudron

    The package has been updated to the latest version of LibreChat 0.7.8, and I fixed a few minor wrinkles such as OIDC login, write access to the public dir, and postgres support. I haven't yet tested it with all of the providers (this requires access keys in the .env file).

    image.png

    App Packaging & Development

  • LibreChat
    canadaduaneC canadaduane

    We now have a working LibreChat cloudron container set up. See: https://forum.cloudron.io/topic/12850/first-try-app-packaging-librechat-issue-with-postgresql-extention-pgvector/14?_=1749416165430

    App Wishlist chatgpt openai

  • LibreChat
    canadaduaneC canadaduane

    Open WebUI has changed their license to a not-strictly-open-source license (by OSI definition):

    https://docs.openwebui.com/license/

    https://www.reddit.com/r/LocalLLaMA/comments/1kg4avg/openwebui_license_change_red_flag/

    App Wishlist chatgpt openai

  • Lldap - a lightweight LDAP server with web UI
    canadaduaneC canadaduane

    This looks really interesting:

    https://github.com/nitnelave/lldap

    Has anyone looked into how it might be used with Cloudron?

    From the github page:

    A lightweight authentication server that provides an opinionated, simplified LDAP interface for authentication. It integrates with many backends, from KeyCloak to Authelia to Nextcloud and more!

    It comes with a frontend that makes user management easy, and allows users to edit their own details or reset their password by email.

    The goal is not to provide a full LDAP server; if you're interested in that, check out OpenLDAP. This server is a user management system that is:

    • simple to setup (no messing around with slapd),
    • simple to manage (friendly web UI),
    • low resources,
    • opinionated with basic defaults so you don't have to understand the subtleties of LDAP.
    Discuss

  • ActivePieces - nocode alternative to Zapier, Make, n8n etc
    canadaduaneC canadaduane

    We have an ActivePieces cloudron package working here:

    github.com/canadaduane/activepieces-cloudron
    https://github.com/halecraft/activepieces-cloudron

    As far as I can tell, there is no OIDC setup for the community version of ActivePieces, so no direct integration possibility with Cloudron users.

    image.png

    App Wishlist

  • Unable to uninstall app followed by reboot unable to start
    canadaduaneC canadaduane

    Update: never mind. I ran out of disk space. Fixed by deleting the docker registry app that had been holding on to all of the docker data during experimentation.

    Support troubleshoot disk space

  • Kestra on Cloudron – Open Source Workflow Orchestration with Developer Symmetry
    canadaduaneC canadaduane

    We packaged it up for Cloudron here: https://github.com/halecraft/kestra-cloudron

    App Wishlist

  • Where should I share my Work In Progress on app packaging ?
    canadaduaneC canadaduane

    I think the CloudronPackagePrompt.md file changed locations or was removed. Here is a URL that includes a commit SHA at a time in the repo when it existed:

    https://git.knownelement.com/KNEL/KNELProductionContainers/src/commit/9f74e0fc3977d368f1ca4846843607c75cd05b1c/Techops/CloudronPackagePrompt.md

    Here is the prompt, licensed AGPL according to the repo:

    Cloudron Application Packaging Wizard

    You are a Cloudron packaging expert who will help me package any application for deployment on the Cloudron platform. Using your knowledge of Cloudron requirements, Docker, and application deployment best practices, you’ll guide me through creating all the necessary files for my custom Cloudron package.

    Your Process

    1. First, ask me only for the name of the application I want to package for Cloudron.
    2. Research the application requirements, dependencies, and architecture on your own without asking me for these details unless absolutely necessary.
    3. Create all required files for packaging:
      • CloudronManifest.json
      • Dockerfile
      • start.sh
      • Any additional configuration files needed (NGINX configs, supervisor configs, etc.)
    4. Create a “[App-Name]-Build-Notes” artifact with concise instructions for building, testing, and deploying to my Cloudron instance.

    Key Principles to Apply

    CloudronManifest.json

    • Create an appropriate app ID following reverse-domain notation
    • Set memory limits based on the application requirements
    • Configure the proper httpPort which must match your NGINX setup
    • Include necessary addons (postgresql, mysql, mongodb, redis, localstorage, etc.)
    • Add appropriate metadata (icon, description, author)
    • Include a postInstallMessage with initial login credentials if applicable
    • Configure authentication options (OIDC or LDAP)

    Authentication Configuration

    • Configure the app to use Cloudron’s OIDC provider (preferred method):
      • Set up routing to /api/v1/session/callback in CloudronManifest.json
      • Use environment variables like CLOUDRON_OIDC_IDENTIFIER, CLOUDRON_OIDC_CLIENT_ID, and CLOUDRON_OIDC_CLIENT_SECRET
      • Properly handle user provisioning and group mapping
    • Alternative LDAP configuration:
      • Use Cloudron’s LDAP server with environment variables like CLOUDRON_LDAP_SERVER, CLOUDRON_LDAP_PORT, etc.
      • Configure proper LDAP bind credentials and user search base
      • Map LDAP groups to application roles/permissions
    • For apps without native OIDC/LDAP support:
      • Implement custom authentication adapters
      • Use session management compatible with Cloudron’s proxy setup
      • Consider implementing an authentication proxy if needed

    Dockerfile

    • Use the latest Cloudron base image (cloudron/base:4.2.0)
    • Follow the Cloudron filesystem structure:
      • /app/code for application code (read-only)
      • /app/data for persistent data (backed up)
      • /tmp for temporary files
      • /run for runtime files
    • Install all dependencies in the Dockerfile
    • Place initialization files for /app/data in /tmp/data
    • Configure services to output logs to stdout/stderr
    • Set the entry point to the start.sh script

    start . sh

    • Handle initialization of /app/data directories from /tmp/data if they don’t exist
    • Configure the application based on Cloudron environment variables (especially for addons)
    • Generate secrets/keys on first run
    • Set proper permissions (chown cloudron:cloudron)
    • Process database migrations or other initialization steps
    • Launch the application with supervisor or directly
    • Configure authentication providers during startup

    Web Server Configuration

    • Configure NGINX to listen on the port specified in CloudronManifest.json
    • Properly handle proxy headers (X-Forwarded-For, X-Forwarded-Proto, etc.)
    • Configure the application to work behind Cloudron’s reverse proxy
    • Set up correct paths for static and media files
    • Ensure logs are sent to stdout/stderr
    • Configure proper authentication routing for OIDC callbacks

    Process Management

    • Use supervisord for applications with multiple components
    • Configure proper signal handling
    • Ensure processes run with the cloudron user where possible
    • Set appropriate resource limits

    Best Practices

    • Properly separate read-only and writable directories
    • Secure sensitive information using environment variables or files in /app/data
    • Generate passwords and secrets on first run
    • Handle database migrations and schema updates safely
    • Ensure the app can update cleanly
    • Make configurations adaptable through environment variables
    • Include health checks in the CloudronManifest.json
    • Implement single sign-on where possible using Cloudron’s authentication
    Help Wanted or Offered

  • Remember to add /ghost to log in to Ghost with primary user
    canadaduaneC canadaduane

    It's been several months (perhaps more than a year) since I tried logging in to my Ghost installation. When I tried to log in, however, it didn't seem to recognize my email. A pop-up said, "No member exists with this e-mail address. Please sign up first."

    When I logged in via MySQL I could tell that the email exists in the users table. In fact, it was the only user. However, it still didn't seem to recognize the email.

    It turned out that I needed to add "/ghost" to the URL to log in to the Ghost backend. I had forgotten that there is a "member" login for email sign-ups, and the member login is the visible "sign in" button on the typical landing page.

    I hope this helps someone else!

    Ghost

  • First try app packaging : librechat - issue with postgresql extention (pgvector)
    canadaduaneC canadaduane

    Thanks @girish! I've added an MIT license. Also, I tested with a basic OPENROUTER_KEY and it seems to work well. I'm not aware of any issues at this time.

    App Packaging & Development

  • First try app packaging : librechat - issue with postgresql extention (pgvector)
    canadaduaneC canadaduane

    @Valexico is the MIT license ok with you also?

    App Packaging & Development

  • Sponsoring Vikunja Features
    canadaduaneC canadaduane

    I just noticed the image features landed a few days ago:

    https://github.com/go-vikunja/frontend/commit/877e4250554b31db2d57f44a7443c5d04c783e59

    https://github.com/go-vikunja/frontend/commit/3d88fdaaddca15b98efa938f0b2813420d56ad84

    (they have not been included in the Vikunja release yet, however)

    Vikunja

  • Configuration System Overhaul - from MiroTalk SFU 1.8.00
    canadaduaneC canadaduane

    I just noticed they have mattermost integration! From the .env.example file:

    # Mattermost Integration
    MATTERMOST_ENABLED=false                          # Enable Mattermost (true|false)
    MATTERMOST_SERVER_URL=YourMattermostServerUrl     # Mattermost server URL
    MATTERMOST_USERNAME=YourMattermostUsername        # Mattermost username
    MATTERMOST_PASSWORD=YourMattermostPassword        # Mattermost password
    MATTERMOST_TOKEN=YourMattermostToken              # Mattermost slash command token
    MATTERMOST_COMMAND_NAME=/sfu                      # Mattermost command name
    MATTERMOST_DEFAULT_MESSAGE=Here is your meeting room: # Mattermost default message
    

    Coming from a Slack-at-work setup with huddles (video meetings) this is really cool.

    MiroTalk

  • ActivePieces - nocode alternative to Zapier, Make, n8n etc
    canadaduaneC canadaduane

    Cloudron support mentioned here (but not implemented at time of writing):

    https://github.com/activepieces/activepieces/issues/1277

    App Wishlist

  • First try app packaging : librechat - issue with postgresql extention (pgvector)
    canadaduaneC canadaduane

    This is awesome progress @Valexico! Did pgvector make it in to the base Cloudron release, and were you able to then connect LibreChat's DB up?

    BTW I'm very interested in this right now because Open WebUI (the only chat frontend currently supported by Cloudrain AFAIU) recently changed their license to something that is no longer open source (by OSI definition).

    App Packaging & Development

  • Windmill: Open-source alternative to Airplane, Superblocks, Retool
    canadaduaneC canadaduane

    I've been dabbling with trying to create a Windmill on Cloudron container. It's more difficult than other apps. Some notes:

    • There is a hard-coded set of ROLEs required of the postgres database: windmill_admin, and windmill_user. Windmill uses these in DB migration scripts as well as during runtime to control access and access levels (see this section). As far as I can tell, Cloudron's postgres does not offer flexibility to add new roles in the database.
    • Windmill's LSP (Language Server Protocol) is itself a docker container with various programming languages (node, deno, python, etc.) pinned to certain versions. Because of these pinned versions, it is difficult to integrate into a single container along with the rest of Windmill. This suggests the docker Cloudron addon may be necessary.
    • Windmill also runs workers within docker containers. This may also require the docker Cloudron addon.

    In my effort to get most of Windmill running inside the same container, I have supervisord running with the following processes:

    • caddy
    • windmill-server
    • windmill-worker

    Caddy (or similar) is needed in order to act as reverse proxy for both windmill-server and the windmill-lsp container's websocket service.

    The biggest issue at this point is the hard-coded windmill_admin and windmill_user postgres roles. I'm not sure how to get around this other than to create a separate postgres DB, unfortunately.

    App Wishlist

  • Windmill: Open-source alternative to Airplane, Superblocks, Retool
    canadaduaneC canadaduane

    We have a working Windmill instance on Cloudron, (container) released with MIT license here:

    https://github.com/halecraft/windmill-cloudron

    The compromise we had to make here was to embed a Postgresql server inside the container, rather than connect to the one provided by Cloudron's postgres addon. Short of modifying Windmill itself, this was the only way we could give Windmill the full control over the Postgres instance that it needs / assumes it has.

    App Wishlist

  • Attaching 5 MB image to task results in "413 Request Entity Too Large"
    canadaduaneC canadaduane

    @girish It's fixed! Thank you very much.

    Vikunja

  • Sponsoring Vikunja Features
    canadaduaneC canadaduane

    @nebulon This has been released!

    https://vikunja.io/blog/2022/10/whats-new-in-vikunja-0.20.0/

    Vikunja
  • Login

  • Don't have an account? Register

  • Login or register to search.
  • First post
    Last post
0
  • Categories
  • Recent
  • Tags
  • Popular
  • Bookmarks
  • Search