Compare commits

...
13 Commits
Author SHA1 Message Date
bart ee9ceb4256 feat(jellyfin-kiosk): bump package to 0.1.5
Build, Test and Publish Debian Packages / Build Packages (push) Failing after 30s
Build, Test and Publish Debian Packages / Test Package Installation (push) Skipped
Build, Test and Publish Debian Packages / Publish to eendoe repository (push) Skipped
2026-11-06 18:25:15 +01:00
bart 1ca16dee3d feat(jellyfin-kiosk): bump package to 0.1.4
Build, Test and Publish Debian Packages / Build Packages (push) Failing after 24s
Build, Test and Publish Debian Packages / Test Package Installation (push) Skipped
Build, Test and Publish Debian Packages / Publish to eendoe repository (push) Skipped
2026-11-05 22:20:37 +01:00
bart 0d7ca3ee4b feat(jellyfin-kiosk): bump package to 0.1.3 with YouTube sharing and cursor fix
Build, Test and Publish Debian Packages / Build Packages (push) Failing after 23s
Build, Test and Publish Debian Packages / Test Package Installation (push) Skipped
Build, Test and Publish Debian Packages / Publish to eendoe repository (push) Skipped
2026-11-05 19:12:14 +01:00
bart e28d4adef0 fix(jellyfin-kiosk): update binary with hidden cursor
Build, Test and Publish Debian Packages / Build Packages (push) Failing after 23s
Build, Test and Publish Debian Packages / Test Package Installation (push) Skipped
Build, Test and Publish Debian Packages / Publish to eendoe repository (push) Skipped
2026-11-05 18:58:22 +01:00
bart 419942a496 feat(jellyfin-kiosk): bump package to 0.1.2
Build, Test and Publish Debian Packages / Build Packages (push) Failing after 33s
Build, Test and Publish Debian Packages / Test Package Installation (push) Skipped
Build, Test and Publish Debian Packages / Publish to eendoe repository (push) Skipped
2026-11-05 18:46:40 +01:00
bart d97a1a9662 feat(jellyfin-kiosk): add debian package build and staging for jellyfin-kiosk 2026-11-04 23:26:30 +01:00
bart 6ee1625e70 feat(ca): configure browser trust policies for Chrome, Chromium, Brave and Firefox (v1.0.1)
Build, Test and Publish Debian Packages / Build Packages (push) Failing after 19s
Build, Test and Publish Debian Packages / Test Package Installation (push) Skipped
Build, Test and Publish Debian Packages / Publish to eendoe repository (push) Skipped
2026-10-20 23:36:47 +02:00
bart 13aea1c654 Add automated update-repo.sh for index generation and signing 2026-10-20 23:12:58 +02:00
bart 06bd01807a Add bnhmeijer-ca-certificates package to sources and repository
Build, Test and Publish Debian Packages / Build Packages (push) Failing after 20s
Build, Test and Publish Debian Packages / Test Package Installation (push) Skipped
Build, Test and Publish Debian Packages / Publish to eendoe repository (push) Skipped
2026-10-20 22:44:29 +02:00
bart 496920fddb Add package installation testing to Gitea workflow and fix package metadata
Build, Test and Publish Debian Packages / Build Packages (push) Failing after 21s
Build, Test and Publish Debian Packages / Test Package Installation (push) Skipped
Build, Test and Publish Debian Packages / Publish to eendoe repository (push) Skipped
2026-10-20 22:01:16 +02:00
bart ed27a09ef9 Fix interactive terminal prompt via /dev/tty for piped curl 2026-10-20 21:43:38 +02:00
bart 72bb2966ec Style repository landing page matching eendoe.nl branding 2026-10-20 21:41:31 +02:00
bart 50659a67f3 Add modern landing page with setup instructions 2026-10-20 21:37:56 +02:00
51 changed files with 1522 additions and 10497 deletions
+72 -2
View File
@@ -1,4 +1,4 @@
name: Build and Publish Debian Packages name: Build, Test and Publish Debian Packages
on: on:
push: push:
@@ -9,6 +9,10 @@ on:
- 'sources/**' - 'sources/**'
- 'buildpackages.sh' - 'buildpackages.sh'
- '.gitea/workflows/**' - '.gitea/workflows/**'
pull_request:
branches:
- main
- master
workflow_dispatch: workflow_dispatch:
jobs: jobs:
@@ -35,9 +39,75 @@ jobs:
name: debian-packages name: debian-packages
path: staging/*.deb path: staging/*.deb
test-install:
name: Test Package Installation
needs: build
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Download built artifacts
uses: actions/download-artifact@v4
with:
name: debian-packages
path: staging
- name: Install system runtime dependencies
run: |
sudo apt-get update
sudo apt-get install -y python3 python3-pip python3-venv ffmpeg mpv yt-dlp libmpv2
- name: Test install eendoe-repository
run: |
echo "=== Installing eendoe-repository ==="
sudo apt-get install -y ./staging/eendoe-repository-*.deb
dpkg -s eendoe-repository | grep -q "Status: install ok installed"
test -f /etc/apt/sources.list.d/eendoe.list
echo "eendoe-repository: OK"
- name: Test install eendoe-srs
run: |
echo "=== Installing eendoe-srs ==="
sudo apt-get install -y ./staging/eendoe-srs-*.deb
dpkg -s eendoe-srs | grep -q "Status: install ok installed"
test -x /usr/share/srs/objs/srs
echo "eendoe-srs: OK"
- name: Test install eendoe-hyperdeck
run: |
echo "=== Installing eendoe-hyperdeck ==="
sudo apt-get install -y ./staging/eendoe-hyperdeck-*.deb
dpkg -s eendoe-hyperdeck | grep -q "Status: install ok installed"
test -d /usr/share/hyperdeck
test -f /etc/hyperdeck/config.json
test -f /usr/lib/systemd/system/hyperdeck.service
- 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 install jellyfin-kiosk
run: |
echo "=== Installing jellyfin-kiosk ==="
sudo apt-get install -y ./staging/jellyfin-kiosk-*.deb
dpkg -s jellyfin-kiosk | grep -q "Status: install ok installed"
test -x /usr/bin/jellyfin-kiosk
test -f /usr/lib/systemd/system/jellyfin-kiosk.service
echo "jellyfin-kiosk: OK"
- name: Test package uninstall and cleanup
run: |
echo "=== Testing package removal ==="
sudo apt-get remove -y eendoe-hyperdeck eendoe-srs eendoe-repository bnhmeijer-ca-certificates jellyfin-kiosk
echo "Package removal: OK"
publish: publish:
name: Publish to eendoe repository name: Publish to eendoe repository
needs: build needs: [build, test-install]
runs-on: ubuntu-latest runs-on: ubuntu-latest
if: github.ref == 'refs/heads/main' && github.event_name == 'push' if: github.ref == 'refs/heads/main' && github.event_name == 'push'
steps: steps:
+1
View File
@@ -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: - **`sources/`**: Bronbestanden, control definities en packaging scripts voor de te bouwen packages:
- `eendoe_repository`: Repository configuratie package (`/etc/apt/sources.list.d/`) - `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_hyperdeck`: Hyperdeck Python service en systemd unit
- `eendoe_srs`: SRS streaming server package en systemd unit - `eendoe_srs`: SRS streaming server package en systemd unit
- **`staging/`**: Bestaande en nieuw gebouwde `.deb` packages (exclusief Oracle database packages). - **`staging/`**: Bestaande en nieuw gebouwde `.deb` packages (exclusief Oracle database packages).
+23 -46
View File
@@ -1,57 +1,34 @@
-----BEGIN PGP SIGNED MESSAGE----- -----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256 Hash: SHA512
Origin: . stable Origin: Eendoe
Label: . stable Label: Eendoe Repository
Suite: stable Suite: stable
Codename: stable Codename: stable
Date: Wed, 27 Dec 2023 15:09:09 UTC Date: Tue, 20 Oct 2026 21:36:18 +0000
Architectures: amd64 Architectures: amd64 all
Components: main Components: main
Description: Generated by aptly Description: Eendoe Private APT Package Repository
MD5Sum: MD5Sum:
cf5f351b126aaab2bf6ca97c13b378c5 3405449 Contents-amd64 8fc1ad8fefc657a8da319cc9b55c6eaf 4709 main/binary-amd64/Packages
9f23a2449f3abc4c6fccecfd01fd86e3 152525 Contents-amd64.gz a6c07fa32055f89a45b322fc1804dd8e 1747 main/binary-amd64/Packages.gz
cf5f351b126aaab2bf6ca97c13b378c5 3405449 main/Contents-amd64 cddb357d915f3e3cc9c59e221003730d 1893 main/binary-amd64/Packages.bz2
9f23a2449f3abc4c6fccecfd01fd86e3 152525 main/Contents-amd64.gz
f8778b24beb2988de929e2d59d1f4c58 2761 main/binary-amd64/Packages
a9ae692d17b8e39db0555ab28ca1207d 1357 main/binary-amd64/Packages.bz2
9a64097df252b063fd82b0127ffc57ae 1268 main/binary-amd64/Packages.gz
1a863a05e2aa38a0db0bf785722d7fae 99 main/binary-amd64/Release
SHA1: SHA1:
5fe9dd2d9aa59f1f24de2ca35728e05db5f74655 3405449 Contents-amd64 e349ded34482fa7054812a7ff8ec1675a0d3987b 4709 main/binary-amd64/Packages
3913d6a2268e0599ee051d4a267b70a4740c03fa 152525 Contents-amd64.gz c8c126f431f6813812de54c586da7d3c998008cb 1747 main/binary-amd64/Packages.gz
5fe9dd2d9aa59f1f24de2ca35728e05db5f74655 3405449 main/Contents-amd64 f875d955166a78973c768b08bc595a2dcb7c41c7 1893 main/binary-amd64/Packages.bz2
3913d6a2268e0599ee051d4a267b70a4740c03fa 152525 main/Contents-amd64.gz
7236da7bf2d82d5b66a9305d78f7ec7876792c71 2761 main/binary-amd64/Packages
a2ed1b4117915d2349051ada9ddc089113aa7803 1357 main/binary-amd64/Packages.bz2
a628182db07c468ccf6236597693c3624a0eb9f8 1268 main/binary-amd64/Packages.gz
279ffa18634b8d6c311595f6e6db2c1b2324b3ef 99 main/binary-amd64/Release
SHA256: SHA256:
0ec939a6371353e8ba850811ecba0bd6749ecf5ad4e6ffe4d3f4d48ed68dc8ee 3405449 Contents-amd64 8bd948850a78b9f51ef065ce194760947b7bfb60e0124bdf8ff115e4eaa51d62 4709 main/binary-amd64/Packages
915bdf7b19675b1eb09b22f0aada96d0d1557fa9ed70a3e71db197c71376db02 152525 Contents-amd64.gz 4cff378eeaf24824f9e9027c8e4b2e42023c7fb8b83bb9e3517caffc82ee7c66 1747 main/binary-amd64/Packages.gz
0ec939a6371353e8ba850811ecba0bd6749ecf5ad4e6ffe4d3f4d48ed68dc8ee 3405449 main/Contents-amd64 a38a8258163e341ddaf3708b7dab8d4437d9b65ef1267539d3c184cc2c367ade 1893 main/binary-amd64/Packages.bz2
915bdf7b19675b1eb09b22f0aada96d0d1557fa9ed70a3e71db197c71376db02 152525 main/Contents-amd64.gz
f2197b98eadd153d364ff7948bca222763f70e18b76a963b504c1ebbbeb0f2b7 2761 main/binary-amd64/Packages
7dc41b5f359d26cb8c1bcc4b512c94c5db1b402efb15e76d5d0d23625cdca933 1357 main/binary-amd64/Packages.bz2
64f1a3fd43c28053b3c2301a123b4cf6dc5a1370a94463d861fab3856554366e 1268 main/binary-amd64/Packages.gz
101f8d561bb536f600918ab98ffb742828149f0d90ed0b007b7b761e9ad4f8a2 99 main/binary-amd64/Release
SHA512:
ec29ceab750bab737fbbcc9f00b74c334d0e1ea2f62c0081ed9b695d76bac1296f7560b2ee80361c9f8ed2b538a6adad21d8d3b55200fa71096ac09cd6c7eebd 3405449 Contents-amd64
69bbc10540b2bb90941dd2b6804544c91fd335e91f7674f50b2d32312257b997f34ec5d0147d69a16164e41e2bdbdc008a74c863b6de0c42c15eba062c540efa 152525 Contents-amd64.gz
ec29ceab750bab737fbbcc9f00b74c334d0e1ea2f62c0081ed9b695d76bac1296f7560b2ee80361c9f8ed2b538a6adad21d8d3b55200fa71096ac09cd6c7eebd 3405449 main/Contents-amd64
69bbc10540b2bb90941dd2b6804544c91fd335e91f7674f50b2d32312257b997f34ec5d0147d69a16164e41e2bdbdc008a74c863b6de0c42c15eba062c540efa 152525 main/Contents-amd64.gz
19efa178a219564af52c8eff763c820d973a9f00f43a6fd5d1599179661b025a043da630874ba56814ca43608d68aa2e555bb5f303a3d84deb1412c4c8923ff6 2761 main/binary-amd64/Packages
87099e5b28836adde21419be72bc16bbb6b02bd901f8372df2de3543d03f8de9ff58fd058ef7bc90a7bafc9b8d4c38fdd25c507b788b8054d79d448c97ef32d7 1357 main/binary-amd64/Packages.bz2
dc706a07d45f70d0bf645c4d65e1b6b235a66dfa294f8a77825b1395cf40aa3a2ed097f7092e4635c99ff231fc9f44852d0b91ed09fbbd1cc8a78bb758afc2e7 1268 main/binary-amd64/Packages.gz
fd75f52e3d8ab190e919a646d1ccc84e447b32e45691f0f9f65c3ac5ac806f024f7edef6e0c3c9e2d19a5f2621dcd3744f684d9b87a7cdc493b0eb55e7a0b393 99 main/binary-amd64/Release
-----BEGIN PGP SIGNATURE----- -----BEGIN PGP SIGNATURE-----
wsBcBAEBCAAQBQJljD4VCRBWSZ+SBjn1cQAANDUIAKjuNqznCTWjUgwAdRkmCLyb iQEzBAEBCgAdFiEEUQdwLhqNQP44F6OuVkmfkgY59XEFAmrX3tIACgkQVkmfkgY5
HzmxTbtSfc4Eguri0QsUCQg7FA5nlupNketz2NNJ3TIkPJ7KVHAvcYdifnDlL0k2 9XFjHwf/Qqa5PCPX919pWz/ML5entwd2vEZpr3HSqfum0R9hp7YE9p9100Z+p7pk
WQMRC4L94jxYSvRnMj4f+/pWt1UxHs5wCHGaojvf8s9ZzSTme52g3MLtikQCEpgv BFG2vLSKzw9XsExUH5WqtDyDLyxZNqqrlwlhZWbaVfHhpFoUf2ToOAF6lA2vB40U
zqIgSH4bzAJu0fc5Je1qRpxiwATyf7B7vC276XSWkDIxDZBUSupLoZNua0NdZ7mh EmG2dFgnrvC43oZIh46W1EGs0yKmeinJuZWh/OIQI1oNP6TCzEAkmzaLZOtlBQSy
cTXyFIexrWOJk3xJjKfcTQZEB+RxVZk/vSADAnaVKo/YuzBoSx2A1HEwVDOPc4TD 0wYVGYp/DwkzGOink7Izz3GP6CHeDUwzp3tazeOQAqgz5cjUmc4O6GNl78MdSeu8
vwPIfM9LDoS6YrN4mKDvkjlUtgds/5rXcOVxEQAAaG/md5RvRTOAFbpBKs/pbZc= rD0DQNELvDK2TXsE8b17MdK/ZdHZNGuq27xZeVcedF5CQ+7fkv2I9vHsGulj8dF/
=2HIC KwmW68r0bBmvZsM0xsBbvpKPfAfHeg==
=9xzR
-----END PGP SIGNATURE----- -----END PGP SIGNATURE-----
+14 -38
View File
@@ -1,44 +1,20 @@
Origin: . stable Origin: Eendoe
Label: . stable Label: Eendoe Repository
Suite: stable Suite: stable
Codename: stable Codename: stable
Date: Wed, 27 Dec 2023 15:09:09 UTC Date: Tue, 20 Oct 2026 21:36:18 +0000
Architectures: amd64 Architectures: amd64 all
Components: main Components: main
Description: Generated by aptly Description: Eendoe Private APT Package Repository
MD5Sum: MD5Sum:
cf5f351b126aaab2bf6ca97c13b378c5 3405449 Contents-amd64 8fc1ad8fefc657a8da319cc9b55c6eaf 4709 main/binary-amd64/Packages
9f23a2449f3abc4c6fccecfd01fd86e3 152525 Contents-amd64.gz a6c07fa32055f89a45b322fc1804dd8e 1747 main/binary-amd64/Packages.gz
cf5f351b126aaab2bf6ca97c13b378c5 3405449 main/Contents-amd64 cddb357d915f3e3cc9c59e221003730d 1893 main/binary-amd64/Packages.bz2
9f23a2449f3abc4c6fccecfd01fd86e3 152525 main/Contents-amd64.gz
f8778b24beb2988de929e2d59d1f4c58 2761 main/binary-amd64/Packages
a9ae692d17b8e39db0555ab28ca1207d 1357 main/binary-amd64/Packages.bz2
9a64097df252b063fd82b0127ffc57ae 1268 main/binary-amd64/Packages.gz
1a863a05e2aa38a0db0bf785722d7fae 99 main/binary-amd64/Release
SHA1: SHA1:
5fe9dd2d9aa59f1f24de2ca35728e05db5f74655 3405449 Contents-amd64 e349ded34482fa7054812a7ff8ec1675a0d3987b 4709 main/binary-amd64/Packages
3913d6a2268e0599ee051d4a267b70a4740c03fa 152525 Contents-amd64.gz c8c126f431f6813812de54c586da7d3c998008cb 1747 main/binary-amd64/Packages.gz
5fe9dd2d9aa59f1f24de2ca35728e05db5f74655 3405449 main/Contents-amd64 f875d955166a78973c768b08bc595a2dcb7c41c7 1893 main/binary-amd64/Packages.bz2
3913d6a2268e0599ee051d4a267b70a4740c03fa 152525 main/Contents-amd64.gz
7236da7bf2d82d5b66a9305d78f7ec7876792c71 2761 main/binary-amd64/Packages
a2ed1b4117915d2349051ada9ddc089113aa7803 1357 main/binary-amd64/Packages.bz2
a628182db07c468ccf6236597693c3624a0eb9f8 1268 main/binary-amd64/Packages.gz
279ffa18634b8d6c311595f6e6db2c1b2324b3ef 99 main/binary-amd64/Release
SHA256: SHA256:
0ec939a6371353e8ba850811ecba0bd6749ecf5ad4e6ffe4d3f4d48ed68dc8ee 3405449 Contents-amd64 8bd948850a78b9f51ef065ce194760947b7bfb60e0124bdf8ff115e4eaa51d62 4709 main/binary-amd64/Packages
915bdf7b19675b1eb09b22f0aada96d0d1557fa9ed70a3e71db197c71376db02 152525 Contents-amd64.gz 4cff378eeaf24824f9e9027c8e4b2e42023c7fb8b83bb9e3517caffc82ee7c66 1747 main/binary-amd64/Packages.gz
0ec939a6371353e8ba850811ecba0bd6749ecf5ad4e6ffe4d3f4d48ed68dc8ee 3405449 main/Contents-amd64 a38a8258163e341ddaf3708b7dab8d4437d9b65ef1267539d3c184cc2c367ade 1893 main/binary-amd64/Packages.bz2
915bdf7b19675b1eb09b22f0aada96d0d1557fa9ed70a3e71db197c71376db02 152525 main/Contents-amd64.gz
f2197b98eadd153d364ff7948bca222763f70e18b76a963b504c1ebbbeb0f2b7 2761 main/binary-amd64/Packages
7dc41b5f359d26cb8c1bcc4b512c94c5db1b402efb15e76d5d0d23625cdca933 1357 main/binary-amd64/Packages.bz2
64f1a3fd43c28053b3c2301a123b4cf6dc5a1370a94463d861fab3856554366e 1268 main/binary-amd64/Packages.gz
101f8d561bb536f600918ab98ffb742828149f0d90ed0b007b7b761e9ad4f8a2 99 main/binary-amd64/Release
SHA512:
ec29ceab750bab737fbbcc9f00b74c334d0e1ea2f62c0081ed9b695d76bac1296f7560b2ee80361c9f8ed2b538a6adad21d8d3b55200fa71096ac09cd6c7eebd 3405449 Contents-amd64
69bbc10540b2bb90941dd2b6804544c91fd335e91f7674f50b2d32312257b997f34ec5d0147d69a16164e41e2bdbdc008a74c863b6de0c42c15eba062c540efa 152525 Contents-amd64.gz
ec29ceab750bab737fbbcc9f00b74c334d0e1ea2f62c0081ed9b695d76bac1296f7560b2ee80361c9f8ed2b538a6adad21d8d3b55200fa71096ac09cd6c7eebd 3405449 main/Contents-amd64
69bbc10540b2bb90941dd2b6804544c91fd335e91f7674f50b2d32312257b997f34ec5d0147d69a16164e41e2bdbdc008a74c863b6de0c42c15eba062c540efa 152525 main/Contents-amd64.gz
19efa178a219564af52c8eff763c820d973a9f00f43a6fd5d1599179661b025a043da630874ba56814ca43608d68aa2e555bb5f303a3d84deb1412c4c8923ff6 2761 main/binary-amd64/Packages
87099e5b28836adde21419be72bc16bbb6b02bd901f8372df2de3543d03f8de9ff58fd058ef7bc90a7bafc9b8d4c38fdd25c507b788b8054d79d448c97ef32d7 1357 main/binary-amd64/Packages.bz2
dc706a07d45f70d0bf645c4d65e1b6b235a66dfa294f8a77825b1395cf40aa3a2ed097f7092e4635c99ff231fc9f44852d0b91ed09fbbd1cc8a78bb758afc2e7 1268 main/binary-amd64/Packages.gz
fd75f52e3d8ab190e919a646d1ccc84e447b32e45691f0f9f65c3ac5ac806f024f7edef6e0c3c9e2d19a5f2621dcd3744f684d9b87a7cdc493b0eb55e7a0b393 99 main/binary-amd64/Release
+8 -7
View File
@@ -1,10 +1,11 @@
-----BEGIN PGP SIGNATURE----- -----BEGIN PGP SIGNATURE-----
wsBcBAABCAAQBQJljD4VCRBWSZ+SBjn1cQAA8egIADfaxAQ/X/sjUAVIXODYu2cu iQEyBAABCgAdFiEEUQdwLhqNQP44F6OuVkmfkgY59XEFAmrX3tIACgkQVkmfkgY5
CWzVmXJ9PcNAQhTo+3rCgLKfs2o8Vw4lKGbNlAUAUZuLTooAUAmIqqnkgaiJsXLO 9XGlSQf4useyfLCS4hNEM1x4soVjDwrs5LB8nQJTs14zHZ00YFinE66kaV6OdDJv
wGWqbHRi/opVVvYRATpuQJfpZ6Du9z8bhmnm7klVlZhluxuFia1analsT3lOopI1 MH+vv9JdMFK+tyaemkw2xKkDib0RyLx8rQYqGERI/TX6RBTIlZRa7TBwVw4YuleC
GrXrN4TMXwUp3tOk/7hWaP/ME3v0MsMIqtrkDwseA8lQ7pMhA8TnmabDZTSmf94R jPeXtyFJGvho4rAN6gS1jG5POHhnZk9cZPeCsC9ydoAXBevQV6j1WR3n98qvx/vp
KxYzw8TaI/Ddrs9HBsP9d0hUqOvyhicwqC5XF4Rtn9GgjN2H0+/vUPkNta7I8zOV ObAqVIGX7uP7Ffmgo5yXZUWOeLU7lmaiwjv8yMEjirqHpqhxq9qkYe41tXS2NJ18
UlnOj0r8owjVKg4opRqrGfk14MmyliQZ2KlFHhsgdxUoTB0QPuFKnQLflwx7Ztw= ZCrm0uutbDdOS4DiU2ndSNKDd9bQtNwU9X0+xviFzOteMtOMEhtzycytDBFCur3z
=tgYK Np6uCQaoxKOLfgomTeKhBG6PRbOo
=UcVa
-----END PGP SIGNATURE----- -----END PGP SIGNATURE-----
@@ -1,29 +1,91 @@
Package: eendoe-repository Package: bnhmeijer-ca-certificates
Section: utils Version: 1.0.0
Maintainer: Bart Meijer
Architecture: all Architecture: all
Maintainer: Bart Meijer <info@bnhmeijer.nl>
Depends: ca-certificates
Filename: pool/main/b/bnhmeijer-ca-certificates/bnhmeijer-ca-certificates-1.0.0_all.deb
Size: 2408
MD5sum: 042a9554c51f2add03a5cd82cacb616f
SHA1: 439678abe947246bfc25d8ad4bd336acada4bec1
SHA256: 2a87b6bb51d751c47ebc83d5dfc81f1874c509e70859cf25a0003f0e2c5fb382
Section: utils
Priority: optional
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.
Package: bnhmeijer-ca-certificates
Version: 1.0.1
Architecture: all
Maintainer: Bart Meijer <info@bnhmeijer.nl>
Depends: ca-certificates
Recommends: libnss3-tools
Filename: pool/main/b/bnhmeijer-ca-certificates/bnhmeijer-ca-certificates-1.0.1_all.deb
Size: 3548
MD5sum: e3933131eb461153e3b52ebb1605815b
SHA1: 31bb175b972276bca977646af656a9f3b7a9083e
SHA256: cfe6653252f5b55a26e645efb6718a72049c5e4185d77d915fc50fcf635acfc3
Section: utils
Priority: optional
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 configures system policies
for Firefox, Google Chrome, Chromium and Brave browsers.
Ensures all homelab internal services (*.lan and *.bnhmeijer.nl) signed by
cert-service are automatically trusted by the OS and browsers.
Package: eendoe-hyperdeck
Version: 0.15.2
Architecture: all
Maintainer: nl.eendoe.bart
Depends: python3, python3-pip, ffmpeg, eendoe-srs
Filename: pool/main/e/eendoe-hyperdeck/eendoe-hyperdeck-0.15.2_all.deb
Size: 11316
MD5sum: 17a094c21bc92198231c1438cd834633
SHA1: 45e06ad000760f88ee025d888b246bacc59da1a8
SHA256: 7a5de2fa5289da9fe3227b5e39ff9b837d3c99c397008376d6b29714fcd3dd1e
Section: utils
Description: Eendoe hyperdeck client module
Package: eendoe-repository
Version: 1.0 Version: 1.0
Architecture: all
Maintainer: Bart Meijer
Filename: pool/main/e/eendoe-repository/eendoe-repository-1.0_all.deb Filename: pool/main/e/eendoe-repository/eendoe-repository-1.0_all.deb
Size: 7224 Size: 7224
MD5sum: 1dec21c569795d9a7c408b49bc462351 MD5sum: 1dec21c569795d9a7c408b49bc462351
SHA1: f81b15730a43fc3e8bb002046a09755c83b00794 SHA1: f81b15730a43fc3e8bb002046a09755c83b00794
SHA256: 87fe58023583065366484a08af3789e276a0ab87516eae549e550dd6e74ca78f SHA256: 87fe58023583065366484a08af3789e276a0ab87516eae549e550dd6e74ca78f
SHA512: 6c5ccca79318822ea39cfe04bbf8c11e9be06e8f53aafdef9a47b8bbcf3b2370b1ad1d15e23fb36378aa8cf3304fce8563f5e963299eda348636f0e1eead4809 Section: utils
Description: Eendoe package repository Description: Eendoe package repository
Package: eendoe-srs
Version: 0.0.1
Architecture: all
Maintainer: nl.eendoe.bart
Depends: python3, python3-pip, ffmpeg
Filename: pool/main/e/eendoe-srs/eendoe-srs-0.0.1_all.deb
Size: 12412098
MD5sum: 1c91d1fdfff4a8c2b1512c28d49e5ea9
SHA1: a8ad5125183f618f0f652275670f4369f4fca07b
SHA256: 38f8b0288471024e2cb4465210bb28fa6bf3442a4d7c938a598686595d67eebc
Section: utils
Description: Eendoe Hyperdeck SRS module
Package: oracle-database-preinstall-21c Package: oracle-database-preinstall-21c
Priority: extra
Section: alien
Installed-Size: 101
Maintainer: Bart Meijer <bart@vmserver>
Architecture: amd64
Version: 1.0-2 Version: 1.0-2
Architecture: amd64
Maintainer: Bart Meijer <bart@vmserver>
Installed-Size: 101
Filename: pool/main/o/oracle-database-preinstall-21c/oracle-database-preinstall-21c_1.0-2_amd64.deb Filename: pool/main/o/oracle-database-preinstall-21c/oracle-database-preinstall-21c_1.0-2_amd64.deb
Size: 19796 Size: 19796
MD5sum: 9a95793469fb85f535a26266b60738bf MD5sum: 9a95793469fb85f535a26266b60738bf
SHA1: 6869aad4114275c479e40865bba021c6ca02e6cb SHA1: 6869aad4114275c479e40865bba021c6ca02e6cb
SHA256: a6ad8c2b5b204f631f88199ed799784ad6fd73bd65d899277b8e786ecf5bb578 SHA256: a6ad8c2b5b204f631f88199ed799784ad6fd73bd65d899277b8e786ecf5bb578
SHA512: 617ce833e5771b2d55f8d1c39c77adf1f775590565ff056610625f8c24450150d4a563a7a4cac25966b41c6becd90e73c38c379bc198096acd0b673eaa0b48e2 Section: alien
Priority: extra
Description: Oracle Database Preinstallation RPM Description: Oracle Database Preinstallation RPM
The Oracle Database Preinstallation RPM automatically installs any additional The Oracle Database Preinstallation RPM automatically installs any additional
packages needed for installing Oracle Grid Infrastructure and Oracle Database packages needed for installing Oracle Grid Infrastructure and Oracle Database
@@ -33,33 +95,31 @@ Description: Oracle Database Preinstallation RPM
(Converted from a rpm package by alien version 8.95.) (Converted from a rpm package by alien version 8.95.)
Package: oracle-database-xe-21c Package: oracle-database-xe-21c
Section: utils
Maintainer: Bart Meijer
Architecture: all
Version: 1.0.3
Filename: pool/main/o/oracle-database-xe-21c/oracle-database-xe-21c-1.0.3_all.deb
Size: 2188370848
MD5sum: b89910db6b9ba0ab149db6ee78a711f8
SHA1: 39e2f816b81ccc4dbbc4bc89d20361272dd59161
SHA256: ec96ebd544d9492e3696fc609d18a539357c653b3fb4264d144fbd0a27b23eec
SHA512: 1922b4fec8b7e6b03a298a2f8d4f400ec9aa9b2d7ad6fe4ceaa83d136c6d5910316f46c6025b352b05ce18ad8fc9e3b7286bf3948e000a1857b6fce2d2c19c03
Description: Eendoe package repository
Package: oracle-database-xe-21c
Priority: extra
Section: alien
Installed-Size: 6067591
Maintainer: Bart Meijer <bart@vmserver>
Architecture: amd64
Version: 1.0-2 Version: 1.0-2
Architecture: amd64
Maintainer: Bart Meijer <bart@vmserver>
Installed-Size: 6067591
Filename: pool/main/o/oracle-database-xe-21c/oracle-database-xe-21c_1.0-2_amd64.deb Filename: pool/main/o/oracle-database-xe-21c/oracle-database-xe-21c_1.0-2_amd64.deb
Size: 2188841976 Size: 2188841976
MD5sum: 0b39df8f78e8c909557d1f028c9e7e5f MD5sum: 0b39df8f78e8c909557d1f028c9e7e5f
SHA1: 882d1f5f63d842c6051a9aa0ec57a2d34cdb1a3f SHA1: 882d1f5f63d842c6051a9aa0ec57a2d34cdb1a3f
SHA256: 5b1401ac3e34ac5c0c636b8b41a6b3762f9b8297fb6f42c3bc2d1d05677ae01d SHA256: 5b1401ac3e34ac5c0c636b8b41a6b3762f9b8297fb6f42c3bc2d1d05677ae01d
SHA512: 9ff82c1b2d09582f1c456ba99ecb3f3be5079bd00a5101c7f927fb3752bc869fe4e982b51d170feca64e9ab6ab58c41566a30e57b1ff9fe066041bc0465e3d2a Section: alien
Priority: extra
Description: Oracle 21c Express Edition Database Description: Oracle 21c Express Edition Database
Oracle 21c Express Edition Database Oracle 21c Express Edition Database
. .
(Converted from a rpm package by alien version 8.95.) (Converted from a rpm package by alien version 8.95.)
Package: oracle-database-xe-21c
Version: 1.0.3
Architecture: all
Maintainer: Bart Meijer
Filename: pool/main/o/oracle-database-xe-21c/oracle-database-xe-21c-1.0.3_all.deb
Size: 2188370848
MD5sum: b89910db6b9ba0ab149db6ee78a711f8
SHA1: 39e2f816b81ccc4dbbc4bc89d20361272dd59161
SHA256: ec96ebd544d9492e3696fc609d18a539357c653b3fb4264d144fbd0a27b23eec
Section: utils
Description: Eendoe package repository
Binary file not shown.
Binary file not shown.
Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

+713 -2
View File
@@ -1,6 +1,717 @@
<!DOCTYPE html>
<html lang="nl">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>Eendoe Package Repository - Softwareontwikkeling en IT-solutions</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="Eendoe Services B.V. - Private APT Package Repository"/>
<meta name="author" content="Bart Meijer" />
<link rel="icon" type="image/png" sizes="32x32" href="https://eendoe.nl/favicon-32x32.png">
<link href='https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,700,400italic' rel='stylesheet' type='text/css'>
<a href="/pool/main/e/eendoe-repository/eendoe-repository-1.0_all.deb">Download</a> <style>
:root {
--primary-gradient: repeating-linear-gradient(to bottom right, #3f95ea 0%, #52d3aa 100%);
--accent-teal: #52d3aa;
--accent-teal-hover: #40ba93;
--accent-blue: #3f95ea;
--bg-light: #f7f9fc;
--card-bg: #ffffff;
--text-dark: #2c3e50;
--text-muted: #64748b;
--border-color: #e2e8f0;
--code-bg: #1e293b;
--code-text: #52d3aa;
}
* {
box-sizing: border-box;
margin: 0;
padding: 0;
}
wget https://repository.eendoe.nl/pool/main/e/eendoe-repository/eendoe-repository-1.0_all.deb && sudo dpkg -i eendoe-repository-1.0_all.deb body {
font-family: "Source Sans Pro", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Arial, sans-serif;
background-color: var(--bg-light);
color: var(--text-dark);
line-height: 1.6;
overflow-x: hidden;
}
/* Top Bar / Nav */
.top-nav {
position: absolute;
top: 0;
left: 0;
right: 0;
z-index: 10;
padding: 1.25rem 2rem;
display: flex;
justify-content: space-between;
align-items: center;
}
.brand-logo img {
height: 48px;
width: auto;
display: block;
}
.nav-link {
color: rgba(255, 255, 255, 0.9);
text-decoration: none;
font-size: 0.95rem;
font-weight: 600;
border: 1px solid rgba(255, 255, 255, 0.35);
padding: 0.45rem 1rem;
border-radius: 9999px;
transition: all 0.3s ease;
background: rgba(0, 0, 0, 0.15);
backdrop-filter: blur(4px);
}
.nav-link:hover {
background: #ffffff;
color: var(--accent-blue);
border-color: #ffffff;
text-decoration: none;
}
/* Hero Header styled like eendoe.nl */
#fh5co-home {
background-color: #52d3aa;
background-image: url('images/headerback.jpeg');
background-size: cover;
background-position: center center;
background-repeat: no-repeat;
position: relative;
width: 100%;
min-height: 460px;
display: flex;
align-items: center;
justify-content: center;
color: #ffffff;
text-align: center;
padding: 6rem 1.5rem 5rem 1.5rem;
}
#fh5co-home .gradient {
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
z-index: 2;
opacity: 0.92;
background-image: repeating-linear-gradient(to bottom right, #3f95ea 0%, #52d3aa 100%);
}
#fh5co-home .hero-content {
position: relative;
z-index: 4;
max-width: 800px;
margin: 0 auto;
}
.status-pill {
display: inline-flex;
align-items: center;
gap: 0.5rem;
background: rgba(0, 0, 0, 0.2);
border: 1px solid rgba(255, 255, 255, 0.3);
padding: 0.35rem 1rem;
border-radius: 9999px;
font-size: 0.85rem;
font-weight: 600;
margin-bottom: 1.25rem;
color: #ffffff;
backdrop-filter: blur(5px);
}
.status-dot {
width: 8px;
height: 8px;
background-color: #22c55e;
border-radius: 50%;
display: inline-block;
box-shadow: 0 0 8px #22c55e;
}
#fh5co-home h1 {
font-size: 3rem;
font-weight: 700;
color: #ffffff;
margin-bottom: 1rem;
letter-spacing: -0.5px;
}
#fh5co-home h2 {
font-size: 1.45rem;
line-height: 1.5;
font-weight: 300;
color: rgba(255, 255, 255, 0.92);
margin: 0;
}
/* Diagonal Slant Divider */
.slant {
position: absolute;
transform: rotate(-1.5deg);
background-color: var(--bg-light);
z-index: 3;
display: block;
height: 60px;
bottom: -30px;
left: -1%;
width: 102%;
}
/* Content Layout */
.main-container {
max-width: 960px;
margin: -20px auto 4rem auto;
padding: 0 1.25rem;
position: relative;
z-index: 5;
}
.card {
background: var(--card-bg);
border: 1px solid var(--border-color);
border-radius: 12px;
padding: 2rem;
margin-bottom: 2rem;
box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.05), 0 8px 10px -6px rgba(0, 0, 0, 0.02);
}
.card-header {
display: flex;
align-items: center;
gap: 1rem;
margin-bottom: 1.5rem;
border-bottom: 1px solid var(--border-color);
padding-bottom: 1rem;
}
.card-icon {
width: 48px;
height: 48px;
border-radius: 10px;
background: var(--primary-gradient);
color: #ffffff;
display: flex;
align-items: center;
justify-content: center;
font-size: 1.5rem;
box-shadow: 0 4px 12px rgba(82, 211, 170, 0.35);
}
h2.card-title {
font-size: 1.5rem;
font-weight: 700;
color: var(--text-dark);
margin: 0;
}
.card-desc {
color: var(--text-muted);
font-size: 1rem;
margin-top: 0.25rem;
}
/* Tabs */
.tab-nav {
display: flex;
gap: 0.5rem;
margin-bottom: 1.25rem;
border-bottom: 2px solid #edf2f7;
padding-bottom: 0.5rem;
}
.tab-btn {
background: transparent;
border: none;
color: var(--text-muted);
padding: 0.5rem 1rem;
font-family: inherit;
font-size: 1rem;
font-weight: 600;
cursor: pointer;
border-radius: 6px;
transition: all 0.2s;
}
.tab-btn:hover {
color: var(--text-dark);
background: #edf2f7;
}
.tab-btn.active {
color: #ffffff;
background: var(--accent-blue);
}
.tab-panel {
display: none;
}
.tab-panel.active {
display: block;
}
/* Code Blocks */
.code-box {
position: relative;
background: var(--code-bg);
border-radius: 8px;
padding: 1rem 1.25rem;
margin: 1rem 0;
display: flex;
align-items: center;
justify-content: space-between;
overflow-x: auto;
box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.2);
}
.code-box code {
font-family: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace;
font-size: 0.95rem;
color: var(--code-text);
word-break: break-all;
}
.copy-btn {
background: rgba(255, 255, 255, 0.1);
color: #ffffff;
border: 1px solid rgba(255, 255, 255, 0.2);
padding: 0.4rem 0.85rem;
border-radius: 6px;
font-size: 0.82rem;
font-weight: 600;
cursor: pointer;
transition: all 0.2s;
margin-left: 1rem;
white-space: nowrap;
}
.copy-btn:hover {
background: var(--accent-teal);
color: #ffffff;
border-color: var(--accent-teal);
}
.copy-btn.copied {
background: var(--accent-teal);
color: #ffffff;
border-color: var(--accent-teal);
}
/* Notice / Alert */
.notice-card {
background: #fffbeb;
border-left: 4px solid #f59e0b;
padding: 1rem 1.25rem;
border-radius: 0 8px 8px 0;
color: #92400e;
font-size: 0.95rem;
margin-top: 1rem;
}
/* Step List */
.step-list {
list-style: none;
counter-reset: step-counter;
}
.step-entry {
position: relative;
padding-left: 3rem;
margin-bottom: 1.5rem;
}
.step-entry::before {
counter-increment: step-counter;
content: counter(step-counter);
position: absolute;
left: 0;
top: 0;
width: 2.2rem;
height: 2.2rem;
background: var(--primary-gradient);
color: #ffffff;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
font-weight: 700;
font-size: 0.95rem;
box-shadow: 0 3px 8px rgba(63, 149, 234, 0.3);
}
.step-header {
font-weight: 700;
font-size: 1.1rem;
color: var(--text-dark);
margin-bottom: 0.25rem;
}
.step-info {
color: var(--text-muted);
font-size: 0.95rem;
margin-bottom: 0.5rem;
}
/* Packages Grid */
.pkg-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
gap: 1.25rem;
margin-top: 1rem;
}
.pkg-card {
background: #ffffff;
border: 1px solid var(--border-color);
border-radius: 8px;
padding: 1.25rem;
display: flex;
flex-direction: column;
justify-content: space-between;
transition: transform 0.2s, box-shadow 0.2s;
}
.pkg-card:hover {
transform: translateY(-2px);
box-shadow: 0 8px 20px rgba(0, 0, 0, 0.08);
border-color: var(--accent-teal);
}
.pkg-name {
font-size: 1.15rem;
font-weight: 700;
color: var(--accent-blue);
margin-bottom: 0.5rem;
}
.pkg-desc {
color: var(--text-muted);
font-size: 0.92rem;
margin-bottom: 1rem;
flex-grow: 1;
}
.pkg-footer {
border-top: 1px solid #edf2f7;
padding-top: 0.75rem;
display: flex;
justify-content: space-between;
font-size: 0.82rem;
color: #94a3b8;
font-family: monospace;
}
/* Action Buttons */
.btn-group {
display: flex;
gap: 1rem;
flex-wrap: wrap;
margin-top: 1.5rem;
}
.btn-eendoe {
display: inline-flex;
align-items: center;
gap: 0.5rem;
background: var(--primary-gradient);
color: #ffffff;
text-decoration: none;
padding: 0.65rem 1.4rem;
border-radius: 9999px;
font-weight: 600;
font-size: 0.95rem;
box-shadow: 0 4px 12px rgba(82, 211, 170, 0.35);
transition: all 0.3s;
}
.btn-eendoe:hover {
box-shadow: 0 6px 18px rgba(82, 211, 170, 0.5);
transform: translateY(-1px);
color: #ffffff;
text-decoration: none;
}
.btn-outline {
display: inline-flex;
align-items: center;
gap: 0.5rem;
background: transparent;
color: var(--text-dark);
text-decoration: none;
border: 1px solid var(--border-color);
padding: 0.65rem 1.4rem;
border-radius: 9999px;
font-weight: 600;
font-size: 0.95rem;
transition: all 0.3s;
}
.btn-outline:hover {
border-color: var(--accent-blue);
color: var(--accent-blue);
text-decoration: none;
background: #ffffff;
}
/* Footer matching eendoe.nl */
#footer {
background: #222831;
color: rgba(255, 255, 255, 0.6);
text-align: center;
padding: 3rem 1rem;
font-size: 0.9rem;
margin-top: 4rem;
}
#footer a {
color: var(--accent-teal);
text-decoration: none;
}
#footer a:hover {
text-decoration: underline;
}
#footer .legal {
margin-top: 0.5rem;
font-size: 0.85rem;
color: rgba(255, 255, 255, 0.4);
}
@media (max-width: 768px) {
#fh5co-home h1 { font-size: 2.2rem; }
#fh5co-home h2 { font-size: 1.15rem; }
.card { padding: 1.5rem 1.25rem; }
.code-box { flex-direction: column; align-items: flex-start; gap: 0.75rem; }
.copy-btn { margin-left: 0; }
}
</style>
</head>
<body>
<!-- Top Navigation -->
<nav class="top-nav">
<a href="https://eendoe.nl" class="brand-logo" title="Eendoe Services B.V.">
<img src="images/eendoe.png" alt="Eendoe B.V.">
</a>
<a href="https://eendoe.nl" class="nav-link" target="_blank" rel="noopener">
&larr; Terug naar eendoe.nl
</a>
</nav>
<!-- Hero Header with Eendoe Brand Gradient and Diagonal Slant -->
<header id="fh5co-home">
<div class="gradient"></div>
<div class="hero-content">
<div class="status-pill">
<span class="status-dot"></span>
Private APT Repository &bull; HTTP Basic Auth
</div>
<h1>Package Repository</h1>
<h2>Officiële Debian &amp; Ubuntu software repository voor Eendoe services en maatwerk automatiseringscomponenten.</h2>
</div>
<div class="slant"></div>
</header>
<!-- Main Content -->
<main class="main-container">
<!-- Card: Snelle Installatie -->
<section class="card">
<div class="card-header">
<div class="card-icon">⚡</div>
<div>
<h2 class="card-title">Snelle Installatie (1 Commando)</h2>
<p class="card-desc">Voer het onderstaande commando uit op Linux Mint, Ubuntu of Debian om de repository direct in te stellen.</p>
</div>
</div>
<div class="tab-nav">
<button class="tab-btn active" onclick="switchTab(event, 'tab-interactive')">Interactief (Aanbevolen)</button>
<button class="tab-btn" onclick="switchTab(event, 'tab-silent')">Stille One-Liner</button>
</div>
<div id="tab-interactive" class="tab-panel active">
<p class="card-desc">Vraagt interactief om je inloggegevens zonder dat je wachtwoord in de shellgeschiedenis belandt:</p>
<div class="code-box">
<code>curl -sSL https://eendoe.nl/install-repo.sh | sudo bash</code>
<button class="copy-btn" onclick="copyCode(this)">Kopieer</button>
</div>
</div>
<div id="tab-silent" class="tab-panel">
<p class="card-desc">Voor unattended installaties of scripts (vul je eigen wachtwoord in):</p>
<div class="code-box">
<code>curl -sSL https://eendoe.nl/install-repo.sh | sudo bash -s -- eendoe &lt;wachtwoord&gt;</code>
<button class="copy-btn" onclick="copyCode(this)">Kopieer</button>
</div>
</div>
<div class="notice-card">
🔒 <strong>Beveiligde toegang:</strong> Deze repository is privé. Gebruik je verstrekte inloggegevens (standaard gebruikersnaam: <code>eendoe</code>).
</div>
</section>
<!-- Card: Handmatige Configuratie -->
<section class="card">
<div class="card-header">
<div class="card-icon">🛠️</div>
<div>
<h2 class="card-title">Handmatige Configuratie</h2>
<p class="card-desc">Liever handmatig stap voor stap configureren? Volg de onderstaande instructies:</p>
</div>
</div>
<ol class="step-list">
<li class="step-entry">
<div class="step-header">Authenticatie instellen</div>
<div class="step-info">Maak <code>/etc/apt/auth.conf.d/eendoe.conf</code> aan met strikte rechten (<code>chmod 600</code>):</div>
<div class="code-box">
<code>echo "machine repository.eendoe.nl login eendoe password &lt;wachtwoord&gt;" | sudo tee /etc/apt/auth.conf.d/eendoe.conf && sudo chmod 600 /etc/apt/auth.conf.d/eendoe.conf</code>
<button class="copy-btn" onclick="copyCode(this)">Kopieer</button>
</div>
</li>
<li class="step-entry">
<div class="step-header">GPG Release sleutel importeren</div>
<div class="step-info">Plaats de Eendoe GPG release sleutel in <code>/etc/apt/keyrings/eendoe.gpg</code>:</div>
<div class="code-box">
<code>sudo install -m 0755 -d /etc/apt/keyrings && curl -sSL https://eendoe.nl/install-repo.sh | grep -A 100 'BEGIN PGP' | grep -B 100 'END PGP' | gpg --dearmor | sudo tee /etc/apt/keyrings/eendoe.gpg > /dev/null</code>
<button class="copy-btn" onclick="copyCode(this)">Kopieer</button>
</div>
</li>
<li class="step-entry">
<div class="step-header">Repository toevoegen aan sources.list</div>
<div class="step-info">Maak het bronbestand <code>/etc/apt/sources.list.d/eendoe.list</code> aan:</div>
<div class="code-box">
<code>echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/eendoe.gpg] https://repository.eendoe.nl/ stable main" | sudo tee /etc/apt/sources.list.d/eendoe.list</code>
<button class="copy-btn" onclick="copyCode(this)">Kopieer</button>
</div>
</li>
<li class="step-entry">
<div class="step-header">Pakketlijst bijwerken</div>
<div class="step-info">Synchroniseer de nieuwe repository:</div>
<div class="code-box">
<code>sudo apt update</code>
<button class="copy-btn" onclick="copyCode(this)">Kopieer</button>
</div>
</li>
</ol>
</section>
<!-- Card: Beschikbare Pakketten -->
<section class="card">
<div class="card-header">
<div class="card-icon">📦</div>
<div>
<h2 class="card-title">Beschikbare Pakketten</h2>
<p class="card-desc">Pakketten die via deze repository kunnen worden geïnstalleerd:</p>
</div>
</div>
<div class="pkg-grid">
<div class="pkg-card">
<div>
<div class="pkg-name">eendoe-hyperdeck</div>
<div class="pkg-desc">Blackmagic Hyperdeck automatiserings- en recording controller service met systemd integratie.</div>
</div>
<div class="pkg-footer">
<span>Versie: 0.15.2</span>
<span>Arch: all</span>
</div>
</div>
<div class="pkg-card">
<div>
<div class="pkg-name">eendoe-srs</div>
<div class="pkg-desc">Simple Realtime Server (SRS) video feed streaming en ingest daemon.</div>
</div>
<div class="pkg-footer">
<span>Versie: 0.0.1</span>
<span>Arch: all</span>
</div>
</div>
<div class="pkg-card">
<div>
<div class="pkg-name">bnhmeijer-ca-certificates</div>
<div class="pkg-desc">Bnhmeijer Homelab Root CA certificaat. Voegt de root CA automatisch toe aan de OS trust store zodat interne TLS-certificaten direct vertrouwd worden.</div>
</div>
<div class="pkg-footer">
<span>Versie: 1.0.0</span>
<span>Arch: all</span>
</div>
</div>
<div class="pkg-card">
<div>
<div class="pkg-name">eendoe-repository</div>
<div class="pkg-desc">Bootstrap configuratiepakket om automatisch de repository sleutels en bronnen in te stellen.</div>
</div>
<div class="pkg-footer">
<span>Versie: 1.0</span>
<span>Arch: all</span>
</div>
</div>
</div>
<div class="btn-group">
<a class="btn-eendoe" href="/pool/main/e/eendoe-repository/eendoe-repository-1.0_all.deb">
⬇️ Download eendoe-repository.deb
</a>
<a class="btn-outline" href="/dists/stable/">
📁 Blader /dists/stable/
</a>
<a class="btn-outline" href="/pool/main/">
📦 Blader /pool/main/
</a>
</div>
</section>
</main>
<!-- Footer matching eendoe.nl -->
<footer id="footer">
<p>Eendoe Services B.V. &bull; <a href="https://eendoe.nl" target="_blank" rel="noopener">www.eendoe.nl</a> &bull; KvK 71 604 839 &bull; BTW NL858780100B01</p>
<p class="legal"><a href="https://eendoe.nl/documents/algemene%20voorwaarden.pdf" target="_blank" rel="noopener">Algemene voorwaarden</a> &bull; Beheerd via Homelab GitOps Cluster</p>
</footer>
<script>
function copyCode(btn) {
const codeElement = btn.parentElement.querySelector('code');
const text = codeElement.innerText;
navigator.clipboard.writeText(text).then(() => {
const original = btn.innerText;
btn.innerText = 'Gekopieerd!';
btn.classList.add('copied');
setTimeout(() => {
btn.innerText = original;
btn.classList.remove('copied');
}, 2000);
});
}
function switchTab(evt, tabId) {
document.querySelectorAll('.tab-btn').forEach(b => b.classList.remove('active'));
document.querySelectorAll('.tab-panel').forEach(p => p.classList.remove('active'));
evt.currentTarget.classList.add('active');
document.getElementById(tabId).classList.add('active');
}
</script>
</body>
</html>
+11
View File
@@ -26,13 +26,24 @@ REPO_USER="${1:-}"
REPO_PASS="${2:-}" REPO_PASS="${2:-}"
if [ -z "$REPO_USER" ]; then if [ -z "$REPO_USER" ]; then
if [ -t 0 ]; then
read -r -p "Gebruikersnaam voor repository [eendoe]: " INPUT_USER read -r -p "Gebruikersnaam voor repository [eendoe]: " INPUT_USER
elif [ -e /dev/tty ]; then
read -r -p "Gebruikersnaam voor repository [eendoe]: " INPUT_USER </dev/tty
else
INPUT_USER=""
fi
REPO_USER="${INPUT_USER:-eendoe}" REPO_USER="${INPUT_USER:-eendoe}"
fi fi
if [ -z "$REPO_PASS" ]; then if [ -z "$REPO_PASS" ]; then
if [ -t 0 ]; then
read -r -s -p "Wachtwoord voor repository ($REPO_USER): " REPO_PASS read -r -s -p "Wachtwoord voor repository ($REPO_USER): " REPO_PASS
echo "" echo ""
elif [ -e /dev/tty ]; then
read -r -s -p "Wachtwoord voor repository ($REPO_USER): " REPO_PASS </dev/tty
echo ""
fi
fi fi
if [ -z "$REPO_USER" ] || [ -z "$REPO_PASS" ]; then if [ -z "$REPO_USER" ] || [ -z "$REPO_PASS" ]; then
+46
View File
@@ -0,0 +1,46 @@
#!/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" -type f -exec chmod 644 {} +
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"
@@ -0,0 +1,14 @@
Package: bnhmeijer-ca-certificates
Version: 1.0.1
Section: utils
Priority: optional
Architecture: all
Depends: ca-certificates
Recommends: libnss3-tools
Maintainer: Bart Meijer <info@bnhmeijer.nl>
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 configures system policies
for Firefox, Google Chrome, Chromium and Brave browsers.
Ensures all homelab internal services (*.lan and *.bnhmeijer.nl) signed by
cert-service are automatically trusted by the OS and browsers.
@@ -0,0 +1,40 @@
#!/bin/sh
set -e
CA_CRT="/usr/local/share/ca-certificates/bnhmeijer/bnhmeijer-root-ca.crt"
CA_NICKNAME="Bnhmeijer Homelab Root CA"
case "$1" in
configure|abort-upgrade)
# 1. Update OS system trust store
if command -v update-ca-certificates >/dev/null 2>&1; then
echo "Bijwerken van systeem trusted CA certificaten..."
update-ca-certificates >/dev/null 2>&1 || true
fi
# 2. Link Firefox distribution policies if application dir exists
if [ -d /usr/lib/firefox ]; then
mkdir -p /usr/lib/firefox/distribution
if [ ! -e /usr/lib/firefox/distribution/policies.json ] || [ -L /usr/lib/firefox/distribution/policies.json ]; then
ln -sf /etc/firefox/policies/policies.json /usr/lib/firefox/distribution/policies.json
fi
fi
# 3. Import into NSS databases if certutil is installed
if command -v certutil >/dev/null 2>&1 && [ -f "$CA_CRT" ]; then
for user_home in /root $(awk -F: '$3 >= 1000 && $3 < 60000 {print $6}' /etc/passwd 2>/dev/null); do
user_name=$(stat -c '%U' "$user_home" 2>/dev/null || echo "root")
for pki_dir in "$user_home/.pki/nssdb" "$user_home/.local/share/pki/nssdb"; do
if [ -d "$pki_dir" ]; then
certutil -d "sql:$pki_dir" -A -t "TC,," -n "$CA_NICKNAME" -i "$CA_CRT" >/dev/null 2>&1 || true
chown -R "$user_name:" "$pki_dir" 2>/dev/null || true
fi
done
done
fi
echo "Bnhmeijer Root CA is geconfigureerd voor OS, Firefox en Chromium/Chrome."
echo "Herstart actieve browsers om de nieuwe certificaatvertrouwenslijst te laden."
;;
esac
exit 0
@@ -0,0 +1,31 @@
#!/bin/sh
set -e
CA_NICKNAME="Bnhmeijer Homelab Root CA"
case "$1" in
remove|purge|disappear)
# 1. Update OS system trust store
if command -v update-ca-certificates >/dev/null 2>&1; then
echo "Verwijderen van certificaat uit systeem trust store..."
update-ca-certificates --fresh >/dev/null 2>&1 || true
fi
# 2. Clean up Firefox symlink if it points to our policy
if [ -L /usr/lib/firefox/distribution/policies.json ]; then
rm -f /usr/lib/firefox/distribution/policies.json 2>/dev/null || true
fi
# 3. Remove from NSS databases if certutil is installed
if command -v certutil >/dev/null 2>&1; then
for user_home in /root $(awk -F: '$3 >= 1000 && $3 < 60000 {print $6}' /etc/passwd 2>/dev/null); do
for pki_dir in "$user_home/.pki/nssdb" "$user_home/.local/share/pki/nssdb"; do
if [ -d "$pki_dir" ]; then
certutil -d "sql:$pki_dir" -D -n "$CA_NICKNAME" >/dev/null 2>&1 || true
fi
done
done
fi
;;
esac
exit 0
@@ -0,0 +1,5 @@
{
"CACertificates": [
"MIIFZzCCA0+gAwIBAgIRALCvASaMQ9DZPQrGDIYTVkswDQYJKoZIhvcNAQELBQAwTTEiMCAGA1UEAwwZQm5obWVpamVyIEhvbWVsYWIgUm9vdCBDQTEaMBgGA1UECgwRQm5obWVpamVyIEhvbWVsYWIxCzAJBgNVBAYTAk5MMB4XDTI2MTAyMDIwMjQ0OVoXDTM2MTAxNzIwMjQ0OVowTTEiMCAGA1UEAwwZQm5obWVpamVyIEhvbWVsYWIgUm9vdCBDQTEaMBgGA1UECgwRQm5obWVpamVyIEhvbWVsYWIxCzAJBgNVBAYTAk5MMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAuOKEFT0p9uzcxf5hfPyvjFDdFs2GxN3nUNJ+6fzdwR3Bf0yeFYLIHA8C/7hMApt5JGW/ndnYEA7hk0Oj2mbXUo7oj7zIKke5OALBO3SSvJSywwBOsaZ95sSTfkYvmCOLojH/EUmLA6+MmUtSTWMIm1doki2H8BEdXzeE4XtI/Fw8v1kRX0AYA3l4+AB8ejVSHIuhcWgbrwGKkRZFBEAJMXEpIKkYiYPxAZ4AUy4FJHVJwpdK9JLc6ORQS4kpBWJRGROwSePs2hfMn3tSg3xfyOK/c8bOyGTx9O1tjWcfN2cPbGhJ5Uo9j5uyZnAvdkR0mniELB6/G6jM4UzKfmVvQEMtjH76vowFzJmDiKWRJgmq1rEEdSVPDowateLEac5YkGIc9e+/1G3yKQH+eqcHbGvQORnQF03rB5jNWUHdF5WSbMHPszOndMHnUYMrHC025ApIKXcO8R1/ld0DsMRGY4sSwQfRQW5oVOOxQkPMk2LcC4v9Gz/ox9DuAhBXqQUpoXkZ/Zdd2zI2eKLnKuYqkiUvUOUJAUapyztQCCWpxeU9gxTBOrN1g5sSVy3p5lrSWNMQUNXNyOr3ylj3XVQFZxtRWM64tHb8M4UpHYvLG7Bw7m59BgwgEJP686ShnQg/CpE0XpILU+GH8FPL2k8Zl9RBH3jJjLrGEjexiv0KdDcCAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFH1zTZdKh8Q63s5JV5UwrfHB6rAYMA0GCSqGSIb3DQEBCwUAA4ICAQBQmMk725RF2qzN5Me+MuY/N0GdJGNauZ9KvzSybyCIrXfycmidvwU+g1j3nFwVs2FSH3cU6s06jH1Lr0soz74cEmU/Zn94G3Yp8nMh3Nz+qwmJenD1ffF9bTgk2b/jhSRRNU4nDm0HvdfUGLTxgmtAkI45dAmmtynGhKhaFqyxbosxz/PrCqzo6SSrKYx7bHj8Wk2wdB6hDY5UbzOvBVWq8JqZCJiSLNjZNgD64YFUtbBTK3kDCLJhesuf6Qg8UBUL34NqIHfTC5J6G2AlFOLBi6DKBc7rnTlHCCesUUGZqxQy58nCMSlRLKRg3tqQq1Hy839Vb/llmpQDujWDaQ7ptN1bn2ATzdruc+PW2pPv6Ffs3lS7o+69mk5/NDhkqNCM1EYK2hDEkO1jdiyUgmXi0i7ni7Qea3HSK2WYAtHPTIDHAGCzO2Lvfbeq70rfGIf2FJRItIqmS8OjOggGp++ED2d49hvw3Tfxnw108SqYFph2QN/drt8kvcXkMNGQXE7eIqyY5sgI3tJuYpy2r7BWsg0EFwYVphZ0o/SFZTleSTKSxGprNLXKcqxyEYCmZfZLiWRcvTFOkzCqnLQZGJMMdk3Nkq6IwAaZiyRtW6QBHLaIHX/vUX0C3FD+bSuRfZbZGcTmdHVLKAdCOfMp0w/oW5X4vURcjoGJNbd8z0UU0A=="
]
}
@@ -0,0 +1,5 @@
{
"CACertificates": [
"MIIFZzCCA0+gAwIBAgIRALCvASaMQ9DZPQrGDIYTVkswDQYJKoZIhvcNAQELBQAwTTEiMCAGA1UEAwwZQm5obWVpamVyIEhvbWVsYWIgUm9vdCBDQTEaMBgGA1UECgwRQm5obWVpamVyIEhvbWVsYWIxCzAJBgNVBAYTAk5MMB4XDTI2MTAyMDIwMjQ0OVoXDTM2MTAxNzIwMjQ0OVowTTEiMCAGA1UEAwwZQm5obWVpamVyIEhvbWVsYWIgUm9vdCBDQTEaMBgGA1UECgwRQm5obWVpamVyIEhvbWVsYWIxCzAJBgNVBAYTAk5MMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAuOKEFT0p9uzcxf5hfPyvjFDdFs2GxN3nUNJ+6fzdwR3Bf0yeFYLIHA8C/7hMApt5JGW/ndnYEA7hk0Oj2mbXUo7oj7zIKke5OALBO3SSvJSywwBOsaZ95sSTfkYvmCOLojH/EUmLA6+MmUtSTWMIm1doki2H8BEdXzeE4XtI/Fw8v1kRX0AYA3l4+AB8ejVSHIuhcWgbrwGKkRZFBEAJMXEpIKkYiYPxAZ4AUy4FJHVJwpdK9JLc6ORQS4kpBWJRGROwSePs2hfMn3tSg3xfyOK/c8bOyGTx9O1tjWcfN2cPbGhJ5Uo9j5uyZnAvdkR0mniELB6/G6jM4UzKfmVvQEMtjH76vowFzJmDiKWRJgmq1rEEdSVPDowateLEac5YkGIc9e+/1G3yKQH+eqcHbGvQORnQF03rB5jNWUHdF5WSbMHPszOndMHnUYMrHC025ApIKXcO8R1/ld0DsMRGY4sSwQfRQW5oVOOxQkPMk2LcC4v9Gz/ox9DuAhBXqQUpoXkZ/Zdd2zI2eKLnKuYqkiUvUOUJAUapyztQCCWpxeU9gxTBOrN1g5sSVy3p5lrSWNMQUNXNyOr3ylj3XVQFZxtRWM64tHb8M4UpHYvLG7Bw7m59BgwgEJP686ShnQg/CpE0XpILU+GH8FPL2k8Zl9RBH3jJjLrGEjexiv0KdDcCAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFH1zTZdKh8Q63s5JV5UwrfHB6rAYMA0GCSqGSIb3DQEBCwUAA4ICAQBQmMk725RF2qzN5Me+MuY/N0GdJGNauZ9KvzSybyCIrXfycmidvwU+g1j3nFwVs2FSH3cU6s06jH1Lr0soz74cEmU/Zn94G3Yp8nMh3Nz+qwmJenD1ffF9bTgk2b/jhSRRNU4nDm0HvdfUGLTxgmtAkI45dAmmtynGhKhaFqyxbosxz/PrCqzo6SSrKYx7bHj8Wk2wdB6hDY5UbzOvBVWq8JqZCJiSLNjZNgD64YFUtbBTK3kDCLJhesuf6Qg8UBUL34NqIHfTC5J6G2AlFOLBi6DKBc7rnTlHCCesUUGZqxQy58nCMSlRLKRg3tqQq1Hy839Vb/llmpQDujWDaQ7ptN1bn2ATzdruc+PW2pPv6Ffs3lS7o+69mk5/NDhkqNCM1EYK2hDEkO1jdiyUgmXi0i7ni7Qea3HSK2WYAtHPTIDHAGCzO2Lvfbeq70rfGIf2FJRItIqmS8OjOggGp++ED2d49hvw3Tfxnw108SqYFph2QN/drt8kvcXkMNGQXE7eIqyY5sgI3tJuYpy2r7BWsg0EFwYVphZ0o/SFZTleSTKSxGprNLXKcqxyEYCmZfZLiWRcvTFOkzCqnLQZGJMMdk3Nkq6IwAaZiyRtW6QBHLaIHX/vUX0C3FD+bSuRfZbZGcTmdHVLKAdCOfMp0w/oW5X4vURcjoGJNbd8z0UU0A=="
]
}
@@ -0,0 +1,10 @@
{
"policies": {
"Certificates": {
"ImportEnterpriseRoots": true,
"Install": [
"/usr/local/share/ca-certificates/bnhmeijer/bnhmeijer-root-ca.crt"
]
}
}
}
@@ -0,0 +1,5 @@
{
"CACertificates": [
"MIIFZzCCA0+gAwIBAgIRALCvASaMQ9DZPQrGDIYTVkswDQYJKoZIhvcNAQELBQAwTTEiMCAGA1UEAwwZQm5obWVpamVyIEhvbWVsYWIgUm9vdCBDQTEaMBgGA1UECgwRQm5obWVpamVyIEhvbWVsYWIxCzAJBgNVBAYTAk5MMB4XDTI2MTAyMDIwMjQ0OVoXDTM2MTAxNzIwMjQ0OVowTTEiMCAGA1UEAwwZQm5obWVpamVyIEhvbWVsYWIgUm9vdCBDQTEaMBgGA1UECgwRQm5obWVpamVyIEhvbWVsYWIxCzAJBgNVBAYTAk5MMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAuOKEFT0p9uzcxf5hfPyvjFDdFs2GxN3nUNJ+6fzdwR3Bf0yeFYLIHA8C/7hMApt5JGW/ndnYEA7hk0Oj2mbXUo7oj7zIKke5OALBO3SSvJSywwBOsaZ95sSTfkYvmCOLojH/EUmLA6+MmUtSTWMIm1doki2H8BEdXzeE4XtI/Fw8v1kRX0AYA3l4+AB8ejVSHIuhcWgbrwGKkRZFBEAJMXEpIKkYiYPxAZ4AUy4FJHVJwpdK9JLc6ORQS4kpBWJRGROwSePs2hfMn3tSg3xfyOK/c8bOyGTx9O1tjWcfN2cPbGhJ5Uo9j5uyZnAvdkR0mniELB6/G6jM4UzKfmVvQEMtjH76vowFzJmDiKWRJgmq1rEEdSVPDowateLEac5YkGIc9e+/1G3yKQH+eqcHbGvQORnQF03rB5jNWUHdF5WSbMHPszOndMHnUYMrHC025ApIKXcO8R1/ld0DsMRGY4sSwQfRQW5oVOOxQkPMk2LcC4v9Gz/ox9DuAhBXqQUpoXkZ/Zdd2zI2eKLnKuYqkiUvUOUJAUapyztQCCWpxeU9gxTBOrN1g5sSVy3p5lrSWNMQUNXNyOr3ylj3XVQFZxtRWM64tHb8M4UpHYvLG7Bw7m59BgwgEJP686ShnQg/CpE0XpILU+GH8FPL2k8Zl9RBH3jJjLrGEjexiv0KdDcCAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFH1zTZdKh8Q63s5JV5UwrfHB6rAYMA0GCSqGSIb3DQEBCwUAA4ICAQBQmMk725RF2qzN5Me+MuY/N0GdJGNauZ9KvzSybyCIrXfycmidvwU+g1j3nFwVs2FSH3cU6s06jH1Lr0soz74cEmU/Zn94G3Yp8nMh3Nz+qwmJenD1ffF9bTgk2b/jhSRRNU4nDm0HvdfUGLTxgmtAkI45dAmmtynGhKhaFqyxbosxz/PrCqzo6SSrKYx7bHj8Wk2wdB6hDY5UbzOvBVWq8JqZCJiSLNjZNgD64YFUtbBTK3kDCLJhesuf6Qg8UBUL34NqIHfTC5J6G2AlFOLBi6DKBc7rnTlHCCesUUGZqxQy58nCMSlRLKRg3tqQq1Hy839Vb/llmpQDujWDaQ7ptN1bn2ATzdruc+PW2pPv6Ffs3lS7o+69mk5/NDhkqNCM1EYK2hDEkO1jdiyUgmXi0i7ni7Qea3HSK2WYAtHPTIDHAGCzO2Lvfbeq70rfGIf2FJRItIqmS8OjOggGp++ED2d49hvw3Tfxnw108SqYFph2QN/drt8kvcXkMNGQXE7eIqyY5sgI3tJuYpy2r7BWsg0EFwYVphZ0o/SFZTleSTKSxGprNLXKcqxyEYCmZfZLiWRcvTFOkzCqnLQZGJMMdk3Nkq6IwAaZiyRtW6QBHLaIHX/vUX0C3FD+bSuRfZbZGcTmdHVLKAdCOfMp0w/oW5X4vURcjoGJNbd8z0UU0A=="
]
}
@@ -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-----
+34 -20
View File
@@ -1,31 +1,45 @@
#!/bin/sh #!/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"
CONTROL_FILE=$(ls -1 *.control) ARCH=$(awk '/^Architecture: /{print $NF}' "packaging/$PACKAGE_NAME/DEBIAN/control")
ARCH="${ARCH:-all}"
DEB_FILENAME="${PACKAGE_NAME}-${VERSION}_${ARCH}.deb"
echo "Using control file $CONTROL_FILE" echo "Building package: $PACKAGE_NAME ($VERSION) [$ARCH] -> $DEB_FILENAME"
PACKAGE_NAME=$(awk '/^Package: /{print $NF}' $CONTROL_FILE)
VERSION=$(awk '/^Version: /{print $NF}' $CONTROL_FILE)
# 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
# tag git repo rm -f "packaging/$PACKAGE_NAME/DEBIAN/control"
# git tag -f release-${VERSION} echo "Succesvol gebouwd: $DEB_FILENAME"
echo "Building package $PACKAGE_NAME ($VERSION): $PACKAGE_NAME-${VERSION}_all.deb"
# VERSION
sed "s/{VERSION}/${VERSION}/" $PACKAGE_NAME.control > packaging/$PACKAGE_NAME/DEBIAN/control
#create debian package
dpkg --build packaging/$PACKAGE_NAME $PACKAGE_NAME-${VERSION}_all.deb
# dpkg-sig -k 14AF7F05 --sign builder icosi-${VERSION}_all.deb
echo "clean up"
rm packaging/$PACKAGE_NAME/DEBIAN/control
@@ -1,7 +1,7 @@
Package: eendoe-hyperdeck Package: eendoe-hyperdeck
Version: {VERSION} Version: 0.15.2
Section: utils Section: utils
Maintainer: nl.eendoe.bart Maintainer: nl.eendoe.bart
Architecture: all Architecture: all
Depends: python3, python3-pip, ffmpeg, eendoe-srs Depends: python3, python3-pip, python3-venv, ffmpeg, eendoe-srs
Description: Eendoe hyperdeck client module Description: Eendoe hyperdeck client module
@@ -1,39 +1,41 @@
#!/bin/bash #!/bin/bash
set -e
#set -e
case "$1" in case "$1" in
configure|abort-upgrade) configure|abort-upgrade)
id -u vid &>/dev/null || useradd --system -m -s /bin/bash vid
id -u vid &>/dev/null || useradd --system -m vid # Setup virtualenv for python dependencies to comply with PEP 668 on Debian 12 / Ubuntu 24.04+
VENV_DIR="/usr/share/hyperdeck/venv"
runuser -l vid -c "pip3 install -r /usr/share/hyperdeck/requirements.txt" if [ ! -d "$VENV_DIR" ]; then
python3 -m venv "$VENV_DIR" 2>/dev/null || python3 -m venv --system-site-packages "$VENV_DIR" 2>/dev/null || true
fi
if [ -x "$VENV_DIR/bin/pip" ]; then
"$VENV_DIR/bin/pip" install -q -r /usr/share/hyperdeck/requirements.txt || true
chown -R vid:vid "$VENV_DIR" || true
else
pip3 install -r /usr/share/hyperdeck/requirements.txt --break-system-packages 2>/dev/null || \
pip3 install -r /usr/share/hyperdeck/requirements.txt 2>/dev/null || true
fi
FILE="/etc/hyperdeck/config.json" FILE="/etc/hyperdeck/config.json"
SOURCEFILE="/usr/share/hyperdeck/config.json.orig" SOURCEFILE="/usr/share/hyperdeck/config.json.orig"
if [ -f "$FILE" ]; then if [ ! -f "$FILE" ]; then
echo "$FILE exists."
else
mkdir -p /etc/hyperdeck/ mkdir -p /etc/hyperdeck/
echo "Copy default config" echo "Copy default config"
cp "$SOURCEFILE" "$FILE" cp "$SOURCEFILE" "$FILE"
chmod 744 "$FILE" chmod 744 "$FILE"
fi fi
# Register and enable systemd service if running under systemd
if systemctl is-system-running &>/dev/null || [ -d /run/systemd/system ]; then
systemd-notify --booted systemctl daemon-reload 2>/dev/null || true
if [ "$?" -eq 0 ] systemctl enable hyperdeck 2>/dev/null || true
then
echo "Systemd running, registering service"
systemctl daemon-reload && systemctl enable hyperdeck
else
echo "Systemd not running, skipping"
fi fi
mkdir -p /var/log/hyperdeck/ mkdir -p /var/log/hyperdeck/
chown vid:vid "/var/log/hyperdeck/" chown vid:vid "/var/log/hyperdeck/" 2>/dev/null || true
echo "Installation done" echo "Installation done"
;; ;;
+34 -20
View File
@@ -1,31 +1,45 @@
#!/bin/sh #!/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"
CONTROL_FILE=$(ls -1 *.control) ARCH=$(awk '/^Architecture: /{print $NF}' "packaging/$PACKAGE_NAME/DEBIAN/control")
ARCH="${ARCH:-all}"
DEB_FILENAME="${PACKAGE_NAME}-${VERSION}_${ARCH}.deb"
echo "Using control file $CONTROL_FILE" echo "Building package: $PACKAGE_NAME ($VERSION) [$ARCH] -> $DEB_FILENAME"
PACKAGE_NAME=$(awk '/^Package: /{print $NF}' $CONTROL_FILE)
VERSION=$(awk '/^Version: /{print $NF}' $CONTROL_FILE)
# 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
# tag git repo rm -f "packaging/$PACKAGE_NAME/DEBIAN/control"
# git tag -f release-${VERSION} echo "Succesvol gebouwd: $DEB_FILENAME"
echo "Building package $PACKAGE_NAME ($VERSION): $PACKAGE_NAME-${VERSION}_all.deb"
# VERSION
sed "s/{VERSION}/${VERSION}/" $PACKAGE_NAME.control > packaging/$PACKAGE_NAME/DEBIAN/control
#create debian package
dpkg --build packaging/$PACKAGE_NAME $PACKAGE_NAME-${VERSION}_all.deb
# dpkg-sig -k 14AF7F05 --sign builder icosi-${VERSION}_all.deb
echo "clean up"
rm packaging/$PACKAGE_NAME/DEBIAN/control
+34 -20
View File
@@ -1,31 +1,45 @@
#!/bin/sh #!/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"
CONTROL_FILE=$(ls -1 *.control) ARCH=$(awk '/^Architecture: /{print $NF}' "packaging/$PACKAGE_NAME/DEBIAN/control")
ARCH="${ARCH:-all}"
DEB_FILENAME="${PACKAGE_NAME}-${VERSION}_${ARCH}.deb"
echo "Using control file $CONTROL_FILE" echo "Building package: $PACKAGE_NAME ($VERSION) [$ARCH] -> $DEB_FILENAME"
PACKAGE_NAME=$(awk '/^Package: /{print $NF}' $CONTROL_FILE)
VERSION=$(awk '/^Version: /{print $NF}' $CONTROL_FILE)
# 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
# tag git repo rm -f "packaging/$PACKAGE_NAME/DEBIAN/control"
# git tag -f release-${VERSION} echo "Succesvol gebouwd: $DEB_FILENAME"
echo "Building package $PACKAGE_NAME ($VERSION): $PACKAGE_NAME-${VERSION}_all.deb"
# VERSION
sed "s/{VERSION}/${VERSION}/" $PACKAGE_NAME.control > packaging/$PACKAGE_NAME/DEBIAN/control
#create debian package
dpkg --build packaging/$PACKAGE_NAME $PACKAGE_NAME-${VERSION}_all.deb
# dpkg-sig -k 14AF7F05 --sign builder icosi-${VERSION}_all.deb
echo "clean up"
rm packaging/$PACKAGE_NAME/DEBIAN/control
+2 -2
View File
@@ -1,7 +1,7 @@
Package: eendoe-srs Package: eendoe-srs
Version: {VERSION} Version: 0.0.1
Section: utils Section: utils
Maintainer: nl.eendoe.bart Maintainer: nl.eendoe.bart
Architecture: all Architecture: amd64
Depends: python3, python3-pip, ffmpeg Depends: python3, python3-pip, ffmpeg
Description: Eendoe Hyperdeck SRS module Description: Eendoe Hyperdeck SRS module
@@ -1 +0,0 @@
vid-35m3s3d
File diff suppressed because it is too large Load Diff
@@ -1 +0,0 @@
27563
+79
View File
@@ -0,0 +1,79 @@
#!/bin/sh
set -e
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
PKG_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
CLUSTER_ROOT="$(cd "$PKG_ROOT/../../.." && pwd)"
CONTROL_FILE=$(ls -1 "$PKG_ROOT"/*.control 2>/dev/null | head -n 1)
if [ -z "$CONTROL_FILE" ]; then
echo "Fout: Geen .control bestand gevonden in $PKG_ROOT" >&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
cd "$PKG_ROOT"
TARGET_BIN="packaging/$PACKAGE_NAME/usr/bin/jellyfin-kiosk"
mkdir -p "packaging/$PACKAGE_NAME/usr/bin"
mkdir -p "packaging/$PACKAGE_NAME/etc/jellyfin-client"
mkdir -p "packaging/$PACKAGE_NAME/usr/lib/systemd/system"
RELEASE_BIN="$CLUSTER_ROOT/jellyfin-client/jellyfin-kiosk-rs/target/release/jellyfin-kiosk-rs"
if [ -f "$RELEASE_BIN" ]; then
echo "Copying compiled binary from $RELEASE_BIN to $TARGET_BIN..."
cp -f "$RELEASE_BIN" "$TARGET_BIN"
strip -s "$TARGET_BIN" 2>/dev/null || true
elif [ ! -f "$TARGET_BIN" ]; then
echo "Error: Binary not found at $RELEASE_BIN or $TARGET_BIN" >&2
exit 1
fi
# Copy config example if available
if [ -f "$CLUSTER_ROOT/jellyfin-client/config.yaml" ]; then
cp -f "$CLUSTER_ROOT/jellyfin-client/config.yaml" "packaging/$PACKAGE_NAME/etc/jellyfin-client/config.example.yaml"
elif [ -f "$CLUSTER_ROOT/jellyfin-client/config.example.yaml" ]; then
cp -f "$CLUSTER_ROOT/jellyfin-client/config.example.yaml" "packaging/$PACKAGE_NAME/etc/jellyfin-client/config.example.yaml"
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:-amd64}"
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" -type f -exec chmod 644 {} +
find "packaging/$PACKAGE_NAME/usr/bin" -type f -exec chmod 755 {} + 2>/dev/null || true
find "packaging/$PACKAGE_NAME/DEBIAN" -type f -exec chmod 755 {} + 2>/dev/null || true
chmod 644 "packaging/$PACKAGE_NAME/DEBIAN/control" 2>/dev/null || true
if [ -f "packaging/$PACKAGE_NAME/DEBIAN/conffiles" ]; then
chmod 644 "packaging/$PACKAGE_NAME/DEBIAN/conffiles"
fi
# 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"
@@ -0,0 +1,10 @@
Package: jellyfin-kiosk
Version: 0.1.5
Section: video
Maintainer: Bart Meijer <bart@bnhmeijer.nl>
Architecture: amd64
Depends: libmpv2, mpv, yt-dlp
Description: Native Jellyfin HTPC Kiosk client with Yatse and YouTube support
High-performance Rust GUI client for Jellyfin, featuring hardware-accelerated
MPV playback, Yatse Kodi JSON-RPC & EventServer emulation, YouTube sharing receiver,
and TV-friendly interface.
@@ -0,0 +1 @@
/etc/jellyfin-client/config.example.yaml
@@ -0,0 +1,14 @@
#!/bin/sh
set -e
mkdir -p /etc/jellyfin-client
if [ ! -f /etc/jellyfin-client/config.yaml ] && [ -f /etc/jellyfin-client/config.example.yaml ]; then
cp /etc/jellyfin-client/config.example.yaml /etc/jellyfin-client/config.yaml
chmod 644 /etc/jellyfin-client/config.yaml 2>/dev/null || true
fi
if [ -d /run/systemd/system ]; then
systemctl daemon-reload || true
fi
exit 0
@@ -0,0 +1,8 @@
#!/bin/sh
set -e
if [ -d /run/systemd/system ]; then
systemctl daemon-reload || true
fi
exit 0
@@ -0,0 +1,68 @@
# Jellyfin HTPC Client Configuration
jellyfin:
# Base URL of your Jellyfin server (can be internal IP or external domain with HTTPS)
server_url: "http://10.2.0.4:8096/jellyfin"
# Login credentials
username: "bart"
password: "8x5yPgAa"
# Device identification
client_name: "Jellyfin HTPC Client"
device_name: "HTPC Living Room"
device_id: "htpc-living-room-01"
player:
# Path to mpv binary
mpv_path: "mpv"
# MPV IPC socket location
ipc_socket: "/tmp/mpv-jellyfin.sock"
# Video output & hardware decoding
# Options for hwdec: auto, vaapi (Intel/AMD), nvdec (Nvidia), no
hwdec: "auto"
vo: "gpu"
fullscreen: false
# Audio device (use `mpv --audio-device=help` to list devices)
audio_device: "auto"
# Custom MPV arguments
extra_args:
- "--keep-open=yes"
- "--force-window=immediate"
- "--osd-font=sans-serif"
- "--osd-font-size=28"
kodi_rpc:
# Emulated Kodi JSON-RPC interface for Yatse and other Kodi remotes
enabled: true
http_port: 8080
ws_port: 9090
web_api:
# Direct REST API and web sharing page
enabled: true
host: "0.0.0.0"
port: 8097
youtube:
# Maximum resolution preference for YouTube streaming via yt-dlp
max_height: 1080
# Automatically extract metadata (title, uploader) using yt-dlp before playback
fetch_metadata: true
# Google OAuth 2.0 Client ID (Google Cloud Console -> APIs -> Credentials, type: TVs and Limited Input / Desktop)
client_id: "612788493042-0070gm71evodaajv02tcl9kjtk9s76au.apps.googleusercontent.com"
client_secret: "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"
# Pad voor het opslaan van de ingelogde YouTube sessie
token_path: "youtube_token.json"
mqtt:
# Enable MQTT client and Home Assistant auto-discovery
enabled: true
# MQTT broker host/IP
host: "10.2.0.4"
port: 1883
username: ""
password: ""
# Home Assistant MQTT discovery prefix (default: homeassistant)
discovery_prefix: "homeassistant"
# Base topic prefix for state updates and commands
topic_prefix: "jellyfin-kiosk"
@@ -0,0 +1,18 @@
[Unit]
Description=Jellyfin HTPC Kiosk & YouTube Receiver
After=network-online.target sound.target graphical-session.target
Wants=network-online.target
[Service]
Type=simple
User=bart
Environment=DISPLAY=:0
Environment=WAYLAND_DISPLAY=wayland-0
ExecStart=/usr/bin/jellyfin-kiosk
WorkingDirectory=/home/bart
Restart=always
RestartSec=3s
LimitNOFILE=65536
[Install]
WantedBy=default.target
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Executable
+62
View File
@@ -0,0 +1,62 @@
#!/usr/bin/env bash
# ==============================================================================
# Update and sign Eendoe APT Repository
# ==============================================================================
set -euo pipefail
REPO_DIR="/sites/repository/binaries"
DISTS_DIR="${REPO_DIR}/dists/stable"
MAIN_DIR="${DISTS_DIR}/main/binary-amd64"
KEY_ID="56499F920639F571"
echo "=== Updating Eendoe APT Repository ==="
cd "$REPO_DIR"
mkdir -p "$MAIN_DIR"
echo "Scanning packages in pool/main..."
dpkg-scanpackages --multiversion pool/main /dev/null > "$MAIN_DIR/Packages"
echo "Compressing Packages..."
gzip -9c "$MAIN_DIR/Packages" > "$MAIN_DIR/Packages.gz"
bzip2 -9c "$MAIN_DIR/Packages" > "$MAIN_DIR/Packages.bz2"
echo "Generating Release file..."
cd "$DISTS_DIR"
cat << EOF > Release
Origin: Eendoe
Label: Eendoe Repository
Suite: stable
Codename: stable
Date: $(date -Ru)
Architectures: amd64 all
Components: main
Description: Eendoe Private APT Package Repository
EOF
add_checksums() {
local algo="$1"
local cmd="$2"
echo "${algo}:" >> Release
for file in main/binary-amd64/Packages main/binary-amd64/Packages.gz main/binary-amd64/Packages.bz2; do
if [ -f "$file" ]; then
local size
size=$(stat -c%s "$file")
local hash
hash=$($cmd "$file" | awk '{print $1}')
printf " %s %16d %s\n" "$hash" "$size" "$file" >> Release
fi
done
}
add_checksums "MD5Sum" "md5sum"
add_checksums "SHA1" "sha1sum"
add_checksums "SHA256" "sha256sum"
echo "Signing Release with GPG key $KEY_ID..."
rm -f Release.gpg InRelease
gpg --batch --yes --default-key "$KEY_ID" --armor --detach-sign -o Release.gpg Release
gpg --batch --yes --default-key "$KEY_ID" --clearsign -o InRelease Release
echo "=== Repository update & signing complete ==="