Scaffold Cloudron packaging workspace and automation

This commit is contained in:
2025-10-02 12:07:09 -05:00
parent b4121cc932
commit 482d4ff1b8
414 changed files with 6837 additions and 2 deletions

View File

@@ -0,0 +1,20 @@
{
"manifestVersion": 2,
"id": "com.knel.apache.apisix",
"title": "Apache APISIX",
"author": "Known Element Packaging Team",
"tagline": "TODO: Short one-line pitch",
"description": "TODO: Comprehensive description for the Cloudron App Store entry.",
"changelog": "Initial scaffold",
"website": "https://github.com/apache/apisix",
"supportUrl": "https://projects.knownelement.com/issues/179",
"sourceUrl": "https://github.com/apache/apisix.git",
"version": "0.1.0",
"tags": ["custom", "known-element"],
"healthCheckPath": "/",
"memoryLimit": 536870912,
"httpPort": 3000,
"addons": {
"localstorage": {}
}
}

View File

@@ -0,0 +1,22 @@
# syntax=docker/dockerfile:1
FROM cloudron/base:5.0.0
LABEL org.opencontainers.image.source="https://github.com/apache/apisix.git"
LABEL org.opencontainers.image.description="Cloudron package for Apache APISIX"
ARG APP_VERSION
ENV APP_VERSION=${APP_VERSION:-latest}
# Copy application source into image at build time
# Replace this with a multi-stage build if upstream provides Docker images.
COPY ./app /app/code
# Copy start script and make it executable
COPY ./start.sh /app/pkg/start.sh
RUN chmod +x /app/pkg/start.sh
# Cloudron expects all processes to run as cloudron user
USER cloudron
WORKDIR /app/code
CMD ["/app/pkg/start.sh"]

View File

@@ -0,0 +1,20 @@
# Apache APISIX on Cloudron
- **Upstream repository**: https://github.com/apache/apisix.git
- **Implementation issue**: https://projects.knownelement.com/issues/179
- **Status**: Draft scaffolding generated on $(date -u +"%Y-%m-%dT%H:%M:%SZ")
## Packaging Checklist
1. Review upstream deployment requirements and map them to Cloudron services (database, cache, object storage, workers).
2. Update `Dockerfile` with the correct build steps and runtime dependencies.
3. Implement `start.sh` to configure the app from Cloudron-provided environment variables and launch the primary process.
4. Edit `CloudronManifest.json` with accurate metadata, permissions, ports, addons, and health checks.
5. Add integration and smoke tests under `test/` to validate the package.
6. Document manual configuration steps, migration requirements, and known gaps in this README.
## Notes
- Replace the placeholder long-running process in `start.sh`.
- Populate the `app/` directory with the application build artefacts or git submodules.
- Use the shared packaging container (`docker/packager`) to run `cloudron build` and `cloudron install` so the host remains clean.

View File

View File

@@ -0,0 +1,9 @@
{
"slug": "apache-apisix",
"title": "Apache APISIX",
"issue": "https://projects.knownelement.com/issues/179",
"repo": "https://github.com/apache/apisix.git",
"additionalRepos": [],
"created": "2025-10-02T16:46:49Z",
"notes": "TODO: capture packaging notes"
}

8
apps/apache-apisix/start.sh Executable file
View File

@@ -0,0 +1,8 @@
#!/bin/bash
set -euo pipefail
# Cloudron injects configuration via environment variables and files under /run
# Use this script to render config files and launch the upstream service.
# TODO: Replace the command below with the correct process supervisor.
exec /bin/sh -c "echo 'Replace start.sh with application startup logic for Apache APISIX' && sleep infinity"

View File

@@ -0,0 +1,16 @@
#!/bin/bash
set -euo pipefail
# Basic container reachability check executed inside the packaging container.
# Replace curl target with an endpoint exposed by the app once the package is functional.
cloudron_app_url=${CLOUDRON_APP_ORIGIN:-"http://localhost"}
http_code=$(curl -s -o /tmp/smoke.log -w "%{http_code}" "${cloudron_app_url}")
if [[ "${http_code}" != "200" ]]; then
echo "Unexpected HTTP status: ${http_code}" >&2
cat /tmp/smoke.log >&2
exit 1
fi
echo "Smoke test passed"

View File

@@ -0,0 +1,20 @@
{
"manifestVersion": 2,
"id": "com.knel.autobom",
"title": "Autobom",
"author": "Known Element Packaging Team",
"tagline": "TODO: Short one-line pitch",
"description": "TODO: Comprehensive description for the Cloudron App Store entry.",
"changelog": "Initial scaffold",
"website": "https://github.com/opulo-inc/autobom",
"supportUrl": "https://projects.knownelement.com/issues/278",
"sourceUrl": "https://github.com/opulo-inc/autobom.git",
"version": "0.1.0",
"tags": ["custom", "known-element"],
"healthCheckPath": "/",
"memoryLimit": 536870912,
"httpPort": 3000,
"addons": {
"localstorage": {}
}
}

22
apps/autobom/Dockerfile Normal file
View File

@@ -0,0 +1,22 @@
# syntax=docker/dockerfile:1
FROM cloudron/base:5.0.0
LABEL org.opencontainers.image.source="https://github.com/opulo-inc/autobom.git"
LABEL org.opencontainers.image.description="Cloudron package for Autobom"
ARG APP_VERSION
ENV APP_VERSION=${APP_VERSION:-latest}
# Copy application source into image at build time
# Replace this with a multi-stage build if upstream provides Docker images.
COPY ./app /app/code
# Copy start script and make it executable
COPY ./start.sh /app/pkg/start.sh
RUN chmod +x /app/pkg/start.sh
# Cloudron expects all processes to run as cloudron user
USER cloudron
WORKDIR /app/code
CMD ["/app/pkg/start.sh"]

20
apps/autobom/README.md Normal file
View File

@@ -0,0 +1,20 @@
# Autobom on Cloudron
- **Upstream repository**: https://github.com/opulo-inc/autobom.git
- **Implementation issue**: https://projects.knownelement.com/issues/278
- **Status**: Draft scaffolding generated on $(date -u +"%Y-%m-%dT%H:%M:%SZ")
## Packaging Checklist
1. Review upstream deployment requirements and map them to Cloudron services (database, cache, object storage, workers).
2. Update `Dockerfile` with the correct build steps and runtime dependencies.
3. Implement `start.sh` to configure the app from Cloudron-provided environment variables and launch the primary process.
4. Edit `CloudronManifest.json` with accurate metadata, permissions, ports, addons, and health checks.
5. Add integration and smoke tests under `test/` to validate the package.
6. Document manual configuration steps, migration requirements, and known gaps in this README.
## Notes
- Replace the placeholder long-running process in `start.sh`.
- Populate the `app/` directory with the application build artefacts or git submodules.
- Use the shared packaging container (`docker/packager`) to run `cloudron build` and `cloudron install` so the host remains clean.

View File

View File

@@ -0,0 +1,9 @@
{
"slug": "autobom",
"title": "Autobom",
"issue": "https://projects.knownelement.com/issues/278",
"repo": "https://github.com/opulo-inc/autobom.git",
"additionalRepos": [],
"created": "2025-10-02T16:46:49Z",
"notes": "TODO: capture packaging notes"
}

8
apps/autobom/start.sh Executable file
View File

@@ -0,0 +1,8 @@
#!/bin/bash
set -euo pipefail
# Cloudron injects configuration via environment variables and files under /run
# Use this script to render config files and launch the upstream service.
# TODO: Replace the command below with the correct process supervisor.
exec /bin/sh -c "echo 'Replace start.sh with application startup logic for Autobom' && sleep infinity"

16
apps/autobom/test/smoke.sh Executable file
View File

@@ -0,0 +1,16 @@
#!/bin/bash
set -euo pipefail
# Basic container reachability check executed inside the packaging container.
# Replace curl target with an endpoint exposed by the app once the package is functional.
cloudron_app_url=${CLOUDRON_APP_ORIGIN:-"http://localhost"}
http_code=$(curl -s -o /tmp/smoke.log -w "%{http_code}" "${cloudron_app_url}")
if [[ "${http_code}" != "200" ]]; then
echo "Unexpected HTTP status: ${http_code}" >&2
cat /tmp/smoke.log >&2
exit 1
fi
echo "Smoke test passed"

335
apps/catalog.json Normal file
View File

@@ -0,0 +1,335 @@
[
{
"slug": "apache-apisix",
"title": "Apache APISIX",
"issue": "https://projects.knownelement.com/issues/179",
"repo": "https://github.com/apache/apisix.git"
},
{
"slug": "target-goalert",
"title": "GoAlert",
"issue": "https://projects.knownelement.com/issues/204",
"repo": "https://github.com/target/goalert.git"
},
{
"slug": "consuldemocracy",
"title": "CONSUL Democracy",
"issue": "https://projects.knownelement.com/issues/189",
"repo": "https://github.com/consuldemocracy/consuldemocracy.git"
},
{
"slug": "fleetdm-fleet",
"title": "FleetDM Fleet",
"issue": "https://projects.knownelement.com/issues/195",
"repo": "https://github.com/fleetdm/fleet.git"
},
{
"slug": "fonoster",
"title": "Fonoster",
"issue": "https://projects.knownelement.com/issues/227",
"repo": "https://github.com/fonoster/fonoster.git"
},
{
"slug": "healthchecks",
"title": "Healthchecks",
"issue": "https://projects.knownelement.com/issues/192",
"repo": "https://github.com/healthchecks/healthchecks.git"
},
{
"slug": "hyperswitch",
"title": "HyperSwitch",
"issue": "https://projects.knownelement.com/issues/209",
"repo": "https://github.com/juspay/hyperswitch"
},
{
"slug": "netbox-docker",
"title": "NetBox Docker",
"issue": "https://projects.knownelement.com/issues/201",
"repo": "https://github.com/netbox-community/netbox-docker.git"
},
{
"slug": "openboxes-docker",
"title": "OpenBoxes Docker",
"issue": "https://projects.knownelement.com/issues/205",
"repo": "https://github.com/openboxes/openboxes-docker.git"
},
{
"slug": "openfile",
"title": "OpenFile",
"issue": "https://projects.knownelement.com/issues/316",
"repo": "https://github.com/openfiletax/openfile.git"
},
{
"slug": "sniperphish",
"title": "SniperPhish",
"issue": "https://projects.knownelement.com/issues/211",
"repo": "https://github.com/GemGeorge/SniperPhish-Docker.git"
},
{
"slug": "datahub",
"title": "DataHub",
"issue": "https://projects.knownelement.com/issues/309",
"repo": "https://github.com/datahub-project/datahub.git"
},
{
"slug": "easy-gate",
"title": "Easy Gate",
"issue": "https://projects.knownelement.com/issues/54",
"repo": "https://github.com/wiredlush/easy-gate.git"
},
{
"slug": "payroll-engine",
"title": "Payroll Engine",
"issue": "https://projects.knownelement.com/issues/208",
"repo": "https://github.com/Payroll-Engine/PayrollEngine.git"
},
{
"slug": "huginn",
"title": "Huginn",
"issue": "https://projects.knownelement.com/issues/194",
"repo": "https://github.com/huginn/huginn.git"
},
{
"slug": "grist",
"title": "Grist",
"issue": "https://projects.knownelement.com/issues/191",
"repo": "https://github.com/gristlabs/grist-core"
},
{
"slug": "docassemble",
"title": "Docassemble",
"issue": "https://projects.knownelement.com/issues/277",
"repo": "https://github.com/jhpyle/docassemble.git"
},
{
"slug": "database-gateway",
"title": "Database Gateway",
"issue": "https://projects.knownelement.com/issues/273",
"repo": "https://github.com/kazhuravlev/database-gateway.git"
},
{
"slug": "rundeck",
"title": "Rundeck",
"issue": "https://projects.knownelement.com/issues/217",
"repo": "https://github.com/rundeck/rundeck.git"
},
{
"slug": "slurm",
"title": "Slurm",
"issue": "https://projects.knownelement.com/issues/222",
"repo": "https://github.com/SchedMD/slurm.git",
"additionalRepos": [
"https://github.com/giovtorres/slurm-docker-cluster.git"
]
},
{
"slug": "rathole",
"title": "rathole",
"issue": "https://projects.knownelement.com/issues/225",
"repo": "https://github.com/rathole-org/rathole.git"
},
{
"slug": "jenkins",
"title": "Jenkins",
"issue": "https://projects.knownelement.com/issues/234",
"repo": "https://github.com/jenkinsci/jenkins.git"
},
{
"slug": "runme",
"title": "Runme",
"issue": "https://projects.knownelement.com/issues/322",
"repo": "https://github.com/runmedev/runme.git"
},
{
"slug": "seatunnel",
"title": "SeaTunnel",
"issue": "https://projects.knownelement.com/issues/301",
"repo": "https://github.com/apache/seatunnel"
},
{
"slug": "docker-webhook",
"title": "docker-webhook",
"issue": "https://projects.knownelement.com/issues/271",
"repo": "https://github.com/thecatlady/docker-webhook"
},
{
"slug": "inventree",
"title": "InvenTree",
"issue": "https://projects.knownelement.com/issues/173",
"repo": "https://github.com/inventree/InvenTree.git"
},
{
"slug": "tak-server",
"title": "TAK Server",
"issue": "https://projects.knownelement.com/issues/180",
"repo": "https://github.com/Cloud-RF/tak-server"
},
{
"slug": "midday",
"title": "Midday",
"issue": "https://projects.knownelement.com/issues/178",
"repo": "https://github.com/midday-ai/midday.git"
},
{
"slug": "killbill",
"title": "Kill Bill",
"issue": "https://projects.knownelement.com/issues/181",
"repo": "https://github.com/killbill/killbill.git"
},
{
"slug": "chirpstack",
"title": "ChirpStack",
"issue": "https://projects.knownelement.com/issues/184",
"repo": "https://github.com/chirpstack/chirpstack.git"
},
{
"slug": "craig",
"title": "Craig (FOSS Discord Recorder)",
"issue": "https://projects.knownelement.com/issues/185",
"repo": "https://github.com/CraigChat/craig.git"
},
{
"slug": "elabftw",
"title": "eLabFTW",
"issue": "https://projects.knownelement.com/issues/188",
"repo": "https://github.com/elabftw/elabftw.git"
},
{
"slug": "jamovi",
"title": "jamovi",
"issue": "https://projects.knownelement.com/issues/196",
"repo": "https://github.com/jamovi/jamovi.git"
},
{
"slug": "kibot",
"title": "KiBot",
"issue": "https://projects.knownelement.com/issues/197",
"repo": "https://github.com/INTI-CMNB/KiBot.git"
},
{
"slug": "resgrid",
"title": "Resgrid Core",
"issue": "https://projects.knownelement.com/issues/214",
"repo": "https://github.com/Resgrid/Core"
},
{
"slug": "reviewboard",
"title": "Review Board",
"issue": "https://projects.knownelement.com/issues/216",
"repo": "https://github.com/reviewboard/reviewboard.git"
},
{
"slug": "satnogs-kaitai",
"title": "SatNOGS Kaitai",
"issue": "https://projects.knownelement.com/issues/218",
"repo": "https://gitlab.com/librespacefoundation/satnogs/docker-kaitai.git"
},
{
"slug": "satnogs-webgui",
"title": "SatNOGS WebGUI",
"issue": "https://projects.knownelement.com/issues/218",
"repo": "https://gitlab.com/librespacefoundation/satnogs/docker-satnogs-webgui.git"
},
{
"slug": "sdrangel",
"title": "SDRAngel",
"issue": "https://projects.knownelement.com/issues/219",
"repo": "https://github.com/f4exb/sdrangel-docker"
},
{
"slug": "signoz",
"title": "SigNoz",
"issue": "https://projects.knownelement.com/issues/221",
"repo": "https://github.com/SigNoz/signoz.git"
},
{
"slug": "warp",
"title": "Warp",
"issue": "https://projects.knownelement.com/issues/228",
"repo": "https://github.com/sebo-b/warp.git"
},
{
"slug": "drawio",
"title": "draw.io",
"issue": "https://projects.knownelement.com/issues/272",
"repo": "https://github.com/jgraph/docker-drawio"
},
{
"slug": "openblocks",
"title": "OpenBlocks",
"issue": "https://projects.knownelement.com/issues/274",
"repo": "https://github.com/openblocks-dev/openblocks.git"
},
{
"slug": "wireviz-web",
"title": "Wireviz Web",
"issue": "https://projects.knownelement.com/issues/276",
"repo": "https://github.com/wireviz/wireviz-web.git"
},
{
"slug": "autobom",
"title": "Autobom",
"issue": "https://projects.knownelement.com/issues/278",
"repo": "https://github.com/opulo-inc/autobom.git"
},
{
"slug": "plmore",
"title": "PLMore",
"issue": "https://projects.knownelement.com/issues/279",
"repo": "https://github.com/PLMore/PLMore"
},
{
"slug": "manyfold",
"title": "Manyfold",
"issue": "https://projects.knownelement.com/issues/282",
"repo": "https://github.com/manyfold3d/manyfold.git"
},
{
"slug": "langfuse",
"title": "Langfuse OSS LLMOps Stack",
"issue": "https://projects.knownelement.com/issues/283",
"repo": "https://github.com/langfuse/oss-llmops-stack.git"
},
{
"slug": "puter",
"title": "Puter",
"issue": "https://projects.knownelement.com/issues/286",
"repo": "https://github.com/HeyPuter/puter.git"
},
{
"slug": "windmill",
"title": "Windmill",
"issue": "https://projects.knownelement.com/issues/285",
"repo": "https://github.com/windmill-labs/windmill.git"
},
{
"slug": "swupdate",
"title": "swupdate",
"issue": "https://projects.knownelement.com/issues/326",
"repo": "https://github.com/sbabic/swupdate.git"
},
{
"slug": "mender-server",
"title": "Mender Server",
"issue": "https://projects.knownelement.com/issues/300",
"repo": "https://github.com/mendersoftware/mender-server.git"
},
{
"slug": "wireflow",
"title": "Wireflow",
"issue": "https://projects.knownelement.com/issues/50",
"repo": "https://github.com/vanila-io/wireflow.git"
},
{
"slug": "nautilus-trader",
"title": "Nautilus Trader",
"issue": "https://projects.knownelement.com/issues/226",
"repo": "https://github.com/nautechsystems/nautilus_trader.git"
},
{
"slug": "mirlo",
"title": "Mirlo",
"issue": "https://projects.knownelement.com/issues/TBD",
"repo": "https://github.com/funmusicplace/mirlo.git"
}
]

View File

@@ -0,0 +1,20 @@
{
"manifestVersion": 2,
"id": "com.knel.chirpstack",
"title": "ChirpStack",
"author": "Known Element Packaging Team",
"tagline": "TODO: Short one-line pitch",
"description": "TODO: Comprehensive description for the Cloudron App Store entry.",
"changelog": "Initial scaffold",
"website": "https://github.com/chirpstack/chirpstack",
"supportUrl": "https://projects.knownelement.com/issues/184",
"sourceUrl": "https://github.com/chirpstack/chirpstack.git",
"version": "0.1.0",
"tags": ["custom", "known-element"],
"healthCheckPath": "/",
"memoryLimit": 536870912,
"httpPort": 3000,
"addons": {
"localstorage": {}
}
}

View File

@@ -0,0 +1,22 @@
# syntax=docker/dockerfile:1
FROM cloudron/base:5.0.0
LABEL org.opencontainers.image.source="https://github.com/chirpstack/chirpstack.git"
LABEL org.opencontainers.image.description="Cloudron package for ChirpStack"
ARG APP_VERSION
ENV APP_VERSION=${APP_VERSION:-latest}
# Copy application source into image at build time
# Replace this with a multi-stage build if upstream provides Docker images.
COPY ./app /app/code
# Copy start script and make it executable
COPY ./start.sh /app/pkg/start.sh
RUN chmod +x /app/pkg/start.sh
# Cloudron expects all processes to run as cloudron user
USER cloudron
WORKDIR /app/code
CMD ["/app/pkg/start.sh"]

20
apps/chirpstack/README.md Normal file
View File

@@ -0,0 +1,20 @@
# ChirpStack on Cloudron
- **Upstream repository**: https://github.com/chirpstack/chirpstack.git
- **Implementation issue**: https://projects.knownelement.com/issues/184
- **Status**: Draft scaffolding generated on $(date -u +"%Y-%m-%dT%H:%M:%SZ")
## Packaging Checklist
1. Review upstream deployment requirements and map them to Cloudron services (database, cache, object storage, workers).
2. Update `Dockerfile` with the correct build steps and runtime dependencies.
3. Implement `start.sh` to configure the app from Cloudron-provided environment variables and launch the primary process.
4. Edit `CloudronManifest.json` with accurate metadata, permissions, ports, addons, and health checks.
5. Add integration and smoke tests under `test/` to validate the package.
6. Document manual configuration steps, migration requirements, and known gaps in this README.
## Notes
- Replace the placeholder long-running process in `start.sh`.
- Populate the `app/` directory with the application build artefacts or git submodules.
- Use the shared packaging container (`docker/packager`) to run `cloudron build` and `cloudron install` so the host remains clean.

View File

View File

@@ -0,0 +1,9 @@
{
"slug": "chirpstack",
"title": "ChirpStack",
"issue": "https://projects.knownelement.com/issues/184",
"repo": "https://github.com/chirpstack/chirpstack.git",
"additionalRepos": [],
"created": "2025-10-02T16:46:49Z",
"notes": "TODO: capture packaging notes"
}

8
apps/chirpstack/start.sh Executable file
View File

@@ -0,0 +1,8 @@
#!/bin/bash
set -euo pipefail
# Cloudron injects configuration via environment variables and files under /run
# Use this script to render config files and launch the upstream service.
# TODO: Replace the command below with the correct process supervisor.
exec /bin/sh -c "echo 'Replace start.sh with application startup logic for ChirpStack' && sleep infinity"

16
apps/chirpstack/test/smoke.sh Executable file
View File

@@ -0,0 +1,16 @@
#!/bin/bash
set -euo pipefail
# Basic container reachability check executed inside the packaging container.
# Replace curl target with an endpoint exposed by the app once the package is functional.
cloudron_app_url=${CLOUDRON_APP_ORIGIN:-"http://localhost"}
http_code=$(curl -s -o /tmp/smoke.log -w "%{http_code}" "${cloudron_app_url}")
if [[ "${http_code}" != "200" ]]; then
echo "Unexpected HTTP status: ${http_code}" >&2
cat /tmp/smoke.log >&2
exit 1
fi
echo "Smoke test passed"

View File

@@ -0,0 +1,20 @@
{
"manifestVersion": 2,
"id": "com.knel.consuldemocracy",
"title": "CONSUL Democracy",
"author": "Known Element Packaging Team",
"tagline": "TODO: Short one-line pitch",
"description": "TODO: Comprehensive description for the Cloudron App Store entry.",
"changelog": "Initial scaffold",
"website": "https://github.com/consuldemocracy/consuldemocracy",
"supportUrl": "https://projects.knownelement.com/issues/189",
"sourceUrl": "https://github.com/consuldemocracy/consuldemocracy.git",
"version": "0.1.0",
"tags": ["custom", "known-element"],
"healthCheckPath": "/",
"memoryLimit": 536870912,
"httpPort": 3000,
"addons": {
"localstorage": {}
}
}

View File

@@ -0,0 +1,22 @@
# syntax=docker/dockerfile:1
FROM cloudron/base:5.0.0
LABEL org.opencontainers.image.source="https://github.com/consuldemocracy/consuldemocracy.git"
LABEL org.opencontainers.image.description="Cloudron package for CONSUL Democracy"
ARG APP_VERSION
ENV APP_VERSION=${APP_VERSION:-latest}
# Copy application source into image at build time
# Replace this with a multi-stage build if upstream provides Docker images.
COPY ./app /app/code
# Copy start script and make it executable
COPY ./start.sh /app/pkg/start.sh
RUN chmod +x /app/pkg/start.sh
# Cloudron expects all processes to run as cloudron user
USER cloudron
WORKDIR /app/code
CMD ["/app/pkg/start.sh"]

View File

@@ -0,0 +1,20 @@
# CONSUL Democracy on Cloudron
- **Upstream repository**: https://github.com/consuldemocracy/consuldemocracy.git
- **Implementation issue**: https://projects.knownelement.com/issues/189
- **Status**: Draft scaffolding generated on $(date -u +"%Y-%m-%dT%H:%M:%SZ")
## Packaging Checklist
1. Review upstream deployment requirements and map them to Cloudron services (database, cache, object storage, workers).
2. Update `Dockerfile` with the correct build steps and runtime dependencies.
3. Implement `start.sh` to configure the app from Cloudron-provided environment variables and launch the primary process.
4. Edit `CloudronManifest.json` with accurate metadata, permissions, ports, addons, and health checks.
5. Add integration and smoke tests under `test/` to validate the package.
6. Document manual configuration steps, migration requirements, and known gaps in this README.
## Notes
- Replace the placeholder long-running process in `start.sh`.
- Populate the `app/` directory with the application build artefacts or git submodules.
- Use the shared packaging container (`docker/packager`) to run `cloudron build` and `cloudron install` so the host remains clean.

View File

View File

@@ -0,0 +1,9 @@
{
"slug": "consuldemocracy",
"title": "CONSUL Democracy",
"issue": "https://projects.knownelement.com/issues/189",
"repo": "https://github.com/consuldemocracy/consuldemocracy.git",
"additionalRepos": [],
"created": "2025-10-02T16:46:49Z",
"notes": "TODO: capture packaging notes"
}

8
apps/consuldemocracy/start.sh Executable file
View File

@@ -0,0 +1,8 @@
#!/bin/bash
set -euo pipefail
# Cloudron injects configuration via environment variables and files under /run
# Use this script to render config files and launch the upstream service.
# TODO: Replace the command below with the correct process supervisor.
exec /bin/sh -c "echo 'Replace start.sh with application startup logic for CONSUL Democracy' && sleep infinity"

View File

@@ -0,0 +1,16 @@
#!/bin/bash
set -euo pipefail
# Basic container reachability check executed inside the packaging container.
# Replace curl target with an endpoint exposed by the app once the package is functional.
cloudron_app_url=${CLOUDRON_APP_ORIGIN:-"http://localhost"}
http_code=$(curl -s -o /tmp/smoke.log -w "%{http_code}" "${cloudron_app_url}")
if [[ "${http_code}" != "200" ]]; then
echo "Unexpected HTTP status: ${http_code}" >&2
cat /tmp/smoke.log >&2
exit 1
fi
echo "Smoke test passed"

View File

@@ -0,0 +1,20 @@
{
"manifestVersion": 2,
"id": "com.knel.craig",
"title": "Craig (FOSS Discord Recorder)",
"author": "Known Element Packaging Team",
"tagline": "TODO: Short one-line pitch",
"description": "TODO: Comprehensive description for the Cloudron App Store entry.",
"changelog": "Initial scaffold",
"website": "https://github.com/CraigChat/cra",
"supportUrl": "https://projects.knownelement.com/issues/185",
"sourceUrl": "https://github.com/CraigChat/craig.git",
"version": "0.1.0",
"tags": ["custom", "known-element"],
"healthCheckPath": "/",
"memoryLimit": 536870912,
"httpPort": 3000,
"addons": {
"localstorage": {}
}
}

22
apps/craig/Dockerfile Normal file
View File

@@ -0,0 +1,22 @@
# syntax=docker/dockerfile:1
FROM cloudron/base:5.0.0
LABEL org.opencontainers.image.source="https://github.com/CraigChat/craig.git"
LABEL org.opencontainers.image.description="Cloudron package for Craig (FOSS Discord Recorder)"
ARG APP_VERSION
ENV APP_VERSION=${APP_VERSION:-latest}
# Copy application source into image at build time
# Replace this with a multi-stage build if upstream provides Docker images.
COPY ./app /app/code
# Copy start script and make it executable
COPY ./start.sh /app/pkg/start.sh
RUN chmod +x /app/pkg/start.sh
# Cloudron expects all processes to run as cloudron user
USER cloudron
WORKDIR /app/code
CMD ["/app/pkg/start.sh"]

20
apps/craig/README.md Normal file
View File

@@ -0,0 +1,20 @@
# Craig (FOSS Discord Recorder) on Cloudron
- **Upstream repository**: https://github.com/CraigChat/craig.git
- **Implementation issue**: https://projects.knownelement.com/issues/185
- **Status**: Draft scaffolding generated on $(date -u +"%Y-%m-%dT%H:%M:%SZ")
## Packaging Checklist
1. Review upstream deployment requirements and map them to Cloudron services (database, cache, object storage, workers).
2. Update `Dockerfile` with the correct build steps and runtime dependencies.
3. Implement `start.sh` to configure the app from Cloudron-provided environment variables and launch the primary process.
4. Edit `CloudronManifest.json` with accurate metadata, permissions, ports, addons, and health checks.
5. Add integration and smoke tests under `test/` to validate the package.
6. Document manual configuration steps, migration requirements, and known gaps in this README.
## Notes
- Replace the placeholder long-running process in `start.sh`.
- Populate the `app/` directory with the application build artefacts or git submodules.
- Use the shared packaging container (`docker/packager`) to run `cloudron build` and `cloudron install` so the host remains clean.

0
apps/craig/app/.gitkeep Normal file
View File

9
apps/craig/metadata.json Normal file
View File

@@ -0,0 +1,9 @@
{
"slug": "craig",
"title": "Craig (FOSS Discord Recorder)",
"issue": "https://projects.knownelement.com/issues/185",
"repo": "https://github.com/CraigChat/craig.git",
"additionalRepos": [],
"created": "2025-10-02T16:46:49Z",
"notes": "TODO: capture packaging notes"
}

8
apps/craig/start.sh Executable file
View File

@@ -0,0 +1,8 @@
#!/bin/bash
set -euo pipefail
# Cloudron injects configuration via environment variables and files under /run
# Use this script to render config files and launch the upstream service.
# TODO: Replace the command below with the correct process supervisor.
exec /bin/sh -c "echo 'Replace start.sh with application startup logic for Craig (FOSS Discord Recorder)' && sleep infinity"

16
apps/craig/test/smoke.sh Executable file
View File

@@ -0,0 +1,16 @@
#!/bin/bash
set -euo pipefail
# Basic container reachability check executed inside the packaging container.
# Replace curl target with an endpoint exposed by the app once the package is functional.
cloudron_app_url=${CLOUDRON_APP_ORIGIN:-"http://localhost"}
http_code=$(curl -s -o /tmp/smoke.log -w "%{http_code}" "${cloudron_app_url}")
if [[ "${http_code}" != "200" ]]; then
echo "Unexpected HTTP status: ${http_code}" >&2
cat /tmp/smoke.log >&2
exit 1
fi
echo "Smoke test passed"

View File

@@ -0,0 +1,20 @@
{
"manifestVersion": 2,
"id": "com.knel.database.gateway",
"title": "Database Gateway",
"author": "Known Element Packaging Team",
"tagline": "TODO: Short one-line pitch",
"description": "TODO: Comprehensive description for the Cloudron App Store entry.",
"changelog": "Initial scaffold",
"website": "https://github.com/kazhuravlev/database-gateway",
"supportUrl": "https://projects.knownelement.com/issues/273",
"sourceUrl": "https://github.com/kazhuravlev/database-gateway.git",
"version": "0.1.0",
"tags": ["custom", "known-element"],
"healthCheckPath": "/",
"memoryLimit": 536870912,
"httpPort": 3000,
"addons": {
"localstorage": {}
}
}

View File

@@ -0,0 +1,22 @@
# syntax=docker/dockerfile:1
FROM cloudron/base:5.0.0
LABEL org.opencontainers.image.source="https://github.com/kazhuravlev/database-gateway.git"
LABEL org.opencontainers.image.description="Cloudron package for Database Gateway"
ARG APP_VERSION
ENV APP_VERSION=${APP_VERSION:-latest}
# Copy application source into image at build time
# Replace this with a multi-stage build if upstream provides Docker images.
COPY ./app /app/code
# Copy start script and make it executable
COPY ./start.sh /app/pkg/start.sh
RUN chmod +x /app/pkg/start.sh
# Cloudron expects all processes to run as cloudron user
USER cloudron
WORKDIR /app/code
CMD ["/app/pkg/start.sh"]

View File

@@ -0,0 +1,20 @@
# Database Gateway on Cloudron
- **Upstream repository**: https://github.com/kazhuravlev/database-gateway.git
- **Implementation issue**: https://projects.knownelement.com/issues/273
- **Status**: Draft scaffolding generated on $(date -u +"%Y-%m-%dT%H:%M:%SZ")
## Packaging Checklist
1. Review upstream deployment requirements and map them to Cloudron services (database, cache, object storage, workers).
2. Update `Dockerfile` with the correct build steps and runtime dependencies.
3. Implement `start.sh` to configure the app from Cloudron-provided environment variables and launch the primary process.
4. Edit `CloudronManifest.json` with accurate metadata, permissions, ports, addons, and health checks.
5. Add integration and smoke tests under `test/` to validate the package.
6. Document manual configuration steps, migration requirements, and known gaps in this README.
## Notes
- Replace the placeholder long-running process in `start.sh`.
- Populate the `app/` directory with the application build artefacts or git submodules.
- Use the shared packaging container (`docker/packager`) to run `cloudron build` and `cloudron install` so the host remains clean.

View File

View File

@@ -0,0 +1,9 @@
{
"slug": "database-gateway",
"title": "Database Gateway",
"issue": "https://projects.knownelement.com/issues/273",
"repo": "https://github.com/kazhuravlev/database-gateway.git",
"additionalRepos": [],
"created": "2025-10-02T16:46:49Z",
"notes": "TODO: capture packaging notes"
}

8
apps/database-gateway/start.sh Executable file
View File

@@ -0,0 +1,8 @@
#!/bin/bash
set -euo pipefail
# Cloudron injects configuration via environment variables and files under /run
# Use this script to render config files and launch the upstream service.
# TODO: Replace the command below with the correct process supervisor.
exec /bin/sh -c "echo 'Replace start.sh with application startup logic for Database Gateway' && sleep infinity"

View File

@@ -0,0 +1,16 @@
#!/bin/bash
set -euo pipefail
# Basic container reachability check executed inside the packaging container.
# Replace curl target with an endpoint exposed by the app once the package is functional.
cloudron_app_url=${CLOUDRON_APP_ORIGIN:-"http://localhost"}
http_code=$(curl -s -o /tmp/smoke.log -w "%{http_code}" "${cloudron_app_url}")
if [[ "${http_code}" != "200" ]]; then
echo "Unexpected HTTP status: ${http_code}" >&2
cat /tmp/smoke.log >&2
exit 1
fi
echo "Smoke test passed"

View File

@@ -0,0 +1,20 @@
{
"manifestVersion": 2,
"id": "com.knel.datahub",
"title": "DataHub",
"author": "Known Element Packaging Team",
"tagline": "TODO: Short one-line pitch",
"description": "TODO: Comprehensive description for the Cloudron App Store entry.",
"changelog": "Initial scaffold",
"website": "https://github.com/datahub-project/datahub",
"supportUrl": "https://projects.knownelement.com/issues/309",
"sourceUrl": "https://github.com/datahub-project/datahub.git",
"version": "0.1.0",
"tags": ["custom", "known-element"],
"healthCheckPath": "/",
"memoryLimit": 536870912,
"httpPort": 3000,
"addons": {
"localstorage": {}
}
}

22
apps/datahub/Dockerfile Normal file
View File

@@ -0,0 +1,22 @@
# syntax=docker/dockerfile:1
FROM cloudron/base:5.0.0
LABEL org.opencontainers.image.source="https://github.com/datahub-project/datahub.git"
LABEL org.opencontainers.image.description="Cloudron package for DataHub"
ARG APP_VERSION
ENV APP_VERSION=${APP_VERSION:-latest}
# Copy application source into image at build time
# Replace this with a multi-stage build if upstream provides Docker images.
COPY ./app /app/code
# Copy start script and make it executable
COPY ./start.sh /app/pkg/start.sh
RUN chmod +x /app/pkg/start.sh
# Cloudron expects all processes to run as cloudron user
USER cloudron
WORKDIR /app/code
CMD ["/app/pkg/start.sh"]

20
apps/datahub/README.md Normal file
View File

@@ -0,0 +1,20 @@
# DataHub on Cloudron
- **Upstream repository**: https://github.com/datahub-project/datahub.git
- **Implementation issue**: https://projects.knownelement.com/issues/309
- **Status**: Draft scaffolding generated on $(date -u +"%Y-%m-%dT%H:%M:%SZ")
## Packaging Checklist
1. Review upstream deployment requirements and map them to Cloudron services (database, cache, object storage, workers).
2. Update `Dockerfile` with the correct build steps and runtime dependencies.
3. Implement `start.sh` to configure the app from Cloudron-provided environment variables and launch the primary process.
4. Edit `CloudronManifest.json` with accurate metadata, permissions, ports, addons, and health checks.
5. Add integration and smoke tests under `test/` to validate the package.
6. Document manual configuration steps, migration requirements, and known gaps in this README.
## Notes
- Replace the placeholder long-running process in `start.sh`.
- Populate the `app/` directory with the application build artefacts or git submodules.
- Use the shared packaging container (`docker/packager`) to run `cloudron build` and `cloudron install` so the host remains clean.

View File

View File

@@ -0,0 +1,9 @@
{
"slug": "datahub",
"title": "DataHub",
"issue": "https://projects.knownelement.com/issues/309",
"repo": "https://github.com/datahub-project/datahub.git",
"additionalRepos": [],
"created": "2025-10-02T16:46:49Z",
"notes": "TODO: capture packaging notes"
}

8
apps/datahub/start.sh Executable file
View File

@@ -0,0 +1,8 @@
#!/bin/bash
set -euo pipefail
# Cloudron injects configuration via environment variables and files under /run
# Use this script to render config files and launch the upstream service.
# TODO: Replace the command below with the correct process supervisor.
exec /bin/sh -c "echo 'Replace start.sh with application startup logic for DataHub' && sleep infinity"

16
apps/datahub/test/smoke.sh Executable file
View File

@@ -0,0 +1,16 @@
#!/bin/bash
set -euo pipefail
# Basic container reachability check executed inside the packaging container.
# Replace curl target with an endpoint exposed by the app once the package is functional.
cloudron_app_url=${CLOUDRON_APP_ORIGIN:-"http://localhost"}
http_code=$(curl -s -o /tmp/smoke.log -w "%{http_code}" "${cloudron_app_url}")
if [[ "${http_code}" != "200" ]]; then
echo "Unexpected HTTP status: ${http_code}" >&2
cat /tmp/smoke.log >&2
exit 1
fi
echo "Smoke test passed"

View File

@@ -0,0 +1,20 @@
{
"manifestVersion": 2,
"id": "com.knel.docassemble",
"title": "Docassemble",
"author": "Known Element Packaging Team",
"tagline": "TODO: Short one-line pitch",
"description": "TODO: Comprehensive description for the Cloudron App Store entry.",
"changelog": "Initial scaffold",
"website": "https://github.com/jhpyle/docassemble",
"supportUrl": "https://projects.knownelement.com/issues/277",
"sourceUrl": "https://github.com/jhpyle/docassemble.git",
"version": "0.1.0",
"tags": ["custom", "known-element"],
"healthCheckPath": "/",
"memoryLimit": 536870912,
"httpPort": 3000,
"addons": {
"localstorage": {}
}
}

View File

@@ -0,0 +1,22 @@
# syntax=docker/dockerfile:1
FROM cloudron/base:5.0.0
LABEL org.opencontainers.image.source="https://github.com/jhpyle/docassemble.git"
LABEL org.opencontainers.image.description="Cloudron package for Docassemble"
ARG APP_VERSION
ENV APP_VERSION=${APP_VERSION:-latest}
# Copy application source into image at build time
# Replace this with a multi-stage build if upstream provides Docker images.
COPY ./app /app/code
# Copy start script and make it executable
COPY ./start.sh /app/pkg/start.sh
RUN chmod +x /app/pkg/start.sh
# Cloudron expects all processes to run as cloudron user
USER cloudron
WORKDIR /app/code
CMD ["/app/pkg/start.sh"]

View File

@@ -0,0 +1,20 @@
# Docassemble on Cloudron
- **Upstream repository**: https://github.com/jhpyle/docassemble.git
- **Implementation issue**: https://projects.knownelement.com/issues/277
- **Status**: Draft scaffolding generated on $(date -u +"%Y-%m-%dT%H:%M:%SZ")
## Packaging Checklist
1. Review upstream deployment requirements and map them to Cloudron services (database, cache, object storage, workers).
2. Update `Dockerfile` with the correct build steps and runtime dependencies.
3. Implement `start.sh` to configure the app from Cloudron-provided environment variables and launch the primary process.
4. Edit `CloudronManifest.json` with accurate metadata, permissions, ports, addons, and health checks.
5. Add integration and smoke tests under `test/` to validate the package.
6. Document manual configuration steps, migration requirements, and known gaps in this README.
## Notes
- Replace the placeholder long-running process in `start.sh`.
- Populate the `app/` directory with the application build artefacts or git submodules.
- Use the shared packaging container (`docker/packager`) to run `cloudron build` and `cloudron install` so the host remains clean.

View File

View File

@@ -0,0 +1,9 @@
{
"slug": "docassemble",
"title": "Docassemble",
"issue": "https://projects.knownelement.com/issues/277",
"repo": "https://github.com/jhpyle/docassemble.git",
"additionalRepos": [],
"created": "2025-10-02T16:46:49Z",
"notes": "TODO: capture packaging notes"
}

8
apps/docassemble/start.sh Executable file
View File

@@ -0,0 +1,8 @@
#!/bin/bash
set -euo pipefail
# Cloudron injects configuration via environment variables and files under /run
# Use this script to render config files and launch the upstream service.
# TODO: Replace the command below with the correct process supervisor.
exec /bin/sh -c "echo 'Replace start.sh with application startup logic for Docassemble' && sleep infinity"

16
apps/docassemble/test/smoke.sh Executable file
View File

@@ -0,0 +1,16 @@
#!/bin/bash
set -euo pipefail
# Basic container reachability check executed inside the packaging container.
# Replace curl target with an endpoint exposed by the app once the package is functional.
cloudron_app_url=${CLOUDRON_APP_ORIGIN:-"http://localhost"}
http_code=$(curl -s -o /tmp/smoke.log -w "%{http_code}" "${cloudron_app_url}")
if [[ "${http_code}" != "200" ]]; then
echo "Unexpected HTTP status: ${http_code}" >&2
cat /tmp/smoke.log >&2
exit 1
fi
echo "Smoke test passed"

View File

@@ -0,0 +1,20 @@
{
"manifestVersion": 2,
"id": "com.knel.docker.webhook",
"title": "docker-webhook",
"author": "Known Element Packaging Team",
"tagline": "TODO: Short one-line pitch",
"description": "TODO: Comprehensive description for the Cloudron App Store entry.",
"changelog": "Initial scaffold",
"website": "https://github.com/thecatlady/docker-webhook",
"supportUrl": "https://projects.knownelement.com/issues/271",
"sourceUrl": "https://github.com/thecatlady/docker-webhook",
"version": "0.1.0",
"tags": ["custom", "known-element"],
"healthCheckPath": "/",
"memoryLimit": 536870912,
"httpPort": 3000,
"addons": {
"localstorage": {}
}
}

View File

@@ -0,0 +1,22 @@
# syntax=docker/dockerfile:1
FROM cloudron/base:5.0.0
LABEL org.opencontainers.image.source="https://github.com/thecatlady/docker-webhook"
LABEL org.opencontainers.image.description="Cloudron package for docker-webhook"
ARG APP_VERSION
ENV APP_VERSION=${APP_VERSION:-latest}
# Copy application source into image at build time
# Replace this with a multi-stage build if upstream provides Docker images.
COPY ./app /app/code
# Copy start script and make it executable
COPY ./start.sh /app/pkg/start.sh
RUN chmod +x /app/pkg/start.sh
# Cloudron expects all processes to run as cloudron user
USER cloudron
WORKDIR /app/code
CMD ["/app/pkg/start.sh"]

View File

@@ -0,0 +1,20 @@
# docker-webhook on Cloudron
- **Upstream repository**: https://github.com/thecatlady/docker-webhook
- **Implementation issue**: https://projects.knownelement.com/issues/271
- **Status**: Draft scaffolding generated on $(date -u +"%Y-%m-%dT%H:%M:%SZ")
## Packaging Checklist
1. Review upstream deployment requirements and map them to Cloudron services (database, cache, object storage, workers).
2. Update `Dockerfile` with the correct build steps and runtime dependencies.
3. Implement `start.sh` to configure the app from Cloudron-provided environment variables and launch the primary process.
4. Edit `CloudronManifest.json` with accurate metadata, permissions, ports, addons, and health checks.
5. Add integration and smoke tests under `test/` to validate the package.
6. Document manual configuration steps, migration requirements, and known gaps in this README.
## Notes
- Replace the placeholder long-running process in `start.sh`.
- Populate the `app/` directory with the application build artefacts or git submodules.
- Use the shared packaging container (`docker/packager`) to run `cloudron build` and `cloudron install` so the host remains clean.

View File

View File

@@ -0,0 +1,9 @@
{
"slug": "docker-webhook",
"title": "docker-webhook",
"issue": "https://projects.knownelement.com/issues/271",
"repo": "https://github.com/thecatlady/docker-webhook",
"additionalRepos": [],
"created": "2025-10-02T16:46:49Z",
"notes": "TODO: capture packaging notes"
}

8
apps/docker-webhook/start.sh Executable file
View File

@@ -0,0 +1,8 @@
#!/bin/bash
set -euo pipefail
# Cloudron injects configuration via environment variables and files under /run
# Use this script to render config files and launch the upstream service.
# TODO: Replace the command below with the correct process supervisor.
exec /bin/sh -c "echo 'Replace start.sh with application startup logic for docker-webhook' && sleep infinity"

View File

@@ -0,0 +1,16 @@
#!/bin/bash
set -euo pipefail
# Basic container reachability check executed inside the packaging container.
# Replace curl target with an endpoint exposed by the app once the package is functional.
cloudron_app_url=${CLOUDRON_APP_ORIGIN:-"http://localhost"}
http_code=$(curl -s -o /tmp/smoke.log -w "%{http_code}" "${cloudron_app_url}")
if [[ "${http_code}" != "200" ]]; then
echo "Unexpected HTTP status: ${http_code}" >&2
cat /tmp/smoke.log >&2
exit 1
fi
echo "Smoke test passed"

View File

@@ -0,0 +1,20 @@
{
"manifestVersion": 2,
"id": "com.knel.drawio",
"title": "draw.io",
"author": "Known Element Packaging Team",
"tagline": "TODO: Short one-line pitch",
"description": "TODO: Comprehensive description for the Cloudron App Store entry.",
"changelog": "Initial scaffold",
"website": "https://github.com/jgraph/docker-drawio",
"supportUrl": "https://projects.knownelement.com/issues/272",
"sourceUrl": "https://github.com/jgraph/docker-drawio",
"version": "0.1.0",
"tags": ["custom", "known-element"],
"healthCheckPath": "/",
"memoryLimit": 536870912,
"httpPort": 3000,
"addons": {
"localstorage": {}
}
}

22
apps/drawio/Dockerfile Normal file
View File

@@ -0,0 +1,22 @@
# syntax=docker/dockerfile:1
FROM cloudron/base:5.0.0
LABEL org.opencontainers.image.source="https://github.com/jgraph/docker-drawio"
LABEL org.opencontainers.image.description="Cloudron package for draw.io"
ARG APP_VERSION
ENV APP_VERSION=${APP_VERSION:-latest}
# Copy application source into image at build time
# Replace this with a multi-stage build if upstream provides Docker images.
COPY ./app /app/code
# Copy start script and make it executable
COPY ./start.sh /app/pkg/start.sh
RUN chmod +x /app/pkg/start.sh
# Cloudron expects all processes to run as cloudron user
USER cloudron
WORKDIR /app/code
CMD ["/app/pkg/start.sh"]

20
apps/drawio/README.md Normal file
View File

@@ -0,0 +1,20 @@
# draw.io on Cloudron
- **Upstream repository**: https://github.com/jgraph/docker-drawio
- **Implementation issue**: https://projects.knownelement.com/issues/272
- **Status**: Draft scaffolding generated on $(date -u +"%Y-%m-%dT%H:%M:%SZ")
## Packaging Checklist
1. Review upstream deployment requirements and map them to Cloudron services (database, cache, object storage, workers).
2. Update `Dockerfile` with the correct build steps and runtime dependencies.
3. Implement `start.sh` to configure the app from Cloudron-provided environment variables and launch the primary process.
4. Edit `CloudronManifest.json` with accurate metadata, permissions, ports, addons, and health checks.
5. Add integration and smoke tests under `test/` to validate the package.
6. Document manual configuration steps, migration requirements, and known gaps in this README.
## Notes
- Replace the placeholder long-running process in `start.sh`.
- Populate the `app/` directory with the application build artefacts or git submodules.
- Use the shared packaging container (`docker/packager`) to run `cloudron build` and `cloudron install` so the host remains clean.

0
apps/drawio/app/.gitkeep Normal file
View File

View File

@@ -0,0 +1,9 @@
{
"slug": "drawio",
"title": "draw.io",
"issue": "https://projects.knownelement.com/issues/272",
"repo": "https://github.com/jgraph/docker-drawio",
"additionalRepos": [],
"created": "2025-10-02T16:46:49Z",
"notes": "TODO: capture packaging notes"
}

8
apps/drawio/start.sh Executable file
View File

@@ -0,0 +1,8 @@
#!/bin/bash
set -euo pipefail
# Cloudron injects configuration via environment variables and files under /run
# Use this script to render config files and launch the upstream service.
# TODO: Replace the command below with the correct process supervisor.
exec /bin/sh -c "echo 'Replace start.sh with application startup logic for draw.io' && sleep infinity"

16
apps/drawio/test/smoke.sh Executable file
View File

@@ -0,0 +1,16 @@
#!/bin/bash
set -euo pipefail
# Basic container reachability check executed inside the packaging container.
# Replace curl target with an endpoint exposed by the app once the package is functional.
cloudron_app_url=${CLOUDRON_APP_ORIGIN:-"http://localhost"}
http_code=$(curl -s -o /tmp/smoke.log -w "%{http_code}" "${cloudron_app_url}")
if [[ "${http_code}" != "200" ]]; then
echo "Unexpected HTTP status: ${http_code}" >&2
cat /tmp/smoke.log >&2
exit 1
fi
echo "Smoke test passed"

View File

@@ -0,0 +1,20 @@
{
"manifestVersion": 2,
"id": "com.knel.easy.gate",
"title": "Easy Gate",
"author": "Known Element Packaging Team",
"tagline": "TODO: Short one-line pitch",
"description": "TODO: Comprehensive description for the Cloudron App Store entry.",
"changelog": "Initial scaffold",
"website": "https://github.com/wiredlush/easy-gate",
"supportUrl": "https://projects.knownelement.com/issues/54",
"sourceUrl": "https://github.com/wiredlush/easy-gate.git",
"version": "0.1.0",
"tags": ["custom", "known-element"],
"healthCheckPath": "/",
"memoryLimit": 536870912,
"httpPort": 3000,
"addons": {
"localstorage": {}
}
}

22
apps/easy-gate/Dockerfile Normal file
View File

@@ -0,0 +1,22 @@
# syntax=docker/dockerfile:1
FROM cloudron/base:5.0.0
LABEL org.opencontainers.image.source="https://github.com/wiredlush/easy-gate.git"
LABEL org.opencontainers.image.description="Cloudron package for Easy Gate"
ARG APP_VERSION
ENV APP_VERSION=${APP_VERSION:-latest}
# Copy application source into image at build time
# Replace this with a multi-stage build if upstream provides Docker images.
COPY ./app /app/code
# Copy start script and make it executable
COPY ./start.sh /app/pkg/start.sh
RUN chmod +x /app/pkg/start.sh
# Cloudron expects all processes to run as cloudron user
USER cloudron
WORKDIR /app/code
CMD ["/app/pkg/start.sh"]

20
apps/easy-gate/README.md Normal file
View File

@@ -0,0 +1,20 @@
# Easy Gate on Cloudron
- **Upstream repository**: https://github.com/wiredlush/easy-gate.git
- **Implementation issue**: https://projects.knownelement.com/issues/54
- **Status**: Draft scaffolding generated on $(date -u +"%Y-%m-%dT%H:%M:%SZ")
## Packaging Checklist
1. Review upstream deployment requirements and map them to Cloudron services (database, cache, object storage, workers).
2. Update `Dockerfile` with the correct build steps and runtime dependencies.
3. Implement `start.sh` to configure the app from Cloudron-provided environment variables and launch the primary process.
4. Edit `CloudronManifest.json` with accurate metadata, permissions, ports, addons, and health checks.
5. Add integration and smoke tests under `test/` to validate the package.
6. Document manual configuration steps, migration requirements, and known gaps in this README.
## Notes
- Replace the placeholder long-running process in `start.sh`.
- Populate the `app/` directory with the application build artefacts or git submodules.
- Use the shared packaging container (`docker/packager`) to run `cloudron build` and `cloudron install` so the host remains clean.

View File

View File

@@ -0,0 +1,9 @@
{
"slug": "easy-gate",
"title": "Easy Gate",
"issue": "https://projects.knownelement.com/issues/54",
"repo": "https://github.com/wiredlush/easy-gate.git",
"additionalRepos": [],
"created": "2025-10-02T16:46:49Z",
"notes": "TODO: capture packaging notes"
}

8
apps/easy-gate/start.sh Executable file
View File

@@ -0,0 +1,8 @@
#!/bin/bash
set -euo pipefail
# Cloudron injects configuration via environment variables and files under /run
# Use this script to render config files and launch the upstream service.
# TODO: Replace the command below with the correct process supervisor.
exec /bin/sh -c "echo 'Replace start.sh with application startup logic for Easy Gate' && sleep infinity"

16
apps/easy-gate/test/smoke.sh Executable file
View File

@@ -0,0 +1,16 @@
#!/bin/bash
set -euo pipefail
# Basic container reachability check executed inside the packaging container.
# Replace curl target with an endpoint exposed by the app once the package is functional.
cloudron_app_url=${CLOUDRON_APP_ORIGIN:-"http://localhost"}
http_code=$(curl -s -o /tmp/smoke.log -w "%{http_code}" "${cloudron_app_url}")
if [[ "${http_code}" != "200" ]]; then
echo "Unexpected HTTP status: ${http_code}" >&2
cat /tmp/smoke.log >&2
exit 1
fi
echo "Smoke test passed"

View File

@@ -0,0 +1,20 @@
{
"manifestVersion": 2,
"id": "com.knel.elabftw",
"title": "eLabFTW",
"author": "Known Element Packaging Team",
"tagline": "TODO: Short one-line pitch",
"description": "TODO: Comprehensive description for the Cloudron App Store entry.",
"changelog": "Initial scaffold",
"website": "https://github.com/elabftw/elabftw",
"supportUrl": "https://projects.knownelement.com/issues/188",
"sourceUrl": "https://github.com/elabftw/elabftw.git",
"version": "0.1.0",
"tags": ["custom", "known-element"],
"healthCheckPath": "/",
"memoryLimit": 536870912,
"httpPort": 3000,
"addons": {
"localstorage": {}
}
}

22
apps/elabftw/Dockerfile Normal file
View File

@@ -0,0 +1,22 @@
# syntax=docker/dockerfile:1
FROM cloudron/base:5.0.0
LABEL org.opencontainers.image.source="https://github.com/elabftw/elabftw.git"
LABEL org.opencontainers.image.description="Cloudron package for eLabFTW"
ARG APP_VERSION
ENV APP_VERSION=${APP_VERSION:-latest}
# Copy application source into image at build time
# Replace this with a multi-stage build if upstream provides Docker images.
COPY ./app /app/code
# Copy start script and make it executable
COPY ./start.sh /app/pkg/start.sh
RUN chmod +x /app/pkg/start.sh
# Cloudron expects all processes to run as cloudron user
USER cloudron
WORKDIR /app/code
CMD ["/app/pkg/start.sh"]

20
apps/elabftw/README.md Normal file
View File

@@ -0,0 +1,20 @@
# eLabFTW on Cloudron
- **Upstream repository**: https://github.com/elabftw/elabftw.git
- **Implementation issue**: https://projects.knownelement.com/issues/188
- **Status**: Draft scaffolding generated on $(date -u +"%Y-%m-%dT%H:%M:%SZ")
## Packaging Checklist
1. Review upstream deployment requirements and map them to Cloudron services (database, cache, object storage, workers).
2. Update `Dockerfile` with the correct build steps and runtime dependencies.
3. Implement `start.sh` to configure the app from Cloudron-provided environment variables and launch the primary process.
4. Edit `CloudronManifest.json` with accurate metadata, permissions, ports, addons, and health checks.
5. Add integration and smoke tests under `test/` to validate the package.
6. Document manual configuration steps, migration requirements, and known gaps in this README.
## Notes
- Replace the placeholder long-running process in `start.sh`.
- Populate the `app/` directory with the application build artefacts or git submodules.
- Use the shared packaging container (`docker/packager`) to run `cloudron build` and `cloudron install` so the host remains clean.

View File

View File

@@ -0,0 +1,9 @@
{
"slug": "elabftw",
"title": "eLabFTW",
"issue": "https://projects.knownelement.com/issues/188",
"repo": "https://github.com/elabftw/elabftw.git",
"additionalRepos": [],
"created": "2025-10-02T16:46:49Z",
"notes": "TODO: capture packaging notes"
}

8
apps/elabftw/start.sh Executable file
View File

@@ -0,0 +1,8 @@
#!/bin/bash
set -euo pipefail
# Cloudron injects configuration via environment variables and files under /run
# Use this script to render config files and launch the upstream service.
# TODO: Replace the command below with the correct process supervisor.
exec /bin/sh -c "echo 'Replace start.sh with application startup logic for eLabFTW' && sleep infinity"

16
apps/elabftw/test/smoke.sh Executable file
View File

@@ -0,0 +1,16 @@
#!/bin/bash
set -euo pipefail
# Basic container reachability check executed inside the packaging container.
# Replace curl target with an endpoint exposed by the app once the package is functional.
cloudron_app_url=${CLOUDRON_APP_ORIGIN:-"http://localhost"}
http_code=$(curl -s -o /tmp/smoke.log -w "%{http_code}" "${cloudron_app_url}")
if [[ "${http_code}" != "200" ]]; then
echo "Unexpected HTTP status: ${http_code}" >&2
cat /tmp/smoke.log >&2
exit 1
fi
echo "Smoke test passed"

View File

@@ -0,0 +1,20 @@
{
"manifestVersion": 2,
"id": "com.knel.fleetdm.fleet",
"title": "FleetDM Fleet",
"author": "Known Element Packaging Team",
"tagline": "TODO: Short one-line pitch",
"description": "TODO: Comprehensive description for the Cloudron App Store entry.",
"changelog": "Initial scaffold",
"website": "https://github.com/fleetdm/flee",
"supportUrl": "https://projects.knownelement.com/issues/195",
"sourceUrl": "https://github.com/fleetdm/fleet.git",
"version": "0.1.0",
"tags": ["custom", "known-element"],
"healthCheckPath": "/",
"memoryLimit": 536870912,
"httpPort": 3000,
"addons": {
"localstorage": {}
}
}

View File

@@ -0,0 +1,22 @@
# syntax=docker/dockerfile:1
FROM cloudron/base:5.0.0
LABEL org.opencontainers.image.source="https://github.com/fleetdm/fleet.git"
LABEL org.opencontainers.image.description="Cloudron package for FleetDM Fleet"
ARG APP_VERSION
ENV APP_VERSION=${APP_VERSION:-latest}
# Copy application source into image at build time
# Replace this with a multi-stage build if upstream provides Docker images.
COPY ./app /app/code
# Copy start script and make it executable
COPY ./start.sh /app/pkg/start.sh
RUN chmod +x /app/pkg/start.sh
# Cloudron expects all processes to run as cloudron user
USER cloudron
WORKDIR /app/code
CMD ["/app/pkg/start.sh"]

View File

@@ -0,0 +1,20 @@
# FleetDM Fleet on Cloudron
- **Upstream repository**: https://github.com/fleetdm/fleet.git
- **Implementation issue**: https://projects.knownelement.com/issues/195
- **Status**: Draft scaffolding generated on $(date -u +"%Y-%m-%dT%H:%M:%SZ")
## Packaging Checklist
1. Review upstream deployment requirements and map them to Cloudron services (database, cache, object storage, workers).
2. Update `Dockerfile` with the correct build steps and runtime dependencies.
3. Implement `start.sh` to configure the app from Cloudron-provided environment variables and launch the primary process.
4. Edit `CloudronManifest.json` with accurate metadata, permissions, ports, addons, and health checks.
5. Add integration and smoke tests under `test/` to validate the package.
6. Document manual configuration steps, migration requirements, and known gaps in this README.
## Notes
- Replace the placeholder long-running process in `start.sh`.
- Populate the `app/` directory with the application build artefacts or git submodules.
- Use the shared packaging container (`docker/packager`) to run `cloudron build` and `cloudron install` so the host remains clean.

View File

View File

@@ -0,0 +1,9 @@
{
"slug": "fleetdm-fleet",
"title": "FleetDM Fleet",
"issue": "https://projects.knownelement.com/issues/195",
"repo": "https://github.com/fleetdm/fleet.git",
"additionalRepos": [],
"created": "2025-10-02T16:46:49Z",
"notes": "TODO: capture packaging notes"
}

8
apps/fleetdm-fleet/start.sh Executable file
View File

@@ -0,0 +1,8 @@
#!/bin/bash
set -euo pipefail
# Cloudron injects configuration via environment variables and files under /run
# Use this script to render config files and launch the upstream service.
# TODO: Replace the command below with the correct process supervisor.
exec /bin/sh -c "echo 'Replace start.sh with application startup logic for FleetDM Fleet' && sleep infinity"

View File

@@ -0,0 +1,16 @@
#!/bin/bash
set -euo pipefail
# Basic container reachability check executed inside the packaging container.
# Replace curl target with an endpoint exposed by the app once the package is functional.
cloudron_app_url=${CLOUDRON_APP_ORIGIN:-"http://localhost"}
http_code=$(curl -s -o /tmp/smoke.log -w "%{http_code}" "${cloudron_app_url}")
if [[ "${http_code}" != "200" ]]; then
echo "Unexpected HTTP status: ${http_code}" >&2
cat /tmp/smoke.log >&2
exit 1
fi
echo "Smoke test passed"

View File

@@ -0,0 +1,20 @@
{
"manifestVersion": 2,
"id": "com.knel.fonoster",
"title": "Fonoster",
"author": "Known Element Packaging Team",
"tagline": "TODO: Short one-line pitch",
"description": "TODO: Comprehensive description for the Cloudron App Store entry.",
"changelog": "Initial scaffold",
"website": "https://github.com/fonoster/fonoster",
"supportUrl": "https://projects.knownelement.com/issues/227",
"sourceUrl": "https://github.com/fonoster/fonoster.git",
"version": "0.1.0",
"tags": ["custom", "known-element"],
"healthCheckPath": "/",
"memoryLimit": 536870912,
"httpPort": 3000,
"addons": {
"localstorage": {}
}
}

22
apps/fonoster/Dockerfile Normal file
View File

@@ -0,0 +1,22 @@
# syntax=docker/dockerfile:1
FROM cloudron/base:5.0.0
LABEL org.opencontainers.image.source="https://github.com/fonoster/fonoster.git"
LABEL org.opencontainers.image.description="Cloudron package for Fonoster"
ARG APP_VERSION
ENV APP_VERSION=${APP_VERSION:-latest}
# Copy application source into image at build time
# Replace this with a multi-stage build if upstream provides Docker images.
COPY ./app /app/code
# Copy start script and make it executable
COPY ./start.sh /app/pkg/start.sh
RUN chmod +x /app/pkg/start.sh
# Cloudron expects all processes to run as cloudron user
USER cloudron
WORKDIR /app/code
CMD ["/app/pkg/start.sh"]

20
apps/fonoster/README.md Normal file
View File

@@ -0,0 +1,20 @@
# Fonoster on Cloudron
- **Upstream repository**: https://github.com/fonoster/fonoster.git
- **Implementation issue**: https://projects.knownelement.com/issues/227
- **Status**: Draft scaffolding generated on $(date -u +"%Y-%m-%dT%H:%M:%SZ")
## Packaging Checklist
1. Review upstream deployment requirements and map them to Cloudron services (database, cache, object storage, workers).
2. Update `Dockerfile` with the correct build steps and runtime dependencies.
3. Implement `start.sh` to configure the app from Cloudron-provided environment variables and launch the primary process.
4. Edit `CloudronManifest.json` with accurate metadata, permissions, ports, addons, and health checks.
5. Add integration and smoke tests under `test/` to validate the package.
6. Document manual configuration steps, migration requirements, and known gaps in this README.
## Notes
- Replace the placeholder long-running process in `start.sh`.
- Populate the `app/` directory with the application build artefacts or git submodules.
- Use the shared packaging container (`docker/packager`) to run `cloudron build` and `cloudron install` so the host remains clean.

View File

View File

@@ -0,0 +1,9 @@
{
"slug": "fonoster",
"title": "Fonoster",
"issue": "https://projects.knownelement.com/issues/227",
"repo": "https://github.com/fonoster/fonoster.git",
"additionalRepos": [],
"created": "2025-10-02T16:46:49Z",
"notes": "TODO: capture packaging notes"
}

8
apps/fonoster/start.sh Executable file
View File

@@ -0,0 +1,8 @@
#!/bin/bash
set -euo pipefail
# Cloudron injects configuration via environment variables and files under /run
# Use this script to render config files and launch the upstream service.
# TODO: Replace the command below with the correct process supervisor.
exec /bin/sh -c "echo 'Replace start.sh with application startup logic for Fonoster' && sleep infinity"

16
apps/fonoster/test/smoke.sh Executable file
View File

@@ -0,0 +1,16 @@
#!/bin/bash
set -euo pipefail
# Basic container reachability check executed inside the packaging container.
# Replace curl target with an endpoint exposed by the app once the package is functional.
cloudron_app_url=${CLOUDRON_APP_ORIGIN:-"http://localhost"}
http_code=$(curl -s -o /tmp/smoke.log -w "%{http_code}" "${cloudron_app_url}")
if [[ "${http_code}" != "200" ]]; then
echo "Unexpected HTTP status: ${http_code}" >&2
cat /tmp/smoke.log >&2
exit 1
fi
echo "Smoke test passed"

View File

@@ -0,0 +1,20 @@
{
"manifestVersion": 2,
"id": "com.knel.grist",
"title": "Grist",
"author": "Known Element Packaging Team",
"tagline": "TODO: Short one-line pitch",
"description": "TODO: Comprehensive description for the Cloudron App Store entry.",
"changelog": "Initial scaffold",
"website": "https://github.com/gristlabs/grist-core",
"supportUrl": "https://projects.knownelement.com/issues/191",
"sourceUrl": "https://github.com/gristlabs/grist-core",
"version": "0.1.0",
"tags": ["custom", "known-element"],
"healthCheckPath": "/",
"memoryLimit": 536870912,
"httpPort": 3000,
"addons": {
"localstorage": {}
}
}

Some files were not shown because too many files have changed in this diff Show More