From 283c95edf737544089c230a0e5646821efd48219 Mon Sep 17 00:00:00 2001 From: bart Date: Tue, 20 Oct 2026 21:35:05 +0200 Subject: [PATCH] Add install.sh client setup script --- install.sh | 163 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 163 insertions(+) create mode 100755 install.sh diff --git a/install.sh b/install.sh new file mode 100755 index 0000000..b4e2d32 --- /dev/null +++ b/install.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 "=========================================================="