Configure HTTP Basic Auth for repository and add install-repo.sh
This commit is contained in:
Executable
+163
@@ -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 "=========================================================="
|
||||||
+11
-10
@@ -4,8 +4,8 @@
|
|||||||
ProxyRequests off
|
ProxyRequests off
|
||||||
ProxyPreserveHost on
|
ProxyPreserveHost on
|
||||||
|
|
||||||
|
|
||||||
RewriteEngine on
|
RewriteEngine on
|
||||||
|
RewriteCond %{SERVER_NAME} =repository.eendoe.nl [OR]
|
||||||
RewriteCond %{SERVER_NAME} =repository.bnhmeijer.nl
|
RewriteCond %{SERVER_NAME} =repository.bnhmeijer.nl
|
||||||
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
|
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
|
||||||
</VirtualHost>
|
</VirtualHost>
|
||||||
@@ -17,20 +17,21 @@
|
|||||||
Protocols h2 h2c http/1.1
|
Protocols h2 h2c http/1.1
|
||||||
ServerName repository.eendoe.nl
|
ServerName repository.eendoe.nl
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
DocumentRoot /sites/repository/binaries
|
DocumentRoot /sites/repository/binaries
|
||||||
|
|
||||||
<Directory /sites/repository/binaries>
|
<Directory /sites/repository/binaries>
|
||||||
AllowOverride All
|
AllowOverride None
|
||||||
Options FollowSymLinks
|
Options FollowSymLinks
|
||||||
Order deny,allow
|
|
||||||
allow from all
|
AuthType Basic
|
||||||
Require all granted
|
AuthName "Eendoe Private Repository"
|
||||||
|
AuthUserFile /sites/repository/.htpasswd
|
||||||
|
Require valid-user
|
||||||
</Directory>
|
</Directory>
|
||||||
Include /etc/letsencrypt/options-ssl-apache.conf
|
|
||||||
SSLCertificateFile /etc/letsencrypt/live/bm4.nl-0002/fullchain.pem
|
Include /etc/letsencrypt/options-ssl-apache.conf
|
||||||
SSLCertificateKeyFile /etc/letsencrypt/live/bm4.nl-0002/privkey.pem
|
SSLCertificateFile /etc/letsencrypt/live/bm4.nl-0002/fullchain.pem
|
||||||
|
SSLCertificateKeyFile /etc/letsencrypt/live/bm4.nl-0002/privkey.pem
|
||||||
</VirtualHost>
|
</VirtualHost>
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user