netgescon-master/docs/03-scripts-automazione/setup-git-server-master.sh
Pikappa2 480e7eafbd 🎯 NETGESCON - Setup iniziale repository completo
📋 Commit iniziale con:
-  Documentazione unificata in docs/
-  Codice Laravel in netgescon-laravel/
-  Script automazione in scripts/
-  Configurazione sync rsync
-  Struttura organizzata e pulita

🔄 Versione: 2025.07.19-1644
🎯 Sistema pronto per Git distribuito
2025-07-19 16:44:47 +02:00

228 lines
5.7 KiB
Bash
Executable File

#!/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')"