Configure HTTP Basic Auth for repository and add install-repo.sh

This commit is contained in:
bart
2026-10-20 21:34:57 +02:00
parent eb3e451a87
commit 97a437bf27
2 changed files with 182 additions and 18 deletions
+163
View File
@@ -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 "=========================================================="
+19 -18
View File
@@ -1,13 +1,13 @@
<VirtualHost *:80>
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]
</VirtualHost>
@@ -17,20 +17,21 @@
Protocols h2 h2c http/1.1
ServerName repository.eendoe.nl
DocumentRoot /sites/repository/binaries
<Directory /sites/repository/binaries>
AllowOverride None
Options FollowSymLinks
DocumentRoot /sites/repository/binaries
AuthType Basic
AuthName "Eendoe Private Repository"
AuthUserFile /sites/repository/.htpasswd
Require valid-user
</Directory>
<Directory /sites/repository/binaries>
AllowOverride All
Options FollowSymLinks
Order deny,allow
allow from all
Require all granted
</Directory>
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
</VirtualHost>