Restructure repository into output workspace
This commit is contained in:
27
output/apps/apache-apisix/CloudronManifest.json
Normal file
27
output/apps/apache-apisix/CloudronManifest.json
Normal file
@@ -0,0 +1,27 @@
|
||||
{
|
||||
"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": "/",
|
||||
"httpPort": 3000,
|
||||
"memoryLimit": "512M",
|
||||
"addons": {
|
||||
"localstorage": {}
|
||||
},
|
||||
"optionalAddons": {
|
||||
"postgresql": {},
|
||||
"redis": {},
|
||||
"mysql": {},
|
||||
"mongodb": {},
|
||||
"sendmail": {}
|
||||
}
|
||||
}
|
39
output/apps/apache-apisix/Dockerfile
Normal file
39
output/apps/apache-apisix/Dockerfile
Normal file
@@ -0,0 +1,39 @@
|
||||
# syntax=docker/dockerfile:1.6
|
||||
|
||||
ARG APP_VERSION=latest
|
||||
|
||||
FROM cloudron/base:5.0.0 AS builder
|
||||
WORKDIR /build
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# TODO: Fetch and build Apache APISIX
|
||||
# Example:
|
||||
# RUN git clone --depth 1 --branch "${APP_VERSION}" https://github.com/apache/apisix.git source \
|
||||
# && cd source \
|
||||
# && npm ci \
|
||||
# && npm run build
|
||||
# -----------------------------------------------------------------------------
|
||||
|
||||
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"
|
||||
|
||||
ENV APP_VERSION=${APP_VERSION}
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# TODO: Copy build artefacts from the builder stage
|
||||
# COPY --from=builder /build/source/dist /app/code
|
||||
# -----------------------------------------------------------------------------
|
||||
|
||||
COPY ./app /app/code
|
||||
COPY ./start.sh /app/pkg/start.sh
|
||||
COPY ./test /app/pkg/test
|
||||
|
||||
RUN chmod +x /app/pkg/start.sh /app/pkg/test/smoke.sh \
|
||||
&& mkdir -p /app/data \
|
||||
&& chown -R cloudron:cloudron /app
|
||||
|
||||
USER cloudron
|
||||
WORKDIR /app/code
|
||||
|
||||
CMD ["/app/pkg/start.sh"]
|
20
output/apps/apache-apisix/README.md
Normal file
20
output/apps/apache-apisix/README.md
Normal 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
|
||||
- **Generated**: 2025-10-02T17:19:00Z UTC
|
||||
|
||||
## Packaging Checklist
|
||||
|
||||
1. Map upstream services (databases, caches, workers) to Cloudron addons; remove unused entries from `optionalAddons` and enable required ones under `addons`.
|
||||
2. Implement the multi-stage build in `Dockerfile` to fetch/compile the correct release of Apache APISIX.
|
||||
3. Update `start.sh` to configure the app from Cloudron environment variables and launch the primary process.
|
||||
4. Replace the placeholder health checks and smoke test with real coverage.
|
||||
5. Complete `CloudronManifest.json` (tagline, description, versioning, resource limits, ingress, TCP ports, etc.).
|
||||
6. Document manual configuration steps, migrations, and known gaps below.
|
||||
|
||||
## Notes
|
||||
|
||||
- Populate the `app/` directory with runtime overlays or artifacts generated during the build stage.
|
||||
- Use the shared packaging container (`output/docker/packager`) for `cloudron build/install` to keep the host clean.
|
||||
- Record decisions and operational requirements under `output/docs/apps/apache-apisix/` as work progresses.
|
0
output/apps/apache-apisix/app/.gitkeep
Normal file
0
output/apps/apache-apisix/app/.gitkeep
Normal file
9
output/apps/apache-apisix/metadata.json
Normal file
9
output/apps/apache-apisix/metadata.json
Normal 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-02T17:19:00Z",
|
||||
"notes": "TODO: capture packaging notes"
|
||||
}
|
9
output/apps/apache-apisix/start.sh
Executable file
9
output/apps/apache-apisix/start.sh
Executable file
@@ -0,0 +1,9 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
# TODO: render configuration files from CLOUDRON_* environment variables
|
||||
# Example:
|
||||
# envsubst < /app/pkg/config.tmpl > /run/config.yaml
|
||||
|
||||
>&2 echo "start.sh for Apache APISIX is not implemented yet."
|
||||
exit 1
|
14
output/apps/apache-apisix/test/smoke.sh
Executable file
14
output/apps/apache-apisix/test/smoke.sh
Executable file
@@ -0,0 +1,14 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
cloudron_app_origin=${CLOUDRON_APP_ORIGIN:-http://localhost}
|
||||
|
||||
http_code=$(curl --silent --show-error --output /tmp/smoke.log --write-out "%{http_code}" "${cloudron_app_origin}/")
|
||||
|
||||
if [[ "${http_code}" != "200" ]]; then
|
||||
>&2 echo "Smoke test failed for Apache APISIX: expected HTTP 200 from ${cloudron_app_origin}/, got ${http_code}"
|
||||
>&2 cat /tmp/smoke.log
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Smoke test placeholder passed for Apache APISIX"
|
27
output/apps/autobom/CloudronManifest.json
Normal file
27
output/apps/autobom/CloudronManifest.json
Normal file
@@ -0,0 +1,27 @@
|
||||
{
|
||||
"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": "/",
|
||||
"httpPort": 3000,
|
||||
"memoryLimit": "512M",
|
||||
"addons": {
|
||||
"localstorage": {}
|
||||
},
|
||||
"optionalAddons": {
|
||||
"postgresql": {},
|
||||
"redis": {},
|
||||
"mysql": {},
|
||||
"mongodb": {},
|
||||
"sendmail": {}
|
||||
}
|
||||
}
|
39
output/apps/autobom/Dockerfile
Normal file
39
output/apps/autobom/Dockerfile
Normal file
@@ -0,0 +1,39 @@
|
||||
# syntax=docker/dockerfile:1.6
|
||||
|
||||
ARG APP_VERSION=latest
|
||||
|
||||
FROM cloudron/base:5.0.0 AS builder
|
||||
WORKDIR /build
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# TODO: Fetch and build Autobom
|
||||
# Example:
|
||||
# RUN git clone --depth 1 --branch "${APP_VERSION}" https://github.com/opulo-inc/autobom.git source \
|
||||
# && cd source \
|
||||
# && npm ci \
|
||||
# && npm run build
|
||||
# -----------------------------------------------------------------------------
|
||||
|
||||
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"
|
||||
|
||||
ENV APP_VERSION=${APP_VERSION}
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# TODO: Copy build artefacts from the builder stage
|
||||
# COPY --from=builder /build/source/dist /app/code
|
||||
# -----------------------------------------------------------------------------
|
||||
|
||||
COPY ./app /app/code
|
||||
COPY ./start.sh /app/pkg/start.sh
|
||||
COPY ./test /app/pkg/test
|
||||
|
||||
RUN chmod +x /app/pkg/start.sh /app/pkg/test/smoke.sh \
|
||||
&& mkdir -p /app/data \
|
||||
&& chown -R cloudron:cloudron /app
|
||||
|
||||
USER cloudron
|
||||
WORKDIR /app/code
|
||||
|
||||
CMD ["/app/pkg/start.sh"]
|
20
output/apps/autobom/README.md
Normal file
20
output/apps/autobom/README.md
Normal 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
|
||||
- **Generated**: 2025-10-02T17:19:01Z UTC
|
||||
|
||||
## Packaging Checklist
|
||||
|
||||
1. Map upstream services (databases, caches, workers) to Cloudron addons; remove unused entries from `optionalAddons` and enable required ones under `addons`.
|
||||
2. Implement the multi-stage build in `Dockerfile` to fetch/compile the correct release of Autobom.
|
||||
3. Update `start.sh` to configure the app from Cloudron environment variables and launch the primary process.
|
||||
4. Replace the placeholder health checks and smoke test with real coverage.
|
||||
5. Complete `CloudronManifest.json` (tagline, description, versioning, resource limits, ingress, TCP ports, etc.).
|
||||
6. Document manual configuration steps, migrations, and known gaps below.
|
||||
|
||||
## Notes
|
||||
|
||||
- Populate the `app/` directory with runtime overlays or artifacts generated during the build stage.
|
||||
- Use the shared packaging container (`output/docker/packager`) for `cloudron build/install` to keep the host clean.
|
||||
- Record decisions and operational requirements under `output/docs/apps/autobom/` as work progresses.
|
0
output/apps/autobom/app/.gitkeep
Normal file
0
output/apps/autobom/app/.gitkeep
Normal file
9
output/apps/autobom/metadata.json
Normal file
9
output/apps/autobom/metadata.json
Normal 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-02T17:19:01Z",
|
||||
"notes": "TODO: capture packaging notes"
|
||||
}
|
9
output/apps/autobom/start.sh
Executable file
9
output/apps/autobom/start.sh
Executable file
@@ -0,0 +1,9 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
# TODO: render configuration files from CLOUDRON_* environment variables
|
||||
# Example:
|
||||
# envsubst < /app/pkg/config.tmpl > /run/config.yaml
|
||||
|
||||
>&2 echo "start.sh for Autobom is not implemented yet."
|
||||
exit 1
|
14
output/apps/autobom/test/smoke.sh
Executable file
14
output/apps/autobom/test/smoke.sh
Executable file
@@ -0,0 +1,14 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
cloudron_app_origin=${CLOUDRON_APP_ORIGIN:-http://localhost}
|
||||
|
||||
http_code=$(curl --silent --show-error --output /tmp/smoke.log --write-out "%{http_code}" "${cloudron_app_origin}/")
|
||||
|
||||
if [[ "${http_code}" != "200" ]]; then
|
||||
>&2 echo "Smoke test failed for Autobom: expected HTTP 200 from ${cloudron_app_origin}/, got ${http_code}"
|
||||
>&2 cat /tmp/smoke.log
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Smoke test placeholder passed for Autobom"
|
335
output/apps/catalog.json
Normal file
335
output/apps/catalog.json
Normal 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"
|
||||
}
|
||||
]
|
27
output/apps/chirpstack/CloudronManifest.json
Normal file
27
output/apps/chirpstack/CloudronManifest.json
Normal file
@@ -0,0 +1,27 @@
|
||||
{
|
||||
"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": "/",
|
||||
"httpPort": 3000,
|
||||
"memoryLimit": "512M",
|
||||
"addons": {
|
||||
"localstorage": {}
|
||||
},
|
||||
"optionalAddons": {
|
||||
"postgresql": {},
|
||||
"redis": {},
|
||||
"mysql": {},
|
||||
"mongodb": {},
|
||||
"sendmail": {}
|
||||
}
|
||||
}
|
39
output/apps/chirpstack/Dockerfile
Normal file
39
output/apps/chirpstack/Dockerfile
Normal file
@@ -0,0 +1,39 @@
|
||||
# syntax=docker/dockerfile:1.6
|
||||
|
||||
ARG APP_VERSION=latest
|
||||
|
||||
FROM cloudron/base:5.0.0 AS builder
|
||||
WORKDIR /build
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# TODO: Fetch and build ChirpStack
|
||||
# Example:
|
||||
# RUN git clone --depth 1 --branch "${APP_VERSION}" https://github.com/chirpstack/chirpstack.git source \
|
||||
# && cd source \
|
||||
# && npm ci \
|
||||
# && npm run build
|
||||
# -----------------------------------------------------------------------------
|
||||
|
||||
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"
|
||||
|
||||
ENV APP_VERSION=${APP_VERSION}
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# TODO: Copy build artefacts from the builder stage
|
||||
# COPY --from=builder /build/source/dist /app/code
|
||||
# -----------------------------------------------------------------------------
|
||||
|
||||
COPY ./app /app/code
|
||||
COPY ./start.sh /app/pkg/start.sh
|
||||
COPY ./test /app/pkg/test
|
||||
|
||||
RUN chmod +x /app/pkg/start.sh /app/pkg/test/smoke.sh \
|
||||
&& mkdir -p /app/data \
|
||||
&& chown -R cloudron:cloudron /app
|
||||
|
||||
USER cloudron
|
||||
WORKDIR /app/code
|
||||
|
||||
CMD ["/app/pkg/start.sh"]
|
20
output/apps/chirpstack/README.md
Normal file
20
output/apps/chirpstack/README.md
Normal file
@@ -0,0 +1,20 @@
|
||||
# ChirpStack on Cloudron
|
||||
|
||||
- **Upstream repository**: https://github.com/chirpstack/chirpstack.git
|
||||
- **Implementation issue**: https://projects.knownelement.com/issues/184
|
||||
- **Generated**: 2025-10-02T17:19:00Z UTC
|
||||
|
||||
## Packaging Checklist
|
||||
|
||||
1. Map upstream services (databases, caches, workers) to Cloudron addons; remove unused entries from `optionalAddons` and enable required ones under `addons`.
|
||||
2. Implement the multi-stage build in `Dockerfile` to fetch/compile the correct release of ChirpStack.
|
||||
3. Update `start.sh` to configure the app from Cloudron environment variables and launch the primary process.
|
||||
4. Replace the placeholder health checks and smoke test with real coverage.
|
||||
5. Complete `CloudronManifest.json` (tagline, description, versioning, resource limits, ingress, TCP ports, etc.).
|
||||
6. Document manual configuration steps, migrations, and known gaps below.
|
||||
|
||||
## Notes
|
||||
|
||||
- Populate the `app/` directory with runtime overlays or artifacts generated during the build stage.
|
||||
- Use the shared packaging container (`output/docker/packager`) for `cloudron build/install` to keep the host clean.
|
||||
- Record decisions and operational requirements under `output/docs/apps/chirpstack/` as work progresses.
|
0
output/apps/chirpstack/app/.gitkeep
Normal file
0
output/apps/chirpstack/app/.gitkeep
Normal file
9
output/apps/chirpstack/metadata.json
Normal file
9
output/apps/chirpstack/metadata.json
Normal 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-02T17:19:00Z",
|
||||
"notes": "TODO: capture packaging notes"
|
||||
}
|
9
output/apps/chirpstack/start.sh
Executable file
9
output/apps/chirpstack/start.sh
Executable file
@@ -0,0 +1,9 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
# TODO: render configuration files from CLOUDRON_* environment variables
|
||||
# Example:
|
||||
# envsubst < /app/pkg/config.tmpl > /run/config.yaml
|
||||
|
||||
>&2 echo "start.sh for ChirpStack is not implemented yet."
|
||||
exit 1
|
14
output/apps/chirpstack/test/smoke.sh
Executable file
14
output/apps/chirpstack/test/smoke.sh
Executable file
@@ -0,0 +1,14 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
cloudron_app_origin=${CLOUDRON_APP_ORIGIN:-http://localhost}
|
||||
|
||||
http_code=$(curl --silent --show-error --output /tmp/smoke.log --write-out "%{http_code}" "${cloudron_app_origin}/")
|
||||
|
||||
if [[ "${http_code}" != "200" ]]; then
|
||||
>&2 echo "Smoke test failed for ChirpStack: expected HTTP 200 from ${cloudron_app_origin}/, got ${http_code}"
|
||||
>&2 cat /tmp/smoke.log
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Smoke test placeholder passed for ChirpStack"
|
27
output/apps/consuldemocracy/CloudronManifest.json
Normal file
27
output/apps/consuldemocracy/CloudronManifest.json
Normal file
@@ -0,0 +1,27 @@
|
||||
{
|
||||
"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": "/",
|
||||
"httpPort": 3000,
|
||||
"memoryLimit": "512M",
|
||||
"addons": {
|
||||
"localstorage": {}
|
||||
},
|
||||
"optionalAddons": {
|
||||
"postgresql": {},
|
||||
"redis": {},
|
||||
"mysql": {},
|
||||
"mongodb": {},
|
||||
"sendmail": {}
|
||||
}
|
||||
}
|
39
output/apps/consuldemocracy/Dockerfile
Normal file
39
output/apps/consuldemocracy/Dockerfile
Normal file
@@ -0,0 +1,39 @@
|
||||
# syntax=docker/dockerfile:1.6
|
||||
|
||||
ARG APP_VERSION=latest
|
||||
|
||||
FROM cloudron/base:5.0.0 AS builder
|
||||
WORKDIR /build
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# TODO: Fetch and build CONSUL Democracy
|
||||
# Example:
|
||||
# RUN git clone --depth 1 --branch "${APP_VERSION}" https://github.com/consuldemocracy/consuldemocracy.git source \
|
||||
# && cd source \
|
||||
# && npm ci \
|
||||
# && npm run build
|
||||
# -----------------------------------------------------------------------------
|
||||
|
||||
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"
|
||||
|
||||
ENV APP_VERSION=${APP_VERSION}
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# TODO: Copy build artefacts from the builder stage
|
||||
# COPY --from=builder /build/source/dist /app/code
|
||||
# -----------------------------------------------------------------------------
|
||||
|
||||
COPY ./app /app/code
|
||||
COPY ./start.sh /app/pkg/start.sh
|
||||
COPY ./test /app/pkg/test
|
||||
|
||||
RUN chmod +x /app/pkg/start.sh /app/pkg/test/smoke.sh \
|
||||
&& mkdir -p /app/data \
|
||||
&& chown -R cloudron:cloudron /app
|
||||
|
||||
USER cloudron
|
||||
WORKDIR /app/code
|
||||
|
||||
CMD ["/app/pkg/start.sh"]
|
20
output/apps/consuldemocracy/README.md
Normal file
20
output/apps/consuldemocracy/README.md
Normal 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
|
||||
- **Generated**: 2025-10-02T17:19:00Z UTC
|
||||
|
||||
## Packaging Checklist
|
||||
|
||||
1. Map upstream services (databases, caches, workers) to Cloudron addons; remove unused entries from `optionalAddons` and enable required ones under `addons`.
|
||||
2. Implement the multi-stage build in `Dockerfile` to fetch/compile the correct release of CONSUL Democracy.
|
||||
3. Update `start.sh` to configure the app from Cloudron environment variables and launch the primary process.
|
||||
4. Replace the placeholder health checks and smoke test with real coverage.
|
||||
5. Complete `CloudronManifest.json` (tagline, description, versioning, resource limits, ingress, TCP ports, etc.).
|
||||
6. Document manual configuration steps, migrations, and known gaps below.
|
||||
|
||||
## Notes
|
||||
|
||||
- Populate the `app/` directory with runtime overlays or artifacts generated during the build stage.
|
||||
- Use the shared packaging container (`output/docker/packager`) for `cloudron build/install` to keep the host clean.
|
||||
- Record decisions and operational requirements under `output/docs/apps/consuldemocracy/` as work progresses.
|
0
output/apps/consuldemocracy/app/.gitkeep
Normal file
0
output/apps/consuldemocracy/app/.gitkeep
Normal file
9
output/apps/consuldemocracy/metadata.json
Normal file
9
output/apps/consuldemocracy/metadata.json
Normal 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-02T17:19:00Z",
|
||||
"notes": "TODO: capture packaging notes"
|
||||
}
|
9
output/apps/consuldemocracy/start.sh
Executable file
9
output/apps/consuldemocracy/start.sh
Executable file
@@ -0,0 +1,9 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
# TODO: render configuration files from CLOUDRON_* environment variables
|
||||
# Example:
|
||||
# envsubst < /app/pkg/config.tmpl > /run/config.yaml
|
||||
|
||||
>&2 echo "start.sh for CONSUL Democracy is not implemented yet."
|
||||
exit 1
|
14
output/apps/consuldemocracy/test/smoke.sh
Executable file
14
output/apps/consuldemocracy/test/smoke.sh
Executable file
@@ -0,0 +1,14 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
cloudron_app_origin=${CLOUDRON_APP_ORIGIN:-http://localhost}
|
||||
|
||||
http_code=$(curl --silent --show-error --output /tmp/smoke.log --write-out "%{http_code}" "${cloudron_app_origin}/")
|
||||
|
||||
if [[ "${http_code}" != "200" ]]; then
|
||||
>&2 echo "Smoke test failed for CONSUL Democracy: expected HTTP 200 from ${cloudron_app_origin}/, got ${http_code}"
|
||||
>&2 cat /tmp/smoke.log
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Smoke test placeholder passed for CONSUL Democracy"
|
27
output/apps/craig/CloudronManifest.json
Normal file
27
output/apps/craig/CloudronManifest.json
Normal file
@@ -0,0 +1,27 @@
|
||||
{
|
||||
"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": "/",
|
||||
"httpPort": 3000,
|
||||
"memoryLimit": "512M",
|
||||
"addons": {
|
||||
"localstorage": {}
|
||||
},
|
||||
"optionalAddons": {
|
||||
"postgresql": {},
|
||||
"redis": {},
|
||||
"mysql": {},
|
||||
"mongodb": {},
|
||||
"sendmail": {}
|
||||
}
|
||||
}
|
39
output/apps/craig/Dockerfile
Normal file
39
output/apps/craig/Dockerfile
Normal file
@@ -0,0 +1,39 @@
|
||||
# syntax=docker/dockerfile:1.6
|
||||
|
||||
ARG APP_VERSION=latest
|
||||
|
||||
FROM cloudron/base:5.0.0 AS builder
|
||||
WORKDIR /build
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# TODO: Fetch and build Craig (FOSS Discord Recorder)
|
||||
# Example:
|
||||
# RUN git clone --depth 1 --branch "${APP_VERSION}" https://github.com/CraigChat/craig.git source \
|
||||
# && cd source \
|
||||
# && npm ci \
|
||||
# && npm run build
|
||||
# -----------------------------------------------------------------------------
|
||||
|
||||
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)"
|
||||
|
||||
ENV APP_VERSION=${APP_VERSION}
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# TODO: Copy build artefacts from the builder stage
|
||||
# COPY --from=builder /build/source/dist /app/code
|
||||
# -----------------------------------------------------------------------------
|
||||
|
||||
COPY ./app /app/code
|
||||
COPY ./start.sh /app/pkg/start.sh
|
||||
COPY ./test /app/pkg/test
|
||||
|
||||
RUN chmod +x /app/pkg/start.sh /app/pkg/test/smoke.sh \
|
||||
&& mkdir -p /app/data \
|
||||
&& chown -R cloudron:cloudron /app
|
||||
|
||||
USER cloudron
|
||||
WORKDIR /app/code
|
||||
|
||||
CMD ["/app/pkg/start.sh"]
|
20
output/apps/craig/README.md
Normal file
20
output/apps/craig/README.md
Normal 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
|
||||
- **Generated**: 2025-10-02T17:19:00Z UTC
|
||||
|
||||
## Packaging Checklist
|
||||
|
||||
1. Map upstream services (databases, caches, workers) to Cloudron addons; remove unused entries from `optionalAddons` and enable required ones under `addons`.
|
||||
2. Implement the multi-stage build in `Dockerfile` to fetch/compile the correct release of Craig (FOSS Discord Recorder).
|
||||
3. Update `start.sh` to configure the app from Cloudron environment variables and launch the primary process.
|
||||
4. Replace the placeholder health checks and smoke test with real coverage.
|
||||
5. Complete `CloudronManifest.json` (tagline, description, versioning, resource limits, ingress, TCP ports, etc.).
|
||||
6. Document manual configuration steps, migrations, and known gaps below.
|
||||
|
||||
## Notes
|
||||
|
||||
- Populate the `app/` directory with runtime overlays or artifacts generated during the build stage.
|
||||
- Use the shared packaging container (`output/docker/packager`) for `cloudron build/install` to keep the host clean.
|
||||
- Record decisions and operational requirements under `output/docs/apps/craig/` as work progresses.
|
0
output/apps/craig/app/.gitkeep
Normal file
0
output/apps/craig/app/.gitkeep
Normal file
9
output/apps/craig/metadata.json
Normal file
9
output/apps/craig/metadata.json
Normal 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-02T17:19:00Z",
|
||||
"notes": "TODO: capture packaging notes"
|
||||
}
|
9
output/apps/craig/start.sh
Executable file
9
output/apps/craig/start.sh
Executable file
@@ -0,0 +1,9 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
# TODO: render configuration files from CLOUDRON_* environment variables
|
||||
# Example:
|
||||
# envsubst < /app/pkg/config.tmpl > /run/config.yaml
|
||||
|
||||
>&2 echo "start.sh for Craig (FOSS Discord Recorder) is not implemented yet."
|
||||
exit 1
|
14
output/apps/craig/test/smoke.sh
Executable file
14
output/apps/craig/test/smoke.sh
Executable file
@@ -0,0 +1,14 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
cloudron_app_origin=${CLOUDRON_APP_ORIGIN:-http://localhost}
|
||||
|
||||
http_code=$(curl --silent --show-error --output /tmp/smoke.log --write-out "%{http_code}" "${cloudron_app_origin}/")
|
||||
|
||||
if [[ "${http_code}" != "200" ]]; then
|
||||
>&2 echo "Smoke test failed for Craig (FOSS Discord Recorder): expected HTTP 200 from ${cloudron_app_origin}/, got ${http_code}"
|
||||
>&2 cat /tmp/smoke.log
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Smoke test placeholder passed for Craig (FOSS Discord Recorder)"
|
27
output/apps/database-gateway/CloudronManifest.json
Normal file
27
output/apps/database-gateway/CloudronManifest.json
Normal file
@@ -0,0 +1,27 @@
|
||||
{
|
||||
"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": "/",
|
||||
"httpPort": 3000,
|
||||
"memoryLimit": "512M",
|
||||
"addons": {
|
||||
"localstorage": {}
|
||||
},
|
||||
"optionalAddons": {
|
||||
"postgresql": {},
|
||||
"redis": {},
|
||||
"mysql": {},
|
||||
"mongodb": {},
|
||||
"sendmail": {}
|
||||
}
|
||||
}
|
39
output/apps/database-gateway/Dockerfile
Normal file
39
output/apps/database-gateway/Dockerfile
Normal file
@@ -0,0 +1,39 @@
|
||||
# syntax=docker/dockerfile:1.6
|
||||
|
||||
ARG APP_VERSION=latest
|
||||
|
||||
FROM cloudron/base:5.0.0 AS builder
|
||||
WORKDIR /build
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# TODO: Fetch and build Database Gateway
|
||||
# Example:
|
||||
# RUN git clone --depth 1 --branch "${APP_VERSION}" https://github.com/kazhuravlev/database-gateway.git source \
|
||||
# && cd source \
|
||||
# && npm ci \
|
||||
# && npm run build
|
||||
# -----------------------------------------------------------------------------
|
||||
|
||||
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"
|
||||
|
||||
ENV APP_VERSION=${APP_VERSION}
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# TODO: Copy build artefacts from the builder stage
|
||||
# COPY --from=builder /build/source/dist /app/code
|
||||
# -----------------------------------------------------------------------------
|
||||
|
||||
COPY ./app /app/code
|
||||
COPY ./start.sh /app/pkg/start.sh
|
||||
COPY ./test /app/pkg/test
|
||||
|
||||
RUN chmod +x /app/pkg/start.sh /app/pkg/test/smoke.sh \
|
||||
&& mkdir -p /app/data \
|
||||
&& chown -R cloudron:cloudron /app
|
||||
|
||||
USER cloudron
|
||||
WORKDIR /app/code
|
||||
|
||||
CMD ["/app/pkg/start.sh"]
|
20
output/apps/database-gateway/README.md
Normal file
20
output/apps/database-gateway/README.md
Normal 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
|
||||
- **Generated**: 2025-10-02T17:19:00Z UTC
|
||||
|
||||
## Packaging Checklist
|
||||
|
||||
1. Map upstream services (databases, caches, workers) to Cloudron addons; remove unused entries from `optionalAddons` and enable required ones under `addons`.
|
||||
2. Implement the multi-stage build in `Dockerfile` to fetch/compile the correct release of Database Gateway.
|
||||
3. Update `start.sh` to configure the app from Cloudron environment variables and launch the primary process.
|
||||
4. Replace the placeholder health checks and smoke test with real coverage.
|
||||
5. Complete `CloudronManifest.json` (tagline, description, versioning, resource limits, ingress, TCP ports, etc.).
|
||||
6. Document manual configuration steps, migrations, and known gaps below.
|
||||
|
||||
## Notes
|
||||
|
||||
- Populate the `app/` directory with runtime overlays or artifacts generated during the build stage.
|
||||
- Use the shared packaging container (`output/docker/packager`) for `cloudron build/install` to keep the host clean.
|
||||
- Record decisions and operational requirements under `output/docs/apps/database-gateway/` as work progresses.
|
0
output/apps/database-gateway/app/.gitkeep
Normal file
0
output/apps/database-gateway/app/.gitkeep
Normal file
9
output/apps/database-gateway/metadata.json
Normal file
9
output/apps/database-gateway/metadata.json
Normal 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-02T17:19:00Z",
|
||||
"notes": "TODO: capture packaging notes"
|
||||
}
|
9
output/apps/database-gateway/start.sh
Executable file
9
output/apps/database-gateway/start.sh
Executable file
@@ -0,0 +1,9 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
# TODO: render configuration files from CLOUDRON_* environment variables
|
||||
# Example:
|
||||
# envsubst < /app/pkg/config.tmpl > /run/config.yaml
|
||||
|
||||
>&2 echo "start.sh for Database Gateway is not implemented yet."
|
||||
exit 1
|
14
output/apps/database-gateway/test/smoke.sh
Executable file
14
output/apps/database-gateway/test/smoke.sh
Executable file
@@ -0,0 +1,14 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
cloudron_app_origin=${CLOUDRON_APP_ORIGIN:-http://localhost}
|
||||
|
||||
http_code=$(curl --silent --show-error --output /tmp/smoke.log --write-out "%{http_code}" "${cloudron_app_origin}/")
|
||||
|
||||
if [[ "${http_code}" != "200" ]]; then
|
||||
>&2 echo "Smoke test failed for Database Gateway: expected HTTP 200 from ${cloudron_app_origin}/, got ${http_code}"
|
||||
>&2 cat /tmp/smoke.log
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Smoke test placeholder passed for Database Gateway"
|
27
output/apps/datahub/CloudronManifest.json
Normal file
27
output/apps/datahub/CloudronManifest.json
Normal file
@@ -0,0 +1,27 @@
|
||||
{
|
||||
"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": "/",
|
||||
"httpPort": 3000,
|
||||
"memoryLimit": "512M",
|
||||
"addons": {
|
||||
"localstorage": {}
|
||||
},
|
||||
"optionalAddons": {
|
||||
"postgresql": {},
|
||||
"redis": {},
|
||||
"mysql": {},
|
||||
"mongodb": {},
|
||||
"sendmail": {}
|
||||
}
|
||||
}
|
39
output/apps/datahub/Dockerfile
Normal file
39
output/apps/datahub/Dockerfile
Normal file
@@ -0,0 +1,39 @@
|
||||
# syntax=docker/dockerfile:1.6
|
||||
|
||||
ARG APP_VERSION=latest
|
||||
|
||||
FROM cloudron/base:5.0.0 AS builder
|
||||
WORKDIR /build
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# TODO: Fetch and build DataHub
|
||||
# Example:
|
||||
# RUN git clone --depth 1 --branch "${APP_VERSION}" https://github.com/datahub-project/datahub.git source \
|
||||
# && cd source \
|
||||
# && npm ci \
|
||||
# && npm run build
|
||||
# -----------------------------------------------------------------------------
|
||||
|
||||
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"
|
||||
|
||||
ENV APP_VERSION=${APP_VERSION}
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# TODO: Copy build artefacts from the builder stage
|
||||
# COPY --from=builder /build/source/dist /app/code
|
||||
# -----------------------------------------------------------------------------
|
||||
|
||||
COPY ./app /app/code
|
||||
COPY ./start.sh /app/pkg/start.sh
|
||||
COPY ./test /app/pkg/test
|
||||
|
||||
RUN chmod +x /app/pkg/start.sh /app/pkg/test/smoke.sh \
|
||||
&& mkdir -p /app/data \
|
||||
&& chown -R cloudron:cloudron /app
|
||||
|
||||
USER cloudron
|
||||
WORKDIR /app/code
|
||||
|
||||
CMD ["/app/pkg/start.sh"]
|
20
output/apps/datahub/README.md
Normal file
20
output/apps/datahub/README.md
Normal 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
|
||||
- **Generated**: 2025-10-02T17:19:00Z UTC
|
||||
|
||||
## Packaging Checklist
|
||||
|
||||
1. Map upstream services (databases, caches, workers) to Cloudron addons; remove unused entries from `optionalAddons` and enable required ones under `addons`.
|
||||
2. Implement the multi-stage build in `Dockerfile` to fetch/compile the correct release of DataHub.
|
||||
3. Update `start.sh` to configure the app from Cloudron environment variables and launch the primary process.
|
||||
4. Replace the placeholder health checks and smoke test with real coverage.
|
||||
5. Complete `CloudronManifest.json` (tagline, description, versioning, resource limits, ingress, TCP ports, etc.).
|
||||
6. Document manual configuration steps, migrations, and known gaps below.
|
||||
|
||||
## Notes
|
||||
|
||||
- Populate the `app/` directory with runtime overlays or artifacts generated during the build stage.
|
||||
- Use the shared packaging container (`output/docker/packager`) for `cloudron build/install` to keep the host clean.
|
||||
- Record decisions and operational requirements under `output/docs/apps/datahub/` as work progresses.
|
0
output/apps/datahub/app/.gitkeep
Normal file
0
output/apps/datahub/app/.gitkeep
Normal file
9
output/apps/datahub/metadata.json
Normal file
9
output/apps/datahub/metadata.json
Normal 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-02T17:19:00Z",
|
||||
"notes": "TODO: capture packaging notes"
|
||||
}
|
9
output/apps/datahub/start.sh
Executable file
9
output/apps/datahub/start.sh
Executable file
@@ -0,0 +1,9 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
# TODO: render configuration files from CLOUDRON_* environment variables
|
||||
# Example:
|
||||
# envsubst < /app/pkg/config.tmpl > /run/config.yaml
|
||||
|
||||
>&2 echo "start.sh for DataHub is not implemented yet."
|
||||
exit 1
|
14
output/apps/datahub/test/smoke.sh
Executable file
14
output/apps/datahub/test/smoke.sh
Executable file
@@ -0,0 +1,14 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
cloudron_app_origin=${CLOUDRON_APP_ORIGIN:-http://localhost}
|
||||
|
||||
http_code=$(curl --silent --show-error --output /tmp/smoke.log --write-out "%{http_code}" "${cloudron_app_origin}/")
|
||||
|
||||
if [[ "${http_code}" != "200" ]]; then
|
||||
>&2 echo "Smoke test failed for DataHub: expected HTTP 200 from ${cloudron_app_origin}/, got ${http_code}"
|
||||
>&2 cat /tmp/smoke.log
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Smoke test placeholder passed for DataHub"
|
27
output/apps/docassemble/CloudronManifest.json
Normal file
27
output/apps/docassemble/CloudronManifest.json
Normal file
@@ -0,0 +1,27 @@
|
||||
{
|
||||
"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": "/",
|
||||
"httpPort": 3000,
|
||||
"memoryLimit": "512M",
|
||||
"addons": {
|
||||
"localstorage": {}
|
||||
},
|
||||
"optionalAddons": {
|
||||
"postgresql": {},
|
||||
"redis": {},
|
||||
"mysql": {},
|
||||
"mongodb": {},
|
||||
"sendmail": {}
|
||||
}
|
||||
}
|
39
output/apps/docassemble/Dockerfile
Normal file
39
output/apps/docassemble/Dockerfile
Normal file
@@ -0,0 +1,39 @@
|
||||
# syntax=docker/dockerfile:1.6
|
||||
|
||||
ARG APP_VERSION=latest
|
||||
|
||||
FROM cloudron/base:5.0.0 AS builder
|
||||
WORKDIR /build
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# TODO: Fetch and build Docassemble
|
||||
# Example:
|
||||
# RUN git clone --depth 1 --branch "${APP_VERSION}" https://github.com/jhpyle/docassemble.git source \
|
||||
# && cd source \
|
||||
# && npm ci \
|
||||
# && npm run build
|
||||
# -----------------------------------------------------------------------------
|
||||
|
||||
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"
|
||||
|
||||
ENV APP_VERSION=${APP_VERSION}
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# TODO: Copy build artefacts from the builder stage
|
||||
# COPY --from=builder /build/source/dist /app/code
|
||||
# -----------------------------------------------------------------------------
|
||||
|
||||
COPY ./app /app/code
|
||||
COPY ./start.sh /app/pkg/start.sh
|
||||
COPY ./test /app/pkg/test
|
||||
|
||||
RUN chmod +x /app/pkg/start.sh /app/pkg/test/smoke.sh \
|
||||
&& mkdir -p /app/data \
|
||||
&& chown -R cloudron:cloudron /app
|
||||
|
||||
USER cloudron
|
||||
WORKDIR /app/code
|
||||
|
||||
CMD ["/app/pkg/start.sh"]
|
20
output/apps/docassemble/README.md
Normal file
20
output/apps/docassemble/README.md
Normal file
@@ -0,0 +1,20 @@
|
||||
# Docassemble on Cloudron
|
||||
|
||||
- **Upstream repository**: https://github.com/jhpyle/docassemble.git
|
||||
- **Implementation issue**: https://projects.knownelement.com/issues/277
|
||||
- **Generated**: 2025-10-02T17:19:00Z UTC
|
||||
|
||||
## Packaging Checklist
|
||||
|
||||
1. Map upstream services (databases, caches, workers) to Cloudron addons; remove unused entries from `optionalAddons` and enable required ones under `addons`.
|
||||
2. Implement the multi-stage build in `Dockerfile` to fetch/compile the correct release of Docassemble.
|
||||
3. Update `start.sh` to configure the app from Cloudron environment variables and launch the primary process.
|
||||
4. Replace the placeholder health checks and smoke test with real coverage.
|
||||
5. Complete `CloudronManifest.json` (tagline, description, versioning, resource limits, ingress, TCP ports, etc.).
|
||||
6. Document manual configuration steps, migrations, and known gaps below.
|
||||
|
||||
## Notes
|
||||
|
||||
- Populate the `app/` directory with runtime overlays or artifacts generated during the build stage.
|
||||
- Use the shared packaging container (`output/docker/packager`) for `cloudron build/install` to keep the host clean.
|
||||
- Record decisions and operational requirements under `output/docs/apps/docassemble/` as work progresses.
|
0
output/apps/docassemble/app/.gitkeep
Normal file
0
output/apps/docassemble/app/.gitkeep
Normal file
9
output/apps/docassemble/metadata.json
Normal file
9
output/apps/docassemble/metadata.json
Normal 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-02T17:19:00Z",
|
||||
"notes": "TODO: capture packaging notes"
|
||||
}
|
9
output/apps/docassemble/start.sh
Executable file
9
output/apps/docassemble/start.sh
Executable file
@@ -0,0 +1,9 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
# TODO: render configuration files from CLOUDRON_* environment variables
|
||||
# Example:
|
||||
# envsubst < /app/pkg/config.tmpl > /run/config.yaml
|
||||
|
||||
>&2 echo "start.sh for Docassemble is not implemented yet."
|
||||
exit 1
|
14
output/apps/docassemble/test/smoke.sh
Executable file
14
output/apps/docassemble/test/smoke.sh
Executable file
@@ -0,0 +1,14 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
cloudron_app_origin=${CLOUDRON_APP_ORIGIN:-http://localhost}
|
||||
|
||||
http_code=$(curl --silent --show-error --output /tmp/smoke.log --write-out "%{http_code}" "${cloudron_app_origin}/")
|
||||
|
||||
if [[ "${http_code}" != "200" ]]; then
|
||||
>&2 echo "Smoke test failed for Docassemble: expected HTTP 200 from ${cloudron_app_origin}/, got ${http_code}"
|
||||
>&2 cat /tmp/smoke.log
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Smoke test placeholder passed for Docassemble"
|
27
output/apps/docker-webhook/CloudronManifest.json
Normal file
27
output/apps/docker-webhook/CloudronManifest.json
Normal file
@@ -0,0 +1,27 @@
|
||||
{
|
||||
"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": "/",
|
||||
"httpPort": 3000,
|
||||
"memoryLimit": "512M",
|
||||
"addons": {
|
||||
"localstorage": {}
|
||||
},
|
||||
"optionalAddons": {
|
||||
"postgresql": {},
|
||||
"redis": {},
|
||||
"mysql": {},
|
||||
"mongodb": {},
|
||||
"sendmail": {}
|
||||
}
|
||||
}
|
39
output/apps/docker-webhook/Dockerfile
Normal file
39
output/apps/docker-webhook/Dockerfile
Normal file
@@ -0,0 +1,39 @@
|
||||
# syntax=docker/dockerfile:1.6
|
||||
|
||||
ARG APP_VERSION=latest
|
||||
|
||||
FROM cloudron/base:5.0.0 AS builder
|
||||
WORKDIR /build
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# TODO: Fetch and build docker-webhook
|
||||
# Example:
|
||||
# RUN git clone --depth 1 --branch "${APP_VERSION}" https://github.com/thecatlady/docker-webhook source \
|
||||
# && cd source \
|
||||
# && npm ci \
|
||||
# && npm run build
|
||||
# -----------------------------------------------------------------------------
|
||||
|
||||
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"
|
||||
|
||||
ENV APP_VERSION=${APP_VERSION}
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# TODO: Copy build artefacts from the builder stage
|
||||
# COPY --from=builder /build/source/dist /app/code
|
||||
# -----------------------------------------------------------------------------
|
||||
|
||||
COPY ./app /app/code
|
||||
COPY ./start.sh /app/pkg/start.sh
|
||||
COPY ./test /app/pkg/test
|
||||
|
||||
RUN chmod +x /app/pkg/start.sh /app/pkg/test/smoke.sh \
|
||||
&& mkdir -p /app/data \
|
||||
&& chown -R cloudron:cloudron /app
|
||||
|
||||
USER cloudron
|
||||
WORKDIR /app/code
|
||||
|
||||
CMD ["/app/pkg/start.sh"]
|
20
output/apps/docker-webhook/README.md
Normal file
20
output/apps/docker-webhook/README.md
Normal 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
|
||||
- **Generated**: 2025-10-02T17:19:00Z UTC
|
||||
|
||||
## Packaging Checklist
|
||||
|
||||
1. Map upstream services (databases, caches, workers) to Cloudron addons; remove unused entries from `optionalAddons` and enable required ones under `addons`.
|
||||
2. Implement the multi-stage build in `Dockerfile` to fetch/compile the correct release of docker-webhook.
|
||||
3. Update `start.sh` to configure the app from Cloudron environment variables and launch the primary process.
|
||||
4. Replace the placeholder health checks and smoke test with real coverage.
|
||||
5. Complete `CloudronManifest.json` (tagline, description, versioning, resource limits, ingress, TCP ports, etc.).
|
||||
6. Document manual configuration steps, migrations, and known gaps below.
|
||||
|
||||
## Notes
|
||||
|
||||
- Populate the `app/` directory with runtime overlays or artifacts generated during the build stage.
|
||||
- Use the shared packaging container (`output/docker/packager`) for `cloudron build/install` to keep the host clean.
|
||||
- Record decisions and operational requirements under `output/docs/apps/docker-webhook/` as work progresses.
|
0
output/apps/docker-webhook/app/.gitkeep
Normal file
0
output/apps/docker-webhook/app/.gitkeep
Normal file
9
output/apps/docker-webhook/metadata.json
Normal file
9
output/apps/docker-webhook/metadata.json
Normal 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-02T17:19:00Z",
|
||||
"notes": "TODO: capture packaging notes"
|
||||
}
|
9
output/apps/docker-webhook/start.sh
Executable file
9
output/apps/docker-webhook/start.sh
Executable file
@@ -0,0 +1,9 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
# TODO: render configuration files from CLOUDRON_* environment variables
|
||||
# Example:
|
||||
# envsubst < /app/pkg/config.tmpl > /run/config.yaml
|
||||
|
||||
>&2 echo "start.sh for docker-webhook is not implemented yet."
|
||||
exit 1
|
14
output/apps/docker-webhook/test/smoke.sh
Executable file
14
output/apps/docker-webhook/test/smoke.sh
Executable file
@@ -0,0 +1,14 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
cloudron_app_origin=${CLOUDRON_APP_ORIGIN:-http://localhost}
|
||||
|
||||
http_code=$(curl --silent --show-error --output /tmp/smoke.log --write-out "%{http_code}" "${cloudron_app_origin}/")
|
||||
|
||||
if [[ "${http_code}" != "200" ]]; then
|
||||
>&2 echo "Smoke test failed for docker-webhook: expected HTTP 200 from ${cloudron_app_origin}/, got ${http_code}"
|
||||
>&2 cat /tmp/smoke.log
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Smoke test placeholder passed for docker-webhook"
|
27
output/apps/drawio/CloudronManifest.json
Normal file
27
output/apps/drawio/CloudronManifest.json
Normal file
@@ -0,0 +1,27 @@
|
||||
{
|
||||
"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": "/",
|
||||
"httpPort": 3000,
|
||||
"memoryLimit": "512M",
|
||||
"addons": {
|
||||
"localstorage": {}
|
||||
},
|
||||
"optionalAddons": {
|
||||
"postgresql": {},
|
||||
"redis": {},
|
||||
"mysql": {},
|
||||
"mongodb": {},
|
||||
"sendmail": {}
|
||||
}
|
||||
}
|
39
output/apps/drawio/Dockerfile
Normal file
39
output/apps/drawio/Dockerfile
Normal file
@@ -0,0 +1,39 @@
|
||||
# syntax=docker/dockerfile:1.6
|
||||
|
||||
ARG APP_VERSION=latest
|
||||
|
||||
FROM cloudron/base:5.0.0 AS builder
|
||||
WORKDIR /build
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# TODO: Fetch and build draw.io
|
||||
# Example:
|
||||
# RUN git clone --depth 1 --branch "${APP_VERSION}" https://github.com/jgraph/docker-drawio source \
|
||||
# && cd source \
|
||||
# && npm ci \
|
||||
# && npm run build
|
||||
# -----------------------------------------------------------------------------
|
||||
|
||||
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"
|
||||
|
||||
ENV APP_VERSION=${APP_VERSION}
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# TODO: Copy build artefacts from the builder stage
|
||||
# COPY --from=builder /build/source/dist /app/code
|
||||
# -----------------------------------------------------------------------------
|
||||
|
||||
COPY ./app /app/code
|
||||
COPY ./start.sh /app/pkg/start.sh
|
||||
COPY ./test /app/pkg/test
|
||||
|
||||
RUN chmod +x /app/pkg/start.sh /app/pkg/test/smoke.sh \
|
||||
&& mkdir -p /app/data \
|
||||
&& chown -R cloudron:cloudron /app
|
||||
|
||||
USER cloudron
|
||||
WORKDIR /app/code
|
||||
|
||||
CMD ["/app/pkg/start.sh"]
|
20
output/apps/drawio/README.md
Normal file
20
output/apps/drawio/README.md
Normal 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
|
||||
- **Generated**: 2025-10-02T17:19:01Z UTC
|
||||
|
||||
## Packaging Checklist
|
||||
|
||||
1. Map upstream services (databases, caches, workers) to Cloudron addons; remove unused entries from `optionalAddons` and enable required ones under `addons`.
|
||||
2. Implement the multi-stage build in `Dockerfile` to fetch/compile the correct release of draw.io.
|
||||
3. Update `start.sh` to configure the app from Cloudron environment variables and launch the primary process.
|
||||
4. Replace the placeholder health checks and smoke test with real coverage.
|
||||
5. Complete `CloudronManifest.json` (tagline, description, versioning, resource limits, ingress, TCP ports, etc.).
|
||||
6. Document manual configuration steps, migrations, and known gaps below.
|
||||
|
||||
## Notes
|
||||
|
||||
- Populate the `app/` directory with runtime overlays or artifacts generated during the build stage.
|
||||
- Use the shared packaging container (`output/docker/packager`) for `cloudron build/install` to keep the host clean.
|
||||
- Record decisions and operational requirements under `output/docs/apps/drawio/` as work progresses.
|
0
output/apps/drawio/app/.gitkeep
Normal file
0
output/apps/drawio/app/.gitkeep
Normal file
9
output/apps/drawio/metadata.json
Normal file
9
output/apps/drawio/metadata.json
Normal 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-02T17:19:01Z",
|
||||
"notes": "TODO: capture packaging notes"
|
||||
}
|
9
output/apps/drawio/start.sh
Executable file
9
output/apps/drawio/start.sh
Executable file
@@ -0,0 +1,9 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
# TODO: render configuration files from CLOUDRON_* environment variables
|
||||
# Example:
|
||||
# envsubst < /app/pkg/config.tmpl > /run/config.yaml
|
||||
|
||||
>&2 echo "start.sh for draw.io is not implemented yet."
|
||||
exit 1
|
14
output/apps/drawio/test/smoke.sh
Executable file
14
output/apps/drawio/test/smoke.sh
Executable file
@@ -0,0 +1,14 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
cloudron_app_origin=${CLOUDRON_APP_ORIGIN:-http://localhost}
|
||||
|
||||
http_code=$(curl --silent --show-error --output /tmp/smoke.log --write-out "%{http_code}" "${cloudron_app_origin}/")
|
||||
|
||||
if [[ "${http_code}" != "200" ]]; then
|
||||
>&2 echo "Smoke test failed for draw.io: expected HTTP 200 from ${cloudron_app_origin}/, got ${http_code}"
|
||||
>&2 cat /tmp/smoke.log
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Smoke test placeholder passed for draw.io"
|
27
output/apps/easy-gate/CloudronManifest.json
Normal file
27
output/apps/easy-gate/CloudronManifest.json
Normal file
@@ -0,0 +1,27 @@
|
||||
{
|
||||
"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": "/",
|
||||
"httpPort": 3000,
|
||||
"memoryLimit": "512M",
|
||||
"addons": {
|
||||
"localstorage": {}
|
||||
},
|
||||
"optionalAddons": {
|
||||
"postgresql": {},
|
||||
"redis": {},
|
||||
"mysql": {},
|
||||
"mongodb": {},
|
||||
"sendmail": {}
|
||||
}
|
||||
}
|
39
output/apps/easy-gate/Dockerfile
Normal file
39
output/apps/easy-gate/Dockerfile
Normal file
@@ -0,0 +1,39 @@
|
||||
# syntax=docker/dockerfile:1.6
|
||||
|
||||
ARG APP_VERSION=latest
|
||||
|
||||
FROM cloudron/base:5.0.0 AS builder
|
||||
WORKDIR /build
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# TODO: Fetch and build Easy Gate
|
||||
# Example:
|
||||
# RUN git clone --depth 1 --branch "${APP_VERSION}" https://github.com/wiredlush/easy-gate.git source \
|
||||
# && cd source \
|
||||
# && npm ci \
|
||||
# && npm run build
|
||||
# -----------------------------------------------------------------------------
|
||||
|
||||
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"
|
||||
|
||||
ENV APP_VERSION=${APP_VERSION}
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# TODO: Copy build artefacts from the builder stage
|
||||
# COPY --from=builder /build/source/dist /app/code
|
||||
# -----------------------------------------------------------------------------
|
||||
|
||||
COPY ./app /app/code
|
||||
COPY ./start.sh /app/pkg/start.sh
|
||||
COPY ./test /app/pkg/test
|
||||
|
||||
RUN chmod +x /app/pkg/start.sh /app/pkg/test/smoke.sh \
|
||||
&& mkdir -p /app/data \
|
||||
&& chown -R cloudron:cloudron /app
|
||||
|
||||
USER cloudron
|
||||
WORKDIR /app/code
|
||||
|
||||
CMD ["/app/pkg/start.sh"]
|
20
output/apps/easy-gate/README.md
Normal file
20
output/apps/easy-gate/README.md
Normal 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
|
||||
- **Generated**: 2025-10-02T17:19:00Z UTC
|
||||
|
||||
## Packaging Checklist
|
||||
|
||||
1. Map upstream services (databases, caches, workers) to Cloudron addons; remove unused entries from `optionalAddons` and enable required ones under `addons`.
|
||||
2. Implement the multi-stage build in `Dockerfile` to fetch/compile the correct release of Easy Gate.
|
||||
3. Update `start.sh` to configure the app from Cloudron environment variables and launch the primary process.
|
||||
4. Replace the placeholder health checks and smoke test with real coverage.
|
||||
5. Complete `CloudronManifest.json` (tagline, description, versioning, resource limits, ingress, TCP ports, etc.).
|
||||
6. Document manual configuration steps, migrations, and known gaps below.
|
||||
|
||||
## Notes
|
||||
|
||||
- Populate the `app/` directory with runtime overlays or artifacts generated during the build stage.
|
||||
- Use the shared packaging container (`output/docker/packager`) for `cloudron build/install` to keep the host clean.
|
||||
- Record decisions and operational requirements under `output/docs/apps/easy-gate/` as work progresses.
|
0
output/apps/easy-gate/app/.gitkeep
Normal file
0
output/apps/easy-gate/app/.gitkeep
Normal file
9
output/apps/easy-gate/metadata.json
Normal file
9
output/apps/easy-gate/metadata.json
Normal 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-02T17:19:00Z",
|
||||
"notes": "TODO: capture packaging notes"
|
||||
}
|
9
output/apps/easy-gate/start.sh
Executable file
9
output/apps/easy-gate/start.sh
Executable file
@@ -0,0 +1,9 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
# TODO: render configuration files from CLOUDRON_* environment variables
|
||||
# Example:
|
||||
# envsubst < /app/pkg/config.tmpl > /run/config.yaml
|
||||
|
||||
>&2 echo "start.sh for Easy Gate is not implemented yet."
|
||||
exit 1
|
14
output/apps/easy-gate/test/smoke.sh
Executable file
14
output/apps/easy-gate/test/smoke.sh
Executable file
@@ -0,0 +1,14 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
cloudron_app_origin=${CLOUDRON_APP_ORIGIN:-http://localhost}
|
||||
|
||||
http_code=$(curl --silent --show-error --output /tmp/smoke.log --write-out "%{http_code}" "${cloudron_app_origin}/")
|
||||
|
||||
if [[ "${http_code}" != "200" ]]; then
|
||||
>&2 echo "Smoke test failed for Easy Gate: expected HTTP 200 from ${cloudron_app_origin}/, got ${http_code}"
|
||||
>&2 cat /tmp/smoke.log
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Smoke test placeholder passed for Easy Gate"
|
27
output/apps/elabftw/CloudronManifest.json
Normal file
27
output/apps/elabftw/CloudronManifest.json
Normal file
@@ -0,0 +1,27 @@
|
||||
{
|
||||
"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": "/",
|
||||
"httpPort": 3000,
|
||||
"memoryLimit": "512M",
|
||||
"addons": {
|
||||
"localstorage": {}
|
||||
},
|
||||
"optionalAddons": {
|
||||
"postgresql": {},
|
||||
"redis": {},
|
||||
"mysql": {},
|
||||
"mongodb": {},
|
||||
"sendmail": {}
|
||||
}
|
||||
}
|
39
output/apps/elabftw/Dockerfile
Normal file
39
output/apps/elabftw/Dockerfile
Normal file
@@ -0,0 +1,39 @@
|
||||
# syntax=docker/dockerfile:1.6
|
||||
|
||||
ARG APP_VERSION=latest
|
||||
|
||||
FROM cloudron/base:5.0.0 AS builder
|
||||
WORKDIR /build
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# TODO: Fetch and build eLabFTW
|
||||
# Example:
|
||||
# RUN git clone --depth 1 --branch "${APP_VERSION}" https://github.com/elabftw/elabftw.git source \
|
||||
# && cd source \
|
||||
# && npm ci \
|
||||
# && npm run build
|
||||
# -----------------------------------------------------------------------------
|
||||
|
||||
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"
|
||||
|
||||
ENV APP_VERSION=${APP_VERSION}
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# TODO: Copy build artefacts from the builder stage
|
||||
# COPY --from=builder /build/source/dist /app/code
|
||||
# -----------------------------------------------------------------------------
|
||||
|
||||
COPY ./app /app/code
|
||||
COPY ./start.sh /app/pkg/start.sh
|
||||
COPY ./test /app/pkg/test
|
||||
|
||||
RUN chmod +x /app/pkg/start.sh /app/pkg/test/smoke.sh \
|
||||
&& mkdir -p /app/data \
|
||||
&& chown -R cloudron:cloudron /app
|
||||
|
||||
USER cloudron
|
||||
WORKDIR /app/code
|
||||
|
||||
CMD ["/app/pkg/start.sh"]
|
20
output/apps/elabftw/README.md
Normal file
20
output/apps/elabftw/README.md
Normal file
@@ -0,0 +1,20 @@
|
||||
# eLabFTW on Cloudron
|
||||
|
||||
- **Upstream repository**: https://github.com/elabftw/elabftw.git
|
||||
- **Implementation issue**: https://projects.knownelement.com/issues/188
|
||||
- **Generated**: 2025-10-02T17:19:00Z UTC
|
||||
|
||||
## Packaging Checklist
|
||||
|
||||
1. Map upstream services (databases, caches, workers) to Cloudron addons; remove unused entries from `optionalAddons` and enable required ones under `addons`.
|
||||
2. Implement the multi-stage build in `Dockerfile` to fetch/compile the correct release of eLabFTW.
|
||||
3. Update `start.sh` to configure the app from Cloudron environment variables and launch the primary process.
|
||||
4. Replace the placeholder health checks and smoke test with real coverage.
|
||||
5. Complete `CloudronManifest.json` (tagline, description, versioning, resource limits, ingress, TCP ports, etc.).
|
||||
6. Document manual configuration steps, migrations, and known gaps below.
|
||||
|
||||
## Notes
|
||||
|
||||
- Populate the `app/` directory with runtime overlays or artifacts generated during the build stage.
|
||||
- Use the shared packaging container (`output/docker/packager`) for `cloudron build/install` to keep the host clean.
|
||||
- Record decisions and operational requirements under `output/docs/apps/elabftw/` as work progresses.
|
0
output/apps/elabftw/app/.gitkeep
Normal file
0
output/apps/elabftw/app/.gitkeep
Normal file
9
output/apps/elabftw/metadata.json
Normal file
9
output/apps/elabftw/metadata.json
Normal 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-02T17:19:00Z",
|
||||
"notes": "TODO: capture packaging notes"
|
||||
}
|
9
output/apps/elabftw/start.sh
Executable file
9
output/apps/elabftw/start.sh
Executable file
@@ -0,0 +1,9 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
# TODO: render configuration files from CLOUDRON_* environment variables
|
||||
# Example:
|
||||
# envsubst < /app/pkg/config.tmpl > /run/config.yaml
|
||||
|
||||
>&2 echo "start.sh for eLabFTW is not implemented yet."
|
||||
exit 1
|
14
output/apps/elabftw/test/smoke.sh
Executable file
14
output/apps/elabftw/test/smoke.sh
Executable file
@@ -0,0 +1,14 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
cloudron_app_origin=${CLOUDRON_APP_ORIGIN:-http://localhost}
|
||||
|
||||
http_code=$(curl --silent --show-error --output /tmp/smoke.log --write-out "%{http_code}" "${cloudron_app_origin}/")
|
||||
|
||||
if [[ "${http_code}" != "200" ]]; then
|
||||
>&2 echo "Smoke test failed for eLabFTW: expected HTTP 200 from ${cloudron_app_origin}/, got ${http_code}"
|
||||
>&2 cat /tmp/smoke.log
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Smoke test placeholder passed for eLabFTW"
|
27
output/apps/fleetdm-fleet/CloudronManifest.json
Normal file
27
output/apps/fleetdm-fleet/CloudronManifest.json
Normal file
@@ -0,0 +1,27 @@
|
||||
{
|
||||
"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": "/",
|
||||
"httpPort": 3000,
|
||||
"memoryLimit": "512M",
|
||||
"addons": {
|
||||
"localstorage": {}
|
||||
},
|
||||
"optionalAddons": {
|
||||
"postgresql": {},
|
||||
"redis": {},
|
||||
"mysql": {},
|
||||
"mongodb": {},
|
||||
"sendmail": {}
|
||||
}
|
||||
}
|
39
output/apps/fleetdm-fleet/Dockerfile
Normal file
39
output/apps/fleetdm-fleet/Dockerfile
Normal file
@@ -0,0 +1,39 @@
|
||||
# syntax=docker/dockerfile:1.6
|
||||
|
||||
ARG APP_VERSION=latest
|
||||
|
||||
FROM cloudron/base:5.0.0 AS builder
|
||||
WORKDIR /build
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# TODO: Fetch and build FleetDM Fleet
|
||||
# Example:
|
||||
# RUN git clone --depth 1 --branch "${APP_VERSION}" https://github.com/fleetdm/fleet.git source \
|
||||
# && cd source \
|
||||
# && npm ci \
|
||||
# && npm run build
|
||||
# -----------------------------------------------------------------------------
|
||||
|
||||
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"
|
||||
|
||||
ENV APP_VERSION=${APP_VERSION}
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# TODO: Copy build artefacts from the builder stage
|
||||
# COPY --from=builder /build/source/dist /app/code
|
||||
# -----------------------------------------------------------------------------
|
||||
|
||||
COPY ./app /app/code
|
||||
COPY ./start.sh /app/pkg/start.sh
|
||||
COPY ./test /app/pkg/test
|
||||
|
||||
RUN chmod +x /app/pkg/start.sh /app/pkg/test/smoke.sh \
|
||||
&& mkdir -p /app/data \
|
||||
&& chown -R cloudron:cloudron /app
|
||||
|
||||
USER cloudron
|
||||
WORKDIR /app/code
|
||||
|
||||
CMD ["/app/pkg/start.sh"]
|
20
output/apps/fleetdm-fleet/README.md
Normal file
20
output/apps/fleetdm-fleet/README.md
Normal 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
|
||||
- **Generated**: 2025-10-02T17:19:00Z UTC
|
||||
|
||||
## Packaging Checklist
|
||||
|
||||
1. Map upstream services (databases, caches, workers) to Cloudron addons; remove unused entries from `optionalAddons` and enable required ones under `addons`.
|
||||
2. Implement the multi-stage build in `Dockerfile` to fetch/compile the correct release of FleetDM Fleet.
|
||||
3. Update `start.sh` to configure the app from Cloudron environment variables and launch the primary process.
|
||||
4. Replace the placeholder health checks and smoke test with real coverage.
|
||||
5. Complete `CloudronManifest.json` (tagline, description, versioning, resource limits, ingress, TCP ports, etc.).
|
||||
6. Document manual configuration steps, migrations, and known gaps below.
|
||||
|
||||
## Notes
|
||||
|
||||
- Populate the `app/` directory with runtime overlays or artifacts generated during the build stage.
|
||||
- Use the shared packaging container (`output/docker/packager`) for `cloudron build/install` to keep the host clean.
|
||||
- Record decisions and operational requirements under `output/docs/apps/fleetdm-fleet/` as work progresses.
|
0
output/apps/fleetdm-fleet/app/.gitkeep
Normal file
0
output/apps/fleetdm-fleet/app/.gitkeep
Normal file
9
output/apps/fleetdm-fleet/metadata.json
Normal file
9
output/apps/fleetdm-fleet/metadata.json
Normal 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-02T17:19:00Z",
|
||||
"notes": "TODO: capture packaging notes"
|
||||
}
|
9
output/apps/fleetdm-fleet/start.sh
Executable file
9
output/apps/fleetdm-fleet/start.sh
Executable file
@@ -0,0 +1,9 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
# TODO: render configuration files from CLOUDRON_* environment variables
|
||||
# Example:
|
||||
# envsubst < /app/pkg/config.tmpl > /run/config.yaml
|
||||
|
||||
>&2 echo "start.sh for FleetDM Fleet is not implemented yet."
|
||||
exit 1
|
14
output/apps/fleetdm-fleet/test/smoke.sh
Executable file
14
output/apps/fleetdm-fleet/test/smoke.sh
Executable file
@@ -0,0 +1,14 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
cloudron_app_origin=${CLOUDRON_APP_ORIGIN:-http://localhost}
|
||||
|
||||
http_code=$(curl --silent --show-error --output /tmp/smoke.log --write-out "%{http_code}" "${cloudron_app_origin}/")
|
||||
|
||||
if [[ "${http_code}" != "200" ]]; then
|
||||
>&2 echo "Smoke test failed for FleetDM Fleet: expected HTTP 200 from ${cloudron_app_origin}/, got ${http_code}"
|
||||
>&2 cat /tmp/smoke.log
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Smoke test placeholder passed for FleetDM Fleet"
|
27
output/apps/fonoster/CloudronManifest.json
Normal file
27
output/apps/fonoster/CloudronManifest.json
Normal file
@@ -0,0 +1,27 @@
|
||||
{
|
||||
"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": "/",
|
||||
"httpPort": 3000,
|
||||
"memoryLimit": "512M",
|
||||
"addons": {
|
||||
"localstorage": {}
|
||||
},
|
||||
"optionalAddons": {
|
||||
"postgresql": {},
|
||||
"redis": {},
|
||||
"mysql": {},
|
||||
"mongodb": {},
|
||||
"sendmail": {}
|
||||
}
|
||||
}
|
39
output/apps/fonoster/Dockerfile
Normal file
39
output/apps/fonoster/Dockerfile
Normal file
@@ -0,0 +1,39 @@
|
||||
# syntax=docker/dockerfile:1.6
|
||||
|
||||
ARG APP_VERSION=latest
|
||||
|
||||
FROM cloudron/base:5.0.0 AS builder
|
||||
WORKDIR /build
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# TODO: Fetch and build Fonoster
|
||||
# Example:
|
||||
# RUN git clone --depth 1 --branch "${APP_VERSION}" https://github.com/fonoster/fonoster.git source \
|
||||
# && cd source \
|
||||
# && npm ci \
|
||||
# && npm run build
|
||||
# -----------------------------------------------------------------------------
|
||||
|
||||
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"
|
||||
|
||||
ENV APP_VERSION=${APP_VERSION}
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# TODO: Copy build artefacts from the builder stage
|
||||
# COPY --from=builder /build/source/dist /app/code
|
||||
# -----------------------------------------------------------------------------
|
||||
|
||||
COPY ./app /app/code
|
||||
COPY ./start.sh /app/pkg/start.sh
|
||||
COPY ./test /app/pkg/test
|
||||
|
||||
RUN chmod +x /app/pkg/start.sh /app/pkg/test/smoke.sh \
|
||||
&& mkdir -p /app/data \
|
||||
&& chown -R cloudron:cloudron /app
|
||||
|
||||
USER cloudron
|
||||
WORKDIR /app/code
|
||||
|
||||
CMD ["/app/pkg/start.sh"]
|
20
output/apps/fonoster/README.md
Normal file
20
output/apps/fonoster/README.md
Normal file
@@ -0,0 +1,20 @@
|
||||
# Fonoster on Cloudron
|
||||
|
||||
- **Upstream repository**: https://github.com/fonoster/fonoster.git
|
||||
- **Implementation issue**: https://projects.knownelement.com/issues/227
|
||||
- **Generated**: 2025-10-02T17:19:00Z UTC
|
||||
|
||||
## Packaging Checklist
|
||||
|
||||
1. Map upstream services (databases, caches, workers) to Cloudron addons; remove unused entries from `optionalAddons` and enable required ones under `addons`.
|
||||
2. Implement the multi-stage build in `Dockerfile` to fetch/compile the correct release of Fonoster.
|
||||
3. Update `start.sh` to configure the app from Cloudron environment variables and launch the primary process.
|
||||
4. Replace the placeholder health checks and smoke test with real coverage.
|
||||
5. Complete `CloudronManifest.json` (tagline, description, versioning, resource limits, ingress, TCP ports, etc.).
|
||||
6. Document manual configuration steps, migrations, and known gaps below.
|
||||
|
||||
## Notes
|
||||
|
||||
- Populate the `app/` directory with runtime overlays or artifacts generated during the build stage.
|
||||
- Use the shared packaging container (`output/docker/packager`) for `cloudron build/install` to keep the host clean.
|
||||
- Record decisions and operational requirements under `output/docs/apps/fonoster/` as work progresses.
|
0
output/apps/fonoster/app/.gitkeep
Normal file
0
output/apps/fonoster/app/.gitkeep
Normal file
9
output/apps/fonoster/metadata.json
Normal file
9
output/apps/fonoster/metadata.json
Normal 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-02T17:19:00Z",
|
||||
"notes": "TODO: capture packaging notes"
|
||||
}
|
9
output/apps/fonoster/start.sh
Executable file
9
output/apps/fonoster/start.sh
Executable file
@@ -0,0 +1,9 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
# TODO: render configuration files from CLOUDRON_* environment variables
|
||||
# Example:
|
||||
# envsubst < /app/pkg/config.tmpl > /run/config.yaml
|
||||
|
||||
>&2 echo "start.sh for Fonoster is not implemented yet."
|
||||
exit 1
|
14
output/apps/fonoster/test/smoke.sh
Executable file
14
output/apps/fonoster/test/smoke.sh
Executable file
@@ -0,0 +1,14 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
cloudron_app_origin=${CLOUDRON_APP_ORIGIN:-http://localhost}
|
||||
|
||||
http_code=$(curl --silent --show-error --output /tmp/smoke.log --write-out "%{http_code}" "${cloudron_app_origin}/")
|
||||
|
||||
if [[ "${http_code}" != "200" ]]; then
|
||||
>&2 echo "Smoke test failed for Fonoster: expected HTTP 200 from ${cloudron_app_origin}/, got ${http_code}"
|
||||
>&2 cat /tmp/smoke.log
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Smoke test placeholder passed for Fonoster"
|
27
output/apps/grist/CloudronManifest.json
Normal file
27
output/apps/grist/CloudronManifest.json
Normal file
@@ -0,0 +1,27 @@
|
||||
{
|
||||
"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": "/",
|
||||
"httpPort": 3000,
|
||||
"memoryLimit": "512M",
|
||||
"addons": {
|
||||
"localstorage": {}
|
||||
},
|
||||
"optionalAddons": {
|
||||
"postgresql": {},
|
||||
"redis": {},
|
||||
"mysql": {},
|
||||
"mongodb": {},
|
||||
"sendmail": {}
|
||||
}
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user