#!/bin/bash # Define color codes GREEN='\e[32m' BLUE='\e[34m' YELLOW='\e[33m' NC='\e[0m' # No Color # Function for consistent log messages log_success() { echo -e "${GREEN}[SUCCESS]${NC} $1"; } log_info() { echo -e "${BLUE}[INFO]${NC} $1"; } log_skip() { echo -e "${YELLOW}[SKIPPED]${NC} $1"; } # Überprüfen, ob der .ssh-Ordner existiert, wenn nicht, erstelle ihn if [ ! -d "$HOME/.ssh" ]; then mkdir -m 700 "$HOME/.ssh" log_success ".ssh-Verzeichnis wurde erstellt." else log_info ".ssh-Verzeichnis existiert bereits." fi # Benutzer fragen, ob ein SSH-Key hinzugefügt werden soll log_info "SSH-Public-Key eingeben (Leerlassen zum Überspringen)" read -p "> " user_input # Nur fortfahren, wenn der Benutzer etwas eingegeben hat if [ ! -z "$user_input" ]; then # Überprüfen, ob der Key bereits in authorized_keys vorhanden ist if grep -q "$user_input" "$HOME/.ssh/authorized_keys"; then log_info "Der SSH-Public-Key ist bereits vorhanden." else # Den eingegebenen Public Key in die authorized_keys-Datei speichern echo "$user_input" >> "$HOME/.ssh/authorized_keys" log_success "SSH-Public-Key wurde hinzugefügt." fi else log_skip "SSH-Key Installation übersprungen." fi # Fragen, ob das System aktualisiert werden soll log_info "System aktualisieren? (Y/n)" read -p "> " update_input # Überprüfen der Eingabe - Standardmäßig 'Y' bei Enter, sonst nur bei 'y' oder 'Y' if [[ -z "$update_input" || "$update_input" =~ ^[Yy]$ ]]; then log_info "System wird aktualisiert..." apt update && apt upgrade -y log_success "System wurde erfolgreich aktualisiert." else log_skip "System-Aktualisierung übersprungen." fi # Fragen, ob Docker installiert werden soll log_info "Docker installieren? (Y/n)" read -p "> " docker_input # Überprüfen der Eingabe - Standardmäßig 'Y' bei Enter, sonst nur bei 'y' oder 'Y' if [[ -z "$docker_input" || "$docker_input" =~ ^[Yy]$ ]]; then # Überprüfen, ob Docker bereits installiert ist if command -v docker &> /dev/null; then log_info "Docker ist bereits installiert." else log_info "Docker wird installiert..." # Installiere benötigte Pakete apt install -y apt-transport-https ca-certificates curl software-properties-common # Füge Docker's offiziellen GPG-Schlüssel hinzu curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg # Füge Docker Repository hinzu echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null # Aktualisiere Paketliste und installiere Docker apt update apt install -y docker-ce docker-ce-cli containerd.io # Starte und aktiviere Docker systemctl start docker systemctl enable docker log_success "Docker wurde erfolgreich installiert." fi else log_skip "Docker-Installation übersprungen." fi # Fragen, ob Node.js installiert werden soll log_info "Node.js installieren? (Y/n)" read -p "> " nodejs_input # Überprüfen der Eingabe - Standardmäßig 'Y' bei Enter, sonst nur bei 'y' oder 'Y' if [[ -z "$nodejs_input" || "$nodejs_input" =~ ^[Yy]$ ]]; then # Überprüfen, ob Node.js bereits installiert ist if command -v node &> /dev/null; then log_info "Node.js ist bereits installiert." else log_info "Node.js wird installiert..." # Installiere curl falls noch nicht vorhanden apt install -y curl # Füge NodeSource Repository hinzu curl -fsSL https://deb.nodesource.com/setup_lts.x | bash - # Installiere Node.js apt install -y nodejs log_success "Node.js wurde erfolgreich installiert." fi else log_skip "Node.js-Installation übersprungen." fi