📋 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
228 lines
5.7 KiB
Bash
Executable File
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')"
|