Scaffold Cloudron packaging workspace

This commit is contained in:
2025-10-02 13:39:36 -05:00
parent 482d4ff1b8
commit fe0ade1dd9
366 changed files with 4035 additions and 2493 deletions

View File

@@ -12,9 +12,16 @@
"version": "0.1.0",
"tags": ["custom", "known-element"],
"healthCheckPath": "/",
"memoryLimit": 536870912,
"httpPort": 3000,
"memoryLimit": "512M",
"addons": {
"localstorage": {}
},
"optionalAddons": {
"postgresql": {},
"redis": {},
"mysql": {},
"mongodb": {},
"sendmail": {}
}
}

View File

@@ -1,21 +1,38 @@
# syntax=docker/dockerfile:1
FROM cloudron/base:5.0.0
# 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"
ARG APP_VERSION
ENV APP_VERSION=${APP_VERSION:-latest}
ENV APP_VERSION=${APP_VERSION}
# -----------------------------------------------------------------------------
# TODO: Copy build artefacts from the builder stage
# COPY --from=builder /build/source/dist /app/code
# -----------------------------------------------------------------------------
# Copy application source into image at build time
# Replace this with a multi-stage build if upstream provides Docker images.
COPY ./app /app/code
# Copy start script and make it executable
COPY ./start.sh /app/pkg/start.sh
RUN chmod +x /app/pkg/start.sh
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
# Cloudron expects all processes to run as cloudron user
USER cloudron
WORKDIR /app/code

View File

@@ -2,19 +2,19 @@
- **Upstream repository**: https://github.com/apache/apisix.git
- **Implementation issue**: https://projects.knownelement.com/issues/179
- **Status**: Draft scaffolding generated on $(date -u +"%Y-%m-%dT%H:%M:%SZ")
- **Generated**: 2025-10-02T17:19:00Z UTC
## Packaging Checklist
1. Review upstream deployment requirements and map them to Cloudron services (database, cache, object storage, workers).
2. Update `Dockerfile` with the correct build steps and runtime dependencies.
3. Implement `start.sh` to configure the app from Cloudron-provided environment variables and launch the primary process.
4. Edit `CloudronManifest.json` with accurate metadata, permissions, ports, addons, and health checks.
5. Add integration and smoke tests under `test/` to validate the package.
6. Document manual configuration steps, migration requirements, and known gaps in this README.
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
- Replace the placeholder long-running process in `start.sh`.
- Populate the `app/` directory with the application build artefacts or git submodules.
- Use the shared packaging container (`docker/packager`) to run `cloudron build` and `cloudron install` so the host remains clean.
- Populate the `app/` directory with runtime overlays or artifacts generated during the build stage.
- Use the shared packaging container (`docker/packager`) for `cloudron build/install` to keep the host clean.
- Record decisions and operational requirements under `docs/apps/apache-apisix/` as work progresses.

View File

@@ -4,6 +4,6 @@
"issue": "https://projects.knownelement.com/issues/179",
"repo": "https://github.com/apache/apisix.git",
"additionalRepos": [],
"created": "2025-10-02T16:46:49Z",
"created": "2025-10-02T17:19:00Z",
"notes": "TODO: capture packaging notes"
}
}

View File

@@ -1,8 +1,9 @@
#!/bin/bash
#!/usr/bin/env bash
set -euo pipefail
# Cloudron injects configuration via environment variables and files under /run
# Use this script to render config files and launch the upstream service.
# TODO: render configuration files from CLOUDRON_* environment variables
# Example:
# envsubst < /app/pkg/config.tmpl > /run/config.yaml
# TODO: Replace the command below with the correct process supervisor.
exec /bin/sh -c "echo 'Replace start.sh with application startup logic for Apache APISIX' && sleep infinity"
>&2 echo "start.sh for Apache APISIX is not implemented yet."
exit 1

View File

@@ -1,16 +1,14 @@
#!/bin/bash
#!/usr/bin/env bash
set -euo pipefail
# Basic container reachability check executed inside the packaging container.
# Replace curl target with an endpoint exposed by the app once the package is functional.
cloudron_app_url=${CLOUDRON_APP_ORIGIN:-"http://localhost"}
cloudron_app_origin=${CLOUDRON_APP_ORIGIN:-http://localhost}
http_code=$(curl -s -o /tmp/smoke.log -w "%{http_code}" "${cloudron_app_url}")
http_code=$(curl --silent --show-error --output /tmp/smoke.log --write-out "%{http_code}" "${cloudron_app_origin}/")
if [[ "${http_code}" != "200" ]]; then
echo "Unexpected HTTP status: ${http_code}" >&2
cat /tmp/smoke.log >&2
>&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 passed"
echo "Smoke test placeholder passed for Apache APISIX"

View File

@@ -12,9 +12,16 @@
"version": "0.1.0",
"tags": ["custom", "known-element"],
"healthCheckPath": "/",
"memoryLimit": 536870912,
"httpPort": 3000,
"memoryLimit": "512M",
"addons": {
"localstorage": {}
},
"optionalAddons": {
"postgresql": {},
"redis": {},
"mysql": {},
"mongodb": {},
"sendmail": {}
}
}

View File

@@ -1,21 +1,38 @@
# syntax=docker/dockerfile:1
FROM cloudron/base:5.0.0
# 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"
ARG APP_VERSION
ENV APP_VERSION=${APP_VERSION:-latest}
ENV APP_VERSION=${APP_VERSION}
# -----------------------------------------------------------------------------
# TODO: Copy build artefacts from the builder stage
# COPY --from=builder /build/source/dist /app/code
# -----------------------------------------------------------------------------
# Copy application source into image at build time
# Replace this with a multi-stage build if upstream provides Docker images.
COPY ./app /app/code
# Copy start script and make it executable
COPY ./start.sh /app/pkg/start.sh
RUN chmod +x /app/pkg/start.sh
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
# Cloudron expects all processes to run as cloudron user
USER cloudron
WORKDIR /app/code

View File

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

View File

@@ -4,6 +4,6 @@
"issue": "https://projects.knownelement.com/issues/278",
"repo": "https://github.com/opulo-inc/autobom.git",
"additionalRepos": [],
"created": "2025-10-02T16:46:49Z",
"created": "2025-10-02T17:19:01Z",
"notes": "TODO: capture packaging notes"
}
}

View File

@@ -1,8 +1,9 @@
#!/bin/bash
#!/usr/bin/env bash
set -euo pipefail
# Cloudron injects configuration via environment variables and files under /run
# Use this script to render config files and launch the upstream service.
# TODO: render configuration files from CLOUDRON_* environment variables
# Example:
# envsubst < /app/pkg/config.tmpl > /run/config.yaml
# TODO: Replace the command below with the correct process supervisor.
exec /bin/sh -c "echo 'Replace start.sh with application startup logic for Autobom' && sleep infinity"
>&2 echo "start.sh for Autobom is not implemented yet."
exit 1

View File

@@ -1,16 +1,14 @@
#!/bin/bash
#!/usr/bin/env bash
set -euo pipefail
# Basic container reachability check executed inside the packaging container.
# Replace curl target with an endpoint exposed by the app once the package is functional.
cloudron_app_url=${CLOUDRON_APP_ORIGIN:-"http://localhost"}
cloudron_app_origin=${CLOUDRON_APP_ORIGIN:-http://localhost}
http_code=$(curl -s -o /tmp/smoke.log -w "%{http_code}" "${cloudron_app_url}")
http_code=$(curl --silent --show-error --output /tmp/smoke.log --write-out "%{http_code}" "${cloudron_app_origin}/")
if [[ "${http_code}" != "200" ]]; then
echo "Unexpected HTTP status: ${http_code}" >&2
cat /tmp/smoke.log >&2
>&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 passed"
echo "Smoke test placeholder passed for Autobom"

View File

@@ -12,9 +12,16 @@
"version": "0.1.0",
"tags": ["custom", "known-element"],
"healthCheckPath": "/",
"memoryLimit": 536870912,
"httpPort": 3000,
"memoryLimit": "512M",
"addons": {
"localstorage": {}
},
"optionalAddons": {
"postgresql": {},
"redis": {},
"mysql": {},
"mongodb": {},
"sendmail": {}
}
}

View File

@@ -1,21 +1,38 @@
# syntax=docker/dockerfile:1
FROM cloudron/base:5.0.0
# 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"
ARG APP_VERSION
ENV APP_VERSION=${APP_VERSION:-latest}
ENV APP_VERSION=${APP_VERSION}
# -----------------------------------------------------------------------------
# TODO: Copy build artefacts from the builder stage
# COPY --from=builder /build/source/dist /app/code
# -----------------------------------------------------------------------------
# Copy application source into image at build time
# Replace this with a multi-stage build if upstream provides Docker images.
COPY ./app /app/code
# Copy start script and make it executable
COPY ./start.sh /app/pkg/start.sh
RUN chmod +x /app/pkg/start.sh
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
# Cloudron expects all processes to run as cloudron user
USER cloudron
WORKDIR /app/code

View File

@@ -2,19 +2,19 @@
- **Upstream repository**: https://github.com/chirpstack/chirpstack.git
- **Implementation issue**: https://projects.knownelement.com/issues/184
- **Status**: Draft scaffolding generated on $(date -u +"%Y-%m-%dT%H:%M:%SZ")
- **Generated**: 2025-10-02T17:19:00Z UTC
## Packaging Checklist
1. Review upstream deployment requirements and map them to Cloudron services (database, cache, object storage, workers).
2. Update `Dockerfile` with the correct build steps and runtime dependencies.
3. Implement `start.sh` to configure the app from Cloudron-provided environment variables and launch the primary process.
4. Edit `CloudronManifest.json` with accurate metadata, permissions, ports, addons, and health checks.
5. Add integration and smoke tests under `test/` to validate the package.
6. Document manual configuration steps, migration requirements, and known gaps in this README.
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
- Replace the placeholder long-running process in `start.sh`.
- Populate the `app/` directory with the application build artefacts or git submodules.
- Use the shared packaging container (`docker/packager`) to run `cloudron build` and `cloudron install` so the host remains clean.
- Populate the `app/` directory with runtime overlays or artifacts generated during the build stage.
- Use the shared packaging container (`docker/packager`) for `cloudron build/install` to keep the host clean.
- Record decisions and operational requirements under `docs/apps/chirpstack/` as work progresses.

View File

@@ -4,6 +4,6 @@
"issue": "https://projects.knownelement.com/issues/184",
"repo": "https://github.com/chirpstack/chirpstack.git",
"additionalRepos": [],
"created": "2025-10-02T16:46:49Z",
"created": "2025-10-02T17:19:00Z",
"notes": "TODO: capture packaging notes"
}
}

View File

@@ -1,8 +1,9 @@
#!/bin/bash
#!/usr/bin/env bash
set -euo pipefail
# Cloudron injects configuration via environment variables and files under /run
# Use this script to render config files and launch the upstream service.
# TODO: render configuration files from CLOUDRON_* environment variables
# Example:
# envsubst < /app/pkg/config.tmpl > /run/config.yaml
# TODO: Replace the command below with the correct process supervisor.
exec /bin/sh -c "echo 'Replace start.sh with application startup logic for ChirpStack' && sleep infinity"
>&2 echo "start.sh for ChirpStack is not implemented yet."
exit 1

View File

@@ -1,16 +1,14 @@
#!/bin/bash
#!/usr/bin/env bash
set -euo pipefail
# Basic container reachability check executed inside the packaging container.
# Replace curl target with an endpoint exposed by the app once the package is functional.
cloudron_app_url=${CLOUDRON_APP_ORIGIN:-"http://localhost"}
cloudron_app_origin=${CLOUDRON_APP_ORIGIN:-http://localhost}
http_code=$(curl -s -o /tmp/smoke.log -w "%{http_code}" "${cloudron_app_url}")
http_code=$(curl --silent --show-error --output /tmp/smoke.log --write-out "%{http_code}" "${cloudron_app_origin}/")
if [[ "${http_code}" != "200" ]]; then
echo "Unexpected HTTP status: ${http_code}" >&2
cat /tmp/smoke.log >&2
>&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 passed"
echo "Smoke test placeholder passed for ChirpStack"

View File

@@ -12,9 +12,16 @@
"version": "0.1.0",
"tags": ["custom", "known-element"],
"healthCheckPath": "/",
"memoryLimit": 536870912,
"httpPort": 3000,
"memoryLimit": "512M",
"addons": {
"localstorage": {}
},
"optionalAddons": {
"postgresql": {},
"redis": {},
"mysql": {},
"mongodb": {},
"sendmail": {}
}
}

View File

@@ -1,21 +1,38 @@
# syntax=docker/dockerfile:1
FROM cloudron/base:5.0.0
# 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"
ARG APP_VERSION
ENV APP_VERSION=${APP_VERSION:-latest}
ENV APP_VERSION=${APP_VERSION}
# -----------------------------------------------------------------------------
# TODO: Copy build artefacts from the builder stage
# COPY --from=builder /build/source/dist /app/code
# -----------------------------------------------------------------------------
# Copy application source into image at build time
# Replace this with a multi-stage build if upstream provides Docker images.
COPY ./app /app/code
# Copy start script and make it executable
COPY ./start.sh /app/pkg/start.sh
RUN chmod +x /app/pkg/start.sh
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
# Cloudron expects all processes to run as cloudron user
USER cloudron
WORKDIR /app/code

View File

@@ -2,19 +2,19 @@
- **Upstream repository**: https://github.com/consuldemocracy/consuldemocracy.git
- **Implementation issue**: https://projects.knownelement.com/issues/189
- **Status**: Draft scaffolding generated on $(date -u +"%Y-%m-%dT%H:%M:%SZ")
- **Generated**: 2025-10-02T17:19:00Z UTC
## Packaging Checklist
1. Review upstream deployment requirements and map them to Cloudron services (database, cache, object storage, workers).
2. Update `Dockerfile` with the correct build steps and runtime dependencies.
3. Implement `start.sh` to configure the app from Cloudron-provided environment variables and launch the primary process.
4. Edit `CloudronManifest.json` with accurate metadata, permissions, ports, addons, and health checks.
5. Add integration and smoke tests under `test/` to validate the package.
6. Document manual configuration steps, migration requirements, and known gaps in this README.
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
- Replace the placeholder long-running process in `start.sh`.
- Populate the `app/` directory with the application build artefacts or git submodules.
- Use the shared packaging container (`docker/packager`) to run `cloudron build` and `cloudron install` so the host remains clean.
- Populate the `app/` directory with runtime overlays or artifacts generated during the build stage.
- Use the shared packaging container (`docker/packager`) for `cloudron build/install` to keep the host clean.
- Record decisions and operational requirements under `docs/apps/consuldemocracy/` as work progresses.

View File

@@ -4,6 +4,6 @@
"issue": "https://projects.knownelement.com/issues/189",
"repo": "https://github.com/consuldemocracy/consuldemocracy.git",
"additionalRepos": [],
"created": "2025-10-02T16:46:49Z",
"created": "2025-10-02T17:19:00Z",
"notes": "TODO: capture packaging notes"
}
}

View File

@@ -1,8 +1,9 @@
#!/bin/bash
#!/usr/bin/env bash
set -euo pipefail
# Cloudron injects configuration via environment variables and files under /run
# Use this script to render config files and launch the upstream service.
# TODO: render configuration files from CLOUDRON_* environment variables
# Example:
# envsubst < /app/pkg/config.tmpl > /run/config.yaml
# TODO: Replace the command below with the correct process supervisor.
exec /bin/sh -c "echo 'Replace start.sh with application startup logic for CONSUL Democracy' && sleep infinity"
>&2 echo "start.sh for CONSUL Democracy is not implemented yet."
exit 1

View File

@@ -1,16 +1,14 @@
#!/bin/bash
#!/usr/bin/env bash
set -euo pipefail
# Basic container reachability check executed inside the packaging container.
# Replace curl target with an endpoint exposed by the app once the package is functional.
cloudron_app_url=${CLOUDRON_APP_ORIGIN:-"http://localhost"}
cloudron_app_origin=${CLOUDRON_APP_ORIGIN:-http://localhost}
http_code=$(curl -s -o /tmp/smoke.log -w "%{http_code}" "${cloudron_app_url}")
http_code=$(curl --silent --show-error --output /tmp/smoke.log --write-out "%{http_code}" "${cloudron_app_origin}/")
if [[ "${http_code}" != "200" ]]; then
echo "Unexpected HTTP status: ${http_code}" >&2
cat /tmp/smoke.log >&2
>&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 passed"
echo "Smoke test placeholder passed for CONSUL Democracy"

View File

@@ -12,9 +12,16 @@
"version": "0.1.0",
"tags": ["custom", "known-element"],
"healthCheckPath": "/",
"memoryLimit": 536870912,
"httpPort": 3000,
"memoryLimit": "512M",
"addons": {
"localstorage": {}
},
"optionalAddons": {
"postgresql": {},
"redis": {},
"mysql": {},
"mongodb": {},
"sendmail": {}
}
}

View File

@@ -1,21 +1,38 @@
# syntax=docker/dockerfile:1
FROM cloudron/base:5.0.0
# 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)"
ARG APP_VERSION
ENV APP_VERSION=${APP_VERSION:-latest}
ENV APP_VERSION=${APP_VERSION}
# -----------------------------------------------------------------------------
# TODO: Copy build artefacts from the builder stage
# COPY --from=builder /build/source/dist /app/code
# -----------------------------------------------------------------------------
# Copy application source into image at build time
# Replace this with a multi-stage build if upstream provides Docker images.
COPY ./app /app/code
# Copy start script and make it executable
COPY ./start.sh /app/pkg/start.sh
RUN chmod +x /app/pkg/start.sh
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
# Cloudron expects all processes to run as cloudron user
USER cloudron
WORKDIR /app/code

View File

@@ -2,19 +2,19 @@
- **Upstream repository**: https://github.com/CraigChat/craig.git
- **Implementation issue**: https://projects.knownelement.com/issues/185
- **Status**: Draft scaffolding generated on $(date -u +"%Y-%m-%dT%H:%M:%SZ")
- **Generated**: 2025-10-02T17:19:00Z UTC
## Packaging Checklist
1. Review upstream deployment requirements and map them to Cloudron services (database, cache, object storage, workers).
2. Update `Dockerfile` with the correct build steps and runtime dependencies.
3. Implement `start.sh` to configure the app from Cloudron-provided environment variables and launch the primary process.
4. Edit `CloudronManifest.json` with accurate metadata, permissions, ports, addons, and health checks.
5. Add integration and smoke tests under `test/` to validate the package.
6. Document manual configuration steps, migration requirements, and known gaps in this README.
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
- Replace the placeholder long-running process in `start.sh`.
- Populate the `app/` directory with the application build artefacts or git submodules.
- Use the shared packaging container (`docker/packager`) to run `cloudron build` and `cloudron install` so the host remains clean.
- Populate the `app/` directory with runtime overlays or artifacts generated during the build stage.
- Use the shared packaging container (`docker/packager`) for `cloudron build/install` to keep the host clean.
- Record decisions and operational requirements under `docs/apps/craig/` as work progresses.

View File

@@ -4,6 +4,6 @@
"issue": "https://projects.knownelement.com/issues/185",
"repo": "https://github.com/CraigChat/craig.git",
"additionalRepos": [],
"created": "2025-10-02T16:46:49Z",
"created": "2025-10-02T17:19:00Z",
"notes": "TODO: capture packaging notes"
}
}

View File

@@ -1,8 +1,9 @@
#!/bin/bash
#!/usr/bin/env bash
set -euo pipefail
# Cloudron injects configuration via environment variables and files under /run
# Use this script to render config files and launch the upstream service.
# TODO: render configuration files from CLOUDRON_* environment variables
# Example:
# envsubst < /app/pkg/config.tmpl > /run/config.yaml
# TODO: Replace the command below with the correct process supervisor.
exec /bin/sh -c "echo 'Replace start.sh with application startup logic for Craig (FOSS Discord Recorder)' && sleep infinity"
>&2 echo "start.sh for Craig (FOSS Discord Recorder) is not implemented yet."
exit 1

View File

@@ -1,16 +1,14 @@
#!/bin/bash
#!/usr/bin/env bash
set -euo pipefail
# Basic container reachability check executed inside the packaging container.
# Replace curl target with an endpoint exposed by the app once the package is functional.
cloudron_app_url=${CLOUDRON_APP_ORIGIN:-"http://localhost"}
cloudron_app_origin=${CLOUDRON_APP_ORIGIN:-http://localhost}
http_code=$(curl -s -o /tmp/smoke.log -w "%{http_code}" "${cloudron_app_url}")
http_code=$(curl --silent --show-error --output /tmp/smoke.log --write-out "%{http_code}" "${cloudron_app_origin}/")
if [[ "${http_code}" != "200" ]]; then
echo "Unexpected HTTP status: ${http_code}" >&2
cat /tmp/smoke.log >&2
>&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 passed"
echo "Smoke test placeholder passed for Craig (FOSS Discord Recorder)"

View File

@@ -12,9 +12,16 @@
"version": "0.1.0",
"tags": ["custom", "known-element"],
"healthCheckPath": "/",
"memoryLimit": 536870912,
"httpPort": 3000,
"memoryLimit": "512M",
"addons": {
"localstorage": {}
},
"optionalAddons": {
"postgresql": {},
"redis": {},
"mysql": {},
"mongodb": {},
"sendmail": {}
}
}

View File

@@ -1,21 +1,38 @@
# syntax=docker/dockerfile:1
FROM cloudron/base:5.0.0
# 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"
ARG APP_VERSION
ENV APP_VERSION=${APP_VERSION:-latest}
ENV APP_VERSION=${APP_VERSION}
# -----------------------------------------------------------------------------
# TODO: Copy build artefacts from the builder stage
# COPY --from=builder /build/source/dist /app/code
# -----------------------------------------------------------------------------
# Copy application source into image at build time
# Replace this with a multi-stage build if upstream provides Docker images.
COPY ./app /app/code
# Copy start script and make it executable
COPY ./start.sh /app/pkg/start.sh
RUN chmod +x /app/pkg/start.sh
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
# Cloudron expects all processes to run as cloudron user
USER cloudron
WORKDIR /app/code

View File

@@ -2,19 +2,19 @@
- **Upstream repository**: https://github.com/kazhuravlev/database-gateway.git
- **Implementation issue**: https://projects.knownelement.com/issues/273
- **Status**: Draft scaffolding generated on $(date -u +"%Y-%m-%dT%H:%M:%SZ")
- **Generated**: 2025-10-02T17:19:00Z UTC
## Packaging Checklist
1. Review upstream deployment requirements and map them to Cloudron services (database, cache, object storage, workers).
2. Update `Dockerfile` with the correct build steps and runtime dependencies.
3. Implement `start.sh` to configure the app from Cloudron-provided environment variables and launch the primary process.
4. Edit `CloudronManifest.json` with accurate metadata, permissions, ports, addons, and health checks.
5. Add integration and smoke tests under `test/` to validate the package.
6. Document manual configuration steps, migration requirements, and known gaps in this README.
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
- Replace the placeholder long-running process in `start.sh`.
- Populate the `app/` directory with the application build artefacts or git submodules.
- Use the shared packaging container (`docker/packager`) to run `cloudron build` and `cloudron install` so the host remains clean.
- Populate the `app/` directory with runtime overlays or artifacts generated during the build stage.
- Use the shared packaging container (`docker/packager`) for `cloudron build/install` to keep the host clean.
- Record decisions and operational requirements under `docs/apps/database-gateway/` as work progresses.

View File

@@ -4,6 +4,6 @@
"issue": "https://projects.knownelement.com/issues/273",
"repo": "https://github.com/kazhuravlev/database-gateway.git",
"additionalRepos": [],
"created": "2025-10-02T16:46:49Z",
"created": "2025-10-02T17:19:00Z",
"notes": "TODO: capture packaging notes"
}
}

View File

@@ -1,8 +1,9 @@
#!/bin/bash
#!/usr/bin/env bash
set -euo pipefail
# Cloudron injects configuration via environment variables and files under /run
# Use this script to render config files and launch the upstream service.
# TODO: render configuration files from CLOUDRON_* environment variables
# Example:
# envsubst < /app/pkg/config.tmpl > /run/config.yaml
# TODO: Replace the command below with the correct process supervisor.
exec /bin/sh -c "echo 'Replace start.sh with application startup logic for Database Gateway' && sleep infinity"
>&2 echo "start.sh for Database Gateway is not implemented yet."
exit 1

View File

@@ -1,16 +1,14 @@
#!/bin/bash
#!/usr/bin/env bash
set -euo pipefail
# Basic container reachability check executed inside the packaging container.
# Replace curl target with an endpoint exposed by the app once the package is functional.
cloudron_app_url=${CLOUDRON_APP_ORIGIN:-"http://localhost"}
cloudron_app_origin=${CLOUDRON_APP_ORIGIN:-http://localhost}
http_code=$(curl -s -o /tmp/smoke.log -w "%{http_code}" "${cloudron_app_url}")
http_code=$(curl --silent --show-error --output /tmp/smoke.log --write-out "%{http_code}" "${cloudron_app_origin}/")
if [[ "${http_code}" != "200" ]]; then
echo "Unexpected HTTP status: ${http_code}" >&2
cat /tmp/smoke.log >&2
>&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 passed"
echo "Smoke test placeholder passed for Database Gateway"

View File

@@ -12,9 +12,16 @@
"version": "0.1.0",
"tags": ["custom", "known-element"],
"healthCheckPath": "/",
"memoryLimit": 536870912,
"httpPort": 3000,
"memoryLimit": "512M",
"addons": {
"localstorage": {}
},
"optionalAddons": {
"postgresql": {},
"redis": {},
"mysql": {},
"mongodb": {},
"sendmail": {}
}
}

View File

@@ -1,21 +1,38 @@
# syntax=docker/dockerfile:1
FROM cloudron/base:5.0.0
# 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"
ARG APP_VERSION
ENV APP_VERSION=${APP_VERSION:-latest}
ENV APP_VERSION=${APP_VERSION}
# -----------------------------------------------------------------------------
# TODO: Copy build artefacts from the builder stage
# COPY --from=builder /build/source/dist /app/code
# -----------------------------------------------------------------------------
# Copy application source into image at build time
# Replace this with a multi-stage build if upstream provides Docker images.
COPY ./app /app/code
# Copy start script and make it executable
COPY ./start.sh /app/pkg/start.sh
RUN chmod +x /app/pkg/start.sh
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
# Cloudron expects all processes to run as cloudron user
USER cloudron
WORKDIR /app/code

View File

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

View File

@@ -4,6 +4,6 @@
"issue": "https://projects.knownelement.com/issues/309",
"repo": "https://github.com/datahub-project/datahub.git",
"additionalRepos": [],
"created": "2025-10-02T16:46:49Z",
"created": "2025-10-02T17:19:00Z",
"notes": "TODO: capture packaging notes"
}
}

View File

@@ -1,8 +1,9 @@
#!/bin/bash
#!/usr/bin/env bash
set -euo pipefail
# Cloudron injects configuration via environment variables and files under /run
# Use this script to render config files and launch the upstream service.
# TODO: render configuration files from CLOUDRON_* environment variables
# Example:
# envsubst < /app/pkg/config.tmpl > /run/config.yaml
# TODO: Replace the command below with the correct process supervisor.
exec /bin/sh -c "echo 'Replace start.sh with application startup logic for DataHub' && sleep infinity"
>&2 echo "start.sh for DataHub is not implemented yet."
exit 1

View File

@@ -1,16 +1,14 @@
#!/bin/bash
#!/usr/bin/env bash
set -euo pipefail
# Basic container reachability check executed inside the packaging container.
# Replace curl target with an endpoint exposed by the app once the package is functional.
cloudron_app_url=${CLOUDRON_APP_ORIGIN:-"http://localhost"}
cloudron_app_origin=${CLOUDRON_APP_ORIGIN:-http://localhost}
http_code=$(curl -s -o /tmp/smoke.log -w "%{http_code}" "${cloudron_app_url}")
http_code=$(curl --silent --show-error --output /tmp/smoke.log --write-out "%{http_code}" "${cloudron_app_origin}/")
if [[ "${http_code}" != "200" ]]; then
echo "Unexpected HTTP status: ${http_code}" >&2
cat /tmp/smoke.log >&2
>&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 passed"
echo "Smoke test placeholder passed for DataHub"

View File

@@ -12,9 +12,16 @@
"version": "0.1.0",
"tags": ["custom", "known-element"],
"healthCheckPath": "/",
"memoryLimit": 536870912,
"httpPort": 3000,
"memoryLimit": "512M",
"addons": {
"localstorage": {}
},
"optionalAddons": {
"postgresql": {},
"redis": {},
"mysql": {},
"mongodb": {},
"sendmail": {}
}
}

View File

@@ -1,21 +1,38 @@
# syntax=docker/dockerfile:1
FROM cloudron/base:5.0.0
# 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"
ARG APP_VERSION
ENV APP_VERSION=${APP_VERSION:-latest}
ENV APP_VERSION=${APP_VERSION}
# -----------------------------------------------------------------------------
# TODO: Copy build artefacts from the builder stage
# COPY --from=builder /build/source/dist /app/code
# -----------------------------------------------------------------------------
# Copy application source into image at build time
# Replace this with a multi-stage build if upstream provides Docker images.
COPY ./app /app/code
# Copy start script and make it executable
COPY ./start.sh /app/pkg/start.sh
RUN chmod +x /app/pkg/start.sh
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
# Cloudron expects all processes to run as cloudron user
USER cloudron
WORKDIR /app/code

View File

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

View File

@@ -4,6 +4,6 @@
"issue": "https://projects.knownelement.com/issues/277",
"repo": "https://github.com/jhpyle/docassemble.git",
"additionalRepos": [],
"created": "2025-10-02T16:46:49Z",
"created": "2025-10-02T17:19:00Z",
"notes": "TODO: capture packaging notes"
}
}

View File

@@ -1,8 +1,9 @@
#!/bin/bash
#!/usr/bin/env bash
set -euo pipefail
# Cloudron injects configuration via environment variables and files under /run
# Use this script to render config files and launch the upstream service.
# TODO: render configuration files from CLOUDRON_* environment variables
# Example:
# envsubst < /app/pkg/config.tmpl > /run/config.yaml
# TODO: Replace the command below with the correct process supervisor.
exec /bin/sh -c "echo 'Replace start.sh with application startup logic for Docassemble' && sleep infinity"
>&2 echo "start.sh for Docassemble is not implemented yet."
exit 1

View File

@@ -1,16 +1,14 @@
#!/bin/bash
#!/usr/bin/env bash
set -euo pipefail
# Basic container reachability check executed inside the packaging container.
# Replace curl target with an endpoint exposed by the app once the package is functional.
cloudron_app_url=${CLOUDRON_APP_ORIGIN:-"http://localhost"}
cloudron_app_origin=${CLOUDRON_APP_ORIGIN:-http://localhost}
http_code=$(curl -s -o /tmp/smoke.log -w "%{http_code}" "${cloudron_app_url}")
http_code=$(curl --silent --show-error --output /tmp/smoke.log --write-out "%{http_code}" "${cloudron_app_origin}/")
if [[ "${http_code}" != "200" ]]; then
echo "Unexpected HTTP status: ${http_code}" >&2
cat /tmp/smoke.log >&2
>&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 passed"
echo "Smoke test placeholder passed for Docassemble"

View File

@@ -12,9 +12,16 @@
"version": "0.1.0",
"tags": ["custom", "known-element"],
"healthCheckPath": "/",
"memoryLimit": 536870912,
"httpPort": 3000,
"memoryLimit": "512M",
"addons": {
"localstorage": {}
},
"optionalAddons": {
"postgresql": {},
"redis": {},
"mysql": {},
"mongodb": {},
"sendmail": {}
}
}

View File

@@ -1,21 +1,38 @@
# syntax=docker/dockerfile:1
FROM cloudron/base:5.0.0
# 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"
ARG APP_VERSION
ENV APP_VERSION=${APP_VERSION:-latest}
ENV APP_VERSION=${APP_VERSION}
# -----------------------------------------------------------------------------
# TODO: Copy build artefacts from the builder stage
# COPY --from=builder /build/source/dist /app/code
# -----------------------------------------------------------------------------
# Copy application source into image at build time
# Replace this with a multi-stage build if upstream provides Docker images.
COPY ./app /app/code
# Copy start script and make it executable
COPY ./start.sh /app/pkg/start.sh
RUN chmod +x /app/pkg/start.sh
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
# Cloudron expects all processes to run as cloudron user
USER cloudron
WORKDIR /app/code

View File

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

View File

@@ -4,6 +4,6 @@
"issue": "https://projects.knownelement.com/issues/271",
"repo": "https://github.com/thecatlady/docker-webhook",
"additionalRepos": [],
"created": "2025-10-02T16:46:49Z",
"created": "2025-10-02T17:19:00Z",
"notes": "TODO: capture packaging notes"
}
}

View File

@@ -1,8 +1,9 @@
#!/bin/bash
#!/usr/bin/env bash
set -euo pipefail
# Cloudron injects configuration via environment variables and files under /run
# Use this script to render config files and launch the upstream service.
# TODO: render configuration files from CLOUDRON_* environment variables
# Example:
# envsubst < /app/pkg/config.tmpl > /run/config.yaml
# TODO: Replace the command below with the correct process supervisor.
exec /bin/sh -c "echo 'Replace start.sh with application startup logic for docker-webhook' && sleep infinity"
>&2 echo "start.sh for docker-webhook is not implemented yet."
exit 1

View File

@@ -1,16 +1,14 @@
#!/bin/bash
#!/usr/bin/env bash
set -euo pipefail
# Basic container reachability check executed inside the packaging container.
# Replace curl target with an endpoint exposed by the app once the package is functional.
cloudron_app_url=${CLOUDRON_APP_ORIGIN:-"http://localhost"}
cloudron_app_origin=${CLOUDRON_APP_ORIGIN:-http://localhost}
http_code=$(curl -s -o /tmp/smoke.log -w "%{http_code}" "${cloudron_app_url}")
http_code=$(curl --silent --show-error --output /tmp/smoke.log --write-out "%{http_code}" "${cloudron_app_origin}/")
if [[ "${http_code}" != "200" ]]; then
echo "Unexpected HTTP status: ${http_code}" >&2
cat /tmp/smoke.log >&2
>&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 passed"
echo "Smoke test placeholder passed for docker-webhook"

View File

@@ -12,9 +12,16 @@
"version": "0.1.0",
"tags": ["custom", "known-element"],
"healthCheckPath": "/",
"memoryLimit": 536870912,
"httpPort": 3000,
"memoryLimit": "512M",
"addons": {
"localstorage": {}
},
"optionalAddons": {
"postgresql": {},
"redis": {},
"mysql": {},
"mongodb": {},
"sendmail": {}
}
}

View File

@@ -1,21 +1,38 @@
# syntax=docker/dockerfile:1
FROM cloudron/base:5.0.0
# 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"
ARG APP_VERSION
ENV APP_VERSION=${APP_VERSION:-latest}
ENV APP_VERSION=${APP_VERSION}
# -----------------------------------------------------------------------------
# TODO: Copy build artefacts from the builder stage
# COPY --from=builder /build/source/dist /app/code
# -----------------------------------------------------------------------------
# Copy application source into image at build time
# Replace this with a multi-stage build if upstream provides Docker images.
COPY ./app /app/code
# Copy start script and make it executable
COPY ./start.sh /app/pkg/start.sh
RUN chmod +x /app/pkg/start.sh
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
# Cloudron expects all processes to run as cloudron user
USER cloudron
WORKDIR /app/code

View File

@@ -2,19 +2,19 @@
- **Upstream repository**: https://github.com/jgraph/docker-drawio
- **Implementation issue**: https://projects.knownelement.com/issues/272
- **Status**: Draft scaffolding generated on $(date -u +"%Y-%m-%dT%H:%M:%SZ")
- **Generated**: 2025-10-02T17:19:01Z UTC
## Packaging Checklist
1. Review upstream deployment requirements and map them to Cloudron services (database, cache, object storage, workers).
2. Update `Dockerfile` with the correct build steps and runtime dependencies.
3. Implement `start.sh` to configure the app from Cloudron-provided environment variables and launch the primary process.
4. Edit `CloudronManifest.json` with accurate metadata, permissions, ports, addons, and health checks.
5. Add integration and smoke tests under `test/` to validate the package.
6. Document manual configuration steps, migration requirements, and known gaps in this README.
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
- Replace the placeholder long-running process in `start.sh`.
- Populate the `app/` directory with the application build artefacts or git submodules.
- Use the shared packaging container (`docker/packager`) to run `cloudron build` and `cloudron install` so the host remains clean.
- Populate the `app/` directory with runtime overlays or artifacts generated during the build stage.
- Use the shared packaging container (`docker/packager`) for `cloudron build/install` to keep the host clean.
- Record decisions and operational requirements under `docs/apps/drawio/` as work progresses.

View File

@@ -4,6 +4,6 @@
"issue": "https://projects.knownelement.com/issues/272",
"repo": "https://github.com/jgraph/docker-drawio",
"additionalRepos": [],
"created": "2025-10-02T16:46:49Z",
"created": "2025-10-02T17:19:01Z",
"notes": "TODO: capture packaging notes"
}
}

View File

@@ -1,8 +1,9 @@
#!/bin/bash
#!/usr/bin/env bash
set -euo pipefail
# Cloudron injects configuration via environment variables and files under /run
# Use this script to render config files and launch the upstream service.
# TODO: render configuration files from CLOUDRON_* environment variables
# Example:
# envsubst < /app/pkg/config.tmpl > /run/config.yaml
# TODO: Replace the command below with the correct process supervisor.
exec /bin/sh -c "echo 'Replace start.sh with application startup logic for draw.io' && sleep infinity"
>&2 echo "start.sh for draw.io is not implemented yet."
exit 1

View File

@@ -1,16 +1,14 @@
#!/bin/bash
#!/usr/bin/env bash
set -euo pipefail
# Basic container reachability check executed inside the packaging container.
# Replace curl target with an endpoint exposed by the app once the package is functional.
cloudron_app_url=${CLOUDRON_APP_ORIGIN:-"http://localhost"}
cloudron_app_origin=${CLOUDRON_APP_ORIGIN:-http://localhost}
http_code=$(curl -s -o /tmp/smoke.log -w "%{http_code}" "${cloudron_app_url}")
http_code=$(curl --silent --show-error --output /tmp/smoke.log --write-out "%{http_code}" "${cloudron_app_origin}/")
if [[ "${http_code}" != "200" ]]; then
echo "Unexpected HTTP status: ${http_code}" >&2
cat /tmp/smoke.log >&2
>&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 passed"
echo "Smoke test placeholder passed for draw.io"

View File

@@ -12,9 +12,16 @@
"version": "0.1.0",
"tags": ["custom", "known-element"],
"healthCheckPath": "/",
"memoryLimit": 536870912,
"httpPort": 3000,
"memoryLimit": "512M",
"addons": {
"localstorage": {}
},
"optionalAddons": {
"postgresql": {},
"redis": {},
"mysql": {},
"mongodb": {},
"sendmail": {}
}
}

View File

@@ -1,21 +1,38 @@
# syntax=docker/dockerfile:1
FROM cloudron/base:5.0.0
# 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"
ARG APP_VERSION
ENV APP_VERSION=${APP_VERSION:-latest}
ENV APP_VERSION=${APP_VERSION}
# -----------------------------------------------------------------------------
# TODO: Copy build artefacts from the builder stage
# COPY --from=builder /build/source/dist /app/code
# -----------------------------------------------------------------------------
# Copy application source into image at build time
# Replace this with a multi-stage build if upstream provides Docker images.
COPY ./app /app/code
# Copy start script and make it executable
COPY ./start.sh /app/pkg/start.sh
RUN chmod +x /app/pkg/start.sh
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
# Cloudron expects all processes to run as cloudron user
USER cloudron
WORKDIR /app/code

View File

@@ -2,19 +2,19 @@
- **Upstream repository**: https://github.com/wiredlush/easy-gate.git
- **Implementation issue**: https://projects.knownelement.com/issues/54
- **Status**: Draft scaffolding generated on $(date -u +"%Y-%m-%dT%H:%M:%SZ")
- **Generated**: 2025-10-02T17:19:00Z UTC
## Packaging Checklist
1. Review upstream deployment requirements and map them to Cloudron services (database, cache, object storage, workers).
2. Update `Dockerfile` with the correct build steps and runtime dependencies.
3. Implement `start.sh` to configure the app from Cloudron-provided environment variables and launch the primary process.
4. Edit `CloudronManifest.json` with accurate metadata, permissions, ports, addons, and health checks.
5. Add integration and smoke tests under `test/` to validate the package.
6. Document manual configuration steps, migration requirements, and known gaps in this README.
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
- Replace the placeholder long-running process in `start.sh`.
- Populate the `app/` directory with the application build artefacts or git submodules.
- Use the shared packaging container (`docker/packager`) to run `cloudron build` and `cloudron install` so the host remains clean.
- Populate the `app/` directory with runtime overlays or artifacts generated during the build stage.
- Use the shared packaging container (`docker/packager`) for `cloudron build/install` to keep the host clean.
- Record decisions and operational requirements under `docs/apps/easy-gate/` as work progresses.

View File

@@ -4,6 +4,6 @@
"issue": "https://projects.knownelement.com/issues/54",
"repo": "https://github.com/wiredlush/easy-gate.git",
"additionalRepos": [],
"created": "2025-10-02T16:46:49Z",
"created": "2025-10-02T17:19:00Z",
"notes": "TODO: capture packaging notes"
}
}

View File

@@ -1,8 +1,9 @@
#!/bin/bash
#!/usr/bin/env bash
set -euo pipefail
# Cloudron injects configuration via environment variables and files under /run
# Use this script to render config files and launch the upstream service.
# TODO: render configuration files from CLOUDRON_* environment variables
# Example:
# envsubst < /app/pkg/config.tmpl > /run/config.yaml
# TODO: Replace the command below with the correct process supervisor.
exec /bin/sh -c "echo 'Replace start.sh with application startup logic for Easy Gate' && sleep infinity"
>&2 echo "start.sh for Easy Gate is not implemented yet."
exit 1

View File

@@ -1,16 +1,14 @@
#!/bin/bash
#!/usr/bin/env bash
set -euo pipefail
# Basic container reachability check executed inside the packaging container.
# Replace curl target with an endpoint exposed by the app once the package is functional.
cloudron_app_url=${CLOUDRON_APP_ORIGIN:-"http://localhost"}
cloudron_app_origin=${CLOUDRON_APP_ORIGIN:-http://localhost}
http_code=$(curl -s -o /tmp/smoke.log -w "%{http_code}" "${cloudron_app_url}")
http_code=$(curl --silent --show-error --output /tmp/smoke.log --write-out "%{http_code}" "${cloudron_app_origin}/")
if [[ "${http_code}" != "200" ]]; then
echo "Unexpected HTTP status: ${http_code}" >&2
cat /tmp/smoke.log >&2
>&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 passed"
echo "Smoke test placeholder passed for Easy Gate"

View File

@@ -12,9 +12,16 @@
"version": "0.1.0",
"tags": ["custom", "known-element"],
"healthCheckPath": "/",
"memoryLimit": 536870912,
"httpPort": 3000,
"memoryLimit": "512M",
"addons": {
"localstorage": {}
},
"optionalAddons": {
"postgresql": {},
"redis": {},
"mysql": {},
"mongodb": {},
"sendmail": {}
}
}

View File

@@ -1,21 +1,38 @@
# syntax=docker/dockerfile:1
FROM cloudron/base:5.0.0
# 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"
ARG APP_VERSION
ENV APP_VERSION=${APP_VERSION:-latest}
ENV APP_VERSION=${APP_VERSION}
# -----------------------------------------------------------------------------
# TODO: Copy build artefacts from the builder stage
# COPY --from=builder /build/source/dist /app/code
# -----------------------------------------------------------------------------
# Copy application source into image at build time
# Replace this with a multi-stage build if upstream provides Docker images.
COPY ./app /app/code
# Copy start script and make it executable
COPY ./start.sh /app/pkg/start.sh
RUN chmod +x /app/pkg/start.sh
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
# Cloudron expects all processes to run as cloudron user
USER cloudron
WORKDIR /app/code

View File

@@ -2,19 +2,19 @@
- **Upstream repository**: https://github.com/elabftw/elabftw.git
- **Implementation issue**: https://projects.knownelement.com/issues/188
- **Status**: Draft scaffolding generated on $(date -u +"%Y-%m-%dT%H:%M:%SZ")
- **Generated**: 2025-10-02T17:19:00Z UTC
## Packaging Checklist
1. Review upstream deployment requirements and map them to Cloudron services (database, cache, object storage, workers).
2. Update `Dockerfile` with the correct build steps and runtime dependencies.
3. Implement `start.sh` to configure the app from Cloudron-provided environment variables and launch the primary process.
4. Edit `CloudronManifest.json` with accurate metadata, permissions, ports, addons, and health checks.
5. Add integration and smoke tests under `test/` to validate the package.
6. Document manual configuration steps, migration requirements, and known gaps in this README.
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
- Replace the placeholder long-running process in `start.sh`.
- Populate the `app/` directory with the application build artefacts or git submodules.
- Use the shared packaging container (`docker/packager`) to run `cloudron build` and `cloudron install` so the host remains clean.
- Populate the `app/` directory with runtime overlays or artifacts generated during the build stage.
- Use the shared packaging container (`docker/packager`) for `cloudron build/install` to keep the host clean.
- Record decisions and operational requirements under `docs/apps/elabftw/` as work progresses.

View File

@@ -4,6 +4,6 @@
"issue": "https://projects.knownelement.com/issues/188",
"repo": "https://github.com/elabftw/elabftw.git",
"additionalRepos": [],
"created": "2025-10-02T16:46:49Z",
"created": "2025-10-02T17:19:00Z",
"notes": "TODO: capture packaging notes"
}
}

View File

@@ -1,8 +1,9 @@
#!/bin/bash
#!/usr/bin/env bash
set -euo pipefail
# Cloudron injects configuration via environment variables and files under /run
# Use this script to render config files and launch the upstream service.
# TODO: render configuration files from CLOUDRON_* environment variables
# Example:
# envsubst < /app/pkg/config.tmpl > /run/config.yaml
# TODO: Replace the command below with the correct process supervisor.
exec /bin/sh -c "echo 'Replace start.sh with application startup logic for eLabFTW' && sleep infinity"
>&2 echo "start.sh for eLabFTW is not implemented yet."
exit 1

View File

@@ -1,16 +1,14 @@
#!/bin/bash
#!/usr/bin/env bash
set -euo pipefail
# Basic container reachability check executed inside the packaging container.
# Replace curl target with an endpoint exposed by the app once the package is functional.
cloudron_app_url=${CLOUDRON_APP_ORIGIN:-"http://localhost"}
cloudron_app_origin=${CLOUDRON_APP_ORIGIN:-http://localhost}
http_code=$(curl -s -o /tmp/smoke.log -w "%{http_code}" "${cloudron_app_url}")
http_code=$(curl --silent --show-error --output /tmp/smoke.log --write-out "%{http_code}" "${cloudron_app_origin}/")
if [[ "${http_code}" != "200" ]]; then
echo "Unexpected HTTP status: ${http_code}" >&2
cat /tmp/smoke.log >&2
>&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 passed"
echo "Smoke test placeholder passed for eLabFTW"

View File

@@ -12,9 +12,16 @@
"version": "0.1.0",
"tags": ["custom", "known-element"],
"healthCheckPath": "/",
"memoryLimit": 536870912,
"httpPort": 3000,
"memoryLimit": "512M",
"addons": {
"localstorage": {}
},
"optionalAddons": {
"postgresql": {},
"redis": {},
"mysql": {},
"mongodb": {},
"sendmail": {}
}
}

View File

@@ -1,21 +1,38 @@
# syntax=docker/dockerfile:1
FROM cloudron/base:5.0.0
# 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"
ARG APP_VERSION
ENV APP_VERSION=${APP_VERSION:-latest}
ENV APP_VERSION=${APP_VERSION}
# -----------------------------------------------------------------------------
# TODO: Copy build artefacts from the builder stage
# COPY --from=builder /build/source/dist /app/code
# -----------------------------------------------------------------------------
# Copy application source into image at build time
# Replace this with a multi-stage build if upstream provides Docker images.
COPY ./app /app/code
# Copy start script and make it executable
COPY ./start.sh /app/pkg/start.sh
RUN chmod +x /app/pkg/start.sh
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
# Cloudron expects all processes to run as cloudron user
USER cloudron
WORKDIR /app/code

View File

@@ -2,19 +2,19 @@
- **Upstream repository**: https://github.com/fleetdm/fleet.git
- **Implementation issue**: https://projects.knownelement.com/issues/195
- **Status**: Draft scaffolding generated on $(date -u +"%Y-%m-%dT%H:%M:%SZ")
- **Generated**: 2025-10-02T17:19:00Z UTC
## Packaging Checklist
1. Review upstream deployment requirements and map them to Cloudron services (database, cache, object storage, workers).
2. Update `Dockerfile` with the correct build steps and runtime dependencies.
3. Implement `start.sh` to configure the app from Cloudron-provided environment variables and launch the primary process.
4. Edit `CloudronManifest.json` with accurate metadata, permissions, ports, addons, and health checks.
5. Add integration and smoke tests under `test/` to validate the package.
6. Document manual configuration steps, migration requirements, and known gaps in this README.
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
- Replace the placeholder long-running process in `start.sh`.
- Populate the `app/` directory with the application build artefacts or git submodules.
- Use the shared packaging container (`docker/packager`) to run `cloudron build` and `cloudron install` so the host remains clean.
- Populate the `app/` directory with runtime overlays or artifacts generated during the build stage.
- Use the shared packaging container (`docker/packager`) for `cloudron build/install` to keep the host clean.
- Record decisions and operational requirements under `docs/apps/fleetdm-fleet/` as work progresses.

View File

@@ -4,6 +4,6 @@
"issue": "https://projects.knownelement.com/issues/195",
"repo": "https://github.com/fleetdm/fleet.git",
"additionalRepos": [],
"created": "2025-10-02T16:46:49Z",
"created": "2025-10-02T17:19:00Z",
"notes": "TODO: capture packaging notes"
}
}

View File

@@ -1,8 +1,9 @@
#!/bin/bash
#!/usr/bin/env bash
set -euo pipefail
# Cloudron injects configuration via environment variables and files under /run
# Use this script to render config files and launch the upstream service.
# TODO: render configuration files from CLOUDRON_* environment variables
# Example:
# envsubst < /app/pkg/config.tmpl > /run/config.yaml
# TODO: Replace the command below with the correct process supervisor.
exec /bin/sh -c "echo 'Replace start.sh with application startup logic for FleetDM Fleet' && sleep infinity"
>&2 echo "start.sh for FleetDM Fleet is not implemented yet."
exit 1

View File

@@ -1,16 +1,14 @@
#!/bin/bash
#!/usr/bin/env bash
set -euo pipefail
# Basic container reachability check executed inside the packaging container.
# Replace curl target with an endpoint exposed by the app once the package is functional.
cloudron_app_url=${CLOUDRON_APP_ORIGIN:-"http://localhost"}
cloudron_app_origin=${CLOUDRON_APP_ORIGIN:-http://localhost}
http_code=$(curl -s -o /tmp/smoke.log -w "%{http_code}" "${cloudron_app_url}")
http_code=$(curl --silent --show-error --output /tmp/smoke.log --write-out "%{http_code}" "${cloudron_app_origin}/")
if [[ "${http_code}" != "200" ]]; then
echo "Unexpected HTTP status: ${http_code}" >&2
cat /tmp/smoke.log >&2
>&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 passed"
echo "Smoke test placeholder passed for FleetDM Fleet"

View File

@@ -12,9 +12,16 @@
"version": "0.1.0",
"tags": ["custom", "known-element"],
"healthCheckPath": "/",
"memoryLimit": 536870912,
"httpPort": 3000,
"memoryLimit": "512M",
"addons": {
"localstorage": {}
},
"optionalAddons": {
"postgresql": {},
"redis": {},
"mysql": {},
"mongodb": {},
"sendmail": {}
}
}

View File

@@ -1,21 +1,38 @@
# syntax=docker/dockerfile:1
FROM cloudron/base:5.0.0
# 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"
ARG APP_VERSION
ENV APP_VERSION=${APP_VERSION:-latest}
ENV APP_VERSION=${APP_VERSION}
# -----------------------------------------------------------------------------
# TODO: Copy build artefacts from the builder stage
# COPY --from=builder /build/source/dist /app/code
# -----------------------------------------------------------------------------
# Copy application source into image at build time
# Replace this with a multi-stage build if upstream provides Docker images.
COPY ./app /app/code
# Copy start script and make it executable
COPY ./start.sh /app/pkg/start.sh
RUN chmod +x /app/pkg/start.sh
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
# Cloudron expects all processes to run as cloudron user
USER cloudron
WORKDIR /app/code

View File

@@ -2,19 +2,19 @@
- **Upstream repository**: https://github.com/fonoster/fonoster.git
- **Implementation issue**: https://projects.knownelement.com/issues/227
- **Status**: Draft scaffolding generated on $(date -u +"%Y-%m-%dT%H:%M:%SZ")
- **Generated**: 2025-10-02T17:19:00Z UTC
## Packaging Checklist
1. Review upstream deployment requirements and map them to Cloudron services (database, cache, object storage, workers).
2. Update `Dockerfile` with the correct build steps and runtime dependencies.
3. Implement `start.sh` to configure the app from Cloudron-provided environment variables and launch the primary process.
4. Edit `CloudronManifest.json` with accurate metadata, permissions, ports, addons, and health checks.
5. Add integration and smoke tests under `test/` to validate the package.
6. Document manual configuration steps, migration requirements, and known gaps in this README.
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
- Replace the placeholder long-running process in `start.sh`.
- Populate the `app/` directory with the application build artefacts or git submodules.
- Use the shared packaging container (`docker/packager`) to run `cloudron build` and `cloudron install` so the host remains clean.
- Populate the `app/` directory with runtime overlays or artifacts generated during the build stage.
- Use the shared packaging container (`docker/packager`) for `cloudron build/install` to keep the host clean.
- Record decisions and operational requirements under `docs/apps/fonoster/` as work progresses.

View File

@@ -4,6 +4,6 @@
"issue": "https://projects.knownelement.com/issues/227",
"repo": "https://github.com/fonoster/fonoster.git",
"additionalRepos": [],
"created": "2025-10-02T16:46:49Z",
"created": "2025-10-02T17:19:00Z",
"notes": "TODO: capture packaging notes"
}
}

View File

@@ -1,8 +1,9 @@
#!/bin/bash
#!/usr/bin/env bash
set -euo pipefail
# Cloudron injects configuration via environment variables and files under /run
# Use this script to render config files and launch the upstream service.
# TODO: render configuration files from CLOUDRON_* environment variables
# Example:
# envsubst < /app/pkg/config.tmpl > /run/config.yaml
# TODO: Replace the command below with the correct process supervisor.
exec /bin/sh -c "echo 'Replace start.sh with application startup logic for Fonoster' && sleep infinity"
>&2 echo "start.sh for Fonoster is not implemented yet."
exit 1

View File

@@ -1,16 +1,14 @@
#!/bin/bash
#!/usr/bin/env bash
set -euo pipefail
# Basic container reachability check executed inside the packaging container.
# Replace curl target with an endpoint exposed by the app once the package is functional.
cloudron_app_url=${CLOUDRON_APP_ORIGIN:-"http://localhost"}
cloudron_app_origin=${CLOUDRON_APP_ORIGIN:-http://localhost}
http_code=$(curl -s -o /tmp/smoke.log -w "%{http_code}" "${cloudron_app_url}")
http_code=$(curl --silent --show-error --output /tmp/smoke.log --write-out "%{http_code}" "${cloudron_app_origin}/")
if [[ "${http_code}" != "200" ]]; then
echo "Unexpected HTTP status: ${http_code}" >&2
cat /tmp/smoke.log >&2
>&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 passed"
echo "Smoke test placeholder passed for Fonoster"

View File

@@ -12,9 +12,16 @@
"version": "0.1.0",
"tags": ["custom", "known-element"],
"healthCheckPath": "/",
"memoryLimit": 536870912,
"httpPort": 3000,
"memoryLimit": "512M",
"addons": {
"localstorage": {}
},
"optionalAddons": {
"postgresql": {},
"redis": {},
"mysql": {},
"mongodb": {},
"sendmail": {}
}
}

View File

@@ -1,21 +1,38 @@
# syntax=docker/dockerfile:1
FROM cloudron/base:5.0.0
# syntax=docker/dockerfile:1.6
ARG APP_VERSION=latest
FROM cloudron/base:5.0.0 AS builder
WORKDIR /build
# -----------------------------------------------------------------------------
# TODO: Fetch and build Grist
# Example:
# RUN git clone --depth 1 --branch "${APP_VERSION}" https://github.com/gristlabs/grist-core source \
# && cd source \
# && npm ci \
# && npm run build
# -----------------------------------------------------------------------------
FROM cloudron/base:5.0.0
LABEL org.opencontainers.image.source="https://github.com/gristlabs/grist-core"
LABEL org.opencontainers.image.description="Cloudron package for Grist"
ARG APP_VERSION
ENV APP_VERSION=${APP_VERSION:-latest}
ENV APP_VERSION=${APP_VERSION}
# -----------------------------------------------------------------------------
# TODO: Copy build artefacts from the builder stage
# COPY --from=builder /build/source/dist /app/code
# -----------------------------------------------------------------------------
# Copy application source into image at build time
# Replace this with a multi-stage build if upstream provides Docker images.
COPY ./app /app/code
# Copy start script and make it executable
COPY ./start.sh /app/pkg/start.sh
RUN chmod +x /app/pkg/start.sh
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
# Cloudron expects all processes to run as cloudron user
USER cloudron
WORKDIR /app/code

View File

@@ -2,19 +2,19 @@
- **Upstream repository**: https://github.com/gristlabs/grist-core
- **Implementation issue**: https://projects.knownelement.com/issues/191
- **Status**: Draft scaffolding generated on $(date -u +"%Y-%m-%dT%H:%M:%SZ")
- **Generated**: 2025-10-02T17:19:00Z UTC
## Packaging Checklist
1. Review upstream deployment requirements and map them to Cloudron services (database, cache, object storage, workers).
2. Update `Dockerfile` with the correct build steps and runtime dependencies.
3. Implement `start.sh` to configure the app from Cloudron-provided environment variables and launch the primary process.
4. Edit `CloudronManifest.json` with accurate metadata, permissions, ports, addons, and health checks.
5. Add integration and smoke tests under `test/` to validate the package.
6. Document manual configuration steps, migration requirements, and known gaps in this README.
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 Grist.
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
- Replace the placeholder long-running process in `start.sh`.
- Populate the `app/` directory with the application build artefacts or git submodules.
- Use the shared packaging container (`docker/packager`) to run `cloudron build` and `cloudron install` so the host remains clean.
- Populate the `app/` directory with runtime overlays or artifacts generated during the build stage.
- Use the shared packaging container (`docker/packager`) for `cloudron build/install` to keep the host clean.
- Record decisions and operational requirements under `docs/apps/grist/` as work progresses.

View File

@@ -4,6 +4,6 @@
"issue": "https://projects.knownelement.com/issues/191",
"repo": "https://github.com/gristlabs/grist-core",
"additionalRepos": [],
"created": "2025-10-02T16:46:49Z",
"created": "2025-10-02T17:19:00Z",
"notes": "TODO: capture packaging notes"
}
}

View File

@@ -1,8 +1,9 @@
#!/bin/bash
#!/usr/bin/env bash
set -euo pipefail
# Cloudron injects configuration via environment variables and files under /run
# Use this script to render config files and launch the upstream service.
# TODO: render configuration files from CLOUDRON_* environment variables
# Example:
# envsubst < /app/pkg/config.tmpl > /run/config.yaml
# TODO: Replace the command below with the correct process supervisor.
exec /bin/sh -c "echo 'Replace start.sh with application startup logic for Grist' && sleep infinity"
>&2 echo "start.sh for Grist is not implemented yet."
exit 1

View File

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

View File

@@ -12,9 +12,16 @@
"version": "0.1.0",
"tags": ["custom", "known-element"],
"healthCheckPath": "/",
"memoryLimit": 536870912,
"httpPort": 3000,
"memoryLimit": "512M",
"addons": {
"localstorage": {}
},
"optionalAddons": {
"postgresql": {},
"redis": {},
"mysql": {},
"mongodb": {},
"sendmail": {}
}
}

View File

@@ -1,21 +1,38 @@
# syntax=docker/dockerfile:1
FROM cloudron/base:5.0.0
# syntax=docker/dockerfile:1.6
ARG APP_VERSION=latest
FROM cloudron/base:5.0.0 AS builder
WORKDIR /build
# -----------------------------------------------------------------------------
# TODO: Fetch and build Healthchecks
# Example:
# RUN git clone --depth 1 --branch "${APP_VERSION}" https://github.com/healthchecks/healthchecks.git source \
# && cd source \
# && npm ci \
# && npm run build
# -----------------------------------------------------------------------------
FROM cloudron/base:5.0.0
LABEL org.opencontainers.image.source="https://github.com/healthchecks/healthchecks.git"
LABEL org.opencontainers.image.description="Cloudron package for Healthchecks"
ARG APP_VERSION
ENV APP_VERSION=${APP_VERSION:-latest}
ENV APP_VERSION=${APP_VERSION}
# -----------------------------------------------------------------------------
# TODO: Copy build artefacts from the builder stage
# COPY --from=builder /build/source/dist /app/code
# -----------------------------------------------------------------------------
# Copy application source into image at build time
# Replace this with a multi-stage build if upstream provides Docker images.
COPY ./app /app/code
# Copy start script and make it executable
COPY ./start.sh /app/pkg/start.sh
RUN chmod +x /app/pkg/start.sh
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
# Cloudron expects all processes to run as cloudron user
USER cloudron
WORKDIR /app/code

View File

@@ -2,19 +2,19 @@
- **Upstream repository**: https://github.com/healthchecks/healthchecks.git
- **Implementation issue**: https://projects.knownelement.com/issues/192
- **Status**: Draft scaffolding generated on $(date -u +"%Y-%m-%dT%H:%M:%SZ")
- **Generated**: 2025-10-02T17:19:00Z UTC
## Packaging Checklist
1. Review upstream deployment requirements and map them to Cloudron services (database, cache, object storage, workers).
2. Update `Dockerfile` with the correct build steps and runtime dependencies.
3. Implement `start.sh` to configure the app from Cloudron-provided environment variables and launch the primary process.
4. Edit `CloudronManifest.json` with accurate metadata, permissions, ports, addons, and health checks.
5. Add integration and smoke tests under `test/` to validate the package.
6. Document manual configuration steps, migration requirements, and known gaps in this README.
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 Healthchecks.
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
- Replace the placeholder long-running process in `start.sh`.
- Populate the `app/` directory with the application build artefacts or git submodules.
- Use the shared packaging container (`docker/packager`) to run `cloudron build` and `cloudron install` so the host remains clean.
- Populate the `app/` directory with runtime overlays or artifacts generated during the build stage.
- Use the shared packaging container (`docker/packager`) for `cloudron build/install` to keep the host clean.
- Record decisions and operational requirements under `docs/apps/healthchecks/` as work progresses.

View File

@@ -4,6 +4,6 @@
"issue": "https://projects.knownelement.com/issues/192",
"repo": "https://github.com/healthchecks/healthchecks.git",
"additionalRepos": [],
"created": "2025-10-02T16:46:49Z",
"created": "2025-10-02T17:19:00Z",
"notes": "TODO: capture packaging notes"
}
}

View File

@@ -1,8 +1,9 @@
#!/bin/bash
#!/usr/bin/env bash
set -euo pipefail
# Cloudron injects configuration via environment variables and files under /run
# Use this script to render config files and launch the upstream service.
# TODO: render configuration files from CLOUDRON_* environment variables
# Example:
# envsubst < /app/pkg/config.tmpl > /run/config.yaml
# TODO: Replace the command below with the correct process supervisor.
exec /bin/sh -c "echo 'Replace start.sh with application startup logic for Healthchecks' && sleep infinity"
>&2 echo "start.sh for Healthchecks is not implemented yet."
exit 1

View File

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

View File

@@ -12,9 +12,16 @@
"version": "0.1.0",
"tags": ["custom", "known-element"],
"healthCheckPath": "/",
"memoryLimit": 536870912,
"httpPort": 3000,
"memoryLimit": "512M",
"addons": {
"localstorage": {}
},
"optionalAddons": {
"postgresql": {},
"redis": {},
"mysql": {},
"mongodb": {},
"sendmail": {}
}
}

View File

@@ -1,21 +1,38 @@
# syntax=docker/dockerfile:1
FROM cloudron/base:5.0.0
# syntax=docker/dockerfile:1.6
ARG APP_VERSION=latest
FROM cloudron/base:5.0.0 AS builder
WORKDIR /build
# -----------------------------------------------------------------------------
# TODO: Fetch and build Huginn
# Example:
# RUN git clone --depth 1 --branch "${APP_VERSION}" https://github.com/huginn/huginn.git source \
# && cd source \
# && npm ci \
# && npm run build
# -----------------------------------------------------------------------------
FROM cloudron/base:5.0.0
LABEL org.opencontainers.image.source="https://github.com/huginn/huginn.git"
LABEL org.opencontainers.image.description="Cloudron package for Huginn"
ARG APP_VERSION
ENV APP_VERSION=${APP_VERSION:-latest}
ENV APP_VERSION=${APP_VERSION}
# -----------------------------------------------------------------------------
# TODO: Copy build artefacts from the builder stage
# COPY --from=builder /build/source/dist /app/code
# -----------------------------------------------------------------------------
# Copy application source into image at build time
# Replace this with a multi-stage build if upstream provides Docker images.
COPY ./app /app/code
# Copy start script and make it executable
COPY ./start.sh /app/pkg/start.sh
RUN chmod +x /app/pkg/start.sh
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
# Cloudron expects all processes to run as cloudron user
USER cloudron
WORKDIR /app/code

View File

@@ -2,19 +2,19 @@
- **Upstream repository**: https://github.com/huginn/huginn.git
- **Implementation issue**: https://projects.knownelement.com/issues/194
- **Status**: Draft scaffolding generated on $(date -u +"%Y-%m-%dT%H:%M:%SZ")
- **Generated**: 2025-10-02T17:19:00Z UTC
## Packaging Checklist
1. Review upstream deployment requirements and map them to Cloudron services (database, cache, object storage, workers).
2. Update `Dockerfile` with the correct build steps and runtime dependencies.
3. Implement `start.sh` to configure the app from Cloudron-provided environment variables and launch the primary process.
4. Edit `CloudronManifest.json` with accurate metadata, permissions, ports, addons, and health checks.
5. Add integration and smoke tests under `test/` to validate the package.
6. Document manual configuration steps, migration requirements, and known gaps in this README.
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 Huginn.
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
- Replace the placeholder long-running process in `start.sh`.
- Populate the `app/` directory with the application build artefacts or git submodules.
- Use the shared packaging container (`docker/packager`) to run `cloudron build` and `cloudron install` so the host remains clean.
- Populate the `app/` directory with runtime overlays or artifacts generated during the build stage.
- Use the shared packaging container (`docker/packager`) for `cloudron build/install` to keep the host clean.
- Record decisions and operational requirements under `docs/apps/huginn/` as work progresses.

View File

@@ -4,6 +4,6 @@
"issue": "https://projects.knownelement.com/issues/194",
"repo": "https://github.com/huginn/huginn.git",
"additionalRepos": [],
"created": "2025-10-02T16:46:49Z",
"created": "2025-10-02T17:19:00Z",
"notes": "TODO: capture packaging notes"
}
}

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