Files
gitea/install-gitea.sh
T
2025-03-20 17:29:58 +01:00

190 lines
4.8 KiB
Bash

#!/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 <<EOF
[Unit]
Description=Gitea (Git with a cup of tea)
After=network.target
Wants=network.target
[Service]
Type=simple
User=git
Group=git
WorkingDirectory=/var/lib/gitea/
ExecStart=/usr/local/bin/gitea web -c /etc/gitea/app.ini
Restart=always
Environment=USER=git HOME=/home/git GITEA_WORK_DIR=/var/lib/gitea
[Install]
WantedBy=multi-user.target
EOF
# Start en enable service
systemctl daemon-reload
systemctl enable --now gitea
msg_ok "$APP Installatie voltooid!"
msg_info "Je kunt nu Gitea configureren via http://SERVER_IP:3000"
}
# Update functie
update_gitea() {
header_info
check_system_requirements
if [[ ! -f /usr/local/bin/gitea ]]; then
msg_error "Geen ${APP} installatie gevonden!"
exit 1
fi
RELEASE=$(wget -q https://github.com/go-gitea/gitea/releases/latest -O - | grep "title>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