diff --git a/install-docker.sh b/install-docker.sh new file mode 100644 index 0000000..b604126 --- /dev/null +++ b/install-docker.sh @@ -0,0 +1,78 @@ +#!/usr/bin/env bash +# +# install-docker.sh — Docker Engine installer voor Ubuntu +# Idempotent: veilig om meerdere keren te draaien. +# +# Gebruik: +# curl -fsSL https:// | sudo bash +# of: +# curl -fsSL https://git.hiddenden.cafe/Latte//raw/branch/main/install-docker.sh -o install-docker.sh +# sudo bash install-docker.sh +# +set -euo pipefail + +# ── Veiligheidschecks ──────────────────────────────────────────────── +if [[ "$(id -u)" -ne 0 ]]; then + echo "Dit script moet als root draaien. Gebruik: sudo bash $0" >&2 + exit 1 +fi + +if ! grep -qi ubuntu /etc/os-release; then + echo "Waarschuwing: dit lijkt geen Ubuntu te zijn. Doorgaan op eigen risico." >&2 +fi + +# De gebruiker die straks in de docker-groep moet komen. +# Werkt ook via sudo: pakt de oorspronkelijke gebruiker, niet root. +TARGET_USER="${SUDO_USER:-${USER:-root}}" + +log() { echo -e "\033[1;36m==>\033[0m $*"; } + +# ── Al geïnstalleerd? ──────────────────────────────────────────────── +if command -v docker >/dev/null 2>&1; then + log "Docker is al geïnstalleerd: $(docker --version)" + log "Niets te doen. Klaar." + exit 0 +fi + +# ── Conflicterende pakketten verwijderen ───────────────────────────── +log "Oude/conflicterende pakketten verwijderen (indien aanwezig)" +for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do + apt-get remove -y "$pkg" >/dev/null 2>&1 || true +done + +# ── Repository + GPG key instellen ─────────────────────────────────── +log "Apt voorbereiden en Docker GPG key toevoegen" +apt-get update -qq +apt-get install -y -qq ca-certificates curl + +install -m 0755 -d /etc/apt/keyrings +if [[ ! -f /etc/apt/keyrings/docker.asc ]]; then + curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc + chmod a+r /etc/apt/keyrings/docker.asc +fi + +ARCH="$(dpkg --print-architecture)" +CODENAME="$(. /etc/os-release && echo "${VERSION_CODENAME}")" +echo "deb [arch=${ARCH} signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu ${CODENAME} stable" \ + > /etc/apt/sources.list.d/docker.list + +# ── Docker installeren ─────────────────────────────────────────────── +log "Docker Engine installeren" +apt-get update -qq +apt-get install -y -qq \ + docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin + +# ── Service starten ────────────────────────────────────────────────── +log "Docker service starten en enablen" +systemctl enable --now docker + +# ── Gebruiker in docker-groep ──────────────────────────────────────── +if [[ "$TARGET_USER" != "root" ]]; then + log "Gebruiker '${TARGET_USER}' aan docker-groep toevoegen" + usermod -aG docker "$TARGET_USER" + echo " -> Log uit/in (of: newgrp docker) om docker zonder sudo te gebruiken." +fi + +# ── Verificatie ────────────────────────────────────────────────────── +log "Versie: $(docker --version)" +log "Klaar. Test met: docker run hello-world" \ No newline at end of file