Compare commits
14
Commits
9cc903b2a4
..
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ee9ceb4256 | ||
|
|
1ca16dee3d | ||
|
|
0d7ca3ee4b | ||
|
|
e28d4adef0 | ||
|
|
419942a496 | ||
|
|
d97a1a9662 | ||
|
|
6ee1625e70 | ||
|
|
13aea1c654 | ||
|
|
06bd01807a | ||
|
|
496920fddb | ||
|
|
ed27a09ef9 | ||
|
|
72bb2966ec | ||
|
|
50659a67f3 | ||
|
|
283c95edf7 |
@@ -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:
|
||||||
|
|||||||
@@ -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).
|
||||||
|
|||||||
@@ -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-----
|
||||||
@@ -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
|
|
||||||
|
|||||||
@@ -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
@@ -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">
|
||||||
|
← 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 • HTTP Basic Auth
|
||||||
|
</div>
|
||||||
|
<h1>Package Repository</h1>
|
||||||
|
<h2>Officiële Debian & 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 <wachtwoord></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 <wachtwoord>" | 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. • <a href="https://eendoe.nl" target="_blank" rel="noopener">www.eendoe.nl</a> • KvK 71 604 839 • BTW NL858780100B01</p>
|
||||||
|
<p class="legal"><a href="https://eendoe.nl/documents/algemene%20voorwaarden.pdf" target="_blank" rel="noopener">Algemene voorwaarden</a> • 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>
|
||||||
|
|||||||
BIN
Binary file not shown.
BIN
Binary file not shown.
Executable
+174
@@ -0,0 +1,174 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# ==============================================================================
|
||||||
|
# Eendoe Private APT Repository Setup Script
|
||||||
|
# Ondersteunt: Linux Mint, Ubuntu, Debian
|
||||||
|
# ==============================================================================
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
# Controleer of het script als root draait
|
||||||
|
if [ "$EUID" -ne 0 ]; then
|
||||||
|
echo "Fout: Dit script moet als root worden uitgevoerd." >&2
|
||||||
|
echo "Gebruik: sudo bash $0 [gebruikersnaam] [wachtwoord]" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
REPO_HOST="repository.eendoe.nl"
|
||||||
|
REPO_URL="https://${REPO_HOST}"
|
||||||
|
SUITE="stable"
|
||||||
|
COMPONENT="main"
|
||||||
|
|
||||||
|
echo "=========================================================="
|
||||||
|
echo " Eendoe Private APT Repository Installer"
|
||||||
|
echo "=========================================================="
|
||||||
|
|
||||||
|
# 1. Credentials ophalen (uit argumenten of interactief)
|
||||||
|
REPO_USER="${1:-}"
|
||||||
|
REPO_PASS="${2:-}"
|
||||||
|
|
||||||
|
if [ -z "$REPO_USER" ]; then
|
||||||
|
if [ -t 0 ]; then
|
||||||
|
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}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$REPO_PASS" ]; then
|
||||||
|
if [ -t 0 ]; then
|
||||||
|
read -r -s -p "Wachtwoord voor repository ($REPO_USER): " REPO_PASS
|
||||||
|
echo ""
|
||||||
|
elif [ -e /dev/tty ]; then
|
||||||
|
read -r -s -p "Wachtwoord voor repository ($REPO_USER): " REPO_PASS </dev/tty
|
||||||
|
echo ""
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$REPO_USER" ] || [ -z "$REPO_PASS" ]; then
|
||||||
|
echo "Fout: Zowel gebruikersnaam als wachtwoord zijn verplicht." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 2. Benodigde pakketten installeren indien nodig
|
||||||
|
for pkg in curl gpg; do
|
||||||
|
if ! command -v "$pkg" >/dev/null 2>&1; then
|
||||||
|
echo "Installeren van ontbrekend pakket: $pkg..."
|
||||||
|
apt-get update -qq && apt-get install -y -qq "$pkg"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# 3. Authenticatie valideren bij de server
|
||||||
|
echo -n "Inloggegevens verifiëren bij $REPO_HOST... "
|
||||||
|
HTTP_CODE=$(curl -s -o /dev/null -w "%{http_code}" -u "${REPO_USER}:${REPO_PASS}" "${REPO_URL}/dists/${SUITE}/Release" || true)
|
||||||
|
|
||||||
|
if [ "$HTTP_CODE" = "401" ] || [ "$HTTP_CODE" = "403" ]; then
|
||||||
|
echo "MISLUKT (HTTP $HTTP_CODE)"
|
||||||
|
echo "Fout: Ongeldige gebruikersnaam of wachtwoord voor $REPO_HOST." >&2
|
||||||
|
exit 1
|
||||||
|
elif [ "$HTTP_CODE" = "200" ]; then
|
||||||
|
echo "OK (Geverifieerd)"
|
||||||
|
else
|
||||||
|
echo "Status HTTP $HTTP_CODE (installatie wordt voortgezet)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 4. APT authenticatiebestand aanmaken met strikte permissies (600)
|
||||||
|
echo "Configureren van APT authenticatie (/etc/apt/auth.conf.d/eendoe.conf)..."
|
||||||
|
mkdir -p /etc/apt/auth.conf.d
|
||||||
|
cat << EOF > /etc/apt/auth.conf.d/eendoe.conf
|
||||||
|
machine ${REPO_HOST} login ${REPO_USER} password ${REPO_PASS}
|
||||||
|
EOF
|
||||||
|
chmod 600 /etc/apt/auth.conf.d/eendoe.conf
|
||||||
|
|
||||||
|
# 5. GPG public keyring installeren
|
||||||
|
echo "Installeren van Eendoe GPG sleutel (/etc/apt/keyrings/eendoe.gpg)..."
|
||||||
|
mkdir -p /etc/apt/keyrings
|
||||||
|
cat << 'EOF' | gpg --dearmor --yes -o /etc/apt/keyrings/eendoe.gpg
|
||||||
|
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||||
|
|
||||||
|
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
|
||||||
|
FGLx4o4=
|
||||||
|
=CcXl
|
||||||
|
-----END PGP PUBLIC KEY BLOCK-----
|
||||||
|
EOF
|
||||||
|
chmod 644 /etc/apt/keyrings/eendoe.gpg
|
||||||
|
|
||||||
|
# 6. APT sources.list aanmaken
|
||||||
|
echo "Aanmaken van /etc/apt/sources.list.d/eendoe.list..."
|
||||||
|
cat << EOF > /etc/apt/sources.list.d/eendoe.list
|
||||||
|
# Eendoe Private APT Repository
|
||||||
|
deb [arch=amd64 signed-by=/etc/apt/keyrings/eendoe.gpg] ${REPO_URL}/ ${SUITE} ${COMPONENT}
|
||||||
|
EOF
|
||||||
|
chmod 644 /etc/apt/sources.list.d/eendoe.list
|
||||||
|
|
||||||
|
# 7. APT updaten
|
||||||
|
echo "Pakketlijst bijwerken (apt-get update)..."
|
||||||
|
apt-get update
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "=========================================================="
|
||||||
|
echo " Installatie geslaagd!"
|
||||||
|
echo " Eendoe repository is geconfigureerd en klaar voor gebruik."
|
||||||
|
echo " Voorbeeld: sudo apt install eendoe-hyperdeck"
|
||||||
|
echo "=========================================================="
|
||||||
+46
@@ -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.
|
||||||
+40
@@ -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
|
||||||
+31
@@ -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
|
||||||
+5
@@ -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=="
|
||||||
|
]
|
||||||
|
}
|
||||||
+5
@@ -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=="
|
||||||
|
]
|
||||||
|
}
|
||||||
+10
@@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"policies": {
|
||||||
|
"Certificates": {
|
||||||
|
"ImportEnterpriseRoots": true,
|
||||||
|
"Install": [
|
||||||
|
"/usr/local/share/ca-certificates/bnhmeijer/bnhmeijer-root-ca.crt"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+5
@@ -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=="
|
||||||
|
]
|
||||||
|
}
|
||||||
+31
@@ -0,0 +1,31 @@
|
|||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
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
|
||||||
|
-----END CERTIFICATE-----
|
||||||
@@ -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"
|
||||||
;;
|
;;
|
||||||
|
|||||||
@@ -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,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-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
|
|
||||||
Executable
+79
@@ -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
|
||||||
+68
@@ -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"
|
||||||
Binary file not shown.
+18
@@ -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.
Binary file not shown.
Executable
+62
@@ -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 ==="
|
||||||
Reference in New Issue
Block a user