diff --git a/.gitea/workflows/build-and-publish.yaml b/.gitea/workflows/build-and-publish.yaml
index 914df52..77e8b9b 100644
--- a/.gitea/workflows/build-and-publish.yaml
+++ b/.gitea/workflows/build-and-publish.yaml
@@ -82,13 +82,18 @@ jobs:
test -d /usr/share/hyperdeck
test -f /etc/hyperdeck/config.json
test -f /usr/lib/systemd/system/hyperdeck.service
- python3 -m py_compile /usr/share/hyperdeck/main.py
- echo "eendoe-hyperdeck: OK"
+ - name: Test install bnhmeijer-ca-certificates
+ run: |
+ echo "=== Installing bnhmeijer-ca-certificates ==="
+ sudo apt-get install -y ./staging/bnhmeijer-ca-certificates-*.deb
+ dpkg -s bnhmeijer-ca-certificates | grep -q "Status: install ok installed"
+ test -f /usr/local/share/ca-certificates/bnhmeijer/bnhmeijer-root-ca.crt
+ echo "bnhmeijer-ca-certificates: OK"
- name: Test package uninstall and cleanup
run: |
echo "=== Testing package removal ==="
- sudo apt-get remove -y eendoe-hyperdeck eendoe-srs eendoe-repository
+ sudo apt-get remove -y eendoe-hyperdeck eendoe-srs eendoe-repository bnhmeijer-ca-certificates
echo "Package removal: OK"
publish:
diff --git a/README.md b/README.md
index bb921aa..6d97920 100644
--- a/README.md
+++ b/README.md
@@ -6,6 +6,7 @@ Debian / APT package repository bronbestanden en build tools voor Eendoe.
- **`sources/`**: Bronbestanden, control definities en packaging scripts voor de te bouwen packages:
- `eendoe_repository`: Repository configuratie package (`/etc/apt/sources.list.d/`)
+ - `bnhmeijer_ca_certificates`: Bnhmeijer Homelab Root CA package voor `/usr/local/share/ca-certificates/`
- `eendoe_hyperdeck`: Hyperdeck Python service en systemd unit
- `eendoe_srs`: SRS streaming server package en systemd unit
- **`staging/`**: Bestaande en nieuw gebouwde `.deb` packages (exclusief Oracle database packages).
diff --git a/binaries/index.html b/binaries/index.html
index d12d50c..2d85664 100644
--- a/binaries/index.html
+++ b/binaries/index.html
@@ -645,6 +645,17 @@
+
+
+
bnhmeijer-ca-certificates
+
Bnhmeijer Homelab Root CA certificaat. Voegt de root CA automatisch toe aan de OS trust store zodat interne TLS-certificaten direct vertrouwd worden.
+
+
+
+
eendoe-repository
diff --git a/binaries/pool/main/b/bnhmeijer-ca-certificates/bnhmeijer-ca-certificates-1.0.0_all.deb b/binaries/pool/main/b/bnhmeijer-ca-certificates/bnhmeijer-ca-certificates-1.0.0_all.deb
new file mode 100644
index 0000000..3cf5f71
Binary files /dev/null and b/binaries/pool/main/b/bnhmeijer-ca-certificates/bnhmeijer-ca-certificates-1.0.0_all.deb differ
diff --git a/sources/bnhmeijer_ca_certificates/bin/build.sh b/sources/bnhmeijer_ca_certificates/bin/build.sh
new file mode 100755
index 0000000..bd1874a
--- /dev/null
+++ b/sources/bnhmeijer_ca_certificates/bin/build.sh
@@ -0,0 +1,45 @@
+#!/bin/sh
+set -e
+
+CONTROL_FILE=$(ls -1 *.control 2>/dev/null | head -n 1)
+
+if [ -z "$CONTROL_FILE" ]; then
+ echo "Fout: Geen .control bestand gevonden in $(pwd)" >&2
+ exit 1
+fi
+
+PACKAGE_NAME=$(awk '/^Package: /{print $NF}' "$CONTROL_FILE")
+DETECTED_VERSION=$(awk '/^Version: /{print $NF}' "$CONTROL_FILE")
+
+# Version resolution: CLI arg > ENV var > .control version > default 0.1.0
+if [ -n "$1" ]; then
+ VERSION="$1"
+elif [ -n "$PACKAGE_VERSION" ]; then
+ VERSION="$PACKAGE_VERSION"
+elif [ -n "$VERSION" ]; then
+ VERSION="$VERSION"
+elif [ "$DETECTED_VERSION" != "{VERSION}" ] && [ -n "$DETECTED_VERSION" ]; then
+ VERSION="$DETECTED_VERSION"
+else
+ VERSION="0.1.0"
+fi
+
+mkdir -p "packaging/$PACKAGE_NAME/DEBIAN"
+sed "s/{VERSION}/${VERSION}/" "$CONTROL_FILE" > "packaging/$PACKAGE_NAME/DEBIAN/control"
+
+ARCH=$(awk '/^Architecture: /{print $NF}' "packaging/$PACKAGE_NAME/DEBIAN/control")
+ARCH="${ARCH:-all}"
+DEB_FILENAME="${PACKAGE_NAME}-${VERSION}_${ARCH}.deb"
+
+echo "Building package: $PACKAGE_NAME ($VERSION) [$ARCH] -> $DEB_FILENAME"
+
+# Ensure correct Debian directory permissions
+find "packaging/$PACKAGE_NAME" -type d -exec chmod 755 {} +
+find "packaging/$PACKAGE_NAME/DEBIAN" -type f -exec chmod 755 {} + 2>/dev/null || true
+
+# Build debian binary package
+dpkg-deb --build "packaging/$PACKAGE_NAME" "$DEB_FILENAME"
+
+# Cleanup temporary control file
+rm -f "packaging/$PACKAGE_NAME/DEBIAN/control"
+echo "Succesvol gebouwd: $DEB_FILENAME"
diff --git a/sources/bnhmeijer_ca_certificates/bnhmeijer-ca-certificates.control b/sources/bnhmeijer_ca_certificates/bnhmeijer-ca-certificates.control
new file mode 100644
index 0000000..f864411
--- /dev/null
+++ b/sources/bnhmeijer_ca_certificates/bnhmeijer-ca-certificates.control
@@ -0,0 +1,12 @@
+Package: bnhmeijer-ca-certificates
+Version: 1.0.0
+Section: utils
+Priority: optional
+Architecture: all
+Depends: ca-certificates
+Maintainer: Bart Meijer
+Description: Bnhmeijer Homelab Root CA certificate
+ Installs the Bnhmeijer Homelab Root CA certificate into the system trust store
+ (/usr/local/share/ca-certificates/bnhmeijer/) and updates the CA trust list.
+ Ensures all homelab internal services (*.lan and *.bnhmeijer.nl) signed by
+ cert-service are automatically trusted by the OS and browsers.
diff --git a/sources/bnhmeijer_ca_certificates/packaging/bnhmeijer-ca-certificates/DEBIAN/postinst b/sources/bnhmeijer_ca_certificates/packaging/bnhmeijer-ca-certificates/DEBIAN/postinst
new file mode 100755
index 0000000..08d175e
--- /dev/null
+++ b/sources/bnhmeijer_ca_certificates/packaging/bnhmeijer-ca-certificates/DEBIAN/postinst
@@ -0,0 +1,12 @@
+#!/bin/sh
+set -e
+
+case "$1" in
+ configure|abort-upgrade)
+ if command -v update-ca-certificates >/dev/null 2>&1; then
+ echo "Updating system trusted CA certificates..."
+ update-ca-certificates >/dev/null 2>&1 || true
+ fi
+ ;;
+esac
+exit 0
diff --git a/sources/bnhmeijer_ca_certificates/packaging/bnhmeijer-ca-certificates/DEBIAN/postrm b/sources/bnhmeijer_ca_certificates/packaging/bnhmeijer-ca-certificates/DEBIAN/postrm
new file mode 100755
index 0000000..71dbbcd
--- /dev/null
+++ b/sources/bnhmeijer_ca_certificates/packaging/bnhmeijer-ca-certificates/DEBIAN/postrm
@@ -0,0 +1,12 @@
+#!/bin/sh
+set -e
+
+case "$1" in
+ remove|purge|disappear)
+ if command -v update-ca-certificates >/dev/null 2>&1; then
+ echo "Removing certificate from system trust store..."
+ update-ca-certificates --fresh >/dev/null 2>&1 || true
+ fi
+ ;;
+esac
+exit 0
diff --git a/sources/bnhmeijer_ca_certificates/packaging/bnhmeijer-ca-certificates/usr/local/share/ca-certificates/bnhmeijer/bnhmeijer-root-ca.crt b/sources/bnhmeijer_ca_certificates/packaging/bnhmeijer-ca-certificates/usr/local/share/ca-certificates/bnhmeijer/bnhmeijer-root-ca.crt
new file mode 100644
index 0000000..2556a3b
--- /dev/null
+++ b/sources/bnhmeijer_ca_certificates/packaging/bnhmeijer-ca-certificates/usr/local/share/ca-certificates/bnhmeijer/bnhmeijer-root-ca.crt
@@ -0,0 +1,31 @@
+-----BEGIN CERTIFICATE-----
+MIIFZzCCA0+gAwIBAgIRALCvASaMQ9DZPQrGDIYTVkswDQYJKoZIhvcNAQELBQAw
+TTEiMCAGA1UEAwwZQm5obWVpamVyIEhvbWVsYWIgUm9vdCBDQTEaMBgGA1UECgwR
+Qm5obWVpamVyIEhvbWVsYWIxCzAJBgNVBAYTAk5MMB4XDTI2MTAyMDIwMjQ0OVoX
+DTM2MTAxNzIwMjQ0OVowTTEiMCAGA1UEAwwZQm5obWVpamVyIEhvbWVsYWIgUm9v
+dCBDQTEaMBgGA1UECgwRQm5obWVpamVyIEhvbWVsYWIxCzAJBgNVBAYTAk5MMIIC
+IjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAuOKEFT0p9uzcxf5hfPyvjFDd
+Fs2GxN3nUNJ+6fzdwR3Bf0yeFYLIHA8C/7hMApt5JGW/ndnYEA7hk0Oj2mbXUo7o
+j7zIKke5OALBO3SSvJSywwBOsaZ95sSTfkYvmCOLojH/EUmLA6+MmUtSTWMIm1do
+ki2H8BEdXzeE4XtI/Fw8v1kRX0AYA3l4+AB8ejVSHIuhcWgbrwGKkRZFBEAJMXEp
+IKkYiYPxAZ4AUy4FJHVJwpdK9JLc6ORQS4kpBWJRGROwSePs2hfMn3tSg3xfyOK/
+c8bOyGTx9O1tjWcfN2cPbGhJ5Uo9j5uyZnAvdkR0mniELB6/G6jM4UzKfmVvQEMt
+jH76vowFzJmDiKWRJgmq1rEEdSVPDowateLEac5YkGIc9e+/1G3yKQH+eqcHbGvQ
+ORnQF03rB5jNWUHdF5WSbMHPszOndMHnUYMrHC025ApIKXcO8R1/ld0DsMRGY4sS
+wQfRQW5oVOOxQkPMk2LcC4v9Gz/ox9DuAhBXpQUpoXkZ/Zdd2zI2eKLnKuYqkiUv
+UOUJAUapyztQCCWpxeU9gxTBOrN1g5sSVy3p5lrSWNMQUNXNyOr3ylj3XVQFZxtR
+WM64tHb8M4UpHYvLG7Bw7m59BgwgEJP686ShnQg/CpE0XpILU+GH8FPL2k8Zl9RB
+H3jJjLrGEjexiv0KdDcCAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8B
+Af8EBAMCAQYwHQYDVR0OBBYEFH1zTZdKh8Q63s5JV5UwrfHB6rAYMA0GCSqGSIb3
+DQEBCwUAA4ICAQBQmMk725RF2qzN5Me+MuY/N0GdJGNauZ9KvzSybyCIrXfycmid
+vwU+g1j3nFwVs2FSH3cU6s06jH1Lr0soz74cEmU/Zn94G3Yp8nMh3Nz+qwmJenD1
+ffF9bTgk2b/jhSRRNU4nDm0HvdfUGLTxgmtAkI45dAmmtynGhKhaFqyxbosxz/Pr
+Cqzo6SSrKYx7bHj8Wk2wdB6hDY5UbzOvBVWq8JqZCJiSLNjZNgD64YFUtbBTK3kD
+CLJhesuf6Qg8UBUL34NqIHfTC5J6G2AlFOLBi6DKBc7rnTlHCCesUUGZqxQy58nC
+MSlRLKRg3tqQq1Hy839Vb/llmpQDujWDaQ7ptN1bn2ATzdruc+PW2pPv6Ffs3lS7
+o+69mk5/NDhkqNCM1EYK2hDEkO1jdiyUgmXi0i7ni7Qea3HSK2WYAtHPTIDHAGCz
+O2Lvfbeq70rfGIf2FJRItIqmS8OjOggGp++ED2d49hvw3Tfxnw108SqYFph2QN/d
+rt8kvcXkMNGQXE7eIqyY5sgI3tJuYpy2r7BWsg0EFwYVphZ0o/SFZTleSTKSxGpr
+NLXKcqxyEYCmZfZLiWRcvTFOkzCqnLQZGJMMdk3Nkq6IwAaZiyRtW6QBHLaIHX/v
+UX0C3FD+bSuRfZbZGcTmdHVLKAdCOfMp0w/oW5X4vURcjoGJNbd8z0UU0A==
+-----END CERTIFICATE-----
diff --git a/sources/eendoe_hyperdeck/bin/build.sh b/sources/eendoe_hyperdeck/bin/build.sh
index 00ba7f6..bd1874a 100755
--- a/sources/eendoe_hyperdeck/bin/build.sh
+++ b/sources/eendoe_hyperdeck/bin/build.sh
@@ -33,6 +33,10 @@ DEB_FILENAME="${PACKAGE_NAME}-${VERSION}_${ARCH}.deb"
echo "Building package: $PACKAGE_NAME ($VERSION) [$ARCH] -> $DEB_FILENAME"
+# Ensure correct Debian directory permissions
+find "packaging/$PACKAGE_NAME" -type d -exec chmod 755 {} +
+find "packaging/$PACKAGE_NAME/DEBIAN" -type f -exec chmod 755 {} + 2>/dev/null || true
+
# Build debian binary package
dpkg-deb --build "packaging/$PACKAGE_NAME" "$DEB_FILENAME"
diff --git a/sources/eendoe_repository/bin/build.sh b/sources/eendoe_repository/bin/build.sh
index 00ba7f6..bd1874a 100755
--- a/sources/eendoe_repository/bin/build.sh
+++ b/sources/eendoe_repository/bin/build.sh
@@ -33,6 +33,10 @@ DEB_FILENAME="${PACKAGE_NAME}-${VERSION}_${ARCH}.deb"
echo "Building package: $PACKAGE_NAME ($VERSION) [$ARCH] -> $DEB_FILENAME"
+# Ensure correct Debian directory permissions
+find "packaging/$PACKAGE_NAME" -type d -exec chmod 755 {} +
+find "packaging/$PACKAGE_NAME/DEBIAN" -type f -exec chmod 755 {} + 2>/dev/null || true
+
# Build debian binary package
dpkg-deb --build "packaging/$PACKAGE_NAME" "$DEB_FILENAME"
diff --git a/sources/eendoe_srs/bin/build.sh b/sources/eendoe_srs/bin/build.sh
index 00ba7f6..bd1874a 100755
--- a/sources/eendoe_srs/bin/build.sh
+++ b/sources/eendoe_srs/bin/build.sh
@@ -33,6 +33,10 @@ DEB_FILENAME="${PACKAGE_NAME}-${VERSION}_${ARCH}.deb"
echo "Building package: $PACKAGE_NAME ($VERSION) [$ARCH] -> $DEB_FILENAME"
+# Ensure correct Debian directory permissions
+find "packaging/$PACKAGE_NAME" -type d -exec chmod 755 {} +
+find "packaging/$PACKAGE_NAME/DEBIAN" -type f -exec chmod 755 {} + 2>/dev/null || true
+
# Build debian binary package
dpkg-deb --build "packaging/$PACKAGE_NAME" "$DEB_FILENAME"
diff --git a/staging/bnhmeijer-ca-certificates-1.0.0_all.deb b/staging/bnhmeijer-ca-certificates-1.0.0_all.deb
new file mode 100644
index 0000000..3cf5f71
Binary files /dev/null and b/staging/bnhmeijer-ca-certificates-1.0.0_all.deb differ