diff --git a/eendoe/install-repo.sh b/eendoe/install-repo.sh
new file mode 100755
index 0000000..b4e2d32
--- /dev/null
+++ b/eendoe/install-repo.sh
@@ -0,0 +1,163 @@
+#!/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
+ read -r -p "Gebruikersnaam voor repository [eendoe]: " INPUT_USER
+ REPO_USER="${INPUT_USER:-eendoe}"
+fi
+
+if [ -z "$REPO_PASS" ]; then
+ read -r -s -p "Wachtwoord voor repository ($REPO_USER): " REPO_PASS
+ echo ""
+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 "=========================================================="
diff --git a/vhosts/20_repository.conf b/vhosts/20_repository.conf
index d01c312..871ebef 100755
--- a/vhosts/20_repository.conf
+++ b/vhosts/20_repository.conf
@@ -1,13 +1,13 @@
- ServerName repository.eendoe.nl
- ProxyRequests off
- ProxyPreserveHost on
+ ServerName repository.eendoe.nl
+ ProxyRequests off
+ ProxyPreserveHost on
-
- RewriteEngine on
- RewriteCond %{SERVER_NAME} =repository.bnhmeijer.nl
- RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
+ RewriteEngine on
+ RewriteCond %{SERVER_NAME} =repository.eendoe.nl [OR]
+ RewriteCond %{SERVER_NAME} =repository.bnhmeijer.nl
+ RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
@@ -17,20 +17,21 @@
Protocols h2 h2c http/1.1
ServerName repository.eendoe.nl
+ DocumentRoot /sites/repository/binaries
+
+ AllowOverride None
+ Options FollowSymLinks
- DocumentRoot /sites/repository/binaries
+ AuthType Basic
+ AuthName "Eendoe Private Repository"
+ AuthUserFile /sites/repository/.htpasswd
+ Require valid-user
+
-
- AllowOverride All
- Options FollowSymLinks
- Order deny,allow
- allow from all
- Require all granted
-
-Include /etc/letsencrypt/options-ssl-apache.conf
-SSLCertificateFile /etc/letsencrypt/live/bm4.nl-0002/fullchain.pem
-SSLCertificateKeyFile /etc/letsencrypt/live/bm4.nl-0002/privkey.pem
+ Include /etc/letsencrypt/options-ssl-apache.conf
+ SSLCertificateFile /etc/letsencrypt/live/bm4.nl-0002/fullchain.pem
+ SSLCertificateKeyFile /etc/letsencrypt/live/bm4.nl-0002/privkey.pem