190 lines
4.8 KiB
Bash
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 |