KNEL Cloudron Packages

This repository scaffolds Cloudron packages for Known Element's portfolio. It provides:

  • A reusable application template (templates/cloudron-app) matching Cloudron packaging conventions.
  • Automation helpers in scripts/ to instantiate per-app scaffolds and run builds inside a dedicated Docker container.
  • A curated catalog (apps/catalog.json) that maps Known Element issue IDs to upstream projects.
  • Documentation under docs/ to guide packaging, testing, and release workflows.

Quick start

# Build or refresh the devtools image (first run builds automatically)
./run/dev.sh python --version

# Generate or refresh a single app scaffold
./run/dev.sh python scripts/new_app.py --slug apache-apisix

# Regenerate every scaffold (overwrites existing directories)
./run/dev.sh python scripts/new_app.py --force

# Lint an app and fail on placeholders
./run/dev.sh python scripts/lint_repo.py --slug apache-apisix --strict

# Update the status dashboard
./run/dev.sh python scripts/generate_status.py --preserve-timestamp

Packaging shell

# Build the Cloudron packager image (run when Dockerfile changes)
BUILD=1 ./run/packager.sh

# Launch an interactive Cloudron packaging shell
./run/packager.sh

All other development tasks should also use ./run/dev.sh (pass the desired command after the script). The wrapper will build the devtools image if needed and ensure every command executes inside Docker.

Repository layout

  • apps/ generated app scaffolds and metadata
  • docs/ playbooks and architecture notes
  • docs/CI_CD_GITEA.md instructions for running CI/CD and publishing images via the Gitea instance
  • docker/devtools/ Docker image that runs scaffolding, linting, and status tooling
  • docker/packager/ Docker image for Cloudron packaging workflows
  • scripts/ helper scripts (scaffolding, tooling entrypoints)
  • templates/ base Cloudron app template

Application catalog

Slug Issue Upstream
apache-apisix https://projects.knownelement.com/issues/179 https://github.com/apache/apisix.git
target-goalert https://projects.knownelement.com/issues/204 https://github.com/target/goalert.git
consuldemocracy https://projects.knownelement.com/issues/189 https://github.com/consuldemocracy/consuldemocracy.git
fleetdm-fleet https://projects.knownelement.com/issues/195 https://github.com/fleetdm/fleet.git
fonoster https://projects.knownelement.com/issues/227 https://github.com/fonoster/fonoster.git
healthchecks https://projects.knownelement.com/issues/192 https://github.com/healthchecks/healthchecks.git
hyperswitch https://projects.knownelement.com/issues/209 https://github.com/juspay/hyperswitch
netbox-docker https://projects.knownelement.com/issues/201 https://github.com/netbox-community/netbox-docker.git
openboxes-docker https://projects.knownelement.com/issues/205 https://github.com/openboxes/openboxes-docker.git
openfile https://projects.knownelement.com/issues/316 https://github.com/openfiletax/openfile.git
sniperphish https://projects.knownelement.com/issues/211 https://github.com/GemGeorge/SniperPhish-Docker.git
datahub https://projects.knownelement.com/issues/309 https://github.com/datahub-project/datahub.git
easy-gate https://projects.knownelement.com/issues/54 https://github.com/wiredlush/easy-gate.git
payroll-engine https://projects.knownelement.com/issues/208 https://github.com/Payroll-Engine/PayrollEngine.git
huginn https://projects.knownelement.com/issues/194 https://github.com/huginn/huginn.git
grist https://projects.knownelement.com/issues/191 https://github.com/gristlabs/grist-core
docassemble https://projects.knownelement.com/issues/277 https://github.com/jhpyle/docassemble.git
database-gateway https://projects.knownelement.com/issues/273 https://github.com/kazhuravlev/database-gateway.git
rundeck https://projects.knownelement.com/issues/217 https://github.com/rundeck/rundeck.git
slurm https://projects.knownelement.com/issues/222 https://github.com/SchedMD/slurm.git
rathole https://projects.knownelement.com/issues/225 https://github.com/rathole-org/rathole.git
jenkins https://projects.knownelement.com/issues/234 https://github.com/jenkinsci/jenkins.git
runme https://projects.knownelement.com/issues/322 https://github.com/runmedev/runme.git
seatunnel https://projects.knownelement.com/issues/301 https://github.com/apache/seatunnel
docker-webhook https://projects.knownelement.com/issues/271 https://github.com/thecatlady/docker-webhook
inventree https://projects.knownelement.com/issues/173 https://github.com/inventree/InvenTree.git
tak-server https://projects.knownelement.com/issues/180 https://github.com/Cloud-RF/tak-server
midday https://projects.knownelement.com/issues/178 https://github.com/midday-ai/midday.git
killbill https://projects.knownelement.com/issues/181 https://github.com/killbill/killbill.git
chirpstack https://projects.knownelement.com/issues/184 https://github.com/chirpstack/chirpstack.git
craig https://projects.knownelement.com/issues/185 https://github.com/CraigChat/craig.git
elabftw https://projects.knownelement.com/issues/188 https://github.com/elabftw/elabftw.git
jamovi https://projects.knownelement.com/issues/196 https://github.com/jamovi/jamovi.git
kibot https://projects.knownelement.com/issues/197 https://github.com/INTI-CMNB/KiBot.git
resgrid https://projects.knownelement.com/issues/214 https://github.com/Resgrid/Core
reviewboard https://projects.knownelement.com/issues/216 https://github.com/reviewboard/reviewboard.git
satnogs-kaitai https://projects.knownelement.com/issues/218 https://gitlab.com/librespacefoundation/satnogs/docker-kaitai.git
satnogs-webgui https://projects.knownelement.com/issues/218 https://gitlab.com/librespacefoundation/satnogs/docker-satnogs-webgui.git
sdrangel https://projects.knownelement.com/issues/219 https://github.com/f4exb/sdrangel-docker
signoz https://projects.knownelement.com/issues/221 https://github.com/SigNoz/signoz.git
warp https://projects.knownelement.com/issues/228 https://github.com/sebo-b/warp.git
drawio https://projects.knownelement.com/issues/272 https://github.com/jgraph/docker-drawio
openblocks https://projects.knownelement.com/issues/274 https://github.com/openblocks-dev/openblocks.git
wireviz-web https://projects.knownelement.com/issues/276 https://github.com/wireviz/wireviz-web.git
autobom https://projects.knownelement.com/issues/278 https://github.com/opulo-inc/autobom.git
plmore https://projects.knownelement.com/issues/279 https://github.com/PLMore/PLMore
manyfold https://projects.knownelement.com/issues/282 https://github.com/manyfold3d/manyfold.git
langfuse https://projects.knownelement.com/issues/283 https://github.com/langfuse/oss-llmops-stack.git
puter https://projects.knownelement.com/issues/286 https://github.com/HeyPuter/puter.git
windmill https://projects.knownelement.com/issues/285 https://github.com/windmill-labs/windmill.git
swupdate https://projects.knownelement.com/issues/326 https://github.com/sbabic/swupdate.git
mender-server https://projects.knownelement.com/issues/300 https://github.com/mendersoftware/mender-server.git
wireflow https://projects.knownelement.com/issues/50 https://github.com/vanila-io/wireflow.git
nautilus-trader https://projects.knownelement.com/issues/226 https://github.com/nautechsystems/nautilus_trader.git
mirlo TBD https://github.com/funmusicplace/mirlo.git

All entries are initially marked as todo; update individual READMEs as progress is made.

Local Verification

Run quality checks via the devtools wrapper:

# Fail if placeholders remain in the target manifest/start script
./run/dev.sh python scripts/lint_repo.py --slug apache-apisix --strict

# Refresh docs/APP_STATUS.md without changing the existing timestamp
./run/dev.sh python scripts/generate_status.py --preserve-timestamp

Use ./run/packager.sh whenever you need the Cloudron CLI to build, install, or push packages—it drops you into the dedicated packaging container.

CI/CD

The workflow .gitea/workflows/ci.yml mirrors the same commands by invoking the devtools container inside the runner. To reproduce the pipeline locally, run:

./run/dev.sh python scripts/lint_repo.py --strict --slug apache-apisix
./run/dev.sh python scripts/generate_status.py --preserve-timestamp
BUILD=1 ./run/packager.sh    # optional: rebuild packager image before smoke tests

Once a Gitea Actions runner is available, enable the workflow and it will build knel/cloudron-devtools/knel/cloudron-ci automatically.

Refer to docs/PACKAGING_GUIDE.md and AGENTS.md for detailed operating procedures.

Description
KNELCloudronPackages
Readme AGPL-3.0 278 KiB
Languages
Dockerfile 53.6%
Shell 30.9%
Python 13.2%
Jinja 2.3%