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
  • Brite
  • 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
  1. Cloudron Forum
  2. App Packaging & Development
  3. Help Wanted or Offered
  4. Where should I share my Work In Progress on app packaging ?

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

Scheduled Pinned Locked Moved Help Wanted or Offered
14 Posts 6 Posters 1.1k Views 9 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • J Offline
    J Offline
    joseph
    Staff
    wrote on last edited by nebulon
    #5

    We have a https://git.cloudron.io/playground/ for such repos. TBF, it doesn't matter where your repo is hosted . Your link is equally sharable but you can also use ours if you think yours is more transient.

    1 Reply Last reply
    0
    • canadaduaneC Offline
      canadaduaneC Offline
      canadaduane
      App Dev
      wrote on last edited by canadaduane
      #6

      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
      jdaviescoatesJ 1 Reply Last reply
      3
      • 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
        jdaviescoatesJ Offline
        jdaviescoatesJ Offline
        jdaviescoates
        wrote on last edited by
        #7

        @canadaduane said in Where should I share my Work In Progress on app packaging ?:

        Use the latest Cloudron base image (cloudron/base:4.2.0)

        I think perhaps we're on 5.0.0 now?

        I use Cloudron with Gandi & Hetzner

        1 Reply Last reply
        2
        • C Offline
          C Offline
          charlesnw
          wrote on last edited by
          #8

          The prompt file is here :

          https://git.knownelement.com/KNEL/KNELProductionContainers/src/branch/master/Cloudron/CloudronPackagePrompt.md

          I’ve been busy building out the front office (physical facilities ) of my rental businesses. That’s finishing up this weekend.

          So now I’m coming back to building out the middle / back office , and that means lots of cloudron packaging!

          1 Reply Last reply
          3
          • C Offline
            C Offline
            charlesnw
            wrote on last edited by
            #9

            I have my docker registry setup (one in gitea for testing, one on my cloudron for the images I'll release) and I have the cloudron build service setup. Also have the cloudron tooling on my development workstation (and, you know, have a development workstation setup finally). Progress on packaging very soon. Been going through my bookmarks/notes and found a few more things to package up.

            I'll be posting updates throughout the month of July as I progress.

            1 Reply Last reply
            2
            • C Offline
              C Offline
              charlesnw
              wrote on last edited by
              #10

              Hello everyone. I am beginning to actually package up applications. Do you all have a discord/slack/telegram/etc room ? Would be great to co-work/hack/collaborate with core team as I work on all these apps. 🙂

              I have two milestones defined:

              • July : https://projects.knownelement.com/versions/16
              • August: https://projects.knownelement.com/versions/17

              The July milestone is finalized. I de-scoped a handful of (redundant) apps . I decided to keep librenms/mailpiler in a VM on-premise and grocy in the HomeAssistantOS VM. Eliminated homebox/homechart as redundant with grocy. Oh also keeping sipwise on-premise in a dedicated VM (because DHCP/tftp/port forwarding from my router). And sipwise really wants to have full control of the VM.

              jamesJ 1 Reply Last reply
              0
              • C charlesnw

                Hello everyone. I am beginning to actually package up applications. Do you all have a discord/slack/telegram/etc room ? Would be great to co-work/hack/collaborate with core team as I work on all these apps. 🙂

                I have two milestones defined:

                • July : https://projects.knownelement.com/versions/16
                • August: https://projects.knownelement.com/versions/17

                The July milestone is finalized. I de-scoped a handful of (redundant) apps . I decided to keep librenms/mailpiler in a VM on-premise and grocy in the HomeAssistantOS VM. Eliminated homebox/homechart as redundant with grocy. Oh also keeping sipwise on-premise in a dedicated VM (because DHCP/tftp/port forwarding from my router). And sipwise really wants to have full control of the VM.

                jamesJ Offline
                jamesJ Offline
                james
                Staff
                wrote on last edited by
                #11

                @charlesnw said in Where should I share my Work In Progress on app packaging ?:

                Do you all have a discord/slack/telegram/etc room ? Would be great to co-work/hack/collaborate with core team as I work on all these apps.

                There are matrix rooms:

                • https://matrix.to/#/#discuss:cloudron.io
                • https://matrix.to/#/#cloudron:matrix.org

                But the best communication path is here, in the forum.

                1 Reply Last reply
                1
                • C Offline
                  C Offline
                  charlesnw
                  wrote on last edited by
                  #12

                  For anyone who wants to follow my packaging work:

                  https://git.knownelement.com/KNEL/KNELProductionContainers/src/branch/master/PackagingWorkspace

                  1 Reply Last reply
                  3
                  • C Offline
                    C Offline
                    charlesnw
                    wrote last edited by
                    #13

                    Hello everyone. I've been busy with the physical facility buildout of my business. That has now wrapped up (I have one more weekend of punchlist work). Anyway, I am now packaging up the things from my list! Using a combination of claud/gemini.

                    See the git repo here : https://git.knownelement.com/KNEL/KNELProductionContainers/src/branch/integration/

                    1 Reply Last reply
                    2
                    • robiR Offline
                      robiR Offline
                      robi
                      wrote last edited by
                      #14

                      Make sure to try them with CCAI

                      Conscious tech

                      1 Reply Last reply
                      0
                      Reply
                      • Reply as topic
                      Log in to reply
                      • Oldest to Newest
                      • Newest to Oldest
                      • Most Votes


                      • Login

                      • Don't have an account? Register

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