#!/bin/bash # Kleuren voor berichten GREEN='\033[0;32m' RED='\033[0;31m' YELLOW='\033[1;33m' NC='\033[0m' # App naam APP="Gitea" # Helper functies voor berichten msg_info() { echo -e "${YELLOW}[INFO]${NC} $1" } msg_ok() { echo -e "${GREEN}[OK]${NC} $1" } msg_error() { echo -e "${RED}[ERROR]${NC} $1" } header_info() { clear msg_info "Script voor $APP Installatie/Update" echo "" } # Controleer systeemvereisten check_system_requirements() { # Controleer of script als root draait if [[ $EUID -ne 0 ]]; then msg_error "Dit script moet als root worden uitgevoerd" exit 1 fi # Controleer beschikbare schijfruimte (minimum 1GB) AVAILABLE_SPACE=$(df -BG / | awk 'NR==2 {print $4}' | sed 's/G//') if [[ $AVAILABLE_SPACE -lt 1 ]]; then msg_error "Onvoldoende schijfruimte. Minimaal 1GB nodig" exit 1 fi # Controleer RAM (minimum 1GB) TOTAL_RAM=$(free -m | awk '/^Mem:/{print $2}') if [[ $TOTAL_RAM -lt 1024 ]]; then msg_error "Onvoldoende RAM. Minimaal 1GB nodig" exit 1 fi } # Controleer en installeer benodigde packages check_dependencies() { msg_info "Controleren van benodigde packages..." # Lijst van benodigde packages REQUIRED_PACKAGES="sudo curl git" # Controleer of apt-get beschikbaar is if ! command -v apt-get >/dev/null 2>&1; then msg_error "Dit script vereist apt-get (Debian/Ubuntu)" exit 1 fi # Update package lijst msg_info "Package lijst updaten..." apt-get update -qq # Controleer en installeer ontbrekende packages for package in $REQUIRED_PACKAGES; do if ! command -v $package >/dev/null 2>&1; then msg_info "Installeren van $package..." apt-get install -y $package >/dev/null 2>&1 if [ $? -eq 0 ]; then msg_ok "$package succesvol geïnstalleerd" else msg_error "Fout bij installatie van $package" exit 1 fi else msg_ok "$package is al geïnstalleerd" fi done } # Installatie functie install_gitea() { header_info check_system_requirements check_dependencies # Controleer of Gitea al geïnstalleerd is if [[ -f /usr/local/bin/gitea ]]; then msg_error "$APP is al geïnstalleerd!" exit 1 fi msg_info "Start $APP installatie..." # Maak Gitea gebruiker aan useradd -m -s /bin/bash git || true # Download laatste versie RELEASE=$(wget -q https://github.com/go-gitea/gitea/releases/latest -O - | grep "title>Release" | cut -d " " -f 4 | sed 's/^v//') msg_info "Installeren van $APP versie ${RELEASE}" wget -q https://github.com/go-gitea/gitea/releases/download/v$RELEASE/gitea-$RELEASE-linux-amd64 mv gitea* /usr/local/bin/gitea chmod +x /usr/local/bin/gitea # Maak benodigde mappen aan mkdir -p /var/lib/gitea/{custom,data,log} chown -R git:git /var/lib/gitea/ chmod -R 750 /var/lib/gitea/ mkdir /etc/gitea chown root:git /etc/gitea chmod 770 /etc/gitea # Maak systemd service aan cat > /etc/systemd/system/gitea.service <Release" | cut -d " " -f 4 | sed 's/^v//') msg_info "Updaten van $APP naar versie ${RELEASE}" wget -q https://github.com/go-gitea/gitea/releases/download/v$RELEASE/gitea-$RELEASE-linux-amd64 systemctl stop gitea rm -rf /usr/local/bin/gitea mv gitea* /usr/local/bin/gitea chmod +x /usr/local/bin/gitea systemctl start gitea msg_ok "$APP succesvol geüpdatet!" } # Menu voor gebruikersinteractie show_menu() { header_info echo "1) Installeer $APP" echo "2) Update $APP" echo "3) Exit" echo "" read -p "Kies een optie [1-3]: " choice case $choice in 1) install_gitea ;; 2) update_gitea ;; 3) exit 0 ;; *) msg_error "Ongeldige keuze" && sleep 2 && show_menu ;; esac } # Start het script show_menu