#!/bin/bash # ๐Ÿข NETGESCON - SETUP GIT SERVER MASTER (GITEA) # Creato: 19/07/2025 - Setup Git Server Michele + AI set -e echo "๐Ÿข === NETGESCON - SETUP GIT SERVER MASTER ===" echo "๐Ÿ“… $(date '+%Y-%m-%d %H:%M:%S')" echo "" # === CONFIGURAZIONI === GITEA_VERSION="1.21.0" GITEA_USER="git" GITEA_HOME="/var/lib/gitea" GITEA_PORT="3000" DOMAIN="git.netgescon.local" echo "๐Ÿ“‹ Configurazione Git Server:" echo " Software: Gitea v$GITEA_VERSION" echo " Utente: $GITEA_USER" echo " Home: $GITEA_HOME" echo " Porta: $GITEA_PORT" echo " Dominio: $DOMAIN" echo "" # === 1. CONTROLLO PREREQUISITI === echo "๐Ÿ” 1. Controllo prerequisiti..." if [ "$EUID" -ne 0 ]; then echo "โŒ Questo script deve essere eseguito come root" exit 1 fi # Controlla se Docker รจ installato if ! command -v docker &> /dev/null; then echo "๐Ÿ“ฆ Installazione Docker..." curl -fsSL https://get.docker.com -o get-docker.sh sh get-docker.sh systemctl enable docker systemctl start docker echo " โœ… Docker installato" else echo " โœ… Docker giร  presente" fi # === 2. CREAZIONE UTENTE GITEA === echo "" echo "๐Ÿ‘ค 2. Creazione utente Gitea..." if ! id "$GITEA_USER" &>/dev/null; then useradd --system --shell /bin/bash --home "$GITEA_HOME" --create-home "$GITEA_USER" echo " โœ… Utente $GITEA_USER creato" else echo " โœ… Utente $GITEA_USER giร  esistente" fi # === 3. CREAZIONE DIRECTORY === echo "" echo "๐Ÿ“ 3. Creazione directory di lavoro..." mkdir -p "$GITEA_HOME"/{data,config} mkdir -p /var/log/gitea chown -R "$GITEA_USER:$GITEA_USER" "$GITEA_HOME" chown -R "$GITEA_USER:$GITEA_USER" /var/log/gitea echo " โœ… Directory create" # === 4. SETUP GITEA CON DOCKER === echo "" echo "๐Ÿณ 4. Setup Gitea con Docker..." # Crea docker-compose.yml cat > /opt/gitea-docker-compose.yml << 'EOF' version: '3.8' services: gitea: image: gitea/gitea:1.21.0 container_name: netgescon-gitea restart: unless-stopped environment: - USER_UID=1000 - USER_GID=1000 - GITEA__database__DB_TYPE=sqlite3 - GITEA__database__PATH=/data/gitea/gitea.db - GITEA__server__DOMAIN=git.netgescon.local - GITEA__server__SSH_DOMAIN=git.netgescon.local - GITEA__server__ROOT_URL=http://git.netgescon.local:3000/ ports: - "3000:3000" - "2222:22" volumes: - /var/lib/gitea:/data - /etc/timezone:/etc/timezone:ro - /etc/localtime:/etc/localtime:ro networks: - gitea-network networks: gitea-network: driver: bridge EOF echo " โœ… Docker Compose configurato" # Avvia Gitea cd /opt docker-compose -f gitea-docker-compose.yml up -d echo " โœ… Gitea avviato" # === 5. CONFIGURAZIONE NGINX === echo "" echo "๐ŸŒ 5. Configurazione Nginx..." # Installa Nginx se non presente if ! command -v nginx &> /dev/null; then apt update apt install -y nginx systemctl enable nginx echo " โœ… Nginx installato" fi # Configurazione Nginx per Gitea cat > /etc/nginx/sites-available/gitea << 'EOF' server { listen 80; server_name git.netgescon.local; location / { proxy_pass http://localhost:3000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } EOF # Abilita il sito ln -sf /etc/nginx/sites-available/gitea /etc/nginx/sites-enabled/ nginx -t && systemctl reload nginx echo " โœ… Nginx configurato" # === 6. CONFIGURAZIONE FIREWALL === echo "" echo "๐Ÿ”ฅ 6. Configurazione firewall..." ufw allow 3000/tcp comment "Gitea" ufw allow 2222/tcp comment "Gitea SSH" ufw allow 80/tcp comment "Nginx" echo " โœ… Firewall configurato" # === 7. SCRIPT DI GESTIONE === echo "" echo "๐Ÿ› ๏ธ 7. Creazione script di gestione..." cat > /usr/local/bin/gitea-manager << 'EOF' #!/bin/bash # Script di gestione Gitea NetGescon case "$1" in start) cd /opt && docker-compose -f gitea-docker-compose.yml up -d echo "Gitea avviato" ;; stop) cd /opt && docker-compose -f gitea-docker-compose.yml down echo "Gitea fermato" ;; restart) cd /opt && docker-compose -f gitea-docker-compose.yml restart echo "Gitea riavviato" ;; status) cd /opt && docker-compose -f gitea-docker-compose.yml ps ;; logs) cd /opt && docker-compose -f gitea-docker-compose.yml logs -f ;; backup) tar -czf /backup/gitea-$(date +%Y%m%d-%H%M).tar.gz /var/lib/gitea echo "Backup creato in /backup/" ;; *) echo "Uso: $0 {start|stop|restart|status|logs|backup}" exit 1 ;; esac EOF chmod +x /usr/local/bin/gitea-manager echo " โœ… Script di gestione creato: gitea-manager" # === 8. RIEPILOGO === echo "" echo "๐Ÿ“Š === RIEPILOGO SETUP GIT SERVER ===" echo "โœ… Gitea installato e configurato" echo "โœ… Docker e Nginx configurati" echo "โœ… Firewall configurato" echo "โœ… Script di gestione creato" echo "" echo "๐ŸŒ Accesso:" echo " URL: http://git.netgescon.local:3000" echo " SSH: ssh://git@git.netgescon.local:2222" echo "" echo "๐Ÿ› ๏ธ Gestione:" echo " Avvia: gitea-manager start" echo " Stop: gitea-manager stop" echo " Status: gitea-manager status" echo " Logs: gitea-manager logs" echo " Backup: gitea-manager backup" echo "" echo "๐Ÿ“‹ Prossimi passi:" echo "1. ๐ŸŒ Aprire http://git.netgescon.local:3000 e completare setup iniziale" echo "2. ๐Ÿ‘ค Creare utente amministratore" echo "3. ๐Ÿข Creare organizzazione 'netgescon'" echo "4. ๐Ÿ“ฆ Creare repositories: netgescon-main, netgescon-plugins, etc." echo "5. ๐Ÿ”‘ Configurare chiavi SSH per sviluppatori" echo "" echo "๐ŸŽฏ Setup Git Server completato!" echo "๐Ÿ“… $(date '+%Y-%m-%d %H:%M:%S')"