Files
KNELCloudronPackages/README.md

142 lines
8.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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
```bash
# 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
```bash
# 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:
```bash
# 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:
```bash
./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.