client_install_programme_ubuntu.sh aktualisiert

This commit is contained in:
sebastian.zell 2026-01-04 11:48:35 +00:00
parent 4fc59c2f80
commit 02cf824a55
1 changed files with 144 additions and 95 deletions

View File

@ -1,27 +1,24 @@
#!/bin/bash #!/bin/bash
# ================================ # ================================
# Skript zur Konfiguration von Debian # Skript zur Konfiguration von Ubuntu 24.04 (Noble)
# ================================ # ================================
# Beschreibung:
# Dieses Skript aktualisiert die Quellenliste, fügt neue Repositorys hinzu,
# installiert notwendige Softwarepakete über APT und Flatpak, und installiert
# zusätzliche .deb-Pakete.
# Farben für farbige Terminalausgaben definieren # Farben
GREEN='\033[0;32m' GREEN='\033[0;32m'
RED='\033[0;31m' RED='\033[0;31m'
YELLOW='\033[1;33m'
NC='\033[0m' # Keine Farbe NC='\033[0m' # Keine Farbe
# System aktualisieren # ================================
sudo apt update && sudo apt upgrade -y && sudo apt dist-upgrade -y # KONFIGURATION & VARIABLEN
# ================================
# Variablen # ecoDMS Repository für Ubuntu 24.04 (Noble)
SOURCES_FILE="/etc/apt/sources.list" ECODMS_REPO="deb http://www.ecodms.de/ecodms_250264/noble /"
NEW_CONTENT=$(cat <<EOF ECODMS_LIST="/etc/apt/sources.list.d/ecodms.list"
deb http://www.ecodms.de/ecodms_240264/noble /
EOF DOWNLOAD_DIR="$HOME/deb_packages"
)
APT_PACKAGES=( APT_PACKAGES=(
"vlc" "vlc"
@ -32,7 +29,7 @@ APT_PACKAGES=(
"gimp" "gimp"
"nextcloud-desktop" "nextcloud-desktop"
"gnucash" "gnucash"
"chromium" "chromium-browser" # Bei Ubuntu heißt das Paket oft chromium-browser (oder ist ein Snap transition package)
"curl" "curl"
"ttf-mscorefonts-installer" "ttf-mscorefonts-installer"
"ecodmsclient" "ecodmsclient"
@ -40,6 +37,8 @@ APT_PACKAGES=(
"wine64" "wine64"
"terminator" "terminator"
"gedit" "gedit"
"network-manager"
"software-properties-common" # Für add-apt-repository
) )
SNAP_PACKAGES=( SNAP_PACKAGES=(
@ -53,147 +52,197 @@ SNAP_PACKAGES=(
FLATPAK_PACKAGES=() FLATPAK_PACKAGES=()
DOWNLOAD_DIR="$HOME/deb_packages"
# ================================ # ================================
# Funktionen # FUNKTIONEN
# ================================ # ================================
# Funktion: Quellenliste aktualisieren # 1. Quellenliste aktualisieren & ecoDMS
update_sources() { update_sources() {
echo -e "${GREEN}Aktualisiere die Quellenliste...${NC}" echo -e "${GREEN}System wird aktualisiert...${NC}"
echo "$NEW_CONTENT" | sudo tee "$SOURCES_FILE" > /dev/null
# Standard-Updates
sudo apt update && sudo apt upgrade -y
echo -e "${GREEN}Füge ecoDMS Repository (Noble) hinzu...${NC}"
# GPG Key holen
wget -qO - http://www.ecodms.de/gpg/ecodms.key | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/ecodms.gpg
# Repo Datei erstellen
echo "$ECODMS_REPO" | sudo tee "$ECODMS_LIST" > /dev/null
if [[ $? -ne 0 ]]; then if [[ $? -ne 0 ]]; then
echo -e "${RED}Fehler beim Aktualisieren der Quellenliste.${NC}" echo -e "${RED}Fehler beim Hinzufügen des ecoDMS Repositories.${NC}"
exit 1 exit 1
fi fi
echo -e "${GREEN}GPG-Schlüssel hinzufügen...${NC}" sudo apt update
wget -qO /etc/apt/trusted.gpg.d/ecodms.asc http://www.ecodms.de/gpg/ecodms.key || {
echo -e "${RED}Download des GPG-Schlüssels fehlgeschlagen.${NC}"
exit 1
}
} }
# Funktion: System aktualisieren und Pakete installieren # 2. APT Pakete installieren
install_apt_packages() { install_apt_packages() {
echo -e "${GREEN}System wird aktualisiert...${NC}"
sudo apt update && sudo apt upgrade -y || {
echo -e "${RED}Fehler bei Systemaktualisierung.${NC}"
exit 1
}
echo -e "${GREEN}Installiere APT-Pakete...${NC}" echo -e "${GREEN}Installiere APT-Pakete...${NC}"
for PACKAGE in "${APT_PACKAGES[@]}"; do for PACKAGE in "${APT_PACKAGES[@]}"; do
if sudo apt install -y "$PACKAGE"; then # Check ob installiert
echo -e "${GREEN}$PACKAGE erfolgreich installiert.${NC}" if dpkg -l | grep -q "^ii $PACKAGE "; then
echo -e "${GREEN}$PACKAGE ist bereits installiert.${NC}"
else else
echo -e "${RED}Fehler bei der Installation von $PACKAGE.${NC}" sudo apt install -y "$PACKAGE" || echo -e "${RED}Fehler bei $PACKAGE (evtl. existiert es nur als Snap?).${NC}"
fi fi
done done
} }
# Funktion: Snap installieren und Pakete einrichten # 3. Snap Pakete installieren
install_snap_packages() { install_snap_packages() {
# Snap ist bei Ubuntu Standard, aber sicherheitshalber prüfen
if ! command -v snap &> /dev/null; then if ! command -v snap &> /dev/null; then
echo -e "${GREEN}Snap wird installiert...${NC}" echo -e "${GREEN}Snap wird installiert...${NC}"
sudo apt install -y snapd || { sudo apt install -y snapd
echo -e "${RED}Fehler bei der Snap-Installation.${NC}"
exit 1
}
fi fi
echo -e "${GREEN}Installiere Snap-Pakete...${NC}" echo -e "${GREEN}Installiere Snap-Pakete...${NC}"
for SNAP in "${SNAP_PACKAGES[@]}"; do for SNAP in "${SNAP_PACKAGES[@]}"; do
if sudo snap install "$SNAP" --classic; then sudo snap install "$SNAP" || sudo snap install "$SNAP" --classic
echo -e "${GREEN}$SNAP erfolgreich installiert.${NC}"
else
echo -e "${RED}Fehler bei der Installation von $SNAP.${NC}"
fi
done done
} }
# Funktion: Flatpak installieren und Pakete einrichten # 4. Flatpak installieren
install_flatpak_packages() { install_flatpak_packages() {
if ! command -v flatpak &> /dev/null; then if ! command -v flatpak &> /dev/null; then
echo -e "${GREEN}Flatpak wird installiert...${NC}" echo -e "${GREEN}Flatpak wird installiert...${NC}"
sudo apt install -y flatpak || { sudo apt install -y flatpak
echo -e "${RED}Fehler bei der Flatpak-Installation.${NC}"
exit 1
}
sudo flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo sudo flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
fi fi
echo -e "${GREEN}Installiere Flatpak-Pakete...${NC}"
for PACKAGE in "${FLATPAK_PACKAGES[@]}"; do
if flatpak install -y flathub "$PACKAGE"; then
echo -e "${GREEN}$PACKAGE erfolgreich installiert.${NC}"
else
echo -e "${RED}Fehler bei der Installation von $PACKAGE.${NC}"
fi
done
} }
# Funktion: Zusätzliche .deb-Pakete herunterladen und installieren # 5. DEB Pakete installieren
install_deb_packages() { install_deb_packages() {
echo -e "${GREEN}Lade zusätzliche .deb-Pakete herunter...${NC}" echo -e "${GREEN}Lade zusätzliche .deb-Pakete herunter...${NC}"
mkdir -p "$DOWNLOAD_DIR" mkdir -p "$DOWNLOAD_DIR"
declare -A DEB_URLS=( declare -A DEB_URLS=(
["shadow-amd64.deb"]="https://update.shadow.tech/launcher/prod/linux/x86_64/shadow-amd64.deb" ["shadow-amd64.deb"]="https://update.shadow.tech/launcher/prod/linux/x86_64/shadow-amd64.deb"
["nomachine.deb"]="https://download.nomachine.com/download/8.14/Linux/nomachine_8.14.2_1_amd64.deb" ["nomachine.deb"]="https://web9001.nomachine.com/download/9.3/Linux/nomachine_9.3.7_1_amd64.deb"
["xpipe.deb"]="https://github.com/xpipe-io/xpipe/releases/latest/download/xpipe-installer-linux-x86_64.deb" ["xpipe.deb"]="https://github.com/xpipe-io/xpipe/releases/latest/download/xpipe-installer-linux-x86_64.deb"
["rustdesk.deb"]="https://github.com/rustdesk/rustdesk/releases/download/1.3.6/rustdesk-1.3.6-x86_64.deb" ["rustdesk.deb"]="https://github.com/rustdesk/rustdesk/releases/download/1.4.4/rustdesk-1.4.4-x86_64.deb"
) )
for FILE in "${!DEB_URLS[@]}"; do for FILE in "${!DEB_URLS[@]}"; do
wget -O "$DOWNLOAD_DIR/$FILE" "${DEB_URLS[$FILE]}" || { wget -O "$DOWNLOAD_DIR/$FILE" "${DEB_URLS[$FILE]}" || echo -e "${RED}Fehler bei Download von $FILE.${NC}"
echo -e "${RED}Fehler beim Herunterladen von $FILE.${NC}"
continue
}
done done
echo -e "${GREEN}Installiere .deb-Pakete...${NC}" echo -e "${GREEN}Installiere .deb-Pakete...${NC}"
for DEB_FILE in "$DOWNLOAD_DIR"/*.deb; do for DEB_FILE in "$DOWNLOAD_DIR"/*.deb; do
if sudo apt install -y "$DEB_FILE"; then sudo apt install -y "$DEB_FILE" || sudo apt --fix-broken install -y
echo -e "${GREEN}$DEB_FILE erfolgreich installiert.${NC}"
else
echo -e "${RED}Fehler bei der Installation von $DEB_FILE.${NC}"
fi
done done
} }
# Funktion: autofs einrichten # 6. Netzwerk konfigurieren (NetworkManager)
autofs() { configure_network() {
echo -e "${GREEN}Richte autofs ein...${NC}" echo -e "${YELLOW}=== Netzwerkkonfiguration ===${NC}"
sudo apt install -y autofs || {
echo -e "${RED}Fehler bei der Installation von autofs.${NC}" # Aktives Interface finden
exit 1 INTERFACE=$(ip -o -4 route show to default | awk '{print $5}' | head -n1)
}
echo "/net /etc/auto.net --timeout=600" | sudo tee -a /etc/auto.master if [ -z "$INTERFACE" ]; then
systemctl restart autofs echo -e "${RED}Kein aktives Netzwerk-Interface gefunden! Überspringe Netzwerkkonfiguration.${NC}"
systemctl enable autofs return
fi
echo -e "Aktives Interface erkannt: ${GREEN}$INTERFACE${NC}"
# Verbindungsprofil ermitteln
CON_NAME=$(nmcli -t -f NAME,DEVICE connection show --active | grep ":$INTERFACE" | cut -d: -f1 | head -n1)
if [ -z "$CON_NAME" ]; then
echo -e "${RED}Kein NetworkManager-Profil für $INTERFACE gefunden.${NC}"
return
fi
echo -e "Bearbeite Verbindung: ${GREEN}$CON_NAME${NC}"
# Eingabe der letzten Ziffer
while true; do
read -p "Bitte die letzte Zahl der IP-Adresse eingeben (192.168.176.XXX): " IP_SUFFIX
if [[ "$IP_SUFFIX" =~ ^[0-9]+$ ]] && [ "$IP_SUFFIX" -ge 1 ] && [ "$IP_SUFFIX" -le 254 ]; then
break
else
echo -e "${RED}Ungültige Eingabe. Bitte eine Zahl zwischen 1 und 254 eingeben.${NC}"
fi
done
NEW_IP="192.168.176.$IP_SUFFIX"
GATEWAY="192.168.176.1"
DNS="192.168.176.101 192.168.174.101 1.1.1.1"
echo -e "${GREEN}Setze IP auf $NEW_IP...${NC}"
# Konfiguration anwenden
sudo nmcli con mod "$CON_NAME" \
ipv4.addresses "$NEW_IP/24" \
ipv4.gateway "$GATEWAY" \
ipv4.dns "$DNS" \
ipv4.method manual
echo -e "${GREEN}Netzwerkeinstellungen gespeichert.${NC}"
echo -e "${YELLOW}ACHTUNG: Die neuen Einstellungen werden erst nach einem Neustart der Verbindung aktiv.${NC}"
read -p "Soll die Verbindung jetzt neu gestartet werden? (j/n): " RESTART_NET
if [[ "$RESTART_NET" =~ ^[jJ]$ ]]; then
sudo nmcli con up "$CON_NAME"
fi
} }
# Funktion: Gemeinsamen Ordner einrichten # 7. Univention Domain Join installieren (Ubuntu PPA Methode)
shared_dir() { install_univention_join() {
SHARED_DIR="/home/shared" echo -e "${YELLOW}=== Univention Domain Join Installation ===${NC}"
echo -e "${GREEN}Erstelle den gemeinsamen Ordner unter $SHARED_DIR...${NC}" echo -e "${GREEN}Füge Univention PPA hinzu...${NC}"
# -y flag akzeptiert automatisch die Bestätigung
sudo add-apt-repository -y ppa:univention-dev/ppa
echo -e "${GREEN}Aktualisiere Paketquellen...${NC}"
sudo apt-get update
echo -e "${GREEN}Installiere univention-domain-join...${NC}"
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y univention-domain-join
if [ $? -eq 0 ]; then
echo -e "${GREEN}Univention Domain Join erfolgreich installiert.${NC}"
else
echo -e "${RED}Fehler bei der Installation von Univention Domain Join.${NC}"
fi
}
# 8. Autofs & Shared Dir
setup_system_extras() {
echo -e "${GREEN}Richte autofs ein...${NC}"
sudo apt install -y autofs
if ! grep -q "/net /etc/auto.net" /etc/auto.master; then
echo "/net /etc/auto.net --timeout=600" | sudo tee -a /etc/auto.master
fi
systemctl restart autofs
systemctl enable autofs
SHARED_DIR="/home/shared"
if [ ! -d "$SHARED_DIR" ]; then
sudo mkdir -p "$SHARED_DIR" sudo mkdir -p "$SHARED_DIR"
sudo chmod 1777 "$SHARED_DIR" sudo chmod 1777 "$SHARED_DIR"
echo -e "${GREEN}Der Ordner $SHARED_DIR wurde erfolgreich erstellt und konfiguriert.${NC}" fi
} }
# ================================ # ================================
# Hauptskript # HAUPTABLAUF
# ================================ # ================================
update_sources update_sources
install_apt_packages install_apt_packages
install_snap_packages install_snap_packages
install_flatpak_packages install_flatpak_packages
install_deb_packages install_deb_packages
autofs setup_system_extras
shared_dir
echo -e "${GREEN}Skript abgeschlossen.${NC}" # Interaktive Teile am Ende
configure_network
install_univention_join
echo -e "${GREEN}Skript vollständig abgeschlossen.${NC}"